Source Code


This page contains the source code for the gcmc program. Each source file is listed followed by a brief description of what it contains.

Notes about the code

source.tar The source code in a tar file.
add.f90 Subroutine to attempt a particle creation.
alpha_ch.f90 Subroutine to attempt an "inflation" or "deflation" of a molecule. Necessary for expanded ensemble simulations.
amoeba.f90 Numerical recipies routine. It is used to adjust the temperature and activity of Hamiltonians to mimic the behavior of the first Hamiltonian.
amotry.f90 Numerical recipies routine used with amoeba.f90.
banner.f90 Subroutine to write header information to the results file.
bigread.f90 Subroutine to read in most information.
bondl.f90 Subroutine to find a bondlength for beads that are attached via a harmonic stretching potential.
com.f90 Subroutine to determine the center of mass of a molecule.
cone.f90 Subroutine to place a bead a fixed distance and bond angle from existing beads.
cranksh.f90 Subroutines to perform crank shaft and bending moves on reservoir molecules.
create.f90 Subroutine to create a system from scratch or from an existing configuration.
displace.f90 Subroutine to displace or rotate a molecule.
e6interact.f90 Subroutine to calculate the LJ or exp-6 energy of the entire system.
e6molecule.f90 Subroutine to calculate the LJ or exp-6 energy due to a single molecule.
erf.f90 Numerical recipies routine to calculate the error function.
erfc.f90 Numerical recipies routine to calculate the complementary error function.
fourier_move.f90 Subroutine to calculate the Fourier space energy of the Ewald summation for point charges.
fourier_setup.f90 Subroutine to setup the arrays needed to calculate the Fourier space energy of the Ewald summation.
gcmc.f90 The main routine to run the gcmc program.
grow.f90 Subroutine to grow a molecule using configurational-bias.
intrabend.f90 Subroutine to calculate the harmonic bending energy of three consecutive beads.
intratorsion.f90 Subroutine to calculate the torsion energy of four consecutive beads.
ionmolecule.f90 Subroutine to calculate the intramolecular Coulombic energy between nonbonded beads.
littleread.f90 Subroutine to read input data used to allocate arrays before bigread is called.
lrcorr.f90 and
lrcorr.dat
Subroutine to calculate the long-range correction to the LJ or exp-6 energy.
methods.f90 Contains different growth methods used by grow to generate molecules.
newmaxima.f90 Subroutine to adjust the maximum particele displacement and rotation.
outfold.f90 Subroutine to unfold a molecule's coordinates from periodic boundary conditions.
predict.f90 Subroutine to adjust the temperature and activity of the Hamiltonians to match the f(N) distribution of the first Hamiltonian.
ran2.f90 Random number generator from numerical recipies.
realinteract.f90 Subroutine to calculate the real space energy of the Ewald summation for the entire system.
realmolecule.f90 Subroutine to calculate the real space energy of the Ewald summation due to a single molecule.
regrow.f90 Subroutine to attempt an internal regrowth move for flexible molecules.
remove.f90 Subroutine to attempt a particle annihilation.
resmethods.f90 Contains growth methods used to insert molecules in conjunction with the reservoir.
resread.f90 Subroutine to read information necessary for the reservoir.
ressetup.f90 Subroutine to setup the reservoirs at the beginning of the program.
resupdate.f90 Subroutine to update the reservoirs during the simulation.
selfmolecule.f90 Subroutine to calculate the self energy of the Ewald summation.
sphere.f90 Subroutine to determine a random location on the surface of a sphere.
store.f90 Subroutine to write the configuration to disk.
surf_move.f90 Subroutine to calculate the surface term of the Ewald summation.
weights.f90 Subroutines to adjust the Hamiltonian and expanded ensemble weights.
writedata.f90 Subroutine to write initial information to the results file.
writehist.f90 Subroutine to write the particle number-energy (f(N,E)) histogram to disk.
writeresults.f90 Subroutine to write the results to the results file at the end of an equilibration or production phase.
zbrent.f90 Root finding routine from numerical recipies.


 

Porting the code to the UNIX environment

  1. Place all the source code files in a single directory.
  2. Run the routine pc2unix_all to comment and uncomment the appropriate lines of source code. The script pc2unix and the files ms_c, al_c and al_unc needed to run pc2unix_all.
  3. Use the following makefile to build the program.
  4. The UNIX version of the code uses the system function etime for timing purposes. If the system you're using does not have this function, you'll have to make the appropriate changes in the code.