Gibbs Ensemble MCExamination of Java Code. Molecule Exchange
* Performs a GEMC molecule-exchange trial
private void trialExchange(Phase iPhase, Phase dPhase, Species species) {
Species.Agent iSpecies = species.getAgent(iPhase); //insertion-phase speciesAgent
Species.Agent dSpecies = species.getAgent(dPhase); //deletion-phase species Agent
if(dSpecies.nMolecules == 0) {return;} //no molecules to delete; trial is over
Molecule m = dSpecies.randomMolecule(); //select random molecule to delete
uOld = dPhase.potentialEnergy.currentValue(m); //get its contribution to energy
m.displaceTo(iPhase.randomPosition()); //place at random in insertion phase
uNew = iPhase.potentialEnergy.insertionValue(m); //get its new energy
if(uNew == Double.MAX_VALUE) { //overlap; reject
m.replace(); //put it back
double bFactor = dSpecies.nMolecules/dPhase.volume()//acceptance probability
* iPhase.volume()/(iSpecies.nMolecules+1)
* Math.exp(-(uNew-uOld)/temperature);
if(bFactor > 1.0 || bFactor > rand.nextDouble()) { //accept
iPhase.addMolecule(m,iSpecies); //place molecule in phase
m.replace(); //put it back
public class IntegratorGEMC extends Integrator