Dimension of ML_HEAT output

Queries about input and output files, running specific calculations, etc.


Moderators: Global Moderator, Moderator

Post Reply
Message
Author
akretschmer
Newbie
Newbie
Posts: 33
Joined: Wed Nov 13, 2019 8:14 am

Dimension of ML_HEAT output

#1 Post by akretschmer » Mon Oct 13, 2025 7:03 pm

Hi,

I have a question regarding the units of the ML_HEAT file containing the local heat flux.

I have written some python code to compute the thermal conductivity using the Green-Kubo formalism. When I load the ML_HEAT files using my code and convert the units from eV*A/fs, as specified in the documentation, to W*m I get a thermal conductivity 4 orders of magnitude too high. Moreover, when I simulate SPC/E water using LAMMPS, output the heat flux in the same units and then use the same code to compute the thermal conductivity of this water I get a correct result, the same as in literature.

I would get results around the correct value if I suppose that the units I convert from are eV*pm/fs, i.e. I use a conversion factor of 1.602e-16 instead of 1.602e-14 when I convert from eV*A/fs to W*m.

My question is if it is possible that the units in the documentation are incorrect, i.e. that they should be eV*pm/fs instead of eV*A/fs?


martin.schlipf
Global Moderator
Global Moderator
Posts: 651
Joined: Fri Nov 08, 2019 7:18 am

Re: Dimension of ML_HEAT output

#2 Post by martin.schlipf » Tue Oct 14, 2025 8:55 am

I will inquire whether users need to be careful with converting ML_HEAT to SI units. Looking just at the code it seems that eVA/fs is correct

Code: Select all

WRITE(IU,1) NSTEP,(QHEAT(IXYZ)*EUNIT*AUTOA/TUNIT,IXYZ=1, 3)

where EUNIT, AUTOA, and TUNIT convert atomic units to eV, A, and fs, respectively (check ml_ff_iohandle.F and ml_ff_constant.F).

[Edit: removed incorrect statement about LAMMPS interface]

Martin Schlipf
VASP developer


martin.schlipf
Global Moderator
Global Moderator
Posts: 651
Joined: Fri Nov 08, 2019 7:18 am

Re: Dimension of ML_HEAT output

#3 Post by martin.schlipf » Tue Oct 14, 2025 9:27 am

Perhaps you can share the Python code if you think that would help.

Another alternative is to compute the thermal conductivity with a the Müller-Plathe method.

Martin Schlipf
VASP developer


martin.schlipf
Global Moderator
Global Moderator
Posts: 651
Joined: Fri Nov 08, 2019 7:18 am

Re: Dimension of ML_HEAT output

#4 Post by martin.schlipf » Fri Oct 17, 2025 9:17 am

As a correction to the earlier post: The LAMMPS interface will actually not work to compute the thermal transport. Some quantities required are not communicated via the force-field interface so LAMMPS cannot compute the heat flux.

The Müller-Plathe method is therefore the best alternative. It usually also shows a better convergence behavior with the required sample data.

Martin Schlipf
VASP developer


akretschmer
Newbie
Newbie
Posts: 33
Joined: Wed Nov 13, 2019 8:14 am

Re: Dimension of ML_HEAT output

#5 Post by akretschmer » Fri Sep 11, 2026 9:57 am

Sorry for the delayed response, and thank you for pointing out the LAMMPS interface for VASP. Even though it won't work for this specific use case, I wasn't aware of it beforehand, so it's a great tip.

Regarding your correction about the LAMMPS interface, could you clarify exactly which quantities are not communicated to LAMMPS? I was initially confused by this because I assumed LAMMPS simply reads all the necessary information directly from the MLFF file, using the exact same data VASP uses.

Does this limitation stem from the known issues with stress calculations for many-body potentials when using compute stress/atom? If so, would switching to compute centroid/stress/atom in LAMMPS bypass the problem? I'm very curious to understand the underlying technical reason why the heat flux calculation works directly inside VASP, but fails when routed through the LAMMPS patch.

Finally, thank you for the suggestion to use the Müller-Plathe method, that is probably the way to go.


Post Reply