               FMMYUK-uni: Uniform FMM Yukawa Solver 
                         Jingfang Huang
                         Version: Beta

       The FMMYUK library contains contributions from a variety of 
       people, including Jun Jia, Bo Zhang, Ben-Zhuo Lu, and Xiaolin Cheng,
       as well as Leslie Greengard and Vladimir Rokhlin.
           
This directory contains the routines needed for a nonadaptive
fast multipole algorithm for screened Coulomb interactions. 

I. Note:
  1. We assume that all particles are located inside the unit box 
     [-0.5, 0.5]^3.
  2. Currently we only allow approximately 3 digit (nterms=nlambs=9) and 
     6 digit (nterms=nlambs=18) accuracy.

II. Files in this package:

  0. license.txt: GPL 2.0 license and related information.
  1. uniyukdriver.f: a simple driver program invoking the fast multipole 
     algorithm.
  2. fmmuniyuk.f: the main subroutine for the FMM algorithm.
  3. treeuniform.f : subroutines for the uniform octree structure.
  4. yukoperators.f: translation operators and subroutines for the 
     yukawa potential.
  5. parm-uniyuk.h: a header file for the precision of the algorithm,
     and variables for precomputed tables. You can find the parameters
     to change the accuracy of the algorithm (nterms and nlambs).

III. Subroutines from different sources (these files are not covered 
     by the GPL license):
  6. functions.f: functions for calculating the modified Bessel
     functions. These subroutines are from www.netlib.org. 
     Please see each subroutine for the authors and reference
     information.    
  7. yuktable.f: precomputed tables for the exponential expansions.
     These subroutines are based on Yarvin-Rokhlin quadrature. 
     See the file for references and further information.
  8. prini.f: several simple printing routines.
  9. second.f: a subroutine to get the current system time.
      
IV. Acknowledgments:
  Most of these subroutines were developed while I was a student of 
  Professor Leslie Greengard at the Courant Institute of Mathematical
  Sciences at New York University. As indicated above, several subroutines 
  in this release are from Greengard's group and Professor Vladimir 
  Rokhlin's group at Yale University, including those in yuktable.f.
  Their help and encouragement are greatly appreciated.

  The work was supported by the DOE (when I was a PostDoc at Courant),
  grants from NSF (to support my work at UNC at Chapel Hill), and 
  the Center for Theoretical Biological Physics (CTBP) at UCSD (many
  of the codes were rewritten when I was visiting CTBP). It would have
  been impossible for me to finish this beta version release without their 
  support. We are currently looking for collaborators interested
  in FMM applications and collaborators (as well as support) for further
  code development.
 
V. Some suggestions on how to use and/or modify the code:

  1. Check uniyukdriver.f first to understand the variables
     and the calling sequence for the main subroutine in fmmuniyuk.f
  2. If you have never studied the FMM before, we recommend that
     you start from Greengard and Rokhlin's paper on the new
     version of the FMM for the Laplace equation (1997), instead of 
     the new version of FMM for Yukawa interactions.
  3. You can change the following parameters, see uniyukdriver.f
     and parm-uniyuk.h

     NATOMS: number of atoms.
     NTERMS: number of terms in the multipole/local expansion.
     NLAMBS: number of terms in the exponential expansion.
     BETA: the "frequency" of the equation.
     NLEV: number of levels in the octree.

VI. Related packages.
  Packages closely related to this one and also under development include:

  1. Adaptive versions of the present (Yukawa) FMM.
  2. Nonadaptive and adaptive Laplace FMM codes.
  3. Nonadaptive and adaptive low frequency Helmholtz FMM codes.

  The following packages are based on the FMM code.
  4. AFMPB: adaptive FMM solver for the linearized Poisson-Boltzman equation.
            Joint work with Ben-Zhuo Lu, Xiaolin Cheng, and Andrew McCammon 
            at UCSD.
  5. FMMDD: adaptive FMM for dislocation dynamics simulations.
  6. FMMStokes: adaptive FMM for steady Stokes equations.

VII. Contact Information.
  We recommend that you register when you download the FMM solvers.
  We are improving our codes and better versions will be released soon.
  We will email you once new versions become available.

  For information, comments and suggestions, bug reports, please contact

      Jingfang Huang, 
      CB# 3250, Phillips Hall, 
      Department of mathematics,
      University of North Carolina at Chapel Hill, 
      Chapel Hill, NC 27599-3250, USA.
      Email: huang@amath.unc.edu
      Tel: 919-962-9621.

Last Modified: 07/22/2008. 
