Dear @vincentm
I have a question regarding the forces in unitcell and its own supercell under different grid resolutions.
I need minimal forces on all the atoms in order to get a correct phonon band structure. And I also need to use grids as large as they can be to reduce the computational cost since I need the phonon band structure on a large supercell with many atoms.
So I did several tests with domain.lowres = 0.2, 0.25, 0.3, 0.35
I found that when domain.lowres = 0.2, the unitcell and its counterpart supercell have very small forces.
However, when domain.lowres = 0.35, the unitcell still has very small forces, but its counterpart supercell has large forces.
I don't understand this discrepancy. The supercell is created by option.replicateCell = 3*[1,1,1]
and the unicell has kpoint.gridn = [3 3 3]
, while the supercell has kpoint.gridn = [1 1 1]
. So I think the two systems should be equivalent? Why the force is small in the unitcell, but becomes large on the supercell for grid size 0.35?
These are the full test results I have:
where E is obtained by: a=load('nacl_scf.mat'), a.energy.Etot
, F is obtained by: a=load('nacl_scf.mat'),max(max(a.force.total))
The input file is:
info.calculationType = 'self-consistent'
info.savepath = './results/nacl_scf'
element(1).species = 'Na'
element(1).path = './Na_LDA_TZP.mat'
element(2).species = 'Cl'
element(2).path = './Cl_LDA_TZP.mat'
atom.element = [1 1 1 1 2 2 2 2]
atom.xyz = 10.348949044610158*...
[[0.000000 0.000000 0.000000]
[0.000000 0.500000 0.500000]
[0.500000 0.000000 0.500000]
[0.500000 0.500000 0.000000]
[0.500000 0.000000 0.000000]
[0.500000 0.500000 0.500000]
[0.000000 0.000000 0.500000]
[0.000000 0.500000 0.000000]]
option.replicateCell = 3*[1,1,1] % supercell
domain.latvec = 10.348949044610158*[1 0 0; 0 1 0; 0 0 1]
domain.lowres = 0.35
functional.libxc = true
functional.list = {'XC_LDA_X','XC_LDA_C_PW'}
%kpoint.gridn = [1 1 1] % kpoint.gridn = [3 3 3] % for unitcell
kpoint.sigma = 0 % advised for dfpt non-metallic systems
mixing.tol = 1e-8*[1 1] % advised for dfpt
option.saveWavefunction = 1 % required for dfpt
diffop.method = 'fft' % required for dfpt
domain.fourierInit = false % required for dfpt
The resculog.out comparison:
Could you please give me some guidance on this? Thank you so much!