ComputeAVB4¶

class ComputeAVB4 : public feasst::TrialComputeMove

AVB4 is an extension of AVB3 as described in the following manuscript:

https://doi.org/10.1021/jp012209k

But in AVB4, in $$\rightarrow$$ out and out $$\rightarrow$$ in moves are not considered. This is because AVB2 handles these moves more efficiently without having to select a third particle. One may also allow the $$j,k$$ particles to be either the same or to have overlapping aggregation volumes (AV).

The AVB4 algorithm proceeds as follow. First, a particle of type “j” is selected with a site with index site_index_j. Second, a particle of type “k” is selected with a site with index site_index_k. With probability, $$P_{bias}$$, select site_index_a in the AV of site_index_k and place it in the AV of site_index_j. Otherwise, select site_index_a in the AV of site_index_j and place it in the AV of site_index_k.

For this type of move, the potential energy of the system, U, is the only thermodynamic variable which changes. Thus, whether in the canonical ensemble or otherwise, the probability distribution,

$$\pi_i \propto e^{-\beta U_i}$$

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

 Forward event [reverse event] Probability, $$\pi_{on}$$ [reverse probability, $$\pi_{no}$$] Select a particle of type j and a particle of type k [Select a particle of type j and a particle of type k] $$1/(N_j N_k)$$ $$[1/(N_j N_k)]$$ Select j $$\rightarrow$$ k trial type [Select k $$\rightarrow$$ j trial type] $$1 - P_{bias}$$ $$[P_{bias}]$$ Select site_index_a in AV of site_index_j [Select site_index_a in AV of site_index_k $$1/N^{s,AV,j}_a$$ $$[1/(N^{s,AV,k}_a + \Delta_{ak})$$] Place site_index_a in AV of site_index_k [Place site_index_a in AV of site_index_j] $$1/v^k_{AV}$$ $$[1/v^j_{AV}]$$ Accept [Accept] $$min(1, \chi)$$ $$[min(1, 1/\chi)]$$

where $$N_t$$ is the number of particles of type $$t$$, $$t$$ is either $$j$$ or $$k$$, $$v^t_{AV}$$ is the aggregation volume of particles of type t, $$N^{s,AV,t}_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_{ak}=1$$, except when site_index_a is in the AV of site_index_k. In that special case, $$\Delta_{ak}=0$$

Application of local detailed balance yields the following acceptance probability for the $$j \rightarrow k$$ move:

$$\chi_ = \frac{P_{bias}}{1 - P_{bias}} \frac{N^{s,AV,j}_a}{N^{s,AV,k}_a + \Delta_{ak}} \frac{v^k_{AV}}{v^j_{AV}} e^{-\beta\Delta U}$$.

The reverse, $$k \rightarrow j$$ acceptance probability is obtained by simply perturbing the $$j,k$$ indices and inverting the bias probability ratio as follows:

$$\chi_ = \frac{1 - P_{bias}}{P_{bias}} \frac{N^{s,AV,k}_a}{N^{s,AV,j}_a + \Delta_{aj}} \frac{v^j_{AV}}{v^k_{AV}} e^{-\beta\Delta U}$$.

For ease of implementation, we confine ourselves to the case where j and k are selected from the same pool of particles (e.g., types, or group, or all). Thus, there is no need to select j->k or k->j. And because j and k are equivalent types, both terms which involve $$P_{bias}$$ and terms which involve $$v_{AV}$$ do not contribute. The resulting acceptance probability for this j->k trial is

$$\chi_ = \frac{N^{s,AV,j}_a}{N^{s,AV,k}_a + \Delta_{ak}} e^{-\beta\Delta U}$$.

Public Functions

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

Perform the Perturbations and determine acceptance.