Attempt to add a particle of type “a” (for add) with a bias for site_index_a to be in the aggregation volume (AV) of site_index_t (“t” for target) of a particle of type “t”.

The derivation of the acceptance probability follows that as described in both TrialComputeMove and TrialComputeAdd with the following transition probabilities.

 Forward event [reverse event] Probability, $$\pi_{on}$$ [reverse probability, $$\pi_{no}$$] Select insert trial [Select remove trial] $$1/w$$ $$[1/w]$$ Select particle of type t [Select particle of type t] $$1/N_t$$ $$\left[\frac{1}{N_t+\delta_{ta}} \right]$$ Place site_index_a in AV of site_index_t [Remove site_index_a in AV of site_index_t] $$1/v_{AV}$$ $$[1/N^{s,AV}_a + 1]$$ Accept [Accept] $$min(1, \chi)$$ $$[min(1, 1/\chi)]$$

where $$N_t$$ is the number of particles of type t, $$v_{AV}$$ is the aggregation volume, $$N^{s,AV}_a$$ is the number of sites with site_index_a, in particles of type a, that are in the AV of site_index_t and $$\delta_{ta}$$ is the Kronecker delta as a function of the type index of the target and added particles (i.e., if add and target are of same type, then $$\delta_{ta} = 1$$, otherwise $$\delta_{ta} = 0$$).

Application of local detailed balance yields the acceptance probability

$$\frac{e^{-\beta U_o + \beta\mu_a N_a}}{\Lambda^{dN} w N_t v_{AV}} min(1, \chi) = \frac{e^{-\beta U_n + \beta\mu_a(N_a+1)}}{\Lambda^{d(N+1)}w(N_t + \delta_{ta}) (N^{s,AV}_a+1)}min(1, 1/\chi)$$

$$\chi = \frac{N_t}{N_t+\delta_{ta}} \frac{v_{AV}}{(N^{s,AV}_a + 1)\Lambda^d} e^{-\beta\Delta U + \beta\mu_a}$$

Note that if the add was already performed, and $$\delta_{ta}=1$$ then the equations are altered from the perspective of the old to the new state.

$$\frac{N_t}{N_t + \delta_{ta}} \rightarrow \frac{N_t - \delta_{ta}}{N_t}$$

Public Functions

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

Perform the Perturbations and determine acceptance.