The end of line comments were removed from the code because they are not standard Fortran. The array names are a bit cryptic due to the six character limit in standard FORTRAN -- the comments included here explain what the names mean. If you need to run larger problems than the dimension statements in the code allow, simply change the dimensions in all the relevant parameter statements and recompile. However, dimensions associated with the atom and phase shift codes, e.g. the number of r-mesh points and the max number of angular momentum levels should NOT be changed.
c These names have been checked with all current feff code.
c Changing the common names in the future may be a good idea.
c June 12, 1992
parameter (nphx = 7) !max number of unique potentials (potph)
parameter (npotx = nphx) !max number of unique pots (genfmt, paths)
parameter (nfrx = nphx) !max number of free atom types
parameter (novrx = 8) !max number of overlap shells
parameter (natx = 250) !max number of atoms in problem
parameter (ltot = 24) !max number of ang mom (arrays 1:ltot+1)
parameter (nrptx = 250) !Loucks r grid used through overlap
parameter (nex = 100) !Number of energy points genfmt, etc.
parameter (lamtot=15) !Max number of distinct lambda's for genfmt
!15 handles iord 2 and exact ss
parameter (mtot=2,ntot=2) !vary mmax and nmax independently
parameter (legtot=7) !max number of legs, used in genfmt,
!NOT in path finder
parameter (npatx = 8) !max number of path atoms, used in path
!finder, NOT in genfmt
c Notes:
c nat number of atoms in problem
c nph number of unique potentials
c nfr number of unique free atoms
c ihole hole code of absorbing atom
c iph=0 for central atom
c ifr=0 for central atom
c Specific atom input data
dimension iphat(natx) !given specific atom, which unique pot?
dimension rat(3,natx) !cartesian coords of specific atom
c Unique potential input data
dimension iatph(0:nphx) !given unique pot, which atom is model?
!(0 if none specified for this unique pot)
dimension ifrph(0:nphx) !given unique pot, which free atom?
dimension xnatph(0:nphx) !given unique pot, how many atoms are there
!of this type? (used for interstitial calc)
character*6 potlbl(0:nphx) !label for user convenience
dimension folp(0:nphx) !overlap factor for rmt calculation
dimension novr(0:nphx) !number of overlap shells for unique pot
dimension iphovr(novrx,0:nphx) !unique pot for this overlap shell
dimension nnovr(novrx,0:nphx) !number of atoms in overlap shell
dimension rovr(novrx,0:nphx) !r for overlap shell
c Free atom data
dimension ion(0:nfrx) !ionicity, input
dimension iz(0:nfrx) !atomic number, input
c ATOM output
c Note that ATOM output is dimensioned 251, all other r grid
c data is set to nrptx, currently 250
dimension rho(251,0:nfrx) !density*4*pi
dimension vcoul(251,0:nfrx) !coulomb potential
c Overlap calculation results
dimension edens(nrptx,0:nphx) !overlapped density*4*pi
dimension vclap(nrptx,0:nphx) !overlapped coul pot
dimension vtot (nrptx,0:nphx) !overlapped total potential
c Muffin tin calculation results
dimension imt(0:nphx) !r mesh index just inside rmt
dimension inrm(0:nphx) !r mesh index just inside rnorman
dimension rmt(0:nphx) !muffin tin radius
dimension rnrm(0:nphx) !norman radius
c PHASE output
complex*16 eref(nex) !interstitial energy ref
complex*16 ph(nex,ltot+1,0:nphx) !phase shifts
dimension lmax(0:nphx) !number of ang mom levels
common /lambda/
4 mlam(lamtot), !mu for each lambda
5 nlam(lamtot), !nu for each lambda
1 lamx, !max lambda in problem
2 laml0x, !max lambda for vectors involving absorbing atom
3 mmaxp1, nmax !max mu in problem + 1, max nu in problem
c Note that leg nleg is the leg ending at the central atom, so that
c ipot(nleg) is central atom potential, rat(nleg) position of
c central atom.
c Central atom has ipot=0
c For later convenience, rat(,0) and ipot(0) refer to the central
c atom, and are the same as rat(,nleg), ipot(nleg).
c text and title arrays include carriage control
character*80 text, title
character*6 potlbl
common /str/ text(40), !text header from potph
1 title(5), !title from paths.dat
1 potlbl(0:npotx) ! potential labels for output
complex*16 ph, eref
common /pdata/
1 ph(nex,ltot+1,0:npotx), !complex phase shifts,
1 !central atom ipot=0
1 rat(3,0:legtot), !position of each atom, code units (bohr)
1 eref(nex), !complex energy reference
1 em(nex), !energy mesh
1 ri(legtot), beta(legtot), eta(legtot), !r, beta, eta for each leg
1 deg, rnrmav, xmu, edge, !(output only)
1 lmax(nex,0:npotx), !max l with non-zero phase for each energy
1 ipot(0:legtot), !potential for each atom in path
1 iz(0:npotx), !atomic number (output only)
1 ltext(40), ltitle(5), !length of each string
1 nsc, nleg, !nscatters, nlegs (nleg = nsc+1)
1 npot, ne, !number of potentials, energy points
1 ik0, !index of energy grid corresponding to k=0 (edge)
1 ipath, !index of current path (output only)
1 ihole, !(output only)
1 l0, il0, !lfinal and lfinal+1 (used for indices)
1 lmaxp1, !largest lmax in problem + 1
1 ntext, ntitle !number of text and title lines