65   int maxK1, maxK2, maxK3;
    67   K1=myGrid.
K1; K2=myGrid.
K2; K3=myGrid.
K3;
    68   maxK1 = K1/2; maxK2 = K2/2; maxK3 = K3/2;
    71   double beta3 = ewald*ewald*ewald;
    73   double fac2 = -
M_PI*
M_PI/(ewald*ewald);
    75   double fac4 = 
M_PI/ewald;
    82     double recipx = lattice.
a_r().
x;
    83     double recipy = lattice.
b_r().
y;
    84     double recipz = lattice.
c_r().
z;
    88     for ( k1=0; k1<K1; ++k1 ) {
    92       int k1_s = k1<=maxK1 ? k1 : k1-K1;
    95       for ( k2=0; k2<K2; ++k2 ) {
    99         int k2_s = k2<=maxK2 ? k2 : k2-K2;
   103         for ( k3=0; k3<=maxK3; ++k3 ) {
   104           double m3, m33, msq, mFreq, vir, tempE;
   105           double b1b2b3, eTerm, q2, qr, qc;
   107           b1b2b3 = bm3[k3] *b1b2;
   111           msq = m11 + m22 + m33;
   113           qr = q_arr[ind]; qc=q_arr[ind+1];
   115           q2 = 2.0*(qr*qr + qc*qc);
   117           if ( (k3 == 0) || ( k3 == maxK3 && ! (K3 & 1) ) ) q2 *= 0.5;
   119           eTerm = b1b2b3*box_factor*((beta3 + fac1*msq)*exp(fac2*msq) + fac3*msq*mFreq*erfc(fac4*mFreq));
   122           q_arr[ind+1] *= eTerm;
   127           vir = 3.0*box_factor*b1b2b3*(fac1*exp(fac2*msq)+fac3*mFreq*erfc(fac4*mFreq))*q2;
   128           v0 += tempE + vir*m11;
   131           v3 += tempE + vir*m22;
   133           v5 += tempE + vir*m33;
   143     double recip2_x = recip2.
x;
   144     double recip2_y = recip2.
y;
   145     double recip2_z = recip2.
z;
   146     double recip3_x = recip3.
x;
   147     double recip3_y = recip3.
y;
   148     double recip3_z = recip3.
z;
   151     for ( k1=0; k1<K1; ++k1 ) {
   155       int k1_s = k1<=maxK1 ? k1 : k1-K1;
   157       for ( k2=0; k2<K2; ++k2 ) {
   158         double b1b2, m2_x, m2_y, m2_z;
   161         int k2_s = k2<=maxK2 ? k2 : k2-K2;
   162         m2_x = m1.
x + k2_s*recip2_x;
   163         m2_y = m1.
y + k2_s*recip2_y;
   164         m2_z = m1.
z + k2_s*recip2_z;
   166         for ( k3=0; k3<=maxK3; ++k3 ) {
   167           double xp3, msq, mFreq, vir, tempE;
   168           double b1b2b3, eTerm, q2, qr, qc;
   169           double m_x, m_y, m_z;
   171           b1b2b3 = bm3[k3] *b1b2;
   172           m_x = m2_x + k3*recip3_x;
   173           m_y = m2_y + k3*recip3_y;
   174           m_z = m2_z + k3*recip3_z;
   176           msq = m_x*m_x + m_y*m_y + m_z*m_z;
   178           qr = q_arr[ind]; qc=q_arr[ind+1];
   180           q2 = 2.0*(qr*qr + qc*qc);
   182           if ( (k3 == 0) || ( k3 == maxK3 && ! (K3 & 1) ) ) q2 *= 0.5;
   184           eTerm = b1b2b3*box_factor*((beta3 + fac1*msq)*exp(fac2*msq) + fac3*msq*mFreq*erfc(fac4*mFreq));
   187           q_arr[ind+1] *= eTerm;
   192           vir = 3.0*box_factor*b1b2b3*(fac1*exp(fac2*msq)+fac3*mFreq*erfc(fac4*mFreq))*q2;
   193           v0 += tempE + vir*m_x*m_x;
   196           v3 += tempE + vir*m_y*m_y;
   198           v5 += tempE + vir*m_z*m_z;
   206   virial[0] = 0.5 * v0;
   207   virial[1] = 0.5 * v1;
   208   virial[2] = 0.5 * v2;
   209   virial[3] = 0.5 * v3;
   210   virial[4] = 0.5 * v4;
   211   virial[5] = 0.5 * v5;
 
NAMD_HOST_DEVICE int orthogonal() const
 
NAMD_HOST_DEVICE BigReal volume(void) const
 
NAMD_HOST_DEVICE Vector a_r() const
 
NAMD_HOST_DEVICE Vector b_r() const
 
NAMD_HOST_DEVICE Vector c_r() const