Update bosonic_exchange.cpp

updated documentation of reduced/physical beta convention
This commit is contained in:
OfirBlumer
2025-02-27 15:31:08 +02:00
committed by GitHub
parent 4882fe8e8b
commit 4ed7d95bf9

View File

@ -381,16 +381,15 @@ void BosonicExchange::spring_force_interior_bead(double **f) const
double BosonicExchange::prim_estimator()
{
// In the "reduced-beta convention" [e.g. in J. Chem. Phys. 133, 124104 (2010); also J. Chem. Phys. 74, 4078-4095 (1981)],
// In the "reduced-beta convention" [e.g., in J. Chem. Phys. 133, 124104 (2010); also J. Chem. Phys. 74, 4078-4095 (1981)],
// the Boltzmann exponents have the form exp[-(beta/P)H], where H is the classical Hamiltonian of the
// ring polymers. This results in a canonical distribution at P times the physical temperature.
// In contrast, the "physical-beta convention" [e.g. in J. Chem. Phys. 99, 2796-2808 (1993)] uses weights of the form exp(-beta*H),
// In contrast, the "physical-beta convention" [e.g., in J. Chem. Phys. 99, 2796-2808 (1993)] uses weights of the form exp(-beta*H),
// such that the temperature of the canonical ensemble coincides with the physical temperature.
// Notably, the classical Hamiltonians of the two conventions differ, with the spring constant
// in the reduced-beta convention being P times larger than that in the physical-beta convention. Additionally, the reduced-beta convention
// lacks a 1/P prefactor in front of the external potential. The Hamiltonians of the two conventions are related through
// H_physical = H_reduced / P. Note however that the expressions for the various estimators are unaffected by this choice,
// so as the algorithm for bosonic exchange. The code below was designed to be compatible with both conventions,
// H_physical = H_reduced / P. The code below was designed to be compatible with both conventions,
// and the choice of convention only affects a single calculation within it.
// Setting the following boolean variable to false amounts to adopting the reduced-beta convention.
double convention_correction = (physical_beta_convention ? 1 : 1.0 / np);