A few conditions related to the number of processes, dimension of Hamiltonian Matrix and Block Size are now checked. At present, CONQUEST simply stops if inappropriate setting for the block size and MPI processes is given.
Main one is ..
proc_cols must be smaller than blocks_c = (matrix_size_padH/ block size)
After I updated the MacOS, I encountered a problem in the following part with the option (-O3).
if (n_dumpL>0 .and. mod (n_iter, n_dumpL) == 0) then
call dump_pos_and_matrices(index=unit_DM_save)
endif
The problem seems to come from the 2nd one when n_dumpL=0.
I thought it is not used since we also checked n_dumpL. But, it is probably safer to change it to
if (n_dumpL>0) then
if(mod (n_iter, n_dumpL) == 0) call dump_pos_and_matrices(index=unit_DM_save)
endif
Changed the size of 'w' from matrix_size_padH to matrix_size.
-> This has removed the bug related to the inconsistency about the size of this array.
In addition, the name of the array 'w' and 'local_w' were changed to 'evals' and 'local_evals', respectively.
These changes are actually for non-SCF GGA calculations, but fall
under the general umbrella of stress bug fixes.
Note that the XC_GGA_stress (which comes from changes in the XC
energy related to cell-induced changes in the density gradient)
are not quite correctly implemented. For non-SCF there should
be a mix of input and output densities (and Exc and Vxc) used
for this term, but this is very complex to implement, so for
now we have an approximation: we mix the stress contribution
found using input and output densities. The proportion can
be set using an input flag (but should not really be changed
from 0.5)
Mainly adding GGA XC contribution but also tidying and simplifying
non-SCF force routine to enable checking of formulae.
This appears to have a small error in the stress when using GGA
with non-SCF (and probably with PCC) at the level of 0.15GPa
which I'm unable to find at the moment
I think the change make the code a little neater,
by replacing a do loop into a line with the expression for arrays.
(for the last block including the padded part.)
Debugged DiagModule.f90 and add minor changes (some comments) to ScalapackFormat.f90 and DiagModule.f90
(Main bug in DiagModule.f90 was in PrepareRecv.
A bug in generating eigenvectors in the case of "padH" has been removed.
Now, the results are consistent with the former version of CONQUEST, but it still has a problem after the movement of atoms.
There was a missing minus sign in the PCC part of the non-SCF
forces, and a missing non-SCF exception when rebuilding the
charge density from the DM after atomic movement.