k-space ewald | k-vectors for (kx,0,0) with kx < 0

Dear LAMMPS users & developers,

I am simulating SPC/E water with LAMMPS 1Feb14 using Ewald summation and I would like to dump all k-vectors employed for the force calculation during the simulation to a file for post-processing. I saw that the arrays kxvecs[j], kyvecs[j] and kzvecs[j], j = 0, …, kcount-1, are initialised in void Ewald::coeffs() in the file ewald.cpp. At the end of Ewald::setup(), I added the following source code to write the vectors to a file:

for (int k = 0; k < kcount; k++)

fprintf(fp, “%d %5.14lf %5.14lf %5.14lf \n”, k+1, kxvecs[k]*unitk[0], kyvecs[k]*unitk[1], kzvecs[k]*unitk[2]);

Although that works so far, I realised that that all kx-components of the k-vectors are non-negative, i.e. kxvecs[j] >= 0 for j = 0,…,kcount-1. I assume that some underlying symmetry is employed for the evaluation of the k-space sum, but I cannot really see, where this is happening.

Therefore, I would like to ask two questions:

1.) Could someone who is familiar with the code please refer to the line where the above mentioned symmetry of (kx,ky,kz) -> (-kx,ky,kz) is employed accounting for the missing k-vectors in the half-sphere kx <= 0?
2.) Would it then be sufficient to just invert the kx-component of the k-vectors used in LAMMPS in order to reconstruct the full set of k-vectors, i.e.

// missing half-sphere

for (int k = 0; k < kcount; k++)

fprintf(fp, “%d %5.14lf %5.14lf %5.14lf \n”, kcount+k+1, - kxvecs[k]*unitk[0], kyvecs[k]*unitk[1], kzvecs[k]*unitk[2]);

or are there still more “missing”?

Thanks in advance,