Class ConnollyRegion

java.lang.Object
edu.rit.pj.ParallelConstruct
edu.rit.pj.ParallelRegion
ffx.potential.nonbonded.implicit.ConnollyRegion

public class ConnollyRegion extends ParallelRegion
ConnollyRegion uses the algorithms from the AMS/VAM programs of Michael Connolly to compute the analytical molecular surface area and volume of a collection of spherical atoms; thus it implements Fred Richards' molecular surface definition as a set of analytically defined spherical and toroidal polygons.

Numerical derivatives of the volume are available.

Literature references: M. L. Connolly, "Analytical Molecular Surface Calculation", Journal of Applied Crystallography, 16, 548-558 (1983)

M. L. Connolly, "Computation of Molecular Volume", Journal of the American Chemical Society, 107, 1118-1124 (1985)

C. E. Kundrot, J. W. Ponder and F. M. Richards, "Algorithms for Calculating Excluded Volume and Its Derivatives as a Function of Molecular Conformation and Their Use in Energy Minimization", Journal of Computational Chemistry, 12, 402-409 (1991)

Since:
1.0
Author:
Guowei Qi, Michael J. Schnieders
  • Field Details

    • DEFAULT_WIGGLE

      public static final double DEFAULT_WIGGLE
      Default size of a vector to randomly perturb coordinates.
      See Also:
  • Constructor Details

    • ConnollyRegion

      public ConnollyRegion(Atom[] atoms, double[] baseRadius, int nThreads)
      ConnollyRegion constructor.
      Parameters:
      atoms - Array of atom instances.
      baseRadius - Base radius for each atom (no added probe).
      nThreads - Number of threads.
  • Method Details

    • getExclude

      public double getExclude()
    • setExclude

      public void setExclude(double exclude)
    • getProbe

      public double getProbe()
    • setProbe

      public void setProbe(double probe)
    • getSurfaceArea

      public double getSurfaceArea()
    • getVolume

      public double getVolume()
    • getVolumeGradient

      public double[][] getVolumeGradient()
    • init

      public void init(Atom[] atoms, boolean gradient)
      Initialize this VolumeRegion instance for an energy evaluation.

      Currently the number of atoms cannot change.

      Parameters:
      atoms - Array of atoms.
      gradient - Compute the atomic coordinate gradient.
    • run

      public void run()
      Description copied from class: ParallelRegion
      Execute parallel code. All threads of the parallel team call the run() method concurrently.

      The run() method must be implemented in a subclass.

      Specified by:
      run in class ParallelRegion
    • runVolume

      public void runVolume()
      Execute the VolumeRegion with a private, single threaded ParallelTeam.
    • setWiggle

      public void setWiggle(double wiggle)
      Apply a random perturbation to the atomic coordinates to avoid numerical instabilities for various linear, planar and symmetric structures.
      Parameters:
      wiggle - Size of the random vector move in Angstroms.
    • start

      public void start()
      Description copied from class: ParallelRegion
      Perform initialization actions before parallel execution begins. Only one thread calls the start() method.

      The start() method may be overridden in a subclass. If not overridden, the start() method does nothing.

      Overrides:
      start in class ParallelRegion