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

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

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

revision 4368 by jfenwick, Thu Apr 18 02:26:35 2013 UTC revision 4375 by caltinay, Mon Apr 22 05:35:52 2013 UTC
# Line 1095  void Brick::assembleCoordinates(escript: Line 1095  void Brick::assembleCoordinates(escript:
1095  void Brick::assembleGradient(escript::Data& out, escript::Data& in) const  void Brick::assembleGradient(escript::Data& out, escript::Data& in) const
1096  {  {
1097      const dim_t numComp = in.getDataPointSize();      const dim_t numComp = in.getDataPointSize();
     const double h0 = m_length[0]/m_gNE[0];  
     const double h1 = m_length[1]/m_gNE[1];  
     const double h2 = m_length[2]/m_gNE[2];  
1098      const double C0 = .044658198738520451079;      const double C0 = .044658198738520451079;
1099      const double C1 = .16666666666666666667;      const double C1 = .16666666666666666667;
1100      const double C2 = .21132486540518711775;      const double C2 = .21132486540518711775;
# Line 1132  void Brick::assembleGradient(escript::Da Line 1129  void Brick::assembleGradient(escript::Da
1129                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1130                          double* o = out.getSampleDataRW(INDEX3(k0,k1,k2,m_NE[0],m_NE[1]));                          double* o = out.getSampleDataRW(INDEX3(k0,k1,k2,m_NE[0],m_NE[1]));
1131                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1132                              const double V0=((f_100[i]-f_000[i])*C5 + (f_111[i]-f_011[i])*C0 + (f_101[i]+f_110[i]-f_001[i]-f_010[i])*C1) / h0;                              const double V0=((f_100[i]-f_000[i])*C5 + (f_111[i]-f_011[i])*C0 + (f_101[i]+f_110[i]-f_001[i]-f_010[i])*C1) / m_dx[0];
1133                              const double V1=((f_110[i]-f_010[i])*C5 + (f_101[i]-f_001[i])*C0 + (f_100[i]+f_111[i]-f_000[i]-f_011[i])*C1) / h0;                              const double V1=((f_110[i]-f_010[i])*C5 + (f_101[i]-f_001[i])*C0 + (f_100[i]+f_111[i]-f_000[i]-f_011[i])*C1) / m_dx[0];
1134                              const double V2=((f_101[i]-f_001[i])*C5 + (f_110[i]-f_010[i])*C0 + (f_100[i]+f_111[i]-f_000[i]-f_011[i])*C1) / h0;                              const double V2=((f_101[i]-f_001[i])*C5 + (f_110[i]-f_010[i])*C0 + (f_100[i]+f_111[i]-f_000[i]-f_011[i])*C1) / m_dx[0];
1135                              const double V3=((f_111[i]-f_011[i])*C5 + (f_100[i]-f_000[i])*C0 + (f_101[i]+f_110[i]-f_001[i]-f_010[i])*C1) / h0;                              const double V3=((f_111[i]-f_011[i])*C5 + (f_100[i]-f_000[i])*C0 + (f_101[i]+f_110[i]-f_001[i]-f_010[i])*C1) / m_dx[0];
1136                              const double V4=((f_010[i]-f_000[i])*C5 + (f_111[i]-f_101[i])*C0 + (f_011[i]+f_110[i]-f_001[i]-f_100[i])*C1) / h1;                              const double V4=((f_010[i]-f_000[i])*C5 + (f_111[i]-f_101[i])*C0 + (f_011[i]+f_110[i]-f_001[i]-f_100[i])*C1) / m_dx[1];
1137                              const double V5=((f_110[i]-f_100[i])*C5 + (f_011[i]-f_001[i])*C0 + (f_010[i]+f_111[i]-f_000[i]-f_101[i])*C1) / h1;                              const double V5=((f_110[i]-f_100[i])*C5 + (f_011[i]-f_001[i])*C0 + (f_010[i]+f_111[i]-f_000[i]-f_101[i])*C1) / m_dx[1];
1138                              const double V6=((f_011[i]-f_001[i])*C5 + (f_110[i]-f_100[i])*C0 + (f_010[i]+f_111[i]-f_000[i]-f_101[i])*C1) / h1;                              const double V6=((f_011[i]-f_001[i])*C5 + (f_110[i]-f_100[i])*C0 + (f_010[i]+f_111[i]-f_000[i]-f_101[i])*C1) / m_dx[1];
1139                              const double V7=((f_111[i]-f_101[i])*C5 + (f_010[i]-f_000[i])*C0 + (f_011[i]+f_110[i]-f_001[i]-f_100[i])*C1) / h1;                              const double V7=((f_111[i]-f_101[i])*C5 + (f_010[i]-f_000[i])*C0 + (f_011[i]+f_110[i]-f_001[i]-f_100[i])*C1) / m_dx[1];
1140                              const double V8=((f_001[i]-f_000[i])*C5 + (f_111[i]-f_110[i])*C0 + (f_011[i]+f_101[i]-f_010[i]-f_100[i])*C1) / h2;                              const double V8=((f_001[i]-f_000[i])*C5 + (f_111[i]-f_110[i])*C0 + (f_011[i]+f_101[i]-f_010[i]-f_100[i])*C1) / m_dx[2];
1141                              const double V9=((f_101[i]-f_100[i])*C5 + (f_011[i]-f_010[i])*C0 + (f_001[i]+f_111[i]-f_000[i]-f_110[i])*C1) / h2;                              const double V9=((f_101[i]-f_100[i])*C5 + (f_011[i]-f_010[i])*C0 + (f_001[i]+f_111[i]-f_000[i]-f_110[i])*C1) / m_dx[2];
1142                              const double V10=((f_011[i]-f_010[i])*C5 + (f_101[i]-f_100[i])*C0 + (f_001[i]+f_111[i]-f_000[i]-f_110[i])*C1) / h2;                              const double V10=((f_011[i]-f_010[i])*C5 + (f_101[i]-f_100[i])*C0 + (f_001[i]+f_111[i]-f_000[i]-f_110[i])*C1) / m_dx[2];
1143                              const double V11=((f_111[i]-f_110[i])*C5 + (f_001[i]-f_000[i])*C0 + (f_011[i]+f_101[i]-f_010[i]-f_100[i])*C1) / h2;                              const double V11=((f_111[i]-f_110[i])*C5 + (f_001[i]-f_000[i])*C0 + (f_011[i]+f_101[i]-f_010[i]-f_100[i])*C1) / m_dx[2];
1144                              o[INDEX3(i,0,0,numComp,3)] = V0;                              o[INDEX3(i,0,0,numComp,3)] = V0;
1145                              o[INDEX3(i,1,0,numComp,3)] = V4;                              o[INDEX3(i,1,0,numComp,3)] = V4;
1146                              o[INDEX3(i,2,0,numComp,3)] = V8;                              o[INDEX3(i,2,0,numComp,3)] = V8;
# Line 1199  void Brick::assembleGradient(escript::Da Line 1196  void Brick::assembleGradient(escript::Da
1196                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1197                          double* o = out.getSampleDataRW(INDEX3(k0,k1,k2,m_NE[0],m_NE[1]));                          double* o = out.getSampleDataRW(INDEX3(k0,k1,k2,m_NE[0],m_NE[1]));
1198                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1199                              o[INDEX3(i,0,0,numComp,3)] = (f_100[i]+f_101[i]+f_110[i]+f_111[i]-f_000[i]-f_001[i]-f_010[i]-f_011[i])*C3 / h0;                              o[INDEX3(i,0,0,numComp,3)] = (f_100[i]+f_101[i]+f_110[i]+f_111[i]-f_000[i]-f_001[i]-f_010[i]-f_011[i])*C3 / m_dx[0];
1200                              o[INDEX3(i,1,0,numComp,3)] = (f_010[i]+f_011[i]+f_110[i]+f_111[i]-f_000[i]-f_001[i]-f_100[i]-f_101[i])*C3 / h1;                              o[INDEX3(i,1,0,numComp,3)] = (f_010[i]+f_011[i]+f_110[i]+f_111[i]-f_000[i]-f_001[i]-f_100[i]-f_101[i])*C3 / m_dx[1];
1201                              o[INDEX3(i,2,0,numComp,3)] = (f_001[i]+f_011[i]+f_101[i]+f_111[i]-f_000[i]-f_010[i]-f_100[i]-f_110[i])*C3 / h2;                              o[INDEX3(i,2,0,numComp,3)] = (f_001[i]+f_011[i]+f_101[i]+f_111[i]-f_000[i]-f_010[i]-f_100[i]-f_110[i])*C3 / m_dx[2];
1202                          } // end of component loop i                          } // end of component loop i
1203                      } // end of k0 loop                      } // end of k0 loop
1204                  } // end of k1 loop                  } // end of k1 loop
# Line 1233  void Brick::assembleGradient(escript::Da Line 1230  void Brick::assembleGradient(escript::Da
1230                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1231                          double* o = out.getSampleDataRW(m_faceOffset[0]+INDEX2(k1,k2,m_NE[1]));                          double* o = out.getSampleDataRW(m_faceOffset[0]+INDEX2(k1,k2,m_NE[1]));
1232                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1233                              const double V0=((f_010[i]-f_000[i])*C6 + (f_011[i]-f_001[i])*C2) / h1;                              const double V0=((f_010[i]-f_000[i])*C6 + (f_011[i]-f_001[i])*C2) / m_dx[1];
1234                              const double V1=((f_010[i]-f_000[i])*C2 + (f_011[i]-f_001[i])*C6) / h1;                              const double V1=((f_010[i]-f_000[i])*C2 + (f_011[i]-f_001[i])*C6) / m_dx[1];
1235                              const double V2=((f_001[i]-f_000[i])*C6 + (f_010[i]-f_011[i])*C2) / h2;                              const double V2=((f_001[i]-f_000[i])*C6 + (f_010[i]-f_011[i])*C2) / m_dx[2];
1236                              const double V3=((f_001[i]-f_000[i])*C2 + (f_011[i]-f_010[i])*C6) / h2;                              const double V3=((f_001[i]-f_000[i])*C2 + (f_011[i]-f_010[i])*C6) / m_dx[2];
1237                              o[INDEX3(i,0,0,numComp,3)] = ((f_100[i]-f_000[i])*C5 + (f_111[i]-f_011[i])*C0 + (f_101[i]+f_110[i]-f_001[i]-f_010[i])*C1) / h0;                              o[INDEX3(i,0,0,numComp,3)] = ((f_100[i]-f_000[i])*C5 + (f_111[i]-f_011[i])*C0 + (f_101[i]+f_110[i]-f_001[i]-f_010[i])*C1) / m_dx[0];
1238                              o[INDEX3(i,1,0,numComp,3)] = V0;                              o[INDEX3(i,1,0,numComp,3)] = V0;
1239                              o[INDEX3(i,2,0,numComp,3)] = V2;                              o[INDEX3(i,2,0,numComp,3)] = V2;
1240                              o[INDEX3(i,0,1,numComp,3)] = ((f_110[i]-f_010[i])*C5 + (f_101[i]-f_001[i])*C0 + (f_100[i]+f_111[i]-f_000[i]-f_011[i])*C1) / h0;                              o[INDEX3(i,0,1,numComp,3)] = ((f_110[i]-f_010[i])*C5 + (f_101[i]-f_001[i])*C0 + (f_100[i]+f_111[i]-f_000[i]-f_011[i])*C1) / m_dx[0];
1241                              o[INDEX3(i,1,1,numComp,3)] = V0;                              o[INDEX3(i,1,1,numComp,3)] = V0;
1242                              o[INDEX3(i,2,1,numComp,3)] = V3;                              o[INDEX3(i,2,1,numComp,3)] = V3;
1243                              o[INDEX3(i,0,2,numComp,3)] = ((f_101[i]-f_001[i])*C5 + (f_110[i]-f_010[i])*C0 + (f_100[i]+f_111[i]-f_000[i]-f_011[i])*C1) / h0;                              o[INDEX3(i,0,2,numComp,3)] = ((f_101[i]-f_001[i])*C5 + (f_110[i]-f_010[i])*C0 + (f_100[i]+f_111[i]-f_000[i]-f_011[i])*C1) / m_dx[0];
1244                              o[INDEX3(i,1,2,numComp,3)] = V1;                              o[INDEX3(i,1,2,numComp,3)] = V1;
1245                              o[INDEX3(i,2,2,numComp,3)] = V2;                              o[INDEX3(i,2,2,numComp,3)] = V2;
1246                              o[INDEX3(i,0,3,numComp,3)] = ((f_111[i]-f_011[i])*C5 + (f_100[i]-f_000[i])*C0 + (f_101[i]+f_110[i]-f_001[i]-f_010[i])*C1) / h0;                              o[INDEX3(i,0,3,numComp,3)] = ((f_111[i]-f_011[i])*C5 + (f_100[i]-f_000[i])*C0 + (f_101[i]+f_110[i]-f_001[i]-f_010[i])*C1) / m_dx[0];
1247                              o[INDEX3(i,1,3,numComp,3)] = V1;                              o[INDEX3(i,1,3,numComp,3)] = V1;
1248                              o[INDEX3(i,2,3,numComp,3)] = V3;                              o[INDEX3(i,2,3,numComp,3)] = V3;
1249                          } // end of component loop i                          } // end of component loop i
# Line 1267  void Brick::assembleGradient(escript::Da Line 1264  void Brick::assembleGradient(escript::Da
1264                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(m_NN[0]-1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(m_NN[0]-1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1265                          double* o = out.getSampleDataRW(m_faceOffset[1]+INDEX2(k1,k2,m_NE[1]));                          double* o = out.getSampleDataRW(m_faceOffset[1]+INDEX2(k1,k2,m_NE[1]));
1266                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1267                              const double V0=((f_110[i]-f_100[i])*C6 + (f_111[i]-f_101[i])*C2) / h1;                              const double V0=((f_110[i]-f_100[i])*C6 + (f_111[i]-f_101[i])*C2) / m_dx[1];
1268                              const double V1=((f_110[i]-f_100[i])*C2 + (f_111[i]-f_101[i])*C6) / h1;                              const double V1=((f_110[i]-f_100[i])*C2 + (f_111[i]-f_101[i])*C6) / m_dx[1];
1269                              const double V2=((f_101[i]-f_100[i])*C6 + (f_111[i]-f_110[i])*C2) / h2;                              const double V2=((f_101[i]-f_100[i])*C6 + (f_111[i]-f_110[i])*C2) / m_dx[2];
1270                              const double V3=((f_101[i]-f_100[i])*C2 + (f_111[i]-f_110[i])*C6) / h2;                              const double V3=((f_101[i]-f_100[i])*C2 + (f_111[i]-f_110[i])*C6) / m_dx[2];
1271                              o[INDEX3(i,0,0,numComp,3)] = ((f_100[i]-f_000[i])*C5 + (f_111[i]-f_011[i])*C0 + (f_101[i]+f_110[i]-f_001[i]-f_010[i])*C1) / h0;                              o[INDEX3(i,0,0,numComp,3)] = ((f_100[i]-f_000[i])*C5 + (f_111[i]-f_011[i])*C0 + (f_101[i]+f_110[i]-f_001[i]-f_010[i])*C1) / m_dx[0];
1272                              o[INDEX3(i,1,0,numComp,3)] = V0;                              o[INDEX3(i,1,0,numComp,3)] = V0;
1273                              o[INDEX3(i,2,0,numComp,3)] = V2;                              o[INDEX3(i,2,0,numComp,3)] = V2;
1274                              o[INDEX3(i,0,1,numComp,3)] = ((f_110[i]-f_010[i])*C5 + (f_101[i]-f_001[i])*C0 + (f_100[i]+f_111[i]-f_000[i]-f_011[i])*C1) / h0;                              o[INDEX3(i,0,1,numComp,3)] = ((f_110[i]-f_010[i])*C5 + (f_101[i]-f_001[i])*C0 + (f_100[i]+f_111[i]-f_000[i]-f_011[i])*C1) / m_dx[0];
1275                              o[INDEX3(i,1,1,numComp,3)] = V0;                              o[INDEX3(i,1,1,numComp,3)] = V0;
1276                              o[INDEX3(i,2,1,numComp,3)] = V3;                              o[INDEX3(i,2,1,numComp,3)] = V3;
1277                              o[INDEX3(i,0,2,numComp,3)] = ((f_101[i]-f_001[i])*C5 + (f_110[i]-f_010[i])*C0 + (f_100[i]+f_111[i]-f_000[i]-f_011[i])*C1) / h0;                              o[INDEX3(i,0,2,numComp,3)] = ((f_101[i]-f_001[i])*C5 + (f_110[i]-f_010[i])*C0 + (f_100[i]+f_111[i]-f_000[i]-f_011[i])*C1) / m_dx[0];
1278                              o[INDEX3(i,1,2,numComp,3)] = V1;                              o[INDEX3(i,1,2,numComp,3)] = V1;
1279                              o[INDEX3(i,2,2,numComp,3)] = V2;                              o[INDEX3(i,2,2,numComp,3)] = V2;
1280                              o[INDEX3(i,0,3,numComp,3)] = ((f_111[i]-f_011[i])*C5 + (f_100[i]-f_000[i])*C0 + (f_101[i]+f_110[i]-f_001[i]-f_010[i])*C1) / h0;                              o[INDEX3(i,0,3,numComp,3)] = ((f_111[i]-f_011[i])*C5 + (f_100[i]-f_000[i])*C0 + (f_101[i]+f_110[i]-f_001[i]-f_010[i])*C1) / m_dx[0];
1281                              o[INDEX3(i,1,3,numComp,3)] = V1;                              o[INDEX3(i,1,3,numComp,3)] = V1;
1282                              o[INDEX3(i,2,3,numComp,3)] = V3;                              o[INDEX3(i,2,3,numComp,3)] = V3;
1283                          } // end of component loop i                          } // end of component loop i
# Line 1301  void Brick::assembleGradient(escript::Da Line 1298  void Brick::assembleGradient(escript::Da
1298                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1299                          double* o = out.getSampleDataRW(m_faceOffset[2]+INDEX2(k0,k2,m_NE[0]));                          double* o = out.getSampleDataRW(m_faceOffset[2]+INDEX2(k0,k2,m_NE[0]));
1300                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1301                              const double V0=((f_100[i]-f_000[i])*C6 + (f_101[i]-f_001[i])*C2) / h0;                              const double V0=((f_100[i]-f_000[i])*C6 + (f_101[i]-f_001[i])*C2) / m_dx[0];
1302                              const double V1=((f_001[i]-f_000[i])*C6 + (f_101[i]-f_100[i])*C2) / h2;                              const double V1=((f_001[i]-f_000[i])*C6 + (f_101[i]-f_100[i])*C2) / m_dx[2];
1303                              const double V2=((f_001[i]-f_000[i])*C2 + (f_101[i]-f_100[i])*C6) / h2;                              const double V2=((f_001[i]-f_000[i])*C2 + (f_101[i]-f_100[i])*C6) / m_dx[2];
1304                              o[INDEX3(i,0,0,numComp,3)] = V0;                              o[INDEX3(i,0,0,numComp,3)] = V0;
1305                              o[INDEX3(i,1,0,numComp,3)] = ((f_010[i]-f_000[i])*C5 + (f_111[i]-f_101[i])*C0 + (f_011[i]+f_110[i]-f_001[i]-f_100[i])*C1) / h1;                              o[INDEX3(i,1,0,numComp,3)] = ((f_010[i]-f_000[i])*C5 + (f_111[i]-f_101[i])*C0 + (f_011[i]+f_110[i]-f_001[i]-f_100[i])*C1) / m_dx[1];
1306                              o[INDEX3(i,2,0,numComp,3)] = V1;                              o[INDEX3(i,2,0,numComp,3)] = V1;
1307                              o[INDEX3(i,0,1,numComp,3)] = V0;                              o[INDEX3(i,0,1,numComp,3)] = V0;
1308                              o[INDEX3(i,1,1,numComp,3)] = ((f_110[i]-f_100[i])*C5 + (f_011[i]-f_001[i])*C0 + (f_010[i]+f_111[i]-f_000[i]-f_101[i])*C1) / h1;                              o[INDEX3(i,1,1,numComp,3)] = ((f_110[i]-f_100[i])*C5 + (f_011[i]-f_001[i])*C0 + (f_010[i]+f_111[i]-f_000[i]-f_101[i])*C1) / m_dx[1];
1309                              o[INDEX3(i,2,1,numComp,3)] = V2;                              o[INDEX3(i,2,1,numComp,3)] = V2;
1310                              o[INDEX3(i,0,2,numComp,3)] = V0;                              o[INDEX3(i,0,2,numComp,3)] = V0;
1311                              o[INDEX3(i,1,2,numComp,3)] = ((f_011[i]-f_001[i])*C5 + (f_110[i]-f_100[i])*C0 + (f_010[i]+f_111[i]-f_000[i]-f_101[i])*C1) / h1;                              o[INDEX3(i,1,2,numComp,3)] = ((f_011[i]-f_001[i])*C5 + (f_110[i]-f_100[i])*C0 + (f_010[i]+f_111[i]-f_000[i]-f_101[i])*C1) / m_dx[1];
1312                              o[INDEX3(i,2,2,numComp,3)] = V1;                              o[INDEX3(i,2,2,numComp,3)] = V1;
1313                              o[INDEX3(i,0,3,numComp,3)] = V0;                              o[INDEX3(i,0,3,numComp,3)] = V0;
1314                              o[INDEX3(i,1,3,numComp,3)] = ((f_111[i]-f_101[i])*C5 + (f_010[i]-f_000[i])*C0 + (f_011[i]+f_110[i]-f_001[i]-f_100[i])*C1) / h1;                              o[INDEX3(i,1,3,numComp,3)] = ((f_111[i]-f_101[i])*C5 + (f_010[i]-f_000[i])*C0 + (f_011[i]+f_110[i]-f_001[i]-f_100[i])*C1) / m_dx[1];
1315                              o[INDEX3(i,2,3,numComp,3)] = V2;                              o[INDEX3(i,2,3,numComp,3)] = V2;
1316                          } // end of component loop i                          } // end of component loop i
1317                      } // end of k0 loop                      } // end of k0 loop
# Line 1334  void Brick::assembleGradient(escript::Da Line 1331  void Brick::assembleGradient(escript::Da
1331                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,m_NN[1]-1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,m_NN[1]-1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1332                          double* o = out.getSampleDataRW(m_faceOffset[3]+INDEX2(k0,k2,m_NE[0]));                          double* o = out.getSampleDataRW(m_faceOffset[3]+INDEX2(k0,k2,m_NE[0]));
1333                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1334                              const double V0=((f_110[i]-f_010[i])*C6 + (f_111[i]-f_011[i])*C2) / h0;                              const double V0=((f_110[i]-f_010[i])*C6 + (f_111[i]-f_011[i])*C2) / m_dx[0];
1335                              const double V1=((f_110[i]-f_010[i])*C2 + (f_111[i]-f_011[i])*C6) / h0;                              const double V1=((f_110[i]-f_010[i])*C2 + (f_111[i]-f_011[i])*C6) / m_dx[0];
1336                              const double V2=((f_011[i]-f_010[i])*C6 + (f_111[i]-f_110[i])*C2) / h2;                              const double V2=((f_011[i]-f_010[i])*C6 + (f_111[i]-f_110[i])*C2) / m_dx[2];
1337                              const double V3=((f_011[i]-f_010[i])*C2 + (f_111[i]-f_110[i])*C6) / h2;                              const double V3=((f_011[i]-f_010[i])*C2 + (f_111[i]-f_110[i])*C6) / m_dx[2];
1338                              o[INDEX3(i,0,0,numComp,3)] = V0;                              o[INDEX3(i,0,0,numComp,3)] = V0;
1339                              o[INDEX3(i,1,0,numComp,3)] = ((f_010[i]-f_000[i])*C5 + (f_111[i]-f_101[i])*C0 + (f_011[i]+f_110[i]-f_001[i]-f_100[i])*C1) / h1;                              o[INDEX3(i,1,0,numComp,3)] = ((f_010[i]-f_000[i])*C5 + (f_111[i]-f_101[i])*C0 + (f_011[i]+f_110[i]-f_001[i]-f_100[i])*C1) / m_dx[1];
1340                              o[INDEX3(i,2,0,numComp,3)] = V2;                              o[INDEX3(i,2,0,numComp,3)] = V2;
1341                              o[INDEX3(i,0,1,numComp,3)] = V0;                              o[INDEX3(i,0,1,numComp,3)] = V0;
1342                              o[INDEX3(i,1,1,numComp,3)] = ((f_110[i]-f_100[i])*C5 + (f_011[i]-f_001[i])*C0 + (f_010[i]+f_111[i]-f_000[i]-f_101[i])*C1) / h1;                              o[INDEX3(i,1,1,numComp,3)] = ((f_110[i]-f_100[i])*C5 + (f_011[i]-f_001[i])*C0 + (f_010[i]+f_111[i]-f_000[i]-f_101[i])*C1) / m_dx[1];
1343                              o[INDEX3(i,2,1,numComp,3)] = V3;                              o[INDEX3(i,2,1,numComp,3)] = V3;
1344                              o[INDEX3(i,0,2,numComp,3)] = V1;                              o[INDEX3(i,0,2,numComp,3)] = V1;
1345                              o[INDEX3(i,1,2,numComp,3)] = ((f_011[i]-f_001[i])*C5 + (f_110[i]-f_100[i])*C0 + (f_010[i]+f_111[i]-f_000[i]-f_101[i])*C1) / h1;                              o[INDEX3(i,1,2,numComp,3)] = ((f_011[i]-f_001[i])*C5 + (f_110[i]-f_100[i])*C0 + (f_010[i]+f_111[i]-f_000[i]-f_101[i])*C1) / m_dx[1];
1346                              o[INDEX3(i,2,2,numComp,3)] = V2;                              o[INDEX3(i,2,2,numComp,3)] = V2;
1347                              o[INDEX3(i,0,3,numComp,3)] = V1;                              o[INDEX3(i,0,3,numComp,3)] = V1;
1348                              o[INDEX3(i,1,3,numComp,3)] = ((f_111[i]-f_101[i])*C5 + (f_010[i]-f_000[i])*C0 + (f_011[i]+f_110[i]-f_001[i]-f_100[i])*C1) / h1;                              o[INDEX3(i,1,3,numComp,3)] = ((f_111[i]-f_101[i])*C5 + (f_010[i]-f_000[i])*C0 + (f_011[i]+f_110[i]-f_001[i]-f_100[i])*C1) / m_dx[1];
1349                              o[INDEX3(i,2,3,numComp,3)] = V3;                              o[INDEX3(i,2,3,numComp,3)] = V3;
1350                          } // end of component loop i                          } // end of component loop i
1351                      } // end of k0 loop                      } // end of k0 loop
# Line 1368  void Brick::assembleGradient(escript::Da Line 1365  void Brick::assembleGradient(escript::Da
1365                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1366                          double* o = out.getSampleDataRW(m_faceOffset[4]+INDEX2(k0,k1,m_NE[0]));                          double* o = out.getSampleDataRW(m_faceOffset[4]+INDEX2(k0,k1,m_NE[0]));
1367                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1368                              const double V0=((f_100[i]-f_000[i])*C6 + (f_110[i]-f_010[i])*C2) / h0;                              const double V0=((f_100[i]-f_000[i])*C6 + (f_110[i]-f_010[i])*C2) / m_dx[0];
1369                              const double V1=((f_100[i]-f_000[i])*C2 + (f_110[i]-f_010[i])*C6) / h0;                              const double V1=((f_100[i]-f_000[i])*C2 + (f_110[i]-f_010[i])*C6) / m_dx[0];
1370                              const double V2=((f_010[i]-f_000[i])*C6 + (f_110[i]-f_100[i])*C2) / h1;                              const double V2=((f_010[i]-f_000[i])*C6 + (f_110[i]-f_100[i])*C2) / m_dx[1];
1371                              const double V3=((f_010[i]-f_000[i])*C2 + (f_110[i]-f_100[i])*C6) / h1;                              const double V3=((f_010[i]-f_000[i])*C2 + (f_110[i]-f_100[i])*C6) / m_dx[1];
1372                              o[INDEX3(i,0,0,numComp,3)] = V0;                              o[INDEX3(i,0,0,numComp,3)] = V0;
1373                              o[INDEX3(i,1,0,numComp,3)] = V2;                              o[INDEX3(i,1,0,numComp,3)] = V2;
1374                              o[INDEX3(i,2,0,numComp,3)] = ((f_001[i]-f_000[i])*C5 + (f_111[i]-f_110[i])*C0 + (f_011[i]+f_101[i]-f_010[i]-f_100[i])*C1) / h2;                              o[INDEX3(i,2,0,numComp,3)] = ((f_001[i]-f_000[i])*C5 + (f_111[i]-f_110[i])*C0 + (f_011[i]+f_101[i]-f_010[i]-f_100[i])*C1) / m_dx[2];
1375                              o[INDEX3(i,0,1,numComp,3)] = V0;                              o[INDEX3(i,0,1,numComp,3)] = V0;
1376                              o[INDEX3(i,1,1,numComp,3)] = V3;                              o[INDEX3(i,1,1,numComp,3)] = V3;
1377                              o[INDEX3(i,2,1,numComp,3)] = ((f_101[i]-f_100[i])*C5 + (f_011[i]-f_010[i])*C0 + (f_001[i]+f_111[i]-f_000[i]-f_110[i])*C1) / h2;                              o[INDEX3(i,2,1,numComp,3)] = ((f_101[i]-f_100[i])*C5 + (f_011[i]-f_010[i])*C0 + (f_001[i]+f_111[i]-f_000[i]-f_110[i])*C1) / m_dx[2];
1378                              o[INDEX3(i,0,2,numComp,3)] = V1;                              o[INDEX3(i,0,2,numComp,3)] = V1;
1379                              o[INDEX3(i,1,2,numComp,3)] = V2;                              o[INDEX3(i,1,2,numComp,3)] = V2;
1380                              o[INDEX3(i,2,2,numComp,3)] = ((f_011[i]-f_010[i])*C5 + (f_101[i]-f_100[i])*C0 + (f_001[i]+f_111[i]-f_000[i]-f_110[i])*C1) / h2;                              o[INDEX3(i,2,2,numComp,3)] = ((f_011[i]-f_010[i])*C5 + (f_101[i]-f_100[i])*C0 + (f_001[i]+f_111[i]-f_000[i]-f_110[i])*C1) / m_dx[2];
1381                              o[INDEX3(i,0,3,numComp,3)] = V1;                              o[INDEX3(i,0,3,numComp,3)] = V1;
1382                              o[INDEX3(i,1,3,numComp,3)] = V3;                              o[INDEX3(i,1,3,numComp,3)] = V3;
1383                              o[INDEX3(i,2,3,numComp,3)] = ((f_111[i]-f_110[i])*C5 + (f_001[i]-f_000[i])*C0 + (f_011[i]+f_101[i]-f_010[i]-f_100[i])*C1) / h2;                              o[INDEX3(i,2,3,numComp,3)] = ((f_111[i]-f_110[i])*C5 + (f_001[i]-f_000[i])*C0 + (f_011[i]+f_101[i]-f_010[i]-f_100[i])*C1) / m_dx[2];
1384                          } // end of component loop i                          } // end of component loop i
1385                      } // end of k0 loop                      } // end of k0 loop
1386                  } // end of k1 loop                  } // end of k1 loop
# Line 1402  void Brick::assembleGradient(escript::Da Line 1399  void Brick::assembleGradient(escript::Da
1399                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,m_NN[2]-1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,m_NN[2]-1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1400                          double* o = out.getSampleDataRW(m_faceOffset[5]+INDEX2(k0,k1,m_NE[0]));                          double* o = out.getSampleDataRW(m_faceOffset[5]+INDEX2(k0,k1,m_NE[0]));
1401                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1402                              const double V0=((f_101[i]-f_001[i])*C6 + (f_111[i]-f_011[i])*C2) / h0;                              const double V0=((f_101[i]-f_001[i])*C6 + (f_111[i]-f_011[i])*C2) / m_dx[0];
1403                              const double V1=((f_101[i]-f_001[i])*C2 + (f_111[i]-f_011[i])*C6) / h0;                              const double V1=((f_101[i]-f_001[i])*C2 + (f_111[i]-f_011[i])*C6) / m_dx[0];
1404                              const double V2=((f_011[i]-f_001[i])*C6 + (f_111[i]-f_101[i])*C2) / h1;                              const double V2=((f_011[i]-f_001[i])*C6 + (f_111[i]-f_101[i])*C2) / m_dx[1];
1405                              const double V3=((f_011[i]-f_001[i])*C2 + (f_111[i]-f_101[i])*C6) / h1;                              const double V3=((f_011[i]-f_001[i])*C2 + (f_111[i]-f_101[i])*C6) / m_dx[1];
1406                              o[INDEX3(i,0,0,numComp,3)] = V0;                              o[INDEX3(i,0,0,numComp,3)] = V0;
1407                              o[INDEX3(i,1,0,numComp,3)] = V2;                              o[INDEX3(i,1,0,numComp,3)] = V2;
1408                              o[INDEX3(i,2,0,numComp,3)] = ((f_001[i]-f_000[i])*C5 + (f_111[i]-f_110[i])*C0 + (f_011[i]+f_101[i]-f_010[i]-f_100[i])*C1) / h2;                              o[INDEX3(i,2,0,numComp,3)] = ((f_001[i]-f_000[i])*C5 + (f_111[i]-f_110[i])*C0 + (f_011[i]+f_101[i]-f_010[i]-f_100[i])*C1) / m_dx[2];
1409                              o[INDEX3(i,0,1,numComp,3)] = V0;                              o[INDEX3(i,0,1,numComp,3)] = V0;
1410                              o[INDEX3(i,1,1,numComp,3)] = V3;                              o[INDEX3(i,1,1,numComp,3)] = V3;
1411                              o[INDEX3(i,2,1,numComp,3)] = ((f_011[i]-f_010[i])*C0 + (f_101[i]-f_100[i])*C5 + (f_001[i]+f_111[i]-f_000[i]-f_110[i])*C1) / h2;                              o[INDEX3(i,2,1,numComp,3)] = ((f_011[i]-f_010[i])*C0 + (f_101[i]-f_100[i])*C5 + (f_001[i]+f_111[i]-f_000[i]-f_110[i])*C1) / m_dx[2];
1412                              o[INDEX3(i,0,2,numComp,3)] = V1;                              o[INDEX3(i,0,2,numComp,3)] = V1;
1413                              o[INDEX3(i,1,2,numComp,3)] = V2;                              o[INDEX3(i,1,2,numComp,3)] = V2;
1414                              o[INDEX3(i,2,2,numComp,3)] = ((f_011[i]-f_010[i])*C5 + (f_101[i]-f_100[i])*C0 + (f_001[i]+f_111[i]-f_000[i]-f_110[i])*C1) / h2;                              o[INDEX3(i,2,2,numComp,3)] = ((f_011[i]-f_010[i])*C5 + (f_101[i]-f_100[i])*C0 + (f_001[i]+f_111[i]-f_000[i]-f_110[i])*C1) / m_dx[2];
1415                              o[INDEX3(i,0,3,numComp,3)] = V1;                              o[INDEX3(i,0,3,numComp,3)] = V1;
1416                              o[INDEX3(i,1,3,numComp,3)] = V3;                              o[INDEX3(i,1,3,numComp,3)] = V3;
1417                              o[INDEX3(i,2,3,numComp,3)] = ((f_001[i]-f_000[i])*C0 + (f_111[i]-f_110[i])*C5 + (f_011[i]+f_101[i]-f_010[i]-f_100[i])*C1) / h2;                              o[INDEX3(i,2,3,numComp,3)] = ((f_001[i]-f_000[i])*C0 + (f_111[i]-f_110[i])*C5 + (f_011[i]+f_101[i]-f_010[i]-f_100[i])*C1) / m_dx[2];
1418                          } // end of component loop i                          } // end of component loop i
1419                      } // end of k0 loop                      } // end of k0 loop
1420                  } // end of k1 loop                  } // end of k1 loop
# Line 1449  void Brick::assembleGradient(escript::Da Line 1446  void Brick::assembleGradient(escript::Da
1446                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1447                          double* o = out.getSampleDataRW(m_faceOffset[0]+INDEX2(k1,k2,m_NE[1]));                          double* o = out.getSampleDataRW(m_faceOffset[0]+INDEX2(k1,k2,m_NE[1]));
1448                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1449                              o[INDEX3(i,0,0,numComp,3)] = (f_100[i]+f_101[i]+f_110[i]+f_111[i]-f_000[i]-f_001[i]-f_010[i]-f_011[i])*C3 / h0;                              o[INDEX3(i,0,0,numComp,3)] = (f_100[i]+f_101[i]+f_110[i]+f_111[i]-f_000[i]-f_001[i]-f_010[i]-f_011[i])*C3 / m_dx[0];
1450                              o[INDEX3(i,1,0,numComp,3)] = (f_010[i]+f_011[i]-f_000[i]-f_001[i])*C4 / h1;                              o[INDEX3(i,1,0,numComp,3)] = (f_010[i]+f_011[i]-f_000[i]-f_001[i])*C4 / m_dx[1];
1451                              o[INDEX3(i,2,0,numComp,3)] = (f_001[i]+f_011[i]-f_000[i]-f_010[i])*C4 / h2;                              o[INDEX3(i,2,0,numComp,3)] = (f_001[i]+f_011[i]-f_000[i]-f_010[i])*C4 / m_dx[2];
1452                          } // end of component loop i                          } // end of component loop i
1453                      } // end of k1 loop                      } // end of k1 loop
1454                  } // end of k2 loop                  } // end of k2 loop
# Line 1470  void Brick::assembleGradient(escript::Da Line 1467  void Brick::assembleGradient(escript::Da
1467                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(m_NN[0]-1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(m_NN[0]-1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1468                          double* o = out.getSampleDataRW(m_faceOffset[1]+INDEX2(k1,k2,m_NE[1]));                          double* o = out.getSampleDataRW(m_faceOffset[1]+INDEX2(k1,k2,m_NE[1]));
1469                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1470                              o[INDEX3(i,0,0,numComp,3)] = (f_100[i]+f_101[i]+f_110[i]+f_111[i]-f_000[i]-f_001[i]-f_010[i]-f_011[i])*C3 / h0;                              o[INDEX3(i,0,0,numComp,3)] = (f_100[i]+f_101[i]+f_110[i]+f_111[i]-f_000[i]-f_001[i]-f_010[i]-f_011[i])*C3 / m_dx[0];
1471                              o[INDEX3(i,1,0,numComp,3)] = (f_110[i]+f_111[i]-f_100[i]-f_101[i])*C4 / h1;                              o[INDEX3(i,1,0,numComp,3)] = (f_110[i]+f_111[i]-f_100[i]-f_101[i])*C4 / m_dx[1];
1472                              o[INDEX3(i,2,0,numComp,3)] = (f_101[i]+f_111[i]-f_100[i]-f_110[i])*C4 / h2;                              o[INDEX3(i,2,0,numComp,3)] = (f_101[i]+f_111[i]-f_100[i]-f_110[i])*C4 / m_dx[2];
1473                          } // end of component loop i                          } // end of component loop i
1474                      } // end of k1 loop                      } // end of k1 loop
1475                  } // end of k2 loop                  } // end of k2 loop
# Line 1491  void Brick::assembleGradient(escript::Da Line 1488  void Brick::assembleGradient(escript::Da
1488                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1489                          double* o = out.getSampleDataRW(m_faceOffset[2]+INDEX2(k0,k2,m_NE[0]));                          double* o = out.getSampleDataRW(m_faceOffset[2]+INDEX2(k0,k2,m_NE[0]));
1490                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1491                              o[INDEX3(i,0,0,numComp,3)] = (f_100[i]+f_101[i]-f_000[i]-f_001[i])*C4 / h0;                              o[INDEX3(i,0,0,numComp,3)] = (f_100[i]+f_101[i]-f_000[i]-f_001[i])*C4 / m_dx[0];
1492                              o[INDEX3(i,1,0,numComp,3)] = (f_010[i]+f_011[i]+f_110[i]+f_111[i]-f_000[i]-f_001[i]-f_100[i]-f_101[i])*C3 / h1;                              o[INDEX3(i,1,0,numComp,3)] = (f_010[i]+f_011[i]+f_110[i]+f_111[i]-f_000[i]-f_001[i]-f_100[i]-f_101[i])*C3 / m_dx[1];
1493                              o[INDEX3(i,2,0,numComp,3)] = (f_001[i]+f_101[i]-f_000[i]-f_100[i])*C4 / h2;                              o[INDEX3(i,2,0,numComp,3)] = (f_001[i]+f_101[i]-f_000[i]-f_100[i])*C4 / m_dx[2];
1494                          } // end of component loop i                          } // end of component loop i
1495                      } // end of k0 loop                      } // end of k0 loop
1496                  } // end of k2 loop                  } // end of k2 loop
# Line 1512  void Brick::assembleGradient(escript::Da Line 1509  void Brick::assembleGradient(escript::Da
1509                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,m_NN[1]-1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,m_NN[1]-1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1510                          double* o = out.getSampleDataRW(m_faceOffset[3]+INDEX2(k0,k2,m_NE[0]));                          double* o = out.getSampleDataRW(m_faceOffset[3]+INDEX2(k0,k2,m_NE[0]));
1511                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1512                              o[INDEX3(i,0,0,numComp,3)] = (f_110[i]+f_111[i]-f_010[i]-f_011[i])*C4 / h0;                              o[INDEX3(i,0,0,numComp,3)] = (f_110[i]+f_111[i]-f_010[i]-f_011[i])*C4 / m_dx[0];
1513                              o[INDEX3(i,1,0,numComp,3)] = (f_010[i]+f_011[i]+f_110[i]+f_111[i]-f_000[i]-f_001[i]-f_100[i]-f_101[i])*C3 / h1;                              o[INDEX3(i,1,0,numComp,3)] = (f_010[i]+f_011[i]+f_110[i]+f_111[i]-f_000[i]-f_001[i]-f_100[i]-f_101[i])*C3 / m_dx[1];
1514                              o[INDEX3(i,2,0,numComp,3)] = (f_011[i]+f_111[i]-f_010[i]-f_110[i])*C4 / h2;                              o[INDEX3(i,2,0,numComp,3)] = (f_011[i]+f_111[i]-f_010[i]-f_110[i])*C4 / m_dx[2];
1515                          } // end of component loop i                          } // end of component loop i
1516                      } // end of k0 loop                      } // end of k0 loop
1517                  } // end of k2 loop                  } // end of k2 loop
# Line 1533  void Brick::assembleGradient(escript::Da Line 1530  void Brick::assembleGradient(escript::Da
1530                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1531                          double* o = out.getSampleDataRW(m_faceOffset[4]+INDEX2(k0,k1,m_NE[0]));                          double* o = out.getSampleDataRW(m_faceOffset[4]+INDEX2(k0,k1,m_NE[0]));
1532                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1533                              o[INDEX3(i,0,0,numComp,3)] = (f_100[i]+f_110[i]-f_000[i]-f_010[i])*C4 / h0;                              o[INDEX3(i,0,0,numComp,3)] = (f_100[i]+f_110[i]-f_000[i]-f_010[i])*C4 / m_dx[0];
1534                              o[INDEX3(i,1,0,numComp,3)] = (f_010[i]+f_110[i]-f_000[i]-f_100[i])*C4 / h1;                              o[INDEX3(i,1,0,numComp,3)] = (f_010[i]+f_110[i]-f_000[i]-f_100[i])*C4 / m_dx[1];
1535                              o[INDEX3(i,2,0,numComp,3)] = (f_001[i]+f_011[i]+f_101[i]+f_111[i]-f_000[i]-f_010[i]-f_100[i]-f_110[i])*C4 / h2;                              o[INDEX3(i,2,0,numComp,3)] = (f_001[i]+f_011[i]+f_101[i]+f_111[i]-f_000[i]-f_010[i]-f_100[i]-f_110[i])*C4 / m_dx[2];
1536                          } // end of component loop i                          } // end of component loop i
1537                      } // end of k0 loop                      } // end of k0 loop
1538                  } // end of k1 loop                  } // end of k1 loop
# Line 1554  void Brick::assembleGradient(escript::Da Line 1551  void Brick::assembleGradient(escript::Da
1551                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,m_NN[2]-1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,m_NN[2]-1, m_NN[0],m_NN[1])), numComp*sizeof(double));
1552                          double* o = out.getSampleDataRW(m_faceOffset[5]+INDEX2(k0,k1,m_NE[0]));                          double* o = out.getSampleDataRW(m_faceOffset[5]+INDEX2(k0,k1,m_NE[0]));
1553                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
1554                              o[INDEX3(i,0,0,numComp,3)] = (f_101[i]+f_111[i]-f_001[i]-f_011[i])*C4 / h0;                              o[INDEX3(i,0,0,numComp,3)] = (f_101[i]+f_111[i]-f_001[i]-f_011[i])*C4 / m_dx[0];
1555                              o[INDEX3(i,1,0,numComp,3)] = (f_011[i]+f_111[i]-f_001[i]-f_101[i])*C4 / h1;                              o[INDEX3(i,1,0,numComp,3)] = (f_011[i]+f_111[i]-f_001[i]-f_101[i])*C4 / m_dx[1];
1556                              o[INDEX3(i,2,0,numComp,3)] = (f_001[i]+f_011[i]+f_101[i]+f_111[i]-f_000[i]-f_010[i]-f_100[i]-f_110[i])*C3 / h2;                              o[INDEX3(i,2,0,numComp,3)] = (f_001[i]+f_011[i]+f_101[i]+f_111[i]-f_000[i]-f_010[i]-f_100[i]-f_110[i])*C3 / m_dx[2];
1557                          } // end of component loop i                          } // end of component loop i
1558                      } // end of k0 loop                      } // end of k0 loop
1559                  } // end of k1 loop                  } // end of k1 loop
# Line 1569  void Brick::assembleGradient(escript::Da Line 1566  void Brick::assembleGradient(escript::Da
1566  void Brick::assembleIntegrate(vector<double>& integrals, escript::Data& arg) const  void Brick::assembleIntegrate(vector<double>& integrals, escript::Data& arg) const
1567  {  {
1568      const dim_t numComp = arg.getDataPointSize();      const dim_t numComp = arg.getDataPointSize();
     const double h0 = m_length[0]/m_gNE[0];  
     const double h1 = m_length[1]/m_gNE[1];  
     const double h2 = m_length[2]/m_gNE[2];  
1569      const index_t left = (m_offset[0]==0 ? 0 : 1);      const index_t left = (m_offset[0]==0 ? 0 : 1);
1570      const index_t bottom = (m_offset[1]==0 ? 0 : 1);      const index_t bottom = (m_offset[1]==0 ? 0 : 1);
1571      const index_t front = (m_offset[2]==0 ? 0 : 1);      const index_t front = (m_offset[2]==0 ? 0 : 1);
1572      const int fs = arg.getFunctionSpace().getTypeCode();      const int fs = arg.getFunctionSpace().getTypeCode();
1573      if (fs == Elements && arg.actsExpanded()) {      if (fs == Elements && arg.actsExpanded()) {
1574          const double w_0 = h0*h1*h2/8.;          const double w_0 = m_dx[0]*m_dx[1]*m_dx[2]/8.;
1575  #pragma omp parallel  #pragma omp parallel
1576          {          {
1577              vector<double> int_local(numComp, 0);              vector<double> int_local(numComp, 0);
# Line 1607  void Brick::assembleIntegrate(vector<dou Line 1601  void Brick::assembleIntegrate(vector<dou
1601          } // end of parallel section          } // end of parallel section
1602    
1603      } else if (fs==ReducedElements || (fs==Elements && !arg.actsExpanded())) {      } else if (fs==ReducedElements || (fs==Elements && !arg.actsExpanded())) {
1604          const double w_0 = h0*h1*h2;          const double w_0 = m_dx[0]*m_dx[1]*m_dx[2];
1605  #pragma omp parallel  #pragma omp parallel
1606          {          {
1607              vector<double> int_local(numComp, 0);              vector<double> int_local(numComp, 0);
# Line 1629  void Brick::assembleIntegrate(vector<dou Line 1623  void Brick::assembleIntegrate(vector<dou
1623          } // end of parallel section          } // end of parallel section
1624    
1625      } else if (fs == FaceElements && arg.actsExpanded()) {      } else if (fs == FaceElements && arg.actsExpanded()) {
1626          const double w_0 = h1*h2/4.;          const double w_0 = m_dx[1]*m_dx[2]/4.;
1627          const double w_1 = h0*h2/4.;          const double w_1 = m_dx[0]*m_dx[2]/4.;
1628          const double w_2 = h0*h1/4.;          const double w_2 = m_dx[0]*m_dx[1]/4.;
1629  #pragma omp parallel  #pragma omp parallel
1630          {          {
1631              vector<double> int_local(numComp, 0);              vector<double> int_local(numComp, 0);
# Line 1737  void Brick::assembleIntegrate(vector<dou Line 1731  void Brick::assembleIntegrate(vector<dou
1731          } // end of parallel section          } // end of parallel section
1732    
1733      } else if (fs==ReducedFaceElements || (fs==FaceElements && !arg.actsExpanded())) {      } else if (fs==ReducedFaceElements || (fs==FaceElements && !arg.actsExpanded())) {
1734          const double w_0 = h1*h2;          const double w_0 = m_dx[1]*m_dx[2];
1735          const double w_1 = h0*h2;          const double w_1 = m_dx[0]*m_dx[2];
1736          const double w_2 = h0*h1;          const double w_2 = m_dx[0]*m_dx[1];
1737  #pragma omp parallel  #pragma omp parallel
1738          {          {
1739              vector<double> int_local(numComp, 0);              vector<double> int_local(numComp, 0);
# Line 2483  void Brick::interpolateNodesOnElements(e Line 2477  void Brick::interpolateNodesOnElements(e
2477      const dim_t numComp = in.getDataPointSize();      const dim_t numComp = in.getDataPointSize();
2478      if (reduced) {      if (reduced) {
2479          out.requireWrite();          out.requireWrite();
         const double c0 = .125;  
2480  #pragma omp parallel  #pragma omp parallel
2481          {          {
2482              vector<double> f_000(numComp);              vector<double> f_000(numComp);
# Line 2508  void Brick::interpolateNodesOnElements(e Line 2501  void Brick::interpolateNodesOnElements(e
2501                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
2502                          double* o = out.getSampleDataRW(INDEX3(k0,k1,k2,m_NE[0],m_NE[1]));                          double* o = out.getSampleDataRW(INDEX3(k0,k1,k2,m_NE[0],m_NE[1]));
2503                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
2504                              o[INDEX2(i,numComp,0)] = c0*(f_000[i] + f_001[i] + f_010[i] + f_011[i] + f_100[i] + f_101[i] + f_110[i] + f_111[i]);                              o[INDEX2(i,numComp,0)] = (f_000[i] + f_001[i] + f_010[i] + f_011[i] + f_100[i] + f_101[i] + f_110[i] + f_111[i])/8;
2505                          } // end of component loop i                          } // end of component loop i
2506                      } // end of k0 loop                      } // end of k0 loop
2507                  } // end of k1 loop                  } // end of k1 loop
# Line 2567  void Brick::interpolateNodesOnFaces(escr Line 2560  void Brick::interpolateNodesOnFaces(escr
2560      const dim_t numComp = in.getDataPointSize();      const dim_t numComp = in.getDataPointSize();
2561      if (reduced) {      if (reduced) {
2562          out.requireWrite();          out.requireWrite();
         const double c0 = .25;  
2563  #pragma omp parallel  #pragma omp parallel
2564          {          {
2565              vector<double> f_000(numComp);              vector<double> f_000(numComp);
# Line 2588  void Brick::interpolateNodesOnFaces(escr Line 2580  void Brick::interpolateNodesOnFaces(escr
2580                          memcpy(&f_011[0], in.getSampleDataRO(INDEX3(0,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_011[0], in.getSampleDataRO(INDEX3(0,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
2581                          double* o = out.getSampleDataRW(m_faceOffset[0]+INDEX2(k1,k2,m_NE[1]));                          double* o = out.getSampleDataRW(m_faceOffset[0]+INDEX2(k1,k2,m_NE[1]));
2582                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
2583                              o[INDEX2(i,numComp,0)] = c0*(f_000[i] + f_001[i] + f_010[i] + f_011[i]);                              o[INDEX2(i,numComp,0)] = (f_000[i] + f_001[i] + f_010[i] + f_011[i])/4;
2584                          } // end of component loop i                          } // end of component loop i
2585                      } // end of k1 loop                      } // end of k1 loop
2586                  } // end of k2 loop                  } // end of k2 loop
# Line 2603  void Brick::interpolateNodesOnFaces(escr Line 2595  void Brick::interpolateNodesOnFaces(escr
2595                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(m_NN[0]-1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(m_NN[0]-1,k1+1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
2596                          double* o = out.getSampleDataRW(m_faceOffset[1]+INDEX2(k1,k2,m_NE[1]));                          double* o = out.getSampleDataRW(m_faceOffset[1]+INDEX2(k1,k2,m_NE[1]));
2597                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
2598                              o[INDEX2(i,numComp,0)] = c0*(f_100[i] + f_101[i] + f_110[i] + f_111[i]);                              o[INDEX2(i,numComp,0)] = (f_100[i] + f_101[i] + f_110[i] + f_111[i])/4;
2599                          } // end of component loop i                          } // end of component loop i
2600                      } // end of k1 loop                      } // end of k1 loop
2601                  } // end of k2 loop                  } // end of k2 loop
# Line 2618  void Brick::interpolateNodesOnFaces(escr Line 2610  void Brick::interpolateNodesOnFaces(escr
2610                          memcpy(&f_101[0], in.getSampleDataRO(INDEX3(k0+1,0,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_101[0], in.getSampleDataRO(INDEX3(k0+1,0,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
2611                          double* o = out.getSampleDataRW(m_faceOffset[2]+INDEX2(k0,k2,m_NE[0]));                          double* o = out.getSampleDataRW(m_faceOffset[2]+INDEX2(k0,k2,m_NE[0]));
2612                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
2613                              o[INDEX2(i,numComp,0)] = c0*(f_000[i] + f_001[i] + f_100[i] + f_101[i]);                              o[INDEX2(i,numComp,0)] = (f_000[i] + f_001[i] + f_100[i] + f_101[i])/4;
2614                          } // end of component loop i                          } // end of component loop i
2615                      } // end of k0 loop                      } // end of k0 loop
2616                  } // end of k2 loop                  } // end of k2 loop
# Line 2633  void Brick::interpolateNodesOnFaces(escr Line 2625  void Brick::interpolateNodesOnFaces(escr
2625                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,m_NN[1]-1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,m_NN[1]-1,k2+1, m_NN[0],m_NN[1])), numComp*sizeof(double));
2626                          double* o = out.getSampleDataRW(m_faceOffset[3]+INDEX2(k0,k2,m_NE[0]));                          double* o = out.getSampleDataRW(m_faceOffset[3]+INDEX2(k0,k2,m_NE[0]));
2627                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
2628                              o[INDEX2(i,numComp,0)] = c0*(f_010[i] + f_011[i] + f_110[i] + f_111[i]);                              o[INDEX2(i,numComp,0)] = (f_010[i] + f_011[i] + f_110[i] + f_111[i])/4;
2629                          } // end of component loop i                          } // end of component loop i
2630                      } // end of k0 loop                      } // end of k0 loop
2631                  } // end of k2 loop                  } // end of k2 loop
# Line 2648  void Brick::interpolateNodesOnFaces(escr Line 2640  void Brick::interpolateNodesOnFaces(escr
2640                          memcpy(&f_110[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,0, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_110[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,0, m_NN[0],m_NN[1])), numComp*sizeof(double));
2641                          double* o = out.getSampleDataRW(m_faceOffset[4]+INDEX2(k0,k1,m_NE[0]));                          double* o = out.getSampleDataRW(m_faceOffset[4]+INDEX2(k0,k1,m_NE[0]));
2642                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
2643                              o[INDEX2(i,numComp,0)] = c0*(f_000[i] + f_010[i] + f_100[i] + f_110[i]);                              o[INDEX2(i,numComp,0)] = (f_000[i] + f_010[i] + f_100[i] + f_110[i])/4;
2644                          } // end of component loop i                          } // end of component loop i
2645                      } // end of k0 loop                      } // end of k0 loop
2646                  } // end of k1 loop                  } // end of k1 loop
# Line 2663  void Brick::interpolateNodesOnFaces(escr Line 2655  void Brick::interpolateNodesOnFaces(escr
2655                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,m_NN[2]-1, m_NN[0],m_NN[1])), numComp*sizeof(double));                          memcpy(&f_111[0], in.getSampleDataRO(INDEX3(k0+1,k1+1,m_NN[2]-1, m_NN[0],m_NN[1])), numComp*sizeof(double));
2656                          double* o = out.getSampleDataRW(m_faceOffset[5]+INDEX2(k0,k1,m_NE[0]));                          double* o = out.getSampleDataRW(m_faceOffset[5]+INDEX2(k0,k1,m_NE[0]));
2657                          for (index_t i=0; i < numComp; ++i) {                          for (index_t i=0; i < numComp; ++i) {
2658                              o[INDEX2(i,numComp,0)] = c0*(f_001[i] + f_011[i] + f_101[i] + f_111[i]);                              o[INDEX2(i,numComp,0)] = (f_001[i] + f_011[i] + f_101[i] + f_111[i])/4;
2659                          } // end of component loop i                          } // end of component loop i
2660                      } // end of k0 loop                      } // end of k0 loop
2661                  } // end of k1 loop                  } // end of k1 loop
# Line 2802  void Brick::assemblePDESingle(Paso_Syste Line 2794  void Brick::assemblePDESingle(Paso_Syste
2794          const escript::Data& C, const escript::Data& D,          const escript::Data& C, const escript::Data& D,
2795          const escript::Data& X, const escript::Data& Y) const          const escript::Data& X, const escript::Data& Y) const
2796  {  {
2797      const double h0 = m_length[0]/m_gNE[0];      /* GENERATOR SNIP_PDE_SINGLE_PRE TOP */
2798      const double h1 = m_length[1]/m_gNE[1];      const double w0 = 0.00093037914038584273081*m_dx[1]*m_dx[2]/m_dx[0];
2799      const double h2 = m_length[2]/m_gNE[2];      const double w1 = 0.00093037914038584273081*m_dx[2];
2800      const double w0 = 0.0009303791403858427308*h1*h2/h0;      const double w2 = -0.000249294339321148701*m_dx[1];
2801      const double w1 = 0.0009303791403858427308*h2;      const double w3 = 0.00093037914038584273081*m_dx[0]*m_dx[2]/m_dx[1];
2802      const double w2 = -0.00024929433932114870101*h1;      const double w4 = -0.000249294339321148701*m_dx[0];
2803      const double w3 = 0.0009303791403858427308*h0*h2/h1;      const double w5 = 0.00093037914038584273081*m_dx[1];
2804      const double w4 = -0.00024929433932114870101*h0;      const double w6 = 0.00093037914038584273081*m_dx[0];
2805      const double w5 = 0.0009303791403858427308*h1;      const double w7 = -0.000249294339321148701*m_dx[0]*m_dx[1]/m_dx[2];
2806      const double w6 = 0.0009303791403858427308*h0;      const double w8 = 0.0034722222222222222222*m_dx[2];
2807      const double w7 = -0.00024929433932114870101*h0*h1/h2;      const double w9 = 0.012958509748503046158*m_dx[0]*m_dx[2]/m_dx[1];
2808      const double w8 = 0.0034722222222222222222*h2;      const double w10 = -0.0034722222222222222222*m_dx[0];
2809      const double w9 = -0.0009303791403858427308*h1;      const double w11 = 0.0034722222222222222222*m_dx[1];
2810      const double w10 = 0.012958509748503046158*h0*h2/h1;      const double w12 = 0.012958509748503046158*m_dx[0];
2811      const double w11 = -0.0034722222222222222222*h0;      const double w13 = -0.0034722222222222222222*m_dx[0]*m_dx[1]/m_dx[2];
2812      const double w12 = 0.0034722222222222222222*h1;      const double w14 = 0.012958509748503046158*m_dx[1]*m_dx[2]/m_dx[0];
2813      const double w13 = 0.012958509748503046158*h0;      const double w15 = 0.012958509748503046158*m_dx[1];
2814      const double w14 = -0.0034722222222222222222*h0*h1/h2;      const double w16 = 0.012958509748503046158*m_dx[2];
2815      const double w15 = 0.012958509748503046158*h1*h2/h0;      const double w17 = 0.04836181677178996241*m_dx[1];
2816      const double w16 = -0.0034722222222222222222*h1;      const double w18 = 0.04836181677178996241*m_dx[0];
2817      const double w17 = -0.0009303791403858427308*h0;      const double w19 = -0.04836181677178996241*m_dx[0]*m_dx[1]/m_dx[2];
2818      const double w18 = 0.012958509748503046158*h1;      const double w20 = -0.000249294339321148701*m_dx[2];
2819      const double w19 = 0.0034722222222222222222*h0;      const double w21 = -0.04836181677178996241*m_dx[2];
2820      const double w20 = 0.012958509748503046158*h2;      const double w22 = -0.0034722222222222222222*m_dx[0]*m_dx[2]/m_dx[1];
2821      const double w21 = -0.012958509748503046158*h1;      const double w23 = 0.00093037914038584273081*m_dx[0]*m_dx[1]/m_dx[2];
2822      const double w22 = -0.012958509748503046158*h0;      const double w24 = -0.04836181677178996241*m_dx[0]*m_dx[2]/m_dx[1];
2823      const double w23 = 0.04836181677178996241*h1;      const double w25 = 0.012958509748503046158*m_dx[0]*m_dx[1]/m_dx[2];
2824      const double w24 = 0.04836181677178996241*h0;      const double w26 = -0.000249294339321148701*m_dx[0]*m_dx[2]/m_dx[1];
2825      const double w25 = -0.04836181677178996241*h0*h1/h2;      const double w27 = -0.0034722222222222222222*m_dx[1]*m_dx[2]/m_dx[0];
2826      const double w26 = 0.00024929433932114870101*h1;      const double w28 = -0.000249294339321148701*m_dx[1]*m_dx[2]/m_dx[0];
2827      const double w27 = 0.00024929433932114870101*h0;      const double w29 = -0.04836181677178996241*m_dx[1]*m_dx[2]/m_dx[0];
2828      const double w28 = -0.04836181677178996241*h1;      const double w30 = 0.0001966122466178319053*m_dx[1]*m_dx[2];
2829      const double w29 = -0.04836181677178996241*h0;      const double w31 = 0.0001966122466178319053*m_dx[0]*m_dx[2];
2830      const double w30 = -0.0009303791403858427308*h1*h2/h0;      const double w32 = 0.0001966122466178319053*m_dx[0]*m_dx[1];
2831      const double w31 = -0.0009303791403858427308*h2;      const double w33 = 0.0007337668937680108255*m_dx[1]*m_dx[2];
2832      const double w32 = -0.0009303791403858427308*h0*h2/h1;      const double w34 = 0.0027384553284542113967*m_dx[0]*m_dx[2];
2833      const double w33 = 0.0034722222222222222222*h0*h1/h2;      const double w35 = 0.0027384553284542113967*m_dx[0]*m_dx[1];
2834      const double w34 = -0.0034722222222222222222*h2;      const double w36 = 0.0027384553284542113967*m_dx[1]*m_dx[2];
2835      const double w35 = -0.00024929433932114870101*h2;      const double w37 = 0.0007337668937680108255*m_dx[0]*m_dx[2];
2836      const double w36 = -0.012958509748503046158*h1*h2/h0;      const double w38 = 0.010220054420048834761*m_dx[1]*m_dx[2];
2837      const double w37 = -0.012958509748503046158*h2;      const double w39 = 0.010220054420048834761*m_dx[0]*m_dx[2];
2838      const double w38 = -0.012958509748503046158*h0*h2/h1;      const double w40 = 0.038141762351741127649*m_dx[0]*m_dx[1];
2839      const double w39 = -0.04836181677178996241*h2;      const double w41 = 0.000052682092703316795698*m_dx[0]*m_dx[1];
2840      const double w40 = -0.0034722222222222222222*h0*h2/h1;      const double w42 = 0.0007337668937680108255*m_dx[0]*m_dx[1];
2841      const double w41 = 0.0009303791403858427308*h0*h1/h2;      const double w43 = 0.010220054420048834761*m_dx[0]*m_dx[1];
2842      const double w42 = 0.04836181677178996241*h2;      const double w44 = -0.038141762351741127649*m_dx[0]*m_dx[2];
2843      const double w43 = -0.04836181677178996241*h0*h2/h1;      const double w45 = -0.000052682092703316795698*m_dx[0]*m_dx[2];
2844      const double w44 = 0.012958509748503046158*h0*h1/h2;      const double w46 = 0.000052682092703316795698*m_dx[1]*m_dx[2];
2845      const double w45 = -0.00024929433932114870101*h0*h2/h1;      const double w47 = 0.038141762351741127649*m_dx[1]*m_dx[2];
2846      const double w46 = 0.00024929433932114870101*h2;      const double w48 = 0.027777777777777777778*m_dx[1]*m_dx[2];
2847      const double w47 = -0.0034722222222222222222*h1*h2/h0;      const double w49 = 0.027777777777777777778*m_dx[0]*m_dx[2];
2848      const double w48 = -0.00024929433932114870101*h1*h2/h0;      const double w50 = 0.055555555555555555556*m_dx[0]*m_dx[1];
2849      const double w49 = -0.04836181677178996241*h1*h2/h0;      const double w51 = -0.055555555555555555556*m_dx[0]*m_dx[2];
2850      const double w50 = 0.0034722222222222222222*h0*h2/h1;      const double w52 = -0.027777777777777777778*m_dx[0]*m_dx[1];
2851      const double w51 = -0.0009303791403858427308*h0*h1/h2;      const double w53 = -0.013888888888888888889*m_dx[1]*m_dx[2];
2852      const double w52 = -0.012958509748503046158*h0*h1/h2;      const double w54 = 0.0000415490565535247835*m_dx[0]*m_dx[1]*m_dx[2];
2853      const double w53 = 0.0034722222222222222222*h1*h2/h0;      const double w55 = 0.0005787037037037037037*m_dx[0]*m_dx[1]*m_dx[2];
2854      const double w54 = 0.00024929433932114870101*h0*h1/h2;      const double w56 = 0.0080603027952983270684*m_dx[0]*m_dx[1]*m_dx[2];
2855      const double w55 = 0.04836181677178996241*h0*h2/h1;      const double w57 = 0.0001550631900643071218*m_dx[0]*m_dx[1]*m_dx[2];
2856      const double w56 = 0.04836181677178996241*h1*h2/h0;      const double w58 = 0.002159751624750507693*m_dx[0]*m_dx[1]*m_dx[2];
2857      const double w57 = 0.04836181677178996241*h0*h1/h2;      const double w59 = 0.03008145955644280058*m_dx[0]*m_dx[1]*m_dx[2];
2858      const double w58 = 0.00024929433932114870101*h1*h2/h0;      const double w60 = 0.000011133036149792012194*m_dx[0]*m_dx[1]*m_dx[2];
2859      const double w59 = 0.00024929433932114870101*h0*h2/h1;      const double w61 = -0.077751058491018276948*m_dx[1]*m_dx[2];
2860      const double w60 = 0.055555555555555555556*h1*h2/h0;      const double w62 = -0.077751058491018276948*m_dx[0]*m_dx[2];
2861      const double w61 = 0.041666666666666666667*h2;      const double w63 = -0.077751058491018276948*m_dx[0]*m_dx[1];
2862      const double w62 = -0.083333333333333333333*h1;      const double w64 = -0.020833333333333333333*m_dx[0]*m_dx[2];
2863      const double w63 = 0.055555555555555555556*h0*h2/h1;      const double w65 = -0.020833333333333333333*m_dx[0]*m_dx[1];
2864      const double w64 = -0.083333333333333333333*h0;      const double w66 = -0.020833333333333333333*m_dx[1]*m_dx[2];
2865      const double w65 = 0.083333333333333333333*h1;      const double w67 = -0.0055822748423150563848*m_dx[0]*m_dx[1];
2866      const double w66 = 0.083333333333333333333*h0;      const double w68 = -0.0055822748423150563848*m_dx[0]*m_dx[2];
2867      const double w67 = -0.11111111111111111111*h0*h1/h2;      const double w69 = -0.0055822748423150563848*m_dx[1]*m_dx[2];
2868      const double w68 = -0.055555555555555555556*h1*h2/h0;      const double w70 = 0.061320326520293008568*m_dx[0]*m_dx[1]*m_dx[2];
2869      const double w69 = -0.083333333333333333333*h2;      const double w71 = 0.01643073197072526838*m_dx[0]*m_dx[1]*m_dx[2];
2870      const double w70 = -0.041666666666666666667*h1;      const double w72 = 0.004402601362608064953*m_dx[0]*m_dx[1]*m_dx[2];
2871      const double w71 = -0.055555555555555555556*h0*h2/h1;      const double w73 = 0.0011796734797069914318*m_dx[0]*m_dx[1]*m_dx[2];
2872      const double w72 = -0.041666666666666666667*h0;      /* GENERATOR SNIP_PDE_SINGLE_PRE BOTTOM */
     const double w73 = 0.041666666666666666667*h1;  
     const double w74 = 0.041666666666666666667*h0;  
     const double w75 = 0.027777777777777777778*h0*h1/h2;  
     const double w76 = 0.083333333333333333333*h2;  
     const double w77 = -0.11111111111111111111*h0*h2/h1;  
     const double w78 = 0.055555555555555555556*h0*h1/h2;  
     const double w79 = -0.11111111111111111111*h1*h2/h0;  
     const double w80 = -0.027777777777777777778*h1*h2/h0;  
     const double w81 = -0.041666666666666666667*h2;  
     const double w82 = -0.027777777777777777778*h0*h2/h1;  
     const double w83 = -0.027777777777777777778*h0*h1/h2;  
     const double w84 = 0.027777777777777777778*h0*h2/h1;  
     const double w85 = -0.055555555555555555556*h0*h1/h2;  
     const double w86 = 0.11111111111111111111*h1*h2/h0;  
     const double w87 = 0.11111111111111111111*h0*h2/h1;  
     const double w88 = 0.11111111111111111111*h0*h1/h2;  
     const double w89 = 0.027777777777777777778*h1*h2/h0;  
     const double w90 = 0.0001966122466178319053*h1*h2;  
     const double w91 = 0.0001966122466178319053*h0*h2;  
     const double w92 = 0.0001966122466178319053*h0*h1;  
     const double w93 = 0.0007337668937680108255*h1*h2;  
     const double w94 = 0.0027384553284542113967*h0*h2;  
     const double w95 = 0.0027384553284542113967*h0*h1;  
     const double w96 = 0.0027384553284542113967*h1*h2;  
     const double w97 = 0.0007337668937680108255*h0*h2;  
     const double w98 = 0.010220054420048834761*h1*h2;  
     const double w99 = 0.010220054420048834761*h0*h2;  
     const double w100 = 0.038141762351741127649*h0*h1;  
     const double w101 = 0.000052682092703316795705*h0*h1;  
     const double w102 = 0.0007337668937680108255*h0*h1;  
     const double w103 = 0.010220054420048834761*h0*h1;  
     const double w104 = -0.0001966122466178319053*h1*h2;  
     const double w105 = -0.0001966122466178319053*h0*h2;  
     const double w106 = -0.0007337668937680108255*h1*h2;  
     const double w107 = -0.0007337668937680108255*h0*h2;  
     const double w108 = -0.0027384553284542113967*h1*h2;  
     const double w109 = -0.0027384553284542113967*h0*h2;  
     const double w110 = -0.010220054420048834761*h1*h2;  
     const double w111 = -0.010220054420048834761*h0*h2;  
     const double w112 = -0.0007337668937680108255*h0*h1;  
     const double w113 = -0.010220054420048834761*h0*h1;  
     const double w114 = -0.038141762351741127649*h0*h2;  
     const double w115 = -0.000052682092703316795705*h0*h2;  
     const double w116 = -0.0001966122466178319053*h0*h1;  
     const double w117 = -0.0027384553284542113967*h0*h1;  
     const double w118 = 0.000052682092703316795705*h0*h2;  
     const double w119 = 0.038141762351741127649*h0*h2;  
     const double w120 = 0.000052682092703316795705*h1*h2;  
     const double w121 = 0.038141762351741127649*h1*h2;  
     const double w122 = -0.000052682092703316795705*h0*h1;  
     const double w123 = -0.038141762351741127649*h0*h1;  
     const double w124 = -0.000052682092703316795705*h1*h2;  
     const double w125 = -0.038141762351741127649*h1*h2;  
     const double w126 = 0.027777777777777777778*h1*h2;  
     const double w127 = 0.027777777777777777778*h0*h2;  
     const double w128 = 0.055555555555555555556*h0*h1;  
     const double w129 = -0.027777777777777777778*h1*h2;  
     const double w130 = -0.027777777777777777778*h0*h2;  
     const double w131 = 0.013888888888888888889*h0*h1;  
     const double w132 = -0.055555555555555555556*h0*h2;  
     const double w133 = -0.027777777777777777778*h0*h1;  
     const double w134 = 0.055555555555555555556*h0*h2;  
     const double w135 = 0.027777777777777777778*h0*h1;  
     const double w136 = -0.013888888888888888889*h0*h1;  
     const double w137 = 0.055555555555555555556*h1*h2;  
     const double w138 = -0.013888888888888888889*h1*h2;  
     const double w139 = -0.013888888888888888889*h0*h2;  
     const double w140 = -0.055555555555555555556*h0*h1;  
     const double w141 = 0.013888888888888888889*h1*h2;  
     const double w142 = 0.013888888888888888889*h0*h2;  
     const double w143 = -0.055555555555555555556*h1*h2;  
     const double w144 = 0.000041549056553524783501*h0*h1*h2;  
     const double w145 = 0.0005787037037037037037*h0*h1*h2;  
     const double w146 = 0.0080603027952983270684*h0*h1*h2;  
     const double w147 = 0.0001550631900643071218*h0*h1*h2;  
     const double w148 = 0.002159751624750507693*h0*h1*h2;  
     const double w149 = 0.03008145955644280058*h0*h1*h2;  
     const double w150 = 0.000011133036149792012204*h0*h1*h2;  
     const double w151 = 0.018518518518518518519*h0*h1*h2;  
     const double w152 = 0.0092592592592592592592*h0*h1*h2;  
     const double w153 = 0.0046296296296296296296*h0*h1*h2;  
     const double w154 = 0.037037037037037037037*h0*h1*h2;  
     const double w155 = -0.077751058491018276949*h1*h2;  
     const double w156 = -0.077751058491018276949*h0*h2;  
     const double w157 = -0.077751058491018276949*h0*h1;  
     const double w158 = -0.020833333333333333333*h0*h2;  
     const double w159 = -0.020833333333333333333*h0*h1;  
     const double w160 = -0.020833333333333333333*h1*h2;  
     const double w161 = -0.0055822748423150563848*h0*h1;  
     const double w162 = -0.0055822748423150563848*h0*h2;  
     const double w163 = -0.0055822748423150563848*h1*h2;  
     const double w164 = 0.077751058491018276949*h1*h2;  
     const double w165 = 0.020833333333333333333*h1*h2;  
     const double w166 = 0.0055822748423150563848*h1*h2;  
     const double w167 = 0.077751058491018276949*h0*h2;  
     const double w168 = 0.020833333333333333333*h0*h2;  
     const double w169 = 0.0055822748423150563848*h0*h2;  
     const double w170 = 0.077751058491018276949*h0*h1;  
     const double w171 = 0.020833333333333333333*h0*h1;  
     const double w172 = 0.0055822748423150563848*h0*h1;  
     const double w173 = -0.25*h1*h2;  
     const double w174 = -0.25*h0*h2;  
     const double w175 = -0.25*h0*h1;  
     const double w176 = 0.25*h1*h2;  
     const double w177 = 0.25*h0*h2;  
     const double w178 = 0.25*h0*h1;  
     const double w179 = 0.061320326520293008568*h0*h1*h2;  
     const double w180 = 0.01643073197072526838*h0*h1*h2;  
     const double w181 = 0.004402601362608064953*h0*h1*h2;  
     const double w182 = 0.0011796734797069914318*h0*h1*h2;  
     const double w183 = 0.125*h0*h1*h2;  
2873    
2874      rhs.requireWrite();      rhs.requireWrite();
2875  #pragma omp parallel  #pragma omp parallel
# Line 3003  void Brick::assemblePDESingle(Paso_Syste Line 2884  void Brick::assemblePDESingle(Paso_Syste
2884                          vector<double> EM_S(8*8, 0);                          vector<double> EM_S(8*8, 0);
2885                          vector<double> EM_F(8, 0);                          vector<double> EM_F(8, 0);
2886                          const index_t e = k0 + m_NE[0]*k1 + m_NE[0]*m_NE[1]*k2;                          const index_t e = k0 + m_NE[0]*k1 + m_NE[0]*m_NE[1]*k2;
2887                            /* GENERATOR SNIP_PDE_SINGLE TOP */
2888                          ///////////////                          ///////////////
2889                          // process A //                          // process A //
2890                          ///////////////                          ///////////////
2891                          if (!A.isEmpty()) {                          if (!A.isEmpty()) {
2892                              add_EM_S=true;                              add_EM_S = true;
2893                              const double* A_p=const_cast<escript::Data*>(&A)->getSampleDataRO(e);                              const double* A_p = const_cast<escript::Data*>(&A)->getSampleDataRO(e);
2894                              if (A.actsExpanded()) {                              if (A.actsExpanded()) {
2895                                  const double A_00_0 = A_p[INDEX3(0,0,0,3,3)];                                  const double A_00_0 = A_p[INDEX3(0,0,0,3,3)];
2896                                  const double A_01_0 = A_p[INDEX3(0,1,0,3,3)];                                  const double A_01_0 = A_p[INDEX3(0,1,0,3,3)];
# Line 3082  void Brick::assemblePDESingle(Paso_Syste Line 2964  void Brick::assemblePDESingle(Paso_Syste
2964                                  const double A_20_7 = A_p[INDEX3(2,0,7,3,3)];                                  const double A_20_7 = A_p[INDEX3(2,0,7,3,3)];
2965                                  const double A_21_7 = A_p[INDEX3(2,1,7,3,3)];                                  const double A_21_7 = A_p[INDEX3(2,1,7,3,3)];
2966                                  const double A_22_7 = A_p[INDEX3(2,2,7,3,3)];                                  const double A_22_7 = A_p[INDEX3(2,2,7,3,3)];
2967                                  const double tmp160_0 = A_12_0 + A_12_6 + A_21_0 + A_21_6;                                  const double tmp0 = w18*(-A_12_7 + A_21_3);
2968                                  const double tmp8_0 = A_21_0 + A_21_6;                                  const double tmp1 = w13*(A_22_1 + A_22_2 + A_22_5 + A_22_6);
2969                                  const double tmp135_0 = A_10_1 + A_10_2 + A_10_5 + A_10_6;                                  const double tmp2 = w11*(-A_02_2 - A_02_5 + A_20_1 + A_20_6);
2970                                  const double tmp67_0 = A_02_2 + A_02_7;                                  const double tmp3 = w14*(A_00_2 + A_00_3 + A_00_6 + A_00_7);
2971                                  const double tmp211_0 = A_12_6 + A_21_6;                                  const double tmp4 = w7*(A_22_0 + A_22_4);
2972                                  const double tmp180_0 = A_10_2 + A_10_6;                                  const double tmp5 = w10*(A_12_1 + A_12_6 - A_21_2 - A_21_5);
2973                                  const double tmp37_0 = A_00_0 + A_00_1 + A_00_2 + A_00_3;                                  const double tmp6 = w3*(A_11_0 + A_11_2 + A_11_4 + A_11_6);
2974                                  const double tmp92_0 = A_11_0 + A_11_1 + A_11_2 + A_11_3 + A_11_4 + A_11_5 + A_11_6 + A_11_7;                                  const double tmp7 = w1*(A_01_0 + A_01_4 + A_10_0 + A_10_4);
2975                                  const double tmp195_0 = A_02_2 + A_20_2;                                  const double tmp8 = w4*(A_12_0 - A_21_4);
2976                                  const double tmp70_0 = A_01_0 + A_01_7;                                  const double tmp9 = w15*(-A_02_3 - A_02_6 + A_20_2 + A_20_7);
2977                                  const double tmp139_0 = A_02_3 + A_02_4 + A_20_1 + A_20_6;                                  const double tmp10 = w0*(A_00_0 + A_00_1 + A_00_4 + A_00_5);
2978                                  const double tmp200_0 = A_12_3 + A_12_5 + A_21_3 + A_21_5;                                  const double tmp11 = w16*(A_01_3 + A_01_7 + A_10_3 + A_10_7);
2979                                  const double tmp60_0 = A_22_0 + A_22_2 + A_22_4 + A_22_6;                                  const double tmp12 = w9*(A_11_1 + A_11_3 + A_11_5 + A_11_7);
2980                                  const double tmp192_0 = A_01_5 + A_10_5;                                  const double tmp13 = w12*(-A_12_3 - A_12_5 + A_21_1 + A_21_7);
2981                                  const double tmp46_0 = A_21_0 + A_21_7;                                  const double tmp14 = w5*(-A_02_1 - A_02_4 + A_20_0 + A_20_5);
2982                                  const double tmp48_0 = A_10_0 + A_10_7;                                  const double tmp15 = w8*(A_01_1 + A_01_2 + A_01_5 + A_01_6 + A_10_1 + A_10_2 + A_10_5 + A_10_6);
2983                                  const double tmp166_0 = A_11_5 + A_11_7;                                  const double tmp16 = w6*(-A_12_2 - A_12_4 + A_21_0 + A_21_6);
2984                                  const double tmp221_0 = A_02_1 + A_02_6 + A_20_3 + A_20_4;                                  const double tmp17 = w19*(A_22_3 + A_22_7);
2985                                  const double tmp50_0 = A_02_4 + A_02_6 + A_20_4 + A_20_6;                                  const double tmp18 = w17*(-A_02_7 + A_20_3);
2986                                  const double tmp217_0 = A_02_3 + A_02_4 + A_20_3 + A_20_4;                                  const double tmp19 = w2*(A_02_0 - A_20_4);
2987                                  const double tmp216_0 = A_01_2 + A_01_5 + A_10_2 + A_10_5;                                  const double tmp20 = w13*(-A_22_0 - A_22_1 - A_22_2 - A_22_3 - A_22_4 - A_22_5 - A_22_6 - A_22_7);
2988                                  const double tmp104_0 = A_22_2 + A_22_6;                                  const double tmp21 = w11*(-A_02_1 - A_02_3 - A_02_4 - A_02_6 + A_20_0 + A_20_2 + A_20_5 + A_20_7);
2989                                  const double tmp72_0 = A_20_3 + A_20_6;                                  const double tmp22 = w14*(-A_00_4 - A_00_5 - A_00_6 - A_00_7);
2990                                  const double tmp79_0 = A_10_4 + A_10_7;                                  const double tmp23 = w20*(A_01_2 + A_10_1);
2991                                  const double tmp86_0 = A_01_2 + A_01_6 + A_10_1 + A_10_5;                                  const double tmp24 = w10*(A_12_2 + A_12_3 + A_12_4 + A_12_5 - A_21_0 - A_21_1 - A_21_6 - A_21_7);
2992                                  const double tmp214_0 = A_12_0 + A_12_7 + A_21_0 + A_21_7;                                  const double tmp25 = w3*(-A_11_0 - A_11_1 - A_11_2 - A_11_3);
2993                                  const double tmp32_0 = A_02_0 + A_02_2;                                  const double tmp26 = w1*(-A_01_0 - A_01_3 - A_10_0 - A_10_3);
2994                                  const double tmp112_0 = A_01_0 + A_01_4 + A_10_3 + A_10_7;                                  const double tmp27 = w15*(-A_02_5 - A_02_7 + A_20_4 + A_20_6);
2995                                  const double tmp197_0 = A_12_0 + A_21_0;                                  const double tmp28 = w0*(-A_00_0 - A_00_1 - A_00_2 - A_00_3);
2996                                  const double tmp106_0 = A_22_1 + A_22_5;                                  const double tmp29 = w16*(-A_01_4 - A_01_7 - A_10_4 - A_10_7);
2997                                  const double tmp2_0 = A_00_0 + A_00_1 + A_00_4 + A_00_5;                                  const double tmp30 = w9*(-A_11_4 - A_11_5 - A_11_6 - A_11_7);
2998                                  const double tmp115_0 = A_02_5 + A_02_7 + A_20_0 + A_20_2;                                  const double tmp31 = w21*(A_01_5 + A_10_6);
2999                                  const double tmp175_0 = A_01_3 + A_01_7;                                  const double tmp32 = w12*(-A_12_6 - A_12_7 + A_21_4 + A_21_5);
3000                                  const double tmp126_0 = A_01_2 + A_01_5 + A_10_1 + A_10_6;                                  const double tmp33 = w5*(-A_02_0 - A_02_2 + A_20_1 + A_20_3);
3001                                  const double tmp90_0 = A_00_0 + A_00_1 + A_00_2 + A_00_3 + A_00_4 + A_00_5 + A_00_6 + A_00_7;                                  const double tmp34 = w8*(-A_01_1 - A_01_6 - A_10_2 - A_10_5);
3002                                  const double tmp47_0 = A_12_0 + A_12_6;                                  const double tmp35 = w6*(-A_12_0 - A_12_1 + A_21_2 + A_21_3);
3003                                  const double tmp205_0 = A_02_7 + A_20_7;                                  const double tmp36 = w20*(-A_01_6 + A_10_4);
3004                                  const double tmp148_0 = A_01_3 + A_01_4;                                  const double tmp37 = w18*(A_12_3 - A_21_1);
3005                                  const double tmp113_0 = A_01_3 + A_01_7 + A_10_0 + A_10_4;                                  const double tmp38 = w11*(-A_02_0 - A_02_2 - A_02_5 - A_02_7 - A_20_0 - A_20_2 - A_20_5 - A_20_7);
3006                                  const double tmp43_0 = A_20_4 + A_20_6;                                  const double tmp39 = w14*(A_00_0 + A_00_1 + A_00_2 + A_00_3);
3007                                  const double tmp161_0 = A_02_1 + A_02_6 + A_20_1 + A_20_6;                                  const double tmp40 = w26*(A_11_4 + A_11_6);
3008                                  const double tmp69_0 = A_12_0 + A_12_1 + A_12_6 + A_12_7 + A_21_0 + A_21_1 + A_21_6 + A_21_7;                                  const double tmp41 = w0*(A_00_4 + A_00_5 + A_00_6 + A_00_7);
3009                                  const double tmp176_0 = A_01_1 + A_01_2 + A_01_5 + A_01_6;                                  const double tmp42 = w10*(-A_12_2 - A_12_5 + A_21_0 + A_21_7);
3010                                  const double tmp105_0 = A_01_2 + A_01_6 + A_10_2 + A_10_6;                                  const double tmp43 = w22*(A_11_0 + A_11_2 + A_11_5 + A_11_7);
3011                                  const double tmp22_0 = A_01_5 + A_10_6;                                  const double tmp44 = w1*(A_01_4 + A_01_7 - A_10_5 - A_10_6);
3012                                  const double tmp91_0 = A_02_4 + A_02_6 + A_20_1 + A_20_3;                                  const double tmp45 = w25*(A_22_1 + A_22_3 + A_22_5 + A_22_7);
3013                                  const double tmp206_0 = A_12_7 + A_21_7;                                  const double tmp46 = w4*(-A_12_4 + A_21_6);
3014                                  const double tmp188_0 = A_02_5 + A_20_5;                                  const double tmp47 = w15*(-A_02_1 - A_02_3 - A_20_1 - A_20_3);
3015                                  const double tmp117_0 = A_21_1 + A_21_6;                                  const double tmp48 = w21*(-A_01_1 + A_10_3);
3016                                  const double tmp165_0 = A_01_1 + A_01_6;                                  const double tmp49 = w16*(A_01_0 + A_01_3 - A_10_1 - A_10_2);
3017                                  const double tmp66_0 = A_00_4 + A_00_5;                                  const double tmp50 = w5*(-A_02_4 - A_02_6 - A_20_4 - A_20_6);
3018                                  const double tmp57_0 = A_02_0 + A_02_2 + A_02_5 + A_02_7 + A_20_0 + A_20_2 + A_20_5 + A_20_7;                                  const double tmp51 = w12*(A_12_1 + A_12_7 - A_21_3 - A_21_5);
3019                                  const double tmp31_0 = A_21_4 + A_21_5;                                  const double tmp52 = w24*(A_11_1 + A_11_3);
3020                                  const double tmp3_0 = A_11_0 + A_11_2 + A_11_4 + A_11_6;                                  const double tmp53 = w8*(A_01_2 + A_01_5 - A_10_0 - A_10_7);
3021                                  const double tmp183_0 = A_12_0 + A_12_7;                                  const double tmp54 = w6*(A_12_0 + A_12_6 - A_21_2 - A_21_4);
3022                                  const double tmp61_0 = A_02_1 + A_02_3 + A_20_1 + A_20_3;                                  const double tmp55 = w23*(A_22_0 + A_22_2 + A_22_4 + A_22_6);
3023                                  const double tmp54_0 = A_10_5 + A_10_6;                                  const double tmp56 = w18*(A_12_4 - A_21_6);
3024                                  const double tmp18_0 = A_02_3 + A_02_6;                                  const double tmp57 = w14*(A_00_4 + A_00_5 + A_00_6 + A_00_7);
3025                                  const double tmp119_0 = A_12_2 + A_12_3 + A_12_4 + A_12_5 + A_21_2 + A_21_3 + A_21_4 + A_21_5;                                  const double tmp58 = w26*(A_11_1 + A_11_3);
3026                                  const double tmp29_0 = A_21_2 + A_21_3;                                  const double tmp59 = w20*(-A_01_1 + A_10_3);
3027                                  const double tmp17_0 = A_01_3 + A_01_7 + A_10_3 + A_10_7;                                  const double tmp60 = w1*(A_01_0 + A_01_3 - A_10_1 - A_10_2);
3028                                  const double tmp212_0 = A_02_6 + A_20_6;                                  const double tmp61 = w25*(A_22_0 + A_22_2 + A_22_4 + A_22_6);
3029                                  const double tmp220_0 = A_02_3 + A_20_6;                                  const double tmp62 = w4*(-A_12_3 + A_21_1);
3030                                  const double tmp78_0 = A_20_0 + A_20_7;                                  const double tmp63 = w15*(-A_02_4 - A_02_6 - A_20_4 - A_20_6);
3031                                  const double tmp215_0 = A_01_6 + A_10_6;                                  const double tmp64 = w0*(A_00_0 + A_00_1 + A_00_2 + A_00_3);
3032                                  const double tmp203_0 = A_01_7 + A_10_7;                                  const double tmp65 = w16*(A_01_4 + A_01_7 - A_10_5 - A_10_6);
3033                                  const double tmp87_0 = A_12_2 + A_12_3 + A_21_4 + A_21_5;                                  const double tmp66 = w24*(A_11_4 + A_11_6);
3034                                  const double tmp114_0 = A_02_0 + A_02_2 + A_20_5 + A_20_7;                                  const double tmp67 = w21*(-A_01_6 + A_10_4);
3035                                  const double tmp0_0 = A_01_0 + A_01_4 + A_10_0 + A_10_4;                                  const double tmp68 = w12*(A_12_0 + A_12_6 - A_21_2 - A_21_4);
3036                                  const double tmp202_0 = A_01_3 + A_01_4 + A_10_3 + A_10_4;                                  const double tmp69 = w5*(-A_02_1 - A_02_3 - A_20_1 - A_20_3);
3037                                  const double tmp4_0 = A_20_0 + A_20_5;                                  const double tmp70 = w6*(A_12_1 + A_12_7 - A_21_3 - A_21_5);
3038                                  const double tmp65_0 = A_00_2 + A_00_3;                                  const double tmp71 = w23*(A_22_1 + A_22_3 + A_22_5 + A_22_7);
3039                                  const double tmp24_0 = A_20_1 + A_20_3;                                  const double tmp72 = w20*(A_01_5 + A_10_6);
3040                                  const double tmp64_0 = A_10_0 + A_10_3;                                  const double tmp73 = w14*(-A_00_0 - A_00_1 - A_00_2 - A_00_3);
3041                                  const double tmp170_0 = A_02_0 + A_02_2 + A_20_0 + A_20_2;                                  const double tmp74 = w0*(-A_00_4 - A_00_5 - A_00_6 - A_00_7);
3042                                  const double tmp11_0 = A_20_1 + A_20_6;                                  const double tmp75 = w3*(-A_11_4 - A_11_5 - A_11_6 - A_11_7);
3043                                  const double tmp82_0 = A_12_4 + A_12_5 + A_21_4 + A_21_5;                                  const double tmp76 = w1*(-A_01_4 - A_01_7 - A_10_4 - A_10_7);
3044                                  const double tmp99_0 = A_01_4 + A_10_7;                                  const double tmp77 = w15*(-A_02_0 - A_02_2 + A_20_1 + A_20_3);
3045                                  const double tmp49_0 = A_12_1 + A_12_7;                                  const double tmp78 = w21*(A_01_2 + A_10_1);
3046                                  const double tmp130_0 = A_12_0 + A_12_1 + A_12_6 + A_12_7;                                  const double tmp79 = w16*(-A_01_0 - A_01_3 - A_10_0 - A_10_3);
3047                                  const double tmp144_0 = A_01_0 + A_10_3;                                  const double tmp80 = w9*(-A_11_0 - A_11_1 - A_11_2 - A_11_3);
3048                                  const double tmp109_0 = A_22_0 + A_22_3 + A_22_4 + A_22_7;                                  const double tmp81 = w12*(-A_12_0 - A_12_1 + A_21_2 + A_21_3);
3049                                  const double tmp185_0 = A_02_0 + A_02_7 + A_20_2 + A_20_5;                                  const double tmp82 = w5*(-A_02_5 - A_02_7 + A_20_4 + A_20_6);
3050                                  const double tmp157_0 = A_01_4 + A_10_4;                                  const double tmp83 = w6*(-A_12_6 - A_12_7 + A_21_4 + A_21_5);
3051                                  const double tmp51_0 = A_22_1 + A_22_3 + A_22_5 + A_22_7;                                  const double tmp84 = w6*(-A_12_2 - A_12_3 - A_21_2 - A_21_3);
3052                                  const double tmp146_0 = A_00_6 + A_00_7;                                  const double tmp85 = w11*(A_02_1 + A_02_6 - A_20_0 - A_20_7);
3053                                  const double tmp147_0 = A_12_0 + A_12_1 + A_21_0 + A_21_1;                                  const double tmp86 = w20*(A_01_3 - A_10_2);
3054                                  const double tmp150_0 = A_00_2 + A_00_3 + A_00_4 + A_00_5;                                  const double tmp87 = w10*(A_12_0 + A_12_1 + A_12_6 + A_12_7 + A_21_0 + A_21_1 + A_21_6 + A_21_7);
3055                                  const double tmp62_0 = A_21_3 + A_21_5;                                  const double tmp88 = w3*(A_11_0 + A_11_1 + A_11_2 + A_11_3);
3056                                  const double tmp223_0 = A_12_2 + A_21_4;                                  const double tmp89 = w23*(A_22_2 + A_22_3 + A_22_6 + A_22_7);
3057                                  const double tmp16_0 = A_02_2 + A_02_5;                                  const double tmp90 = w1*(-A_01_1 - A_01_2 + A_10_0 + A_10_3);
3058                                  const double tmp168_0 = A_11_1 + A_11_3 + A_11_4 + A_11_6;                                  const double tmp91 = w25*(A_22_0 + A_22_1 + A_22_4 + A_22_5);
3059                                  const double tmp88_0 = A_12_4 + A_12_5 + A_21_2 + A_21_3;                                  const double tmp92 = w15*(A_02_0 + A_02_5 - A_20_1 - A_20_4);
3060                                  const double tmp142_0 = A_01_7 + A_10_4;                                  const double tmp93 = w21*(A_01_4 - A_10_5);
3061                                  const double tmp34_0 = A_20_0 + A_20_2 + A_20_5 + A_20_7;                                  const double tmp94 = w16*(-A_01_5 - A_01_6 + A_10_4 + A_10_7);
3062                                  const double tmp71_0 = A_00_0 + A_00_1 + A_00_6 + A_00_7;                                  const double tmp95 = w28*(A_00_2 + A_00_3);
3063                                  const double tmp213_0 = A_02_1 + A_20_1;                                  const double tmp96 = w12*(-A_12_4 - A_12_5 - A_21_4 - A_21_5);
3064                                  const double tmp227_0 = A_12_2 + A_12_5 + A_21_3 + A_21_4;                                  const double tmp97 = w29*(A_00_4 + A_00_5);
3065                                  const double tmp228_0 = A_12_1 + A_21_7;                                  const double tmp98 = w5*(A_02_2 + A_02_7 - A_20_3 - A_20_6);
3066                                  const double tmp140_0 = A_01_2 + A_01_6;                                  const double tmp99 = w8*(-A_01_0 - A_01_7 + A_10_1 + A_10_6);
3067                                  const double tmp74_0 = A_22_0 + A_22_1 + A_22_4 + A_22_5;                                  const double tmp100 = w9*(A_11_4 + A_11_5 + A_11_6 + A_11_7);
3068                                  const double tmp167_0 = A_11_0 + A_11_2;                                  const double tmp101 = w27*(A_00_0 + A_00_1 + A_00_6 + A_00_7);
3069                                  const double tmp143_0 = A_01_3 + A_01_4 + A_10_0 + A_10_7;                                  const double tmp102 = w17*(A_02_4 - A_20_5);
3070                                  const double tmp83_0 = A_02_0 + A_02_5;                                  const double tmp103 = w2*(-A_02_3 + A_20_2);
3071                                  const double tmp14_0 = A_22_1 + A_22_2 + A_22_5 + A_22_6;                                  const double tmp104 = w13*(A_22_0 + A_22_1 + A_22_2 + A_22_3 + A_22_4 + A_22_5 + A_22_6 + A_22_7);
3072                                  const double tmp5_0 = A_12_1 + A_12_6;                                  const double tmp105 = w6*(-A_12_4 - A_12_5 - A_21_2 - A_21_3);
3073                                  const double tmp94_0 = A_02_1 + A_02_3;                                  const double tmp106 = w22*(A_11_0 + A_11_1 + A_11_2 + A_11_3 + A_11_4 + A_11_5 + A_11_6 + A_11_7);
3074                                  const double tmp193_0 = A_01_1 + A_01_6 + A_10_1 + A_10_6;                                  const double tmp107 = w1*(-A_01_2 - A_01_6 - A_10_1 - A_10_5);
3075                                  const double tmp97_0 = A_02_0 + A_02_2 + A_02_5 + A_02_7;                                  const double tmp108 = w15*(-A_02_1 - A_02_3 - A_20_4 - A_20_6);
3076                                  const double tmp131_0 = A_01_1 + A_01_5;                                  const double tmp109 = w16*(-A_01_1 - A_01_5 - A_10_2 - A_10_6);
3077                                  const double tmp124_0 = A_01_6 + A_10_5;                                  const double tmp110 = w12*(-A_12_2 - A_12_3 - A_21_4 - A_21_5);
3078                                  const double tmp149_0 = A_12_6 + A_12_7 + A_21_6 + A_21_7;                                  const double tmp111 = w5*(-A_02_4 - A_02_6 - A_20_1 - A_20_3);
3079                                  const double tmp187_0 = A_01_2 + A_10_2;                                  const double tmp112 = w8*(-A_01_0 - A_01_3 - A_01_4 - A_01_7 - A_10_0 - A_10_3 - A_10_4 - A_10_7);
3080                                  const double tmp93_0 = A_01_1 + A_01_2 + A_10_1 + A_10_2;                                  const double tmp113 = w27*(A_00_0 + A_00_1 + A_00_2 + A_00_3 + A_00_4 + A_00_5 + A_00_6 + A_00_7);
3081                                  const double tmp25_0 = A_01_4 + A_01_7 + A_10_4 + A_10_7;                                  const double tmp114 = w11*(A_02_0 + A_02_2 + A_02_5 + A_02_7 - A_20_1 - A_20_3 - A_20_4 - A_20_6);
3082                                  const double tmp156_0 = A_12_2 + A_12_5 + A_21_2 + A_21_5;                                  const double tmp115 = w21*(-A_01_4 - A_10_7);
3083                                  const double tmp20_0 = A_21_2 + A_21_5;                                  const double tmp116 = w20*(-A_01_3 - A_10_0);
3084                                  const double tmp55_0 = A_21_2 + A_21_4;                                  const double tmp117 = w15*(A_02_4 + A_02_6 - A_20_5 - A_20_7);
3085                                  const double tmp208_0 = A_12_1 + A_12_6 + A_21_0 + A_21_7;                                  const double tmp118 = w16*(A_01_5 + A_01_6 + A_10_5 + A_10_6);
3086                                  const double tmp125_0 = A_12_4 + A_12_5;                                  const double tmp119 = w5*(A_02_1 + A_02_3 - A_20_0 - A_20_2);
3087                                  const double tmp158_0 = A_01_0 + A_01_7 + A_10_0 + A_10_7;                                  const double tmp120 = w8*(A_01_0 + A_01_7 + A_10_3 + A_10_4);
3088                                  const double tmp108_0 = A_01_1 + A_01_5 + A_10_1 + A_10_5;                                  const double tmp121 = w1*(A_01_1 + A_01_2 + A_10_1 + A_10_2);
3089                                  const double tmp199_0 = A_12_2 + A_12_4 + A_21_2 + A_21_4;                                  const double tmp122 = w18*(A_12_2 - A_21_6);
3090                                  const double tmp10_0 = A_02_1 + A_02_4;                                  const double tmp123 = w13*(A_22_0 + A_22_3 + A_22_4 + A_22_7);
3091                                  const double tmp182_0 = A_02_3 + A_02_6 + A_20_3 + A_20_6;                                  const double tmp124 = w11*(-A_02_0 - A_02_7 + A_20_3 + A_20_4);
3092                                  const double tmp132_0 = A_02_1 + A_20_4;                                  const double tmp125 = w7*(A_22_1 + A_22_5);
3093                                  const double tmp191_0 = A_12_3 + A_12_4 + A_21_3 + A_21_4;                                  const double tmp126 = w10*(-A_12_3 - A_12_4 + A_21_0 + A_21_7);
3094                                  const double tmp35_0 = A_11_0 + A_11_1 + A_11_2 + A_11_3;                                  const double tmp127 = w3*(A_11_1 + A_11_3 + A_11_5 + A_11_7);
3095                                  const double tmp164_0 = A_10_3 + A_10_4;                                  const double tmp128 = w1*(-A_01_1 - A_01_5 - A_10_1 - A_10_5);
3096                                  const double tmp190_0 = A_12_5 + A_21_5;                                  const double tmp129 = w4*(-A_12_5 + A_21_1);
3097                                  const double tmp73_0 = A_02_1 + A_02_6;                                  const double tmp130 = w16*(-A_01_2 - A_01_6 - A_10_2 - A_10_6);
3098                                  const double tmp98_0 = A_01_0 + A_01_7 + A_10_3 + A_10_4;                                  const double tmp131 = w9*(A_11_0 + A_11_2 + A_11_4 + A_11_6);
3099                                  const double tmp225_0 = A_12_4 + A_21_2;                                  const double tmp132 = w19*(A_22_2 + A_22_6);
3100                                  const double tmp103_0 = A_02_4 + A_02_6;                                  const double tmp133 = w17*(-A_02_2 + A_20_6);
3101                                  const double tmp194_0 = A_02_0 + A_02_7 + A_20_0 + A_20_7;                                  const double tmp134 = w2*(A_02_5 - A_20_1);
3102                                  const double tmp207_0 = A_12_0 + A_21_6;                                  const double tmp135 = w11*(A_02_1 + A_02_3 + A_02_4 + A_02_6 + A_20_1 + A_20_3 + A_20_4 + A_20_6);
3103                                  const double tmp102_0 = A_20_5 + A_20_7;                                  const double tmp136 = w1*(A_01_3 + A_01_7 + A_10_0 + A_10_4);
3104                                  const double tmp1_0 = A_22_3 + A_22_7;                                  const double tmp137 = w15*(A_02_0 + A_02_2 + A_20_5 + A_20_7);
3105                                  const double tmp172_0 = A_10_1 + A_10_5;                                  const double tmp138 = w16*(A_01_0 + A_01_4 + A_10_3 + A_10_7);
3106                                  const double tmp222_0 = A_12_5 + A_21_3;                                  const double tmp139 = w5*(A_02_5 + A_02_7 + A_20_0 + A_20_2);
3107                                  const double tmp201_0 = A_02_2 + A_02_5 + A_20_2 + A_20_5;                                  const double tmp140 = w18*(A_12_5 - A_21_1);
3108                                  const double tmp155_0 = A_12_4 + A_21_4;                                  const double tmp141 = w14*(A_00_0 + A_00_1 + A_00_4 + A_00_5);
3109                                  const double tmp174_0 = A_02_1 + A_02_4 + A_20_1 + A_20_4;                                  const double tmp142 = w7*(A_22_2 + A_22_6);
3110                                  const double tmp59_0 = A_01_0 + A_01_3;                                  const double tmp143 = w1*(-A_01_2 - A_01_6 - A_10_2 - A_10_6);
3111                                  const double tmp21_0 = A_20_2 + A_20_7;                                  const double tmp144 = w4*(-A_12_2 + A_21_6);
3112                                  const double tmp141_0 = A_02_2 + A_02_7 + A_20_2 + A_20_7;                                  const double tmp145 = w15*(-A_02_1 - A_02_4 + A_20_0 + A_20_5);
3113                                  const double tmp210_0 = A_01_1 + A_10_1;                                  const double tmp146 = w0*(A_00_2 + A_00_3 + A_00_6 + A_00_7);
3114                                  const double tmp145_0 = A_00_0 + A_00_1;                                  const double tmp147 = w16*(-A_01_1 - A_01_5 - A_10_1 - A_10_5);
3115                                  const double tmp121_0 = A_12_0 + A_12_1 + A_21_6 + A_21_7;                                  const double tmp148 = w5*(-A_02_3 - A_02_6 + A_20_2 + A_20_7);
3116                                  const double tmp224_0 = A_12_3 + A_12_4 + A_21_2 + A_21_5;                                  const double tmp149 = w19*(A_22_1 + A_22_5);
3117                                  const double tmp186_0 = A_02_2 + A_20_7;                                  const double tmp150 = w17*(-A_02_5 + A_20_1);
3118                                  const double tmp53_0 = A_11_4 + A_11_6;                                  const double tmp151 = w2*(A_02_2 - A_20_6);
3119                                  const double tmp184_0 = A_02_5 + A_20_0;                                  const double tmp152 = w18*(A_12_3 - A_21_7);
3120                                  const double tmp38_0 = A_12_0 + A_12_1;                                  const double tmp153 = w11*(A_02_1 + A_02_6 - A_20_2 - A_20_5);
3121                                  const double tmp12_0 = A_01_1 + A_01_2 + A_01_5 + A_01_6 + A_10_1 + A_10_2 + A_10_5 + A_10_6;                                  const double tmp154 = w10*(-A_12_2 - A_12_5 + A_21_1 + A_21_6);
3122                                  const double tmp230_0 = A_12_6 + A_21_0;                                  const double tmp155 = w4*(-A_12_4 + A_21_0);
3123                                  const double tmp23_0 = A_11_4 + A_11_5 + A_11_6 + A_11_7;                                  const double tmp156 = w15*(A_02_2 + A_02_7 - A_20_3 - A_20_6);
3124                                  const double tmp81_0 = A_20_1 + A_20_4;                                  const double tmp157 = w5*(A_02_0 + A_02_5 - A_20_1 - A_20_4);
3125                                  const double tmp134_0 = A_10_3 + A_10_7;                                  const double tmp158 = w17*(A_02_3 - A_20_7);
3126                                  const double tmp129_0 = A_21_0 + A_21_1;                                  const double tmp159 = w2*(-A_02_4 + A_20_0);
3127                                  const double tmp137_0 = A_01_0 + A_01_3 + A_01_4 + A_01_7;                                  const double tmp160 = w6*(A_12_6 + A_12_7 + A_21_0 + A_21_1);
3128                                  const double tmp198_0 = A_01_0 + A_10_0;                                  const double tmp161 = w10*(-A_12_2 - A_12_3 - A_12_4 - A_12_5 - A_21_2 - A_21_3 - A_21_4 - A_21_5);
3129                                  const double tmp9_0 = A_21_1 + A_21_7;                                  const double tmp162 = w1*(A_01_0 + A_01_4 + A_10_3 + A_10_7);
3130                                  const double tmp179_0 = A_01_0 + A_01_4;                                  const double tmp163 = w16*(A_01_3 + A_01_7 + A_10_0 + A_10_4);
3131                                  const double tmp100_0 = A_20_1 + A_20_3 + A_20_4 + A_20_6;                                  const double tmp164 = w12*(A_12_0 + A_12_1 + A_21_6 + A_21_7);
3132                                  const double tmp173_0 = A_02_0 + A_20_5;                                  const double tmp165 = w20*(A_01_6 + A_10_5);
3133                                  const double tmp42_0 = A_21_0 + A_21_1 + A_21_6 + A_21_7;                                  const double tmp166 = w10*(-A_12_0 - A_12_1 - A_12_6 - A_12_7 + A_21_2 + A_21_3 + A_21_4 + A_21_5);
3134                                  const double tmp226_0 = A_12_3 + A_21_5;                                  const double tmp167 = w15*(A_02_1 + A_02_3 - A_20_0 - A_20_2);
3135                                  const double tmp6_0 = A_22_0 + A_22_4;                                  const double tmp168 = w21*(A_01_1 + A_10_2);
3136                                  const double tmp218_0 = A_12_1 + A_21_1;                                  const double tmp169 = w12*(A_12_2 + A_12_3 - A_21_0 - A_21_1);
3137                                  const double tmp28_0 = A_01_2 + A_10_1;                                  const double tmp170 = w5*(A_02_4 + A_02_6 - A_20_5 - A_20_7);
3138                                  const double tmp133_0 = A_02_6 + A_20_3;                                  const double tmp171 = w8*(-A_01_2 - A_01_5 - A_10_1 - A_10_6);
3139                                  const double tmp13_0 = A_00_2 + A_00_3 + A_00_6 + A_00_7;                                  const double tmp172 = w6*(A_12_4 + A_12_5 - A_21_6 - A_21_7);
3140                                  const double tmp27_0 = A_12_2 + A_12_3 + A_12_4 + A_12_5;                                  const double tmp173 = w2*(A_02_1 + A_20_4);
3141                                  const double tmp75_0 = A_10_1 + A_10_6;                                  const double tmp174 = w11*(-A_02_3 - A_02_4 - A_20_1 - A_20_6);
3142                                  const double tmp36_0 = A_01_0 + A_01_3 + A_10_0 + A_10_3;                                  const double tmp175 = w14*(-A_00_2 - A_00_3 - A_00_6 - A_00_7);
3143                                  const double tmp138_0 = A_10_0 + A_10_4;                                  const double tmp176 = w22*(-A_11_0 - A_11_1 - A_11_2 - A_11_3 - A_11_4 - A_11_5 - A_11_6 - A_11_7);
3144                                  const double tmp189_0 = A_12_2 + A_21_2;                                  const double tmp177 = w1*(A_01_1 + A_01_5 - A_10_0 - A_10_4);
3145                                  const double tmp181_0 = A_02_7 + A_20_2;                                  const double tmp178 = w25*(-A_22_2 - A_22_3 - A_22_6 - A_22_7);
3146                                  const double tmp85_0 = A_02_1 + A_02_3 + A_20_4 + A_20_6;                                  const double tmp179 = w15*(-A_02_2 - A_02_7 - A_20_2 - A_20_7);
3147                                  const double tmp122_0 = A_01_1 + A_10_2;                                  const double tmp180 = w0*(-A_00_0 - A_00_1 - A_00_4 - A_00_5);
3148                                  const double tmp95_0 = A_01_3 + A_10_0;                                  const double tmp181 = w16*(A_01_2 + A_01_6 - A_10_3 - A_10_7);
3149                                  const double tmp120_0 = A_12_6 + A_12_7 + A_21_0 + A_21_1;                                  const double tmp182 = w12*(-A_12_6 - A_12_7 + A_21_2 + A_21_3);
3150                                  const double tmp196_0 = A_02_0 + A_20_0;                                  const double tmp183 = w5*(-A_02_0 - A_02_5 - A_20_0 - A_20_5);
3151                                  const double tmp171_0 = A_02_3 + A_02_4;                                  const double tmp184 = w8*(A_01_0 + A_01_3 + A_01_4 + A_01_7 - A_10_1 - A_10_2 - A_10_5 - A_10_6);
3152                                  const double tmp204_0 = A_12_1 + A_12_6 + A_21_1 + A_21_6;                                  const double tmp185 = w6*(-A_12_0 - A_12_1 + A_21_4 + A_21_5);
3153                                  const double tmp45_0 = A_10_1 + A_10_2;                                  const double tmp186 = w17*(-A_02_6 - A_20_3);
3154                                  const double tmp101_0 = A_01_5 + A_01_6 + A_10_5 + A_10_6;                                  const double tmp187 = w23*(-A_22_0 - A_22_1 - A_22_4 - A_22_5);
3155                                  const double tmp58_0 = A_11_0 + A_11_2 + A_11_5 + A_11_7;                                  const double tmp188 = w18*(A_12_4 - A_21_0);
3156                                  const double tmp107_0 = A_20_3 + A_20_4;                                  const double tmp189 = w7*(A_22_3 + A_22_7);
3157                                  const double tmp30_0 = A_01_1 + A_01_6 + A_10_2 + A_10_5;                                  const double tmp190 = w1*(A_01_3 + A_01_7 + A_10_3 + A_10_7);
3158                                  const double tmp63_0 = A_12_2 + A_12_5;                                  const double tmp191 = w4*(-A_12_3 + A_21_7);
3159                                  const double tmp127_0 = A_12_2 + A_12_3;                                  const double tmp192 = w16*(A_01_0 + A_01_4 + A_10_0 + A_10_4);
3160                                  const double tmp177_0 = A_02_2 + A_02_5 + A_20_0 + A_20_7;                                  const double tmp193 = w19*(A_22_0 + A_22_4);
3161                                  const double tmp178_0 = A_10_0 + A_10_3 + A_10_4 + A_10_7;                                  const double tmp194 = w17*(A_02_4 - A_20_0);
3162                                  const double tmp76_0 = A_01_1 + A_01_2;                                  const double tmp195 = w2*(-A_02_3 + A_20_7);
3163                                  const double tmp80_0 = A_22_2 + A_22_3 + A_22_6 + A_22_7;                                  const double tmp196 = w20*(-A_01_7 - A_10_4);
3164                                  const double tmp41_0 = A_12_6 + A_12_7;                                  const double tmp197 = w21*(-A_01_0 - A_10_3);
3165                                  const double tmp89_0 = A_01_0 + A_01_3 + A_01_4 + A_01_7 + A_10_0 + A_10_3 + A_10_4 + A_10_7;                                  const double tmp198 = w16*(A_01_1 + A_01_2 + A_10_1 + A_10_2);
3166                                  const double tmp116_0 = A_02_1 + A_02_3 + A_02_4 + A_02_6 + A_20_1 + A_20_3 + A_20_4 + A_20_6;                                  const double tmp199 = w8*(A_01_3 + A_01_4 + A_10_0 + A_10_7);
3167                                  const double tmp33_0 = A_22_0 + A_22_1 + A_22_2 + A_22_3 + A_22_4 + A_22_5 + A_22_6 + A_22_7;                                  const double tmp200 = w1*(A_01_5 + A_01_6 + A_10_5 + A_10_6);
3168                                  const double tmp169_0 = A_21_3 + A_21_4;                                  const double tmp201 = w27*(A_00_2 + A_00_3 + A_00_4 + A_00_5);
3169                                  const double tmp96_0 = A_20_0 + A_20_2;                                  const double tmp202 = w11*(-A_02_2 - A_02_5 + A_20_3 + A_20_4);
3170                                  const double tmp111_0 = A_12_3 + A_12_4;                                  const double tmp203 = w20*(A_01_0 - A_10_1);
3171                                  const double tmp118_0 = A_20_2 + A_20_5;                                  const double tmp204 = w23*(A_22_0 + A_22_1 + A_22_4 + A_22_5);
3172                                  const double tmp19_0 = A_12_3 + A_12_5;                                  const double tmp205 = w25*(A_22_2 + A_22_3 + A_22_6 + A_22_7);
3173                                  const double tmp68_0 = A_01_5 + A_01_6;                                  const double tmp206 = w21*(A_01_7 - A_10_6);
3174                                  const double tmp7_0 = A_11_1 + A_11_3 + A_11_5 + A_11_7;                                  const double tmp207 = w12*(A_12_6 + A_12_7 + A_21_6 + A_21_7);
3175                                  const double tmp154_0 = A_12_3 + A_21_3;                                  const double tmp208 = w28*(A_00_0 + A_00_1);
3176                                  const double tmp152_0 = A_02_4 + A_20_4;                                  const double tmp209 = w29*(A_00_6 + A_00_7);
3177                                  const double tmp153_0 = A_02_3 + A_20_3;                                  const double tmp210 = w8*(-A_01_3 - A_01_4 + A_10_2 + A_10_5);
3178                                  const double tmp163_0 = A_02_5 + A_02_7 + A_20_5 + A_20_7;                                  const double tmp211 = w6*(A_12_0 + A_12_1 + A_21_0 + A_21_1);
3179                                  const double tmp44_0 = A_01_4 + A_01_7;                                  const double tmp212 = w17*(-A_02_7 + A_20_6);
3180                                  const double tmp39_0 = A_02_1 + A_02_3 + A_02_4 + A_02_6;                                  const double tmp213 = w2*(A_02_0 - A_20_1);
3181                                  const double tmp123_0 = A_21_2 + A_21_3 + A_21_4 + A_21_5;                                  const double tmp214 = w13*(-A_22_1 - A_22_2 - A_22_5 - A_22_6);
3182                                  const double tmp40_0 = A_02_5 + A_02_7;                                  const double tmp215 = w22*(-A_11_0 - A_11_2 - A_11_5 - A_11_7);
3183                                  const double tmp110_0 = A_02_0 + A_02_7;                                  const double tmp216 = w8*(A_01_0 + A_01_7 + A_10_0 + A_10_7);
3184                                  const double tmp77_0 = A_12_2 + A_12_3 + A_21_2 + A_21_3;                                  const double tmp217 = w27*(-A_00_0 - A_00_1 - A_00_6 - A_00_7);
3185                                  const double tmp209_0 = A_12_7 + A_21_1;                                  const double tmp218 = w17*(-A_02_3 - A_20_3);
3186                                  const double tmp219_0 = A_02_4 + A_20_1;                                  const double tmp219 = w2*(A_02_4 + A_20_4);
3187                                  const double tmp84_0 = A_01_1 + A_01_5 + A_10_2 + A_10_6;                                  const double tmp220 = w11*(-A_02_1 - A_02_6 - A_20_1 - A_20_6);
3188                                  const double tmp162_0 = A_12_1 + A_12_7 + A_21_1 + A_21_7;                                  const double tmp221 = w26*(-A_11_4 - A_11_6);
3189                                  const double tmp159_0 = A_01_3 + A_10_3;                                  const double tmp222 = w10*(A_12_2 + A_12_5 + A_21_2 + A_21_5);
3190                                  const double tmp56_0 = A_11_1 + A_11_3;                                  const double tmp223 = w20*(-A_01_4 - A_10_4);
3191                                  const double tmp52_0 = A_01_2 + A_01_5;                                  const double tmp224 = w21*(-A_01_3 - A_10_3);
3192                                  const double tmp26_0 = A_00_4 + A_00_5 + A_00_6 + A_00_7;                                  const double tmp225 = w6*(-A_12_0 - A_12_6 - A_21_0 - A_21_6);
3193                                  const double tmp229_0 = A_12_0 + A_12_7 + A_21_1 + A_21_6;                                  const double tmp226 = w7*(-A_22_0 - A_22_4);
3194                                  const double tmp151_0 = A_10_2 + A_10_5;                                  const double tmp227 = w24*(-A_11_1 - A_11_3);
3195                                  const double tmp136_0 = A_02_0 + A_02_5 + A_20_0 + A_20_5;                                  const double tmp228 = w19*(-A_22_3 - A_22_7);
3196                                  const double tmp128_0 = A_21_6 + A_21_7;                                  const double tmp229 = w18*(-A_12_3 - A_21_3);
3197                                  const double tmp15_0 = A_12_2 + A_12_4;                                  const double tmp230 = w4*(A_12_4 + A_21_4);
3198                                  const double tmp296_1 = tmp159_0*w42;                                  const double tmp231 = w28*(-A_00_4 - A_00_5);
3199                                  const double tmp130_1 = tmp67_0*w5;                                  const double tmp232 = w12*(-A_12_1 - A_12_7 - A_21_1 - A_21_7);
3200                                  const double tmp98_1 = A_01_6*w42;                                  const double tmp233 = w29*(-A_00_2 - A_00_3);
3201                                  const double tmp231_1 = tmp125_0*w6;                                  const double tmp234 = w20*(-A_01_5 + A_10_7);
3202                                  const double tmp42_1 = tmp34_0*w12;                                  const double tmp235 = w18*(-A_12_0 + A_21_2);
3203                                  const double tmp199_1 = A_02_5*w28;                                  const double tmp236 = w26*(A_11_5 + A_11_7);
3204                                  const double tmp113_1 = tmp29_0*w13;                                  const double tmp237 = w10*(A_12_1 + A_12_6 - A_21_3 - A_21_4);
3205                                  const double tmp330_1 = tmp152_0*w28;                                  const double tmp238 = w22*(A_11_1 + A_11_3 + A_11_4 + A_11_6);
3206                                  const double tmp90_1 = A_01_1*w46;                                  const double tmp239 = w4*(A_12_7 - A_21_5);
3207                                  const double tmp446_1 = tmp77_0*w22;                                  const double tmp240 = w15*(A_02_0 + A_02_2 + A_20_0 + A_20_2);
3208                                  const double tmp108_1 = tmp43_0*w5;                                  const double tmp241 = w21*(-A_01_2 + A_10_0);
3209                                  const double tmp524_1 = A_12_6*w29;                                  const double tmp242 = w5*(A_02_5 + A_02_7 + A_20_5 + A_20_7);
3210                                  const double tmp232_1 = tmp126_0*w34;                                  const double tmp243 = w12*(-A_12_2 - A_12_4 + A_21_0 + A_21_6);
3211                                  const double tmp33_1 = tmp25_0*w37;                                  const double tmp244 = w24*(A_11_0 + A_11_2);
3212                                  const double tmp461_1 = tmp180_0*w1;                                  const double tmp245 = w8*(A_01_1 + A_01_6 - A_10_3 - A_10_4);
3213                                  const double tmp14_1 = tmp8_0*w6;                                  const double tmp246 = w6*(-A_12_3 - A_12_5 + A_21_1 + A_21_7);
3214                                  const double tmp447_1 = tmp205_0*w26;                                  const double tmp247 = w11*(A_02_3 + A_02_4 - A_20_2 - A_20_5);
3215                                  const double tmp452_1 = tmp198_0*w42;                                  const double tmp248 = w20*(-A_01_1 + A_10_0);
3216                                  const double tmp217_1 = tmp81_0*w9;                                  const double tmp249 = w21*(-A_01_6 + A_10_7);
3217                                  const double tmp76_1 = tmp59_0*w20;                                  const double tmp250 = w8*(A_01_2 + A_01_5 - A_10_3 - A_10_4);
3218                                  const double tmp421_1 = tmp134_0*w31;                                  const double tmp251 = w17*(A_02_6 - A_20_7);
3219                                  const double tmp485_1 = tmp51_0*w51;                                  const double tmp252 = w2*(-A_02_1 + A_20_0);
3220                                  const double tmp240_1 = tmp131_0*w1;                                  const double tmp253 = w17*(-A_02_4 - A_20_4);
3221                                  const double tmp160_1 = tmp91_0*w9;                                  const double tmp254 = w2*(A_02_3 + A_20_3);
3222                                  const double tmp174_1 = A_20_1*w26;                                  const double tmp255 = w26*(-A_11_1 - A_11_3);
3223                                  const double tmp273_1 = A_10_1*w46;                                  const double tmp256 = w20*(-A_01_3 - A_10_3);
3224                                  const double tmp159_1 = tmp90_0*w47;                                  const double tmp257 = w21*(-A_01_4 - A_10_4);
3225                                  const double tmp228_1 = tmp103_0*w5;                                  const double tmp258 = w6*(-A_12_1 - A_12_7 - A_21_1 - A_21_7);
3226                                  const double tmp313_1 = tmp166_0*w45;                                  const double tmp259 = w7*(-A_22_3 - A_22_7);
3227                                  const double tmp45_1 = tmp37_0*w30;                                  const double tmp260 = w15*(-A_02_0 - A_02_5 - A_20_0 - A_20_5);
3228                                  const double tmp512_1 = tmp147_0*w13;                                  const double tmp261 = w24*(-A_11_4 - A_11_6);
3229                                  const double tmp73_1 = tmp56_0*w43;                                  const double tmp262 = w19*(-A_22_0 - A_22_4);
3230                                  const double tmp61_1 = A_01_6*w46;                                  const double tmp263 = w18*(-A_12_4 - A_21_4);
3231                                  const double tmp316_1 = tmp167_0*w43;                                  const double tmp264 = w4*(A_12_3 + A_21_3);
3232                                  const double tmp189_1 = tmp112_0*w20;                                  const double tmp265 = w28*(-A_00_2 - A_00_3);
3233                                  const double tmp455_1 = tmp215_0*w39;                                  const double tmp266 = w12*(-A_12_0 - A_12_6 - A_21_0 - A_21_6);
3234                                  const double tmp360_1 = A_21_5*w24;                                  const double tmp267 = w5*(-A_02_2 - A_02_7 - A_20_2 - A_20_7);
3235                                  const double tmp258_1 = A_20_7*w2;                                  const double tmp268 = w29*(-A_00_4 - A_00_5);
3236                                  const double tmp196_1 = A_20_6*w26;                                  const double tmp269 = w11*(A_02_2 + A_02_5 + A_20_0 + A_20_7);
3237                                  const double tmp37_1 = tmp29_0*w6;                                  const double tmp270 = w1*(-A_01_0 - A_01_4 + A_10_1 + A_10_5);
3238                                  const double tmp9_1 = A_12_7*w29;                                  const double tmp271 = w15*(A_02_3 + A_02_6 + A_20_3 + A_20_6);
3239                                  const double tmp80_1 = tmp63_0*w19;                                  const double tmp272 = w16*(-A_01_3 - A_01_7 + A_10_2 + A_10_6);
3240                                  const double tmp312_1 = tmp165_0*w8;                                  const double tmp273 = w5*(A_02_1 + A_02_4 + A_20_1 + A_20_4);
3241                                  const double tmp264_1 = tmp101_0*w1;                                  const double tmp274 = w8*(-A_01_1 - A_01_2 - A_01_5 - A_01_6 + A_10_0 + A_10_3 + A_10_4 + A_10_7);
3242                                  const double tmp124_1 = A_02_3*w26;                                  const double tmp275 = w17*(A_02_7 + A_20_2);
3243                                  const double tmp229_1 = tmp123_0*w11;                                  const double tmp276 = w2*(-A_02_0 - A_20_5);
3244                                  const double tmp333_1 = tmp159_0*w46;                                  const double tmp277 = w18*(-A_12_1 + A_21_5);
3245                                  const double tmp533_1 = tmp222_0*w4;                                  const double tmp278 = w11*(A_02_3 + A_02_4 - A_20_0 - A_20_7);
3246                                  const double tmp201_1 = tmp108_0*w37;                                  const double tmp279 = w10*(A_12_0 + A_12_7 - A_21_3 - A_21_4);
3247                                  const double tmp444_1 = tmp35_0*w10;                                  const double tmp280 = w4*(A_12_6 - A_21_2);
3248                                  const double tmp51_1 = tmp43_0*w18;                                  const double tmp281 = w17*(A_02_1 - A_20_5);
3249                                  const double tmp214_1 = A_21_7*w29;                                  const double tmp282 = w2*(-A_02_6 + A_20_2);
3250                                  const double tmp518_1 = tmp86_0*w37;                                  const double tmp283 = w11*(A_02_0 + A_02_7 + A_20_2 + A_20_5);
3251                                  const double tmp192_1 = tmp115_0*w5;                                  const double tmp284 = w12*(A_12_2 + A_12_3 - A_21_6 - A_21_7);
3252                                  const double tmp355_1 = A_21_2*w27;                                  const double tmp285 = w6*(A_12_4 + A_12_5 - A_21_0 - A_21_1);
3253                                  const double tmp156_1 = tmp87_0*w22;                                  const double tmp286 = w17*(A_02_2 + A_20_7);
3254                                  const double tmp516_1 = tmp230_0*w27;                                  const double tmp287 = w2*(-A_02_5 - A_20_0);
3255                                  const double tmp366_1 = tmp104_0*w57;                                  const double tmp288 = w13*(-A_22_0 - A_22_3 - A_22_4 - A_22_7);
3256                                  const double tmp271_1 = tmp146_0*w49;                                  const double tmp289 = w22*(-A_11_1 - A_11_3 - A_11_4 - A_11_6);
3257                                  const double tmp437_1 = tmp218_0*w24;                                  const double tmp290 = w8*(-A_01_1 - A_01_6 - A_10_1 - A_10_6);
3258                                  const double tmp436_1 = tmp104_0*w54;                                  const double tmp291 = w17*(A_02_2 + A_20_2);
3259                                  const double tmp167_1 = tmp98_0*w8;                                  const double tmp292 = w2*(-A_02_5 - A_20_5);
3260                                  const double tmp136_1 = tmp70_0*w34;                                  const double tmp293 = w11*(A_02_0 + A_02_7 + A_20_0 + A_20_7);
3261                                  const double tmp406_1 = tmp207_0*w27;                                  const double tmp294 = w26*(-A_11_5 - A_11_7);
3262                                  const double tmp193_1 = tmp116_0*w12;                                  const double tmp295 = w10*(A_12_3 + A_12_4 + A_21_3 + A_21_4);
3263                                  const double tmp486_1 = tmp225_0*w29;                                  const double tmp296 = w20*(A_01_5 + A_10_5);
3264                                  const double tmp469_1 = tmp224_0*w11;                                  const double tmp297 = w21*(A_01_2 + A_10_2);
3265                                  const double tmp287_1 = tmp71_0*w53;                                  const double tmp298 = w7*(-A_22_1 - A_22_5);
3266                                  const double tmp430_1 = tmp213_0*w28;                                  const double tmp299 = w24*(-A_11_0 - A_11_2);
3267                                  const double tmp462_1 = tmp220_0*w2;                                  const double tmp300 = w19*(-A_22_2 - A_22_6);
3268                                  const double tmp294_1 = tmp53_0*w59;                                  const double tmp301 = w18*(-A_12_2 - A_21_2);
3269                                  const double tmp218_1 = tmp118_0*w16;                                  const double tmp302 = w4*(A_12_5 + A_21_5);
3270                                  const double tmp116_1 = tmp25_0*w31;                                  const double tmp303 = w8*(A_01_3 + A_01_4 + A_10_3 + A_10_4);
3271                                  const double tmp495_1 = tmp76_0*w37;                                  const double tmp304 = w27*(-A_00_2 - A_00_3 - A_00_4 - A_00_5);
3272                                  const double tmp501_1 = tmp99_0*w46;                                  const double tmp305 = w17*(A_02_7 + A_20_7);
3273                                  const double tmp0_1 = tmp0_0*w1;                                  const double tmp306 = w2*(-A_02_0 - A_20_0);
3274                                  const double tmp99_1 = tmp62_0*w17;                                  const double tmp307 = w11*(A_02_2 + A_02_5 + A_20_2 + A_20_5);
3275                                  const double tmp429_1 = tmp212_0*w2;                                  const double tmp308 = w26*(-A_11_0 - A_11_2);
3276                                  const double tmp249_1 = tmp136_0*w9;                                  const double tmp309 = w10*(-A_12_1 - A_12_6 - A_21_1 - A_21_6);
3277                                  const double tmp504_1 = tmp229_0*w19;                                  const double tmp310 = w20*(-A_01_0 - A_10_0);
3278                                  const double tmp197_1 = A_12_2*w27;                                  const double tmp311 = w21*(-A_01_7 - A_10_7);
3279                                  const double tmp531_1 = tmp122_0*w35;                                  const double tmp312 = w6*(A_12_2 + A_12_4 + A_21_2 + A_21_4);
3280                                  const double tmp265_1 = tmp142_0*w46;                                  const double tmp313 = w24*(-A_11_5 - A_11_7);
3281                                  const double tmp488_1 = tmp226_0*w4;                                  const double tmp314 = w18*(A_12_7 + A_21_7);
3282                                  const double tmp528_1 = tmp115_0*w18;                                  const double tmp315 = w4*(-A_12_0 - A_21_0);
3283                                  const double tmp438_1 = tmp219_0*w2;                                  const double tmp316 = w28*(-A_00_0 - A_00_1);
3284                                  const double tmp233_1 = tmp127_0*w13;                                  const double tmp317 = w12*(A_12_3 + A_12_5 + A_21_3 + A_21_5);
3285                                  const double tmp491_1 = tmp79_0*w1;                                  const double tmp318 = w29*(-A_00_6 - A_00_7);
3286                                  const double tmp215_1 = A_21_0*w4;                                  const double tmp319 = w18*(-A_12_7 + A_21_5);
3287                                  const double tmp24_1 = tmp18_0*w21;                                  const double tmp320 = w26*(A_11_0 + A_11_2);
3288                                  const double tmp538_1 = tmp209_0*w27;                                  const double tmp321 = w21*(-A_01_5 + A_10_7);
3289                                  const double tmp379_1 = tmp167_0*w55;                                  const double tmp322 = w20*(-A_01_2 + A_10_0);
3290                                  const double tmp332_1 = tmp154_0*w4;                                  const double tmp323 = w4*(A_12_0 - A_21_2);
3291                                  const double tmp498_1 = tmp68_0*w31;                                  const double tmp324 = w15*(A_02_5 + A_02_7 + A_20_5 + A_20_7);
3292                                  const double tmp41_1 = tmp33_0*w33;                                  const double tmp325 = w24*(A_11_5 + A_11_7);
3293                                  const double tmp464_1 = tmp179_0*w37;                                  const double tmp326 = w5*(A_02_0 + A_02_2 + A_20_0 + A_20_2);
3294                                  const double tmp317_1 = tmp168_0*w40;                                  const double tmp327 = w18*(A_12_7 + A_21_1);
3295                                  const double tmp378_1 = tmp106_0*w54;                                  const double tmp328 = w10*(-A_12_1 - A_12_6 - A_21_0 - A_21_7);
3296                                  const double tmp184_1 = tmp109_0*w14;                                  const double tmp329 = w3*(-A_11_0 - A_11_2 - A_11_4 - A_11_6);
3297                                  const double tmp292_1 = tmp14_0*w33;                                  const double tmp330 = w1*(A_01_2 + A_01_6 - A_10_0 - A_10_4);
3298                                  const double tmp11_1 = tmp5_0*w11;                                  const double tmp331 = w4*(-A_12_0 - A_21_6);
3299                                  const double tmp354_1 = A_02_6*w26;                                  const double tmp332 = w25*(-A_22_1 - A_22_3 - A_22_5 - A_22_7);
3300                                  const double tmp84_1 = tmp37_0*w0;                                  const double tmp333 = w15*(-A_02_5 - A_02_7 + A_20_1 + A_20_3);
3301                                  const double tmp422_1 = tmp13_0*w30;                                  const double tmp334 = w16*(A_01_1 + A_01_5 - A_10_3 - A_10_7);
3302                                  const double tmp132_1 = tmp69_0*w11;                                  const double tmp335 = w9*(-A_11_1 - A_11_3 - A_11_5 - A_11_7);
3303                                  const double tmp251_1 = tmp138_0*w31;                                  const double tmp336 = w5*(-A_02_0 - A_02_2 + A_20_4 + A_20_6);
3304                                  const double tmp18_1 = tmp12_0*w8;                                  const double tmp337 = w27*(-A_00_0 - A_00_1 - A_00_2 - A_00_3 - A_00_4 - A_00_5 - A_00_6 - A_00_7);
3305                                  const double tmp88_1 = A_21_1*w4;                                  const double tmp338 = w23*(-A_22_0 - A_22_2 - A_22_4 - A_22_6);
3306                                  const double tmp188_1 = A_12_2*w24;                                  const double tmp339 = w14*(-A_00_0 - A_00_1 - A_00_4 - A_00_5);
3307                                  const double tmp465_1 = tmp175_0*w31;                                  const double tmp340 = w23*(-A_22_2 - A_22_3 - A_22_6 - A_22_7);
3308                                  const double tmp235_1 = tmp128_0*w17;                                  const double tmp341 = w1*(A_01_2 + A_01_6 - A_10_3 - A_10_7);
3309                                  const double tmp323_1 = A_02_1*w26;                                  const double tmp342 = w25*(-A_22_0 - A_22_1 - A_22_4 - A_22_5);
3310                                  const double tmp31_1 = tmp23_0*w38;                                  const double tmp343 = w15*(A_02_1 + A_02_4 + A_20_1 + A_20_4);
3311                                  const double tmp397_1 = tmp170_0*w5;                                  const double tmp344 = w0*(-A_00_2 - A_00_3 - A_00_6 - A_00_7);
3312                                  const double tmp175_1 = tmp7_0*w3;                                  const double tmp345 = w16*(A_01_1 + A_01_5 - A_10_0 - A_10_4);
3313                                  const double tmp148_1 = tmp81_0*w21;                                  const double tmp346 = w12*(A_12_4 + A_12_5 - A_21_0 - A_21_1);
3314                                  const double tmp238_1 = tmp130_0*w19;                                  const double tmp347 = w5*(A_02_3 + A_02_6 + A_20_3 + A_20_6);
3315                                  const double tmp59_1 = tmp46_0*w11;                                  const double tmp348 = w6*(A_12_2 + A_12_3 - A_21_6 - A_21_7);
3316                                  const double tmp432_1 = tmp215_0*w35;                                  const double tmp349 = w17*(A_02_5 + A_20_0);
3317                                  const double tmp398_1 = A_01_2*w46;                                  const double tmp350 = w2*(-A_02_2 - A_20_7);
3318                                  const double tmp497_1 = A_10_5*w46;                                  const double tmp351 = w8*(-A_01_2 - A_01_5 - A_10_2 - A_10_5);
3319                                  const double tmp28_1 = tmp21_0*w18;                                  const double tmp352 = w17*(-A_02_1 - A_20_1);
3320                                  const double tmp115_1 = tmp23_0*w32;                                  const double tmp353 = w2*(A_02_6 + A_20_6);
3321                                  const double tmp441_1 = tmp23_0*w3;                                  const double tmp354 = w11*(-A_02_3 - A_02_4 - A_20_3 - A_20_4);
3322                                  const double tmp131_1 = tmp68_0*w37;                                  const double tmp355 = w10*(-A_12_0 - A_12_7 - A_21_0 - A_21_7);
3323                                  const double tmp289_1 = tmp155_0*w4;                                  const double tmp356 = w20*(A_01_6 + A_10_6);
3324                                  const double tmp278_1 = tmp80_0*w44;                                  const double tmp357 = w21*(A_01_1 + A_10_1);
3325                                  const double tmp5_1 = A_21_4*w27;                                  const double tmp358 = w7*(-A_22_2 - A_22_6);
3326                                  const double tmp254_1 = tmp140_0*w20;                                  const double tmp359 = w19*(-A_22_1 - A_22_5);
3327                                  const double tmp183_1 = tmp108_0*w31;                                  const double tmp360 = w18*(A_12_1 + A_21_1);
3328                                  const double tmp279_1 = tmp151_0*w8;                                  const double tmp361 = w4*(-A_12_6 - A_21_6);
3329                                  const double tmp298_1 = tmp161_0*w16;                                  const double tmp362 = w28*(-A_00_6 - A_00_7);
3330                                  const double tmp505_1 = tmp230_0*w24;                                  const double tmp363 = w29*(-A_00_0 - A_00_1);
3331                                  const double tmp246_1 = tmp80_0*w52;                                  const double tmp364 = w2*(A_02_4 + A_20_1);
3332                                  const double tmp100_1 = tmp53_0*w43;                                  const double tmp365 = w11*(-A_02_1 - A_02_6 - A_20_3 - A_20_4);
3333                                  const double tmp440_1 = tmp221_0*w16;                                  const double tmp366 = w17*(-A_02_3 - A_20_6);
3334                                  const double tmp481_1 = tmp188_0*w23;                                  const double tmp367 = w2*(A_02_5 - A_20_4);
3335                                  const double tmp480_1 = tmp187_0*w35;                                  const double tmp368 = w6*(-A_12_4 - A_12_5 - A_21_4 - A_21_5);
3336                                  const double tmp384_1 = tmp150_0*w53;                                  const double tmp369 = w11*(-A_02_0 - A_02_7 + A_20_1 + A_20_6);
3337                                  const double tmp142_1 = tmp76_0*w31;                                  const double tmp370 = w20*(-A_01_5 + A_10_4);
3338                                  const double tmp372_1 = tmp191_0*w11;                                  const double tmp371 = w3*(A_11_4 + A_11_5 + A_11_6 + A_11_7);
3339                                  const double tmp307_1 = A_10_7*w35;                                  const double tmp372 = w12*(-A_12_2 - A_12_3 - A_21_2 - A_21_3);
3340                                  const double tmp186_1 = tmp111_0*w19;                                  const double tmp373 = w21*(-A_01_2 + A_10_3);
3341                                  const double tmp127_1 = A_20_2*w2;                                  const double tmp374 = w9*(A_11_0 + A_11_1 + A_11_2 + A_11_3);
3342                                  const double tmp391_1 = tmp167_0*w59;                                  const double tmp375 = w29*(A_00_2 + A_00_3);
3343                                  const double tmp223_1 = tmp113_0*w20;                                  const double tmp376 = w8*(A_01_1 + A_01_6 - A_10_0 - A_10_7);
3344                                  const double tmp454_1 = tmp197_0*w24;                                  const double tmp377 = w28*(A_00_4 + A_00_5);
3345                                  const double tmp241_1 = tmp74_0*w51;                                  const double tmp378 = w17*(-A_02_2 + A_20_3);
3346                                  const double tmp529_1 = tmp114_0*w5;                                  const double tmp379 = w17*(A_02_0 + A_20_0);
3347                                  const double tmp202_1 = tmp104_0*w7;                                  const double tmp380 = w2*(-A_02_7 - A_20_7);
3348                                  const double tmp236_1 = tmp96_0*w21;                                  const double tmp381 = w20*(-A_01_7 - A_10_7);
3349                                  const double tmp358_1 = tmp183_0*w11;                                  const double tmp382 = w21*(-A_01_0 - A_10_0);
3350                                  const double tmp102_1 = tmp51_0*w41;                                  const double tmp383 = w6*(A_12_3 + A_12_5 + A_21_3 + A_21_5);
3351                                  const double tmp493_1 = A_20_5*w2;                                  const double tmp384 = w18*(A_12_0 + A_21_0);
3352                                  const double tmp468_1 = tmp223_0*w4;                                  const double tmp385 = w4*(-A_12_7 - A_21_7);
3353                                  const double tmp435_1 = tmp217_0*w16;                                  const double tmp386 = w12*(A_12_2 + A_12_4 + A_21_2 + A_21_4);
3354                                  const double tmp110_1 = tmp37_0*w36;                                  const double tmp387 = w17*(-A_02_6 - A_20_6);
3355                                  const double tmp479_1 = tmp189_0*w4;                                  const double tmp388 = w2*(A_02_1 + A_20_1);
3356                                  const double tmp120_1 = tmp38_0*w22;                                  const double tmp389 = w20*(A_01_1 + A_10_1);
3357                                  const double tmp16_1 = tmp10_0*w9;                                  const double tmp390 = w21*(A_01_6 + A_10_6);
3358                                  const double tmp407_1 = tmp90_0*w53;                                  const double tmp391 = w18*(A_12_6 + A_21_6);
3359                                  const double tmp442_1 = tmp66_0*w48;                                  const double tmp392 = w4*(-A_12_1 - A_21_1);
3360                                  const double tmp60_1 = A_10_4*w35;                                  const double tmp393 = w2*(A_02_3 + A_20_6);
3361                                  const double tmp69_1 = tmp53_0*w45;                                  const double tmp394 = w1*(-A_01_3 - A_01_7 + A_10_2 + A_10_6);
3362                                  const double tmp144_1 = tmp77_0*w17;                                  const double tmp395 = w16*(-A_01_0 - A_01_4 + A_10_1 + A_10_5);
3363                                  const double tmp507_1 = tmp146_0*w48;                                  const double tmp396 = w17*(-A_02_4 - A_20_1);
3364                                  const double tmp424_1 = tmp174_0*w18;                                  const double tmp397 = w18*(-A_12_5 - A_21_3);
3365                                  const double tmp352_1 = tmp181_0*w23;                                  const double tmp398 = w10*(A_12_3 + A_12_4 + A_21_2 + A_21_5);
3366                                  const double tmp451_1 = tmp199_0*w13;                                  const double tmp399 = w1*(-A_01_0 - A_01_4 + A_10_2 + A_10_6);
3367                                  const double tmp253_1 = tmp139_0*w16;                                  const double tmp400 = w4*(A_12_2 + A_21_4);
3368                                  const double tmp353_1 = tmp182_0*w18;                                  const double tmp401 = w16*(-A_01_3 - A_01_7 + A_10_1 + A_10_5);
3369                                  const double tmp521_1 = tmp88_0*w22;                                  const double tmp402 = w20*(-A_01_2 + A_10_3);
3370                                  const double tmp346_1 = tmp175_0*w37;                                  const double tmp403 = w21*(-A_01_5 + A_10_4);
3371                                  const double tmp416_1 = tmp138_0*w37;                                  const double tmp404 = w17*(-A_02_5 + A_20_4);
3372                                  const double tmp324_1 = A_10_0*w35;                                  const double tmp405 = w2*(A_02_2 - A_20_3);
3373                                  const double tmp152_1 = tmp84_0*w37;                                  const double tmp406 = w18*(-A_12_0 + A_21_4);
3374                                  const double tmp119_1 = tmp32_0*w21;                                  const double tmp407 = w4*(A_12_7 - A_21_3);
3375                                  const double tmp86_1 = A_21_6*w29;                                  const double tmp408 = w17*(-A_02_0 + A_20_4);
3376                                  const double tmp290_1 = tmp156_0*w11;                                  const double tmp409 = w2*(A_02_7 - A_20_3);
3377                                  const double tmp382_1 = tmp196_0*w26;                                  const double tmp410 = w17*(A_02_5 + A_20_5);
3378                                  const double tmp91_1 = tmp49_0*w6;                                  const double tmp411 = w2*(-A_02_2 - A_20_2);
3379                                  const double tmp499_1 = A_10_2*w42;                                  const double tmp412 = w20*(A_01_2 + A_10_2);
3380                                  const double tmp226_1 = tmp121_0*w13;                                  const double tmp413 = w21*(A_01_5 + A_10_5);
3381                                  const double tmp477_1 = tmp195_0*w26;                                  const double tmp414 = w18*(-A_12_5 - A_21_5);
3382                                  const double tmp150_1 = A_02_4*w23;                                  const double tmp415 = w4*(A_12_2 + A_21_2);
3383                                  const double tmp318_1 = tmp15_0*w22;                                  const double tmp416 = w12*(-A_12_0 - A_12_1 + A_21_4 + A_21_5);
3384                                  const double tmp396_1 = tmp206_0*w24;                                  const double tmp417 = w6*(-A_12_6 - A_12_7 + A_21_2 + A_21_3);
3385                                  const double tmp474_1 = A_02_0*w28;                                  const double tmp418 = w17*(A_02_0 + A_20_5);
3386                                  const double tmp245_1 = tmp134_0*w37;                                  const double tmp419 = w2*(-A_02_7 - A_20_2);
3387                                  const double tmp3_1 = A_20_4*w26;                                  const double tmp420 = w18*(-A_12_4 - A_21_2);
3388                                  const double tmp44_1 = tmp36_0*w31;                                  const double tmp421 = w10*(A_12_2 + A_12_5 + A_21_3 + A_21_4);
3389                                  const double tmp487_1 = tmp60_0*w52;                                  const double tmp422 = w3*(-A_11_1 - A_11_3 - A_11_5 - A_11_7);
3390                                  const double tmp293_1 = tmp158_0*w8;                                  const double tmp423 = w1*(A_01_1 + A_01_5 - A_10_3 - A_10_7);
3391                                  const double tmp314_1 = A_01_2*w42;                                  const double tmp424 = w25*(-A_22_0 - A_22_2 - A_22_4 - A_22_6);
3392                                  const double tmp414_1 = tmp80_0*w51;                                  const double tmp425 = w4*(A_12_3 + A_21_5);
3393                                  const double tmp472_1 = A_21_3*w27;                                  const double tmp426 = w15*(A_02_4 + A_02_6 - A_20_0 - A_20_2);
3394                                  const double tmp321_1 = A_21_2*w24;                                  const double tmp427 = w16*(A_01_2 + A_01_6 - A_10_0 - A_10_4);
3395                                  const double tmp225_1 = tmp120_0*w6;                                  const double tmp428 = w9*(-A_11_0 - A_11_2 - A_11_4 - A_11_6);
3396                                  const double tmp377_1 = tmp166_0*w59;                                  const double tmp429 = w5*(A_02_1 + A_02_3 - A_20_5 - A_20_7);
3397                                  const double tmp413_1 = tmp186_0*w26;                                  const double tmp430 = w23*(-A_22_1 - A_22_3 - A_22_5 - A_22_7);
3398                                  const double tmp385_1 = tmp166_0*w55;                                  const double tmp431 = w18*(A_12_5 - A_21_7);
3399                                  const double tmp310_1 = tmp164_0*w34;                                  const double tmp432 = w10*(-A_12_3 - A_12_4 + A_21_1 + A_21_6);
3400                                  const double tmp158_1 = tmp89_0*w34;                                  const double tmp433 = w21*(A_01_7 - A_10_5);
3401                                  const double tmp449_1 = tmp203_0*w46;                                  const double tmp434 = w20*(A_01_0 - A_10_2);
3402                                  const double tmp439_1 = tmp220_0*w28;                                  const double tmp435 = w4*(-A_12_2 + A_21_0);
3403                                  const double tmp22_1 = tmp16_0*w16;                                  const double tmp436 = w8*(-A_01_3 - A_01_4 + A_10_1 + A_10_6);
3404                                  const double tmp164_1 = tmp95_0*w46;                                  const double tmp437 = w2*(-A_02_4 + A_20_5);
3405                                  const double tmp417_1 = tmp74_0*w52;                                  const double tmp438 = w20*(A_01_4 - A_10_5);
3406                                  const double tmp257_1 = tmp6_0*w25;                                  const double tmp439 = w21*(A_01_3 - A_10_2);
3407                                  const double tmp203_1 = tmp18_0*w9;                                  const double tmp440 = w16*(-A_01_1 - A_01_2 + A_10_0 + A_10_3);
3408                                  const double tmp286_1 = tmp153_0*w28;                                  const double tmp441 = w1*(-A_01_5 - A_01_6 + A_10_4 + A_10_7);
3409                                  const double tmp155_1 = tmp33_0*w14;                                  const double tmp442 = w17*(A_02_3 - A_20_2);
3410                                  const double tmp389_1 = tmp201_0*w12;                                  const double tmp443 = w20*(-A_01_4 - A_10_7);
3411                                  const double tmp508_1 = tmp145_0*w49;                                  const double tmp444 = w21*(-A_01_3 - A_10_0);
3412                                  const double tmp300_1 = tmp56_0*w55;                                  const double tmp445 = w18*(A_12_6 + A_21_0);
3413                                  const double tmp299_1 = tmp162_0*w22;                                  const double tmp446 = w10*(-A_12_0 - A_12_7 - A_21_1 - A_21_6);
3414                                  const double tmp173_1 = tmp104_0*w25;                                  const double tmp447 = w1*(-A_01_3 - A_01_7 + A_10_1 + A_10_5);
3415                                  const double tmp32_1 = tmp24_0*w5;                                  const double tmp448 = w4*(-A_12_1 - A_21_7);
3416                                  const double tmp227_1 = tmp122_0*w39;                                  const double tmp449 = w16*(-A_01_0 - A_01_4 + A_10_2 + A_10_6);
3417                                  const double tmp484_1 = tmp3_0*w38;                                  const double tmp450 = w2*(A_02_7 - A_20_6);
3418                                  const double tmp171_1 = tmp102_0*w21;                                  const double tmp451 = w6*(A_12_6 + A_12_7 + A_21_6 + A_21_7);
3419                                  const double tmp478_1 = tmp190_0*w29;                                  const double tmp452 = w20*(A_01_7 - A_10_6);
3420                                  const double tmp320_1 = tmp170_0*w18;                                  const double tmp453 = w21*(A_01_0 - A_10_1);
3421                                  const double tmp327_1 = tmp6_0*w57;                                  const double tmp454 = w12*(A_12_0 + A_12_1 + A_21_0 + A_21_1);
3422                                  const double tmp490_1 = tmp7_0*w32;                                  const double tmp455 = w29*(A_00_0 + A_00_1);
3423                                  const double tmp419_1 = tmp127_0*w6;                                  const double tmp456 = w28*(A_00_6 + A_00_7);
3424                                  const double tmp463_1 = tmp219_0*w28;                                  const double tmp457 = w17*(-A_02_0 + A_20_1);
3425                                  const double tmp12_1 = tmp6_0*w7;                                  const double tmp458 = w21*(-A_01_7 - A_10_4);
3426                                  const double tmp49_1 = tmp41_0*w22;                                  const double tmp459 = w20*(-A_01_0 - A_10_3);
3427                                  const double tmp344_1 = tmp173_0*w26;                                  const double tmp460 = w12*(A_12_4 + A_12_5 - A_21_6 - A_21_7);
3428                                  const double tmp243_1 = tmp132_0*w2;                                  const double tmp461 = w6*(A_12_2 + A_12_3 - A_21_0 - A_21_1);
3429                                  const double tmp83_1 = A_10_4*w39;                                  const double tmp462 = w18*(A_12_1 + A_21_7);
3430                                  const double tmp297_1 = tmp160_0*w17;                                  const double tmp463 = w4*(-A_12_6 - A_21_0);
3431                                  const double tmp275_1 = tmp148_0*w34;                                  const double tmp464 = w15*(A_02_1 + A_02_3 - A_20_5 - A_20_7);
3432                                  const double tmp168_1 = tmp99_0*w42;                                  const double tmp465 = w5*(A_02_4 + A_02_6 - A_20_0 - A_20_2);
3433                                  const double tmp409_1 = tmp3_0*w32;                                  const double tmp466 = w2*(-A_02_6 + A_20_7);
3434                                  const double tmp1_1 = tmp1_0*w25;                                  const double tmp467 = w20*(-A_01_6 + A_10_7);
3435                                  const double tmp426_1 = tmp210_0*w39;                                  const double tmp468 = w21*(-A_01_1 + A_10_0);
3436                                  const double tmp375_1 = tmp109_0*w33;                                  const double tmp469 = w17*(A_02_1 - A_20_0);
3437                                  const double tmp50_1 = tmp42_0*w19;                                  const double tmp470 = w6*(-A_12_2 - A_12_3 - A_21_4 - A_21_5);
3438                                  const double tmp513_1 = A_10_1*w42;                                  const double tmp471 = w1*(-A_01_1 - A_01_5 - A_10_2 - A_10_6);
3439                                  const double tmp97_1 = tmp45_0*w31;                                  const double tmp472 = w15*(-A_02_4 - A_02_6 - A_20_1 - A_20_3);
3440                                  const double tmp403_1 = tmp140_0*w1;                                  const double tmp473 = w16*(-A_01_2 - A_01_6 - A_10_1 - A_10_5);
3441                                  const double tmp71_1 = A_01_1*w42;                                  const double tmp474 = w12*(-A_12_4 - A_12_5 - A_21_2 - A_21_3);
3442                                  const double tmp520_1 = tmp84_0*w31;                                  const double tmp475 = w5*(-A_02_1 - A_02_3 - A_20_4 - A_20_6);
3443                                  const double tmp510_1 = A_10_6*w46;                                  const double tmp476 = w18*(-A_12_6 + A_21_4);
3444                                  const double tmp302_1 = A_10_0*w39;                                  const double tmp477 = w20*(A_01_3 - A_10_1);
3445                                  const double tmp364_1 = tmp128_0*w22;                                  const double tmp478 = w10*(A_12_0 + A_12_7 - A_21_2 - A_21_5);
3446                                  const double tmp515_1 = tmp142_0*w42;                                  const double tmp479 = w4*(A_12_1 - A_21_3);
3447                                  const double tmp283_1 = tmp65_0*w56;                                  const double tmp480 = w21*(A_01_4 - A_10_6);
3448                                  const double tmp222_1 = tmp112_0*w1;                                  const double tmp481 = w8*(-A_01_0 - A_01_7 + A_10_2 + A_10_5);
3449                                  const double tmp428_1 = tmp211_0*w27;                                  const double tmp482 = w6*(A_12_0 + A_12_1 + A_21_6 + A_21_7);
3450                                  const double tmp371_1 = tmp190_0*w4;                                  const double tmp483 = w12*(A_12_6 + A_12_7 + A_21_0 + A_21_1);
3451                                  const double tmp423_1 = tmp184_0*w23;                                  const double tmp484 = w15*(A_02_5 + A_02_7 + A_20_0 + A_20_2);
3452                                  const double tmp276_1 = tmp149_0*w13;                                  const double tmp485 = w5*(A_02_0 + A_02_2 + A_20_5 + A_20_7);
3453                                  const double tmp65_1 = tmp50_0*w9;                                  const double tmp486 = w18*(-A_12_1 + A_21_3);
3454                                  const double tmp305_1 = A_12_0*w29;                                  const double tmp487 = w20*(A_01_4 - A_10_6);
3455                                  const double tmp170_1 = tmp101_0*w20;                                  const double tmp488 = w4*(A_12_6 - A_21_4);
3456                                  const double tmp350_1 = tmp179_0*w31;                                  const double tmp489 = w21*(A_01_3 - A_10_1);
3457                                  const double tmp466_1 = tmp172_0*w20;                                  const double tmp490 = w20*(A_01_7 - A_10_5);
3458                                  const double tmp361_1 = tmp184_0*w26;                                  const double tmp491 = w18*(A_12_2 - A_21_0);
3459                                  const double tmp431_1 = tmp214_0*w19;                                  const double tmp492 = w4*(-A_12_5 + A_21_7);
3460                                  const double tmp363_1 = tmp129_0*w17;                                  const double tmp493 = w21*(A_01_0 - A_10_2);
3461                                  const double tmp178_1 = A_02_2*w28;                                  const double tmp494 = w20*(A_01_1 + A_10_2);
3462                                  const double tmp527_1 = tmp120_0*w13;                                  const double tmp495 = w21*(A_01_6 + A_10_5);
3463                                  const double tmp415_1 = tmp182_0*w5;                                  const double tmp496 = w18*(-A_12_2 - A_21_4);
3464                                  const double tmp450_1 = tmp200_0*w6;                                  const double tmp497 = w4*(A_12_5 + A_21_3);
3465                                  const double tmp269_1 = A_01_7*w39;                                  const double tmp498 = w15*(-A_02_0 - A_02_2 + A_20_4 + A_20_6);
3466                                  const double tmp285_1 = tmp152_0*w2;                                  const double tmp499 = w5*(-A_02_5 - A_02_7 + A_20_1 + A_20_3);
3467                                  const double tmp272_1 = A_01_0*w35;                                  const double tmp500 = w18*(-A_12_6 + A_21_2);
3468                                  const double tmp339_1 = tmp136_0*w21;                                  const double tmp501 = w4*(A_12_1 - A_21_5);
3469                                  const double tmp502_1 = tmp95_0*w42;                                  const double tmp502 = w17*(A_02_6 - A_20_2);
3470                                  const double tmp38_1 = tmp30_0*w34;                                  const double tmp503 = w2*(-A_02_1 + A_20_5);
3471                                  const double tmp514_1 = tmp144_0*w46;                                  const double tmp504 = w18*(-A_12_3 - A_21_5);
3472                                  const double tmp96_1 = tmp56_0*w45;                                  const double tmp505 = w4*(A_12_4 + A_21_2);
3473                                  const double tmp399_1 = tmp167_0*w45;                                  const double tmp506 = w2*(A_02_6 + A_20_3);
3474                                  const double tmp483_1 = tmp173_0*w23;                                  const double tmp507 = w17*(-A_02_1 - A_20_4);
3475                                  const double tmp522_1 = tmp87_0*w17;                                  const double tmp508 = w18*(A_12_0 + A_21_6);
3476                                  const double tmp519_1 = tmp91_0*w21;                                  const double tmp509 = w4*(-A_12_7 - A_21_1);
3477                                  const double tmp209_1 = A_12_5*w24;                                  EM_S[INDEX2(0,0,8)]+=tmp198 + tmp200 + tmp214 + tmp259 + tmp262 + tmp289 + tmp294 + tmp299 + tmp303 + tmp304 + tmp307 + tmp309 + tmp343 + tmp347 + tmp362 + tmp363 + tmp379 + tmp380 + tmp381 + tmp382 + tmp383 + tmp384 + tmp385 + tmp386;
3478                                  const double tmp126_1 = tmp65_0*w48;                                  EM_S[INDEX2(0,1,8)]+=tmp161 + tmp201 + tmp247 + tmp250 + tmp371 + tmp374 + tmp44 + tmp451 + tmp454 + tmp455 + tmp456 + tmp466 + tmp467 + tmp468 + tmp469 + tmp49 + tmp89 + tmp91 + tmp92 + tmp98;
3479                                  const double tmp367_1 = tmp187_0*w39;                                  EM_S[INDEX2(0,2,8)]+=tmp135 + tmp236 + tmp238 + tmp240 + tmp242 + tmp244 + tmp39 + tmp41 + tmp432 + tmp436 + tmp440 + tmp441 + tmp490 + tmp491 + tmp492 + tmp493 + tmp61 + tmp68 + tmp70 + tmp71;
3480                                  const double tmp221_1 = tmp67_0*w18;                                  EM_S[INDEX2(0,3,8)]+=tmp114 + tmp165 + tmp166 + tmp167 + tmp168 + tmp169 + tmp170 + tmp171 + tmp172 + tmp20 + tmp73 + tmp74 + tmp75 + tmp76 + tmp79 + tmp80;
3481                                  const double tmp381_1 = tmp146_0*w56;                                  EM_S[INDEX2(0,4,8)]+=tmp1 + tmp127 + tmp131 + tmp141 + tmp145 + tmp146 + tmp148 + tmp15 + tmp189 + tmp190 + tmp192 + tmp193 + tmp2 + tmp243 + tmp246 + tmp406 + tmp407 + tmp408 + tmp409 + tmp5;
3482                                  const double tmp70_1 = tmp54_0*w31;                                  EM_S[INDEX2(0,5,8)]+=tmp174 + tmp176 + tmp184 + tmp24 + tmp260 + tmp267 + tmp339 + tmp340 + tmp341 + tmp342 + tmp344 + tmp345 + tmp416 + tmp417 + tmp506 + tmp507;
3483                                  const double tmp216_1 = tmp117_0*w11;                                  EM_S[INDEX2(0,6,8)]+=tmp21 + tmp258 + tmp266 + tmp274 + tmp337 + tmp398 + tmp422 + tmp424 + tmp428 + tmp430 + tmp447 + tmp449 + tmp496 + tmp497 + tmp498 + tmp499;
3484                                  const double tmp473_1 = A_02_7*w2;                                  EM_S[INDEX2(0,7,8)]+=tmp104 + tmp105 + tmp106 + tmp107 + tmp108 + tmp109 + tmp110 + tmp111 + tmp112 + tmp113 + tmp38 + tmp87;
3485                                  const double tmp149_1 = tmp82_0*w22;                                  EM_S[INDEX2(1,0,8)]+=tmp145 + tmp148 + tmp161 + tmp201 + tmp202 + tmp210 + tmp371 + tmp374 + tmp440 + tmp441 + tmp450 + tmp451 + tmp452 + tmp453 + tmp454 + tmp455 + tmp456 + tmp457 + tmp89 + tmp91;
3486                                  const double tmp357_1 = A_12_6*w4;                                  EM_S[INDEX2(1,1,8)]+=tmp215 + tmp221 + tmp227 + tmp260 + tmp267 + tmp288 + tmp304 + tmp312 + tmp317 + tmp351 + tmp352 + tmp353 + tmp354 + tmp355 + tmp356 + tmp357 + tmp358 + tmp359 + tmp360 + tmp361 + tmp362 + tmp363 + tmp76 + tmp79;
3487                                  const double tmp534_1 = tmp226_0*w29;                                  EM_S[INDEX2(1,2,8)]+=tmp166 + tmp169 + tmp172 + tmp196 + tmp197 + tmp198 + tmp199 + tmp20 + tmp200 + tmp21 + tmp73 + tmp74 + tmp75 + tmp77 + tmp80 + tmp82;
3488                                  const double tmp95_1 = tmp26_0*w15;                                  EM_S[INDEX2(1,3,8)]+=tmp36 + tmp37 + tmp38 + tmp39 + tmp40 + tmp41 + tmp42 + tmp43 + tmp44 + tmp45 + tmp46 + tmp47 + tmp48 + tmp49 + tmp50 + tmp51 + tmp52 + tmp53 + tmp54 + tmp55;
3489                                  const double tmp500_1 = tmp64_0*w20;                                  EM_S[INDEX2(1,4,8)]+=tmp176 + tmp24 + tmp269 + tmp274 + tmp339 + tmp340 + tmp342 + tmp343 + tmp344 + tmp347 + tmp394 + tmp395 + tmp416 + tmp417 + tmp418 + tmp419;
3490                                  const double tmp387_1 = tmp199_0*w6;                                  EM_S[INDEX2(1,5,8)]+=tmp112 + tmp12 + tmp123 + tmp13 + tmp141 + tmp142 + tmp143 + tmp146 + tmp147 + tmp149 + tmp16 + tmp277 + tmp278 + tmp279 + tmp280 + tmp281 + tmp282 + tmp6 + tmp92 + tmp98;
3491                                  const double tmp471_1 = A_20_4*w23;                                  EM_S[INDEX2(1,6,8)]+=tmp104 + tmp105 + tmp106 + tmp110 + tmp113 + tmp135 + tmp136 + tmp137 + tmp138 + tmp139 + tmp15 + tmp87;
3492                                  const double tmp281_1 = tmp74_0*w41;                                  EM_S[INDEX2(1,7,8)]+=tmp114 + tmp184 + tmp225 + tmp232 + tmp329 + tmp330 + tmp332 + tmp334 + tmp335 + tmp337 + tmp338 + tmp421 + tmp464 + tmp465 + tmp504 + tmp505;
3493                                  const double tmp351_1 = tmp180_0*w20;                                  EM_S[INDEX2(2,0,8)]+=tmp135 + tmp234 + tmp235 + tmp236 + tmp237 + tmp238 + tmp239 + tmp240 + tmp241 + tmp242 + tmp243 + tmp244 + tmp245 + tmp246 + tmp39 + tmp41 + tmp44 + tmp49 + tmp61 + tmp71;
3494                                  const double tmp63_1 = tmp48_0*w34;                                  EM_S[INDEX2(2,1,8)]+=tmp114 + tmp120 + tmp167 + tmp170 + tmp198 + tmp20 + tmp200 + tmp24 + tmp443 + tmp444 + tmp73 + tmp74 + tmp75 + tmp80 + tmp81 + tmp83;
3495                                  const double tmp365_1 = tmp186_0*w23;                                  EM_S[INDEX2(2,2,8)]+=tmp217 + tmp231 + tmp233 + tmp258 + tmp266 + tmp271 + tmp273 + tmp288 + tmp289 + tmp290 + tmp291 + tmp292 + tmp293 + tmp294 + tmp295 + tmp296 + tmp297 + tmp298 + tmp299 + tmp300 + tmp301 + tmp302 + tmp76 + tmp79;
3496                                  const double tmp448_1 = tmp206_0*w27;                                  EM_S[INDEX2(2,3,8)]+=tmp101 + tmp156 + tmp157 + tmp204 + tmp205 + tmp368 + tmp371 + tmp372 + tmp374 + tmp375 + tmp377 + tmp437 + tmp438 + tmp439 + tmp440 + tmp441 + tmp442 + tmp85 + tmp87 + tmp99;
3497                                  const double tmp39_1 = tmp31_0*w13;                                  EM_S[INDEX2(2,4,8)]+=tmp184 + tmp21 + tmp328 + tmp337 + tmp383 + tmp386 + tmp422 + tmp423 + tmp424 + tmp427 + tmp428 + tmp430 + tmp498 + tmp499 + tmp508 + tmp509;
3498                                  const double tmp453_1 = tmp196_0*w23;                                  EM_S[INDEX2(2,5,8)]+=tmp104 + tmp106 + tmp108 + tmp111 + tmp113 + tmp15 + tmp160 + tmp161 + tmp162 + tmp163 + tmp164 + tmp38;
3499                                  const double tmp402_1 = tmp163_0*w18;                                  EM_S[INDEX2(2,6,8)]+=tmp10 + tmp112 + tmp122 + tmp123 + tmp124 + tmp125 + tmp126 + tmp127 + tmp128 + tmp129 + tmp130 + tmp131 + tmp132 + tmp133 + tmp134 + tmp14 + tmp3 + tmp68 + tmp70 + tmp9;
3500                                  const double tmp137_1 = tmp71_0*w47;                                  EM_S[INDEX2(2,7,8)]+=tmp166 + tmp175 + tmp176 + tmp178 + tmp179 + tmp180 + tmp183 + tmp187 + tmp270 + tmp272 + tmp274 + tmp284 + tmp285 + tmp364 + tmp365 + tmp366;
3501                                  const double tmp6_1 = A_02_0*w2;                                  EM_S[INDEX2(3,0,8)]+=tmp20 + tmp21 + tmp24 + tmp34 + tmp72 + tmp73 + tmp74 + tmp75 + tmp76 + tmp77 + tmp78 + tmp79 + tmp80 + tmp81 + tmp82 + tmp83;
3502                                  const double tmp34_1 = tmp26_0*w36;                                  EM_S[INDEX2(3,1,8)]+=tmp13 + tmp16 + tmp38 + tmp39 + tmp40 + tmp41 + tmp43 + tmp440 + tmp441 + tmp45 + tmp47 + tmp478 + tmp481 + tmp486 + tmp487 + tmp488 + tmp489 + tmp50 + tmp52 + tmp55;
3503                                  const double tmp383_1 = tmp197_0*w27;                                  EM_S[INDEX2(3,2,8)]+=tmp101 + tmp14 + tmp204 + tmp205 + tmp367 + tmp368 + tmp369 + tmp370 + tmp371 + tmp372 + tmp373 + tmp374 + tmp375 + tmp376 + tmp377 + tmp378 + tmp44 + tmp49 + tmp87 + tmp9;
3504                                  const double tmp166_1 = tmp97_0*w12;                                  EM_S[INDEX2(3,3,8)]+=tmp179 + tmp183 + tmp198 + tmp200 + tmp214 + tmp215 + tmp216 + tmp217 + tmp218 + tmp219 + tmp220 + tmp221 + tmp222 + tmp223 + tmp224 + tmp225 + tmp226 + tmp227 + tmp228 + tmp229 + tmp230 + tmp231 + tmp232 + tmp233;
3505                                  const double tmp114_1 = tmp40_0*w9;                                  EM_S[INDEX2(3,4,8)]+=tmp104 + tmp106 + tmp112 + tmp113 + tmp135 + tmp137 + tmp139 + tmp160 + tmp161 + tmp164 + tmp471 + tmp473;
3506                                  const double tmp306_1 = A_12_7*w4;                                  EM_S[INDEX2(3,5,8)]+=tmp114 + tmp274 + tmp312 + tmp317 + tmp329 + tmp332 + tmp335 + tmp337 + tmp338 + tmp399 + tmp401 + tmp446 + tmp462 + tmp463 + tmp464 + tmp465;
3507                                  const double tmp530_1 = tmp124_0*w39;                                  EM_S[INDEX2(3,6,8)]+=tmp166 + tmp175 + tmp176 + tmp177 + tmp178 + tmp180 + tmp181 + tmp184 + tmp187 + tmp271 + tmp273 + tmp283 + tmp284 + tmp285 + tmp286 + tmp287;
3508                                  const double tmp388_1 = tmp200_0*w13;                                  EM_S[INDEX2(3,7,8)]+=tmp1 + tmp10 + tmp11 + tmp12 + tmp15 + tmp152 + tmp153 + tmp154 + tmp155 + tmp156 + tmp157 + tmp158 + tmp159 + tmp17 + tmp3 + tmp4 + tmp51 + tmp54 + tmp6 + tmp7;
3509                                  const double tmp252_1 = tmp2_0*w30;                                  EM_S[INDEX2(4,0,8)]+=tmp1 + tmp127 + tmp131 + tmp141 + tmp146 + tmp15 + tmp153 + tmp154 + tmp188 + tmp189 + tmp190 + tmp191 + tmp192 + tmp193 + tmp194 + tmp195 + tmp68 + tmp70 + tmp92 + tmp98;
3510                                  const double tmp210_1 = A_02_4*w26;                                  EM_S[INDEX2(4,1,8)]+=tmp166 + tmp176 + tmp184 + tmp283 + tmp339 + tmp340 + tmp341 + tmp342 + tmp343 + tmp344 + tmp345 + tmp346 + tmp347 + tmp348 + tmp349 + tmp350;
3511                                  const double tmp200_1 = tmp21_0*w5;                                  EM_S[INDEX2(4,2,8)]+=tmp114 + tmp274 + tmp337 + tmp383 + tmp386 + tmp422 + tmp424 + tmp426 + tmp428 + tmp429 + tmp430 + tmp445 + tmp446 + tmp447 + tmp448 + tmp449;
3512                                  const double tmp181_1 = tmp3_0*w10;                                  EM_S[INDEX2(4,3,8)]+=tmp104 + tmp106 + tmp107 + tmp109 + tmp112 + tmp113 + tmp135 + tmp161 + tmp482 + tmp483 + tmp484 + tmp485;
3513                                  const double tmp425_1 = tmp106_0*w57;                                  EM_S[INDEX2(4,4,8)]+=tmp118 + tmp121 + tmp214 + tmp215 + tmp216 + tmp217 + tmp220 + tmp222 + tmp253 + tmp254 + tmp255 + tmp256 + tmp257 + tmp258 + tmp259 + tmp260 + tmp261 + tmp262 + tmp263 + tmp264 + tmp265 + tmp266 + tmp267 + tmp268;
3514                                  const double tmp261_1 = A_21_7*w4;                                  EM_S[INDEX2(4,5,8)]+=tmp100 + tmp101 + tmp145 + tmp148 + tmp369 + tmp376 + tmp402 + tmp403 + tmp404 + tmp405 + tmp60 + tmp65 + tmp84 + tmp87 + tmp88 + tmp89 + tmp91 + tmp95 + tmp96 + tmp97;
3515                                  const double tmp64_1 = tmp49_0*w13;                                  EM_S[INDEX2(4,6,8)]+=tmp243 + tmp246 + tmp38 + tmp43 + tmp476 + tmp477 + tmp478 + tmp479 + tmp480 + tmp481 + tmp57 + tmp58 + tmp61 + tmp63 + tmp64 + tmp66 + tmp69 + tmp71 + tmp90 + tmp94;
3516                                  const double tmp506_1 = A_01_0*w39;                                  EM_S[INDEX2(4,7,8)]+=tmp20 + tmp21 + tmp22 + tmp23 + tmp24 + tmp25 + tmp26 + tmp27 + tmp28 + tmp29 + tmp30 + tmp31 + tmp32 + tmp33 + tmp34 + tmp35;
3517                                  const double tmp457_1 = tmp213_0*w2;                                  EM_S[INDEX2(5,0,8)]+=tmp166 + tmp176 + tmp260 + tmp267 + tmp274 + tmp339 + tmp340 + tmp342 + tmp344 + tmp346 + tmp348 + tmp365 + tmp393 + tmp394 + tmp395 + tmp396;
3518                                  const double tmp2_1 = tmp2_0*w0;                                  EM_S[INDEX2(5,1,8)]+=tmp112 + tmp12 + tmp123 + tmp124 + tmp126 + tmp140 + tmp141 + tmp142 + tmp143 + tmp144 + tmp145 + tmp146 + tmp147 + tmp148 + tmp149 + tmp150 + tmp151 + tmp51 + tmp54 + tmp6;
3519                                  const double tmp393_1 = tmp203_0*w42;                                  EM_S[INDEX2(5,2,8)]+=tmp104 + tmp106 + tmp113 + tmp136 + tmp138 + tmp15 + tmp161 + tmp38 + tmp472 + tmp475 + tmp482 + tmp483;
3520                                  const double tmp133_1 = A_01_3*w35;                                  EM_S[INDEX2(5,3,8)]+=tmp184 + tmp21 + tmp312 + tmp317 + tmp327 + tmp328 + tmp329 + tmp330 + tmp331 + tmp332 + tmp333 + tmp334 + tmp335 + tmp336 + tmp337 + tmp338;
3521                                  const double tmp147_1 = tmp80_0*w41;                                  EM_S[INDEX2(5,4,8)]+=tmp100 + tmp101 + tmp102 + tmp103 + tmp84 + tmp85 + tmp86 + tmp87 + tmp88 + tmp89 + tmp90 + tmp91 + tmp92 + tmp93 + tmp94 + tmp95 + tmp96 + tmp97 + tmp98 + tmp99;
3522                                  const double tmp8_1 = tmp4_0*w5;                                  EM_S[INDEX2(5,5,8)]+=tmp217 + tmp225 + tmp232 + tmp26 + tmp265 + tmp268 + tmp288 + tmp289 + tmp29 + tmp290 + tmp293 + tmp295 + tmp308 + tmp313 + tmp343 + tmp347 + tmp358 + tmp359 + tmp410 + tmp411 + tmp412 + tmp413 + tmp414 + tmp415;
3523                                  const double tmp267_1 = tmp144_0*w42;                                  EM_S[INDEX2(5,6,8)]+=tmp114 + tmp115 + tmp116 + tmp117 + tmp118 + tmp119 + tmp120 + tmp121 + tmp20 + tmp22 + tmp24 + tmp25 + tmp28 + tmp30 + tmp32 + tmp35;
3524                                  const double tmp17_1 = tmp11_0*w12;                                  EM_S[INDEX2(5,7,8)]+=tmp13 + tmp135 + tmp16 + tmp237 + tmp238 + tmp245 + tmp319 + tmp320 + tmp321 + tmp322 + tmp323 + tmp324 + tmp325 + tmp326 + tmp45 + tmp55 + tmp57 + tmp60 + tmp64 + tmp65;
3525                                  const double tmp284_1 = tmp58_0*w50;                                  EM_S[INDEX2(6,0,8)]+=tmp114 + tmp184 + tmp258 + tmp266 + tmp337 + tmp420 + tmp421 + tmp422 + tmp423 + tmp424 + tmp425 + tmp426 + tmp427 + tmp428 + tmp429 + tmp430;
3526                                  const double tmp328_1 = tmp66_0*w56;                                  EM_S[INDEX2(6,1,8)]+=tmp104 + tmp106 + tmp113 + tmp135 + tmp15 + tmp162 + tmp163 + tmp470 + tmp474 + tmp484 + tmp485 + tmp87;
3527                                  const double tmp405_1 = tmp60_0*w51;                                  EM_S[INDEX2(6,2,8)]+=tmp10 + tmp112 + tmp123 + tmp125 + tmp127 + tmp128 + tmp130 + tmp131 + tmp132 + tmp156 + tmp157 + tmp243 + tmp246 + tmp278 + tmp279 + tmp3 + tmp500 + tmp501 + tmp502 + tmp503;
3528                                  const double tmp467_1 = tmp222_0*w29;                                  EM_S[INDEX2(6,3,8)]+=tmp175 + tmp176 + tmp178 + tmp180 + tmp182 + tmp185 + tmp187 + tmp24 + tmp269 + tmp270 + tmp271 + tmp272 + tmp273 + tmp274 + tmp275 + tmp276;
3529                                  const double tmp535_1 = tmp225_0*w4;                                  EM_S[INDEX2(6,4,8)]+=tmp38 + tmp42 + tmp43 + tmp53 + tmp56 + tmp57 + tmp58 + tmp59 + tmp60 + tmp61 + tmp62 + tmp63 + tmp64 + tmp65 + tmp66 + tmp67 + tmp68 + tmp69 + tmp70 + tmp71;
3530                                  const double tmp356_1 = A_12_1*w29;                                  EM_S[INDEX2(6,5,8)]+=tmp118 + tmp121 + tmp166 + tmp199 + tmp20 + tmp21 + tmp22 + tmp25 + tmp27 + tmp28 + tmp30 + tmp33 + tmp458 + tmp459 + tmp460 + tmp461;
3531                                  const double tmp274_1 = tmp147_0*w6;                                  EM_S[INDEX2(6,6,8)]+=tmp179 + tmp183 + tmp215 + tmp255 + tmp26 + tmp261 + tmp288 + tmp29 + tmp298 + tmp300 + tmp304 + tmp316 + tmp318 + tmp351 + tmp354 + tmp355 + tmp383 + tmp386 + tmp387 + tmp388 + tmp389 + tmp390 + tmp391 + tmp392;
3532                                  const double tmp476_1 = tmp192_0*w39;                                  EM_S[INDEX2(6,7,8)]+=tmp100 + tmp14 + tmp161 + tmp201 + tmp202 + tmp203 + tmp204 + tmp205 + tmp206 + tmp207 + tmp208 + tmp209 + tmp210 + tmp211 + tmp212 + tmp213 + tmp88 + tmp9 + tmp90 + tmp94;
3533                                  const double tmp206_1 = tmp10_0*w21;                                  EM_S[INDEX2(7,0,8)]+=tmp104 + tmp106 + tmp112 + tmp113 + tmp38 + tmp470 + tmp471 + tmp472 + tmp473 + tmp474 + tmp475 + tmp87;
3534                                  const double tmp334_1 = tmp141_0*w9;                                  EM_S[INDEX2(7,1,8)]+=tmp21 + tmp225 + tmp232 + tmp274 + tmp329 + tmp332 + tmp333 + tmp335 + tmp336 + tmp337 + tmp338 + tmp397 + tmp398 + tmp399 + tmp400 + tmp401;
3535                                  const double tmp482_1 = tmp181_0*w26;                                  EM_S[INDEX2(7,2,8)]+=tmp173 + tmp174 + tmp175 + tmp176 + tmp177 + tmp178 + tmp179 + tmp180 + tmp181 + tmp182 + tmp183 + tmp184 + tmp185 + tmp186 + tmp187 + tmp24;
3536                                  const double tmp212_1 = A_20_7*w28;                                  EM_S[INDEX2(7,3,8)]+=tmp0 + tmp1 + tmp10 + tmp11 + tmp12 + tmp13 + tmp14 + tmp15 + tmp16 + tmp17 + tmp18 + tmp19 + tmp2 + tmp3 + tmp4 + tmp5 + tmp6 + tmp7 + tmp8 + tmp9;
3537                                  const double tmp219_1 = tmp72_0*w21;                                  EM_S[INDEX2(7,4,8)]+=tmp114 + tmp117 + tmp119 + tmp166 + tmp171 + tmp20 + tmp22 + tmp25 + tmp26 + tmp28 + tmp29 + tmp30 + tmp460 + tmp461 + tmp494 + tmp495;
3538                                  const double tmp47_1 = tmp39_0*w16;                                  EM_S[INDEX2(7,5,8)]+=tmp135 + tmp238 + tmp320 + tmp324 + tmp325 + tmp326 + tmp431 + tmp432 + tmp433 + tmp434 + tmp435 + tmp436 + tmp45 + tmp51 + tmp54 + tmp55 + tmp57 + tmp64 + tmp90 + tmp94;
3539                                  const double tmp89_1 = A_10_3*w35;                                  EM_S[INDEX2(7,6,8)]+=tmp100 + tmp156 + tmp157 + tmp161 + tmp201 + tmp204 + tmp205 + tmp207 + tmp208 + tmp209 + tmp211 + tmp247 + tmp248 + tmp249 + tmp250 + tmp251 + tmp252 + tmp60 + tmp65 + tmp88;
3540                                  const double tmp52_1 = tmp44_0*w1;                                  EM_S[INDEX2(7,7,8)]+=tmp118 + tmp121 + tmp214 + tmp226 + tmp228 + tmp271 + tmp273 + tmp289 + tmp303 + tmp304 + tmp305 + tmp306 + tmp307 + tmp308 + tmp309 + tmp310 + tmp311 + tmp312 + tmp313 + tmp314 + tmp315 + tmp316 + tmp317 + tmp318;
                                 const double tmp492_1 = A_01_3*w39;  
                                 const double tmp81_1 = A_12_3*w24;  
                                 const double tmp77_1 = tmp60_0*w41;  
                                 const double tmp153_1 = tmp85_0*w21;  
                                 const double tmp304_1 = tmp163_0*w5;  
                                 const double tmp489_1 = tmp227_0*w11;  
                                 const double tmp107_1 = tmp35_0*w38;  
                                 const double tmp30_1 = tmp22_0*w39;  
                                 const double tmp260_1 = A_21_0*w29;  
                                 const double tmp343_1 = tmp172_0*w1;  
                                 const double tmp511_1 = tmp149_0*w6;  
                                 const double tmp139_1 = tmp73_0*w12;  
                                 const double tmp66_1 = tmp51_0*w44;  
                                 const double tmp208_1 = tmp4_0*w18;  
                                 const double tmp134_1 = tmp23_0*w10;  
                                 const double tmp205_1 = tmp105_0*w31;  
                                 const double tmp349_1 = tmp178_0*w8;  
                                 const double tmp341_1 = tmp53_0*w55;  
                                 const double tmp72_1 = tmp55_0*w17;  
                                 const double tmp79_1 = tmp62_0*w22;  
                                 const double tmp26_1 = tmp20_0*w19;  
                                 const double tmp141_1 = tmp75_0*w8;  
                                 const double tmp118_1 = tmp41_0*w17;  
                                 const double tmp259_1 = A_20_0*w28;  
                                 const double tmp458_1 = tmp212_0*w28;  
                                 const double tmp68_1 = tmp37_0*w15;  
                                 const double tmp154_1 = tmp86_0*w31;  
                                 const double tmp335_1 = tmp56_0*w59;  
                                 const double tmp359_1 = A_02_1*w23;  
                                 const double tmp56_1 = A_21_1*w29;  
                                 const double tmp392_1 = tmp145_0*w58;  
                                 const double tmp270_1 = tmp145_0*w48;  
                                 const double tmp92_1 = tmp47_0*w13;  
                                 const double tmp433_1 = tmp216_0*w34;  
                                 const double tmp420_1 = tmp125_0*w13;  
                                 const double tmp408_1 = tmp51_0*w52;  
                                 const double tmp494_1 = A_20_2*w28;  
                                 const double tmp362_1 = tmp185_0*w12;  
                                 const double tmp411_1 = tmp208_0*w19;  
                                 const double tmp336_1 = tmp65_0*w58;  
                                 const double tmp475_1 = A_21_4*w24;  
                                 const double tmp85_1 = A_12_3*w27;  
                                 const double tmp19_1 = tmp13_0*w15;  
                                 const double tmp537_1 = tmp132_0*w28;  
                                 const double tmp67_1 = tmp52_0*w8;  
                                 const double tmp459_1 = tmp210_0*w35;  
                                 const double tmp248_1 = tmp135_0*w34;  
                                 const double tmp326_1 = A_02_6*w23;  
                                 const double tmp23_1 = tmp17_0*w20;  
                                 const double tmp35_1 = tmp27_0*w11;  
                                 const double tmp62_1 = tmp47_0*w6;  
                                 const double tmp180_1 = tmp106_0*w7;  
                                 const double tmp277_1 = tmp150_0*w47;  
                                 const double tmp373_1 = tmp192_0*w35;  
                                 const double tmp337_1 = tmp157_0*w42;  
                                 const double tmp106_1 = tmp28_0*w39;  
                                 const double tmp369_1 = tmp168_0*w50;  
                                 const double tmp434_1 = tmp146_0*w58;  
                                 const double tmp331_1 = tmp155_0*w29;  
                                 const double tmp503_1 = tmp228_0*w27;  
                                 const double tmp93_1 = tmp61_0*w9;  
                                 const double tmp25_1 = tmp19_0*w22;  
                                 const double tmp146_1 = tmp79_0*w20;  
                                 const double tmp280_1 = A_10_6*w42;  
                                 const double tmp94_1 = tmp60_0*w44;  
                                 const double tmp400_1 = A_01_5*w42;  
                                 const double tmp151_1 = tmp83_0*w18;  
                                 const double tmp78_1 = tmp61_0*w21;  
                                 const double tmp301_1 = tmp6_0*w54;  
                                 const double tmp48_1 = tmp40_0*w21;  
                                 const double tmp75_1 = tmp58_0*w40;  
                                 const double tmp82_1 = tmp59_0*w1;  
                                 const double tmp74_1 = tmp57_0*w16;  
                                 const double tmp36_1 = tmp28_0*w35;  
                                 const double tmp370_1 = tmp189_0*w29;  
                                 const double tmp224_1 = tmp119_0*w19;  
                                 const double tmp109_1 = tmp36_0*w37;  
                                 const double tmp345_1 = tmp174_0*w5;  
                                 const double tmp101_1 = tmp44_0*w20;  
                                 const double tmp308_1 = A_01_5*w46;  
                                 const double tmp295_1 = tmp66_0*w58;  
                                 const double tmp117_1 = tmp26_0*w30;  
                                 const double tmp125_1 = tmp35_0*w3;  
                                 const double tmp309_1 = tmp9_0*w6;  
                                 const double tmp412_1 = tmp209_0*w24;  
                                 const double tmp46_1 = tmp38_0*w17;  
                                 const double tmp7_1 = A_02_7*w28;  
                                 const double tmp40_1 = tmp32_0*w9;  
                                 const double tmp386_1 = tmp198_0*w46;  
                                 const double tmp517_1 = tmp228_0*w24;  
                                 const double tmp532_1 = tmp223_0*w29;  
                                 const double tmp220_1 = A_02_3*w23;  
                                 const double tmp268_1 = tmp93_0*w20;  
                                 const double tmp322_1 = A_10_7*w39;  
                                 const double tmp311_1 = tmp8_0*w13;  
                                 const double tmp123_1 = A_01_4*w39;  
                                 const double tmp187_1 = A_20_6*w23;  
                                 const double tmp177_1 = A_02_5*w2;  
                                 const double tmp58_1 = A_21_6*w4;  
                                 const double tmp404_1 = tmp7_0*w38;  
                                 const double tmp122_1 = tmp64_0*w1;  
                                 const double tmp163_1 = tmp94_0*w5;  
                                 const double tmp15_1 = tmp9_0*w13;  
                                 const double tmp128_1 = A_20_5*w28;  
                                 const double tmp204_1 = tmp2_0*w15;  
                                 const double tmp539_1 = tmp207_0*w24;  
                                 const double tmp57_1 = tmp45_0*w37;  
                                 const double tmp53_1 = A_10_3*w39;  
                                 const double tmp157_1 = tmp88_0*w17;  
                                 const double tmp169_1 = tmp100_0*w16;  
                                 const double tmp162_1 = tmp93_0*w1;  
                                 const double tmp325_1 = tmp171_0*w12;  
                                 const double tmp179_1 = tmp105_0*w37;  
                                 const double tmp207_1 = A_20_1*w23;  
                                 const double tmp427_1 = tmp145_0*w56;  
                                 const double tmp368_1 = tmp188_0*w26;  
                                 const double tmp460_1 = tmp211_0*w24;  
                                 const double tmp347_1 = tmp176_0*w34;  
                                 const double tmp234_1 = tmp102_0*w9;  
                                 const double tmp21_1 = tmp15_0*w17;  
                                 const double tmp112_1 = tmp31_0*w6;  
                                 const double tmp319_1 = tmp169_0*w19;  
                                 const double tmp509_1 = A_01_7*w35;  
                                 const double tmp418_1 = tmp2_0*w36;  
                                 const double tmp266_1 = tmp143_0*w8;  
                                 const double tmp244_1 = tmp133_0*w28;  
                                 const double tmp138_1 = tmp72_0*w9;  
                                 const double tmp20_1 = tmp14_0*w14;  
                                 const double tmp29_1 = A_21_3*w24;  
                                 const double tmp190_1 = tmp113_0*w1;  
                                 const double tmp338_1 = tmp162_0*w17;  
                                 const double tmp87_1 = tmp54_0*w37;  
                                 const double tmp374_1 = tmp193_0*w34;  
                                 const double tmp195_1 = tmp13_0*w0;  
                                 const double tmp194_1 = tmp106_0*w25;  
                                 const double tmp111_1 = tmp22_0*w35;  
                                 const double tmp213_1 = tmp83_0*w5;  
                                 const double tmp291_1 = tmp157_0*w46;  
                                 const double tmp329_1 = tmp153_0*w2;  
                                 const double tmp256_1 = tmp17_0*w1;  
                                 const double tmp342_1 = tmp1_0*w54;  
                                 const double tmp376_1 = tmp194_0*w12;  
                                 const double tmp239_1 = tmp94_0*w18;  
                                 const double tmp340_1 = tmp160_0*w22;  
                                 const double tmp262_1 = tmp1_0*w7;  
                                 const double tmp54_1 = tmp26_0*w0;  
                                 const double tmp470_1 = A_20_3*w26;  
                                 const double tmp121_1 = tmp24_0*w18;  
                                 const double tmp523_1 = tmp85_0*w9;  
                                 const double tmp182_1 = tmp107_0*w12;  
                                 const double tmp140_1 = tmp74_0*w44;  
                                 const double tmp250_1 = tmp137_0*w8;  
                                 const double tmp104_1 = tmp55_0*w22;  
                                 const double tmp303_1 = A_21_5*w27;  
                                 const double tmp4_1 = tmp3_0*w3;  
                                 const double tmp526_1 = tmp121_0*w6;  
                                 const double tmp410_1 = tmp131_0*w20;  
                                 const double tmp255_1 = tmp141_0*w21;  
                                 const double tmp394_1 = tmp204_0*w19;  
                                 const double tmp172_1 = tmp103_0*w18;  
                                 const double tmp211_1 = A_20_0*w2;  
                                 const double tmp263_1 = tmp0_0*w20;  
                                 const double tmp230_1 = tmp124_0*w35;  
                                 const double tmp496_1 = A_01_4*w35;  
                                 const double tmp176_1 = A_12_5*w27;  
                                 const double tmp401_1 = tmp166_0*w43;  
                                 const double tmp43_1 = tmp35_0*w32;  
                                 const double tmp395_1 = tmp205_0*w23;  
                                 const double tmp348_1 = tmp177_0*w12;  
                                 const double tmp390_1 = tmp202_0*w8;  
                                 const double tmp525_1 = A_12_1*w4;  
                                 const double tmp237_1 = tmp129_0*w22;  
                                 const double tmp105_1 = A_12_4*w24;  
                                 const double tmp242_1 = tmp92_0*w50;  
                                 const double tmp161_1 = tmp92_0*w40;  
                                 const double tmp10_1 = A_12_0*w4;  
                                 const double tmp536_1 = tmp133_0*w2;  
                                 const double tmp55_1 = A_12_4*w27;  
                                 const double tmp445_1 = tmp82_0*w17;  
                                 const double tmp198_1 = A_02_2*w2;  
                                 const double tmp27_1 = A_20_3*w23;  
                                 const double tmp143_1 = A_10_5*w42;  
                                 const double tmp165_1 = tmp96_0*w9;  
                                 const double tmp145_1 = tmp78_0*w16;  
                                 const double tmp282_1 = tmp1_0*w57;  
                                 const double tmp13_1 = tmp7_0*w10;  
                                 const double tmp129_1 = tmp66_0*w49;  
                                 const double tmp443_1 = tmp65_0*w49;  
                                 const double tmp135_1 = A_10_2*w46;  
                                 const double tmp103_1 = tmp50_0*w21;  
                                 const double tmp247_1 = tmp13_0*w36;  
                                 const double tmp185_1 = tmp110_0*w16;  
                                 const double tmp191_1 = tmp114_0*w18;  
                                 const double tmp315_1 = tmp19_0*w17;  
                                 const double tmp380_1 = tmp195_0*w23;  
                                 const double tmp456_1 = tmp218_0*w27;  
                                 const double tmp288_1 = tmp154_0*w29;  
                                 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(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;  
                                 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(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(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(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(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,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(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(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,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(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(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(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(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(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;  
                                 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(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(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,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(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(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,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(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;  
                                 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(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,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(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(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(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(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(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,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;  
                                 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(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(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(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;  
                                 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(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;  
                                 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;  
                                 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(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(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(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(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(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(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(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,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(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(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(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(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,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(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(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(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(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(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,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(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(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(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(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;  
3541                              } else { // constant data                              } else { // constant data
3542                                  const double A_00 = A_p[INDEX2(0,0,3)];                                  const double A_00 = A_p[INDEX2(0,0,3)];
3543                                  const double A_01 = A_p[INDEX2(0,1,3)];                                  const double A_01 = A_p[INDEX2(0,1,3)];
# Line 3927  void Brick::assemblePDESingle(Paso_Syste Line 3548  void Brick::assemblePDESingle(Paso_Syste
3548                                  const double A_20 = A_p[INDEX2(2,0,3)];                                  const double A_20 = A_p[INDEX2(2,0,3)];
3549                                  const double A_21 = A_p[INDEX2(2,1,3)];                                  const double A_21 = A_p[INDEX2(2,1,3)];
3550                                  const double A_22 = A_p[INDEX2(2,2,3)];                                  const double A_22 = A_p[INDEX2(2,2,3)];
3551                                  const double tmp0_0 = A_01 + A_10;                                  const double tmp0 = 24*w11*(-A_02 + A_20);
3552                                  const double tmp1_0 = A_02 + A_20;                                  const double tmp1 = 24*w10*(A_12 - A_21);
3553                                  const double tmp2_0 = A_12 + A_21;                                  const double tmp2 = 12*w8*(A_01 + A_10);
3554                                  const double tmp25_1 = A_01*w69;                                  const double tmp3 = 12*w11*(-A_02 + A_20);
3555                                  const double tmp2_1 = tmp0_0*w61;                                  const double tmp4 = 12*w10*(A_12 - A_21);
3556                                  const double tmp33_1 = A_20*w70;                                  const double tmp5 = 24*w8*(-A_01 - A_10);
3557                                  const double tmp23_1 = A_02*w65;                                  const double tmp6 = 12*w11*(-A_02 - A_20);
3558                                  const double tmp41_1 = A_01*w61;                                  const double tmp7 = 24*w10*(-A_12 + A_21);
3559                                  const double tmp34_1 = A_02*w73;                                  const double tmp8 = 24*w8*(A_01 - A_10);
3560                                  const double tmp8_1 = A_11*w71;                                  const double tmp9 = 24*w11*(A_02 - A_20);
3561                                  const double tmp50_1 = A_10*w61;                                  const double tmp10 = 12*w10*(A_12 + A_21);
3562                                  const double tmp15_1 = A_22*w75;                                  const double tmp11 = 24*w8*(-A_01 + A_10);
3563                                  const double tmp9_1 = A_21*w74;                                  const double tmp12 = 12*w8*(-A_01 - A_10);
3564                                  const double tmp19_1 = A_10*w69;                                  const double tmp13 = 12*w11*(A_02 - A_20);
3565                                  const double tmp11_1 = A_00*w68;                                  const double tmp14 = 24*w8*(A_01 + A_10);
3566                                  const double tmp52_1 = tmp2_0*w66;                                  const double tmp15 = 12*w11*(A_02 + A_20);
3567                                  const double tmp37_1 = tmp2_0*w74;                                  const double tmp16 = 12*w10*(-A_12 - A_21);
3568                                  const double tmp0_1 = A_00*w60;                                  const double tmp17 = 12*w10*(-A_12 + A_21);
3569                                  const double tmp17_1 = A_21*w64;                                  const double tmp18 = 24*w11*(-A_02 - A_20);
3570                                  const double tmp26_1 = A_00*w79;                                  const double tmp19 = 12*w8*(A_01 - A_10);
3571                                  const double tmp5_1 = A_21*w66;                                  const double tmp20 = 24*w10*(A_12 + A_21);
3572                                  const double tmp29_1 = A_00*w80;                                  const double tmp21 = 24*w11*(A_02 + A_20);
3573                                  const double tmp7_1 = A_22*w67;                                  const double tmp22 = 12*w8*(-A_01 + A_10);
3574                                  const double tmp48_1 = A_11*w87;                                  const double tmp23 = 24*w10*(-A_12 - A_21);
3575                                  const double tmp44_1 = A_11*w84;                                  EM_S[INDEX2(0,0,8)]+=-32*A_00*w27 - 32*A_11*w22 - 32*A_22*w13 + tmp14 + tmp21 + tmp23;
3576                                  const double tmp27_1 = tmp2_0*w72;                                  EM_S[INDEX2(0,1,8)]+=32*A_00*w27 - 16*A_11*w22 - 16*A_22*w13 + tmp16 + tmp8 + tmp9;
3577                                  const double tmp42_1 = A_22*w85;                                  EM_S[INDEX2(0,2,8)]+=-16*A_00*w27 + 32*A_11*w22 - 16*A_22*w13 + tmp11 + tmp15 + tmp7;
3578                                  const double tmp18_1 = A_11*w77;                                  EM_S[INDEX2(0,3,8)]+=16*A_00*w27 + 16*A_11*w22 - 8*A_22*w13 + tmp13 + tmp17 + tmp5;
3579                                  const double tmp35_1 = tmp0_0*w76;                                  EM_S[INDEX2(0,4,8)]+=-16*A_00*w27 - 16*A_11*w22 + 32*A_22*w13 + tmp0 + tmp1 + tmp2;
3580                                  const double tmp46_1 = A_00*w86;                                  EM_S[INDEX2(0,5,8)]+=16*A_00*w27 - 8*A_11*w22 + 16*A_22*w13 + tmp18 + tmp19 + tmp4;
3581                                  const double tmp32_1 = A_22*w83;                                  EM_S[INDEX2(0,6,8)]+=-8*A_00*w27 + 16*A_11*w22 + 16*A_22*w13 + tmp20 + tmp22 + tmp3;
3582                                  const double tmp22_1 = A_01*w76;                                  EM_S[INDEX2(0,7,8)]+=8*A_00*w27 + 8*A_11*w22 + 8*A_22*w13 + tmp10 + tmp12 + tmp6;
3583                                  const double tmp4_1 = A_02*w62;                                  EM_S[INDEX2(1,0,8)]+=32*A_00*w27 - 16*A_11*w22 - 16*A_22*w13 + tmp0 + tmp11 + tmp16;
3584                                  const double tmp10_1 = A_02*w70;                                  EM_S[INDEX2(1,1,8)]+=-32*A_00*w27 - 32*A_11*w22 - 32*A_22*w13 + tmp18 + tmp23 + tmp5;
3585                                  const double tmp3_1 = A_20*w65;                                  EM_S[INDEX2(1,2,8)]+=16*A_00*w27 + 16*A_11*w22 - 8*A_22*w13 + tmp14 + tmp17 + tmp3;
3586                                  const double tmp39_1 = A_21*w72;                                  EM_S[INDEX2(1,3,8)]+=-16*A_00*w27 + 32*A_11*w22 - 16*A_22*w13 + tmp6 + tmp7 + tmp8;
3587                                  const double tmp51_1 = tmp1_0*w65;                                  EM_S[INDEX2(1,4,8)]+=16*A_00*w27 - 8*A_11*w22 + 16*A_22*w13 + tmp21 + tmp22 + tmp4;
3588                                  const double tmp12_1 = A_20*w73;                                  EM_S[INDEX2(1,5,8)]+=-16*A_00*w27 - 16*A_11*w22 + 32*A_22*w13 + tmp1 + tmp12 + tmp9;
3589                                  const double tmp40_1 = A_10*w81;                                  EM_S[INDEX2(1,6,8)]+=8*A_00*w27 + 8*A_11*w22 + 8*A_22*w13 + tmp10 + tmp15 + tmp2;
3590                                  const double tmp43_1 = tmp1_0*w62;                                  EM_S[INDEX2(1,7,8)]+=-8*A_00*w27 + 16*A_11*w22 + 16*A_22*w13 + tmp13 + tmp19 + tmp20;
3591                                  const double tmp28_1 = A_10*w76;                                  EM_S[INDEX2(2,0,8)]+=-16*A_00*w27 + 32*A_11*w22 - 16*A_22*w13 + tmp1 + tmp15 + tmp8;
3592                                  const double tmp45_1 = tmp2_0*w64;                                  EM_S[INDEX2(2,1,8)]+=16*A_00*w27 + 16*A_11*w22 - 8*A_22*w13 + tmp13 + tmp14 + tmp4;
3593                                  const double tmp49_1 = A_01*w81;                                  EM_S[INDEX2(2,2,8)]+=-32*A_00*w27 - 32*A_11*w22 - 32*A_22*w13 + tmp20 + tmp21 + tmp5;
3594                                  const double tmp36_1 = tmp1_0*w73;                                  EM_S[INDEX2(2,3,8)]+=32*A_00*w27 - 16*A_11*w22 - 16*A_22*w13 + tmp10 + tmp11 + tmp9;
3595                                  const double tmp53_1 = A_00*w89;                                  EM_S[INDEX2(2,4,8)]+=-8*A_00*w27 + 16*A_11*w22 + 16*A_22*w13 + tmp19 + tmp23 + tmp3;
3596                                  const double tmp6_1 = A_11*w63;                                  EM_S[INDEX2(2,5,8)]+=8*A_00*w27 + 8*A_11*w22 + 8*A_22*w13 + tmp16 + tmp2 + tmp6;
3597                                  const double tmp31_1 = A_11*w82;                                  EM_S[INDEX2(2,6,8)]+=-16*A_00*w27 - 16*A_11*w22 + 32*A_22*w13 + tmp0 + tmp12 + tmp7;
3598                                  const double tmp21_1 = A_22*w78;                                  EM_S[INDEX2(2,7,8)]+=16*A_00*w27 - 8*A_11*w22 + 16*A_22*w13 + tmp17 + tmp18 + tmp22;
3599                                  const double tmp16_1 = tmp1_0*w70;                                  EM_S[INDEX2(3,0,8)]+=16*A_00*w27 + 16*A_11*w22 - 8*A_22*w13 + tmp3 + tmp4 + tmp5;
3600                                  const double tmp14_1 = A_12*w72;                                  EM_S[INDEX2(3,1,8)]+=-16*A_00*w27 + 32*A_11*w22 - 16*A_22*w13 + tmp1 + tmp11 + tmp6;
3601                                  const double tmp38_1 = A_12*w74;                                  EM_S[INDEX2(3,2,8)]+=32*A_00*w27 - 16*A_11*w22 - 16*A_22*w13 + tmp0 + tmp10 + tmp8;
3602                                  const double tmp30_1 = tmp0_0*w81;                                  EM_S[INDEX2(3,3,8)]+=-32*A_00*w27 - 32*A_11*w22 - 32*A_22*w13 + tmp14 + tmp18 + tmp20;
3603                                  const double tmp47_1 = A_22*w88;                                  EM_S[INDEX2(3,4,8)]+=8*A_00*w27 + 8*A_11*w22 + 8*A_22*w13 + tmp12 + tmp15 + tmp16;
3604                                  const double tmp13_1 = tmp0_0*w69;                                  EM_S[INDEX2(3,5,8)]+=-8*A_00*w27 + 16*A_11*w22 + 16*A_22*w13 + tmp13 + tmp22 + tmp23;
3605                                  const double tmp20_1 = A_12*w66;                                  EM_S[INDEX2(3,6,8)]+=16*A_00*w27 - 8*A_11*w22 + 16*A_22*w13 + tmp17 + tmp19 + tmp21;
3606                                  const double tmp1_1 = A_12*w64;                                  EM_S[INDEX2(3,7,8)]+=-16*A_00*w27 - 16*A_11*w22 + 32*A_22*w13 + tmp2 + tmp7 + tmp9;
3607                                  const double tmp24_1 = A_20*w62;                                  EM_S[INDEX2(4,0,8)]+=-16*A_00*w27 - 16*A_11*w22 + 32*A_22*w13 + tmp2 + tmp7 + tmp9;
3608                                  EM_S[INDEX2(0,0,8)]+=tmp35_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1 + tmp52_1;                                  EM_S[INDEX2(4,1,8)]+=16*A_00*w27 - 8*A_11*w22 + 16*A_22*w13 + tmp17 + tmp19 + tmp21;
3609                                  EM_S[INDEX2(1,0,8)]+=tmp21_1 + tmp25_1 + tmp26_1 + tmp28_1 + tmp37_1 + tmp3_1 + tmp4_1 + tmp6_1;                                  EM_S[INDEX2(4,2,8)]+=-8*A_00*w27 + 16*A_11*w22 + 16*A_22*w13 + tmp13 + tmp22 + tmp23;
3610                                  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)]+=8*A_00*w27 + 8*A_11*w22 + 8*A_22*w13 + tmp12 + tmp15 + tmp16;
3611                                  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(4,4,8)]+=-32*A_00*w27 - 32*A_11*w22 - 32*A_22*w13 + tmp14 + tmp18 + tmp20;
3612                                  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,5,8)]+=32*A_00*w27 - 16*A_11*w22 - 16*A_22*w13 + tmp0 + tmp10 + tmp8;
3613                                  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(4,6,8)]+=-16*A_00*w27 + 32*A_11*w22 - 16*A_22*w13 + tmp1 + tmp11 + tmp6;
3614                                  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(4,7,8)]+=16*A_00*w27 + 16*A_11*w22 - 8*A_22*w13 + tmp3 + tmp4 + tmp5;
3615                                  EM_S[INDEX2(7,0,8)]+=tmp16_1 + tmp27_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1;                                  EM_S[INDEX2(5,0,8)]+=16*A_00*w27 - 8*A_11*w22 + 16*A_22*w13 + tmp17 + tmp18 + tmp22;
3616                                  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(5,1,8)]+=-16*A_00*w27 - 16*A_11*w22 + 32*A_22*w13 + tmp0 + tmp12 + tmp7;
3617                                  EM_S[INDEX2(1,1,8)]+=tmp13_1 + tmp43_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp52_1;                                  EM_S[INDEX2(5,2,8)]+=8*A_00*w27 + 8*A_11*w22 + 8*A_22*w13 + tmp16 + tmp2 + tmp6;
3618                                  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(5,3,8)]+=-8*A_00*w27 + 16*A_11*w22 + 16*A_22*w13 + tmp19 + tmp23 + tmp3;
3619                                  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(5,4,8)]+=32*A_00*w27 - 16*A_11*w22 - 16*A_22*w13 + tmp10 + tmp11 + tmp9;
3620                                  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(5,5,8)]+=-32*A_00*w27 - 32*A_11*w22 - 32*A_22*w13 + tmp20 + tmp21 + tmp5;
3621                                  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(5,6,8)]+=16*A_00*w27 + 16*A_11*w22 - 8*A_22*w13 + tmp13 + tmp14 + tmp4;
3622                                  EM_S[INDEX2(6,1,8)]+=tmp27_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp36_1;                                  EM_S[INDEX2(5,7,8)]+=-16*A_00*w27 + 32*A_11*w22 - 16*A_22*w13 + tmp1 + tmp15 + tmp8;
3623                                  EM_S[INDEX2(7,1,8)]+=tmp10_1 + tmp12_1 + tmp42_1 + tmp45_1 + tmp49_1 + tmp50_1 + tmp53_1 + tmp8_1;                                  EM_S[INDEX2(6,0,8)]+=-8*A_00*w27 + 16*A_11*w22 + 16*A_22*w13 + tmp13 + tmp19 + tmp20;
3624                                  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(6,1,8)]+=8*A_00*w27 + 8*A_11*w22 + 8*A_22*w13 + tmp10 + tmp15 + tmp2;
3625                                  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(6,2,8)]+=-16*A_00*w27 - 16*A_11*w22 + 32*A_22*w13 + tmp1 + tmp12 + tmp9;
3626                                  EM_S[INDEX2(2,2,8)]+=tmp13_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1;                                  EM_S[INDEX2(6,3,8)]+=16*A_00*w27 - 8*A_11*w22 + 16*A_22*w13 + tmp21 + tmp22 + tmp4;
3627                                  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(6,4,8)]+=-16*A_00*w27 + 32*A_11*w22 - 16*A_22*w13 + tmp6 + tmp7 + tmp8;
3628                                  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(6,5,8)]+=16*A_00*w27 + 16*A_11*w22 - 8*A_22*w13 + tmp14 + tmp17 + tmp3;
3629                                  EM_S[INDEX2(5,2,8)]+=tmp16_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp37_1;                                  EM_S[INDEX2(6,6,8)]+=-32*A_00*w27 - 32*A_11*w22 - 32*A_22*w13 + tmp18 + tmp23 + tmp5;
3630                                  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(6,7,8)]+=32*A_00*w27 - 16*A_11*w22 - 16*A_22*w13 + tmp0 + tmp11 + tmp16;
3631                                  EM_S[INDEX2(7,2,8)]+=tmp11_1 + tmp14_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp9_1;                                  EM_S[INDEX2(7,0,8)]+=8*A_00*w27 + 8*A_11*w22 + 8*A_22*w13 + tmp10 + tmp12 + tmp6;
3632                                  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,1,8)]+=-8*A_00*w27 + 16*A_11*w22 + 16*A_22*w13 + tmp20 + tmp22 + tmp3;
3633                                  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(7,2,8)]+=16*A_00*w27 - 8*A_11*w22 + 16*A_22*w13 + tmp18 + tmp19 + tmp4;
3634                                  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(7,3,8)]+=-16*A_00*w27 - 16*A_11*w22 + 32*A_22*w13 + tmp0 + tmp1 + tmp2;
3635                                  EM_S[INDEX2(3,3,8)]+=tmp35_1 + tmp43_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1;                                  EM_S[INDEX2(7,4,8)]+=16*A_00*w27 + 16*A_11*w22 - 8*A_22*w13 + tmp13 + tmp17 + tmp5;
3636                                  EM_S[INDEX2(4,3,8)]+=tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp36_1 + tmp37_1;                                  EM_S[INDEX2(7,5,8)]+=-16*A_00*w27 + 32*A_11*w22 - 16*A_22*w13 + tmp11 + tmp15 + tmp7;
3637                                  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(7,6,8)]+=32*A_00*w27 - 16*A_11*w22 - 16*A_22*w13 + tmp16 + tmp8 + tmp9;
3638                                  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(7,7,8)]+=-32*A_00*w27 - 32*A_11*w22 - 32*A_22*w13 + tmp14 + tmp21 + tmp23;
                                 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,4,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_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(2,4,8)]+=tmp10_1 + tmp12_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp52_1 + tmp53_1 + tmp8_1;  
                                 EM_S[INDEX2(3,4,8)]+=tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp36_1 + tmp37_1;  
                                 EM_S[INDEX2(4,4,8)]+=tmp35_1 + tmp43_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_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(6,4,8)]+=tmp0_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp22_1;  
                                 EM_S[INDEX2(7,4,8)]+=tmp11_1 + tmp13_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp38_1 + tmp39_1 + tmp8_1;  
                                 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(1,5,8)]+=tmp0_1 + tmp1_1 + tmp23_1 + tmp24_1 + tmp30_1 + tmp5_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(3,5,8)]+=tmp33_1 + tmp34_1 + tmp42_1 + tmp49_1 + tmp50_1 + tmp52_1 + tmp53_1 + tmp8_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(5,5,8)]+=tmp13_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1;  
                                 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(7,5,8)]+=tmp0_1 + tmp17_1 + tmp18_1 + tmp20_1 + tmp21_1 + tmp25_1 + tmp28_1 + tmp36_1;  
                                 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(1,6,8)]+=tmp27_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp36_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(3,6,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp44_1 + tmp51_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,6,8)]+=tmp11_1 + tmp14_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp8_1 + tmp9_1;  
                                 EM_S[INDEX2(6,6,8)]+=tmp13_1 + tmp43_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp52_1;  
                                 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(0,7,8)]+=tmp16_1 + tmp27_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1;  
                                 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(2,7,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp49_1 + tmp50_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(4,7,8)]+=tmp10_1 + tmp11_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp8_1 + tmp9_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(6,7,8)]+=tmp21_1 + tmp25_1 + tmp26_1 + tmp28_1 + tmp37_1 + tmp3_1 + tmp4_1 + tmp6_1;  
                                 EM_S[INDEX2(7,7,8)]+=tmp35_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1 + tmp52_1;  
3639                              }                              }
3640                          }                          }
3641                          ///////////////                          ///////////////
# Line 4081  void Brick::assemblePDESingle(Paso_Syste Line 3669  void Brick::assemblePDESingle(Paso_Syste
3669                                  const double B_0_7 = B_p[INDEX2(0,7,3)];                                  const double B_0_7 = B_p[INDEX2(0,7,3)];
3670                                  const double B_1_7 = B_p[INDEX2(1,7,3)];                                  const double B_1_7 = B_p[INDEX2(1,7,3)];
3671                                  const double B_2_7 = B_p[INDEX2(2,7,3)];                                  const double B_2_7 = B_p[INDEX2(2,7,3)];
3672                                  const double tmp24_0 = B_2_0 + B_2_2;                                  const double tmp0 = w38*(B_0_3 + B_0_7);
3673                                  const double tmp19_0 = B_2_0 + B_2_1 + B_2_2 + B_2_3;                                  const double tmp1 = w31*(B_1_0 + B_1_4);
3674                                  const double tmp20_0 = B_1_0 + B_1_5;                                  const double tmp2 = w42*(B_2_5 + B_2_6);
3675                                  const double tmp22_0 = B_2_1 + B_2_3;                                  const double tmp3 = w35*(B_2_1 + B_2_2);
3676                                  const double tmp29_0 = B_2_2 + B_2_3;                                  const double tmp4 = w37*(B_1_2 + B_1_6);
3677                                  const double tmp34_0 = B_1_0 + B_1_1 + B_1_4 + B_1_5;                                  const double tmp5 = w39*(B_1_3 + B_1_7);
3678                                  const double tmp15_0 = B_2_4 + B_2_5 + B_2_6 + B_2_7;                                  const double tmp6 = w36*(B_0_2 + B_0_6);
3679                                  const double tmp7_0 = B_0_0 + B_0_4;                                  const double tmp7 = w33*(B_0_1 + B_0_5);
3680                                  const double tmp40_0 = B_1_1 + B_1_4;                                  const double tmp8 = w30*(B_0_0 + B_0_4);
3681                                  const double tmp14_0 = B_1_4 + B_1_5;                                  const double tmp9 = w34*(B_1_1 + B_1_5);
3682                                  const double tmp35_0 = B_1_2 + B_1_3 + B_1_6 + B_1_7;                                  const double tmp10 = w38*(-B_0_5 - B_0_7);
3683                                  const double tmp17_0 = B_1_6 + B_1_7;                                  const double tmp11 = w31*(-B_1_0 - B_1_1);
3684                                  const double tmp8_0 = B_1_2 + B_1_6;                                  const double tmp12 = w42*(B_2_0 + B_2_1 + B_2_2 + B_2_3);
3685                                  const double tmp28_0 = B_2_4 + B_2_5;                                  const double tmp13 = w35*(B_2_4 + B_2_5 + B_2_6 + B_2_7);
3686                                  const double tmp10_0 = B_0_1 + B_0_3;                                  const double tmp14 = w37*(-B_1_2 - B_1_3);
3687                                  const double tmp9_0 = B_2_5 + B_2_6;                                  const double tmp15 = w39*(-B_1_6 - B_1_7);
3688                                  const double tmp30_0 = B_2_0 + B_2_1;                                  const double tmp16 = w36*(-B_0_4 - B_0_6);
3689                                  const double tmp27_0 = B_0_0 + B_0_6;                                  const double tmp17 = w33*(-B_0_1 - B_0_3);
3690                                  const double tmp32_0 = B_0_0 + B_0_2 + B_0_4 + B_0_6;                                  const double tmp18 = w30*(-B_0_0 - B_0_2);
3691                                  const double tmp16_0 = B_0_0 + B_0_2;                                  const double tmp19 = w34*(-B_1_4 - B_1_5);
3692                                  const double tmp2_0 = B_1_3 + B_1_7;                                  const double tmp20 = w38*(B_0_1 + B_0_3);
3693                                  const double tmp3_0 = B_2_1 + B_2_2;                                  const double tmp21 = w42*(-B_2_0 - B_2_2);
3694                                  const double tmp33_0 = B_0_1 + B_0_3 + B_0_5 + B_0_7;                                  const double tmp22 = w35*(-B_2_5 - B_2_7);
3695                                  const double tmp23_0 = B_2_5 + B_2_7;                                  const double tmp23 = w37*(-B_1_0 - B_1_5);
3696                                  const double tmp36_0 = B_2_4 + B_2_7;                                  const double tmp24 = w32*(-B_2_4 - B_2_6);
3697                                  const double tmp39_0 = B_0_3 + B_0_5;                                  const double tmp25 = w36*(B_0_0 + B_0_2);
3698                                  const double tmp41_0 = B_1_3 + B_1_6;                                  const double tmp26 = w33*(B_0_5 + B_0_7);
3699                                  const double tmp5_0 = B_1_0 + B_1_4;                                  const double tmp27 = w30*(B_0_4 + B_0_6);
3700                                  const double tmp18_0 = B_1_0 + B_1_1;                                  const double tmp28 = w43*(-B_2_1 - B_2_3);
3701                                  const double tmp0_0 = B_0_1 + B_0_5;                                  const double tmp29 = w34*(-B_1_2 - B_1_7);
3702                                  const double tmp37_0 = B_2_0 + B_2_3;                                  const double tmp30 = w38*(-B_0_4 - B_0_6);
3703                                  const double tmp25_0 = B_2_4 + B_2_6;                                  const double tmp31 = w42*(B_2_5 + B_2_7);
3704                                  const double tmp38_0 = B_0_2 + B_0_4;                                  const double tmp32 = w35*(B_2_0 + B_2_2);
3705                                  const double tmp31_0 = B_2_6 + B_2_7;                                  const double tmp33 = w37*(B_1_2 + B_1_7);
3706                                  const double tmp1_0 = B_0_2 + B_0_6;                                  const double tmp34 = w32*(B_2_1 + B_2_3);
3707                                  const double tmp11_0 = B_0_4 + B_0_6;                                  const double tmp35 = w36*(-B_0_5 - B_0_7);
3708                                  const double tmp21_0 = B_1_2 + B_1_7;                                  const double tmp36 = w33*(-B_0_0 - B_0_2);
3709                                  const double tmp6_0 = B_1_1 + B_1_5;                                  const double tmp37 = w30*(-B_0_1 - B_0_3);
3710                                  const double tmp13_0 = B_1_2 + B_1_3;                                  const double tmp38 = w43*(B_2_4 + B_2_6);
3711                                  const double tmp12_0 = B_0_5 + B_0_7;                                  const double tmp39 = w34*(B_1_0 + B_1_5);
3712                                  const double tmp26_0 = B_0_1 + B_0_7;                                  const double tmp40 = w38*(B_0_0 + B_0_2);
3713                                  const double tmp4_0 = B_0_3 + B_0_7;                                  const double tmp41 = w31*(B_1_6 + B_1_7);
3714                                  const double tmp324_1 = B_0_6*w104;                                  const double tmp42 = w42*(-B_2_4 - B_2_5 - B_2_6 - B_2_7);
3715                                  const double tmp209_1 = B_1_4*w114;                                  const double tmp43 = w35*(-B_2_0 - B_2_1 - B_2_2 - B_2_3);
3716                                  const double tmp255_1 = B_2_3*w103;                                  const double tmp44 = w37*(B_1_4 + B_1_5);
3717                                  const double tmp37_1 = B_1_1*w111;                                  const double tmp45 = w39*(B_1_0 + B_1_1);
3718                                  const double tmp326_1 = tmp38_0*w108;                                  const double tmp46 = w36*(B_0_1 + B_0_3);
3719                                  const double tmp179_1 = tmp21_0*w94;                                  const double tmp47 = w33*(B_0_4 + B_0_6);
3720                                  const double tmp102_1 = tmp4_0*w93;                                  const double tmp48 = w30*(B_0_5 + B_0_7);
3721                                  const double tmp251_1 = B_0_2*w125;                                  const double tmp49 = w34*(B_1_2 + B_1_3);
3722                                  const double tmp321_1 = B_0_4*w90;                                  const double tmp50 = w31*(-B_1_2 - B_1_3);
3723                                  const double tmp198_1 = tmp41_0*w97;                                  const double tmp51 = w42*(B_2_6 + B_2_7);
3724                                  const double tmp15_1 = tmp11_0*w108;                                  const double tmp52 = w35*(B_2_0 + B_2_1);
3725                                  const double tmp158_1 = tmp17_0*w99;                                  const double tmp53 = w37*(-B_1_0 - B_1_1);
3726                                  const double tmp138_1 = tmp35_0*w94;                                  const double tmp54 = w32*(B_2_2 + B_2_3);
3727                                  const double tmp5_1 = B_2_3*w100;                                  const double tmp55 = w39*(-B_1_4 - B_1_5);
3728                                  const double tmp51_1 = tmp25_0*w103;                                  const double tmp56 = w36*(B_0_0 + B_0_6);
3729                                  const double tmp258_1 = B_2_7*w100;                                  const double tmp57 = w33*(B_0_1 + B_0_7);
3730                                  const double tmp221_1 = B_0_4*w125;                                  const double tmp58 = w43*(B_2_4 + B_2_5);
3731                                  const double tmp70_1 = B_0_5*w98;                                  const double tmp59 = w34*(-B_1_6 - B_1_7);
3732                                  const double tmp202_1 = tmp38_0*w96;                                  const double tmp60 = w42*(-B_2_0 - B_2_1 - B_2_2 - B_2_3);
3733                                  const double tmp247_1 = tmp41_0*w94;                                  const double tmp61 = w35*(-B_2_4 - B_2_5 - B_2_6 - B_2_7);
3734                                  const double tmp122_1 = tmp34_0*w94;                                  const double tmp62 = w37*(-B_1_0 - B_1_1 - B_1_4 - B_1_5);
3735                                  const double tmp349_1 = B_2_1*w101;                                  const double tmp63 = w36*(-B_0_1 - B_0_3 - B_0_5 - B_0_7);
3736                                  const double tmp167_1 = tmp31_0*w103;                                  const double tmp64 = w33*(-B_0_0 - B_0_2 - B_0_4 - B_0_6);
3737                                  const double tmp408_1 = tmp8_0*w111;                                  const double tmp65 = w34*(-B_1_2 - B_1_3 - B_1_6 - B_1_7);
3738                                  const double tmp20_1 = tmp16_0*w104;                                  const double tmp66 = w38*(B_0_4 + B_0_6);
3739                                  const double tmp2_1 = B_2_7*w103;                                  const double tmp67 = w36*(B_0_5 + B_0_7);
3740                                  const double tmp398_1 = B_1_7*w99;                                  const double tmp68 = w33*(B_0_0 + B_0_2);
3741                                  const double tmp262_1 = B_1_7*w119;                                  const double tmp69 = w30*(B_0_1 + B_0_3);
3742                                  const double tmp97_1 = tmp5_0*w94;                                  const double tmp70 = w38*(-B_0_2 - B_0_6);
3743                                  const double tmp157_1 = tmp30_0*w92;                                  const double tmp71 = w31*(B_1_1 + B_1_5);
3744                                  const double tmp67_1 = tmp18_0*w107;                                  const double tmp72 = w42*(-B_2_0 - B_2_3);
3745                                  const double tmp144_1 = tmp7_0*w110;                                  const double tmp73 = w35*(-B_2_4 - B_2_7);
3746                                  const double tmp264_1 = B_0_0*w120;                                  const double tmp74 = w37*(B_1_3 + B_1_7);
3747                                  const double tmp396_1 = tmp6_0*w97;                                  const double tmp75 = w39*(B_1_2 + B_1_6);
3748                                  const double tmp218_1 = B_1_6*w111;                                  const double tmp76 = w36*(-B_0_3 - B_0_7);
3749                                  const double tmp147_1 = tmp8_0*w109;                                  const double tmp77 = w33*(-B_0_0 - B_0_4);
3750                                  const double tmp39_1 = tmp12_0*w108;                                  const double tmp78 = w30*(-B_0_1 - B_0_5);
3751                                  const double tmp58_1 = tmp15_0*w112;                                  const double tmp79 = w34*(B_1_0 + B_1_4);
3752                                  const double tmp214_1 = B_1_3*w115;                                  const double tmp80 = w36*(B_0_0 + B_0_2 + B_0_4 + B_0_6);
3753                                  const double tmp69_1 = tmp30_0*w95;                                  const double tmp81 = w33*(B_0_1 + B_0_3 + B_0_5 + B_0_7);
3754                                  const double tmp54_1 = tmp18_0*w99;                                  const double tmp82 = w38*(B_0_1 + B_0_5);
3755                                  const double tmp261_1 = B_2_0*w101;                                  const double tmp83 = w31*(-B_1_2 - B_1_6);
3756                                  const double tmp390_1 = tmp24_0*w103;                                  const double tmp84 = w42*(B_2_4 + B_2_7);
3757                                  const double tmp374_1 = B_2_1*w103;                                  const double tmp85 = w35*(B_2_0 + B_2_3);
3758                                  const double tmp151_1 = tmp2_0*w105;                                  const double tmp86 = w37*(-B_1_0 - B_1_4);
3759                                  const double tmp274_1 = tmp22_0*w95;                                  const double tmp87 = w39*(-B_1_1 - B_1_5);
3760                                  const double tmp126_1 = tmp16_0*w108;                                  const double tmp88 = w36*(B_0_0 + B_0_4);
3761                                  const double tmp302_1 = B_2_6*w122;                                  const double tmp89 = w33*(B_0_3 + B_0_7);
3762                                  const double tmp14_1 = tmp10_0*w106;                                  const double tmp90 = w30*(B_0_2 + B_0_6);
3763                                  const double tmp190_1 = B_1_2*w99;                                  const double tmp91 = w34*(-B_1_3 - B_1_7);
3764                                  const double tmp9_1 = B_2_4*w101;                                  const double tmp92 = w42*(-B_2_1 - B_2_2);
3765                                  const double tmp150_1 = B_2_7*w101;                                  const double tmp93 = w35*(-B_2_5 - B_2_6);
3766                                  const double tmp66_1 = tmp29_0*w92;                                  const double tmp94 = w37*(B_1_2 + B_1_3 + B_1_6 + B_1_7);
3767                                  const double tmp334_1 = B_0_7*w124;                                  const double tmp95 = w34*(B_1_0 + B_1_1 + B_1_4 + B_1_5);
3768                                  const double tmp252_1 = tmp38_0*w93;                                  const double tmp96 = w38*(-B_0_1 - B_0_3);
3769                                  const double tmp392_1 = tmp5_0*w99;                                  const double tmp97 = w31*(-B_1_4 - B_1_5);
3770                                  const double tmp4_1 = tmp2_0*w99;                                  const double tmp98 = w37*(-B_1_6 - B_1_7);
3771                                  const double tmp63_1 = B_0_4*w121;                                  const double tmp99 = w39*(-B_1_2 - B_1_3);
3772                                  const double tmp152_1 = tmp5_0*w111;                                  const double tmp100 = w36*(-B_0_0 - B_0_2);
3773                                  const double tmp133_1 = tmp4_0*w96;                                  const double tmp101 = w33*(-B_0_5 - B_0_7);
3774                                  const double tmp195_1 = tmp40_0*w94;                                  const double tmp102 = w30*(-B_0_4 - B_0_6);
3775                                  const double tmp145_1 = B_2_3*w92;                                  const double tmp103 = w34*(-B_1_0 - B_1_1);
3776                                  const double tmp35_1 = tmp25_0*w116;                                  const double tmp104 = w38*(B_0_2 + B_0_6);
3777                                  const double tmp316_1 = B_0_3*w98;                                  const double tmp105 = w42*(B_2_0 + B_2_1);
3778                                  const double tmp208_1 = B_2_0*w103;                                  const double tmp106 = w35*(B_2_6 + B_2_7);
3779                                  const double tmp373_1 = B_1_2*w115;                                  const double tmp107 = w37*(B_1_0 + B_1_1 + B_1_4 + B_1_5);
3780                                  const double tmp62_1 = tmp26_0*w93;                                  const double tmp108 = w32*(B_2_4 + B_2_5);
3781                                  const double tmp85_1 = tmp10_0*w90;                                  const double tmp109 = w36*(B_0_3 + B_0_7);
3782                                  const double tmp187_1 = tmp11_0*w106;                                  const double tmp110 = w33*(B_0_0 + B_0_4);
3783                                  const double tmp342_1 = B_2_5*w92;                                  const double tmp111 = w30*(B_0_1 + B_0_5);
3784                                  const double tmp77_1 = tmp33_0*w108;                                  const double tmp112 = w43*(B_2_2 + B_2_3);
3785                                  const double tmp121_1 = B_2_4*w116;                                  const double tmp113 = w34*(B_1_2 + B_1_3 + B_1_6 + B_1_7);
3786                                  const double tmp379_1 = B_2_2*w101;                                  const double tmp114 = w38*(-B_0_0 - B_0_4);
3787                                  const double tmp391_1 = tmp23_0*w92;                                  const double tmp115 = w31*(-B_1_3 - B_1_7);
3788                                  const double tmp451_1 = tmp22_0*w116;                                  const double tmp116 = w37*(-B_1_1 - B_1_5);
3789                                  const double tmp73_1 = B_0_2*w90;                                  const double tmp117 = w39*(-B_1_0 - B_1_4);
3790                                  const double tmp436_1 = B_1_6*w114;                                  const double tmp118 = w36*(-B_0_1 - B_0_5);
3791                                  const double tmp233_1 = tmp29_0*w117;                                  const double tmp119 = w33*(-B_0_2 - B_0_6);
3792                                  const double tmp426_1 = tmp23_0*w113;                                  const double tmp120 = w30*(-B_0_3 - B_0_7);
3793                                  const double tmp124_1 = tmp11_0*w104;                                  const double tmp121 = w34*(-B_1_2 - B_1_6);
3794                                  const double tmp148_1 = B_2_0*w100;                                  const double tmp122 = w31*(B_1_0 + B_1_1);
3795                                  const double tmp314_1 = tmp29_0*w113;                                  const double tmp123 = w42*(B_2_4 + B_2_5);
3796                                  const double tmp163_1 = B_0_0*w124;                                  const double tmp124 = w35*(B_2_2 + B_2_3);
3797                                  const double tmp301_1 = B_1_6*w115;                                  const double tmp125 = w37*(B_1_2 + B_1_3);
3798                                  const double tmp171_1 = B_2_4*w122;                                  const double tmp126 = w32*(B_2_0 + B_2_1);
3799                                  const double tmp7_1 = tmp4_0*w98;                                  const double tmp127 = w39*(B_1_6 + B_1_7);
3800                                  const double tmp11_1 = tmp7_0*w90;                                  const double tmp128 = w36*(-B_0_3 - B_0_5);
3801                                  const double tmp308_1 = B_2_2*w116;                                  const double tmp129 = w33*(-B_0_2 - B_0_4);
3802                                  const double tmp117_1 = B_2_3*w113;                                  const double tmp130 = w43*(B_2_6 + B_2_7);
3803                                  const double tmp403_1 = B_0_5*w104;                                  const double tmp131 = w34*(B_1_4 + B_1_5);
3804                                  const double tmp178_1 = tmp9_0*w112;                                  const double tmp132 = w42*(-B_2_5 - B_2_6);
3805                                  const double tmp128_1 = tmp17_0*w107;                                  const double tmp133 = w35*(-B_2_1 - B_2_2);
3806                                  const double tmp89_1 = tmp1_0*w110;                                  const double tmp134 = w37*(B_1_0 + B_1_5);
3807                                  const double tmp434_1 = tmp19_0*w95;                                  const double tmp135 = w36*(B_0_1 + B_0_7);
3808                                  const double tmp270_1 = B_1_7*w114;                                  const double tmp136 = w33*(B_0_0 + B_0_6);
3809                                  const double tmp358_1 = tmp6_0*w99;                                  const double tmp137 = w34*(B_1_2 + B_1_7);
3810                                  const double tmp411_1 = tmp14_0*w107;                                  const double tmp138 = w38*(-B_0_0 - B_0_2);
3811                                  const double tmp433_1 = B_0_1*w125;                                  const double tmp139 = w42*(-B_2_1 - B_2_3);
3812                                  const double tmp376_1 = B_2_6*w92;                                  const double tmp140 = w35*(-B_2_4 - B_2_6);
3813                                  const double tmp42_1 = B_1_6*w99;                                  const double tmp141 = w37*(B_1_3 + B_1_6);
3814                                  const double tmp72_1 = tmp13_0*w105;                                  const double tmp142 = w32*(-B_2_5 - B_2_7);
3815                                  const double tmp287_1 = tmp2_0*w111;                                  const double tmp143 = w36*(-B_0_1 - B_0_3);
3816                                  const double tmp191_1 = tmp24_0*w113;                                  const double tmp144 = w33*(-B_0_4 - B_0_6);
3817                                  const double tmp6_1 = tmp3_0*w95;                                  const double tmp145 = w30*(-B_0_5 - B_0_7);
3818                                  const double tmp309_1 = B_1_4*w105;                                  const double tmp146 = w43*(-B_2_0 - B_2_2);
3819                                  const double tmp367_1 = B_0_5*w125;                                  const double tmp147 = w34*(B_1_1 + B_1_4);
3820                                  const double tmp234_1 = tmp28_0*w112;                                  const double tmp148 = w36*(B_0_2 + B_0_4);
3821                                  const double tmp339_1 = B_1_2*w111;                                  const double tmp149 = w33*(B_0_3 + B_0_5);
3822                                  const double tmp335_1 = tmp41_0*w107;                                  const double tmp150 = w42*(B_2_1 + B_2_2);
3823                                  const double tmp173_1 = B_2_7*w113;                                  const double tmp151 = w35*(B_2_5 + B_2_6);
3824                                  const double tmp384_1 = tmp28_0*w113;                                  const double tmp152 = w37*(-B_1_2 - B_1_7);
3825                                  const double tmp81_1 = tmp19_0*w112;                                  const double tmp153 = w36*(-B_0_0 - B_0_6);
3826                                  const double tmp328_1 = B_2_7*w122;                                  const double tmp154 = w33*(-B_0_1 - B_0_7);
3827                                  const double tmp413_1 = tmp30_0*w113;                                  const double tmp155 = w34*(-B_1_0 - B_1_5);
3828                                  const double tmp111_1 = B_2_6*w101;                                  const double tmp156 = w38*(-B_0_3 - B_0_7);
3829                                  const double tmp378_1 = B_0_4*w98;                                  const double tmp157 = w36*(-B_0_2 - B_0_6);
3830                                  const double tmp211_1 = tmp21_0*w107;                                  const double tmp158 = w33*(-B_0_1 - B_0_5);
3831                                  const double tmp79_1 = tmp35_0*w109;                                  const double tmp159 = w30*(-B_0_0 - B_0_4);
3832                                  const double tmp354_1 = tmp1_0*w93;                                  const double tmp160 = w42*(-B_2_4 - B_2_5);
3833                                  const double tmp333_1 = B_2_0*w123;                                  const double tmp161 = w35*(-B_2_2 - B_2_3);
3834                                  const double tmp169_1 = B_0_3*w121;                                  const double tmp162 = w32*(-B_2_0 - B_2_1);
3835                                  const double tmp300_1 = B_0_1*w121;                                  const double tmp163 = w43*(-B_2_6 - B_2_7);
3836                                  const double tmp118_1 = B_2_7*w123;                                  const double tmp164 = w42*(-B_2_4 - B_2_7);
3837                                  const double tmp372_1 = B_0_5*w121;                                  const double tmp165 = w35*(-B_2_0 - B_2_3);
3838                                  const double tmp104_1 = B_2_5*w103;                                  const double tmp166 = w37*(B_1_1 + B_1_4);
3839                                  const double tmp304_1 = B_2_5*w113;                                  const double tmp167 = w34*(B_1_3 + B_1_6);
3840                                  const double tmp397_1 = tmp22_0*w102;                                  const double tmp168 = w36*(B_0_3 + B_0_5);
3841                                  const double tmp61_1 = tmp14_0*w97;                                  const double tmp169 = w33*(B_0_2 + B_0_4);
3842                                  const double tmp290_1 = tmp4_0*w106;                                  const double tmp170 = w38*(B_0_5 + B_0_7);
3843                                  const double tmp269_1 = tmp23_0*w103;                                  const double tmp171 = w42*(B_2_4 + B_2_6);
3844                                  const double tmp361_1 = tmp5_0*w97;                                  const double tmp172 = w35*(B_2_1 + B_2_3);
3845                                  const double tmp189_1 = tmp16_0*w110;                                  const double tmp173 = w37*(-B_1_1 - B_1_4);
3846                                  const double tmp116_1 = B_2_0*w122;                                  const double tmp174 = w32*(B_2_0 + B_2_2);
3847                                  const double tmp449_1 = tmp24_0*w117;                                  const double tmp175 = w36*(B_0_4 + B_0_6);
3848                                  const double tmp268_1 = tmp11_0*w96;                                  const double tmp176 = w33*(B_0_1 + B_0_3);
3849                                  const double tmp325_1 = tmp39_0*w106;                                  const double tmp177 = w30*(B_0_0 + B_0_2);
3850                                  const double tmp27_1 = tmp20_0*w107;                                  const double tmp178 = w43*(B_2_5 + B_2_7);
3851                                  const double tmp174_1 = B_2_3*w123;                                  const double tmp179 = w34*(-B_1_3 - B_1_6);
3852                                  const double tmp422_1 = tmp14_0*w99;                                  const double tmp180 = w31*(-B_1_0 - B_1_4);
3853                                  const double tmp146_1 = tmp6_0*w107;                                  const double tmp181 = w42*(B_2_0 + B_2_2);
3854                                  const double tmp277_1 = B_1_2*w105;                                  const double tmp182 = w35*(B_2_5 + B_2_7);
3855                                  const double tmp443_1 = B_1_6*w118;                                  const double tmp183 = w37*(-B_1_2 - B_1_6);
3856                                  const double tmp446_1 = B_1_7*w105;                                  const double tmp184 = w32*(B_2_4 + B_2_6);
3857                                  const double tmp91_1 = tmp8_0*w99;                                  const double tmp185 = w39*(-B_1_3 - B_1_7);
3858                                  const double tmp405_1 = B_0_3*w125;                                  const double tmp186 = w36*(B_0_1 + B_0_3 + B_0_5 + B_0_7);
3859                                  const double tmp57_1 = tmp17_0*w91;                                  const double tmp187 = w33*(B_0_0 + B_0_2 + B_0_4 + B_0_6);
3860                                  const double tmp455_1 = B_2_6*w103;                                  const double tmp188 = w43*(B_2_1 + B_2_3);
3861                                  const double tmp110_1 = tmp0_0*w98;                                  const double tmp189 = w34*(-B_1_1 - B_1_5);
3862                                  const double tmp341_1 = B_1_6*w119;                                  const double tmp190 = w38*(-B_0_1 - B_0_5);
3863                                  const double tmp203_1 = B_0_7*w98;                                  const double tmp191 = w42*(B_2_2 + B_2_3);
3864                                  const double tmp371_1 = B_2_7*w116;                                  const double tmp192 = w35*(B_2_4 + B_2_5);
3865                                  const double tmp382_1 = B_0_3*w90;                                  const double tmp193 = w37*(-B_1_2 - B_1_3 - B_1_6 - B_1_7);
3866                                  const double tmp320_1 = tmp28_0*w116;                                  const double tmp194 = w32*(B_2_6 + B_2_7);
3867                                  const double tmp107_1 = tmp2_0*w109;                                  const double tmp195 = w36*(-B_0_0 - B_0_4);
3868                                  const double tmp149_1 = tmp4_0*w104;                                  const double tmp196 = w33*(-B_0_3 - B_0_7);
3869                                  const double tmp159_1 = tmp29_0*w95;                                  const double tmp197 = w30*(-B_0_2 - B_0_6);
3870                                  const double tmp253_1 = B_0_7*w121;                                  const double tmp198 = w43*(B_2_0 + B_2_1);
3871                                  const double tmp90_1 = B_2_1*w122;                                  const double tmp199 = w34*(-B_1_0 - B_1_1 - B_1_4 - B_1_5);
3872                                  const double tmp360_1 = tmp2_0*w94;                                  const double tmp200 = w31*(B_1_4 + B_1_5);
3873                                  const double tmp414_1 = tmp28_0*w117;                                  const double tmp201 = w42*(-B_2_0 - B_2_1);
3874                                  const double tmp26_1 = tmp16_0*w96;                                  const double tmp202 = w35*(-B_2_6 - B_2_7);
3875                                  const double tmp84_1 = tmp11_0*w98;                                  const double tmp203 = w37*(B_1_6 + B_1_7);
3876                                  const double tmp225_1 = tmp1_0*w108;                                  const double tmp204 = w32*(-B_2_4 - B_2_5);
3877                                  const double tmp1_1 = tmp1_0*w96;                                  const double tmp205 = w39*(B_1_2 + B_1_3);
3878                                  const double tmp344_1 = B_2_6*w100;                                  const double tmp206 = w43*(-B_2_2 - B_2_3);
3879                                  const double tmp400_1 = B_1_5*w119;                                  const double tmp207 = w34*(B_1_0 + B_1_1);
3880                                  const double tmp345_1 = tmp36_0*w95;                                  const double tmp208 = w37*(-B_1_3 - B_1_6);
3881                                  const double tmp407_1 = tmp5_0*w109;                                  const double tmp209 = w36*(-B_0_2 - B_0_4);
3882                                  const double tmp228_1 = B_2_2*w122;                                  const double tmp210 = w33*(-B_0_3 - B_0_5);
3883                                  const double tmp113_1 = tmp8_0*w105;                                  const double tmp211 = w34*(-B_1_1 - B_1_4);
3884                                  const double tmp347_1 = B_0_0*w104;                                  const double tmp212 = w42*(B_2_0 + B_2_3);
3885                                  const double tmp286_1 = tmp23_0*w95;                                  const double tmp213 = w35*(B_2_4 + B_2_7);
3886                                  const double tmp395_1 = tmp8_0*w94;                                  const double tmp214 = w38*(B_0_0 + B_0_4);
3887                                  const double tmp401_1 = B_1_2*w118;                                  const double tmp215 = w36*(B_0_1 + B_0_5);
3888                                  const double tmp380_1 = B_1_7*w111;                                  const double tmp216 = w33*(B_0_2 + B_0_6);
3889                                  const double tmp327_1 = B_0_1*w110;                                  const double tmp217 = w30*(B_0_3 + B_0_7);
3890                                  const double tmp55_1 = tmp19_0*w117;                                  const double tmp218 = w31*(B_1_2 + B_1_6);
3891                                  const double tmp291_1 = tmp7_0*w108;                                  const double tmp219 = w37*(B_1_0 + B_1_4);
3892                                  const double tmp31_1 = tmp10_0*w98;                                  const double tmp220 = w39*(B_1_1 + B_1_5);
3893                                  const double tmp125_1 = tmp12_0*w106;                                  const double tmp221 = w34*(B_1_3 + B_1_7);
3894                                  const double tmp330_1 = tmp40_0*w109;                                  const double tmp222 = w36*(-B_0_1 - B_0_7);
3895                                  const double tmp323_1 = tmp17_0*w97;                                  const double tmp223 = w33*(-B_0_0 - B_0_6);
3896                                  const double tmp136_1 = tmp31_0*w95;                                  const double tmp224 = w42*(-B_2_6 - B_2_7);
3897                                  const double tmp16_1 = tmp12_0*w110;                                  const double tmp225 = w35*(-B_2_0 - B_2_1);
3898                                  const double tmp418_1 = B_0_6*w90;                                  const double tmp226 = w32*(-B_2_2 - B_2_3);
3899                                  const double tmp428_1 = tmp25_0*w112;                                  const double tmp227 = w43*(-B_2_4 - B_2_5);
3900                                  const double tmp385_1 = tmp30_0*w117;                                  const double tmp228 = w31*(B_1_3 + B_1_7);
3901                                  const double tmp351_1 = B_1_1*w118;                                  const double tmp229 = w42*(B_2_1 + B_2_3);
3902                                  const double tmp165_1 = B_0_7*w125;                                  const double tmp230 = w35*(B_2_4 + B_2_6);
3903                                  const double tmp298_1 = tmp29_0*w102;                                  const double tmp231 = w37*(B_1_1 + B_1_5);
3904                                  const double tmp295_1 = tmp34_0*w109;                                  const double tmp232 = w32*(B_2_5 + B_2_7);
3905                                  const double tmp296_1 = tmp28_0*w95;                                  const double tmp233 = w39*(B_1_0 + B_1_4);
3906                                  const double tmp283_1 = tmp25_0*w92;                                  const double tmp234 = w36*(-B_0_0 - B_0_2 - B_0_4 - B_0_6);
3907                                  const double tmp230_1 = B_2_5*w123;                                  const double tmp235 = w33*(-B_0_1 - B_0_3 - B_0_5 - B_0_7);
3908                                  const double tmp350_1 = B_0_1*w124;                                  const double tmp236 = w43*(B_2_0 + B_2_2);
3909                                  const double tmp293_1 = tmp31_0*w92;                                  const double tmp237 = w34*(B_1_2 + B_1_6);
3910                                  const double tmp8_1 = tmp5_0*w91;                                  const double tmp238 = w31*(-B_1_1 - B_1_5);
3911                                  const double tmp215_1 = tmp9_0*w95;                                  const double tmp239 = w37*(-B_1_3 - B_1_7);
3912                                  const double tmp329_1 = B_1_0*w114;                                  const double tmp240 = w39*(-B_1_2 - B_1_6);
3913                                  const double tmp115_1 = tmp6_0*w111;                                  const double tmp241 = w34*(-B_1_0 - B_1_4);
3914                                  const double tmp387_1 = tmp29_0*w116;                                  const double tmp242 = w31*(-B_1_6 - B_1_7);
3915                                  const double tmp442_1 = B_1_1*w119;                                  const double tmp243 = w42*(-B_2_2 - B_2_3);
3916                                  const double tmp281_1 = tmp33_0*w96;                                  const double tmp244 = w35*(-B_2_4 - B_2_5);
3917                                  const double tmp415_1 = B_0_1*w98;                                  const double tmp245 = w37*(-B_1_4 - B_1_5);
3918                                  const double tmp311_1 = B_1_3*w111;                                  const double tmp246 = w32*(-B_2_6 - B_2_7);
3919                                  const double tmp50_1 = tmp23_0*w102;                                  const double tmp247 = w39*(-B_1_0 - B_1_1);
3920                                  const double tmp294_1 = tmp35_0*w107;                                  const double tmp248 = w43*(-B_2_0 - B_2_1);
3921                                  const double tmp362_1 = tmp27_0*w106;                                  const double tmp249 = w34*(-B_1_2 - B_1_3);
3922                                  const double tmp340_1 = B_2_2*w103;                                  const double tmp250 = w31*(B_1_2 + B_1_3);
3923                                  const double tmp282_1 = tmp22_0*w103;                                  const double tmp251 = w37*(B_1_0 + B_1_1);
3924                                  const double tmp254_1 = tmp39_0*w96;                                  const double tmp252 = w39*(B_1_4 + B_1_5);
3925                                  const double tmp186_1 = tmp12_0*w104;                                  const double tmp253 = w34*(B_1_6 + B_1_7);
3926                                  const double tmp106_1 = tmp5_0*w107;                                  const double tmp254 = w42*(-B_2_4 - B_2_6);
3927                                  const double tmp170_1 = tmp26_0*w96;                                  const double tmp255 = w35*(-B_2_1 - B_2_3);
3928                                  const double tmp427_1 = tmp22_0*w117;                                  const double tmp256 = w32*(-B_2_0 - B_2_2);
3929                                  const double tmp452_1 = B_2_1*w92;                                  const double tmp257 = w43*(-B_2_5 - B_2_7);
3930                                  const double tmp437_1 = B_1_1*w115;                                  const double tmp258 = w42*(B_2_4 + B_2_5 + B_2_6 + B_2_7);
3931                                  const double tmp431_1 = B_0_0*w110;                                  const double tmp259 = w35*(B_2_0 + B_2_1 + B_2_2 + B_2_3);
3932                                  const double tmp201_1 = B_0_6*w121;                                  const double tmp260 = w42*(-B_2_5 - B_2_7);
3933                                  const double tmp310_1 = B_0_6*w120;                                  const double tmp261 = w35*(-B_2_0 - B_2_2);
3934                                  const double tmp331_1 = B_2_4*w113;                                  const double tmp262 = w32*(-B_2_1 - B_2_3);
3935                                  const double tmp212_1 = tmp20_0*w109;                                  const double tmp263 = w43*(-B_2_4 - B_2_6);
3936                                  const double tmp47_1 = B_1_4*w119;                                  EM_S[INDEX2(0,0,8)]+=-B_0_0*w47 - B_0_1*w38 - B_0_6*w30 - B_0_7*w46 + B_1_0*w44 - B_1_2*w39 - B_1_5*w31 + B_1_7*w45 - B_2_0*w40 - B_2_3*w32 - B_2_4*w43 - B_2_7*w41 + tmp132 + tmp133 + tmp208 + tmp209 + tmp210 + tmp211;
3937                                  const double tmp420_1 = B_0_7*w120;                                  EM_S[INDEX2(0,1,8)]+=-B_0_0*w38 - B_0_1*w47 - B_0_6*w46 - B_0_7*w30 + tmp128 + tmp129 + tmp242 + tmp243 + tmp244 + tmp245 + tmp246 + tmp247 + tmp248 + tmp249;
3938                                  const double tmp38_1 = tmp16_0*w106;                                  EM_S[INDEX2(0,2,8)]+=-B_1_0*w39 + B_1_2*w44 + B_1_5*w45 - B_1_7*w31 + tmp138 + tmp139 + tmp140 + tmp142 + tmp143 + tmp144 + tmp145 + tmp146 + tmp173 + tmp179;
3939                                  const double tmp184_1 = tmp20_0*w97;                                  EM_S[INDEX2(0,3,8)]+=tmp100 + tmp101 + tmp102 + tmp103 + tmp42 + tmp43 + tmp96 + tmp97 + tmp98 + tmp99;
3940                                  const double tmp280_1 = tmp32_0*w93;                                  EM_S[INDEX2(0,4,8)]+=-B_2_0*w43 - B_2_3*w41 - B_2_4*w40 - B_2_7*w32 + tmp114 + tmp115 + tmp116 + tmp117 + tmp118 + tmp119 + tmp120 + tmp121 + tmp92 + tmp93;
3941                                  const double tmp123_1 = tmp35_0*w97;                                  EM_S[INDEX2(0,5,8)]+=tmp190 + tmp193 + tmp195 + tmp196 + tmp197 + tmp199 + tmp224 + tmp225 + tmp226 + tmp227;
3942                                  const double tmp359_1 = tmp8_0*w91;                                  EM_S[INDEX2(0,6,8)]+=tmp234 + tmp235 + tmp238 + tmp239 + tmp240 + tmp241 + tmp260 + tmp261 + tmp262 + tmp263;
3943                                  const double tmp95_1 = tmp6_0*w91;                                  EM_S[INDEX2(0,7,8)]+=tmp60 + tmp61 + tmp62 + tmp63 + tmp64 + tmp65;
3944                                  const double tmp246_1 = tmp36_0*w112;                                  EM_S[INDEX2(1,0,8)]+=B_0_0*w47 + B_0_1*w38 + B_0_6*w30 + B_0_7*w46 + tmp148 + tmp149 + tmp242 + tmp243 + tmp244 + tmp245 + tmp246 + tmp247 + tmp248 + tmp249;
3945                                  const double tmp241_1 = B_2_6*w113;                                  EM_S[INDEX2(1,1,8)]+=B_0_0*w38 + B_0_1*w47 + B_0_6*w46 + B_0_7*w30 + B_1_1*w44 - B_1_3*w39 - B_1_4*w31 + B_1_6*w45 - B_2_1*w40 - B_2_2*w32 - B_2_5*w43 - B_2_6*w41 + tmp152 + tmp155 + tmp164 + tmp165 + tmp168 + tmp169;
3946                                  const double tmp3_1 = B_2_0*w92;                                  EM_S[INDEX2(1,2,8)]+=tmp103 + tmp40 + tmp42 + tmp43 + tmp46 + tmp47 + tmp48 + tmp97 + tmp98 + tmp99;
3947                                  const double tmp162_1 = tmp14_0*w94;                                  EM_S[INDEX2(1,3,8)]+=-B_1_1*w39 + B_1_3*w44 + B_1_4*w45 - B_1_6*w31 + tmp20 + tmp21 + tmp22 + tmp23 + tmp24 + tmp25 + tmp26 + tmp27 + tmp28 + tmp29;
3948                                  const double tmp406_1 = tmp2_0*w107;                                  EM_S[INDEX2(1,4,8)]+=tmp193 + tmp199 + tmp214 + tmp215 + tmp216 + tmp217 + tmp224 + tmp225 + tmp226 + tmp227;
3949                                  const double tmp175_1 = tmp3_0*w117;                                  EM_S[INDEX2(1,5,8)]+=-B_2_1*w43 - B_2_2*w41 - B_2_5*w40 - B_2_6*w32 + tmp72 + tmp73 + tmp82 + tmp83 + tmp86 + tmp87 + tmp88 + tmp89 + tmp90 + tmp91;
3950                                  const double tmp205_1 = B_0_1*w120;                                  EM_S[INDEX2(1,6,8)]+=tmp60 + tmp61 + tmp62 + tmp65 + tmp80 + tmp81;
3951                                  const double tmp416_1 = tmp29_0*w112;                                  EM_S[INDEX2(1,7,8)]+=tmp180 + tmp183 + tmp185 + tmp186 + tmp187 + tmp189 + tmp254 + tmp255 + tmp256 + tmp257;
3952                                  const double tmp48_1 = tmp21_0*w97;                                  EM_S[INDEX2(2,0,8)]+=-B_1_0*w44 + B_1_2*w39 + B_1_5*w31 - B_1_7*w45 + tmp138 + tmp139 + tmp140 + tmp141 + tmp142 + tmp143 + tmp144 + tmp145 + tmp146 + tmp147;
3953                                  const double tmp101_1 = tmp32_0*w96;                                  EM_S[INDEX2(2,1,8)]+=tmp100 + tmp101 + tmp102 + tmp41 + tmp42 + tmp43 + tmp44 + tmp45 + tmp49 + tmp96;
3954                                  const double tmp231_1 = B_2_6*w116;                                  EM_S[INDEX2(2,2,8)]+=-B_0_2*w47 - B_0_3*w38 - B_0_4*w30 - B_0_5*w46 + B_1_0*w39 - B_1_2*w44 - B_1_5*w45 + B_1_7*w31 - B_2_1*w32 - B_2_2*w40 - B_2_5*w41 - B_2_6*w43 + tmp153 + tmp154 + tmp164 + tmp165 + tmp166 + tmp167;
3955                                  const double tmp366_1 = B_0_2*w124;                                  EM_S[INDEX2(2,3,8)]+=-B_0_2*w38 - B_0_3*w47 - B_0_4*w46 - B_0_5*w30 + tmp200 + tmp201 + tmp202 + tmp203 + tmp204 + tmp205 + tmp206 + tmp207 + tmp222 + tmp223;
3956                                  const double tmp34_1 = tmp11_0*w90;                                  EM_S[INDEX2(2,4,8)]+=tmp228 + tmp231 + tmp233 + tmp234 + tmp235 + tmp237 + tmp260 + tmp261 + tmp262 + tmp263;
3957                                  const double tmp200_1 = tmp39_0*w93;                                  EM_S[INDEX2(2,5,8)]+=tmp60 + tmp61 + tmp63 + tmp64 + tmp94 + tmp95;
3958                                  const double tmp44_1 = tmp10_0*w104;                                  EM_S[INDEX2(2,6,8)]+=-B_2_1*w41 - B_2_2*w43 - B_2_5*w32 - B_2_6*w40 + tmp70 + tmp71 + tmp72 + tmp73 + tmp74 + tmp75 + tmp76 + tmp77 + tmp78 + tmp79;
3959                                  const double tmp346_1 = B_0_6*w125;                                  EM_S[INDEX2(2,7,8)]+=tmp107 + tmp113 + tmp156 + tmp157 + tmp158 + tmp159 + tmp160 + tmp161 + tmp162 + tmp163;
3960                                  const double tmp65_1 = tmp28_0*w103;                                  EM_S[INDEX2(3,0,8)]+=tmp40 + tmp41 + tmp42 + tmp43 + tmp44 + tmp45 + tmp46 + tmp47 + tmp48 + tmp49;
3961                                  const double tmp248_1 = B_1_2*w119;                                  EM_S[INDEX2(3,1,8)]+=-B_1_1*w44 + B_1_3*w39 + B_1_4*w31 - B_1_6*w45 + tmp20 + tmp21 + tmp22 + tmp24 + tmp25 + tmp26 + tmp27 + tmp28 + tmp33 + tmp39;
3962                                  const double tmp288_1 = tmp5_0*w105;                                  EM_S[INDEX2(3,2,8)]+=B_0_2*w47 + B_0_3*w38 + B_0_4*w30 + B_0_5*w46 + tmp200 + tmp201 + tmp202 + tmp203 + tmp204 + tmp205 + tmp206 + tmp207 + tmp56 + tmp57;
3963                                  const double tmp227_1 = tmp4_0*w110;                                  EM_S[INDEX2(3,3,8)]+=B_0_2*w38 + B_0_3*w47 + B_0_4*w46 + B_0_5*w30 + B_1_1*w39 - B_1_3*w44 - B_1_4*w45 + B_1_6*w31 - B_2_0*w32 - B_2_3*w40 - B_2_4*w41 - B_2_7*w43 + tmp132 + tmp133 + tmp134 + tmp135 + tmp136 + tmp137;
3964                                  const double tmp343_1 = B_1_4*w99;                                  EM_S[INDEX2(3,4,8)]+=tmp60 + tmp61 + tmp80 + tmp81 + tmp94 + tmp95;
3965                                  const double tmp139_1 = tmp0_0*w90;                                  EM_S[INDEX2(3,5,8)]+=tmp186 + tmp187 + tmp218 + tmp219 + tmp220 + tmp221 + tmp254 + tmp255 + tmp256 + tmp257;
3966                                  const double tmp41_1 = tmp22_0*w92;                                  EM_S[INDEX2(3,6,8)]+=tmp104 + tmp107 + tmp109 + tmp110 + tmp111 + tmp113 + tmp160 + tmp161 + tmp162 + tmp163;
3967                                  const double tmp305_1 = B_2_1*w123;                                  EM_S[INDEX2(3,7,8)]+=-B_2_0*w41 - B_2_3*w43 - B_2_4*w32 - B_2_7*w40 + tmp0 + tmp1 + tmp4 + tmp5 + tmp6 + tmp7 + tmp8 + tmp9 + tmp92 + tmp93;
3968                                  const double tmp307_1 = B_0_7*w90;                                  EM_S[INDEX2(4,0,8)]+=B_2_0*w40 + B_2_3*w32 + B_2_4*w43 + B_2_7*w41 + tmp114 + tmp115 + tmp116 + tmp117 + tmp118 + tmp119 + tmp120 + tmp121 + tmp2 + tmp3;
3969                                  const double tmp217_1 = B_2_3*w101;                                  EM_S[INDEX2(4,1,8)]+=tmp190 + tmp191 + tmp192 + tmp193 + tmp194 + tmp195 + tmp196 + tmp197 + tmp198 + tmp199;
3970                                  const double tmp219_1 = B_0_3*w124;                                  EM_S[INDEX2(4,2,8)]+=tmp229 + tmp230 + tmp232 + tmp234 + tmp235 + tmp236 + tmp238 + tmp239 + tmp240 + tmp241;
3971                                  const double tmp105_1 = B_2_2*w92;                                  EM_S[INDEX2(4,3,8)]+=tmp258 + tmp259 + tmp62 + tmp63 + tmp64 + tmp65;
3972                                  const double tmp423_1 = tmp13_0*w91;                                  EM_S[INDEX2(4,4,8)]+=-B_0_2*w30 - B_0_3*w46 - B_0_4*w47 - B_0_5*w38 - B_1_1*w31 + B_1_3*w45 + B_1_4*w44 - B_1_6*w39 + B_2_0*w43 + B_2_3*w41 + B_2_4*w40 + B_2_7*w32 + tmp150 + tmp151 + tmp152 + tmp153 + tmp154 + tmp155;
3973                                  const double tmp381_1 = B_1_0*w105;                                  EM_S[INDEX2(4,5,8)]+=-B_0_2*w46 - B_0_3*w30 - B_0_4*w38 - B_0_5*w47 + tmp222 + tmp223 + tmp50 + tmp51 + tmp52 + tmp53 + tmp54 + tmp55 + tmp58 + tmp59;
3974                                  const double tmp166_1 = tmp28_0*w102;                                  EM_S[INDEX2(4,6,8)]+=B_1_1*w45 - B_1_3*w31 - B_1_4*w39 + B_1_6*w44 + tmp23 + tmp29 + tmp30 + tmp31 + tmp32 + tmp34 + tmp35 + tmp36 + tmp37 + tmp38;
3975                                  const double tmp259_1 = B_0_6*w98;                                  EM_S[INDEX2(4,7,8)]+=tmp10 + tmp11 + tmp12 + tmp13 + tmp14 + tmp15 + tmp16 + tmp17 + tmp18 + tmp19;
3976                                  const double tmp402_1 = B_0_2*w110;                                  EM_S[INDEX2(5,0,8)]+=tmp191 + tmp192 + tmp193 + tmp194 + tmp198 + tmp199 + tmp214 + tmp215 + tmp216 + tmp217;
3977                                  const double tmp263_1 = B_0_1*w90;                                  EM_S[INDEX2(5,1,8)]+=B_2_1*w40 + B_2_2*w32 + B_2_5*w43 + B_2_6*w41 + tmp82 + tmp83 + tmp84 + tmp85 + tmp86 + tmp87 + tmp88 + tmp89 + tmp90 + tmp91;
3978                                  const double tmp276_1 = B_1_5*w111;                                  EM_S[INDEX2(5,2,8)]+=tmp258 + tmp259 + tmp62 + tmp65 + tmp80 + tmp81;
3979                                  const double tmp243_1 = B_2_2*w123;                                  EM_S[INDEX2(5,3,8)]+=tmp180 + tmp181 + tmp182 + tmp183 + tmp184 + tmp185 + tmp186 + tmp187 + tmp188 + tmp189;
3980                                  const double tmp131_1 = tmp13_0*w111;                                  EM_S[INDEX2(5,4,8)]+=B_0_2*w30 + B_0_3*w46 + B_0_4*w47 + B_0_5*w38 + tmp50 + tmp51 + tmp52 + tmp53 + tmp54 + tmp55 + tmp56 + tmp57 + tmp58 + tmp59;
3981                                  const double tmp265_1 = B_1_0*w118;                                  EM_S[INDEX2(5,5,8)]+=B_0_2*w46 + B_0_3*w30 + B_0_4*w38 + B_0_5*w47 - B_1_0*w31 + B_1_2*w45 + B_1_5*w44 - B_1_7*w39 + B_2_1*w43 + B_2_2*w41 + B_2_5*w40 + B_2_6*w32 + tmp135 + tmp136 + tmp208 + tmp211 + tmp212 + tmp213;
3982                                  const double tmp337_1 = B_1_5*w105;                                  EM_S[INDEX2(5,6,8)]+=tmp11 + tmp12 + tmp13 + tmp14 + tmp15 + tmp19 + tmp66 + tmp67 + tmp68 + tmp69;
3983                                  const double tmp172_1 = B_1_1*w99;                                  EM_S[INDEX2(5,7,8)]+=B_1_0*w45 - B_1_2*w31 - B_1_5*w39 + B_1_7*w44 + tmp170 + tmp171 + tmp172 + tmp173 + tmp174 + tmp175 + tmp176 + tmp177 + tmp178 + tmp179;
3984                                  const double tmp161_1 = tmp18_0*w91;                                  EM_S[INDEX2(6,0,8)]+=tmp228 + tmp229 + tmp230 + tmp231 + tmp232 + tmp233 + tmp234 + tmp235 + tmp236 + tmp237;
3985                                  const double tmp88_1 = tmp4_0*w108;                                  EM_S[INDEX2(6,1,8)]+=tmp258 + tmp259 + tmp63 + tmp64 + tmp94 + tmp95;
3986                                  const double tmp236_1 = B_1_5*w118;                                  EM_S[INDEX2(6,2,8)]+=B_2_1*w32 + B_2_2*w40 + B_2_5*w41 + B_2_6*w43 + tmp70 + tmp71 + tmp74 + tmp75 + tmp76 + tmp77 + tmp78 + tmp79 + tmp84 + tmp85;
3987                                  const double tmp273_1 = tmp41_0*w109;                                  EM_S[INDEX2(6,3,8)]+=tmp105 + tmp106 + tmp107 + tmp108 + tmp112 + tmp113 + tmp156 + tmp157 + tmp158 + tmp159;
3988                                  const double tmp154_1 = tmp38_0*w106;                                  EM_S[INDEX2(6,4,8)]+=B_1_1*w31 - B_1_3*w45 - B_1_4*w44 + B_1_6*w39 + tmp30 + tmp31 + tmp32 + tmp33 + tmp34 + tmp35 + tmp36 + tmp37 + tmp38 + tmp39;
3989                                  const double tmp440_1 = B_1_3*w99;                                  EM_S[INDEX2(6,5,8)]+=tmp10 + tmp12 + tmp13 + tmp16 + tmp17 + tmp18 + tmp250 + tmp251 + tmp252 + tmp253;
3990                                  const double tmp33_1 = B_1_3*w114;                                  EM_S[INDEX2(6,6,8)]+=-B_0_0*w30 - B_0_1*w46 - B_0_6*w47 - B_0_7*w38 - B_1_1*w45 + B_1_3*w31 + B_1_4*w39 - B_1_6*w44 + B_2_1*w41 + B_2_2*w43 + B_2_5*w32 + B_2_6*w40 + tmp134 + tmp137 + tmp209 + tmp210 + tmp212 + tmp213;
3991                                  const double tmp141_1 = tmp30_0*w102;                                  EM_S[INDEX2(6,7,8)]+=-B_0_0*w46 - B_0_1*w30 - B_0_6*w38 - B_0_7*w47 + tmp122 + tmp123 + tmp124 + tmp125 + tmp126 + tmp127 + tmp128 + tmp129 + tmp130 + tmp131;
3992                                  const double tmp393_1 = tmp25_0*w95;                                  EM_S[INDEX2(7,0,8)]+=tmp258 + tmp259 + tmp80 + tmp81 + tmp94 + tmp95;
3993                                  const double tmp289_1 = tmp24_0*w102;                                  EM_S[INDEX2(7,1,8)]+=tmp181 + tmp182 + tmp184 + tmp186 + tmp187 + tmp188 + tmp218 + tmp219 + tmp220 + tmp221;
3994                                  const double tmp180_1 = B_1_3*w119;                                  EM_S[INDEX2(7,2,8)]+=tmp104 + tmp105 + tmp106 + tmp107 + tmp108 + tmp109 + tmp110 + tmp111 + tmp112 + tmp113;
3995                                  const double tmp86_1 = tmp36_0*w117;                                  EM_S[INDEX2(7,3,8)]+=B_2_0*w32 + B_2_3*w40 + B_2_4*w41 + B_2_7*w43 + tmp0 + tmp1 + tmp2 + tmp3 + tmp4 + tmp5 + tmp6 + tmp7 + tmp8 + tmp9;
3996                                  const double tmp444_1 = B_1_5*w115;                                  EM_S[INDEX2(7,4,8)]+=tmp12 + tmp13 + tmp250 + tmp251 + tmp252 + tmp253 + tmp66 + tmp67 + tmp68 + tmp69;
3997                                  const double tmp447_1 = B_1_0*w111;                                  EM_S[INDEX2(7,5,8)]+=B_1_0*w31 - B_1_2*w45 - B_1_5*w44 + B_1_7*w39 + tmp141 + tmp147 + tmp170 + tmp171 + tmp172 + tmp174 + tmp175 + tmp176 + tmp177 + tmp178;
3998                                  const double tmp315_1 = tmp31_0*w117;                                  EM_S[INDEX2(7,6,8)]+=B_0_0*w30 + B_0_1*w46 + B_0_6*w47 + B_0_7*w38 + tmp122 + tmp123 + tmp124 + tmp125 + tmp126 + tmp127 + tmp130 + tmp131 + tmp148 + tmp149;
3999                                  const double tmp120_1 = tmp3_0*w112;                                  EM_S[INDEX2(7,7,8)]+=B_0_0*w46 + B_0_1*w30 + B_0_6*w38 + B_0_7*w47 - B_1_0*w45 + B_1_2*w31 + B_1_5*w39 - B_1_7*w44 + B_2_0*w41 + B_2_3*w43 + B_2_4*w32 + B_2_7*w40 + tmp150 + tmp151 + tmp166 + tmp167 + tmp168 + tmp169;
                                 const double tmp355_1 = tmp0_0*w96;  
                                 const double tmp223_1 = B_0_5*w110;  
                                 const double tmp60_1 = tmp12_0*w90;  
                                 const double tmp239_1 = B_2_5*w122;  
                                 const double tmp194_1 = tmp22_0*w112;  
                                 const double tmp28_1 = tmp21_0*w109;  
                                 const double tmp24_1 = tmp12_0*w93;  
                                 const double tmp424_1 = tmp17_0*w94;  
                                 const double tmp237_1 = B_0_4*w104;  
                                 const double tmp322_1 = B_0_5*w120;  
                                 const double tmp453_1 = B_2_2*w100;  
                                 const double tmp238_1 = B_0_3*w110;  
                                 const double tmp370_1 = B_2_4*w123;  
                                 const double tmp155_1 = tmp39_0*w108;  
                                 const double tmp23_1 = tmp19_0*w102;  
                                 const double tmp181_1 = B_2_0*w116;  
                                 const double tmp164_1 = tmp13_0*w97;  
                                 const double tmp168_1 = tmp27_0*w93;  
                                 const double tmp285_1 = tmp6_0*w109;  
                                 const double tmp32_1 = tmp24_0*w112;  
                                 const double tmp210_1 = B_2_7*w92;  
                                 const double tmp399_1 = B_1_0*w91;  
                                 const double tmp183_1 = B_0_4*w120;  
                                 const double tmp185_1 = B_1_4*w118;  
                                 const double tmp40_1 = tmp11_0*w110;  
                                 const double tmp59_1 = tmp13_0*w94;  
                                 const double tmp279_1 = tmp25_0*w102;  
                                 const double tmp242_1 = B_1_7*w91;  
                                 const double tmp454_1 = B_2_5*w101;  
                                 const double tmp114_1 = tmp1_0*w90;  
                                 const double tmp319_1 = tmp18_0*w94;  
                                 const double tmp394_1 = tmp2_0*w91;  
                                 const double tmp229_1 = B_2_1*w113;  
                                 const double tmp93_1 = B_2_6*w123;  
                                 const double tmp278_1 = tmp16_0*w90;  
                                 const double tmp46_1 = tmp20_0*w94;  
                                 const double tmp87_1 = tmp7_0*w106;  
                                 const double tmp421_1 = tmp18_0*w111;  
                                 const double tmp313_1 = tmp13_0*w99;  
                                 const double tmp364_1 = B_0_4*w110;  
                                 const double tmp412_1 = tmp13_0*w109;  
                                 const double tmp30_1 = tmp23_0*w117;  
                                 const double tmp365_1 = B_0_3*w104;  
                                 const double tmp425_1 = tmp18_0*w97;  
                                 const double tmp134_1 = tmp29_0*w103;  
                                 const double tmp143_1 = tmp0_0*w108;  
                                 const double tmp213_1 = B_2_4*w100;  
                                 const double tmp435_1 = tmp15_0*w102;  
                                 const double tmp78_1 = tmp34_0*w107;  
                                 const double tmp76_1 = tmp32_0*w106;  
                                 const double tmp132_1 = tmp7_0*w93;  
                                 const double tmp348_1 = B_1_3*w91;  
                                 const double tmp68_1 = tmp17_0*w109;  
                                 const double tmp130_1 = tmp14_0*w105;  
                                 const double tmp142_1 = tmp1_0*w106;  
                                 const double tmp153_1 = B_2_4*w103;  
                                 const double tmp432_1 = B_0_6*w124;  
                                 const double tmp256_1 = B_2_4*w92;  
                                 const double tmp204_1 = B_0_0*w90;  
                                 const double tmp82_1 = tmp16_0*w93;  
                                 const double tmp222_1 = tmp3_0*w102;  
                                 const double tmp272_1 = tmp40_0*w107;  
                                 const double tmp19_1 = tmp15_0*w95;  
                                 const double tmp226_1 = tmp7_0*w104;  
                                 const double tmp25_1 = B_1_4*w115;  
                                 const double tmp199_1 = B_1_7*w118;  
                                 const double tmp303_1 = B_1_1*w114;  
                                 const double tmp318_1 = tmp30_0*w112;  
                                 const double tmp100_1 = tmp33_0*w93;  
                                 const double tmp439_1 = B_1_4*w111;  
                                 const double tmp17_1 = tmp13_0*w107;  
                                 const double tmp83_1 = tmp12_0*w96;  
                                 const double tmp45_1 = B_1_1*w91;  
                                 const double tmp75_1 = tmp14_0*w111;  
                                 const double tmp368_1 = B_2_3*w122;  
                                 const double tmp216_1 = B_0_2*w104;  
                                 const double tmp429_1 = tmp24_0*w116;  
                                 const double tmp388_1 = tmp33_0*w106;  
                                 const double tmp13_1 = tmp9_0*w102;  
                                 const double tmp18_1 = tmp14_0*w109;  
                                 const double tmp112_1 = tmp36_0*w102;  
                                 const double tmp140_1 = tmp34_0*w97;  
                                 const double tmp383_1 = B_0_2*w120;  
                                 const double tmp119_1 = tmp9_0*w117;  
                                 const double tmp36_1 = B_1_6*w105;  
                                 const double tmp266_1 = tmp10_0*w93;  
                                 const double tmp336_1 = B_2_3*w116;  
                                 const double tmp419_1 = tmp31_0*w116;  
                                 const double tmp363_1 = tmp26_0*w108;  
                                 const double tmp196_1 = B_1_0*w119;  
                                 const double tmp182_1 = B_0_5*w90;  
                                 const double tmp0_1 = tmp0_0*w93;  
                                 const double tmp297_1 = tmp1_0*w104;  
                                 const double tmp12_1 = tmp8_0*w97;  
                                 const double tmp244_1 = tmp37_0*w117;  
                                 const double tmp332_1 = B_1_7*w115;  
                                 const double tmp156_1 = B_0_6*w110;  
                                 const double tmp127_1 = tmp10_0*w110;  
                                 const double tmp257_1 = B_1_5*w99;  
                                 const double tmp64_1 = tmp27_0*w96;  
                                 const double tmp389_1 = tmp32_0*w108;  
                                 const double tmp10_1 = tmp6_0*w94;  
                                 const double tmp317_1 = tmp14_0*w91;  
                                 const double tmp275_1 = tmp12_0*w98;  
                                 const double tmp99_1 = tmp2_0*w97;  
                                 const double tmp192_1 = tmp25_0*w117;  
                                 const double tmp224_1 = tmp0_0*w106;  
                                 const double tmp410_1 = B_0_0*w121;  
                                 const double tmp409_1 = tmp6_0*w105;  
                                 const double tmp441_1 = B_1_4*w91;  
                                 const double tmp206_1 = tmp26_0*w106;  
                                 const double tmp232_1 = tmp31_0*w113;  
                                 const double tmp108_1 = B_2_1*w100;  
                                 const double tmp21_1 = tmp17_0*w111;  
                                 const double tmp52_1 = tmp11_0*w93;  
                                 const double tmp103_1 = tmp7_0*w96;  
                                 const double tmp197_1 = tmp23_0*w116;  
                                 const double tmp438_1 = B_1_3*w105;  
                                 const double tmp235_1 = tmp30_0*w116;  
                                 const double tmp29_1 = tmp22_0*w113;  
                                 const double tmp98_1 = B_2_5*w116;  
                                 const double tmp369_1 = B_2_0*w113;  
                                 const double tmp74_1 = B_0_3*w120;  
                                 const double tmp137_1 = tmp1_0*w98;  
                                 const double tmp284_1 = tmp8_0*w107;  
                                 const double tmp109_1 = tmp37_0*w95;  
                                 const double tmp448_1 = tmp25_0*w113;  
                                 const double tmp56_1 = tmp16_0*w98;  
                                 const double tmp375_1 = B_1_5*w114;  
                                 const double tmp188_1 = tmp10_0*w108;  
                                 const double tmp94_1 = tmp0_0*w104;  
                                 const double tmp260_1 = B_1_2*w91;  
                                 const double tmp49_1 = B_1_3*w118;  
                                 const double tmp404_1 = B_0_4*w124;  
                                 const double tmp430_1 = B_0_7*w104;  
                                 const double tmp299_1 = tmp0_0*w110;  
                                 const double tmp417_1 = tmp17_0*w105;  
                                 const double tmp445_1 = B_1_2*w114;  
                                 const double tmp353_1 = B_0_7*w110;  
                                 const double tmp135_1 = tmp28_0*w92;  
                                 const double tmp357_1 = tmp4_0*w90;  
                                 const double tmp356_1 = tmp7_0*w98;  
                                 const double tmp267_1 = B_1_0*w115;  
                                 const double tmp220_1 = B_1_1*w105;  
                                 const double tmp338_1 = B_0_0*w125;  
                                 const double tmp292_1 = tmp30_0*w103;  
                                 const double tmp53_1 = tmp10_0*w96;  
                                 const double tmp43_1 = tmp24_0*w95;  
                                 const double tmp386_1 = tmp31_0*w112;  
                                 const double tmp92_1 = B_2_2*w113;  
                                 const double tmp245_1 = B_0_5*w124;  
                                 const double tmp306_1 = B_0_0*w98;  
                                 const double tmp96_1 = tmp37_0*w112;  
                                 const double tmp177_1 = B_1_6*w91;  
                                 const double tmp176_1 = B_0_2*w98;  
                                 const double tmp71_1 = tmp31_0*w102;  
                                 const double tmp129_1 = tmp18_0*w109;  
                                 const double tmp352_1 = tmp37_0*w102;  
                                 const double tmp312_1 = B_0_2*w121;  
                                 const double tmp80_1 = tmp15_0*w117;  
                                 const double tmp450_1 = tmp23_0*w112;  
                                 const double tmp271_1 = tmp24_0*w92;  
                                 const double tmp22_1 = tmp18_0*w105;  
                                 const double tmp250_1 = tmp40_0*w97;  
                                 const double tmp249_1 = B_2_1*w116;  
                                 const double tmp207_1 = tmp27_0*w108;  
                                 const double tmp193_1 = B_1_5*w91;  
                                 const double tmp240_1 = B_1_0*w99;  
                                 const double tmp160_1 = B_0_1*w104;  
                                 const double tmp377_1 = B_2_5*w100;  
                                 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(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;  
                                 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(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(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(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(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,0,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp434_1 + tmp435_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(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,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(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(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(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(6,1,8)]+=tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1 + tmp76_1 + tmp77_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;  
                                 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(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(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,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(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(5,2,8)]+=tmp100_1 + tmp101_1 + tmp434_1 + tmp435_1 + tmp78_1 + tmp79_1;  
                                 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(7,2,8)]+=tmp132_1 + tmp133_1 + tmp134_1 + tmp135_1 + tmp136_1 + tmp137_1 + tmp138_1 + tmp139_1 + tmp140_1 + tmp141_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(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,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(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(4,3,8)]+=tmp434_1 + tmp435_1 + tmp76_1 + tmp77_1 + tmp78_1 + tmp79_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(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(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,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;  
                                 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(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(3,4,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp80_1 + tmp81_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;  
                                 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(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;  
                                 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;  
                                 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(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(2,5,8)]+=tmp122_1 + tmp123_1 + tmp76_1 + tmp77_1 + tmp80_1 + tmp81_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(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(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(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(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,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(1,6,8)]+=tmp100_1 + tmp101_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_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(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(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,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(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(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(0,7,8)]+=tmp76_1 + tmp77_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_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;  
                                 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,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(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(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(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(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;  
4000                              } else { // constant data                              } else { // constant data
4001                                  const double B_0 = B_p[0];                                  const double B_0 = B_p[0];
4002                                  const double B_1 = B_p[1];                                  const double B_1 = B_p[1];
4003                                  const double B_2 = B_p[2];                                  const double B_2 = B_p[2];
4004                                  const double tmp7_1 = B_2*w133;                                  EM_S[INDEX2(0,0,8)]+=4*B_0*w53 + B_1*w51 - B_2*w50;
4005                                  const double tmp17_1 = B_0*w143;                                  EM_S[INDEX2(0,1,8)]+=4*B_0*w53 - B_1*w49 + B_2*w52;
4006                                  const double tmp1_1 = B_1*w127;                                  EM_S[INDEX2(0,2,8)]+=-B_0*w48 + B_1*w51 + B_2*w52;
4007                                  const double tmp8_1 = B_2*w135;                                  EM_S[INDEX2(0,3,8)]+=-B_0*w48 - B_1*w49 + B_2*w52/2;
4008                                  const double tmp15_1 = B_0*w141;                                  EM_S[INDEX2(0,4,8)]+=-B_0*w48 - B_1*w49 - B_2*w50;
4009                                  const double tmp3_1 = B_0*w129;                                  EM_S[INDEX2(0,5,8)]+=-B_0*w48 + B_1*w51/4 + B_2*w52;
4010                                  const double tmp13_1 = B_1*w139;                                  EM_S[INDEX2(0,6,8)]+=B_0*w53 - B_1*w49 + B_2*w52;
4011                                  const double tmp2_1 = B_0*w126;                                  EM_S[INDEX2(0,7,8)]+=B_0*w53 + B_1*w51/4 + B_2*w52/2;
4012                                  const double tmp12_1 = B_0*w138;                                  EM_S[INDEX2(1,0,8)]+=-4*B_0*w53 - B_1*w49 + B_2*w52;
4013                                  const double tmp5_1 = B_2*w131;                                  EM_S[INDEX2(1,1,8)]+=-4*B_0*w53 + B_1*w51 - B_2*w50;
4014                                  const double tmp10_1 = B_2*w136;                                  EM_S[INDEX2(1,2,8)]+=B_0*w48 - B_1*w49 + B_2*w52/2;
4015                                  const double tmp4_1 = B_1*w130;                                  EM_S[INDEX2(1,3,8)]+=B_0*w48 + B_1*w51 + B_2*w52;
4016                                  const double tmp6_1 = B_1*w132;                                  EM_S[INDEX2(1,4,8)]+=B_0*w48 + B_1*w51/4 + B_2*w52;
4017                                  const double tmp9_1 = B_1*w134;                                  EM_S[INDEX2(1,5,8)]+=B_0*w48 - B_1*w49 - B_2*w50;
4018                                  const double tmp14_1 = B_2*w140;                                  EM_S[INDEX2(1,6,8)]+=-B_0*w53 + B_1*w51/4 + B_2*w52/2;
4019                                  const double tmp0_1 = B_2*w128;                                  EM_S[INDEX2(1,7,8)]+=-B_0*w53 - B_1*w49 + B_2*w52;
4020                                  const double tmp16_1 = B_1*w142;                                  EM_S[INDEX2(2,0,8)]+=-B_0*w48 - B_1*w51 + B_2*w52;
4021                                  const double tmp11_1 = B_0*w137;                                  EM_S[INDEX2(2,1,8)]+=-B_0*w48 + B_1*w49 + B_2*w52/2;
4022                                  EM_S[INDEX2(0,0,8)]+=tmp14_1 + tmp17_1 + tmp6_1;                                  EM_S[INDEX2(2,2,8)]+=4*B_0*w53 - B_1*w51 - B_2*w50;
4023                                  EM_S[INDEX2(1,0,8)]+=tmp11_1 + tmp4_1 + tmp7_1;                                  EM_S[INDEX2(2,3,8)]+=4*B_0*w53 + B_1*w49 + B_2*w52;
4024                                  EM_S[INDEX2(2,0,8)]+=tmp3_1 + tmp7_1 + tmp9_1;                                  EM_S[INDEX2(2,4,8)]+=B_0*w53 + B_1*w49 + B_2*w52;
4025                                  EM_S[INDEX2(3,0,8)]+=tmp10_1 + tmp1_1 + tmp2_1;                                  EM_S[INDEX2(2,5,8)]+=B_0*w53 - B_1*w51/4 + B_2*w52/2;
4026                                  EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp3_1 + tmp4_1;                                  EM_S[INDEX2(2,6,8)]+=-B_0*w48 + B_1*w49 - B_2*w50;
4027                                  EM_S[INDEX2(5,0,8)]+=tmp13_1 + tmp2_1 + tmp8_1;                                  EM_S[INDEX2(2,7,8)]+=-B_0*w48 - B_1*w51/4 + B_2*w52;
4028                                  EM_S[INDEX2(6,0,8)]+=tmp12_1 + tmp1_1 + tmp8_1;                                  EM_S[INDEX2(3,0,8)]+=B_0*w48 + B_1*w49 + B_2*w52/2;
4029                                  EM_S[INDEX2(7,0,8)]+=tmp15_1 + tmp16_1 + tmp5_1;                                  EM_S[INDEX2(3,1,8)]+=B_0*w48 - B_1*w51 + B_2*w52;
4030                                  EM_S[INDEX2(0,1,8)]+=tmp17_1 + tmp4_1 + tmp7_1;                                  EM_S[INDEX2(3,2,8)]+=-4*B_0*w53 + B_1*w49 + B_2*w52;
4031                                  EM_S[INDEX2(1,1,8)]+=tmp11_1 + tmp14_1 + tmp6_1;                                  EM_S[INDEX2(3,3,8)]+=-4*B_0*w53 - B_1*w51 - B_2*w50;
4032                                  EM_S[INDEX2(2,1,8)]+=tmp10_1 + tmp1_1 + tmp3_1;                                  EM_S[INDEX2(3,4,8)]+=-B_0*w53 - B_1*w51/4 + B_2*w52/2;
4033                                  EM_S[INDEX2(3,1,8)]+=tmp2_1 + tmp7_1 + tmp9_1;                                  EM_S[INDEX2(3,5,8)]+=-B_0*w53 + B_1*w49 + B_2*w52;
4034                                  EM_S[INDEX2(4,1,8)]+=tmp13_1 + tmp3_1 + tmp8_1;                                  EM_S[INDEX2(3,6,8)]+=B_0*w48 - B_1*w51/4 + B_2*w52;
4035                                  EM_S[INDEX2(5,1,8)]+=tmp0_1 + tmp2_1 + tmp4_1;                                  EM_S[INDEX2(3,7,8)]+=B_0*w48 + B_1*w49 - B_2*w50;
4036                                  EM_S[INDEX2(6,1,8)]+=tmp12_1 + tmp16_1 + tmp5_1;                                  EM_S[INDEX2(4,0,8)]+=-B_0*w48 - B_1*w49 + B_2*w50;
4037                                  EM_S[INDEX2(7,1,8)]+=tmp15_1 + tmp1_1 + tmp8_1;                                  EM_S[INDEX2(4,1,8)]+=-B_0*w48 + B_1*w51/4 - B_2*w52;
4038                                  EM_S[INDEX2(0,2,8)]+=tmp3_1 + tmp6_1 + tmp7_1;                                  EM_S[INDEX2(4,2,8)]+=B_0*w53 - B_1*w49 - B_2*w52;
4039                                  EM_S[INDEX2(1,2,8)]+=tmp10_1 + tmp2_1 + tmp4_1;                                  EM_S[INDEX2(4,3,8)]+=B_0*w53 + B_1*w51/4 + B_2*w50/4;
4040                                  EM_S[INDEX2(2,2,8)]+=tmp14_1 + tmp17_1 + tmp9_1;                                  EM_S[INDEX2(4,4,8)]+=4*B_0*w53 + B_1*w51 + B_2*w50;
4041                                  EM_S[INDEX2(3,2,8)]+=tmp11_1 + tmp1_1 + tmp7_1;                                  EM_S[INDEX2(4,5,8)]+=4*B_0*w53 - B_1*w49 - B_2*w52;
4042                                  EM_S[INDEX2(4,2,8)]+=tmp12_1 + tmp4_1 + tmp8_1;                                  EM_S[INDEX2(4,6,8)]+=-B_0*w48 + B_1*w51 - B_2*w52;
4043                                  EM_S[INDEX2(5,2,8)]+=tmp13_1 + tmp15_1 + tmp5_1;                                  EM_S[INDEX2(4,7,8)]+=-B_0*w48 - B_1*w49 + B_2*w50/4;
4044                                  EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp3_1;                                  EM_S[INDEX2(5,0,8)]+=B_0*w48 + B_1*w51/4 - B_2*w52;
4045                                  EM_S[INDEX2(7,2,8)]+=tmp16_1 + tmp2_1 + tmp8_1;                                  EM_S[INDEX2(5,1,8)]+=B_0*w48 - B_1*w49 + B_2*w50;
4046                                  EM_S[INDEX2(0,3,8)]+=tmp10_1 + tmp3_1 + tmp4_1;                                  EM_S[INDEX2(5,2,8)]+=-B_0*w53 + B_1*w51/4 + B_2*w50/4;
4047                                  EM_S[INDEX2(1,3,8)]+=tmp2_1 + tmp6_1 + tmp7_1;                                  EM_S[INDEX2(5,3,8)]+=-B_0*w53 - B_1*w49 - B_2*w52;
4048                                  EM_S[INDEX2(2,3,8)]+=tmp17_1 + tmp1_1 + tmp7_1;                                  EM_S[INDEX2(5,4,8)]+=2*B_0*w48 - B_1*w49 - B_2*w52;
4049                                  EM_S[INDEX2(3,3,8)]+=tmp11_1 + tmp14_1 + tmp9_1;                                  EM_S[INDEX2(5,5,8)]+=-4*B_0*w53 + B_1*w51 + B_2*w50;
4050                                  EM_S[INDEX2(4,3,8)]+=tmp12_1 + tmp13_1 + tmp5_1;                                  EM_S[INDEX2(5,6,8)]+=B_0*w48 - B_1*w49 + B_2*w50/4;
4051                                  EM_S[INDEX2(5,3,8)]+=tmp15_1 + tmp4_1 + tmp8_1;                                  EM_S[INDEX2(5,7,8)]+=B_0*w48 + B_1*w51 - B_2*w52;
4052                                  EM_S[INDEX2(6,3,8)]+=tmp16_1 + tmp3_1 + tmp8_1;                                  EM_S[INDEX2(6,0,8)]+=B_0*w53 + B_1*w49 - B_2*w52;
4053                                  EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                                  EM_S[INDEX2(6,1,8)]+=B_0*w53 - B_1*w51/4 + B_2*w50/4;
4054                                  EM_S[INDEX2(0,4,8)]+=tmp14_1 + tmp3_1 + tmp4_1;                                  EM_S[INDEX2(6,2,8)]+=-B_0*w48 + B_1*w49 + B_2*w50;
4055                                  EM_S[INDEX2(1,4,8)]+=tmp13_1 + tmp2_1 + tmp7_1;                                  EM_S[INDEX2(6,3,8)]+=-B_0*w48 - B_1*w51/4 - B_2*w52;
4056                                  EM_S[INDEX2(2,4,8)]+=tmp12_1 + tmp1_1 + tmp7_1;                                  EM_S[INDEX2(6,4,8)]+=-B_0*w48 - B_1*w51 - B_2*w52;
4057                                  EM_S[INDEX2(3,4,8)]+=tmp10_1 + tmp15_1 + tmp16_1;                                  EM_S[INDEX2(6,5,8)]+=-B_0*w48 + B_1*w49 + B_2*w50/4;
4058                                  EM_S[INDEX2(4,4,8)]+=tmp0_1 + tmp17_1 + tmp6_1;                                  EM_S[INDEX2(6,6,8)]+=4*B_0*w53 - B_1*w51 + B_2*w50;
4059                                  EM_S[INDEX2(5,4,8)]+=tmp11_1 + tmp4_1 + tmp8_1;                                  EM_S[INDEX2(6,7,8)]+=4*B_0*w53 + B_1*w49 - B_2*w52;
4060                                  EM_S[INDEX2(6,4,8)]+=tmp3_1 + tmp8_1 + tmp9_1;                                  EM_S[INDEX2(7,0,8)]+=-B_0*w53 - B_1*w51/4 + B_2*w50/4;
4061                                  EM_S[INDEX2(7,4,8)]+=tmp1_1 + tmp2_1 + tmp5_1;                                  EM_S[INDEX2(7,1,8)]+=-B_0*w53 + B_1*w49 - B_2*w52;
4062                                  EM_S[INDEX2(0,5,8)]+=tmp13_1 + tmp3_1 + tmp7_1;                                  EM_S[INDEX2(7,2,8)]+=B_0*w48 - B_1*w51/4 - B_2*w52;
4063                                  EM_S[INDEX2(1,5,8)]+=tmp14_1 + tmp2_1 + tmp4_1;                                  EM_S[INDEX2(7,3,8)]+=B_0*w48 + B_1*w49 + B_2*w50;
4064                                  EM_S[INDEX2(2,5,8)]+=tmp10_1 + tmp12_1 + tmp16_1;                                  EM_S[INDEX2(7,4,8)]+=B_0*w48 + B_1*w49 + B_2*w50/4;
4065                                  EM_S[INDEX2(3,5,8)]+=tmp15_1 + tmp1_1 + tmp7_1;                                  EM_S[INDEX2(7,5,8)]+=B_0*w48 - B_1*w51 - B_2*w52;
4066                                  EM_S[INDEX2(4,5,8)]+=tmp17_1 + tmp4_1 + tmp8_1;                                  EM_S[INDEX2(7,6,8)]+=-4*B_0*w53 + B_1*w49 - B_2*w52;
4067                                  EM_S[INDEX2(5,5,8)]+=tmp0_1 + tmp11_1 + tmp6_1;                                  EM_S[INDEX2(7,7,8)]+=-4*B_0*w53 - B_1*w51 + B_2*w50;
                                 EM_S[INDEX2(6,5,8)]+=tmp1_1 + tmp3_1 + tmp5_1;  
                                 EM_S[INDEX2(7,5,8)]+=tmp2_1 + tmp8_1 + tmp9_1;  
                                 EM_S[INDEX2(0,6,8)]+=tmp12_1 + tmp4_1 + tmp7_1;  
                                 EM_S[INDEX2(1,6,8)]+=tmp10_1 + tmp13_1 + tmp15_1;  
                                 EM_S[INDEX2(2,6,8)]+=tmp14_1 + tmp1_1 + tmp3_1;  
                                 EM_S[INDEX2(3,6,8)]+=tmp16_1 + tmp2_1 + tmp7_1;  
                                 EM_S[INDEX2(4,6,8)]+=tmp3_1 + tmp6_1 + tmp8_1;  
                                 EM_S[INDEX2(5,6,8)]+=tmp2_1 + tmp4_1 + tmp5_1;  
                                 EM_S[INDEX2(6,6,8)]+=tmp0_1 + tmp17_1 + tmp9_1;  
                                 EM_S[INDEX2(7,6,8)]+=tmp11_1 + tmp1_1 + tmp8_1;  
                                 EM_S[INDEX2(0,7,8)]+=tmp10_1 + tmp12_1 + tmp13_1;  
                                 EM_S[INDEX2(1,7,8)]+=tmp15_1 + tmp4_1 + tmp7_1;  
                                 EM_S[INDEX2(2,7,8)]+=tmp16_1 + tmp3_1 + tmp7_1;  
                                 EM_S[INDEX2(3,7,8)]+=tmp14_1 + tmp1_1 + tmp2_1;  
                                 EM_S[INDEX2(4,7,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
                                 EM_S[INDEX2(5,7,8)]+=tmp2_1 + tmp6_1 + tmp8_1;  
                                 EM_S[INDEX2(6,7,8)]+=tmp17_1 + tmp1_1 + tmp8_1;  
                                 EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp11_1 + tmp9_1;  
4068                              }                              }
4069                          }                          }
4070                          ///////////////                          ///////////////
# Line 4762  void Brick::assemblePDESingle(Paso_Syste Line 4098  void Brick::assemblePDESingle(Paso_Syste
4098                                  const double C_0_7 = C_p[INDEX2(0,7,3)];                                  const double C_0_7 = C_p[INDEX2(0,7,3)];
4099                                  const double C_1_7 = C_p[INDEX2(1,7,3)];                                  const double C_1_7 = C_p[INDEX2(1,7,3)];
4100                                  const double C_2_7 = C_p[INDEX2(2,7,3)];                                  const double C_2_7 = C_p[INDEX2(2,7,3)];
4101                                  const double tmp11_0 = C_0_5 + C_0_7;                                  const double tmp0 = w38*(C_0_3 + C_0_7);
4102                                  const double tmp39_0 = C_0_2 + C_0_4;                                  const double tmp1 = w31*(C_1_0 + C_1_4);
4103                                  const double tmp40_0 = C_1_1 + C_1_4;                                  const double tmp2 = w42*(-C_2_1 - C_2_2);
4104                                  const double tmp14_0 = C_0_4 + C_0_6;                                  const double tmp3 = w35*(-C_2_5 - C_2_6);
4105                                  const double tmp34_0 = C_1_0 + C_1_1 + C_1_4 + C_1_5;                                  const double tmp4 = w37*(C_1_2 + C_1_6);
4106                                  const double tmp23_0 = C_1_0 + C_1_5;                                  const double tmp5 = w39*(C_1_3 + C_1_7);
4107                                  const double tmp12_0 = C_1_4 + C_1_5;                                  const double tmp6 = w36*(C_0_2 + C_0_6);
4108                                  const double tmp35_0 = C_1_2 + C_1_3 + C_1_6 + C_1_7;                                  const double tmp7 = w33*(C_0_1 + C_0_5);
4109                                  const double tmp16_0 = C_1_6 + C_1_7;                                  const double tmp8 = w30*(C_0_0 + C_0_4);
4110                                  const double tmp19_0 = C_2_0 + C_2_1 + C_2_2 + C_2_3;                                  const double tmp9 = w34*(C_1_1 + C_1_5);
4111                                  const double tmp2_0 = C_1_3 + C_1_7;                                  const double tmp10 = w38*(C_0_4 + C_0_6);
4112                                  const double tmp31_0 = C_2_4 + C_2_5;                                  const double tmp11 = w31*(C_1_2 + C_1_3);
4113                                  const double tmp22_0 = C_2_0 + C_2_2;                                  const double tmp12 = w42*(C_2_0 + C_2_1 + C_2_2 + C_2_3);
4114                                  const double tmp37_0 = C_2_4 + C_2_7;                                  const double tmp13 = w35*(C_2_4 + C_2_5 + C_2_6 + C_2_7);
4115                                  const double tmp6_0 = C_2_1 + C_2_2;                                  const double tmp14 = w37*(C_1_0 + C_1_1);
4116                                  const double tmp29_0 = C_2_0 + C_2_1;                                  const double tmp15 = w39*(C_1_4 + C_1_5);
4117                                  const double tmp27_0 = C_0_1 + C_0_7;                                  const double tmp16 = w36*(C_0_5 + C_0_7);
4118                                  const double tmp1_0 = C_0_2 + C_0_6;                                  const double tmp17 = w33*(C_0_0 + C_0_2);
4119                                  const double tmp4_0 = C_0_3 + C_0_7;                                  const double tmp18 = w30*(C_0_1 + C_0_3);
4120                                  const double tmp38_0 = C_0_3 + C_0_5;                                  const double tmp19 = w34*(C_1_6 + C_1_7);
4121                                  const double tmp26_0 = C_0_0 + C_0_6;                                  const double tmp20 = w38*(C_0_1 + C_0_3);
4122                                  const double tmp33_0 = C_0_0 + C_0_2 + C_0_4 + C_0_6;                                  const double tmp21 = w42*(-C_2_0 - C_2_2);
4123                                  const double tmp10_0 = C_0_0 + C_0_2;                                  const double tmp22 = w35*(-C_2_5 - C_2_7);
4124                                  const double tmp25_0 = C_1_2 + C_1_7;                                  const double tmp23 = w37*(C_1_2 + C_1_7);
4125                                  const double tmp7_0 = C_1_1 + C_1_5;                                  const double tmp24 = w32*(-C_2_4 - C_2_6);
4126                                  const double tmp18_0 = C_1_0 + C_1_1;                                  const double tmp25 = w36*(C_0_0 + C_0_2);
4127                                  const double tmp8_0 = C_0_0 + C_0_4;                                  const double tmp26 = w33*(C_0_5 + C_0_7);
4128                                  const double tmp13_0 = C_2_4 + C_2_5 + C_2_6 + C_2_7;                                  const double tmp27 = w30*(C_0_4 + C_0_6);
4129                                  const double tmp28_0 = C_2_2 + C_2_3;                                  const double tmp28 = w43*(-C_2_1 - C_2_3);
4130                                  const double tmp17_0 = C_0_1 + C_0_3;                                  const double tmp29 = w34*(C_1_0 + C_1_5);
4131                                  const double tmp36_0 = C_2_0 + C_2_3;                                  const double tmp30 = w38*(-C_0_4 - C_0_6);
4132                                  const double tmp9_0 = C_1_2 + C_1_6;                                  const double tmp31 = w42*(C_2_5 + C_2_7);
4133                                  const double tmp20_0 = C_2_1 + C_2_3;                                  const double tmp32 = w35*(C_2_0 + C_2_2);
4134                                  const double tmp41_0 = C_1_3 + C_1_6;                                  const double tmp33 = w37*(-C_1_0 - C_1_5);
4135                                  const double tmp5_0 = C_1_0 + C_1_4;                                  const double tmp34 = w32*(C_2_1 + C_2_3);
4136                                  const double tmp3_0 = C_2_5 + C_2_6;                                  const double tmp35 = w36*(-C_0_5 - C_0_7);
4137                                  const double tmp15_0 = C_1_2 + C_1_3;                                  const double tmp36 = w33*(-C_0_0 - C_0_2);
4138                                  const double tmp24_0 = C_2_4 + C_2_6;                                  const double tmp37 = w30*(-C_0_1 - C_0_3);
4139                                  const double tmp32_0 = C_0_1 + C_0_3 + C_0_5 + C_0_7;                                  const double tmp38 = w43*(C_2_4 + C_2_6);
4140                                  const double tmp0_0 = C_0_1 + C_0_5;                                  const double tmp39 = w34*(-C_1_2 - C_1_7);
4141                                  const double tmp21_0 = C_2_5 + C_2_7;                                  const double tmp40 = w38*(-C_0_1 - C_0_3);
4142                                  const double tmp30_0 = C_2_6 + C_2_7;                                  const double tmp41 = w31*(-C_1_4 - C_1_5);
4143                                  const double tmp28_1 = tmp21_0*w117;                                  const double tmp42 = w42*(-C_2_4 - C_2_5 - C_2_6 - C_2_7);
4144                                  const double tmp404_1 = C_0_4*w90;                                  const double tmp43 = w35*(-C_2_0 - C_2_1 - C_2_2 - C_2_3);
4145                                  const double tmp153_1 = tmp5_0*w111;                                  const double tmp44 = w37*(-C_1_6 - C_1_7);
4146                                  const double tmp208_1 = C_2_0*w103;                                  const double tmp45 = w39*(-C_1_2 - C_1_3);
4147                                  const double tmp201