class TrialAddMultiple : public feasst::Trial

Attempt to add multiple particles. Typically requires the use of a reference index.

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]



Place particle of type i

[Delete particle type i]


\(\left[1/(N_{i}+ \sum_{a=i}^{z}\delta_{ia})\right]\)

Place particle of type j

[Delete particle type j]


\(\left[1/(N_{j}+ \sum_{a=j}^{z}\delta_{ja})\right]\)

Place particle of type z

[Delete particle type z]





\(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}\)


  • particle_type[i]: the i-th type of particle to add. The “[i]” is to be substituted for an integer 0, 1, 2, …

  • TrialStage arguments.