Dear members of the Abinit Forum,
I have a question about the array on which the wavefunction coefficients are stored in the ETSF file format of the WFK.
I understand that
1) Within ABINIT this coefficients are stored in the cg array;
while within the ETSF WFK (NetCDF) file they are stored in the
file.variable['coefficients_of_wavefunctions']
2) the number of planewaves for a given coefficient cg_nk(G) depends on the k-point in question, according to
|k + G_i |^2 < ecut
3) The cg array has a number of dimensions, and the dimension along the axis corresponding to the planewaves is 'mpw', refering to the Maximum number of PlaneWaves.
I noticed that, for a given state (sigma, n, k), the leftover elements of the planewave dimension in cg are set to large real numbers, like 1e+36;
also that the reduced coordinates for those leftover coefficients are set in turn to large integer numbers, like 2147483647.
For example:
the last real elements of cg for a given (sigma, n, k) state are
cg ([ ...., -1.607e-05, -2.741e-04, 9.969e+36, 9.969e+36 ])
where in this case npw_k = mpw - 2
while for the reduced coordinates,
f.variables['reduced_coordinates_of_plane_waves'],
the tail of a planewave array for a specific state looks like
([ [ 0, 0, 0],
.... ,
[ -2, -1, -1],
[ -1, -1, -1],
[-2147483647, -2147483647, -2147483647],
[-2147483647, -2147483647, -2147483647] )
Question:
Were these 'infinity' values set as a safety measure, as oppose to zeores, so that reading my mistake more items than the expected for a given kpoint lead to a noticeable wrong result?
With regards,
Temok
Wfn coeff in the ETSF WFK
Moderator: bguster