class TrialComputeVolume : public feasst::TrialCompute

Attempt to change the volume

The derivation of the acceptance criteria follows a similar procedure as descibed in TrialComputeMove, except with the following differences. See Lecture 9 of Kofke’s CHE 530 course. Note that, following, this implementation makes use of a shell particle. The ideal gas with this algorithm will be \(\beta P\langle V\rangle=N\).

The limiting distribution in the isothermal-isobaric ensemble is

\(\pi_i \propto e^{-\beta U - \beta P V + (N-1) \ln V} dV\)

But if volume is changed in ln units

\(\pi_i \propto e^{-\beta U - \beta P V + N \ln V} d\ln V\)

The transition probabilities are as follows, assuming that this move is coupled with a trial that removes particles with the same selection weight.

Forward event

[reverse event]

Probability, \(\pi_{on}\)

[reverse probability, \(\pi_{no}\)]

Select new volume

[Select old volume]

\(1/\Delta V\)

\([1/\Delta V]\)



\(min(1, \chi)\)

\([min(1, 1/\chi)]\)

Application of local detailed balance yields the acceptance probability, \(\chi\).

\(\frac{e^{-\beta U_o - \beta P V_o + (N-1) \ln V_o}}{\Delta V}min(1, \chi) = \frac{e^{-\beta U_n - \beta P V_n + (N-1) \ln V_n}}{\Delta V}min(1, 1/\chi)\)

\(\chi = e^{-\beta\Delta U - \beta P \Delta V + (N-1) \ln V_n/V_o}\)

And if volume is changed in ln units

\(\chi = e^{-\beta\Delta U - \beta P \Delta V + N \ln V_n/V_o}\)

Public Functions

void perturb_and_acceptance(Criteria *criteria, System *system, Acceptance *acceptance, std::vector<TrialStage*> *stages, Random *random)

Perform the Perturbations and determine acceptance.