# ComputeAddAVBDivalent¶

class ComputeAddAVBDivalent : public feasst::TrialCompute

Attempt to add a particle of type “t” with site_index_t anywhere in the Domain. Then add a second particle of type “a” with site_index_a in the AV of site_index_t. Finally, add a third particle of type “b” with site_index_a in the AV of site_index_t.

The derivation of the acceptance criteria follows a similar procedure as described in ComputeAddAVB.

 Forward event [reverse event] Probability, $$\pi_{on}$$ [reverse probability, $$\pi_{no}$$] Select insert trial [Select remove trial] $$1/w$$ $$[1/w]$$ Insert site_index_t in box [Remove site_index_t] $$1/V$$ $$1/(N_t + 1 + \delta_{ta} + \delta_{tb})$$ Insert 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 + \delta_{ab})$$ Insert site_index_b in AV of site_index_t [Remove site_index_b in the AV of site_index_t] $$1/v_{AV}$$ $$1/(N^{s,AV}_b + 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

$$\chi = \frac{V}{N_t + 1 + \delta_{ta} + \delta_{tb}} \frac{v_{AV}}{N^{s,AV}_a + 1 + \delta_{ab}} \frac{v_{AV}}{N^{s,AV}_a + 1} \frac{1}{\Lambda^{3d}} e^{-\beta\Delta U + \beta\mu_a + \beta\mu_b + \beta\mu_t}$$

Public Functions

ComputeAddAVBDivalent(const argtype &args = argtype())

args:

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

Perform the Perturbations and determine acceptance.