issp-center-dev / HPhi

Quantum Lattice Model Simulator Package
https://www.pasums.issp.u-tokyo.ac.jp/hphi/en/
GNU General Public License v3.0
82 stars 25 forks source link

Physical units? #152

Closed abehersan closed 2 months ago

abehersan commented 5 months ago

Hi!

I want to compare HPhi's calculations to experimental data on new 2D quantum magnets and I have three questions regarding units if I may:

  1. Upon defining a spin Hamiltonian, (Spin, SpinGC or SpinGCCMA mode) in which physical units are the Hamiltonian parameters defined? Kelvin?
  2. Following /samples/old/TPQ/Kitaev for example, in which units are the outputs of AveSSrand.py? In which units is the specific heat calculated?
  3. Is the temperature range and step in temperature for finite temperature calculations a parameter that one can choose? I.e. could the sampling be made denser around specific temperatures of interest, e.g. around a temperature where a phase transition is expected?

HPhi's capabilities are super impressive, but I could not find anywhere on the documentation nor in the manual any discussion on physical units, which would be necessary if a comparison to experiment is to be done properly.

Thanks a ton in advance! I will be in touch. Abraham

tmisawa commented 5 months ago

Hi. Thank you for your interest in HPhi.

First, I note that the physical unit of the Hamiltonian is not explicitly specified in HPhi. If you take J=1 in spin Hamiltonians, it means that J is taken as a unit of energy. And, all physical quantities are measured by J.

For example, please see a figure in the following tutorial, 2.1.2. In the figure, energy E and temperature T are measured by the unit of J. This means we assume k_B=1 in the calculation by HPhi, where k_B is the Boltzmann constant.

https://issp-center-dev.github.io/HPhi/manual/develop/tutorial/en/html/finite_temperature/spin_chain.html#mtpq-method-susceptibility

I'm going to answer your questions below.

  1. Upon defining a spin Hamiltonian, (Spin, SpinGC or SpinGCCMA mode) in which physical units are the Hamiltonian parameters defined? Kelvin?

As I explained, physical units are not specified in HPhi. The temperature outputted by HPhi (T_hphi) has an energy dimension. Thus, to obtain the temperature in the unit of Kelvin, it is necessary to divide T_hphi by the Boltzmann constant as T (Kelvin) = T_hphi (energy)/k_B (energy/Kelvin).

  1. Following /samples/old/TPQ/Kitaev for example, in which units are the outputs of AveSSrand.py? In which units is the specific heat calculated?

In this example, we take the Kitaev interaction K as the unit of energy since we define |K|=|J0x|=|J1y|=|J1z|=1 in stan.in. Thus, energy E and temperature T are measured by the unit of K. The specific heat C_hphi is calculated as C_hphi=(<E^2>-<E>^2)/(T^2). Thus, to obtain the specific heat in the unit of energy/Kelvin, it is necessary to divide C_hphi by the Boltzmann constant as C (energy/Kelvin) = C_hphi (energy^2)/k_B (energy/Kelvin).

  1. Is the temperature range and step in temperature for finite temperature calculations a parameter that one can choose? I.e. could the sampling be made denser around specific temperatures of interest, e.g. around a temperature where a phase transition is expected?

In the canonical TPQ (cTPQ) method, it is possible to carry out such sampling by changing the incremental width of the imaginary time evolution. However, HPhi only supports cases where the incremental width of the imaginary time evolution is constant, so it is not possible to perform such calculations at the moment.

I hope that these answers will be helpful to you.

abehersan commented 2 months ago

Closed as it was very clearly answered!