# TrialComputeVolume

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 https://doi.org/10.1080/00268970210126619, 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]$$ Accept [Accept] $$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.