I am interested in doing some lattice dynamics calculations that require high precisions.

When I looked at the dynamical matrix outputs from GULP, it seems to print out 6 decimal point digits.

Does this mean internal calculations (not printing) also consider up to 6 decimal point digits? I am guessing not since some numbers print out as -0.000000 which means it knows that it’s negative.

Is there a way to print out more decimal points for the dynamical matrices?

Hi Jack
GULP computes everything to double precision. You can increase this to quad precision by changing the definitions in the module that defines the precision variables, though you really shouldn’t need to do this. If you want to get more than 6 d.p. in the output then you’ll need to just go edit the source code where the quantity is output & recompile to write more decimal places. Of course, remember that the accuracy is nothing like 6 d.p. and anything less than 0.025 eV is often in the thermal noise.
Regards,
Julian

Hi Jack,
It depends exactly what you want to print out. If it’s the dynamical matrix as part of debugging information then the routine is phonon.F90 for serial runs (around line 1740). All of this comes with the caveat that anything beyond the 2nd decimal place in energy (when expressed in eV) is in the thermal noise and well beyond the accuracy of pretty much every theoretical method, so going beyond the 6 decimal place has no meaning in terms of the real world & so is only relevant to the theory of computing operations.
Regards,
Julian