Fix reference version with half neighbor lists
Signed-off-by: Rafael Ravedutti <rafaelravedutti@gmail.com>
This commit is contained in:
		| @@ -79,13 +79,18 @@ double computeForceLJ_ref(Parameter *param, Atom *atom, Neighbor *neighbor, Stat | |||||||
|                 MD_FLOAT fiz = 0; |                 MD_FLOAT fiz = 0; | ||||||
|  |  | ||||||
|                 for(int cjj = 0; cjj < CLUSTER_N; cjj++) { |                 for(int cjj = 0; cjj < CLUSTER_N; cjj++) { | ||||||
|  |                     int cond; | ||||||
|                     #if CLUSTER_M == CLUSTER_N |                     #if CLUSTER_M == CLUSTER_N | ||||||
|                     if(ci_cj0 != cj || cii != cjj) { |                     cond = neighbor->half_neigh ? (ci_cj0 != cj || cii < cjj) : | ||||||
|  |                                                   (ci_cj0 != cj || cii != cjj); | ||||||
|                     #elif CLUSTER_M < CLUSTER_N |                     #elif CLUSTER_M < CLUSTER_N | ||||||
|                     if(ci_cj0 != cj || cii + CLUSTER_M * (ci & 0x1) != cjj) { |                     cond = neighbor->half_neigh ? (ci_cj0 != cj || cii + CLUSTER_M * (ci & 0x1) < cjj) : | ||||||
|  |                                                   (ci_cj0 != cj || cii + CLUSTER_M * (ci & 0x1) != cjj); | ||||||
|                     #else |                     #else | ||||||
|                     if((ci_cj0 != cj || cii != cjj) && (ci_cj1 != cj || cii != cjj + CLUSTER_N)) { |                     cond = neighbor->half_neigh ? (ci_cj0 != cj || cii < cjj) && (ci_cj1 != cj || cii < cjj + CLUSTER_N) : | ||||||
|  |                                                   (ci_cj0 != cj || cii != cjj) && (ci_cj1 != cj || cii != cjj + CLUSTER_N); | ||||||
|                     #endif |                     #endif | ||||||
|  |                     if(cond) { | ||||||
|                         MD_FLOAT delx = xtmp - cj_x[CL_X_OFFSET + cjj]; |                         MD_FLOAT delx = xtmp - cj_x[CL_X_OFFSET + cjj]; | ||||||
|                         MD_FLOAT dely = ytmp - cj_x[CL_Y_OFFSET + cjj]; |                         MD_FLOAT dely = ytmp - cj_x[CL_Y_OFFSET + cjj]; | ||||||
|                         MD_FLOAT delz = ztmp - cj_x[CL_Z_OFFSET + cjj]; |                         MD_FLOAT delz = ztmp - cj_x[CL_Z_OFFSET + cjj]; | ||||||
|   | |||||||
| @@ -98,4 +98,3 @@ static inline void simd_h_decr3(MD_FLOAT *m, MD_SIMD_FLOAT a0, MD_SIMD_FLOAT a1, | |||||||
|     simd_h_decr(m + CLUSTER_M, a1); |     simd_h_decr(m + CLUSTER_M, a1); | ||||||
|     simd_h_decr(m + CLUSTER_M * 2, a2); |     simd_h_decr(m + CLUSTER_M * 2, a2); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user