class ComputeAddMultiple : public feasst::TrialCompute

Attempt to add multiple particles.

For a derivation of the acceptance criteria, see TrialComputeMove and TrialComputeAdd for reference. For adding multiple particles i, j, …, z:

 Forward event [reverse event] Probability, $$\pi_{on}$$ [reverse probability, $$\pi_{no}$$] Select insert trial [Select remove trial] $$1/w$$ $$[1/w]$$ Place particle of type i [Delete particle type i] $$1/V$$ $$\left[1/(N_{i}+ \sum_{a=i}^{z}\delta_{ia})\right]$$ Place particle of type j [Delete particle type j] $$1/V$$ $$\left[1/(N_{j}+ \sum_{a=j}^{z}\delta_{ja})\right]$$ … … Place particle of type z [Delete particle type z] $$1/V$$ $$\left[1/(N_{z}+1)\right]$$ Accept [Accept] $$min(1, \chi)$$ $$[min(1, 1/\chi)]$$

where $$\delta_{ab} = 1$$ when the types of particles $$a$$ and $$b$$ are identical. Otherwise, $$\delta = 0$$.

Application of local detailed balance yields the acceptance probability,

$$\chi = e^{-\beta\Delta U}\prod_{a=i}^z\frac{Ve^{\beta\mu_a}} {(N_a+\sum_{b=a}^{z}\delta_{ab})\Lambda^d}$$

This equation was derived from the perspective of the old state. If the new state is the perspective, $$N_a+\sum_{b=a}^{z}\delta_{ab} \rightarrow N_a-\sum_{b=i}^{a-1}\delta_{ab}$$

Public Functions

ComputeAddMultiple(argtype args = argtype())

args:

• shift: macrostate shift (default: -1).

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

Perform the Perturbations and determine acceptance.