/[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 3806 by caltinay, Mon Feb 6 02:32:48 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 524  void Brick::setToSize(escript::Data& out Line 528  void Brick::setToSize(escript::Data& out
528          const double xSize=getFirstCoordAndSpacing(0).second;          const double xSize=getFirstCoordAndSpacing(0).second;
529          const double ySize=getFirstCoordAndSpacing(1).second;          const double ySize=getFirstCoordAndSpacing(1).second;
530          const double zSize=getFirstCoordAndSpacing(2).second;          const double zSize=getFirstCoordAndSpacing(2).second;
531          const double size=min(min(xSize,ySize),zSize);          const double size=sqrt(xSize*xSize+ySize*ySize+zSize*zSize);
532  #pragma omp parallel for  #pragma omp parallel for
533          for (index_t k = 0; k < getNumElements(); ++k) {          for (index_t k = 0; k < getNumElements(); ++k) {
534              double* o = out.getSampleDataRW(k);              double* o = out.getSampleDataRW(k);
# 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 1194  void Brick::assembleIntegrate(vector<dou Line 1199  void Brick::assembleIntegrate(vector<dou
1199      const index_t left = (m_offset0==0 ? 0 : 1);      const index_t left = (m_offset0==0 ? 0 : 1);
1200      const index_t bottom = (m_offset1==0 ? 0 : 1);      const index_t bottom = (m_offset1==0 ? 0 : 1);
1201      const index_t front = (m_offset2==0 ? 0 : 1);      const index_t front = (m_offset2==0 ? 0 : 1);
1202      if (arg.getFunctionSpace().getTypeCode() == Elements) {      const int fs = arg.getFunctionSpace().getTypeCode();
1203        if (fs == Elements && arg.actsExpanded()) {
1204          const double w_0 = h0*h1*h2/8.;          const double w_0 = h0*h1*h2/8.;
1205  #pragma omp parallel  #pragma omp parallel
1206          {          {
# Line 1223  void Brick::assembleIntegrate(vector<dou Line 1229  void Brick::assembleIntegrate(vector<dou
1229              for (index_t i=0; i<numComp; i++)              for (index_t i=0; i<numComp; i++)
1230                  integrals[i]+=int_local[i];                  integrals[i]+=int_local[i];
1231          } // end of parallel section          } // end of parallel section
1232      } else if (arg.getFunctionSpace().getTypeCode() == ReducedElements) {  
1233        } else if (fs==ReducedElements || (fs==Elements && !arg.actsExpanded())) {
1234          const double w_0 = h0*h1*h2;          const double w_0 = h0*h1*h2;
1235  #pragma omp parallel  #pragma omp parallel
1236          {          {
# Line 1244  void Brick::assembleIntegrate(vector<dou Line 1251  void Brick::assembleIntegrate(vector<dou
1251              for (index_t i=0; i<numComp; i++)              for (index_t i=0; i<numComp; i++)
1252                  integrals[i]+=int_local[i];                  integrals[i]+=int_local[i];
1253          } // end of parallel section          } // end of parallel section
1254      } else if (arg.getFunctionSpace().getTypeCode() == FaceElements) {  
1255        } else if (fs == FaceElements && arg.actsExpanded()) {
1256          const double w_0 = h1*h2/4.;          const double w_0 = h1*h2/4.;
1257          const double w_1 = h0*h2/4.;          const double w_1 = h0*h2/4.;
1258          const double w_2 = h0*h1/4.;          const double w_2 = h0*h1/4.;
# Line 1352  void Brick::assembleIntegrate(vector<dou Line 1360  void Brick::assembleIntegrate(vector<dou
1360                  integrals[i]+=int_local[i];                  integrals[i]+=int_local[i];
1361          } // end of parallel section          } // end of parallel section
1362    
1363      } else if (arg.getFunctionSpace().getTypeCode() == ReducedFaceElements) {      } else if (fs==ReducedFaceElements || (fs==FaceElements && !arg.actsExpanded())) {
1364          const double w_0 = h1*h2;          const double w_0 = h1*h2;
1365          const double w_1 = h0*h2;          const double w_1 = h0*h2;
1366          const double w_2 = h0*h1;          const double w_2 = h0*h1;
# Line 1435  void Brick::assembleIntegrate(vector<dou Line 1443  void Brick::assembleIntegrate(vector<dou
1443              for (index_t i=0; i<numComp; i++)              for (index_t i=0; i<numComp; i++)
1444                  integrals[i]+=int_local[i];                  integrals[i]+=int_local[i];
1445          } // end of parallel section          } // end of parallel section
1446        } // function space selector
     }  
1447  }  }
1448    
1449  //protected  //protected
# Line 1525  void Brick::populateSampleIds() Line 1532  void Brick::populateSampleIds()
1532      // globally      // globally
1533    
1534      // build node distribution vector first.      // build node distribution vector first.
1535      // rank i owns m_nodeDistribution[i+1]-nodeDistribution[i] nodes      // rank i owns m_nodeDistribution[i+1]-nodeDistribution[i] nodes which is
1536        // constant for all ranks in this implementation
1537      m_nodeDistribution.assign(m_mpiInfo->size+1, 0);      m_nodeDistribution.assign(m_mpiInfo->size+1, 0);
1538      const dim_t numDOF=getNumDOF();      const dim_t numDOF=getNumDOF();
1539      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 1921  void Brick::createPattern()
1921      Paso_Pattern_free(rowPattern);      Paso_Pattern_free(rowPattern);
1922  }  }
1923    
1924    //private
1925    void Brick::addToMatrixAndRHS(Paso_SystemMatrix* S, escript::Data& F,
1926             const vector<double>& EM_S, const vector<double>& EM_F, bool addS,
1927             bool addF, index_t firstNode, dim_t nEq, dim_t nComp) const
1928    {
1929        IndexVector rowIndex;
1930        rowIndex.push_back(m_dofMap[firstNode]);
1931        rowIndex.push_back(m_dofMap[firstNode+1]);
1932        rowIndex.push_back(m_dofMap[firstNode+m_N0]);
1933        rowIndex.push_back(m_dofMap[firstNode+m_N0+1]);
1934        rowIndex.push_back(m_dofMap[firstNode+m_N0*m_N1]);
1935        rowIndex.push_back(m_dofMap[firstNode+m_N0*m_N1+1]);
1936        rowIndex.push_back(m_dofMap[firstNode+m_N0*(m_N1+1)]);
1937        rowIndex.push_back(m_dofMap[firstNode+m_N0*(m_N1+1)+1]);
1938        if (addF) {
1939            double *F_p=F.getSampleDataRW(0);
1940            for (index_t i=0; i<rowIndex.size(); i++) {
1941                if (rowIndex[i]<getNumDOF()) {
1942                    for (index_t eq=0; eq<nEq; eq++) {
1943                        F_p[INDEX2(eq, rowIndex[i], nEq)]+=EM_F[INDEX2(eq,i,nEq)];
1944                    }
1945                }
1946            }
1947        }
1948        if (addS) {
1949            addToSystemMatrix(S, rowIndex, nEq, rowIndex, nComp, EM_S);
1950        }
1951    }
1952    
1953  //protected  //protected
1954  void Brick::interpolateNodesOnElements(escript::Data& out, escript::Data& in,  void Brick::interpolateNodesOnElements(escript::Data& out, escript::Data& in,
1955                                         bool reduced) const                                         bool reduced) const
# Line 3252  void Brick::assemblePDESingle(Paso_Syste Line 3289  void Brick::assemblePDESingle(Paso_Syste
3289                                  const double tmp380_1 = tmp195_0*w23;                                  const double tmp380_1 = tmp195_0*w23;
3290                                  const double tmp456_1 = tmp218_0*w27;                                  const double tmp456_1 = tmp218_0*w27;
3291                                  const double tmp288_1 = tmp154_0*w29;                                  const double tmp288_1 = tmp154_0*w29;
3292                                  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;
3293                                  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;
3294                                  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;  
3295                                  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;  
3296                                  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;
3297                                    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;
3298                                    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;
3299                                    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;
3300                                    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;
3301                                    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;
3302                                    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;
3303                                    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;
3304                                    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;
3305                                    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;
3306                                    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;
3307                                    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;
3308                                    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;
3309                                  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;
3310                                  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;
3311                                    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;
3312                                    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;
3313                                    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;
3314                                    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;
3315                                    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;
3316                                    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;
3317                                    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;
3318                                    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;
3319                                  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;
3320                                  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;
3321                                  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;  
3322                                  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;
3323                                    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;
3324                                    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;
3325                                    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;
3326                                    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;
3327                                    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;
3328                                    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;
3329                                    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;
3330                                    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;
3331                                    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;
3332                                    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;
3333                                  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;
3334                                  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;
3335                                  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;  
3336                                  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;  
3337                                  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;  
3338                                  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;
3339                                  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;  
3340                                  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;
3341                                  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;
3342                                  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;
3343                                    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;
3344                                    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;
3345                                    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;
3346                                    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;
3347                                    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;
3348                                    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;
3349                                  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;
3350                                  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;
3351                                  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;
3352                                  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;
3353                                    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;
3354                                    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;
3355                                    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;
3356                              } else { // constant data                              } else { // constant data
3357                                  const double A_00 = A_p[INDEX2(0,0,3)];                                  const double A_00 = A_p[INDEX2(0,0,3)];
3358                                  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 3420  void Brick::assemblePDESingle(Paso_Syste
3420                                  const double tmp20_1 = A_12*w66;                                  const double tmp20_1 = A_12*w66;
3421                                  const double tmp1_1 = A_12*w64;                                  const double tmp1_1 = A_12*w64;
3422                                  const double tmp24_1 = A_20*w62;                                  const double tmp24_1 = A_20*w62;
3423                                  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;
3424                                  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;
3425                                  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;  
3426                                  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;  
3427                                  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;
3428                                    EM_S[INDEX2(5,0,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp49_1 + tmp50_1;
3429                                    EM_S[INDEX2(6,0,8)]+=tmp33_1 + tmp34_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp45_1 + tmp53_1 + tmp8_1;
3430                                    EM_S[INDEX2(7,0,8)]+=tmp16_1 + tmp27_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1;
3431                                    EM_S[INDEX2(0,1,8)]+=tmp19_1 + tmp21_1 + tmp22_1 + tmp23_1 + tmp24_1 + tmp26_1 + tmp37_1 + tmp6_1;
3432                                    EM_S[INDEX2(1,1,8)]+=tmp13_1 + tmp43_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp52_1;
3433                                    EM_S[INDEX2(2,1,8)]+=tmp11_1 + tmp14_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp8_1 + tmp9_1;
3434                                    EM_S[INDEX2(3,1,8)]+=tmp0_1 + tmp16_1 + tmp18_1 + tmp1_1 + tmp21_1 + tmp25_1 + tmp28_1 + tmp5_1;
3435                                    EM_S[INDEX2(4,1,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp44_1 + tmp51_1;
3436                                    EM_S[INDEX2(5,1,8)]+=tmp0_1 + tmp17_1 + tmp20_1 + tmp30_1 + tmp3_1 + tmp4_1 + tmp6_1 + tmp7_1;
3437                                    EM_S[INDEX2(6,1,8)]+=tmp27_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp36_1;
3438                                    EM_S[INDEX2(7,1,8)]+=tmp10_1 + tmp12_1 + tmp42_1 + tmp45_1 + tmp49_1 + tmp50_1 + tmp53_1 + tmp8_1;
3439                                    EM_S[INDEX2(0,2,8)]+=tmp0_1 + tmp17_1 + tmp18_1 + tmp20_1 + tmp21_1 + tmp25_1 + tmp28_1 + tmp36_1;
3440                                  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;
3441                                  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;
3442                                    EM_S[INDEX2(3,2,8)]+=tmp19_1 + tmp21_1 + tmp22_1 + tmp26_1 + tmp27_1 + tmp3_1 + tmp4_1 + tmp6_1;
3443                                    EM_S[INDEX2(4,2,8)]+=tmp33_1 + tmp34_1 + tmp42_1 + tmp49_1 + tmp50_1 + tmp52_1 + tmp53_1 + tmp8_1;
3444                                    EM_S[INDEX2(5,2,8)]+=tmp16_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp37_1;
3445                                    EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp23_1 + tmp24_1 + tmp30_1 + tmp5_1 + tmp6_1 + tmp7_1;
3446                                    EM_S[INDEX2(7,2,8)]+=tmp11_1 + tmp14_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp9_1;
3447                                    EM_S[INDEX2(0,3,8)]+=tmp11_1 + tmp13_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp38_1 + tmp39_1 + tmp8_1;
3448                                    EM_S[INDEX2(1,3,8)]+=tmp0_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp22_1;
3449                                    EM_S[INDEX2(2,3,8)]+=tmp21_1 + tmp23_1 + tmp24_1 + tmp25_1 + tmp26_1 + tmp27_1 + tmp28_1 + tmp6_1;
3450                                  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;
3451                                  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;
3452                                  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;  
3453                                  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;
3454                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1;
3455                                    EM_S[INDEX2(0,4,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1;
3456                                    EM_S[INDEX2(1,4,8)]+=tmp11_1 + tmp14_1 + tmp42_1 + tmp44_1 + tmp49_1 + tmp50_1 + tmp51_1 + tmp9_1;
3457                                    EM_S[INDEX2(2,4,8)]+=tmp10_1 + tmp12_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp52_1 + tmp53_1 + tmp8_1;
3458                                    EM_S[INDEX2(3,4,8)]+=tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp36_1 + tmp37_1;
3459                                    EM_S[INDEX2(4,4,8)]+=tmp35_1 + tmp43_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1;
3460                                    EM_S[INDEX2(5,4,8)]+=tmp21_1 + tmp23_1 + tmp24_1 + tmp25_1 + tmp26_1 + tmp27_1 + tmp28_1 + tmp6_1;
3461                                    EM_S[INDEX2(6,4,8)]+=tmp0_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp22_1;
3462                                    EM_S[INDEX2(7,4,8)]+=tmp11_1 + tmp13_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp38_1 + tmp39_1 + tmp8_1;
3463                                    EM_S[INDEX2(0,5,8)]+=tmp11_1 + tmp14_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp9_1;
3464                                  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;
3465                                  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;
3466                                  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;  
3467                                  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;  
3468                                  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;  
3469                                  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;
3470                                  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;  
3471                                  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;
3472                                  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;
3473                                  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;
3474                                    EM_S[INDEX2(3,6,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp44_1 + tmp51_1;
3475                                    EM_S[INDEX2(4,6,8)]+=tmp0_1 + tmp16_1 + tmp18_1 + tmp1_1 + tmp21_1 + tmp25_1 + tmp28_1 + tmp5_1;
3476                                    EM_S[INDEX2(5,6,8)]+=tmp11_1 + tmp14_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp8_1 + tmp9_1;
3477                                    EM_S[INDEX2(6,6,8)]+=tmp13_1 + tmp43_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp52_1;
3478                                    EM_S[INDEX2(7,6,8)]+=tmp19_1 + tmp21_1 + tmp22_1 + tmp23_1 + tmp24_1 + tmp26_1 + tmp37_1 + tmp6_1;
3479                                    EM_S[INDEX2(0,7,8)]+=tmp16_1 + tmp27_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1;
3480                                  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;
3481                                  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;
3482                                  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;
3483                                  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;
3484                                    EM_S[INDEX2(5,7,8)]+=tmp0_1 + tmp18_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp22_1 + tmp36_1 + tmp5_1;
3485                                    EM_S[INDEX2(6,7,8)]+=tmp21_1 + tmp25_1 + tmp26_1 + tmp28_1 + tmp37_1 + tmp3_1 + tmp4_1 + tmp6_1;
3486                                    EM_S[INDEX2(7,7,8)]+=tmp35_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1 + tmp52_1;
3487                              }                              }
3488                          }                          }
3489                          ///////////////                          ///////////////
# Line 3978  void Brick::assemblePDESingle(Paso_Syste Line 4015  void Brick::assemblePDESingle(Paso_Syste
4015                                  const double tmp240_1 = B_1_0*w99;                                  const double tmp240_1 = B_1_0*w99;
4016                                  const double tmp160_1 = B_0_1*w104;                                  const double tmp160_1 = B_0_1*w104;
4017                                  const double tmp377_1 = B_2_5*w100;                                  const double tmp377_1 = B_2_5*w100;
4018                                  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;
4019                                  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;
4020                                  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;  
4021                                  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;  
4022                                  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;
4023                                    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;
4024                                    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;
4025                                    EM_S[INDEX2(7,0,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1;
4026                                    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;
4027                                    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;
4028                                    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;
4029                                    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;
4030                                    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;
4031                                    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;
4032                                    EM_S[INDEX2(6,1,8)]+=tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1 + tmp76_1 + tmp77_1;
4033                                    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;
4034                                    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;
4035                                  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;
4036                                  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;
4037                                    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;
4038                                    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;
4039                                    EM_S[INDEX2(5,2,8)]+=tmp100_1 + tmp101_1 + tmp434_1 + tmp435_1 + tmp78_1 + tmp79_1;
4040                                    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;
4041                                    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;
4042                                    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;
4043                                    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;
4044                                    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;
4045                                  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;
4046                                  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;
4047                                  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;  
4048                                  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;
4049                                    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;
4050                                    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;
4051                                    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;
4052                                    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;
4053                                    EM_S[INDEX2(3,4,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp80_1 + tmp81_1;
4054                                    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;
4055                                    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;
4056                                    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;
4057                                    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;
4058                                    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;
4059                                  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;
4060                                  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;
4061                                  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;  
4062                                  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;  
4063                                  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;  
4064                                  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;
4065                                  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;  
4066                                  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;
4067                                  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;
4068                                  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;
4069                                    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;
4070                                    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;
4071                                    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;
4072                                    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;
4073                                    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;
4074                                    EM_S[INDEX2(0,7,8)]+=tmp76_1 + tmp77_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_1;
4075                                  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;
4076                                  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;
4077                                  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;
4078                                  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;
4079                                    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;
4080                                    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;
4081                                    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;
4082                              } else { // constant data                              } else { // constant data
4083                                  const double B_0 = B_p[0];                                  const double B_0 = B_p[0];
4084                                  const double B_1 = B_p[1];                                  const double B_1 = B_p[1];
# Line 4064  void Brick::assemblePDESingle(Paso_Syste Line 4101  void Brick::assemblePDESingle(Paso_Syste
4101                                  const double tmp0_1 = B_2*w128;                                  const double tmp0_1 = B_2*w128;
4102                                  const double tmp16_1 = B_1*w142;                                  const double tmp16_1 = B_1*w142;
4103                                  const double tmp11_1 = B_0*w137;                                  const double tmp11_1 = B_0*w137;
4104                                  EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                                  EM_S[INDEX2(0,0,8)]+=tmp14_1 + tmp17_1 + tmp6_1;
4105                                  EM_S[INDEX2(4,7,8)]+=tmp3_1 + tmp4_1 + tmp5_1;                                  EM_S[INDEX2(1,0,8)]+=tmp11_1 + tmp4_1 + tmp7_1;
4106                                  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;  
4107                                  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;  
4108                                  EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp3_1 + tmp4_1;                                  EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp3_1 + tmp4_1;
4109                                    EM_S[INDEX2(5,0,8)]+=tmp13_1 + tmp2_1 + tmp8_1;
4110                                    EM_S[INDEX2(6,0,8)]+=tmp12_1 + tmp1_1 + tmp8_1;
4111                                    EM_S[INDEX2(7,0,8)]+=tmp15_1 + tmp16_1 + tmp5_1;
4112                                    EM_S[INDEX2(0,1,8)]+=tmp17_1 + tmp4_1 + tmp7_1;
4113                                    EM_S[INDEX2(1,1,8)]+=tmp11_1 + tmp14_1 + tmp6_1;
4114                                    EM_S[INDEX2(2,1,8)]+=tmp10_1 + tmp1_1 + tmp3_1;
4115                                    EM_S[INDEX2(3,1,8)]+=tmp2_1 + tmp7_1 + tmp9_1;
4116                                    EM_S[INDEX2(4,1,8)]+=tmp13_1 + tmp3_1 + tmp8_1;
4117                                    EM_S[INDEX2(5,1,8)]+=tmp0_1 + tmp2_1 + tmp4_1;
4118                                    EM_S[INDEX2(6,1,8)]+=tmp12_1 + tmp16_1 + tmp5_1;
4119                                    EM_S[INDEX2(7,1,8)]+=tmp15_1 + tmp1_1 + tmp8_1;
4120                                    EM_S[INDEX2(0,2,8)]+=tmp3_1 + tmp6_1 + tmp7_1;
4121                                  EM_S[INDEX2(1,2,8)]+=tmp10_1 + tmp2_1 + tmp4_1;                                  EM_S[INDEX2(1,2,8)]+=tmp10_1 + tmp2_1 + tmp4_1;
4122                                  EM_S[INDEX2(6,7,8)]+=tmp17_1 + tmp1_1 + tmp8_1;                                  EM_S[INDEX2(2,2,8)]+=tmp14_1 + tmp17_1 + tmp9_1;
4123                                    EM_S[INDEX2(3,2,8)]+=tmp11_1 + tmp1_1 + tmp7_1;
4124                                    EM_S[INDEX2(4,2,8)]+=tmp12_1 + tmp4_1 + tmp8_1;
4125                                    EM_S[INDEX2(5,2,8)]+=tmp13_1 + tmp15_1 + tmp5_1;
4126                                    EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp3_1;
4127                                    EM_S[INDEX2(7,2,8)]+=tmp16_1 + tmp2_1 + tmp8_1;
4128                                    EM_S[INDEX2(0,3,8)]+=tmp10_1 + tmp3_1 + tmp4_1;
4129                                    EM_S[INDEX2(1,3,8)]+=tmp2_1 + tmp6_1 + tmp7_1;
4130                                    EM_S[INDEX2(2,3,8)]+=tmp17_1 + tmp1_1 + tmp7_1;
4131                                  EM_S[INDEX2(3,3,8)]+=tmp11_1 + tmp14_1 + tmp9_1;                                  EM_S[INDEX2(3,3,8)]+=tmp11_1 + tmp14_1 + tmp9_1;
4132                                  EM_S[INDEX2(2,0,8)]+=tmp3_1 + tmp7_1 + tmp9_1;                                  EM_S[INDEX2(4,3,8)]+=tmp12_1 + tmp13_1 + tmp5_1;
4133                                  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;  
4134                                  EM_S[INDEX2(6,3,8)]+=tmp16_1 + tmp3_1 + tmp8_1;                                  EM_S[INDEX2(6,3,8)]+=tmp16_1 + tmp3_1 + tmp8_1;
4135                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
4136                                    EM_S[INDEX2(0,4,8)]+=tmp14_1 + tmp3_1 + tmp4_1;
4137                                    EM_S[INDEX2(1,4,8)]+=tmp13_1 + tmp2_1 + tmp7_1;
4138                                    EM_S[INDEX2(2,4,8)]+=tmp12_1 + tmp1_1 + tmp7_1;
4139                                    EM_S[INDEX2(3,4,8)]+=tmp10_1 + tmp15_1 + tmp16_1;
4140                                    EM_S[INDEX2(4,4,8)]+=tmp0_1 + tmp17_1 + tmp6_1;
4141                                    EM_S[INDEX2(5,4,8)]+=tmp11_1 + tmp4_1 + tmp8_1;
4142                                    EM_S[INDEX2(6,4,8)]+=tmp3_1 + tmp8_1 + tmp9_1;
4143                                    EM_S[INDEX2(7,4,8)]+=tmp1_1 + tmp2_1 + tmp5_1;
4144                                    EM_S[INDEX2(0,5,8)]+=tmp13_1 + tmp3_1 + tmp7_1;
4145                                  EM_S[INDEX2(1,5,8)]+=tmp14_1 + tmp2_1 + tmp4_1;                                  EM_S[INDEX2(1,5,8)]+=tmp14_1 + tmp2_1 + tmp4_1;
4146                                  EM_S[INDEX2(3,6,8)]+=tmp16_1 + tmp2_1 + tmp7_1;                                  EM_S[INDEX2(2,5,8)]+=tmp10_1 + tmp12_1 + tmp16_1;
4147                                  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;  
4148                                  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;  
4149                                  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;  
4150                                  EM_S[INDEX2(6,5,8)]+=tmp1_1 + tmp3_1 + tmp5_1;                                  EM_S[INDEX2(6,5,8)]+=tmp1_1 + tmp3_1 + tmp5_1;
4151                                  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;  
4152                                  EM_S[INDEX2(0,6,8)]+=tmp12_1 + tmp4_1 + tmp7_1;                                  EM_S[INDEX2(0,6,8)]+=tmp12_1 + tmp4_1 + tmp7_1;
4153                                  EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp3_1;                                  EM_S[INDEX2(1,6,8)]+=tmp10_1 + tmp13_1 + tmp15_1;
4154                                  EM_S[INDEX2(4,3,8)]+=tmp12_1 + tmp13_1 + tmp5_1;                                  EM_S[INDEX2(2,6,8)]+=tmp14_1 + tmp1_1 + tmp3_1;
4155                                    EM_S[INDEX2(3,6,8)]+=tmp16_1 + tmp2_1 + tmp7_1;
4156                                    EM_S[INDEX2(4,6,8)]+=tmp3_1 + tmp6_1 + tmp8_1;
4157                                    EM_S[INDEX2(5,6,8)]+=tmp2_1 + tmp4_1 + tmp5_1;
4158                                    EM_S[INDEX2(6,6,8)]+=tmp0_1 + tmp17_1 + tmp9_1;
4159                                    EM_S[INDEX2(7,6,8)]+=tmp11_1 + tmp1_1 + tmp8_1;
4160                                    EM_S[INDEX2(0,7,8)]+=tmp10_1 + tmp12_1 + tmp13_1;
4161                                  EM_S[INDEX2(1,7,8)]+=tmp15_1 + tmp4_1 + tmp7_1;                                  EM_S[INDEX2(1,7,8)]+=tmp15_1 + tmp4_1 + tmp7_1;
4162                                  EM_S[INDEX2(0,5,8)]+=tmp13_1 + tmp3_1 + tmp7_1;                                  EM_S[INDEX2(2,7,8)]+=tmp16_1 + tmp3_1 + tmp7_1;
4163                                  EM_S[INDEX2(3,4,8)]+=tmp10_1 + tmp15_1 + tmp16_1;                                  EM_S[INDEX2(3,7,8)]+=tmp14_1 + tmp1_1 + tmp2_1;
4164                                  EM_S[INDEX2(2,4,8)]+=tmp12_1 + tmp1_1 + tmp7_1;                                  EM_S[INDEX2(4,7,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
4165                                    EM_S[INDEX2(5,7,8)]+=tmp2_1 + tmp6_1 + tmp8_1;
4166                                    EM_S[INDEX2(6,7,8)]+=tmp17_1 + tmp1_1 + tmp8_1;
4167                                    EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp11_1 + tmp9_1;
4168                              }                              }
4169                          }                          }
4170                          ///////////////                          ///////////////
# Line 4659  void Brick::assemblePDESingle(Paso_Syste Line 4696  void Brick::assemblePDESingle(Paso_Syste
4696                                  const double tmp410_1 = C_0_7*w104;                                  const double tmp410_1 = C_0_7*w104;
4697                                  const double tmp268_1 = tmp21_0*w103;                                  const double tmp268_1 = tmp21_0*w103;
4698                                  const double tmp305_1 = C_2_1*w123;                                  const double tmp305_1 = C_2_1*w123;
4699                                  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;
4700                                  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;
4701                                  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;  
4702                                  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;  
4703                                  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;
4704                                    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;
4705                                    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;
4706                                    EM_S[INDEX2(7,0,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1;
4707                                    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;
4708                                    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;
4709                                    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;
4710                                    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;
4711                                    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;
4712                                    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;
4713                                    EM_S[INDEX2(6,1,8)]+=tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1 + tmp76_1 + tmp77_1;
4714                                    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;
4715                                    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;
4716                                  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;
4717                                  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;
4718                                    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;
4719                                    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;
4720                                    EM_S[INDEX2(5,2,8)]+=tmp100_1 + tmp101_1 + tmp434_1 + tmp435_1 + tmp79_1 + tmp80_1;
4721                                    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;
4722                                    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;
4723                                    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;
4724                                    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;
4725                                    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;
4726                                  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;
4727                                  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;
4728                                  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;  
4729                                  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;
4730                                    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;
4731                                    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;
4732                                    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;
4733                                    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;
4734                                    EM_S[INDEX2(3,4,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp78_1 + tmp81_1;
4735                                    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;
4736                                    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;
4737                                    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;
4738                                    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;
4739                                    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;
4740                                  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;
4741                                  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;
4742                                  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;  
4743                                  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;  
4744                                  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;  
4745                                  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;
4746                                  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;  
4747                                  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;
4748                                  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;
4749                                  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;
4750                                    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;
4751                                    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;
4752                                    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;
4753                                    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;
4754                                    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;
4755                                    EM_S[INDEX2(0,7,8)]+=tmp76_1 + tmp77_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_1;
4756                                  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;
4757                                  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;
4758                                  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;
4759                                  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;
4760                                    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;
4761                                    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;
4762                                    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;
4763                              } else { // constant data                              } else { // constant data
4764                                  const double C_0 = C_p[0];                                  const double C_0 = C_p[0];
4765                                  const double C_1 = C_p[1];                                  const double C_1 = C_p[1];
# Line 4745  void Brick::assemblePDESingle(Paso_Syste Line 4782  void Brick::assemblePDESingle(Paso_Syste
4782                                  const double tmp6_1 = C_2*w135;                                  const double tmp6_1 = C_2*w135;
4783                                  const double tmp10_1 = C_2*w136;                                  const double tmp10_1 = C_2*w136;
4784                                  const double tmp9_1 = C_1*w130;                                  const double tmp9_1 = C_1*w130;
4785                                  EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                                  EM_S[INDEX2(0,0,8)]+=tmp0_1 + tmp11_1 + tmp8_1;
4786                                  EM_S[INDEX2(4,7,8)]+=tmp1_1 + tmp2_1 + tmp3_1;                                  EM_S[INDEX2(1,0,8)]+=tmp11_1 + tmp4_1 + tmp9_1;
4787                                  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;  
4788                                  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;  
4789                                  EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp7_1 + tmp9_1;                                  EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp7_1 + tmp9_1;
4790                                    EM_S[INDEX2(5,0,8)]+=tmp16_1 + tmp4_1 + tmp7_1;
4791                                    EM_S[INDEX2(6,0,8)]+=tmp15_1 + tmp4_1 + tmp9_1;
4792                                    EM_S[INDEX2(7,0,8)]+=tmp10_1 + tmp15_1 + tmp16_1;
4793                                    EM_S[INDEX2(0,1,8)]+=tmp17_1 + tmp4_1 + tmp9_1;
4794                                    EM_S[INDEX2(1,1,8)]+=tmp0_1 + tmp17_1 + tmp8_1;
4795                                    EM_S[INDEX2(2,1,8)]+=tmp10_1 + tmp2_1 + tmp9_1;
4796                                    EM_S[INDEX2(3,1,8)]+=tmp2_1 + tmp4_1 + tmp8_1;
4797                                    EM_S[INDEX2(4,1,8)]+=tmp16_1 + tmp2_1 + tmp4_1;
4798                                    EM_S[INDEX2(5,1,8)]+=tmp0_1 + tmp2_1 + tmp9_1;
4799                                    EM_S[INDEX2(6,1,8)]+=tmp10_1 + tmp13_1 + tmp16_1;
4800                                    EM_S[INDEX2(7,1,8)]+=tmp13_1 + tmp4_1 + tmp9_1;
4801                                    EM_S[INDEX2(0,2,8)]+=tmp4_1 + tmp5_1 + tmp7_1;
4802                                  EM_S[INDEX2(1,2,8)]+=tmp10_1 + tmp1_1 + tmp7_1;                                  EM_S[INDEX2(1,2,8)]+=tmp10_1 + tmp1_1 + tmp7_1;
4803                                  EM_S[INDEX2(6,7,8)]+=tmp17_1 + tmp1_1 + tmp6_1;                                  EM_S[INDEX2(2,2,8)]+=tmp0_1 + tmp11_1 + tmp5_1;
4804                                    EM_S[INDEX2(3,2,8)]+=tmp11_1 + tmp1_1 + tmp4_1;
4805                                    EM_S[INDEX2(4,2,8)]+=tmp15_1 + tmp1_1 + tmp4_1;
4806                                    EM_S[INDEX2(5,2,8)]+=tmp10_1 + tmp12_1 + tmp15_1;
4807                                    EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp7_1;
4808                                    EM_S[INDEX2(7,2,8)]+=tmp12_1 + tmp4_1 + tmp7_1;
4809                                    EM_S[INDEX2(0,3,8)]+=tmp10_1 + tmp1_1 + tmp2_1;
4810                                    EM_S[INDEX2(1,3,8)]+=tmp2_1 + tmp4_1 + tmp5_1;
4811                                    EM_S[INDEX2(2,3,8)]+=tmp17_1 + tmp1_1 + tmp4_1;
4812                                  EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp17_1 + tmp5_1;                                  EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp17_1 + tmp5_1;
4813                                  EM_S[INDEX2(2,0,8)]+=tmp4_1 + tmp7_1 + tmp8_1;                                  EM_S[INDEX2(4,3,8)]+=tmp10_1 + tmp12_1 + tmp13_1;
4814                                  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;  
4815                                  EM_S[INDEX2(6,3,8)]+=tmp12_1 + tmp2_1 + tmp4_1;                                  EM_S[INDEX2(6,3,8)]+=tmp12_1 + tmp2_1 + tmp4_1;
4816                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
4817                                    EM_S[INDEX2(0,4,8)]+=tmp14_1 + tmp7_1 + tmp9_1;
4818                                    EM_S[INDEX2(1,4,8)]+=tmp16_1 + tmp6_1 + tmp7_1;
4819                                    EM_S[INDEX2(2,4,8)]+=tmp15_1 + tmp6_1 + tmp9_1;
4820                                    EM_S[INDEX2(3,4,8)]+=tmp15_1 + tmp16_1 + tmp3_1;
4821                                    EM_S[INDEX2(4,4,8)]+=tmp11_1 + tmp14_1 + tmp8_1;
4822                                    EM_S[INDEX2(5,4,8)]+=tmp11_1 + tmp6_1 + tmp9_1;
4823                                    EM_S[INDEX2(6,4,8)]+=tmp6_1 + tmp7_1 + tmp8_1;
4824                                    EM_S[INDEX2(7,4,8)]+=tmp3_1 + tmp7_1 + tmp9_1;
4825                                    EM_S[INDEX2(0,5,8)]+=tmp16_1 + tmp2_1 + tmp6_1;
4826                                  EM_S[INDEX2(1,5,8)]+=tmp14_1 + tmp2_1 + tmp9_1;                                  EM_S[INDEX2(1,5,8)]+=tmp14_1 + tmp2_1 + tmp9_1;
4827                                  EM_S[INDEX2(3,6,8)]+=tmp12_1 + tmp6_1 + tmp7_1;                                  EM_S[INDEX2(2,5,8)]+=tmp13_1 + tmp16_1 + tmp3_1;
4828                                  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;  
4829                                  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;  
4830                                  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;  
4831                                  EM_S[INDEX2(6,5,8)]+=tmp2_1 + tmp3_1 + tmp9_1;                                  EM_S[INDEX2(6,5,8)]+=tmp2_1 + tmp3_1 + tmp9_1;
4832                                  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;  
4833                                  EM_S[INDEX2(0,6,8)]+=tmp15_1 + tmp1_1 + tmp6_1;                                  EM_S[INDEX2(0,6,8)]+=tmp15_1 + tmp1_1 + tmp6_1;
4834                                  EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp7_1;                                  EM_S[INDEX2(1,6,8)]+=tmp12_1 + tmp15_1 + tmp3_1;
4835                                  EM_S[INDEX2(4,3,8)]+=tmp10_1 + tmp12_1 + tmp13_1;                                  EM_S[INDEX2(2,6,8)]+=tmp14_1 + tmp1_1 + tmp7_1;
4836                                    EM_S[INDEX2(3,6,8)]+=tmp12_1 + tmp6_1 + tmp7_1;
4837                                    EM_S[INDEX2(4,6,8)]+=tmp5_1 + tmp6_1 + tmp7_1;
4838                                    EM_S[INDEX2(5,6,8)]+=tmp1_1 + tmp3_1 + tmp7_1;
4839                                    EM_S[INDEX2(6,6,8)]+=tmp11_1 + tmp14_1 + tmp5_1;
4840                                    EM_S[INDEX2(7,6,8)]+=tmp11_1 + tmp1_1 + tmp6_1;
4841                                    EM_S[INDEX2(0,7,8)]+=tmp12_1 + tmp13_1 + tmp3_1;
4842                                  EM_S[INDEX2(1,7,8)]+=tmp13_1 + tmp1_1 + tmp6_1;                                  EM_S[INDEX2(1,7,8)]+=tmp13_1 + tmp1_1 + tmp6_1;
4843                                  EM_S[INDEX2(0,5,8)]+=tmp16_1 + tmp2_1 + tmp6_1;                                  EM_S[INDEX2(2,7,8)]+=tmp12_1 + tmp2_1 + tmp6_1;
4844                                  EM_S[INDEX2(3,4,8)]+=tmp15_1 + tmp16_1 + tmp3_1;                                  EM_S[INDEX2(3,7,8)]+=tmp14_1 + tmp1_1 + tmp2_1;
4845                                  EM_S[INDEX2(2,4,8)]+=tmp15_1 + tmp6_1 + tmp9_1;                                  EM_S[INDEX2(4,7,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
4846                                    EM_S[INDEX2(5,7,8)]+=tmp2_1 + tmp5_1 + tmp6_1;
4847                                    EM_S[INDEX2(6,7,8)]+=tmp17_1 + tmp1_1 + tmp6_1;
4848                                    EM_S[INDEX2(7,7,8)]+=tmp14_1 + tmp17_1 + tmp5_1;
4849                              }                              }
4850                          }                          }
4851                          ///////////////                          ///////////////
# Line 5004  void Brick::assemblePDESingle(Paso_Syste Line 5041  void Brick::assemblePDESingle(Paso_Syste
5041                                  const double tmp0_1 = D_0*w151;                                  const double tmp0_1 = D_0*w151;
5042                                  const double tmp2_1 = D_0*w153;                                  const double tmp2_1 = D_0*w153;
5043                                  const double tmp1_1 = D_0*w152;                                  const double tmp1_1 = D_0*w152;
5044                                  EM_S[INDEX2(7,3,8)]+=tmp0_1;                                  EM_S[INDEX2(0,0,8)]+=tmp3_1;
5045                                  EM_S[INDEX2(4,7,8)]+=tmp1_1;                                  EM_S[INDEX2(1,0,8)]+=tmp0_1;
5046                                  EM_S[INDEX2(1,3,8)]+=tmp0_1;                                  EM_S[INDEX2(2,0,8)]+=tmp0_1;
                                 EM_S[INDEX2(6,4,8)]+=tmp0_1;  
5047                                  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;  
5048                                  EM_S[INDEX2(4,0,8)]+=tmp0_1;                                  EM_S[INDEX2(4,0,8)]+=tmp0_1;
5049                                    EM_S[INDEX2(5,0,8)]+=tmp1_1;
5050                                    EM_S[INDEX2(6,0,8)]+=tmp1_1;
5051                                    EM_S[INDEX2(7,0,8)]+=tmp2_1;
5052                                    EM_S[INDEX2(0,1,8)]+=tmp0_1;
5053                                    EM_S[INDEX2(1,1,8)]+=tmp3_1;
5054                                    EM_S[INDEX2(2,1,8)]+=tmp1_1;
5055                                    EM_S[INDEX2(3,1,8)]+=tmp0_1;
5056                                    EM_S[INDEX2(4,1,8)]+=tmp1_1;
5057                                    EM_S[INDEX2(5,1,8)]+=tmp0_1;
5058                                    EM_S[INDEX2(6,1,8)]+=tmp2_1;
5059                                    EM_S[INDEX2(7,1,8)]+=tmp1_1;
5060                                    EM_S[INDEX2(0,2,8)]+=tmp0_1;
5061                                  EM_S[INDEX2(1,2,8)]+=tmp1_1;                                  EM_S[INDEX2(1,2,8)]+=tmp1_1;
5062                                  EM_S[INDEX2(6,7,8)]+=tmp0_1;                                  EM_S[INDEX2(2,2,8)]+=tmp3_1;
5063                                    EM_S[INDEX2(3,2,8)]+=tmp0_1;
5064                                    EM_S[INDEX2(4,2,8)]+=tmp1_1;
5065                                    EM_S[INDEX2(5,2,8)]+=tmp2_1;
5066                                    EM_S[INDEX2(6,2,8)]+=tmp0_1;
5067                                    EM_S[INDEX2(7,2,8)]+=tmp1_1;
5068                                    EM_S[INDEX2(0,3,8)]+=tmp1_1;
5069                                    EM_S[INDEX2(1,3,8)]+=tmp0_1;
5070                                    EM_S[INDEX2(2,3,8)]+=tmp0_1;
5071                                  EM_S[INDEX2(3,3,8)]+=tmp3_1;                                  EM_S[INDEX2(3,3,8)]+=tmp3_1;
5072                                  EM_S[INDEX2(2,0,8)]+=tmp0_1;                                  EM_S[INDEX2(4,3,8)]+=tmp2_1;
5073                                  EM_S[INDEX2(7,6,8)]+=tmp0_1;                                  EM_S[INDEX2(5,3,8)]+=tmp1_1;
                                 EM_S[INDEX2(4,4,8)]+=tmp3_1;  
5074                                  EM_S[INDEX2(6,3,8)]+=tmp1_1;                                  EM_S[INDEX2(6,3,8)]+=tmp1_1;
5075                                    EM_S[INDEX2(7,3,8)]+=tmp0_1;
5076                                    EM_S[INDEX2(0,4,8)]+=tmp0_1;
5077                                    EM_S[INDEX2(1,4,8)]+=tmp1_1;
5078                                    EM_S[INDEX2(2,4,8)]+=tmp1_1;
5079                                    EM_S[INDEX2(3,4,8)]+=tmp2_1;
5080                                    EM_S[INDEX2(4,4,8)]+=tmp3_1;
5081                                    EM_S[INDEX2(5,4,8)]+=tmp0_1;
5082                                    EM_S[INDEX2(6,4,8)]+=tmp0_1;
5083                                    EM_S[INDEX2(7,4,8)]+=tmp1_1;
5084                                    EM_S[INDEX2(0,5,8)]+=tmp1_1;
5085                                  EM_S[INDEX2(1,5,8)]+=tmp0_1;                                  EM_S[INDEX2(1,5,8)]+=tmp0_1;
5086                                  EM_S[INDEX2(3,6,8)]+=tmp1_1;                                  EM_S[INDEX2(2,5,8)]+=tmp2_1;
5087                                  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;  
5088                                  EM_S[INDEX2(4,5,8)]+=tmp0_1;                                  EM_S[INDEX2(4,5,8)]+=tmp0_1;
                                 EM_S[INDEX2(0,4,8)]+=tmp0_1;  
5089                                  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;  
5090                                  EM_S[INDEX2(6,5,8)]+=tmp1_1;                                  EM_S[INDEX2(6,5,8)]+=tmp1_1;
5091                                  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;  
5092                                  EM_S[INDEX2(0,6,8)]+=tmp1_1;                                  EM_S[INDEX2(0,6,8)]+=tmp1_1;
5093                                  EM_S[INDEX2(6,2,8)]+=tmp0_1;                                  EM_S[INDEX2(1,6,8)]+=tmp2_1;
5094                                  EM_S[INDEX2(4,3,8)]+=tmp2_1;                                  EM_S[INDEX2(2,6,8)]+=tmp0_1;
5095                                    EM_S[INDEX2(3,6,8)]+=tmp1_1;
5096                                    EM_S[INDEX2(4,6,8)]+=tmp0_1;
5097                                    EM_S[INDEX2(5,6,8)]+=tmp1_1;
5098                                    EM_S[INDEX2(6,6,8)]+=tmp3_1;
5099                                    EM_S[INDEX2(7,6,8)]+=tmp0_1;
5100                                    EM_S[INDEX2(0,7,8)]+=tmp2_1;
5101                                  EM_S[INDEX2(1,7,8)]+=tmp1_1;                                  EM_S[INDEX2(1,7,8)]+=tmp1_1;
5102                                  EM_S[INDEX2(0,5,8)]+=tmp1_1;                                  EM_S[INDEX2(2,7,8)]+=tmp1_1;
5103                                  EM_S[INDEX2(3,4,8)]+=tmp2_1;                                  EM_S[INDEX2(3,7,8)]+=tmp0_1;
5104                                  EM_S[INDEX2(2,4,8)]+=tmp1_1;                                  EM_S[INDEX2(4,7,8)]+=tmp1_1;
5105                                    EM_S[INDEX2(5,7,8)]+=tmp0_1;
5106                                    EM_S[INDEX2(6,7,8)]+=tmp0_1;
5107                                    EM_S[INDEX2(7,7,8)]+=tmp3_1;
5108                              }                              }
5109                          }                          }
5110                          ///////////////                          ///////////////
# Line 5286  void Brick::assemblePDESingle(Paso_Syste Line 5323  void Brick::assemblePDESingle(Paso_Syste
5323    
5324                          // 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)
5325                          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;
5326                          IndexVector rowIndex;                          addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
5327                          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);  
                         }  
5328                      } // end k0 loop                      } // end k0 loop
5329                  } // end k1 loop                  } // end k1 loop
5330              } // end k2 loop              } // end k2 loop
# Line 5369  void Brick::assemblePDESingleReduced(Pas Line 5388  void Brick::assemblePDESingleReduced(Pas
5388                              add_EM_S=true;                              add_EM_S=true;
5389                              const double* A_p=const_cast<escript::Data*>(&A)->getSampleDataRO(e);                              const double* A_p=const_cast<escript::Data*>(&A)->getSampleDataRO(e);
5390                              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)];  
5391                              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)];  
5392                              const double A_20 = A_p[INDEX2(2,0,3)];                              const double A_20 = A_p[INDEX2(2,0,3)];
5393                                const double A_01 = A_p[INDEX2(0,1,3)];
5394                                const double A_11 = A_p[INDEX2(1,1,3)];
5395                              const double A_21 = A_p[INDEX2(2,1,3)];                              const double A_21 = A_p[INDEX2(2,1,3)];
5396                                const double A_02 = A_p[INDEX2(0,2,3)];
5397                                const double A_12 = A_p[INDEX2(1,2,3)];
5398                              const double A_22 = A_p[INDEX2(2,2,3)];                              const double A_22 = A_p[INDEX2(2,2,3)];
5399                              const double tmp0_0 = A_01 + A_10;                              const double tmp0_0 = A_01 + A_10;
5400                              const double tmp1_0 = A_02 + A_20;                              const double tmp1_0 = A_02 + A_20;
# Line 5404  void Brick::assemblePDESingleReduced(Pas Line 5423  void Brick::assemblePDESingleReduced(Pas
5423                              const double tmp16_1 = A_10*w9;                              const double tmp16_1 = A_10*w9;
5424                              const double tmp11_1 = tmp0_0*w9;                              const double tmp11_1 = tmp0_0*w9;
5425                              const double tmp17_1 = A_10*w1;                              const double tmp17_1 = A_10*w1;
5426                              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;
5427                              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;
5428                              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;  
5429                              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;  
5430                              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;
5431                                EM_S[INDEX2(5,0,8)]+=tmp13_1 + tmp14_1 + tmp15_1 + tmp17_1 + tmp20_1 + tmp3_1 + tmp4_1 + tmp8_1;
5432                                EM_S[INDEX2(6,0,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp18_1 + tmp19_1 + tmp21_1 + tmp2_1 + tmp3_1;
5433                                EM_S[INDEX2(7,0,8)]+=tmp10_1 + tmp11_1 + tmp15_1 + tmp18_1 + tmp3_1 + tmp8_1;
5434                                EM_S[INDEX2(0,1,8)]+=tmp12_1 + tmp16_1 + tmp19_1 + tmp21_1 + tmp23_1 + tmp4_1 + tmp8_1 + tmp9_1;
5435                                EM_S[INDEX2(1,1,8)]+=tmp11_1 + tmp15_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp9_1;
5436                                EM_S[INDEX2(2,1,8)]+=tmp0_1 + tmp10_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp5_1 + tmp8_1 + tmp9_1;
5437                                EM_S[INDEX2(3,1,8)]+=tmp10_1 + tmp15_1 + tmp17_1 + tmp1_1 + tmp20_1 + tmp2_1 + tmp5_1 + tmp9_1;
5438                                EM_S[INDEX2(4,1,8)]+=tmp12_1 + tmp13_1 + tmp14_1 + tmp16_1 + tmp22_1 + tmp3_1 + tmp4_1 + tmp8_1;
5439                                EM_S[INDEX2(5,1,8)]+=tmp11_1 + tmp13_1 + tmp14_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp6_1 + tmp7_1;
5440                                EM_S[INDEX2(6,1,8)]+=tmp0_1 + tmp10_1 + tmp18_1 + tmp22_1 + tmp3_1 + tmp8_1;
5441                                EM_S[INDEX2(7,1,8)]+=tmp10_1 + tmp17_1 + tmp18_1 + tmp20_1 + tmp2_1 + tmp3_1 + tmp6_1 + tmp7_1;
5442                                EM_S[INDEX2(0,2,8)]+=tmp10_1 + tmp13_1 + tmp14_1 + tmp17_1 + tmp20_1 + tmp22_1 + tmp2_1 + tmp9_1;
5443                              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;
5444                              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;
5445                                EM_S[INDEX2(3,2,8)]+=tmp12_1 + tmp16_1 + tmp18_1 + tmp4_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
5446                                EM_S[INDEX2(4,2,8)]+=tmp10_1 + tmp17_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp23_1 + tmp2_1 + tmp3_1;
5447                                EM_S[INDEX2(5,2,8)]+=tmp0_1 + tmp10_1 + tmp15_1 + tmp23_1 + tmp3_1 + tmp8_1;
5448                                EM_S[INDEX2(6,2,8)]+=tmp11_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1;
5449                                EM_S[INDEX2(7,2,8)]+=tmp12_1 + tmp15_1 + tmp16_1 + tmp1_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp8_1;
5450                                EM_S[INDEX2(0,3,8)]+=tmp10_1 + tmp11_1 + tmp13_1 + tmp14_1 + tmp19_1 + tmp21_1 + tmp8_1 + tmp9_1;
5451                                EM_S[INDEX2(1,3,8)]+=tmp10_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp16_1 + tmp2_1 + tmp9_1;
5452                                EM_S[INDEX2(2,3,8)]+=tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp4_1 + tmp8_1 + tmp9_1;
5453                              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;
5454                              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;
5455                              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;  
5456                              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;
5457                                EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1;
5458                                EM_S[INDEX2(0,4,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1;
5459                                EM_S[INDEX2(1,4,8)]+=tmp17_1 + tmp1_1 + tmp20_1 + tmp22_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp8_1;
5460                                EM_S[INDEX2(2,4,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp23_1 + tmp2_1 + tmp3_1 + tmp6_1 + tmp7_1;
5461                                EM_S[INDEX2(3,4,8)]+=tmp10_1 + tmp11_1 + tmp22_1 + tmp23_1 + tmp3_1 + tmp8_1;
5462                                EM_S[INDEX2(4,4,8)]+=tmp0_1 + tmp15_1 + tmp18_1 + tmp2_1 + tmp4_1 + tmp9_1;
5463                                EM_S[INDEX2(5,4,8)]+=tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp4_1 + tmp8_1 + tmp9_1;
5464                                EM_S[INDEX2(6,4,8)]+=tmp10_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp16_1 + tmp2_1 + tmp9_1;
5465                                EM_S[INDEX2(7,4,8)]+=tmp10_1 + tmp11_1 + tmp13_1 + tmp14_1 + tmp19_1 + tmp21_1 + tmp8_1 + tmp9_1;
5466                                EM_S[INDEX2(0,5,8)]+=tmp12_1 + tmp15_1 + tmp16_1 + tmp1_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp8_1;
5467                              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;
5468                              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;
5469                              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;  
5470                              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;  
5471                              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;  
5472                              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;
5473                              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;  
5474                              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;
5475                              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;
5476                              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;
5477                                EM_S[INDEX2(3,6,8)]+=tmp12_1 + tmp13_1 + tmp14_1 + tmp16_1 + tmp22_1 + tmp3_1 + tmp4_1 + tmp8_1;
5478                                EM_S[INDEX2(4,6,8)]+=tmp10_1 + tmp15_1 + tmp17_1 + tmp1_1 + tmp20_1 + tmp2_1 + tmp5_1 + tmp9_1;
5479                                EM_S[INDEX2(5,6,8)]+=tmp0_1 + tmp10_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp5_1 + tmp8_1 + tmp9_1;
5480                                EM_S[INDEX2(6,6,8)]+=tmp11_1 + tmp15_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp9_1;
5481                                EM_S[INDEX2(7,6,8)]+=tmp12_1 + tmp16_1 + tmp19_1 + tmp21_1 + tmp23_1 + tmp4_1 + tmp8_1 + tmp9_1;
5482                                EM_S[INDEX2(0,7,8)]+=tmp10_1 + tmp11_1 + tmp15_1 + tmp18_1 + tmp3_1 + tmp8_1;
5483                              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;
5484                              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;
5485                              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;
5486                              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;
5487                                EM_S[INDEX2(5,7,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp1_1 + tmp22_1 + tmp2_1 + tmp5_1 + tmp9_1;
5488                                EM_S[INDEX2(6,7,8)]+=tmp17_1 + tmp20_1 + tmp23_1 + tmp4_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
5489                                EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp22_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp9_1;
5490                          }                          }
5491                          ///////////////                          ///////////////
5492                          // process B //                          // process B //
# Line 5484  void Brick::assemblePDESingleReduced(Pas Line 5503  void Brick::assemblePDESingleReduced(Pas
5503                              const double tmp5_1 = B_2*w17;                              const double tmp5_1 = B_2*w17;
5504                              const double tmp1_1 = B_2*w14;                              const double tmp1_1 = B_2*w14;
5505                              const double tmp0_1 = B_1*w13;                              const double tmp0_1 = B_1*w13;
5506                              EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                              EM_S[INDEX2(0,0,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5507                              EM_S[INDEX2(4,7,8)]+=tmp1_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(1,0,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5508                              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;  
5509                              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;  
5510                              EM_S[INDEX2(4,0,8)]+=tmp1_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(4,0,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5511                                EM_S[INDEX2(5,0,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
5512                                EM_S[INDEX2(6,0,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5513                                EM_S[INDEX2(7,0,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5514                                EM_S[INDEX2(0,1,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5515                                EM_S[INDEX2(1,1,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5516                                EM_S[INDEX2(2,1,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5517                                EM_S[INDEX2(3,1,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
5518                                EM_S[INDEX2(4,1,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5519                                EM_S[INDEX2(5,1,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
5520                                EM_S[INDEX2(6,1,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5521                                EM_S[INDEX2(7,1,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5522                                EM_S[INDEX2(0,2,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5523                              EM_S[INDEX2(1,2,8)]+=tmp2_1 + tmp3_1 + tmp5_1;                              EM_S[INDEX2(1,2,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5524                              EM_S[INDEX2(6,7,8)]+=tmp0_1 + tmp1_1 + tmp4_1;                              EM_S[INDEX2(2,2,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5525                                EM_S[INDEX2(3,2,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
5526                                EM_S[INDEX2(4,2,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5527                                EM_S[INDEX2(5,2,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
5528                                EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5529                                EM_S[INDEX2(7,2,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5530                                EM_S[INDEX2(0,3,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5531                                EM_S[INDEX2(1,3,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5532                                EM_S[INDEX2(2,3,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5533                              EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp2_1 + tmp5_1;                              EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
5534                              EM_S[INDEX2(2,0,8)]+=tmp0_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(4,3,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5535                              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;  
5536                              EM_S[INDEX2(6,3,8)]+=tmp0_1 + tmp1_1 + tmp4_1;                              EM_S[INDEX2(6,3,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5537                                EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5538                                EM_S[INDEX2(0,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5539                                EM_S[INDEX2(1,4,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5540                                EM_S[INDEX2(2,4,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5541                                EM_S[INDEX2(3,4,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
5542                                EM_S[INDEX2(4,4,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5543                                EM_S[INDEX2(5,4,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
5544                                EM_S[INDEX2(6,4,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5545                                EM_S[INDEX2(7,4,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5546                                EM_S[INDEX2(0,5,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5547                              EM_S[INDEX2(1,5,8)]+=tmp2_1 + tmp3_1 + tmp5_1;                              EM_S[INDEX2(1,5,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5548                              EM_S[INDEX2(3,6,8)]+=tmp0_1 + tmp2_1 + tmp5_1;                              EM_S[INDEX2(2,5,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5549                              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;  
5550                              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;  
5551                              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;  
5552                              EM_S[INDEX2(6,5,8)]+=tmp0_1 + tmp1_1 + tmp4_1;                              EM_S[INDEX2(6,5,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5553                              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;  
5554                              EM_S[INDEX2(0,6,8)]+=tmp3_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(0,6,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5555                              EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp4_1;                              EM_S[INDEX2(1,6,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5556                              EM_S[INDEX2(4,3,8)]+=tmp1_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(2,6,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5557                                EM_S[INDEX2(3,6,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
5558                                EM_S[INDEX2(4,6,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5559                                EM_S[INDEX2(5,6,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
5560                                EM_S[INDEX2(6,6,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5561                                EM_S[INDEX2(7,6,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5562                                EM_S[INDEX2(0,7,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5563                              EM_S[INDEX2(1,7,8)]+=tmp2_1 + tmp3_1 + tmp5_1;                              EM_S[INDEX2(1,7,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5564                              EM_S[INDEX2(0,5,8)]+=tmp3_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(2,7,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5565                              EM_S[INDEX2(3,4,8)]+=tmp0_1 + tmp2_1 + tmp5_1;                              EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
5566                              EM_S[INDEX2(2,4,8)]+=tmp0_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(4,7,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5567                                EM_S[INDEX2(5,7,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
5568                                EM_S[INDEX2(6,7,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5569                                EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5570                          }                          }
5571                          ///////////////                          ///////////////
5572                          // process C //                          // process C //
# Line 5564  void Brick::assemblePDESingleReduced(Pas Line 5583  void Brick::assemblePDESingleReduced(Pas
5583                              const double tmp1_1 = C_2*w17;                              const double tmp1_1 = C_2*w17;
5584                              const double tmp3_1 = C_2*w14;                              const double tmp3_1 = C_2*w14;
5585                              const double tmp0_1 = C_1*w13;                              const double tmp0_1 = C_1*w13;
5586                              EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                              EM_S[INDEX2(0,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
5587                              EM_S[INDEX2(4,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;                              EM_S[INDEX2(1,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
5588                              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;  
5589                              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;  
5590                              EM_S[INDEX2(4,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(4,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
5591                                EM_S[INDEX2(5,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
5592                                EM_S[INDEX2(6,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
5593                                EM_S[INDEX2(7,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
5594                                EM_S[INDEX2(0,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5595                                EM_S[INDEX2(1,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5596                                EM_S[INDEX2(2,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5597                                EM_S[INDEX2(3,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5598                                EM_S[INDEX2(4,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5599                                EM_S[INDEX2(5,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5600                                EM_S[INDEX2(6,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5601                                EM_S[INDEX2(7,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5602                                EM_S[INDEX2(0,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5603                              EM_S[INDEX2(1,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;                              EM_S[INDEX2(1,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5604                              EM_S[INDEX2(6,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;                              EM_S[INDEX2(2,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5605                                EM_S[INDEX2(3,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5606                                EM_S[INDEX2(4,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5607                                EM_S[INDEX2(5,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5608                                EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5609                                EM_S[INDEX2(7,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5610                                EM_S[INDEX2(0,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5611                                EM_S[INDEX2(1,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5612                                EM_S[INDEX2(2,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5613                              EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                              EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5614                              EM_S[INDEX2(2,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(4,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5615                              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;  
5616                              EM_S[INDEX2(6,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                              EM_S[INDEX2(6,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5617                                EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5618                                EM_S[INDEX2(0,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5619                                EM_S[INDEX2(1,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5620                                EM_S[INDEX2(2,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5621                                EM_S[INDEX2(3,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5622                                EM_S[INDEX2(4,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5623                                EM_S[INDEX2(5,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5624                                EM_S[INDEX2(6,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5625                                EM_S[INDEX2(7,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5626                                EM_S[INDEX2(0,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;
5627                              EM_S[INDEX2(1,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(1,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;
5628                              EM_S[INDEX2(3,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;                              EM_S[INDEX2(2,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;
5629                              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;  
5630                              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;  
5631                              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;  
5632                              EM_S[INDEX2(6,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(6,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;
5633                              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;  
5634                              EM_S[INDEX2(0,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;                              EM_S[INDEX2(0,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5635                              EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;                              EM_S[INDEX2(1,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5636                              EM_S[INDEX2(4,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                              EM_S[INDEX2(2,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5637                                EM_S[INDEX2(3,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5638                                EM_S[INDEX2(4,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5639                                EM_S[INDEX2(5,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5640                                EM_S[INDEX2(6,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5641                                EM_S[INDEX2(7,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5642                                EM_S[INDEX2(0,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5643                              EM_S[INDEX2(1,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;                              EM_S[INDEX2(1,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5644                              EM_S[INDEX2(0,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(2,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5645                              EM_S[INDEX2(3,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5646                              EM_S[INDEX2(2,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(4,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5647                                EM_S[INDEX2(5,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5648                                EM_S[INDEX2(6,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5649                                EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5650                          }                          }
5651                          ///////////////                          ///////////////
5652                          // process D //                          // process D //
# Line 5635  void Brick::assemblePDESingleReduced(Pas Line 5654  void Brick::assemblePDESingleReduced(Pas
5654                          if (!D.isEmpty()) {                          if (!D.isEmpty()) {
5655                              add_EM_S=true;                              add_EM_S=true;
5656                              const double* D_p=const_cast<escript::Data*>(&D)->getSampleDataRO(e);                              const double* D_p=const_cast<escript::Data*>(&D)->getSampleDataRO(e);
5657                              const double D_0 = D_p[0];                              const double tmp0_1 = D_p[0]*w18;
5658                              const double tmp0_1 = D_0*w18;                              EM_S[INDEX2(0,0,8)]+=tmp0_1;
5659                              EM_S[INDEX2(7,3,8)]+=tmp0_1;                              EM_S[INDEX2(1,0,8)]+=tmp0_1;
5660                              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;  
5661                              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;  
5662                              EM_S[INDEX2(4,0,8)]+=tmp0_1;                              EM_S[INDEX2(4,0,8)]+=tmp0_1;
5663                                EM_S[INDEX2(5,0,8)]+=tmp0_1;
5664                                EM_S[INDEX2(6,0,8)]+=tmp0_1;
5665                                EM_S[INDEX2(7,0,8)]+=tmp0_1;
5666                                EM_S[INDEX2(0,1,8)]+=tmp0_1;
5667                                EM_S[INDEX2(1,1,8)]+=tmp0_1;
5668                                EM_S[INDEX2(2,1,8)]+=tmp0_1;
5669                                EM_S[INDEX2(3,1,8)]+=tmp0_1;
5670                                EM_S[INDEX2(4,1,8)]+=tmp0_1;
5671                                EM_S[INDEX2(5,1,8)]+=tmp0_1;
5672                                EM_S[INDEX2(6,1,8)]+=tmp0_1;
5673                                EM_S[INDEX2(7,1,8)]+=tmp0_1;
5674                                EM_S[INDEX2(0,2,8)]+=tmp0_1;
5675                              EM_S[INDEX2(1,2,8)]+=tmp0_1;                              EM_S[INDEX2(1,2,8)]+=tmp0_1;
5676                              EM_S[INDEX2(6,7,8)]+=tmp0_1;                              EM_S[INDEX2(2,2,8)]+=tmp0_1;
5677                                EM_S[INDEX2(3,2,8)]+=tmp0_1;
5678                                EM_S[INDEX2(4,2,8)]+=tmp0_1;
5679                                EM_S[INDEX2(5,2,8)]+=tmp0_1;
5680                                EM_S[INDEX2(6,2,8)]+=tmp0_1;
5681                                EM_S[INDEX2(7,2,8)]+=tmp0_1;
5682                                EM_S[INDEX2(0,3,8)]+=tmp0_1;
5683                                EM_S[INDEX2(1,3,8)]+=tmp0_1;
5684                                EM_S[INDEX2(2,3,8)]+=tmp0_1;
5685                              EM_S[INDEX2(3,3,8)]+=tmp0_1;                              EM_S[INDEX2(3,3,8)]+=tmp0_1;
5686                              EM_S[INDEX2(2,0,8)]+=tmp0_1;                              EM_S[INDEX2(4,3,8)]+=tmp0_1;
5687                              EM_S[INDEX2(7,6,8)]+=tmp0_1;                              EM_S[INDEX2(5,3,8)]+=tmp0_1;
                             EM_S[INDEX2(4,4,8)]+=tmp0_1;  
5688                              EM_S[INDEX2(6,3,8)]+=tmp0_1;                              EM_S[INDEX2(6,3,8)]+=tmp0_1;
5689                                EM_S[INDEX2(7,3,8)]+=tmp0_1;
5690                                EM_S[INDEX2(0,4,8)]+=tmp0_1;
5691                                EM_S[INDEX2(1,4,8)]+=tmp0_1;
5692                                EM_S[INDEX2(2,4,8)]+=tmp0_1;
5693                                EM_S[INDEX2(3,4,8)]+=tmp0_1;
5694                                EM_S[INDEX2(4,4,8)]+=tmp0_1;
5695                                EM_S[INDEX2(5,4,8)]+=tmp0_1;
5696                                EM_S[INDEX2(6,4,8)]+=tmp0_1;
5697                                EM_S[INDEX2(7,4,8)]+=tmp0_1;
5698                                EM_S[INDEX2(0,5,8)]+=tmp0_1;
5699                              EM_S[INDEX2(1,5,8)]+=tmp0_1;                              EM_S[INDEX2(1,5,8)]+=tmp0_1;
5700                              EM_S[INDEX2(3,6,8)]+=tmp0_1;                              EM_S[INDEX2(2,5,8)]+=tmp0_1;
5701                              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;  
5702                              EM_S[INDEX2(4,5,8)]+=tmp0_1;                              EM_S[INDEX2(4,5,8)]+=tmp0_1;
                             EM_S[INDEX2(0,4,8)]+=tmp0_1;  
5703                              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;  
5704                              EM_S[INDEX2(6,5,8)]+=tmp0_1;                              EM_S[INDEX2(6,5,8)]+=tmp0_1;
5705                              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;  
5706                              EM_S[INDEX2(0,6,8)]+=tmp0_1;                              EM_S[INDEX2(0,6,8)]+=tmp0_1;
5707                              EM_S[INDEX2(6,2,8)]+=tmp0_1;                              EM_S[INDEX2(1,6,8)]+=tmp0_1;
5708                              EM_S[INDEX2(4,3,8)]+=tmp0_1;                              EM_S[INDEX2(2,6,8)]+=tmp0_1;
5709                                EM_S[INDEX2(3,6,8)]+=tmp0_1;
5710                                EM_S[INDEX2(4,6,8)]+=tmp0_1;
5711                                EM_S[INDEX2(5,6,8)]+=tmp0_1;
5712                                EM_S[INDEX2(6,6,8)]+=tmp0_1;
5713                                EM_S[INDEX2(7,6,8)]+=tmp0_1;
5714                                EM_S[INDEX2(0,7,8)]+=tmp0_1;
5715                              EM_S[INDEX2(1,7,8)]+=tmp0_1;                              EM_S[INDEX2(1,7,8)]+=tmp0_1;
5716                              EM_S[INDEX2(0,5,8)]+=tmp0_1;                              EM_S[INDEX2(2,7,8)]+=tmp0_1;
5717                              EM_S[INDEX2(3,4,8)]+=tmp0_1;                              EM_S[INDEX2(3,7,8)]+=tmp0_1;
5718                              EM_S[INDEX2(2,4,8)]+=tmp0_1;                              EM_S[INDEX2(4,7,8)]+=tmp0_1;
5719                                EM_S[INDEX2(5,7,8)]+=tmp0_1;
5720                                EM_S[INDEX2(6,7,8)]+=tmp0_1;
5721                                EM_S[INDEX2(7,7,8)]+=tmp0_1;
5722                          }                          }
5723                          ///////////////                          ///////////////
5724                          // process X //                          // process X //
# Line 5745  void Brick::assemblePDESingleReduced(Pas Line 5763  void Brick::assemblePDESingleReduced(Pas
5763    
5764                          // 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)
5765                          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;
5766                          IndexVector rowIndex;                          addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
5767                          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);  
                         }  
5768                      } // end k0 loop                      } // end k0 loop
5769                  } // end k1 loop                  } // end k1 loop
5770              } // end k2 loop              } // end k2 loop
# Line 8911  void Brick::assemblePDESystem(Paso_Syste Line 8911  void Brick::assemblePDESystem(Paso_Syste
8911    
8912                          // 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)
8913                          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;
8914                          IndexVector rowIndex;                          addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
8915                          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);  
                         }  
8916                      } // end k0 loop                      } // end k0 loop
8917                  } // end k1 loop                  } // end k1 loop
8918              } // end k2 loop              } // end k2 loop
# Line 9401  void Brick::assemblePDESystemReduced(Pas Line 9381  void Brick::assemblePDESystemReduced(Pas
9381    
9382                          // 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)
9383                          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;
9384                          IndexVector rowIndex;                          addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
9385                          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);  
                         }  
9386                      } // end k0 loop                      } // end k0 loop
9387                  } // end k1 loop                  } // end k1 loop
9388              } // end k2 loop              } // end k2 loop
# Line 9434  void Brick::assemblePDESystemReduced(Pas Line 9394  void Brick::assemblePDESystemReduced(Pas
9394  void Brick::assemblePDEBoundarySingle(Paso_SystemMatrix* mat,  void Brick::assemblePDEBoundarySingle(Paso_SystemMatrix* mat,
9395        escript::Data& rhs, const escript::Data& d, const escript::Data& y) const        escript::Data& rhs, const escript::Data& d, const escript::Data& y) const
9396  {  {
9397        const double h0 = m_l0/m_gNE0;
9398        const double h1 = m_l1/m_gNE1;
9399        const double h2 = m_l2/m_gNE2;
9400        const double w0 = 0.0018607582807716854616*h1*h2;
9401        const double w1 = 0.025917019497006092316*h1*h2;
9402        const double w2 = 0.0069444444444444444444*h1*h2;
9403        const double w3 = 0.00049858867864229740201*h1*h2;
9404        const double w4 = 0.09672363354357992482*h1*h2;
9405        const double w5 = 0.055555555555555555556*h1*h2;
9406        const double w6 = 0.11111111111111111111*h1*h2;
9407        const double w7 = 0.027777777777777777778*h1*h2;
9408        const double w8 = 0.1555021169820365539*h1*h2;
9409        const double w9 = 0.041666666666666666667*h1*h2;
9410        const double w10 = 0.01116454968463011277*h1*h2;
9411        const double w11 = 0.25*h1*h2;
9412        const double w12 = 0.0018607582807716854616*h0*h2;
9413        const double w13 = 0.025917019497006092316*h0*h2;
9414        const double w14 = 0.0069444444444444444444*h0*h2;
9415        const double w15 = 0.00049858867864229740201*h0*h2;
9416        const double w16 = 0.09672363354357992482*h0*h2;
9417        const double w17 = 0.055555555555555555556*h0*h2;
9418        const double w18 = 0.11111111111111111111*h0*h2;
9419        const double w19 = 0.027777777777777777778*h0*h2;
9420        const double w20 = 0.1555021169820365539*h0*h2;
9421        const double w21 = 0.041666666666666666667*h0*h2;
9422        const double w22 = 0.01116454968463011277*h0*h2;
9423        const double w23 = 0.25*h0*h2;
9424        const double w24 = 0.0018607582807716854616*h0*h1;
9425        const double w25 = 0.025917019497006092316*h0*h1;
9426        const double w26 = 0.0069444444444444444444*h0*h1;
9427        const double w27 = 0.00049858867864229740201*h0*h1;
9428        const double w28 = 0.09672363354357992482*h0*h1;
9429        const double w29 = 0.055555555555555555556*h0*h1;
9430        const double w30 = 0.027777777777777777778*h0*h1;
9431        const double w31 = 0.11111111111111111111*h0*h1;
9432        const double w32 = 0.1555021169820365539*h0*h1;
9433        const double w33 = 0.041666666666666666667*h0*h1;
9434        const double w34 = 0.01116454968463011277*h0*h1;
9435        const double w35 = 0.25*h0*h1;
9436        const bool add_EM_S=!d.isEmpty();
9437        const bool add_EM_F=!y.isEmpty();
9438        rhs.requireWrite();
9439    #pragma omp parallel
9440        {
9441            if (m_faceOffset[0] > -1) {
9442                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
9443    #pragma omp for
9444                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
9445                        for (index_t k1=0; k1<m_NE1; ++k1) {
9446                            vector<double> EM_S(8*8, 0);
9447                            vector<double> EM_F(8, 0);
9448                            const index_t e = INDEX2(k1,k2,m_NE1);
9449                            ///////////////
9450                            // process d //
9451                            ///////////////
9452                            if (add_EM_S) {
9453                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
9454                                if (d.actsExpanded()) {
9455                                    const double d_0 = d_p[0];
9456                                    const double d_1 = d_p[1];
9457                                    const double d_2 = d_p[2];
9458                                    const double d_3 = d_p[3];
9459                                    const double tmp3_0 = d_1 + d_3;
9460                                    const double tmp6_0 = d_0 + d_1 + d_2 + d_3;
9461                                    const double tmp2_0 = d_0 + d_2;
9462                                    const double tmp0_0 = d_0 + d_1;
9463                                    const double tmp4_0 = d_0 + d_3;
9464                                    const double tmp1_0 = d_2 + d_3;
9465                                    const double tmp5_0 = d_1 + d_2;
9466                                    const double tmp14_1 = d_0*w4;
9467                                    const double tmp17_1 = d_3*w4;
9468                                    const double tmp12_1 = d_1*w4;
9469                                    const double tmp9_1 = d_2*w4;
9470                                    const double tmp4_1 = tmp3_0*w0;
9471                                    const double tmp3_1 = tmp3_0*w1;
9472                                    const double tmp7_1 = tmp0_0*w1;
9473                                    const double tmp8_1 = d_1*w3;
9474                                    const double tmp16_1 = d_0*w3;
9475                                    const double tmp18_1 = tmp6_0*w2;
9476                                    const double tmp1_1 = tmp1_0*w1;
9477                                    const double tmp15_1 = tmp5_0*w2;
9478                                    const double tmp6_1 = tmp1_0*w0;
9479                                    const double tmp2_1 = tmp2_0*w0;
9480                                    const double tmp13_1 = d_3*w3;
9481                                    const double tmp5_1 = tmp2_0*w1;
9482                                    const double tmp10_1 = tmp4_0*w2;
9483                                    const double tmp11_1 = d_2*w3;
9484                                    const double tmp0_1 = tmp0_0*w0;
9485                                    EM_S[INDEX2(0,0,8)]+=tmp13_1 + tmp14_1 + tmp15_1;
9486                                    EM_S[INDEX2(2,0,8)]+=tmp6_1 + tmp7_1;
9487                                    EM_S[INDEX2(4,0,8)]+=tmp4_1 + tmp5_1;
9488                                    EM_S[INDEX2(6,0,8)]+=tmp18_1;
9489                                    EM_S[INDEX2(0,2,8)]+=tmp6_1 + tmp7_1;
9490                                    EM_S[INDEX2(2,2,8)]+=tmp10_1 + tmp11_1 + tmp12_1;
9491                                    EM_S[INDEX2(4,2,8)]+=tmp18_1;
9492                                    EM_S[INDEX2(6,2,8)]+=tmp2_1 + tmp3_1;
9493                                    EM_S[INDEX2(0,4,8)]+=tmp4_1 + tmp5_1;
9494                                    EM_S[INDEX2(2,4,8)]+=tmp18_1;
9495                                    EM_S[INDEX2(4,4,8)]+=tmp10_1 + tmp8_1 + tmp9_1;
9496                                    EM_S[INDEX2(6,4,8)]+=tmp0_1 + tmp1_1;
9497                                    EM_S[INDEX2(0,6,8)]+=tmp18_1;
9498                                    EM_S[INDEX2(2,6,8)]+=tmp2_1 + tmp3_1;
9499                                    EM_S[INDEX2(4,6,8)]+=tmp0_1 + tmp1_1;
9500                                    EM_S[INDEX2(6,6,8)]+=tmp15_1 + tmp16_1 + tmp17_1;
9501                                } else { /* constant data */
9502                                    const double tmp0_1 = d_p[0]*w5;
9503                                    const double tmp2_1 = d_p[0]*w7;
9504                                    const double tmp1_1 = d_p[0]*w6;
9505                                    EM_S[INDEX2(0,0,8)]+=tmp1_1;
9506                                    EM_S[INDEX2(2,0,8)]+=tmp0_1;
9507                                    EM_S[INDEX2(4,0,8)]+=tmp0_1;
9508                                    EM_S[INDEX2(6,0,8)]+=tmp2_1;
9509                                    EM_S[INDEX2(0,2,8)]+=tmp0_1;
9510                                    EM_S[INDEX2(2,2,8)]+=tmp1_1;
9511                                    EM_S[INDEX2(4,2,8)]+=tmp2_1;
9512                                    EM_S[INDEX2(6,2,8)]+=tmp0_1;
9513                                    EM_S[INDEX2(0,4,8)]+=tmp0_1;
9514                                    EM_S[INDEX2(2,4,8)]+=tmp2_1;
9515                                    EM_S[INDEX2(4,4,8)]+=tmp1_1;
9516                                    EM_S[INDEX2(6,4,8)]+=tmp0_1;
9517                                    EM_S[INDEX2(0,6,8)]+=tmp2_1;
9518                                    EM_S[INDEX2(2,6,8)]+=tmp0_1;
9519                                    EM_S[INDEX2(4,6,8)]+=tmp0_1;
9520                                    EM_S[INDEX2(6,6,8)]+=tmp1_1;
9521                                }
9522                            }
9523                            ///////////////
9524                            // process y //
9525                            ///////////////
9526                            if (add_EM_F) {
9527                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
9528                                if (y.actsExpanded()) {
9529                                    const double y_0 = y_p[0];
9530                                    const double y_1 = y_p[1];
9531                                    const double y_2 = y_p[2];
9532                                    const double y_3 = y_p[3];
9533                                    const double tmp0_0 = y_1 + y_2;
9534                                    const double tmp1_0 = y_0 + y_3;
9535                                    const double tmp2_1 = w10*y_3;
9536                                    const double tmp8_1 = w10*y_0;
9537                                    const double tmp5_1 = w10*y_2;
9538                                    const double tmp3_1 = w8*y_1;
9539                                    const double tmp9_1 = w8*y_3;
9540                                    const double tmp0_1 = w8*y_0;
9541                                    const double tmp1_1 = tmp0_0*w9;
9542                                    const double tmp7_1 = w8*y_2;
9543                                    const double tmp4_1 = tmp1_0*w9;
9544                                    const double tmp6_1 = w10*y_1;
9545                                    EM_F[0]+=tmp0_1 + tmp1_1 + tmp2_1;
9546                                    EM_F[2]+=tmp3_1 + tmp4_1 + tmp5_1;
9547                                    EM_F[4]+=tmp4_1 + tmp6_1 + tmp7_1;
9548                                    EM_F[6]+=tmp1_1 + tmp8_1 + tmp9_1;
9549                                } else { /* constant data */
9550                                    const double tmp0_1 = w11*y_p[0];
9551                                    EM_F[0]+=tmp0_1;
9552                                    EM_F[2]+=tmp0_1;
9553                                    EM_F[4]+=tmp0_1;
9554                                    EM_F[6]+=tmp0_1;
9555                                }
9556                            }
9557                            const index_t firstNode=m_N0*m_N1*k2+m_N0*k1;
9558                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
9559                                    add_EM_F, firstNode);
9560                        } // k1 loop
9561                    } // k2 loop
9562                } // colouring
9563            } // face 0
9564    
9565            if (m_faceOffset[1] > -1) {
9566                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
9567    #pragma omp for
9568                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
9569                        for (index_t k1=0; k1<m_NE1; ++k1) {
9570                            vector<double> EM_S(8*8, 0);
9571                            vector<double> EM_F(8, 0);
9572                            const index_t e = m_faceOffset[1]+INDEX2(k1,k2,m_NE1);
9573                            ///////////////
9574                            // process d //
9575                            ///////////////
9576                            if (add_EM_S) {
9577                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
9578                                if (d.actsExpanded()) {
9579                                    const double d_0 = d_p[0];
9580                                    const double d_1 = d_p[1];
9581                                    const double d_2 = d_p[2];
9582                                    const double d_3 = d_p[3];
9583                                    const double tmp1_0 = d_1 + d_3;
9584                                    const double tmp6_0 = d_0 + d_1 + d_2 + d_3;
9585                                    const double tmp0_0 = d_0 + d_2;
9586                                    const double tmp3_0 = d_0 + d_1;
9587                                    const double tmp4_0 = d_0 + d_3;
9588                                    const double tmp2_0 = d_2 + d_3;
9589                                    const double tmp5_0 = d_1 + d_2;
9590                                    const double tmp10_1 = d_3*w4;
9591                                    const double tmp13_1 = tmp2_0*w1;
9592                                    const double tmp16_1 = d_0*w4;
9593                                    const double tmp18_1 = d_2*w4;
9594                                    const double tmp12_1 = tmp3_0*w0;
9595                                    const double tmp3_1 = tmp3_0*w1;
9596                                    const double tmp5_1 = tmp0_0*w1;
9597                                    const double tmp17_1 = d_1*w3;
9598                                    const double tmp9_1 = d_0*w3;
9599                                    const double tmp14_1 = tmp6_0*w2;
9600                                    const double tmp1_1 = tmp1_0*w1;
9601                                    const double tmp11_1 = tmp5_0*w2;
9602                                    const double tmp4_1 = tmp1_0*w0;
9603                                    const double tmp2_1 = tmp2_0*w0;
9604                                    const double tmp15_1 = d_3*w3;
9605                                    const double tmp7_1 = d_1*w4;
9606                                    const double tmp8_1 = tmp4_0*w2;
9607                                    const double tmp6_1 = d_2*w3;
9608                                    const double tmp0_1 = tmp0_0*w0;
9609                                    EM_S[INDEX2(1,1,8)]+=tmp11_1 + tmp15_1 + tmp16_1;
9610                                    EM_S[INDEX2(3,1,8)]+=tmp2_1 + tmp3_1;
9611                                    EM_S[INDEX2(5,1,8)]+=tmp4_1 + tmp5_1;
9612                                    EM_S[INDEX2(7,1,8)]+=tmp14_1;
9613                                    EM_S[INDEX2(1,3,8)]+=tmp2_1 + tmp3_1;
9614                                    EM_S[INDEX2(3,3,8)]+=tmp6_1 + tmp7_1 + tmp8_1;
9615                                    EM_S[INDEX2(5,3,8)]+=tmp14_1;
9616                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1;
9617                                    EM_S[INDEX2(1,5,8)]+=tmp4_1 + tmp5_1;
9618                                    EM_S[INDEX2(3,5,8)]+=tmp14_1;
9619                                    EM_S[INDEX2(5,5,8)]+=tmp17_1 + tmp18_1 + tmp8_1;
9620                                    EM_S[INDEX2(7,5,8)]+=tmp12_1 + tmp13_1;
9621                                    EM_S[INDEX2(1,7,8)]+=tmp14_1;
9622                                    EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp1_1;
9623                                    EM_S[INDEX2(5,7,8)]+=tmp12_1 + tmp13_1;
9624                                    EM_S[INDEX2(7,7,8)]+=tmp10_1 + tmp11_1 + tmp9_1;
9625                                } else { /* constant data */
9626                                    const double tmp0_1 = d_p[0]*w5;
9627                                    const double tmp2_1 = d_p[0]*w7;
9628                                    const double tmp1_1 = d_p[0]*w6;
9629                                    EM_S[INDEX2(1,1,8)]+=tmp1_1;
9630                                    EM_S[INDEX2(3,1,8)]+=tmp0_1;
9631                                    EM_S[INDEX2(5,1,8)]+=tmp0_1;
9632                                    EM_S[INDEX2(7,1,8)]+=tmp2_1;
9633                                    EM_S[INDEX2(1,3,8)]+=tmp0_1;
9634                                    EM_S[INDEX2(3,3,8)]+=tmp1_1;
9635                                    EM_S[INDEX2(5,3,8)]+=tmp2_1;
9636                                    EM_S[INDEX2(7,3,8)]+=tmp0_1;
9637                                    EM_S[INDEX2(1,5,8)]+=tmp0_1;
9638                                    EM_S[INDEX2(3,5,8)]+=tmp2_1;
9639                                    EM_S[INDEX2(5,5,8)]+=tmp1_1;
9640                                    EM_S[INDEX2(7,5,8)]+=tmp0_1;
9641                                    EM_S[INDEX2(1,7,8)]+=tmp2_1;
9642                                    EM_S[INDEX2(3,7,8)]+=tmp0_1;
9643                                    EM_S[INDEX2(5,7,8)]+=tmp0_1;
9644                                    EM_S[INDEX2(7,7,8)]+=tmp1_1;
9645                                }
9646                            }
9647                            ///////////////
9648                            // process y //
9649                            ///////////////
9650                            if (add_EM_F) {
9651                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
9652                                if (y.actsExpanded()) {
9653                                    const double y_0 = y_p[0];
9654                                    const double y_1 = y_p[1];
9655                                    const double y_2 = y_p[2];
9656                                    const double y_3 = y_p[3];
9657                                    const double tmp0_0 = y_1 + y_2;
9658                                    const double tmp1_0 = y_0 + y_3;
9659                                    const double tmp2_1 = w10*y_3;
9660                                    const double tmp8_1 = w10*y_0;
9661                                    const double tmp5_1 = w10*y_2;
9662                                    const double tmp3_1 = w8*y_1;
9663                                    const double tmp9_1 = w8*y_3;
9664                                    const double tmp0_1 = w8*y_0;
9665                                    const double tmp1_1 = tmp0_0*w9;
9666                                    const double tmp7_1 = w8*y_2;
9667                                    const double tmp4_1 = tmp1_0*w9;
9668                                    const double tmp6_1 = w10*y_1;
9669                                    EM_F[1]+=tmp0_1 + tmp1_1 + tmp2_1;
9670                                    EM_F[3]+=tmp3_1 + tmp4_1 + tmp5_1;
9671                                    EM_F[5]+=tmp4_1 + tmp6_1 + tmp7_1;
9672                                    EM_F[7]+=tmp1_1 + tmp8_1 + tmp9_1;
9673                                } else { /* constant data */
9674                                    const double tmp0_1 = w11*y_p[0];
9675                                    EM_F[1]+=tmp0_1;
9676                                    EM_F[3]+=tmp0_1;
9677                                    EM_F[5]+=tmp0_1;
9678                                    EM_F[7]+=tmp0_1;
9679                                }
9680                            }
9681                            const index_t firstNode=m_N0*m_N1*k2+m_N0*(k1+1)-2;
9682                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
9683                                    add_EM_F, firstNode);
9684                        } // k1 loop
9685                    } // k2 loop
9686                } // colouring
9687            } // face 1
9688    
9689            if (m_faceOffset[2] > -1) {
9690                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
9691    #pragma omp for
9692                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
9693                        for (index_t k0=0; k0<m_NE0; ++k0) {
9694                            vector<double> EM_S(8*8, 0);
9695                            vector<double> EM_F(8, 0);
9696                            const index_t e = m_faceOffset[2]+INDEX2(k0,k2,m_NE0);
9697                            ///////////////
9698                            // process d //
9699                            ///////////////
9700                            if (add_EM_S) {
9701                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
9702                                if (d.actsExpanded()) {
9703                                    const double d_0 = d_p[0];
9704                                    const double d_1 = d_p[1];
9705                                    const double d_2 = d_p[2];
9706                                    const double d_3 = d_p[3];
9707                                    const double tmp2_0 = d_1 + d_3;
9708                                    const double tmp5_0 = d_0 + d_1 + d_2 + d_3;
9709                                    const double tmp3_0 = d_0 + d_2;
9710                                    const double tmp1_0 = d_0 + d_1;
9711                                    const double tmp4_0 = d_0 + d_3;
9712                                    const double tmp0_0 = d_2 + d_3;
9713                                    const double tmp6_0 = d_1 + d_2;
9714                                    const double tmp2_1 = tmp2_0*w13;
9715                                    const double tmp14_1 = d_3*w15;
9716                                    const double tmp0_1 = tmp0_0*w13;
9717                                    const double tmp3_1 = tmp3_0*w12;
9718                                    const double tmp17_1 = tmp1_0*w13;
9719                                    const double tmp18_1 = tmp0_0*w12;
9720                                    const double tmp8_1 = d_1*w15;
9721                                    const double tmp16_1 = d_0*w15;
9722                                    const double tmp11_1 = d_2*w15;
9723                                    const double tmp5_1 = tmp2_0*w12;
9724                                    const double tmp15_1 = d_3*w16;
9725                                    const double tmp13_1 = tmp6_0*w14;
9726                                    const double tmp1_1 = tmp1_0*w12;
9727                                    const double tmp7_1 = tmp4_0*w14;
9728                                    const double tmp12_1 = d_0*w16;
9729                                    const double tmp10_1 = d_1*w16;
9730                                    const double tmp6_1 = d_2*w16;
9731                                    const double tmp9_1 = tmp5_0*w14;
9732                                    const double tmp4_1 = tmp3_0*w13;
9733                                    EM_S[INDEX2(0,0,8)]+=tmp12_1 + tmp13_1 + tmp14_1;
9734                                    EM_S[INDEX2(1,0,8)]+=tmp17_1 + tmp18_1;
9735                                    EM_S[INDEX2(4,0,8)]+=tmp4_1 + tmp5_1;
9736                                    EM_S[INDEX2(5,0,8)]+=tmp9_1;
9737                                    EM_S[INDEX2(0,1,8)]+=tmp17_1 + tmp18_1;
9738                                    EM_S[INDEX2(1,1,8)]+=tmp10_1 + tmp11_1 + tmp7_1;
9739                                    EM_S[INDEX2(4,1,8)]+=tmp9_1;
9740                                    EM_S[INDEX2(5,1,8)]+=tmp2_1 + tmp3_1;
9741                                    EM_S[INDEX2(0,4,8)]+=tmp4_1 + tmp5_1;
9742                                    EM_S[INDEX2(1,4,8)]+=tmp9_1;
9743                                    EM_S[INDEX2(4,4,8)]+=tmp6_1 + tmp7_1 + tmp8_1;
9744                                    EM_S[INDEX2(5,4,8)]+=tmp0_1 + tmp1_1;
9745                                    EM_S[INDEX2(0,5,8)]+=tmp9_1;
9746                                    EM_S[INDEX2(1,5,8)]+=tmp2_1 + tmp3_1;
9747                                    EM_S[INDEX2(4,5,8)]+=tmp0_1 + tmp1_1;
9748                                    EM_S[INDEX2(5,5,8)]+=tmp13_1 + tmp15_1 + tmp16_1;
9749                                } else { /* constant data */
9750                                    const double tmp0_1 = d_p[0]*w17;
9751                                    const double tmp2_1 = d_p[0]*w19;
9752                                    const double tmp1_1 = d_p[0]*w18;
9753                                    EM_S[INDEX2(0,0,8)]+=tmp1_1;
9754                                    EM_S[INDEX2(1,0,8)]+=tmp0_1;
9755                                    EM_S[INDEX2(4,0,8)]+=tmp0_1;
9756                                    EM_S[INDEX2(5,0,8)]+=tmp2_1;
9757                                    EM_S[INDEX2(0,1,8)]+=tmp0_1;
9758                                    EM_S[INDEX2(1,1,8)]+=tmp1_1;
9759                                    EM_S[INDEX2(4,1,8)]+=tmp2_1;
9760                                    EM_S[INDEX2(5,1,8)]+=tmp0_1;
9761                                    EM_S[INDEX2(0,4,8)]+=tmp0_1;
9762                                    EM_S[INDEX2(1,4,8)]+=tmp2_1;
9763                                    EM_S[INDEX2(4,4,8)]+=tmp1_1;
9764                                    EM_S[INDEX2(5,4,8)]+=tmp0_1;
9765                                    EM_S[INDEX2(0,5,8)]+=tmp2_1;
9766                                    EM_S[INDEX2(1,5,8)]+=tmp0_1;
9767                                    EM_S[INDEX2(4,5,8)]+=tmp0_1;
9768                                    EM_S[INDEX2(5,5,8)]+=tmp1_1;
9769                                }
9770                            }
9771                            ///////////////
9772                            // process y //
9773                            ///////////////
9774                            if (add_EM_F) {
9775                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
9776                                if (y.actsExpanded()) {
9777                                    const double y_0 = y_p[0];
9778                                    const double y_1 = y_p[1];
9779                                    const double y_2 = y_p[2];
9780                                    const double y_3 = y_p[3];
9781                                    const double tmp0_0 = y_1 + y_2;
9782                                    const double tmp1_0 = y_0 + y_3;
9783                                    const double tmp0_1 = w22*y_3;
9784                                    const double tmp6_1 = w22*y_1;
9785                                    const double tmp3_1 = w22*y_2;
9786                                    const double tmp5_1 = w20*y_1;
9787                                    const double tmp9_1 = w20*y_3;
9788                                    const double tmp4_1 = tmp1_0*w21;
9789                                    const double tmp8_1 = w22*y_0;
9790                                    const double tmp2_1 = w20*y_0;
9791                                    const double tmp7_1 = w20*y_2;
9792                                    const double tmp1_1 = tmp0_0*w21;
9793                                    EM_F[0]+=tmp0_1 + tmp1_1 + tmp2_1;
9794                                    EM_F[1]+=tmp3_1 + tmp4_1 + tmp5_1;
9795                                    EM_F[4]+=tmp4_1 + tmp6_1 + tmp7_1;
9796                                    EM_F[5]+=tmp1_1 + tmp8_1 + tmp9_1;
9797                                } else { /* constant data */
9798                                    const double tmp0_1 = w23*y_p[0];
9799                                    EM_F[0]+=tmp0_1;
9800                                    EM_F[1]+=tmp0_1;
9801                                    EM_F[4]+=tmp0_1;
9802                                    EM_F[5]+=tmp0_1;
9803                                }
9804                            }
9805                            const index_t firstNode=m_N0*m_N1*k2+k0;
9806                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
9807                                    add_EM_F, firstNode);
9808                        } // k0 loop
9809                    } // k2 loop
9810                } // colouring
9811            } // face 2
9812    
9813            if (m_faceOffset[3] > -1) {
9814                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
9815    #pragma omp for
9816                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
9817                        for (index_t k0=0; k0<m_NE0; ++k0) {
9818                            vector<double> EM_S(8*8, 0);
9819                            vector<double> EM_F(8, 0);
9820                            const index_t e = m_faceOffset[3]+INDEX2(k0,k2,m_NE0);
9821                            ///////////////
9822                            // process d //
9823                            ///////////////
9824                            if (add_EM_S) {
9825                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
9826                                if (d.actsExpanded()) {
9827                                    const double d_0 = d_p[0];
9828                                    const double d_1 = d_p[1];
9829                                    const double d_2 = d_p[2];
9830                                    const double d_3 = d_p[3];
9831                                    const double tmp0_0 = d_1 + d_3;
9832                                    const double tmp2_0 = d_0 + d_1 + d_2 + d_3;
9833                                    const double tmp1_0 = d_0 + d_2;
9834                                    const double tmp4_0 = d_0 + d_1;
9835                                    const double tmp5_0 = d_0 + d_3;
9836                                    const double tmp3_0 = d_2 + d_3;
9837                                    const double tmp6_0 = d_1 + d_2;
9838                                    const double tmp15_1 = tmp4_0*w13;
9839                                    const double tmp10_1 = d_0*w16;
9840                                    const double tmp6_1 = tmp4_0*w12;
9841                                    const double tmp16_1 = tmp3_0*w12;
9842                                    const double tmp0_1 = tmp0_0*w13;
9843                                    const double tmp2_1 = tmp1_0*w13;
9844                                    const double tmp18_1 = d_1*w15;
9845                                    const double tmp14_1 = d_0*w15;
9846                                    const double tmp9_1 = d_2*w15;
9847                                    const double tmp4_1 = tmp2_0*w14;
9848                                    const double tmp13_1 = d_3*w16;
9849                                    const double tmp11_1 = tmp6_0*w14;
9850                                    const double tmp1_1 = tmp1_0*w12;
9851                                    const double tmp12_1 = d_3*w15;
9852                                    const double tmp3_1 = tmp0_0*w12;
9853                                    const double tmp7_1 = d_1*w16;
9854                                    const double tmp17_1 = d_2*w16;
9855                                    const double tmp8_1 = tmp5_0*w14;
9856                                    const double tmp5_1 = tmp3_0*w13;
9857                                    EM_S[INDEX2(2,2,8)]+=tmp10_1 + tmp11_1 + tmp12_1;
9858                                    EM_S[INDEX2(3,2,8)]+=tmp15_1 + tmp16_1;
9859                                    EM_S[INDEX2(6,2,8)]+=tmp2_1 + tmp3_1;
9860                                    EM_S[INDEX2(7,2,8)]+=tmp4_1;
9861                                    EM_S[INDEX2(2,3,8)]+=tmp15_1 + tmp16_1;
9862                                    EM_S[INDEX2(3,3,8)]+=tmp7_1 + tmp8_1 + tmp9_1;
9863                                    EM_S[INDEX2(6,3,8)]+=tmp4_1;
9864                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1;
9865                                    EM_S[INDEX2(2,6,8)]+=tmp2_1 + tmp3_1;
9866                                    EM_S[INDEX2(3,6,8)]+=tmp4_1;
9867                                    EM_S[INDEX2(6,6,8)]+=tmp17_1 + tmp18_1 + tmp8_1;
9868                                    EM_S[INDEX2(7,6,8)]+=tmp5_1 + tmp6_1;
9869                                    EM_S[INDEX2(2,7,8)]+=tmp4_1;
9870                                    EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp1_1;
9871                                    EM_S[INDEX2(6,7,8)]+=tmp5_1 + tmp6_1;
9872                                    EM_S[INDEX2(7,7,8)]+=tmp11_1 + tmp13_1 + tmp14_1;
9873                                } else { /* constant data */
9874                                    const double tmp0_1 = d_p[0]*w17;
9875                                    const double tmp1_1 = d_p[0]*w19;
9876                                    const double tmp2_1 = d_p[0]*w18;
9877                                    EM_S[INDEX2(2,2,8)]+=tmp2_1;
9878                                    EM_S[INDEX2(3,2,8)]+=tmp0_1;
9879                                    EM_S[INDEX2(6,2,8)]+=tmp0_1;
9880                                    EM_S[INDEX2(7,2,8)]+=tmp1_1;
9881                                    EM_S[INDEX2(2,3,8)]+=tmp0_1;
9882                                    EM_S[INDEX2(3,3,8)]+=tmp2_1;
9883                                    EM_S[INDEX2(6,3,8)]+=tmp1_1;
9884                                    EM_S[INDEX2(7,3,8)]+=tmp0_1;
9885                                    EM_S[INDEX2(2,6,8)]+=tmp0_1;
9886                                    EM_S[INDEX2(3,6,8)]+=tmp1_1;
9887                                    EM_S[INDEX2(6,6,8)]+=tmp2_1;
9888                                    EM_S[INDEX2(7,6,8)]+=tmp0_1;
9889                                    EM_S[INDEX2(2,7,8)]+=tmp1_1;
9890                                    EM_S[INDEX2(3,7,8)]+=tmp0_1;
9891                                    EM_S[INDEX2(6,7,8)]+=tmp0_1;
9892                                    EM_S[INDEX2(7,7,8)]+=tmp2_1;
9893                                }
9894                            }
9895                            ///////////////
9896                            // process y //
9897                            ///////////////
9898                            if (add_EM_F) {
9899                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
9900                                if (y.actsExpanded()) {
9901                                    const double y_0 = y_p[0];
9902                                    const double y_1 = y_p[1];
9903                                    const double y_2 = y_p[2];
9904                                    const double y_3 = y_p[3];
9905                                    const double tmp0_0 = y_1 + y_2;
9906                                    const double tmp1_0 = y_0 + y_3;
9907                                    const double tmp0_1 = w22*y_3;
9908                                    const double tmp6_1 = w22*y_1;
9909                                    const double tmp3_1 = w22*y_2;
9910                                    const double tmp5_1 = w20*y_1;
9911                                    const double tmp9_1 = w20*y_3;
9912                                    const double tmp4_1 = tmp1_0*w21;
9913                                    const double tmp8_1 = w22*y_0;
9914                                    const double tmp2_1 = w20*y_0;
9915                                    const double tmp7_1 = w20*y_2;
9916                                    const double tmp1_1 = tmp0_0*w21;
9917                                    EM_F[2]+=tmp0_1 + tmp1_1 + tmp2_1;
9918                                    EM_F[3]+=tmp3_1 + tmp4_1 + tmp5_1;
9919                                    EM_F[6]+=tmp4_1 + tmp6_1 + tmp7_1;
9920                                    EM_F[7]+=tmp1_1 + tmp8_1 + tmp9_1;
9921                                } else { /* constant data */
9922                                    const double tmp0_1 = w23*y_p[0];
9923                                    EM_F[2]+=tmp0_1;
9924                                    EM_F[3]+=tmp0_1;
9925                                    EM_F[6]+=tmp0_1;
9926                                    EM_F[7]+=tmp0_1;
9927                                }
9928                            }
9929                            const index_t firstNode=m_N0*m_N1*k2+m_N0*(m_N1-2)+k0;
9930                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
9931                                    add_EM_F, firstNode);
9932                        } // k0 loop
9933                    } // k2 loop
9934                } // colouring
9935            } // face 3
9936    
9937            if (m_faceOffset[4] > -1) {
9938                for (index_t k1_0=0; k1_0<2; k1_0++) { // colouring
9939    #pragma omp for
9940                    for (index_t k1=k1_0; k1<m_NE1; k1+=2) {
9941                        for (index_t k0=0; k0<m_NE0; ++k0) {
9942                            vector<double> EM_S(8*8, 0);
9943                            vector<double> EM_F(8, 0);
9944                            const index_t e = m_faceOffset[4]+INDEX2(k0,k1,m_NE0);
9945                            ///////////////
9946                            // process d //
9947                            ///////////////
9948                            if (add_EM_S) {
9949                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
9950                                if (d.actsExpanded()) {
9951                                    const double d_0 = d_p[0];
9952                                    const double d_1 = d_p[1];
9953                                    const double d_2 = d_p[2];
9954                                    const double d_3 = d_p[3];
9955                                    const double tmp0_0 = d_1 + d_3;
9956                                    const double tmp2_0 = d_0 + d_1 + d_2 + d_3;
9957                                    const double tmp1_0 = d_0 + d_2;
9958                                    const double tmp6_0 = d_0 + d_1;
9959                                    const double tmp4_0 = d_0 + d_3;
9960                                    const double tmp5_0 = d_2 + d_3;
9961                                    const double tmp3_0 = d_1 + d_2;
9962                                    const double tmp18_1 = tmp5_0*w24;
9963                                    const double tmp6_1 = tmp1_0*w25;
9964                                    const double tmp4_1 = d_0*w27;
9965                                    const double tmp12_1 = d_2*w27;
9966                                    const double tmp0_1 = tmp0_0*w25;
9967                                    const double tmp5_1 = tmp3_0*w26;
9968                                    const double tmp2_1 = tmp2_0*w26;
9969                                    const double tmp17_1 = tmp6_0*w25;
9970                                    const double tmp14_1 = tmp6_0*w24;
9971                                    const double tmp11_1 = d_1*w28;
9972                                    const double tmp9_1 = d_1*w27;
9973                                    const double tmp16_1 = d_3*w27;
9974                                    const double tmp8_1 = d_2*w28;
9975                                    const double tmp7_1 = tmp0_0*w24;
9976                                    const double tmp15_1 = d_0*w28;
9977                                    const double tmp13_1 = tmp5_0*w25;
9978                                    const double tmp3_1 = d_3*w28;
9979                                    const double tmp10_1 = tmp4_0*w26;
9980                                    const double tmp1_1 = tmp1_0*w24;
9981                                    EM_S[INDEX2(0,0,8)]+=tmp15_1 + tmp16_1 + tmp5_1;
9982                                    EM_S[INDEX2(1,0,8)]+=tmp17_1 + tmp18_1;
9983                                    EM_S[INDEX2(2,0,8)]+=tmp6_1 + tmp7_1;
9984                                    EM_S[INDEX2(3,0,8)]+=tmp2_1;
9985                                    EM_S[INDEX2(0,1,8)]+=tmp17_1 + tmp18_1;
9986                                    EM_S[INDEX2(1,1,8)]+=tmp10_1 + tmp11_1 + tmp12_1;
9987                                    EM_S[INDEX2(2,1,8)]+=tmp2_1;
9988                                    EM_S[INDEX2(3,1,8)]+=tmp0_1 + tmp1_1;
9989                                    EM_S[INDEX2(0,2,8)]+=tmp6_1 + tmp7_1;
9990                                    EM_S[INDEX2(1,2,8)]+=tmp2_1;
9991                                    EM_S[INDEX2(2,2,8)]+=tmp10_1 + tmp8_1 + tmp9_1;
9992                                    EM_S[INDEX2(3,2,8)]+=tmp13_1 + tmp14_1;
9993                                    EM_S[INDEX2(0,3,8)]+=tmp2_1;
9994                                    EM_S[INDEX2(1,3,8)]+=tmp0_1 + tmp1_1;
9995                                    EM_S[INDEX2(2,3,8)]+=tmp13_1 + tmp14_1;
9996                                    EM_S[INDEX2(3,3,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
9997                                } else { /* constant data */
9998                                    const double tmp2_1 = d_p[0]*w31;
9999                                    const double tmp1_1 = d_p[0]*w30;
10000                                    const double tmp0_1 = d_p[0]*w29;
10001                                    EM_S[INDEX2(0,0,8)]+=tmp2_1;
10002                                    EM_S[INDEX2(1,0,8)]+=tmp0_1;
10003                                    EM_S[INDEX2(2,0,8)]+=tmp0_1;
10004                                    EM_S[INDEX2(3,0,8)]+=tmp1_1;
10005                                    EM_S[INDEX2(0,1,8)]+=tmp0_1;
10006                                    EM_S[INDEX2(1,1,8)]+=tmp2_1;
10007                                    EM_S[INDEX2(2,1,8)]+=tmp1_1;
10008                                    EM_S[INDEX2(3,1,8)]+=tmp0_1;
10009                                    EM_S[INDEX2(0,2,8)]+=tmp0_1;
10010                                    EM_S[INDEX2(1,2,8)]+=tmp1_1;
10011                                    EM_S[INDEX2(2,2,8)]+=tmp2_1;
10012                                    EM_S[INDEX2(3,2,8)]+=tmp0_1;
10013                                    EM_S[INDEX2(0,3,8)]+=tmp1_1;
10014                                    EM_S[INDEX2(1,3,8)]+=tmp0_1;
10015                                    EM_S[INDEX2(2,3,8)]+=tmp0_1;
10016                                    EM_S[INDEX2(3,3,8)]+=tmp2_1;
10017                                }
10018                            }
10019                            ///////////////
10020                            // process y //
10021                            ///////////////
10022                            if (add_EM_F) {
10023                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10024                                if (y.actsExpanded()) {
10025                                    const double y_0 = y_p[0];
10026                                    const double y_1 = y_p[1];
10027                                    const double y_2 = y_p[2];
10028                                    const double y_3 = y_p[3];
10029                                    const double tmp0_0 = y_1 + y_2;
10030                                    const double tmp1_0 = y_0 + y_3;
10031                                    const double tmp7_1 = w34*y_1;
10032                                    const double tmp3_1 = w32*y_1;
10033                                    const double tmp8_1 = w32*y_3;
10034                                    const double tmp0_1 = w32*y_0;
10035                                    const double tmp2_1 = w34*y_3;
10036                                    const double tmp9_1 = w34*y_0;
10037                                    const double tmp6_1 = w32*y_2;
10038                                    const double tmp5_1 = w34*y_2;
10039                                    const double tmp1_1 = tmp0_0*w33;
10040                                    const double tmp4_1 = tmp1_0*w33;
10041                                    EM_F[0]+=tmp0_1 + tmp1_1 + tmp2_1;
10042                                    EM_F[1]+=tmp3_1 + tmp4_1 + tmp5_1;
10043                                    EM_F[2]+=tmp4_1 + tmp6_1 + tmp7_1;
10044                                    EM_F[3]+=tmp1_1 + tmp8_1 + tmp9_1;
10045                                } else { /* constant data */
10046                                    const double tmp0_1 = w35*y_p[0];
10047                                    EM_F[0]+=tmp0_1;
10048                                    EM_F[1]+=tmp0_1;
10049                                    EM_F[2]+=tmp0_1;
10050                                    EM_F[3]+=tmp0_1;
10051                                }
10052                            }
10053                            const index_t firstNode=m_N0*k1+k0;
10054                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10055                                    add_EM_F, firstNode);
10056                        } // k0 loop
10057                    } // k1 loop
10058                } // colouring
10059            } // face 4
10060    
10061            if (m_faceOffset[5] > -1) {
10062                for (index_t k1_0=0; k1_0<2; k1_0++) { // colouring
10063    #pragma omp for
10064                    for (index_t k1=k1_0; k1<m_NE1; k1+=2) {
10065                        for (index_t k0=0; k0<m_NE0; ++k0) {
10066                            vector<double> EM_S(8*8, 0);
10067                            vector<double> EM_F(8, 0);
10068                            const index_t e = m_faceOffset[5]+INDEX2(k0,k1,m_NE0);
10069                            ///////////////
10070                            // process d //
10071                            ///////////////
10072                            if (add_EM_S) {
10073                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10074                                if (d.actsExpanded()) {
10075                                    const double d_0 = d_p[0];
10076                                    const double d_1 = d_p[1];
10077                                    const double d_2 = d_p[2];
10078                                    const double d_3 = d_p[3];
10079                                    const double tmp2_0 = d_1 + d_3;
10080                                    const double tmp0_0 = d_0 + d_1 + d_2 + d_3;
10081                                    const double tmp1_0 = d_0 + d_2;
10082                                    const double tmp3_0 = d_0 + d_1;
10083                                    const double tmp6_0 = d_0 + d_3;
10084                                    const double tmp4_0 = d_2 + d_3;
10085                                    const double tmp5_0 = d_1 + d_2;
10086                                    const double tmp1_1 = tmp1_0*w25;
10087                                    const double tmp11_1 = d_0*w27;
10088                                    const double tmp9_1 = tmp5_0*w26;
10089                                    const double tmp12_1 = tmp2_0*w25;
10090                                    const double tmp3_1 = tmp3_0*w25;
10091                                    const double tmp6_1 = tmp3_0*w24;
10092                                    const double tmp2_1 = tmp2_0*w24;
10093                                    const double tmp10_1 = d_3*w28;
10094                                    const double tmp16_1 = tmp6_0*w26;
10095                                    const double tmp17_1 = d_1*w28;
10096                                    const double tmp7_1 = d_0*w28;
10097                                    const double tmp14_1 = d_2*w28;
10098                                    const double tmp18_1 = d_2*w27;
10099                                    const double tmp15_1 = d_1*w27;
10100                                    const double tmp0_1 = tmp0_0*w26;
10101                                    const double tmp4_1 = tmp4_0*w24;
10102                                    const double tmp5_1 = tmp4_0*w25;
10103                                    const double tmp8_1 = d_3*w27;
10104                                    const double tmp13_1 = tmp1_0*w24;
10105                                    EM_S[INDEX2(4,4,8)]+=tmp7_1 + tmp8_1 + tmp9_1;
10106                                    EM_S[INDEX2(5,4,8)]+=tmp3_1 + tmp4_1;
10107                                    EM_S[INDEX2(6,4,8)]+=tmp1_1 + tmp2_1;
10108                                    EM_S[INDEX2(7,4,8)]+=tmp0_1;
10109                                    EM_S[INDEX2(4,5,8)]+=tmp3_1 + tmp4_1;
10110                                    EM_S[INDEX2(5,5,8)]+=tmp16_1 + tmp17_1 + tmp18_1;
10111                                    EM_S[INDEX2(6,5,8)]+=tmp0_1;
10112                                    EM_S[INDEX2(7,5,8)]+=tmp12_1 + tmp13_1;
10113                                    EM_S[INDEX2(4,6,8)]+=tmp1_1 + tmp2_1;
10114                                    EM_S[INDEX2(5,6,8)]+=tmp0_1;
10115                                    EM_S[INDEX2(6,6,8)]+=tmp14_1 + tmp15_1 + tmp16_1;
10116                                    EM_S[INDEX2(7,6,8)]+=tmp5_1 + tmp6_1;
10117                                    EM_S[INDEX2(4,7,8)]+=tmp0_1;
10118                                    EM_S[INDEX2(5,7,8)]+=tmp12_1 + tmp13_1;
10119                                    EM_S[INDEX2(6,7,8)]+=tmp5_1 + tmp6_1;
10120                                    EM_S[INDEX2(7,7,8)]+=tmp10_1 + tmp11_1 + tmp9_1;
10121                                } else { /* constant data */
10122                                    const double tmp2_1 = d_p[0]*w31;
10123                                    const double tmp0_1 = d_p[0]*w30;
10124                                    const double tmp1_1 = d_p[0]*w29;
10125                                    EM_S[INDEX2(4,4,8)]+=tmp2_1;
10126                                    EM_S[INDEX2(5,4,8)]+=tmp1_1;
10127                                    EM_S[INDEX2(6,4,8)]+=tmp1_1;
10128                                    EM_S[INDEX2(7,4,8)]+=tmp0_1;
10129                                    EM_S[INDEX2(4,6,8)]+=tmp1_1;
10130                                    EM_S[INDEX2(5,6,8)]+=tmp0_1;
10131                                    EM_S[INDEX2(6,6,8)]+=tmp2_1;
10132                                    EM_S[INDEX2(7,6,8)]+=tmp1_1;
10133                                    EM_S[INDEX2(4,5,8)]+=tmp1_1;
10134                                    EM_S[INDEX2(5,5,8)]+=tmp2_1;
10135                                    EM_S[INDEX2(6,5,8)]+=tmp0_1;
10136                                    EM_S[INDEX2(7,5,8)]+=tmp1_1;
10137                                    EM_S[INDEX2(4,7,8)]+=tmp0_1;
10138                                    EM_S[INDEX2(5,7,8)]+=tmp1_1;
10139                                    EM_S[INDEX2(6,7,8)]+=tmp1_1;
10140                                    EM_S[INDEX2(7,7,8)]+=tmp2_1;
10141                                }
10142                            }
10143                            ///////////////
10144                            // process y //
10145                            ///////////////
10146                            if (add_EM_F) {
10147                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10148                                if (y.actsExpanded()) {
10149                                    const double y_0 = y_p[0];
10150                                    const double y_1 = y_p[1];
10151                                    const double y_2 = y_p[2];
10152                                    const double y_3 = y_p[3];
10153                                    const double tmp0_0 = y_1 + y_2;
10154                                    const double tmp1_0 = y_0 + y_3;
10155                                    const double tmp7_1 = w34*y_1;
10156                                    const double tmp3_1 = w32*y_1;
10157                                    const double tmp8_1 = w32*y_3;
10158                                    const double tmp0_1 = w32*y_0;
10159                                    const double tmp2_1 = w34*y_3;
10160                                    const double tmp9_1 = w34*y_0;
10161                                    const double tmp6_1 = w32*y_2;
10162                                    const double tmp5_1 = w34*y_2;
10163                                    const double tmp1_1 = tmp0_0*w33;
10164                                    const double tmp4_1 = tmp1_0*w33;
10165                                    EM_F[4]+=tmp0_1 + tmp1_1 + tmp2_1;
10166                                    EM_F[5]+=tmp3_1 + tmp4_1 + tmp5_1;
10167                                    EM_F[6]+=tmp4_1 + tmp6_1 + tmp7_1;
10168                                    EM_F[7]+=tmp1_1 + tmp8_1 + tmp9_1;
10169                                } else { /* constant data */
10170                                    const double tmp0_1 = w35*y_p[0];
10171                                    EM_F[4]+=tmp0_1;
10172                                    EM_F[5]+=tmp0_1;
10173                                    EM_F[6]+=tmp0_1;
10174                                    EM_F[7]+=tmp0_1;
10175                                }
10176                            }
10177                            const index_t firstNode=m_N0*m_N1*(m_N2-2)+m_N0*k1+k0;
10178                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10179                                    add_EM_F, firstNode);
10180                        } // k0 loop
10181                    } // k1 loop
10182                } // colouring
10183            } // face 5
10184        } // end of parallel region
10185  }  }
10186    
10187  //protected  //protected
10188  void Brick::assemblePDEBoundarySingleReduced(Paso_SystemMatrix* mat,  void Brick::assemblePDEBoundarySingleReduced(Paso_SystemMatrix* mat,
10189        escript::Data& rhs, const escript::Data& d, const escript::Data& y) const        escript::Data& rhs, const escript::Data& d, const escript::Data& y) const
10190  {  {
10191        const double h0 = m_l0/m_gNE0;
10192        const double h1 = m_l1/m_gNE1;
10193        const double h2 = m_l2/m_gNE2;
10194        const double w0 = 0.0625*h1*h2;
10195        const double w1 = 0.25*h1*h2;
10196        const double w2 = 0.0625*h0*h2;
10197        const double w3 = 0.25*h0*h2;
10198        const double w4 = 0.0625*h0*h1;
10199        const double w5 = 0.25*h0*h1;
10200        const bool add_EM_S=!d.isEmpty();
10201        const bool add_EM_F=!y.isEmpty();
10202        rhs.requireWrite();
10203    #pragma omp parallel
10204        {
10205            if (m_faceOffset[0] > -1) {
10206                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
10207    #pragma omp for
10208                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
10209                        for (index_t k1=0; k1<m_NE1; ++k1) {
10210                            vector<double> EM_S(8*8, 0);
10211                            vector<double> EM_F(8, 0);
10212                            const index_t e = INDEX2(k1,k2,m_NE1);
10213                            ///////////////
10214                            // process d //
10215                            ///////////////
10216                            if (add_EM_S) {
10217                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10218                                const double d_0 = d_p[0];
10219                                const double tmp0_1 = d_0*w0;
10220                                EM_S[INDEX2(0,0,8)]+=tmp0_1;
10221                                EM_S[INDEX2(2,0,8)]+=tmp0_1;
10222                                EM_S[INDEX2(4,0,8)]+=tmp0_1;
10223                                EM_S[INDEX2(6,0,8)]+=tmp0_1;
10224                                EM_S[INDEX2(0,2,8)]+=tmp0_1;
10225                                EM_S[INDEX2(2,2,8)]+=tmp0_1;
10226                                EM_S[INDEX2(4,2,8)]+=tmp0_1;
10227                                EM_S[INDEX2(6,2,8)]+=tmp0_1;
10228                                EM_S[INDEX2(0,4,8)]+=tmp0_1;
10229                                EM_S[INDEX2(2,4,8)]+=tmp0_1;
10230                                EM_S[INDEX2(4,4,8)]+=tmp0_1;
10231                                EM_S[INDEX2(6,4,8)]+=tmp0_1;
10232                                EM_S[INDEX2(0,6,8)]+=tmp0_1;
10233                                EM_S[INDEX2(2,6,8)]+=tmp0_1;
10234                                EM_S[INDEX2(4,6,8)]+=tmp0_1;
10235                                EM_S[INDEX2(6,6,8)]+=tmp0_1;
10236                            }
10237                            ///////////////
10238                            // process y //
10239                            ///////////////
10240                            if (add_EM_F) {
10241                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10242                                const double y_0 = y_p[0];
10243                                const double tmp0_1 = w1*y_0;
10244                                EM_F[0]+=tmp0_1;
10245                                EM_F[2]+=tmp0_1;
10246                                EM_F[4]+=tmp0_1;
10247                                EM_F[6]+=tmp0_1;
10248                            }
10249                            const index_t firstNode=m_N0*m_N1*k2+m_N0*k1;
10250                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10251                                    add_EM_F, firstNode);
10252                        } // k1 loop
10253                    } // k2 loop
10254                } // colouring
10255            } // face 0
10256    
10257            if (m_faceOffset[1] > -1) {
10258                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
10259    #pragma omp for
10260                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
10261                        for (index_t k1=0; k1<m_NE1; ++k1) {
10262                            vector<double> EM_S(8*8, 0);
10263                            vector<double> EM_F(8, 0);
10264                            const index_t e = m_faceOffset[1]+INDEX2(k1,k2,m_NE1);
10265                            ///////////////
10266                            // process d //
10267                            ///////////////
10268                            if (add_EM_S) {
10269                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10270                                const double d_0 = d_p[0];
10271                                const double tmp0_1 = d_0*w0;
10272                                EM_S[INDEX2(1,1,8)]+=tmp0_1;
10273                                EM_S[INDEX2(3,1,8)]+=tmp0_1;
10274                                EM_S[INDEX2(5,1,8)]+=tmp0_1;
10275                                EM_S[INDEX2(7,1,8)]+=tmp0_1;
10276                                EM_S[INDEX2(1,3,8)]+=tmp0_1;
10277                                EM_S[INDEX2(3,3,8)]+=tmp0_1;
10278                                EM_S[INDEX2(5,3,8)]+=tmp0_1;
10279                                EM_S[INDEX2(7,3,8)]+=tmp0_1;
10280                                EM_S[INDEX2(1,5,8)]+=tmp0_1;
10281                                EM_S[INDEX2(3,5,8)]+=tmp0_1;
10282                                EM_S[INDEX2(5,5,8)]+=tmp0_1;
10283                                EM_S[INDEX2(7,5,8)]+=tmp0_1;
10284                                EM_S[INDEX2(1,7,8)]+=tmp0_1;
10285                                EM_S[INDEX2(3,7,8)]+=tmp0_1;
10286                                EM_S[INDEX2(5,7,8)]+=tmp0_1;
10287                                EM_S[INDEX2(7,7,8)]+=tmp0_1;
10288                            }
10289                            ///////////////
10290                            // process y //
10291                            ///////////////
10292                            if (add_EM_F) {
10293                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10294                                const double y_0 = y_p[0];
10295                                const double tmp0_1 = w1*y_0;
10296                                EM_F[1]+=tmp0_1;
10297                                EM_F[3]+=tmp0_1;
10298                                EM_F[5]+=tmp0_1;
10299                                EM_F[7]+=tmp0_1;
10300                            }
10301                            const index_t firstNode=m_N0*m_N1*k2+m_N0*(k1+1)-2;
10302                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10303                                    add_EM_F, firstNode);
10304                        } // k1 loop
10305                    } // k2 loop
10306                } // colouring
10307            } // face 1
10308    
10309            if (m_faceOffset[2] > -1) {
10310                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
10311    #pragma omp for
10312                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
10313                        for (index_t k0=0; k0<m_NE0; ++k0) {
10314                            vector<double> EM_S(8*8, 0);
10315                            vector<double> EM_F(8, 0);
10316                            const index_t e = m_faceOffset[2]+INDEX2(k0,k2,m_NE0);
10317                            ///////////////
10318                            // process d //
10319                            ///////////////
10320                            if (add_EM_S) {
10321                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10322                                const double d_0 = d_p[0];
10323                                const double tmp0_1 = d_0*w2;
10324                                EM_S[INDEX2(0,0,8)]+=tmp0_1;
10325                                EM_S[INDEX2(1,0,8)]+=tmp0_1;
10326                                EM_S[INDEX2(4,0,8)]+=tmp0_1;
10327                                EM_S[INDEX2(5,0,8)]+=tmp0_1;
10328                                EM_S[INDEX2(0,1,8)]+=tmp0_1;
10329                                EM_S[INDEX2(1,1,8)]+=tmp0_1;
10330                                EM_S[INDEX2(4,1,8)]+=tmp0_1;
10331                                EM_S[INDEX2(5,1,8)]+=tmp0_1;
10332                                EM_S[INDEX2(0,4,8)]+=tmp0_1;
10333                                EM_S[INDEX2(1,4,8)]+=tmp0_1;
10334                                EM_S[INDEX2(4,4,8)]+=tmp0_1;
10335                                EM_S[INDEX2(5,4,8)]+=tmp0_1;
10336                                EM_S[INDEX2(0,5,8)]+=tmp0_1;
10337                                EM_S[INDEX2(1,5,8)]+=tmp0_1;
10338                                EM_S[INDEX2(4,5,8)]+=tmp0_1;
10339                                EM_S[INDEX2(5,5,8)]+=tmp0_1;
10340                            }
10341                            ///////////////
10342                            // process y //
10343                            ///////////////
10344                            if (add_EM_F) {
10345                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10346                                const double tmp0_1 = w3*y_p[0];
10347                                EM_F[0]+=tmp0_1;
10348                                EM_F[1]+=tmp0_1;
10349                                EM_F[4]+=tmp0_1;
10350                                EM_F[5]+=tmp0_1;
10351                            }
10352                            const index_t firstNode=m_N0*m_N1*k2+k0;
10353                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10354                                    add_EM_F, firstNode);
10355                        } // k0 loop
10356                    } // k2 loop
10357                } // colouring
10358            } // face 2
10359    
10360            if (m_faceOffset[3] > -1) {
10361                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
10362    #pragma omp for
10363                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
10364                        for (index_t k0=0; k0<m_NE0; ++k0) {
10365                            vector<double> EM_S(8*8, 0);
10366                            vector<double> EM_F(8, 0);
10367                            const index_t e = m_faceOffset[3]+INDEX2(k0,k2,m_NE0);
10368                            ///////////////
10369                            // process d //
10370                            ///////////////
10371                            if (add_EM_S) {
10372                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10373                                const double d_0 = d_p[0];
10374                                const double tmp0_1 = d_0*w2;
10375                                EM_S[INDEX2(2,2,8)]+=tmp0_1;
10376                                EM_S[INDEX2(3,2,8)]+=tmp0_1;
10377                                EM_S[INDEX2(6,2,8)]+=tmp0_1;
10378                                EM_S[INDEX2(7,2,8)]+=tmp0_1;
10379                                EM_S[INDEX2(2,3,8)]+=tmp0_1;
10380                                EM_S[INDEX2(3,3,8)]+=tmp0_1;
10381                                EM_S[INDEX2(6,3,8)]+=tmp0_1;
10382                                EM_S[INDEX2(7,3,8)]+=tmp0_1;
10383                                EM_S[INDEX2(2,6,8)]+=tmp0_1;
10384                                EM_S[INDEX2(3,6,8)]+=tmp0_1;
10385                                EM_S[INDEX2(6,6,8)]+=tmp0_1;
10386                                EM_S[INDEX2(7,6,8)]+=tmp0_1;
10387                                EM_S[INDEX2(2,7,8)]+=tmp0_1;
10388                                EM_S[INDEX2(3,7,8)]+=tmp0_1;
10389                                EM_S[INDEX2(6,7,8)]+=tmp0_1;
10390                                EM_S[INDEX2(7,7,8)]+=tmp0_1;
10391                            }
10392                            ///////////////
10393                            // process y //
10394                            ///////////////
10395                            if (add_EM_F) {
10396                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10397                                const double y_0 = y_p[0];
10398                                const double tmp0_1 = w3*y_0;
10399                                EM_F[2]+=tmp0_1;
10400                                EM_F[3]+=tmp0_1;
10401                                EM_F[6]+=tmp0_1;
10402                                EM_F[7]+=tmp0_1;
10403                            }
10404                            const index_t firstNode=m_N0*m_N1*k2+m_N0*(m_N1-2)+k0;
10405                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10406                                    add_EM_F, firstNode);
10407                        } // k0 loop
10408                    } // k2 loop
10409                } // colouring
10410            } // face 3
10411    
10412            if (m_faceOffset[4] > -1) {
10413                for (index_t k1_0=0; k1_0<2; k1_0++) { // colouring
10414    #pragma omp for
10415                    for (index_t k1=k1_0; k1<m_NE1; k1+=2) {
10416                        for (index_t k0=0; k0<m_NE0; ++k0) {
10417                            vector<double> EM_S(8*8, 0);
10418                            vector<double> EM_F(8, 0);
10419                            const index_t e = m_faceOffset[4]+INDEX2(k0,k1,m_NE0);
10420                            ///////////////
10421                            // process d //
10422                            ///////////////
10423                            if (add_EM_S) {
10424                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10425                                const double d_0 = d_p[0];
10426                                const double tmp0_1 = d_0*w4;
10427                                EM_S[INDEX2(0,0,8)]+=tmp0_1;
10428                                EM_S[INDEX2(1,0,8)]+=tmp0_1;
10429                                EM_S[INDEX2(2,0,8)]+=tmp0_1;
10430                                EM_S[INDEX2(3,0,8)]+=tmp0_1;
10431                                EM_S[INDEX2(0,1,8)]+=tmp0_1;
10432                                EM_S[INDEX2(1,1,8)]+=tmp0_1;
10433                                EM_S[INDEX2(2,1,8)]+=tmp0_1;
10434                                EM_S[INDEX2(3,1,8)]+=tmp0_1;
10435                                EM_S[INDEX2(0,2,8)]+=tmp0_1;
10436                                EM_S[INDEX2(1,2,8)]+=tmp0_1;
10437                                EM_S[INDEX2(2,2,8)]+=tmp0_1;
10438                                EM_S[INDEX2(3,2,8)]+=tmp0_1;
10439                                EM_S[INDEX2(0,3,8)]+=tmp0_1;
10440                                EM_S[INDEX2(1,3,8)]+=tmp0_1;
10441                                EM_S[INDEX2(2,3,8)]+=tmp0_1;
10442                                EM_S[INDEX2(3,3,8)]+=tmp0_1;
10443                            }
10444                            ///////////////
10445                            // process y //
10446                            ///////////////
10447                            if (add_EM_F) {
10448                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10449                                const double y_0 = y_p[0];
10450                                const double tmp0_1 = w5*y_0;
10451                                EM_F[0]+=tmp0_1;
10452                                EM_F[1]+=tmp0_1;
10453                                EM_F[2]+=tmp0_1;
10454                                EM_F[3]+=tmp0_1;
10455                            }
10456                            const index_t firstNode=m_N0*k1+k0;
10457                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10458                                    add_EM_F, firstNode);
10459                        } // k0 loop
10460                    } // k1 loop
10461                } // colouring
10462            } // face 4
10463    
10464            if (m_faceOffset[5] > -1) {
10465                for (index_t k1_0=0; k1_0<2; k1_0++) { // colouring
10466    #pragma omp for
10467                    for (index_t k1=k1_0; k1<m_NE1; k1+=2) {
10468                        for (index_t k0=0; k0<m_NE0; ++k0) {
10469                            vector<double> EM_S(8*8, 0);
10470                            vector<double> EM_F(8, 0);
10471                            const index_t e = m_faceOffset[5]+INDEX2(k0,k1,m_NE0);
10472                            ///////////////
10473                            // process d //
10474                            ///////////////
10475                            if (add_EM_S) {
10476                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10477                                const double d_0 = d_p[0];
10478                                const double tmp0_1 = d_0*w4;
10479                                EM_S[INDEX2(4,4,8)]+=tmp0_1;
10480                                EM_S[INDEX2(5,4,8)]+=tmp0_1;
10481                                EM_S[INDEX2(6,4,8)]+=tmp0_1;
10482                                EM_S[INDEX2(7,4,8)]+=tmp0_1;
10483                                EM_S[INDEX2(4,5,8)]+=tmp0_1;
10484                                EM_S[INDEX2(5,5,8)]+=tmp0_1;
10485                                EM_S[INDEX2(6,5,8)]+=tmp0_1;
10486                                EM_S[INDEX2(7,5,8)]+=tmp0_1;
10487                                EM_S[INDEX2(4,6,8)]+=tmp0_1;
10488                                EM_S[INDEX2(5,6,8)]+=tmp0_1;
10489                                EM_S[INDEX2(6,6,8)]+=tmp0_1;
10490                                EM_S[INDEX2(7,6,8)]+=tmp0_1;
10491                                EM_S[INDEX2(4,7,8)]+=tmp0_1;
10492                                EM_S[INDEX2(5,7,8)]+=tmp0_1;
10493                                EM_S[INDEX2(6,7,8)]+=tmp0_1;
10494                                EM_S[INDEX2(7,7,8)]+=tmp0_1;
10495                            }
10496                            ///////////////
10497                            // process y //
10498                            ///////////////
10499                            if (add_EM_F) {
10500                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10501                                const double y_0 = y_p[0];
10502                                const double tmp0_1 = w5*y_0;
10503                                EM_F[4]+=tmp0_1;
10504                                EM_F[5]+=tmp0_1;
10505                                EM_F[6]+=tmp0_1;
10506                                EM_F[7]+=tmp0_1;
10507                            }
10508                            const index_t firstNode=m_N0*m_N1*(m_N2-2)+m_N0*k1+k0;
10509                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10510                                    add_EM_F, firstNode);