Difference for src/ComputeGridForce.C from version 1.5 to 1.6

version 1.5version 1.6
Line 10
Line 10
 #include "HomePatch.h" #include "HomePatch.h"
 #include "Molecule.h" #include "Molecule.h"
  
  #define MIN_DEBUG_LEVEL 2
 //#define DEBUGM //#define DEBUGM
 #define MIN_DEBUG_LEVEL 4 
 #include "Debug.h" #include "Debug.h"
  
  
Line 45
Line 45
          
     Real scale; // Scaling factor     Real scale; // Scaling factor
     Charge charge; // Charge     Charge charge; // Charge
     Molecule::GridforceGridbox gbox; // Structure with potential info     const GridforceGrid *grid = mol->get_gridfrc_grid();
     Position loc; // Fractional location within box     GridforceGrid::Box box; // Structure with potential info
     Force f;     Force f;
     float v;     float v;
          
     Position center; 
     Tensor inv; 
     mol->get_gridfrc_info(center, inv); 
      
     //  Loop through and check each atom     //  Loop through and check each atom
     for (int i = 0; i < numAtoms; i++) {     for (int i = 0; i < numAtoms; i++) {
  if (mol->is_atom_gridforced(p[i].id)) {  if (mol->is_atom_gridforced(p[i].id)) {
Line 62
Line 58
      // Wrap coordinates using grid center      // Wrap coordinates using grid center
      Position pos = p[i].position;      Position pos = p[i].position;
      pos += homePatch->lattice.wrap_delta(p[i].position);      pos += homePatch->lattice.wrap_delta(p[i].position);
      pos += homePatch->lattice.delta(pos, center) - (pos - center);      pos += homePatch->lattice.delta(pos, grid->get_center()) - (pos - grid->get_center());
            
      int err = mol->get_gridfrc_grid(gbox, loc, pos);      int err = grid->get_box(&box, pos);
      if (err) {      if (err) {
  DebugM(4, "force4 = 0 0 0\n" << endi);  DebugM(4, "force4 = 0 0 0\n" << endi);
  DebugM(4, "v4 = 0\n" << endi);  DebugM(4, "v4 = 0\n" << endi);
Line 75
Line 71
 //      for (int j = 0; j < 64; j++) { //      for (int j = 0; j < 64; j++) {
 //  a[j] = 0; //  a[j] = 0;
 //  for (int k = 0; k < 64; k++) { //  for (int k = 0; k < 64; k++) {
 //      a[j] += A[j][k] * gbox.b[k]; //      a[j] += A[j][k] * box.b[k];
 //  } //  }
 //      } //      }
            
      // Multiply 'gbox.b' vector by matrix ... ugly but efficient (?)      // Multiply 'box.b' vector by matrix ... ugly but efficient (?)
      a[0] = gbox.b[0];      a[0] = box.b[0];
      a[1] = gbox.b[8];      a[1] = box.b[8];
      a[2] = -3*gbox.b[0] + 3*gbox.b[1] - 2*gbox.b[8] - gbox.b[9];      a[2] = -3*box.b[0] + 3*box.b[1] - 2*box.b[8] - box.b[9];
      a[3] = 2*gbox.b[0] - 2*gbox.b[1] + gbox.b[8] + gbox.b[9];      a[3] = 2*box.b[0] - 2*box.b[1] + box.b[8] + box.b[9];
      a[4] = gbox.b[16];      a[4] = box.b[16];
      a[5] = gbox.b[32];      a[5] = box.b[32];
      a[6] = -3*gbox.b[16] + 3*gbox.b[17] - 2*gbox.b[32] - gbox.b[33];      a[6] = -3*box.b[16] + 3*box.b[17] - 2*box.b[32] - box.b[33];
      a[7] = 2*gbox.b[16] - 2*gbox.b[17] + gbox.b[32] + gbox.b[33];      a[7] = 2*box.b[16] - 2*box.b[17] + box.b[32] + box.b[33];
      a[8] = -3*gbox.b[0] + 3*gbox.b[2] - 2*gbox.b[16] - gbox.b[18];      a[8] = -3*box.b[0] + 3*box.b[2] - 2*box.b[16] - box.b[18];
      a[9] = -3*gbox.b[8] + 3*gbox.b[10] - 2*gbox.b[32] - gbox.b[34];      a[9] = -3*box.b[8] + 3*box.b[10] - 2*box.b[32] - box.b[34];
      a[10] = 9*gbox.b[0] - 9*gbox.b[1] - 9*gbox.b[2] + 9*gbox.b[3] + 6*gbox.b[8] + 3*gbox.b[9] - 6*gbox.b[10] - 3*gbox.b[11]      a[10] = 9*box.b[0] - 9*box.b[1] - 9*box.b[2] + 9*box.b[3] + 6*box.b[8] + 3*box.b[9] - 6*box.b[10] - 3*box.b[11]
  + 6*gbox.b[16] - 6*gbox.b[17] + 3*gbox.b[18] - 3*gbox.b[19] + 4*gbox.b[32] + 2*gbox.b[33] + 2*gbox.b[34] + gbox.b[35];  + 6*box.b[16] - 6*box.b[17] + 3*box.b[18] - 3*box.b[19] + 4*box.b[32] + 2*box.b[33] + 2*box.b[34] + box.b[35];
      a[11] = -6*gbox.b[0] + 6*gbox.b[1] + 6*gbox.b[2] - 6*gbox.b[3] - 3*gbox.b[8] - 3*gbox.b[9] + 3*gbox.b[10] + 3*gbox.b[11]      a[11] = -6*box.b[0] + 6*box.b[1] + 6*box.b[2] - 6*box.b[3] - 3*box.b[8] - 3*box.b[9] + 3*box.b[10] + 3*box.b[11]
  - 4*gbox.b[16] + 4*gbox.b[17] - 2*gbox.b[18] + 2*gbox.b[19] - 2*gbox.b[32] - 2*gbox.b[33] - gbox.b[34] - gbox.b[35];  - 4*box.b[16] + 4*box.b[17] - 2*box.b[18] + 2*box.b[19] - 2*box.b[32] - 2*box.b[33] - box.b[34] - box.b[35];
      a[12] = 2*gbox.b[0] - 2*gbox.b[2] + gbox.b[16] + gbox.b[18];      a[12] = 2*box.b[0] - 2*box.b[2] + box.b[16] + box.b[18];
      a[13] = 2*gbox.b[8] - 2*gbox.b[10] + gbox.b[32] + gbox.b[34];      a[13] = 2*box.b[8] - 2*box.b[10] + box.b[32] + box.b[34];
      a[14] = -6*gbox.b[0] + 6*gbox.b[1] + 6*gbox.b[2] - 6*gbox.b[3] - 4*gbox.b[8] - 2*gbox.b[9] + 4*gbox.b[10] + 2*gbox.b[11]      a[14] = -6*box.b[0] + 6*box.b[1] + 6*box.b[2] - 6*box.b[3] - 4*box.b[8] - 2*box.b[9] + 4*box.b[10] + 2*box.b[11]
  - 3*gbox.b[16] + 3*gbox.b[17] - 3*gbox.b[18] + 3*gbox.b[19] - 2*gbox.b[32] - gbox.b[33] - 2*gbox.b[34] - gbox.b[35];  - 3*box.b[16] + 3*box.b[17] - 3*box.b[18] + 3*box.b[19] - 2*box.b[32] - box.b[33] - 2*box.b[34] - box.b[35];
      a[15] = 4*gbox.b[0] - 4*gbox.b[1] - 4*gbox.b[2] + 4*gbox.b[3] + 2*gbox.b[8] + 2*gbox.b[9] - 2*gbox.b[10] - 2*gbox.b[11]      a[15] = 4*box.b[0] - 4*box.b[1] - 4*box.b[2] + 4*box.b[3] + 2*box.b[8] + 2*box.b[9] - 2*box.b[10] - 2*box.b[11]
  + 2*gbox.b[16] - 2*gbox.b[17] + 2*gbox.b[18] - 2*gbox.b[19] + gbox.b[32] + gbox.b[33] + gbox.b[34] + gbox.b[35];  + 2*box.b[16] - 2*box.b[17] + 2*box.b[18] - 2*box.b[19] + box.b[32] + box.b[33] + box.b[34] + box.b[35];
      a[16] = gbox.b[24];      a[16] = box.b[24];
      a[17] = gbox.b[40];      a[17] = box.b[40];
      a[18] = -3*gbox.b[24] + 3*gbox.b[25] - 2*gbox.b[40] - gbox.b[41];      a[18] = -3*box.b[24] + 3*box.b[25] - 2*box.b[40] - box.b[41];
      a[19] = 2*gbox.b[24] - 2*gbox.b[25] + gbox.b[40] + gbox.b[41];      a[19] = 2*box.b[24] - 2*box.b[25] + box.b[40] + box.b[41];
      a[20] = gbox.b[48];      a[20] = box.b[48];
      a[21] = gbox.b[56];      a[21] = box.b[56];
      a[22] = -3*gbox.b[48] + 3*gbox.b[49] - 2*gbox.b[56] - gbox.b[57];      a[22] = -3*box.b[48] + 3*box.b[49] - 2*box.b[56] - box.b[57];
      a[23] = 2*gbox.b[48] - 2*gbox.b[49] + gbox.b[56] + gbox.b[57];      a[23] = 2*box.b[48] - 2*box.b[49] + box.b[56] + box.b[57];
      a[24] = -3*gbox.b[24] + 3*gbox.b[26] - 2*gbox.b[48] - gbox.b[50];      a[24] = -3*box.b[24] + 3*box.b[26] - 2*box.b[48] - box.b[50];
      a[25] = -3*gbox.b[40] + 3*gbox.b[42] - 2*gbox.b[56] - gbox.b[58];      a[25] = -3*box.b[40] + 3*box.b[42] - 2*box.b[56] - box.b[58];
      a[26] = 9*gbox.b[24] - 9*gbox.b[25] - 9*gbox.b[26] + 9*gbox.b[27] + 6*gbox.b[40] + 3*gbox.b[41] - 6*gbox.b[42] - 3*gbox.b[43]      a[26] = 9*box.b[24] - 9*box.b[25] - 9*box.b[26] + 9*box.b[27] + 6*box.b[40] + 3*box.b[41] - 6*box.b[42] - 3*box.b[43]
  + 6*gbox.b[48] - 6*gbox.b[49] + 3*gbox.b[50] - 3*gbox.b[51] + 4*gbox.b[56] + 2*gbox.b[57] + 2*gbox.b[58] + gbox.b[59];  + 6*box.b[48] - 6*box.b[49] + 3*box.b[50] - 3*box.b[51] + 4*box.b[56] + 2*box.b[57] + 2*box.b[58] + box.b[59];
      a[27] = -6*gbox.b[24] + 6*gbox.b[25] + 6*gbox.b[26] - 6*gbox.b[27] - 3*gbox.b[40] - 3*gbox.b[41] + 3*gbox.b[42] + 3*gbox.b[43]      a[27] = -6*box.b[24] + 6*box.b[25] + 6*box.b[26] - 6*box.b[27] - 3*box.b[40] - 3*box.b[41] + 3*box.b[42] + 3*box.b[43]
  - 4*gbox.b[48] + 4*gbox.b[49] - 2*gbox.b[50] + 2*gbox.b[51] - 2*gbox.b[56] - 2*gbox.b[57] - gbox.b[58] - gbox.b[59];  - 4*box.b[48] + 4*box.b[49] - 2*box.b[50] + 2*box.b[51] - 2*box.b[56] - 2*box.b[57] - box.b[58] - box.b[59];
      a[28] = 2*gbox.b[24] - 2*gbox.b[26] + gbox.b[48] + gbox.b[50];      a[28] = 2*box.b[24] - 2*box.b[26] + box.b[48] + box.b[50];
      a[29] = 2*gbox.b[40] - 2*gbox.b[42] + gbox.b[56] + gbox.b[58];      a[29] = 2*box.b[40] - 2*box.b[42] + box.b[56] + box.b[58];
      a[30] = -6*gbox.b[24] + 6*gbox.b[25] + 6*gbox.b[26] - 6*gbox.b[27] - 4*gbox.b[40] - 2*gbox.b[41] + 4*gbox.b[42] + 2*gbox.b[43]      a[30] = -6*box.b[24] + 6*box.b[25] + 6*box.b[26] - 6*box.b[27] - 4*box.b[40] - 2*box.b[41] + 4*box.b[42] + 2*box.b[43]
  - 3*gbox.b[48] + 3*gbox.b[49] - 3*gbox.b[50] + 3*gbox.b[51] - 2*gbox.b[56] - gbox.b[57] - 2*gbox.b[58] - gbox.b[59];  - 3*box.b[48] + 3*box.b[49] - 3*box.b[50] + 3*box.b[51] - 2*box.b[56] - box.b[57] - 2*box.b[58] - box.b[59];
      a[31] = 4*gbox.b[24] - 4*gbox.b[25] - 4*gbox.b[26] + 4*gbox.b[27] + 2*gbox.b[40] + 2*gbox.b[41] - 2*gbox.b[42] - 2*gbox.b[43]      a[31] = 4*box.b[24] - 4*box.b[25] - 4*box.b[26] + 4*box.b[27] + 2*box.b[40] + 2*box.b[41] - 2*box.b[42] - 2*box.b[43]
  + 2*gbox.b[48] - 2*gbox.b[49] + 2*gbox.b[50] - 2*gbox.b[51] + gbox.b[56] + gbox.b[57] + gbox.b[58] + gbox.b[59];  + 2*box.b[48] - 2*box.b[49] + 2*box.b[50] - 2*box.b[51] + box.b[56] + box.b[57] + box.b[58] + box.b[59];
      a[32] = -3*gbox.b[0] + 3*gbox.b[4] - 2*gbox.b[24] - gbox.b[28];      a[32] = -3*box.b[0] + 3*box.b[4] - 2*box.b[24] - box.b[28];
      a[33] = -3*gbox.b[8] + 3*gbox.b[12] - 2*gbox.b[40] - gbox.b[44];      a[33] = -3*box.b[8] + 3*box.b[12] - 2*box.b[40] - box.b[44];
      a[34] = 9*gbox.b[0] - 9*gbox.b[1] - 9*gbox.b[4] + 9*gbox.b[5] + 6*gbox.b[8] + 3*gbox.b[9] - 6*gbox.b[12] - 3*gbox.b[13]      a[34] = 9*box.b[0] - 9*box.b[1] - 9*box.b[4] + 9*box.b[5] + 6*box.b[8] + 3*box.b[9] - 6*box.b[12] - 3*box.b[13]
  + 6*gbox.b[24] - 6*gbox.b[25] + 3*gbox.b[28] - 3*gbox.b[29] + 4*gbox.b[40] + 2*gbox.b[41] + 2*gbox.b[44] + gbox.b[45];  + 6*box.b[24] - 6*box.b[25] + 3*box.b[28] - 3*box.b[29] + 4*box.b[40] + 2*box.b[41] + 2*box.b[44] + box.b[45];
      a[35] = -6*gbox.b[0] + 6*gbox.b[1] + 6*gbox.b[4] - 6*gbox.b[5] - 3*gbox.b[8] - 3*gbox.b[9] + 3*gbox.b[12] + 3*gbox.b[13]      a[35] = -6*box.b[0] + 6*box.b[1] + 6*box.b[4] - 6*box.b[5] - 3*box.b[8] - 3*box.b[9] + 3*box.b[12] + 3*box.b[13]
  - 4*gbox.b[24] + 4*gbox.b[25] - 2*gbox.b[28] + 2*gbox.b[29] - 2*gbox.b[40] - 2*gbox.b[41] - gbox.b[44] - gbox.b[45];  - 4*box.b[24] + 4*box.b[25] - 2*box.b[28] + 2*box.b[29] - 2*box.b[40] - 2*box.b[41] - box.b[44] - box.b[45];
      a[36] = -3*gbox.b[16] + 3*gbox.b[20] - 2*gbox.b[48] - gbox.b[52];      a[36] = -3*box.b[16] + 3*box.b[20] - 2*box.b[48] - box.b[52];
      a[37] = -3*gbox.b[32] + 3*gbox.b[36] - 2*gbox.b[56] - gbox.b[60];      a[37] = -3*box.b[32] + 3*box.b[36] - 2*box.b[56] - box.b[60];
      a[38] = 9*gbox.b[16] - 9*gbox.b[17] - 9*gbox.b[20] + 9*gbox.b[21] + 6*gbox.b[32] + 3*gbox.b[33] - 6*gbox.b[36] - 3*gbox.b[37]      a[38] = 9*box.b[16] - 9*box.b[17] - 9*box.b[20] + 9*box.b[21] + 6*box.b[32] + 3*box.b[33] - 6*box.b[36] - 3*box.b[37]
  + 6*gbox.b[48] - 6*gbox.b[49] + 3*gbox.b[52] - 3*gbox.b[53] + 4*gbox.b[56] + 2*gbox.b[57] + 2*gbox.b[60] + gbox.b[61];  + 6*box.b[48] - 6*box.b[49] + 3*box.b[52] - 3*box.b[53] + 4*box.b[56] + 2*box.b[57] + 2*box.b[60] + box.b[61];
      a[39] = -6*gbox.b[16] + 6*gbox.b[17] + 6*gbox.b[20] - 6*gbox.b[21] - 3*gbox.b[32] - 3*gbox.b[33] + 3*gbox.b[36] + 3*gbox.b[37]      a[39] = -6*box.b[16] + 6*box.b[17] + 6*box.b[20] - 6*box.b[21] - 3*box.b[32] - 3*box.b[33] + 3*box.b[36] + 3*box.b[37]
  - 4*gbox.b[48] + 4*gbox.b[49] - 2*gbox.b[52] + 2*gbox.b[53] - 2*gbox.b[56] - 2*gbox.b[57] - gbox.b[60] - gbox.b[61];  - 4*box.b[48] + 4*box.b[49] - 2*box.b[52] + 2*box.b[53] - 2*box.b[56] - 2*box.b[57] - box.b[60] - box.b[61];
      a[40] = 9*gbox.b[0] - 9*gbox.b[2] - 9*gbox.b[4] + 9*gbox.b[6] + 6*gbox.b[16] + 3*gbox.b[18] - 6*gbox.b[20] - 3*gbox.b[22]      a[40] = 9*box.b[0] - 9*box.b[2] - 9*box.b[4] + 9*box.b[6] + 6*box.b[16] + 3*box.b[18] - 6*box.b[20] - 3*box.b[22]
  + 6*gbox.b[24] - 6*gbox.b[26] + 3*gbox.b[28] - 3*gbox.b[30] + 4*gbox.b[48] + 2*gbox.b[50] + 2*gbox.b[52] + gbox.b[54];  + 6*box.b[24] - 6*box.b[26] + 3*box.b[28] - 3*box.b[30] + 4*box.b[48] + 2*box.b[50] + 2*box.b[52] + box.b[54];
      a[41] = 9*gbox.b[8] - 9*gbox.b[10] - 9*gbox.b[12] + 9*gbox.b[14] + 6*gbox.b[32] + 3*gbox.b[34] - 6*gbox.b[36] - 3*gbox.b[38]      a[41] = 9*box.b[8] - 9*box.b[10] - 9*box.b[12] + 9*box.b[14] + 6*box.b[32] + 3*box.b[34] - 6*box.b[36] - 3*box.b[38]
  + 6*gbox.b[40] - 6*gbox.b[42] + 3*gbox.b[44] - 3*gbox.b[46] + 4*gbox.b[56] + 2*gbox.b[58] + 2*gbox.b[60] + gbox.b[62];  + 6*box.b[40] - 6*box.b[42] + 3*box.b[44] - 3*box.b[46] + 4*box.b[56] + 2*box.b[58] + 2*box.b[60] + box.b[62];
      a[42] = -27*gbox.b[0] + 27*gbox.b[1] + 27*gbox.b[2] - 27*gbox.b[3] + 27*gbox.b[4] - 27*gbox.b[5] - 27*gbox.b[6] + 27*gbox.b[7]      a[42] = -27*box.b[0] + 27*box.b[1] + 27*box.b[2] - 27*box.b[3] + 27*box.b[4] - 27*box.b[5] - 27*box.b[6] + 27*box.b[7]
  - 18*gbox.b[8] - 9*gbox.b[9] + 18*gbox.b[10] + 9*gbox.b[11] + 18*gbox.b[12] + 9*gbox.b[13] - 18*gbox.b[14] - 9*gbox.b[15]  - 18*box.b[8] - 9*box.b[9] + 18*box.b[10] + 9*box.b[11] + 18*box.b[12] + 9*box.b[13] - 18*box.b[14] - 9*box.b[15]
  - 18*gbox.b[16] + 18*gbox.b[17] - 9*gbox.b[18] + 9*gbox.b[19] + 18*gbox.b[20] - 18*gbox.b[21] + 9*gbox.b[22] - 9*gbox.b[23]  - 18*box.b[16] + 18*box.b[17] - 9*box.b[18] + 9*box.b[19] + 18*box.b[20] - 18*box.b[21] + 9*box.b[22] - 9*box.b[23]
  - 18*gbox.b[24] + 18*gbox.b[25] + 18*gbox.b[26] - 18*gbox.b[27] - 9*gbox.b[28] + 9*gbox.b[29] + 9*gbox.b[30] - 9*gbox.b[31]  - 18*box.b[24] + 18*box.b[25] + 18*box.b[26] - 18*box.b[27] - 9*box.b[28] + 9*box.b[29] + 9*box.b[30] - 9*box.b[31]
  - 12*gbox.b[32] - 6*gbox.b[33] - 6*gbox.b[34] - 3*gbox.b[35] + 12*gbox.b[36] + 6*gbox.b[37] + 6*gbox.b[38] + 3*gbox.b[39]  - 12*box.b[32] - 6*box.b[33] - 6*box.b[34] - 3*box.b[35] + 12*box.b[36] + 6*box.b[37] + 6*box.b[38] + 3*box.b[39]
  - 12*gbox.b[40] - 6*gbox.b[41] + 12*gbox.b[42] + 6*gbox.b[43] - 6*gbox.b[44] - 3*gbox.b[45] + 6*gbox.b[46] + 3*gbox.b[47]  - 12*box.b[40] - 6*box.b[41] + 12*box.b[42] + 6*box.b[43] - 6*box.b[44] - 3*box.b[45] + 6*box.b[46] + 3*box.b[47]
  - 12*gbox.b[48] + 12*gbox.b[49] - 6*gbox.b[50] + 6*gbox.b[51] - 6*gbox.b[52] + 6*gbox.b[53] - 3*gbox.b[54] + 3*gbox.b[55]  - 12*box.b[48] + 12*box.b[49] - 6*box.b[50] + 6*box.b[51] - 6*box.b[52] + 6*box.b[53] - 3*box.b[54] + 3*box.b[55]
  - 8*gbox.b[56] - 4*gbox.b[57] - 4*gbox.b[58] - 2*gbox.b[59] - 4*gbox.b[60] - 2*gbox.b[61] - 2*gbox.b[62] - gbox.b[63];  - 8*box.b[56] - 4*box.b[57] - 4*box.b[58] - 2*box.b[59] - 4*box.b[60] - 2*box.b[61] - 2*box.b[62] - box.b[63];
      a[43] = 18*gbox.b[0] - 18*gbox.b[1] - 18*gbox.b[2] + 18*gbox.b[3] - 18*gbox.b[4] + 18*gbox.b[5] + 18*gbox.b[6] - 18*gbox.b[7]      a[43] = 18*box.b[0] - 18*box.b[1] - 18*box.b[2] + 18*box.b[3] - 18*box.b[4] + 18*box.b[5] + 18*box.b[6] - 18*box.b[7]
  + 9*gbox.b[8] + 9*gbox.b[9] - 9*gbox.b[10] - 9*gbox.b[11] - 9*gbox.b[12] - 9*gbox.b[13] + 9*gbox.b[14] + 9*gbox.b[15]  + 9*box.b[8] + 9*box.b[9] - 9*box.b[10] - 9*box.b[11] - 9*box.b[12] - 9*box.b[13] + 9*box.b[14] + 9*box.b[15]
  + 12*gbox.b[16] - 12*gbox.b[17] + 6*gbox.b[18] - 6*gbox.b[19] - 12*gbox.b[20] + 12*gbox.b[21] - 6*gbox.b[22] + 6*gbox.b[23]  + 12*box.b[16] - 12*box.b[17] + 6*box.b[18] - 6*box.b[19] - 12*box.b[20] + 12*box.b[21] - 6*box.b[22] + 6*box.b[23]
  + 12*gbox.b[24] - 12*gbox.b[25] - 12*gbox.b[26] + 12*gbox.b[27] + 6*gbox.b[28] - 6*gbox.b[29] - 6*gbox.b[30] + 6*gbox.b[31]  + 12*box.b[24] - 12*box.b[25] - 12*box.b[26] + 12*box.b[27] + 6*box.b[28] - 6*box.b[29] - 6*box.b[30] + 6*box.b[31]
  + 6*gbox.b[32] + 6*gbox.b[33] + 3*gbox.b[34] + 3*gbox.b[35] - 6*gbox.b[36] - 6*gbox.b[37] - 3*gbox.b[38] - 3*gbox.b[39]  + 6*box.b[32] + 6*box.b[33] + 3*box.b[34] + 3*box.b[35] - 6*box.b[36] - 6*box.b[37] - 3*box.b[38] - 3*box.b[39]
  + 6*gbox.b[40] + 6*gbox.b[41] - 6*gbox.b[42] - 6*gbox.b[43] + 3*gbox.b[44] + 3*gbox.b[45] - 3*gbox.b[46] - 3*gbox.b[47]  + 6*box.b[40] + 6*box.b[41] - 6*box.b[42] - 6*box.b[43] + 3*box.b[44] + 3*box.b[45] - 3*box.b[46] - 3*box.b[47]
  + 8*gbox.b[48] - 8*gbox.b[49] + 4*gbox.b[50] - 4*gbox.b[51] + 4*gbox.b[52] - 4*gbox.b[53] + 2*gbox.b[54] - 2*gbox.b[55]  + 8*box.b[48] - 8*box.b[49] + 4*box.b[50] - 4*box.b[51] + 4*box.b[52] - 4*box.b[53] + 2*box.b[54] - 2*box.b[55]
  + 4*gbox.b[56] + 4*gbox.b[57] + 2*gbox.b[58] + 2*gbox.b[59] + 2*gbox.b[60] + 2*gbox.b[61] + gbox.b[62] + gbox.b[63];  + 4*box.b[56] + 4*box.b[57] + 2*box.b[58] + 2*box.b[59] + 2*box.b[60] + 2*box.b[61] + box.b[62] + box.b[63];
      a[44] = -6*gbox.b[0] + 6*gbox.b[2] + 6*gbox.b[4] - 6*gbox.b[6] - 3*gbox.b[16] - 3*gbox.b[18] + 3*gbox.b[20] + 3*gbox.b[22]      a[44] = -6*box.b[0] + 6*box.b[2] + 6*box.b[4] - 6*box.b[6] - 3*box.b[16] - 3*box.b[18] + 3*box.b[20] + 3*box.b[22]
  - 4*gbox.b[24] + 4*gbox.b[26] - 2*gbox.b[28] + 2*gbox.b[30] - 2*gbox.b[48] - 2*gbox.b[50] - gbox.b[52] - gbox.b[54];  - 4*box.b[24] + 4*box.b[26] - 2*box.b[28] + 2*box.b[30] - 2*box.b[48] - 2*box.b[50] - box.b[52] - box.b[54];
      a[45] = -6*gbox.b[8] + 6*gbox.b[10] + 6*gbox.b[12] - 6*gbox.b[14] - 3*gbox.b[32] - 3*gbox.b[34] + 3*gbox.b[36] + 3*gbox.b[38]      a[45] = -6*box.b[8] + 6*box.b[10] + 6*box.b[12] - 6*box.b[14] - 3*box.b[32] - 3*box.b[34] + 3*box.b[36] + 3*box.b[38]
  - 4*gbox.b[40] + 4*gbox.b[42] - 2*gbox.b[44] + 2*gbox.b[46] - 2*gbox.b[56] - 2*gbox.b[58] - gbox.b[60] - gbox.b[62];  - 4*box.b[40] + 4*box.b[42] - 2*box.b[44] + 2*box.b[46] - 2*box.b[56] - 2*box.b[58] - box.b[60] - box.b[62];
      a[46] = 18*gbox.b[0] - 18*gbox.b[1] - 18*gbox.b[2] + 18*gbox.b[3] - 18*gbox.b[4] + 18*gbox.b[5] + 18*gbox.b[6] - 18*gbox.b[7]      a[46] = 18*box.b[0] - 18*box.b[1] - 18*box.b[2] + 18*box.b[3] - 18*box.b[4] + 18*box.b[5] + 18*box.b[6] - 18*box.b[7]
  + 12*gbox.b[8] + 6*gbox.b[9] - 12*gbox.b[10] - 6*gbox.b[11] - 12*gbox.b[12] - 6*gbox.b[13] + 12*gbox.b[14] + 6*gbox.b[15]  + 12*box.b[8] + 6*box.b[9] - 12*box.b[10] - 6*box.b[11] - 12*box.b[12] - 6*box.b[13] + 12*box.b[14] + 6*box.b[15]
  + 9*gbox.b[16] - 9*gbox.b[17] + 9*gbox.b[18] - 9*gbox.b[19] - 9*gbox.b[20] + 9*gbox.b[21] - 9*gbox.b[22] + 9*gbox.b[23]  + 9*box.b[16] - 9*box.b[17] + 9*box.b[18] - 9*box.b[19] - 9*box.b[20] + 9*box.b[21] - 9*box.b[22] + 9*box.b[23]
  + 12*gbox.b[24] - 12*gbox.b[25] - 12*gbox.b[26] + 12*gbox.b[27] + 6*gbox.b[28] - 6*gbox.b[29] - 6*gbox.b[30] + 6*gbox.b[31]  + 12*box.b[24] - 12*box.b[25] - 12*box.b[26] + 12*box.b[27] + 6*box.b[28] - 6*box.b[29] - 6*box.b[30] + 6*box.b[31]
  + 6*gbox.b[32] + 3*gbox.b[33] + 6*gbox.b[34] + 3*gbox.b[35] - 6*gbox.b[36] - 3*gbox.b[37] - 6*gbox.b[38] - 3*gbox.b[39]  + 6*box.b[32] + 3*box.b[33] + 6*box.b[34] + 3*box.b[35] - 6*box.b[36] - 3*box.b[37] - 6*box.b[38] - 3*box.b[39]
  + 8*gbox.b[40] + 4*gbox.b[41] - 8*gbox.b[42] - 4*gbox.b[43] + 4*gbox.b[44] + 2*gbox.b[45] - 4*gbox.b[46] - 2*gbox.b[47]  + 8*box.b[40] + 4*box.b[41] - 8*box.b[42] - 4*box.b[43] + 4*box.b[44] + 2*box.b[45] - 4*box.b[46] - 2*box.b[47]
  + 6*gbox.b[48] - 6*gbox.b[49] + 6*gbox.b[50] - 6*gbox.b[51] + 3*gbox.b[52] - 3*gbox.b[53] + 3*gbox.b[54] - 3*gbox.b[55]  + 6*box.b[48] - 6*box.b[49] + 6*box.b[50] - 6*box.b[51] + 3*box.b[52] - 3*box.b[53] + 3*box.b[54] - 3*box.b[55]
  + 4*gbox.b[56] + 2*gbox.b[57] + 4*gbox.b[58] + 2*gbox.b[59] + 2*gbox.b[60] + gbox.b[61] + 2*gbox.b[62] + gbox.b[63];  + 4*box.b[56] + 2*box.b[57] + 4*box.b[58] + 2*box.b[59] + 2*box.b[60] + box.b[61] + 2*box.b[62] + box.b[63];
      a[47] = -12*gbox.b[0] + 12*gbox.b[1] + 12*gbox.b[2] - 12*gbox.b[3] + 12*gbox.b[4] - 12*gbox.b[5] - 12*gbox.b[6] + 12*gbox.b[7]      a[47] = -12*box.b[0] + 12*box.b[1] + 12*box.b[2] - 12*box.b[3] + 12*box.b[4] - 12*box.b[5] - 12*box.b[6] + 12*box.b[7]
  - 6*gbox.b[8] - 6*gbox.b[9] + 6*gbox.b[10] + 6*gbox.b[11] + 6*gbox.b[12] + 6*gbox.b[13] - 6*gbox.b[14] - 6*gbox.b[15]  - 6*box.b[8] - 6*box.b[9] + 6*box.b[10] + 6*box.b[11] + 6*box.b[12] + 6*box.b[13] - 6*box.b[14] - 6*box.b[15]
  - 6*gbox.b[16] + 6*gbox.b[17] - 6*gbox.b[18] + 6*gbox.b[19] + 6*gbox.b[20] - 6*gbox.b[21] + 6*gbox.b[22] - 6*gbox.b[23]  - 6*box.b[16] + 6*box.b[17] - 6*box.b[18] + 6*box.b[19] + 6*box.b[20] - 6*box.b[21] + 6*box.b[22] - 6*box.b[23]
  - 8*gbox.b[24] + 8*gbox.b[25] + 8*gbox.b[26] - 8*gbox.b[27] - 4*gbox.b[28] + 4*gbox.b[29] + 4*gbox.b[30] - 4*gbox.b[31]  - 8*box.b[24] + 8*box.b[25] + 8*box.b[26] - 8*box.b[27] - 4*box.b[28] + 4*box.b[29] + 4*box.b[30] - 4*box.b[31]
  - 3*gbox.b[32] - 3*gbox.b[33] - 3*gbox.b[34] - 3*gbox.b[35] + 3*gbox.b[36] + 3*gbox.b[37] + 3*gbox.b[38] + 3*gbox.b[39]  - 3*box.b[32] - 3*box.b[33] - 3*box.b[34] - 3*box.b[35] + 3*box.b[36] + 3*box.b[37] + 3*box.b[38] + 3*box.b[39]
  - 4*gbox.b[40] - 4*gbox.b[41] + 4*gbox.b[42] + 4*gbox.b[43] - 2*gbox.b[44] - 2*gbox.b[45] + 2*gbox.b[46] + 2*gbox.b[47]  - 4*box.b[40] - 4*box.b[41] + 4*box.b[42] + 4*box.b[43] - 2*box.b[44] - 2*box.b[45] + 2*box.b[46] + 2*box.b[47]
  - 4*gbox.b[48] + 4*gbox.b[49] - 4*gbox.b[50] + 4*gbox.b[51] - 2*gbox.b[52] + 2*gbox.b[53] - 2*gbox.b[54] + 2*gbox.b[55]  - 4*box.b[48] + 4*box.b[49] - 4*box.b[50] + 4*box.b[51] - 2*box.b[52] + 2*box.b[53] - 2*box.b[54] + 2*box.b[55]
  - 2*gbox.b[56] - 2*gbox.b[57] - 2*gbox.b[58] - 2*gbox.b[59] - gbox.b[60] - gbox.b[61] - gbox.b[62] - gbox.b[63];  - 2*box.b[56] - 2*box.b[57] - 2*box.b[58] - 2*box.b[59] - box.b[60] - box.b[61] - box.b[62] - box.b[63];
      a[48] = 2*gbox.b[0] - 2*gbox.b[4] + gbox.b[24] + gbox.b[28];      a[48] = 2*box.b[0] - 2*box.b[4] + box.b[24] + box.b[28];
      a[49] = 2*gbox.b[8] - 2*gbox.b[12] + gbox.b[40] + gbox.b[44];      a[49] = 2*box.b[8] - 2*box.b[12] + box.b[40] + box.b[44];
      a[50] = -6*gbox.b[0] + 6*gbox.b[1] + 6*gbox.b[4] - 6*gbox.b[5] - 4*gbox.b[8] - 2*gbox.b[9] + 4*gbox.b[12] + 2*gbox.b[13]      a[50] = -6*box.b[0] + 6*box.b[1] + 6*box.b[4] - 6*box.b[5] - 4*box.b[8] - 2*box.b[9] + 4*box.b[12] + 2*box.b[13]
  - 3*gbox.b[24] + 3*gbox.b[25] - 3*gbox.b[28] + 3*gbox.b[29] - 2*gbox.b[40] - gbox.b[41] - 2*gbox.b[44] - gbox.b[45];  - 3*box.b[24] + 3*box.b[25] - 3*box.b[28] + 3*box.b[29] - 2*box.b[40] - box.b[41] - 2*box.b[44] - box.b[45];
      a[51] = 4*gbox.b[0] - 4*gbox.b[1] - 4*gbox.b[4] + 4*gbox.b[5] + 2*gbox.b[8] + 2*gbox.b[9] - 2*gbox.b[12] - 2*gbox.b[13]      a[51] = 4*box.b[0] - 4*box.b[1] - 4*box.b[4] + 4*box.b[5] + 2*box.b[8] + 2*box.b[9] - 2*box.b[12] - 2*box.b[13]
  + 2*gbox.b[24] - 2*gbox.b[25] + 2*gbox.b[28] - 2*gbox.b[29] + gbox.b[40] + gbox.b[41] + gbox.b[44] + gbox.b[45];  + 2*box.b[24] - 2*box.b[25] + 2*box.b[28] - 2*box.b[29] + box.b[40] + box.b[41] + box.b[44] + box.b[45];
      a[52] = 2*gbox.b[16] - 2*gbox.b[20] + gbox.b[48] + gbox.b[52];      a[52] = 2*box.b[16] - 2*box.b[20] + box.b[48] + box.b[52];
      a[53] = 2*gbox.b[32] - 2*gbox.b[36] + gbox.b[56] + gbox.b[60];      a[53] = 2*box.b[32] - 2*box.b[36] + box.b[56] + box.b[60];
      a[54] = -6*gbox.b[16] + 6*gbox.b[17] + 6*gbox.b[20] - 6*gbox.b[21] - 4*gbox.b[32] - 2*gbox.b[33] + 4*gbox.b[36] + 2*gbox.b[37]      a[54] = -6*box.b[16] + 6*box.b[17] + 6*box.b[20] - 6*box.b[21] - 4*box.b[32] - 2*box.b[33] + 4*box.b[36] + 2*box.b[37]
  - 3*gbox.b[48] + 3*gbox.b[49] - 3*gbox.b[52] + 3*gbox.b[53] - 2*gbox.b[56] - gbox.b[57] - 2*gbox.b[60] - gbox.b[61];  - 3*box.b[48] + 3*box.b[49] - 3*box.b[52] + 3*box.b[53] - 2*box.b[56] - box.b[57] - 2*box.b[60] - box.b[61];
      a[55] = 4*gbox.b[16] - 4*gbox.b[17] - 4*gbox.b[20] + 4*gbox.b[21] + 2*gbox.b[32] + 2*gbox.b[33] - 2*gbox.b[36] - 2*gbox.b[37]      a[55] = 4*box.b[16] - 4*box.b[17] - 4*box.b[20] + 4*box.b[21] + 2*box.b[32] + 2*box.b[33] - 2*box.b[36] - 2*box.b[37]
  + 2*gbox.b[48] - 2*gbox.b[49] + 2*gbox.b[52] - 2*gbox.b[53] + gbox.b[56] + gbox.b[57] + gbox.b[60] + gbox.b[61];  + 2*box.b[48] - 2*box.b[49] + 2*box.b[52] - 2*box.b[53] + box.b[56] + box.b[57] + box.b[60] + box.b[61];
      a[56] = -6*gbox.b[0] + 6*gbox.b[2] + 6*gbox.b[4] - 6*gbox.b[6] - 4*gbox.b[16] - 2*gbox.b[18] + 4*gbox.b[20] + 2*gbox.b[22]      a[56] = -6*box.b[0] + 6*box.b[2] + 6*box.b[4] - 6*box.b[6] - 4*box.b[16] - 2*box.b[18] + 4*box.b[20] + 2*box.b[22]
  - 3*gbox.b[24] + 3*gbox.b[26] - 3*gbox.b[28] + 3*gbox.b[30] - 2*gbox.b[48] - gbox.b[50] - 2*gbox.b[52] - gbox.b[54];  - 3*box.b[24] + 3*box.b[26] - 3*box.b[28] + 3*box.b[30] - 2*box.b[48] - box.b[50] - 2*box.b[52] - box.b[54];
      a[57] = -6*gbox.b[8] + 6*gbox.b[10] + 6*gbox.b[12] - 6*gbox.b[14] - 4*gbox.b[32] - 2*gbox.b[34] + 4*gbox.b[36] + 2*gbox.b[38]      a[57] = -6*box.b[8] + 6*box.b[10] + 6*box.b[12] - 6*box.b[14] - 4*box.b[32] - 2*box.b[34] + 4*box.b[36] + 2*box.b[38]
  - 3*gbox.b[40] + 3*gbox.b[42] - 3*gbox.b[44] + 3*gbox.b[46] - 2*gbox.b[56] - gbox.b[58] - 2*gbox.b[60] - gbox.b[62];  - 3*box.b[40] + 3*box.b[42] - 3*box.b[44] + 3*box.b[46] - 2*box.b[56] - box.b[58] - 2*box.b[60] - box.b[62];
      a[58] = 18*gbox.b[0] - 18*gbox.b[1] - 18*gbox.b[2] + 18*gbox.b[3] - 18*gbox.b[4] + 18*gbox.b[5] + 18*gbox.b[6] - 18*gbox.b[7]      a[58] = 18*box.b[0] - 18*box.b[1] - 18*box.b[2] + 18*box.b[3] - 18*box.b[4] + 18*box.b[5] + 18*box.b[6] - 18*box.b[7]
  + 12*gbox.b[8] + 6*gbox.b[9] - 12*gbox.b[10] - 6*gbox.b[11] - 12*gbox.b[12] - 6*gbox.b[13] + 12*gbox.b[14] + 6*gbox.b[15]  + 12*box.b[8] + 6*box.b[9] - 12*box.b[10] - 6*box.b[11] - 12*box.b[12] - 6*box.b[13] + 12*box.b[14] + 6*box.b[15]
  + 12*gbox.b[16] - 12*gbox.b[17] + 6*gbox.b[18] - 6*gbox.b[19] - 12*gbox.b[20] + 12*gbox.b[21] - 6*gbox.b[22] + 6*gbox.b[23]  + 12*box.b[16] - 12*box.b[17] + 6*box.b[18] - 6*box.b[19] - 12*box.b[20] + 12*box.b[21] - 6*box.b[22] + 6*box.b[23]
  + 9*gbox.b[24] - 9*gbox.b[25] - 9*gbox.b[26] + 9*gbox.b[27] + 9*gbox.b[28] - 9*gbox.b[29] - 9*gbox.b[30] + 9*gbox.b[31]  + 9*box.b[24] - 9*box.b[25] - 9*box.b[26] + 9*box.b[27] + 9*box.b[28] - 9*box.b[29] - 9*box.b[30] + 9*box.b[31]
  + 8*gbox.b[32] + 4*gbox.b[33] + 4*gbox.b[34] + 2*gbox.b[35] - 8*gbox.b[36] - 4*gbox.b[37] - 4*gbox.b[38] - 2*gbox.b[39]  + 8*box.b[32] + 4*box.b[33] + 4*box.b[34] + 2*box.b[35] - 8*box.b[36] - 4*box.b[37] - 4*box.b[38] - 2*box.b[39]
  + 6*gbox.b[40] + 3*gbox.b[41] - 6*gbox.b[42] - 3*gbox.b[43] + 6*gbox.b[44] + 3*gbox.b[45] - 6*gbox.b[46] - 3*gbox.b[47]  + 6*box.b[40] + 3*box.b[41] - 6*box.b[42] - 3*box.b[43] + 6*box.b[44] + 3*box.b[45] - 6*box.b[46] - 3*box.b[47]
  + 6*gbox.b[48] - 6*gbox.b[49] + 3*gbox.b[50] - 3*gbox.b[51] + 6*gbox.b[52] - 6*gbox.b[53] + 3*gbox.b[54] - 3*gbox.b[55]  + 6*box.b[48] - 6*box.b[49] + 3*box.b[50] - 3*box.b[51] + 6*box.b[52] - 6*box.b[53] + 3*box.b[54] - 3*box.b[55]
  + 4*gbox.b[56] + 2*gbox.b[57] + 2*gbox.b[58] + gbox.b[59] + 4*gbox.b[60] + 2*gbox.b[61] + 2*gbox.b[62] + gbox.b[63];  + 4*box.b[56] + 2*box.b[57] + 2*box.b[58] + box.b[59] + 4*box.b[60] + 2*box.b[61] + 2*box.b[62] + box.b[63];
      a[59] = -12*gbox.b[0] + 12*gbox.b[1] + 12*gbox.b[2] - 12*gbox.b[3] + 12*gbox.b[4] - 12*gbox.b[5] - 12*gbox.b[6] + 12*gbox.b[7]      a[59] = -12*box.b[0] + 12*box.b[1] + 12*box.b[2] - 12*box.b[3] + 12*box.b[4] - 12*box.b[5] - 12*box.b[6] + 12*box.b[7]
  - 6*gbox.b[8] - 6*gbox.b[9] + 6*gbox.b[10] + 6*gbox.b[11] + 6*gbox.b[12] + 6*gbox.b[13] - 6*gbox.b[14] - 6*gbox.b[15]  - 6*box.b[8] - 6*box.b[9] + 6*box.b[10] + 6*box.b[11] + 6*box.b[12] + 6*box.b[13] - 6*box.b[14] - 6*box.b[15]
  - 8*gbox.b[16] + 8*gbox.b[17] - 4*gbox.b[18] + 4*gbox.b[19] + 8*gbox.b[20] - 8*gbox.b[21] + 4*gbox.b[22] - 4*gbox.b[23]  - 8*box.b[16] + 8*box.b[17] - 4*box.b[18] + 4*box.b[19] + 8*box.b[20] - 8*box.b[21] + 4*box.b[22] - 4*box.b[23]
  - 6*gbox.b[24] + 6*gbox.b[25] + 6*gbox.b[26] - 6*gbox.b[27] - 6*gbox.b[28] + 6*gbox.b[29] + 6*gbox.b[30] - 6*gbox.b[31]  - 6*box.b[24] + 6*box.b[25] + 6*box.b[26] - 6*box.b[27] - 6*box.b[28] + 6*box.b[29] + 6*box.b[30] - 6*box.b[31]
  - 4*gbox.b[32] - 4*gbox.b[33] - 2*gbox.b[34] - 2*gbox.b[35] + 4*gbox.b[36] + 4*gbox.b[37] + 2*gbox.b[38] + 2*gbox.b[39]  - 4*box.b[32] - 4*box.b[33] - 2*box.b[34] - 2*box.b[35] + 4*box.b[36] + 4*box.b[37] + 2*box.b[38] + 2*box.b[39]
  - 3*gbox.b[40] - 3*gbox.b[41] + 3*gbox.b[42] + 3*gbox.b[43] - 3*gbox.b[44] - 3*gbox.b[45] + 3*gbox.b[46] + 3*gbox.b[47]  - 3*box.b[40] - 3*box.b[41] + 3*box.b[42] + 3*box.b[43] - 3*box.b[44] - 3*box.b[45] + 3*box.b[46] + 3*box.b[47]
  - 4*gbox.b[48] + 4*gbox.b[49] - 2*gbox.b[50] + 2*gbox.b[51] - 4*gbox.b[52] + 4*gbox.b[53] - 2*gbox.b[54] + 2*gbox.b[55]  - 4*box.b[48] + 4*box.b[49] - 2*box.b[50] + 2*box.b[51] - 4*box.b[52] + 4*box.b[53] - 2*box.b[54] + 2*box.b[55]
  - 2*gbox.b[56] - 2*gbox.b[57] - gbox.b[58] - gbox.b[59] - 2*gbox.b[60] - 2*gbox.b[61] - gbox.b[62] - gbox.b[63];  - 2*box.b[56] - 2*box.b[57] - box.b[58] - box.b[59] - 2*box.b[60] - 2*box.b[61] - box.b[62] - box.b[63];
      a[60] = 4*gbox.b[0] - 4*gbox.b[2] - 4*gbox.b[4] + 4*gbox.b[6] + 2*gbox.b[16] + 2*gbox.b[18] - 2*gbox.b[20] - 2*gbox.b[22]      a[60] = 4*box.b[0] - 4*box.b[2] - 4*box.b[4] + 4*box.b[6] + 2*box.b[16] + 2*box.b[18] - 2*box.b[20] - 2*box.b[22]
  + 2*gbox.b[24] - 2*gbox.b[26] + 2*gbox.b[28] - 2*gbox.b[30] + gbox.b[48] + gbox.b[50] + gbox.b[52] + gbox.b[54];  + 2*box.b[24] - 2*box.b[26] + 2*box.b[28] - 2*box.b[30] + box.b[48] + box.b[50] + box.b[52] + box.b[54];
      a[61] = 4*gbox.b[8] - 4*gbox.b[10] - 4*gbox.b[12] + 4*gbox.b[14] + 2*gbox.b[32] + 2*gbox.b[34] - 2*gbox.b[36] - 2*gbox.b[38]      a[61] = 4*box.b[8] - 4*box.b[10] - 4*box.b[12] + 4*box.b[14] + 2*box.b[32] + 2*box.b[34] - 2*box.b[36] - 2*box.b[38]
  + 2*gbox.b[40] - 2*gbox.b[42] + 2*gbox.b[44] - 2*gbox.b[46] + gbox.b[56] + gbox.b[58] + gbox.b[60] + gbox.b[62];  + 2*box.b[40] - 2*box.b[42] + 2*box.b[44] - 2*box.b[46] + box.b[56] + box.b[58] + box.b[60] + box.b[62];
      a[62] = -12*gbox.b[0] + 12*gbox.b[1] + 12*gbox.b[2] - 12*gbox.b[3] + 12*gbox.b[4] - 12*gbox.b[5] - 12*gbox.b[6] + 12*gbox.b[7]      a[62] = -12*box.b[0] + 12*box.b[1] + 12*box.b[2] - 12*box.b[3] + 12*box.b[4] - 12*box.b[5] - 12*box.b[6] + 12*box.b[7]
  - 8*gbox.b[8] - 4*gbox.b[9] + 8*gbox.b[10] + 4*gbox.b[11] + 8*gbox.b[12] + 4*gbox.b[13] - 8*gbox.b[14] - 4*gbox.b[15]  - 8*box.b[8] - 4*box.b[9] + 8*box.b[10] + 4*box.b[11] + 8*box.b[12] + 4*box.b[13] - 8*box.b[14] - 4*box.b[15]
  - 6*gbox.b[16] + 6*gbox.b[17] - 6*gbox.b[18] + 6*gbox.b[19] + 6*gbox.b[20] - 6*gbox.b[21] + 6*gbox.b[22] - 6*gbox.b[23]  - 6*box.b[16] + 6*box.b[17] - 6*box.b[18] + 6*box.b[19] + 6*box.b[20] - 6*box.b[21] + 6*box.b[22] - 6*box.b[23]
  - 6*gbox.b[24] + 6*gbox.b[25] + 6*gbox.b[26] - 6*gbox.b[27] - 6*gbox.b[28] + 6*gbox.b[29] + 6*gbox.b[30] - 6*gbox.b[31]  - 6*box.b[24] + 6*box.b[25] + 6*box.b[26] - 6*box.b[27] - 6*box.b[28] + 6*box.b[29] + 6*box.b[30] - 6*box.b[31]
  - 4*gbox.b[32] - 2*gbox.b[33] - 4*gbox.b[34] - 2*gbox.b[35] + 4*gbox.b[36] + 2*gbox.b[37] + 4*gbox.b[38] + 2*gbox.b[39]  - 4*box.b[32] - 2*box.b[33] - 4*box.b[34] - 2*box.b[35] + 4*box.b[36] + 2*box.b[37] + 4*box.b[38] + 2*box.b[39]
  - 4*gbox.b[40] - 2*gbox.b[41] + 4*gbox.b[42] + 2*gbox.b[43] - 4*gbox.b[44] - 2*gbox.b[45] + 4*gbox.b[46] + 2*gbox.b[47]  - 4*box.b[40] - 2*box.b[41] + 4*box.b[42] + 2*box.b[43] - 4*box.b[44] - 2*box.b[45] + 4*box.b[46] + 2*box.b[47]
  - 3*gbox.b[48] + 3*gbox.b[49] - 3*gbox.b[50] + 3*gbox.b[51] - 3*gbox.b[52] + 3*gbox.b[53] - 3*gbox.b[54] + 3*gbox.b[55]  - 3*box.b[48] + 3*box.b[49] - 3*box.b[50] + 3*box.b[51] - 3*box.b[52] + 3*box.b[53] - 3*box.b[54] + 3*box.b[55]
  - 2*gbox.b[56] - gbox.b[57] - 2*gbox.b[58] - gbox.b[59] - 2*gbox.b[60] - gbox.b[61] - 2*gbox.b[62] - gbox.b[63];  - 2*box.b[56] - box.b[57] - 2*box.b[58] - box.b[59] - 2*box.b[60] - box.b[61] - 2*box.b[62] - box.b[63];
      a[63] = 8*gbox.b[0] - 8*gbox.b[1] - 8*gbox.b[2] + 8*gbox.b[3] - 8*gbox.b[4] + 8*gbox.b[5] + 8*gbox.b[6] - 8*gbox.b[7]      a[63] = 8*box.b[0] - 8*box.b[1] - 8*box.b[2] + 8*box.b[3] - 8*box.b[4] + 8*box.b[5] + 8*box.b[6] - 8*box.b[7]
  + 4*gbox.b[8] + 4*gbox.b[9] - 4*gbox.b[10] - 4*gbox.b[11] - 4*gbox.b[12] - 4*gbox.b[13] + 4*gbox.b[14] + 4*gbox.b[15]  + 4*box.b[8] + 4*box.b[9] - 4*box.b[10] - 4*box.b[11] - 4*box.b[12] - 4*box.b[13] + 4*box.b[14] + 4*box.b[15]
  + 4*gbox.b[16] - 4*gbox.b[17] + 4*gbox.b[18] - 4*gbox.b[19] - 4*gbox.b[20] + 4*gbox.b[21] - 4*gbox.b[22] + 4*gbox.b[23]  + 4*box.b[16] - 4*box.b[17] + 4*box.b[18] - 4*box.b[19] - 4*box.b[20] + 4*box.b[21] - 4*box.b[22] + 4*box.b[23]
  + 4*gbox.b[24] - 4*gbox.b[25] - 4*gbox.b[26] + 4*gbox.b[27] + 4*gbox.b[28] - 4*gbox.b[29] - 4*gbox.b[30] + 4*gbox.b[31]  + 4*box.b[24] - 4*box.b[25] - 4*box.b[26] + 4*box.b[27] + 4*box.b[28] - 4*box.b[29] - 4*box.b[30] + 4*box.b[31]
  + 2*gbox.b[32] + 2*gbox.b[33] + 2*gbox.b[34] + 2*gbox.b[35] - 2*gbox.b[36] - 2*gbox.b[37] - 2*gbox.b[38] - 2*gbox.b[39]  + 2*box.b[32] + 2*box.b[33] + 2*box.b[34] + 2*box.b[35] - 2*box.b[36] - 2*box.b[37] - 2*box.b[38] - 2*box.b[39]
  + 2*gbox.b[40] + 2*gbox.b[41] - 2*gbox.b[42] - 2*gbox.b[43] + 2*gbox.b[44] + 2*gbox.b[45] - 2*gbox.b[46] - 2*gbox.b[47]  + 2*box.b[40] + 2*box.b[41] - 2*box.b[42] - 2*box.b[43] + 2*box.b[44] + 2*box.b[45] - 2*box.b[46] - 2*box.b[47]
  + 2*gbox.b[48] - 2*gbox.b[49] + 2*gbox.b[50] - 2*gbox.b[51] + 2*gbox.b[52] - 2*gbox.b[53] + 2*gbox.b[54] - 2*gbox.b[55]  + 2*box.b[48] - 2*box.b[49] + 2*box.b[50] - 2*box.b[51] + 2*box.b[52] - 2*box.b[53] + 2*box.b[54] - 2*box.b[55]
  + gbox.b[56] + gbox.b[57] + gbox.b[58] + gbox.b[59] + gbox.b[60] + gbox.b[61] + gbox.b[62] + gbox.b[63];  + box.b[56] + box.b[57] + box.b[58] + box.b[59] + box.b[60] + box.b[61] + box.b[62] + box.b[63];
            
      //for (int j = 0; j < 64; j++) DebugM(4, "a[" << j << "] = " << a[j] << "\n" << endi);      for (int j = 0; j < 64; j++) DebugM(2, "a[" << j << "] = " << a[j] << "\n" << endi);
      //for (int j = 0; j < 64; j++) DebugM(4, "b[" << j << "] = " << gbox.b[j] << "\n" << endi);      for (int j = 0; j < 64; j++) DebugM(2, "b[" << j << "] = " << box.b[j] << "\n" << endi);
            
      // Calculate powers of x, y, z for later use      // Calculate powers of x, y, z for later use
      // e.g. x[2] = x^2      // e.g. x[2] = x^2
      float x[4], y[4], z[4];      float x[4], y[4], z[4];
      x[0] = 1; y[0] = 1; z[0] = 1;      x[0] = 1; y[0] = 1; z[0] = 1;
      for (int j = 1; j < 4; j++) {      for (int j = 1; j < 4; j++) {
  x[j] = x[j-1] * loc.x;  x[j] = x[j-1] * box.loc.x;
  y[j] = y[j-1] * loc.y;  y[j] = y[j-1] * box.loc.y;
  z[j] = z[j-1] * loc.z;  z[j] = z[j-1] * box.loc.z;
      }      }
            
      int ind = 0;      int ind = 0;
Line 254
Line 250
      }      }
            
 //      Force force = scale * Tensor::diagonal(simParams->gridforceScale) * charge * (inv * f); //      Force force = scale * Tensor::diagonal(simParams->gridforceScale) * charge * (inv * f);
      Force force = scale * Tensor::diagonal(simParams->gridforceScale) * charge * (f * inv); // Must multiply ON THE RIGHT by inv tensor      Force force = scale * Tensor::diagonal(simParams->gridforceScale) * charge * (f * grid->get_inv()); // Must multiply ON THE RIGHT by inv tensor
            
      DebugM(4, "f4 = " << f << "\n" << endi);      DebugM(4, "f4 = " << f << "\n" << endi);
      DebugM(4, "force4 = " << force << "\n" << endi);      DebugM(4, "force4 = " << force << "\n" << endi);


Legend:
Removed in v.1.5 
changed lines
 Added in v.1.6



Made by using version 1.53 of cvs2html