Expand    Collapse   

parsec.f90p:
    Initialization:
  • create_parallel_data (structures.f90p; parallel_data_module)
  • mysecond (timing.f90p) [machine-dependent subroutine]
  • usrinput (usrinputfile.f90p) [Reads in user parameters from parsec.in]
    • create_cluster (structures.f90p) [Allocates memory for type cluster]
    • create_electronic_struct (structures.f90p) [Allocates memory for type electronic_struct]
    • create_grid (structures.f90) [Defines bounds for grid%*]
    • create_pseudo_potential (structures.f90p) [Allocates memory for type pseudo_potential]
    • date_time (wfnsave.f90p) [returns the wall-clock time in absolute seconds]
    • esdf_close (esdf_mod.f90 Pickard's package) [Deallocates necessary variables]
    • esdf_init (esdf_mod.f90 Pickard's package) [Allocates necessary variables]
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • mtrxin (symgen.f90) [Inverts a 3x3 matrix + determinant and trace]
    • molecular_dynamic_turn_on (structures.f90p) [Allocates type molecular_dynamic (mol_dynamic%*)]
    • pbc_turn_on (structures.f90p) [Allocates type pbc_data (pbc%*)]
  • exit_err (exit_err.f90p) [terminates the procs and closes the parsec.out file if exiting upon an error]
    • destroy_cluster (structures.f90p) [Deallocates variables type cluster (clust%*)]
    • destroy_eigen_solver (structures.f90p) [Deallocates variables type eigen_solver (solver%*)]
    • destroy_electronic_struct (structures.f90p) [Deallocates variables type electronic_structure (elec_st%*)]
      • destroy_eigenstate (structures.f90p) [Deallocates variables type eigenstates (eigen%*)]
    • destroy_mixer (structures.f90p) [Deallocates variables type mixer_data (mixer%*)]
    • destroy_molecular_dynamic (structures.f90p) [Deallocates variables type molecular_dynamic (mol_dynamic%*)]
    • destroy_nonloc_pseudo_pot (structures.f90p) [Deallocates variables type nonloc_pseudo_pot (nloc_p_pot%*)]
    • destroy_parallel_data (structures.f90p) [Deallocates variables type parallel_data (parallel%*)]
    • destroy_pbc (structures.f90p) [Deallocates variables type pbc_data (pbc%*)]
    • destroy_potential (structures.f90p)[Deallocates variables type potential (pot%*)]
    • destroy_pseudo_potential (structures.f90p) [Deallocates variables type pseudo_potential (p_pot%*)]
    • destroy_symmetry (structures.f90p) [Deallocates variables type symmetry (symm%*)]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (LIBRARY)
      • flush_ (MPI SGI LIBRARY)
    • MPI_Allreduce (MPI LIBRARY)
    • MPI_Barrier (MPI LIBRARY)
    • MPI_Finalize (MPI LIBRARY)
  • create_movement (structures.f90p; movement_module) [initialization]
  • pseudo (pseudo.f90) [Sets up the pseudopotentials and computes associated quantities]
    • fornberg (fornberg.f90) [Coefficients for the first & second order numerical derivative under the centered finite difference scheme]
    • pseudo_potential_set_mxpot (structures.f90p) [Allocates type potential variables (p_pot%*)]
    • ptable (ptable.f90) [Atomic masses from NIST document SP966]
  • exit_err (exit_err.f90p) [See above]
  • fourier_f (fourier_f.f90) [Performs Fourier filtering in the pseudopotentials & core charge density according to Briggs et al., PRB 54, 14362 (1996)]
    • pbc_set_maxdlqp (structures.f90p) [Allocates memory for pbc%vloc & pbc&dcor]
    • fint (FUNCTION fourier_f.f90) [fint = int_0^infty vql(q) * F_filter(q) * J(ll,q*r) dq]
      • besselj (FUNCTION fourier_f.f90) [Spherical Bessel function of the first kind]
    • dfint (FUNCTION fourier_f.f90) [dfint = (d/dr) fint(r) above]
      • besselj (FUNCTION fourier_f.f90) [Spherical Bessel function of the first kind]
    • fourier_1d (fourier_f.f90) [For an input function vr in real space, computed on a logarithmic grid rr(1:nr)... Not much comments]
      • besselj (FUNCTION fourier_f.f90) [Spherical Bessel function of the first kind]
  • initial (initial.f90) [Initializing various variables, arrays, and files
    • back_to_cell (initial.f90) [Takes care of atoms falling outside the periodic border]
      • mtrxin (symgen.f90) [Inverts a 3x3 matrix + determinant and trace]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
  • exit_err (exit_err.f90p) [See above]
  • MPI_Bcast (MPI library) [multiple]
  • symmetries (symmetries.f90) [Driver routine for the symmetry operation routine symgen]
    • create_symmetry (structures.f90p) [Allocates memory for type symmetry]
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • mtrxin (symgen.f90) [Inverts a 3x3 matrix + determinant and trace]
    • symgen (symgen.f90) [Outputs the number of point group operations, etc]
      • abelian (symgen.f90) [Searches for the Abelian subgroup: C_1, C_s, C_i, C_2, C_2h, C_2v, D_2, and D_2h]
      • atftmt (symgen.f90) [Determines the point group of the crystal]
        • rlv (symgen.f90) [Removes a direct lattice vector from g by operation p]
          • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • mtrxin (symgen.f90) [Inverts a 3x3 matrix + determinant and trace]
      • pgl (symgen.f90) [Determines the point group of the lattice and the crystal system]
        • rlv (symgen.f90) [Removes a direct lattice vector from g by operation p]
          • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
        • rot (symgen.f90) [Defines the generators for the rotation matrices]
      • symchk (symgen.f90) [Checks if the symmetry operations defined by mtrx and tnp really form a group]
      • symm_ident (symgen.f90) [Identifies the symmetry operations]
  • exit_err (exit_err.f90p) [See above]
  • inipbc (inipbc.f90) [Defines reciprocal space information and constructs the reciprocal space]
    • adjust_step (inipbc.f90) [Adjusts the grid spacing according to unit cell length and translation vectors]
      • matvec3 (matvec3.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • g_space (g_space.f90) [Calculates g-vectors (kgv) for lattice points inside a G-grid]
      • dcopy (BLAS) [Copies a vector, x, to a vector, y]CK)
      • matvec3 (matvec3.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • pbc_set_ng (structures.f90p) [Allocates some of the pbc%* variables]
      • pbc_set_nstar (structures.f90p) [Allocates some of the pbc%* variables]
    • mtrxin (mtrxin.f90) [Inverts a 3x3 matrix + determinant and trace]
  • exit_err (exit_err.f90p) [See above]
  • init_var (init_var.f90p) [Define a series of quantities over the processors and Coefficients for numerical derivatives]
    • create_cluster (structures.f90p) [Allocates memory for type cluster]
    • create_electronic_struct (structures.f90p) [Allocates memory for type electronic_struct]
    • create_nonloc_pseudo_pot (structures.f90p) [Allocates memory for type nonloc_pseudo_pot]
    • create_pseudo_potential (structures.f90p) [Allocates memory for type pseudo_potential]
    • create_symmetry (structures.f90p) [Allocates memory for type symmetry]
    • destroy_eigenstate (structures.f90p) [Deallocates memory for type eigenstate]
    • fornberg (fornberg.f90) [Coefficients for the first & second order numerical derivative under the centered finite difference scheme]
    • irrbz (irrbz.f90) [Builds the irreducible wedge of the Brillouin zone given the specification of the Monkhorst-Pack grid]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • translate01 (irrbz.f90) [Translates to (-1,1) or [0,1)]
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • MPI_Allreduce (MPI library)
    • MPI_Bcast (MPI library)
    • pbc_grid_coefs (pbc_grid_coefs.f90) [This routine calculate the coefficients for the laplacian in a general grid that can be non-orthogonal]
      • mtrxin (symgen.f90) [Inverts a 3x3 matrix + determinant and trace]
    • pseudo_potential_set_mxpot (structures.f90p) [Allocate p_pot%* variables]
  • exit_err (exit_err.f90p) [See above]
  • setup (setup.f90p) [Setup a uniform, real space grid, composed of a boundary sphere inside a rectangular box]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • comm_neigh (comm_neigh.f90p) [Counts how many and which rows I need from each processor, etc]
      • MPI_Alltoallv (MPI library)
      • MPI_Barrier (MPI library)
      • lochome (FUNCTION comm_neigh.f90p) [Returns the processor that the global row irow is on]
    • create_group_layout (structures.f90p) [Allocates parallel_data type variables]
    • grid_partition (grid_partition.f90) [Define the distribution of grid points among processors so that each one receives the same number of points]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • grid_set_index (structures.f90p) [Allocates type grid_data]
        • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
          • myflush (myflush.f90p) [makes data written to an external file available to other processes]
            • flush (MPI IBM LIBRARY)
            • flush_ (MPI SGI LIBRARY)
      • grid_set_ist (structures.f90p) [Only comment: distribute points so that the first PEs receive (isize+1) points and the last ones receive (isize)]
      • grid_set_ndim (structures.f90p) [Allocates grid_data type variables]
        • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
          • myflush (myflush.f90p) [makes data written to an external file available to other processes]
            • flush (MPI IBM LIBRARY)
            • flush_ (MPI SGI LIBRARY)
      • grid_set_wedge (structures.f90p) [Allocates grid variables]
        • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
          • myflush (myflush.f90p) [makes data written to an external file available to other processes]
            • flush (MPI IBM LIBRARY)
            • flush_ (MPI SGI LIBRARY)
      • My_Mask (FUNCTION grid_partition.f90)
      • Part (FUNCTION grid_partition.f90) [Split the nwedge-long vector into nnodes equal parts]
      • pbc_set_maxdfft (structures.f90p) [Allocates pbc%vscr2 and pbc%vscr4]
        • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
          • myflush (myflush.f90p) [makes data written to an external file available to other processes]
            • flush (MPI IBM LIBRARY)
            • flush_ (MPI SGI LIBRARY)
      • pisum (comm_neigh.f90p) [Global sum of integer array]
      • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • grid_set_ist (structures.f90p) [Only comment: distribute points so that the first PEs receive (isize+1) points and the last ones receive (isize)]
    • grid_set_ndim (structures.f90p) [Allocates grid_data type variables]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
    • grid_set_wedge (structures.f90p) [Allocates grid variables]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
    • MPI_Allreduce (MPI library)
    • MPI_Barrier (MPI library)
    • MPI_Bcast (MPI library)
    • MPI_Recv (MPI library)
    • MPI_Send (MPI library)
  • exit_err (exit_err.f90p) [See above]
  • create_eigen_solver (structures.f90p; eigen_solver_module) [Allocation of memory, mostly]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
  • electronic_struct_set_charge (structures.f90p) [Allocates density memory]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (LIBRARY)
        • flush_ (LIBRARY)
  • set_mixer (structures.f90p) [Allocates memory to type mixer ]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
  • potential_set_ndim (structures.f90p) [Allocates variables type potential (pot%*)]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
  • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
    • MPI_ABORT (MPI library)
  • setclm (initial.f90) [Calculates clm = (l-m)!/(l+m)!]
  • isolat (isolat.f90) [Checks whether there are insulated atoms]
  • exit_err (exit_err.f90p) [See above]
  • nonloc (nonloc.f90p) [Calculates various quantities associated with the non-local components of the pseudopotential]
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • MPI_Bcast (MPI library)
    • nonloc_pseudo_pot_set_maxnloc (structures.f90p) [Allocates variables nloc_p_pot%*]
    • pisum (comm_neigh.f90p) [Global sum of integer array]
    • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • ylm_cplx (nonloc.f90p) [Calculate the complex combination of spherical harmonics ylm(1:2*lp-1) and their gradients, ylmd(1:3, 1:2*lp-1)]
    • ylm_real (nonloc.f90p) [Calculate the real combination of spherical harmonics ylm(1:2*lp-1) and their gradients, ylmd(1:3, 1:2*lp-1)]
  • exit_err (exit_err.f90p) [See above]
  • upot (upot.f90p) [Calculates various quantities associated with the non-local components of the pseudopotential]
    • contraction (FUNCTION upot.f90p) [Performs the operation Sum_{m,n} A_{m,n} * B _{m,n}, with m,n = 1,...,5 and complex matrices A and B]
    • create_nonloc_pseudo_pot (structures.f90p) [Allocates type nonloc_pseudo_potential]
    • initialize_p_matrices (upot.f90p) [Initializes matrices p3, p4 for the U potential. Liechtenstein et al. 52 R5467 (1995)]
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • MPI_Bcast (MPI library)
    • nonloc_pseudo_pot_set_maxnloc (structures.f90p) [Allocates variables nloc_p_pot%*]
    • pisum (comm_neigh.f90p) [Global sum of integer array]
    • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • ylm_real (nonloc.f90p) [Calculate the real combination of spherical harmonics ylm(1:2*lp-1) and their gradients, ylmd(1:3, 1:2*lp-1)]
  • exit_err (exit_err.f90p) [See above]
  • chkmemory (chkmemory.f90p) [Memory counts are converted to MB and printed out]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
  • corecd (corecd.f) [Core correction Louie et al, Phys. Rev. B 26, 1738 (1982)]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • splint (spline.f90) [Cubic splines from Numerical recipes in Fortran
  • exit_err (exit_err.f90p) [See above]
  • Select boundary conditions
  • ionpbc (ionpbc.f90) [Calculates ionic local potential (vion) on real space mesh for a given ionic configuration (xatm,yatm,zatm)]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • v_first (v_first.f90) [Calculates the local ionic potential in the g-vectors]
    • pot_local (pot_local.f90) [Computes the local potential vscr on the real space using fast fourier transforms]
      • get_address (inipbc.f90) [For input coordinates (i,j,k) in FFT grid, calculate the address and phase associated to these coordinates]
      • cfftw (cfftw.f90p) [interface with FFTW 3.*]
        • dfftw_destroy_plan (FFTW3 LIBRARY)
        • dfftw_execute (FFTW3 LIBRARY)
        • dfftw_plan_dft_3d (FFTW3 LIBRARY)
        • fftw3d_f77_create_plan_ (FFTW3 LIB for SUN)
        • fftw3d_f77_create_plan (FFTW3 LIB)
        • fftwnd_f77_ (FFTW3 LIBRARY for SUN)
        • fftwnd_f77 (FFTW3 LIBRARY)
        • zscal (BLAS)
    • export_function (structures.f90p) [Distributes array parallel%ftmp from master PE to the other processors]
  • ionpot_wire (ionpot_wire.f90) [Version of ionpot for one-dimensional (wire) systems]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • erfc (FUNCTION erfc.f90) [Error function from Kyoto U./Ooura]
    • hartset_wire (hartset_wire.f90p) [Boundary conditions and builder of charge distribution for wire systems]
      • bessel_i (hartset_wire.f90) Bessel functions
        • bessi0 (FUNCTION hardset_wire.f90)
        • bessi1 (FUNCTION hardset_wire.f90)
      • bessel_k (hartset_wire.f90) Bessel functions
        • bessk0 (FUNCTION hardset_wire.f90)
        • bessk1 (FUNCTION hardset_wire.f90)
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
      • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • hpotcg (hpotcg.f90p) [Use Conjugate Gradient method to compute the Hartree Potential]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • cg (cg.f90) [SPARSKIT several basic iterative linear system solvers]
        • bisinit (cg.f90) [Initializes parameters and work arrays]
        • brkdn (FUNCTION cg.f90) [Test whether alpha is zero or an abnormal number]
        • distdot (FUNCTION hpotcg.f90p) [Dot product, MPI version of the BLAS ddot function]
        • stopbis (FUNCTION cg.f90) [Function for determining the stopping criteria]
        • tidycg (cg.f90) [Some common operations required before terminating the CG routines]
      • dcopy (BLAS) [Copies a vector, x, to a vector, y]
      • lapmvs (hpotcg.f90p) [Output is distributed function lapl = -Laplacian(func)]
        • dcopy (BLAS) [Copies a vector, x, to a vector, y]
        • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
      • MPI_Barrier (MPI library)
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
  • ionpot (ionpot.f90) [Sets up the superposition of the LOCAL ionic potentials on the grid]
  • Select Ion-Ion interaction
  • ewald_sum (ewald_sum.f90) [Computes the Ewald contribution to the total energy and forces]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • erfc (FUNCTION erfc.f90) [Error function from Kyoto U./Ooura]
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
  • forceion_wire (forceion_wire.f90) [Same thing as above, in wire geometry]
    • bessel_k (hartset_wire.f90) [Boundary conditions and builder of charge distribution for wire systems]
      • bessk0 (FUNCTION hardset_wire.f90) [Bessel function K0]
      • bessk1 (FUNCTION hardset_wire.f90) [Bessel function K1]
    • expint (FUNCTION forceios_wire.f90)
  • forceion (forceion.f90) [Calculates ionic force contributions and the total nuclear energy]
    • forcept (forcept.f90) [point charges Q and "real" nuclei N ionic force contributions]
  • exit_err (exit_err.f90p) [See above]
  • initchrg (initchrg.f90) [sets up the superposition of the atomic charge densities on the grid]
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
  • restart (restart.f90p) [Reads grid, potential, wave function, energy levels, etc, from a previous calculation]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • (z=d)copy (BLAS) [Copies a vector, x, to a vector, y]
    • eig_adj_size (eigval_CheFSI.f90p) [Adjusts size of eigenstate arrays]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • create_eigenstate (structures.f90p) [mostly allocations of memory]
        • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
          • myflush (myflush.f90p) [makes data written to an external file available to other processes]
            • flush (MPI IBM LIBRARY)
            • flush_ (MPI SGI LIBRARY)
      • destroy_eigenstate (structures.f90p) [Deallocations of memory]
    • eig_e_adj_size (eigval_CheFSI.f90p) [Defines buffer arrays for eigenvectors, eigenvalues, occupancy factors]
    • export_function (structures.f90p) [Distributes array parallel%ftmp from master PE to the other processors]
    • MPI_Barrier (MPI library)
    • MPI_Bcast (MPI library)
    • MPI_Send (MPI library)
  • restart_mpi (restart.f90p) [Processors without access to i/o receive restart information from master PE]
    • eig_adj_size (eigval_CheFSI.f90p) [Adjusts size of eigenstate arrays]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • create_eigenstate (structures.f90p) [mostly allocations of memory]
        • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
          • myflush (myflush.f90p) [makes data written to an external file available to other processes]
            • flush (MPI IBM LIBRARY)
            • flush_ (MPI SGI LIBRARY)
      • destroy_eigenstate (structures.f90p) [Deallocations of memory]
    • eig_e_adj_size (eigval_CheFSI.f90p) [Defines buffer arrays for eigenvectors, eigenvalues, occupancy factors]
    • export_function (structures.f90p) [Distributes array parallel%ftmp from master PE to the other processors]
    • MPI_Bcast (MPI library)
    • MPI_Recv (MPI library)
    • MPI_Barrier (MPI library)
  • exit_err (exit_err.f90p) [See above]
  • MPI_Bcast (MPI library) [multiple]
  • restart_run_format (restart_run_format.f90p) [Reads grid, potential, wave function, energy levels, etc, from a previous calculation, as stored in parsec.format]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • (z=d)copy (BLAS) [Copies a vector, x, to a vector, y]
    • eig_adj_size (eigval_CheFSI.f90p) [Adjusts size of eigenstate arrays]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • create_eigenstate (structures.f90p) [mostly allocations of memory]
        • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
          • myflush (myflush.f90p) [makes data written to an external file available to other processes]
            • flush (MPI IBM LIBRARY)
            • flush_ (MPI SGI LIBRARY)
      • destroy_eigenstate (structures.f90p) [Deallocations of memory]
    • eig_e_adj_size (eigval_CheFSI.f90p) [Defines buffer arrays for eigenvectors, eigenvalues, occupancy factors]
    • export_function (structures.f90p) [Distributes array parallel%ftmp from master PE to the other processors]
    • export_zfunction (structures.f90p) [Distributes complex array parallel%ftmp from master PE to the other processors]
    • MPI_Barrier (MPI library)
    • MPI_Bcast (MPI library)
  • restart_run (restart_run.f90p) [Reads grid, potential, wave function, energy levels, etc, from a previous calculation, as stored in parsec.dat]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • (z=d)copy (BLAS) [Copies a vector, x, to a vector, y]
    • eig_adj_size (eigval_CheFSI.f90p) [Adjusts size of eigenstate arrays]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • create_eigenstate (structures.f90p) [mostly allocations of memory]
        • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
          • myflush (myflush.f90p) [makes data written to an external file available to other processes]
            • flush (MPI IBM LIBRARY)
            • flush_ (MPI SGI LIBRARY)
      • destroy_eigenstate (structures.f90p) [Deallocations of memory]
    • eig_e_adj_size (eigval_CheFSI.f90p) [Defines buffer arrays for eigenvectors, eigenvalues, occupancy factors]
    • export_function (structures.f90p) [Distributes array parallel%ftmp from master PE to the other processors]
    • export_zfunction (structures.f90p) [Distributes complex array parallel%ftmp from master PE to the other processors]
    • MPI_Barrier (MPI library)
    • MPI_Bcast (MPI library)
  • exit_err (exit_err.f90p) [See above]
  • MPI_Barrier (MPI library)
  • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • dcopy or zcopy(BLAS) [Copies a vector, x, to a vector, y]
    • MPI_Allreduce (MPI LIBRARY)
  • mysecond (timing.f90p) [machine-dependent subroutine]
  • rho_har (rho_hart.f90p) [Sets up the Hartree potential and solve Poisson's equation from a known charge density]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • dcopy (BLAS) [Copies a vector, x, to a vector, y]
    • exc_nspn (exc_nspn.f90) [Computes the exchange correlation potential, for the case of a spin-unpolarized calculation]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • gradmvs (hpotcg.f90p) [Operates the Gradient of a distributed function over the grid, using finite differences]
        • dcopy (BLAS) [Copies a vector, x, to a vector, y]
        • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • lapmvs (hpotcg.f90p) [Output is distributed function lapl = -Laplacian(func)]
        • dcopy (BLAS) [Copies a vector, x, to a vector, y]
        • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
      • pbe (pbe.f90) [driver for the PBE subroutines]
        • exchpbe (pbe.f90) [PBE exchange for a spin-unpolarized electronic system]
        • corpbe (pbe.f90) [Official PBE correlation code. K. Burke, May 14, 1996]
          • gcor2 (pbe.f90) [Slimmed down version of gcor used in PW91 routines, to interpolate LSD correlation energy]
      • pw91 (pbe.f90) [PW91 spin-unpolarized functional, extracted from spn_pbe]
        • exchpw91 (spn_pbe.f90) [GGA91 exchange for a spin-unpolarized electronic system]
        • corlsd (spn_pbe.f90) [uniform-gas correlation of Perdew and Wang 1991]
          • spn_gcor (spn_pbe.f90) [Computes the local correlation energy and potential for the Perdew-Wang exchange-correlation scheme]
        • corpw91 (spn_pbe.f90) [PW91 correlation]
      • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • exc_spn (exc_spn.f90) [Computes the exchange correlation potential, for the case of a spin-polarized calculation]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • gradmvs (hpotcg.f90p) [Operates the Gradient of a distributed function over the grid, using finite differences]
        • dcopy (BLAS) [Copies a vector, x, to a vector, y]
        • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • lapmvs (hpotcg.f90p) [Output is distributed function lapl = -Laplacian(func)]
        • dcopy (BLAS) [Copies a vector, x, to a vector, y]
        • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
      • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
      • spn_pbe (spn_pbe.f90) [driver for the PBE subroutines]
        • corlsd (spn_pbe.f90) [uniform-gas correlation of Perdew and Wang 1991]
          • spn_gcor (spn_pbe.f90) [Computes the local correlation energy and potential for the Perdew-Wang exchange-correlation scheme]
        • corpw91 (spn_pbe.f90) [PW91 correlation]
        • exchpw91 (spn_pbe.f90) [gga91 exchange for a spin-unpolarized electronic system]
        • spn_exchpbe (spn_pbe.f90) [PBE exchange for a spin-unpolarized electronic system]
        • spn_corpbe (spn_pbe.f90) [Official PBE correlation code. K. Burke, May 14, 1996]
          • spn_gcor2 (spn_pbe.f90) [Slimmed down version of gcor used in PW91 routines, to interpolate LSD correlation energy]
      • spn_gcor (spn_pbe.f90) [Computes the local correlation energy and potential for the Perdew-Wang exchange-correlation scheme]
    • hartset (hartset.f90) [Computes an effective charge density]
      • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
      • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • setplm (hartset.f90) [Calculates all of the associated Legendre polynomials up to a supplied lpole]
    • hartset_wire (hartset_wire.f90p) [Boundary conditions and builder of charge distribution for wire systems]
      • bessel_i (hartset_wire.f90)
        • bessi0 (FUNCTION hardset_wire.f90)
        • bessi1 (FUNCTION hardset_wire.f90)
      • bessel_k (hartset_wire.f90)
        • bessk0 (FUNCTION hardset_wire.f90)
        • bessk1 (FUNCTION hardset_wire.f90)
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
      • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • hpotcg (hpotcg.f90p) [Use Conjugate Gradient method to compute the Hartree Potential]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • cg (cg.f90) [SPARSKIT several basic iterative linear system solvers]
        • bisinit (cg.f90) [Initializes parameters and work arrays]
        • tidycg (cg.f90) [Some common operations required before terminating the CG routines]
        • brkdn (FUNCTION cg.f90) [Test whether alpha is zero or an abnormal number]
        • stopbis (FUNCTION cg.f90) [Function for determining the stopping criteria]
      • dcopy (BLAS) [Copies a vector, x, to a vector, y]
      • lapmvs (hpotcg.f90p) [Output is distributed function lapl = -Laplacian(func)]
        • dcopy (BLAS) [Copies a vector, x, to a vector, y]
        • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
      • MPI_Barrier (MPI library)
    • MPI_Allreduce (MPI library)
    • potshift (potshift.f90) [Shifts a potential so that its average is zero; for PBC only]
      • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
  • mysecond (timing.f90p) [machine-dependent subroutine]
  • initeigval (eigval_CheFSI.f90p) [blind guess for the number of eigenstates to be computed]
  • mysecond (timing.f90p) [machine-dependent subroutine]
  • myflush (myflush.f90p) [makes data written to an external file available to other processes]
    • flush (MPI IBM LIBRARY)
    • flush_ (MPI SGI LIBRARY)

  • ATOMIC MOVEMENT
    POLARIZABILITY
  • matvec_init (structures.f90p) [Allocates dwvec and zwvec]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • matvec_destroy (structures.f90p)

  • SCF ↓
  • zcalculate_den (calcden.f90z) [calculates the density matrix, used for U potential]
    • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
  • exit_err (exit_err.f90p) [See above]
  • mysecond (timing.f90p) [machine-dependent subroutine]
  • eigval_CheFSI (eigval_CheFSI.f90p) [The core of the program]
    • dcopy (BLAS) [Copies a vector, x, to a vector, y]
    • dscal or zscal (BLAS) [Scales a vector by a constant]
    • eig_adj_size (eigval_CheFSI.f90p) [Adjusts size of eigenstate arrays]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • create_eigenstate (structures.f90p) [mostly allocations of memory]
        • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
          • myflush (myflush.f90p) [makes data written to an external file available to other processes]
            • flush (MPI IBM LIBRARY)
            • flush_ (MPI SGI LIBRARY)
      • destroy_eigenstate (structures.f90p) [Deallocations of memory]
    • eig_e_adj_size (eigval_CheFSI.f90p) [Defines buffer arrays for eigenvectors, eigenvalues, occupancy factors]
    • eigen_sort (eigval_CheFSI.f90p) [sort eigenvalues in ascending order]
    • MPI_Allreduce (MPI library)
    • MPI_Barrier (MPI library)
    • MPI_Bcast (MPI library)
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
    • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • zsubspace (subspace.f90z) [Applies Chebyshev filtered (nonlinear) subspace iteration to compute an orthonormal basis of the wanted principal eigensubspace]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • zcheby_filter (subspace.f90z) [Computes Chebyshev filtered vectors, evec(:,1:sdim) = (Filter)*evec(:,1:sdim)]
        • zmatvec1 (matvec.f90z) [Matrix-vector multiplication]
          • zmatvec_nloc (matvec.f90z) [Calculates K-B dot products over all atoms, and all angular components (l,m)]
            • zplusu (plusu.f90z) [V_u = (U-J)/2 { (delta_m,mp) - 2(n_l,s,m,mp)} |phi_lm)(phi_lm|]
              • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
            • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
            • MPI_Barrier (MPI library)
          • zmatvec_ke (matvec.f90z) [Selects according to "leftover"]
            • zbdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
            • debugmsgint8 (#ifdef 0)
            • MPI_Barrier (MPI library)
            • timer_init (#ifdef 0)
            • timer_print (#ifdef 0)
            • timer_start (#ifdef 0)
            • timer_stop (#ifdef 0)
            • zcopy (BLAS) [Copies a vector, x, to a vector, y]
            • zdiagonalmv1 (matvec.f90z) [No comments!]
            • zdiagonalmv2 (matvec.f90z) [No comments!]
            • zdiagonalmv3 (matvec.f90z) [No comments!]
            • zdiagonalmv4 (matvec.f90z) [No comments!]
            • zdiagonalmv5 (matvec.f90z) [No comments!]
            • zlaplacianmv1 (matvec.f90z) [No comments!]
            • zlaplacianmv2 (matvec.f90z) [No comments!]
            • zlaplacianmv3 (matvec.f90z) [No comments!]
            • zlaplacianmv4 (matvec.f90z) [No comments!]
            • zlaplacianmv5 (matvec.f90z) [Main routine with modulo blk=5 set up]
          • zmatvec_ke_kpt (matvec.f90z) [No comments!]
          • zmatvec_so (zmatvec_so.f90) [Matrix-vector multiplication for the spin-orbit component of pseudopotentials]
            • dcopy (BLAS) [Copies a vector, x, to a vector, y]
            • lsxy (pls.f90p) [No comments!]
              • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
              • MPI_Barrier (MPI library)
            • lzsz (pls.f90p) [No comments!]
              • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
              • MPI_Barrier (MPI library)
            • zmatvec_ke (matvec.f90z) [Selects according to "leftover"]
              • zbdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
              • debugmsgint8 (#ifdef 0)
              • MPI_Barrier (MPI library)
              • timer_init (#ifdef 0)
              • timer_print (#ifdef 0)
              • timer_start (#ifdef 0)
              • timer_stop (#ifdef 0)
              • zcopy (BLAS) [Copies a vector, x, to a vector, y]
              • zdiagonalmv1 (matvec.f90z) [No comments!]
              • zdiagonalmv2 (matvec.f90z) [No comments!]
              • zdiagonalmv3 (matvec.f90z) [No comments!]
              • zdiagonalmv4 (matvec.f90z) [No comments!]
              • zdiagonalmv5 (matvec.f90z) [No comments!]
              • zlaplacianmv1 (matvec.f90z) [No comments!]
              • zlaplacianmv2 (matvec.f90z) [No comments!]
              • zlaplacianmv3 (matvec.f90z) [No comments!]
              • zlaplacianmv4 (matvec.f90z) [No comments!]
              • zlaplacianmv5 (matvec.f90z) [No comments!]
            • zmatvec_ke_kpt (matvec.f90z) [No comments!]
            • zmatvec_nloc (matvec.f90z) [Calculates K-B dot products over all atoms, and all angular components (l,m)]
              • zplusu (plusu.f90z) [V_u = (U-J)/2 { (delta_m,mp) - 2(n_l,s,m,mp)} |phi_lm)(phi_lm|]
                • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
              • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
              • MPI_Barrier (MPI library)
      • zdgks (dgks.f90z) [Gram-Schmidt ortho-normalization of vector basis using DGKS method]
        • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
        • random_array (subspace_sub.f90)
          • dlarnv (LAPACK)
        • zgemv (BLAS)
        • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
        • zscal (LAPACK)
      • zlancz_bound (lancz_bound.f90z) [Applies k steps Lanczos to get the upper bound of abs(eig(A))]
        • my_dsyev (peig_inter.f90z) [Diagonalizes a real symmetric matrix]
          • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
            • myflush (myflush.f90p) [makes data written to an external file available to other processes]
              • flush (MPI IBM LIBRARY)
              • flush_ (MPI SGI LIBRARY)
          • dspev (LAPACK) [Computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix] in packed storage
          • dsyev (LAPACK) [Computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix]
        • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
        • random_array (subspace_sub.f90)
          • dlarnv (LAPACK)
        • random_number (F90)
        • zmatvec1 (matvec.f90z) [Matrix-vector multiplication]
          • zmatvec_nloc (matvec.f90z) [Calculates K-B dot products over all atoms, and all angular components (l,m)]
            • zplusu (plusu.f90z) [V_u = (U-J)/2 { (delta_m,mp) - 2(n_l,s,m,mp)} |phi_lm)(phi_lm|]
              • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
            • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
            • MPI_Barrier (MPI library)
          • zmatvec_ke (matvec.f90z) [Selects according to "leftover"]
            • zbdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
            • debugmsgint8 (#ifdef 0)
            • MPI_Barrier (MPI library)
            • timer_init (#ifdef 0)
            • timer_print (#ifdef 0)
            • timer_start (#ifdef 0)
            • timer_stop (#ifdef 0)
            • zcopy (BLAS) [Copies a vector, x, to a vector, y]
            • zdiagonalmv1 (matvec.f90z) [No comments!]
            • zdiagonalmv2 (matvec.f90z) [No comments!]
            • zdiagonalmv3 (matvec.f90z) [No comments!]
            • zdiagonalmv4 (matvec.f90z) [No comments!]
            • zdiagonalmv5 (matvec.f90z) [No comments!]
            • zlaplacianmv1 (matvec.f90z) [No comments!]
            • zlaplacianmv2 (matvec.f90z) [No comments!]
            • zlaplacianmv3 (matvec.f90z) [No comments!]
            • zlaplacianmv4 (matvec.f90z) [No comments!]
            • zlaplacianmv5 (matvec.f90z) [No comments!]
          • zmatvec_ke_kpt (matvec.f90z) [No comments!]
          • zmatvec_so (zmatvec_so.f90) [Matrix-vector multiplication for the spin-orbit component of pseudopotentials]
            • dcopy (BLAS) [Copies a vector, x, to a vector, y]
            • lsxy (pls.f90p) [No comments!]
              • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
              • MPI_Barrier (MPI library)
            • lzsz (pls.f90p) [No comments!]
              • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
              • MPI_Barrier (MPI library)
            • zmatvec_ke (matvec.f90z) [Selects according to "leftover"]
              • zbdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
              • debugmsgint8 (#ifdef 0)
              • MPI_Barrier (MPI library)
              • timer_init (#ifdef 0)
              • timer_print (#ifdef 0)
              • timer_start (#ifdef 0)
              • timer_stop (#ifdef 0)
              • zcopy (BLAS) [Copies a vector, x, to a vector, y]
              • zdiagonalmv1 (matvec.f90z) [No comments!]
              • zdiagonalmv2 (matvec.f90z) [No comments!]
              • zdiagonalmv3 (matvec.f90z) [No comments!]
              • zdiagonalmv4 (matvec.f90z) [No comments!]
              • zdiagonalmv5 (matvec.f90z) [No comments!]
              • zlaplacianmv1 (matvec.f90z) [No comments!]
              • zlaplacianmv2 (matvec.f90z) [No comments!]
              • zlaplacianmv3 (matvec.f90z) [No comments!]
              • zlaplacianmv4 (matvec.f90z) [No comments!]
              • zlaplacianmv5 (matvec.f90z) [No comments!]
            • zmatvec_ke_kpt (matvec.f90z) [No comments!]
            • zmatvec_nloc (matvec.f90z) [Calculates K-B dot products over all atoms, and all angular components (l,m)]
              • zplusu (plusu.f90z) [V_u = (U-J)/2 { (delta_m,mp) - 2(n_l,s,m,mp)} |phi_lm)(phi_lm|]
                • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
              • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
              • MPI_Barrier (MPI library)
      • my_dsyev (peig_inter.f90z) [Diagonalizes a real symmetric matrix]
        • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
          • myflush (myflush.f90p) [makes data written to an external file available to other processes]
            • flush (MPI IBM LIBRARY)
            • flush_ (MPI SGI LIBRARY)
        • dspev (LAPACK) [Computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix] in packed storage
        • dsyev (LAPACK) [Computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix]
      • my_zheev (peig_inter.f90z) [Diagonalizes a complex symmetric matrix]
        • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
          • myflush (myflush.f90p) [makes data written to an external file available to other processes]
            • flush (MPI IBM LIBRARY)
            • flush_ (MPI SGI LIBRARY)
        • zheev (LAPACK) [computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix]
        • zhpev (LAPACK)
      • zmatvec1 (matvec.f90z) [Matrix-vector multiplication]
        • zmatvec_nloc (matvec.f90z) [Calculates K-B dot products over all atoms, and all angular components (l,m)]
          • zplusu (plusu.f90z) [V_u = (U-J)/2 { (delta_m,mp) - 2(n_l,s,m,mp)} |phi_lm)(phi_lm|]
            • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
          • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
          • MPI_Barrier (MPI library)
        • zmatvec_ke (matvec.f90z) [Selects according to "leftover"]
          • zbdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
          • debugmsgint8 (#ifdef 0)
          • MPI_Barrier (MPI library)
          • timer_init (#ifdef 0)
          • timer_print (#ifdef 0)
          • timer_start (#ifdef 0)
          • timer_stop (#ifdef 0)
          • zcopy (BLAS) [Copies a vector, x, to a vector, y]
          • zdiagonalmv1 (matvec.f90z) [No comments!]
          • zdiagonalmv2 (matvec.f90z) [No comments!]
          • zdiagonalmv3 (matvec.f90z) [No comments!]
          • zdiagonalmv4 (matvec.f90z) [No comments!]
          • zdiagonalmv5 (matvec.f90z) [No comments!]
          • zlaplacianmv1 (matvec.f90z) [No comments!]
          • zlaplacianmv2 (matvec.f90z) [No comments!]
          • zlaplacianmv3 (matvec.f90z) [No comments!]
          • zlaplacianmv4 (matvec.f90z) [No comments!]
          • zlaplacianmv5 (matvec.f90z) [Main routine with modulo 5 set up]
        • zmatvec_ke_kpt (matvec.f90z) [No comments!]
        • zmatvec_so (zmatvec_so.f90) [Matrix-vector multiplication for the spin-orbit component of pseudopotentials]
          • dcopy (BLAS) [Copies a vector, x, to a vector, y]
          • lsxy (pls.f90p) [No comments!]
            • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
            • MPI_Barrier (MPI library)
          • lzsz (pls.f90p) [No comments!]
            • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
            • MPI_Barrier (MPI library)
          • zmatvec_ke (matvec.f90z) [Selects according to "leftover"]
            • zbdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
            • debugmsgint8 (#ifdef 0)
            • MPI_Barrier (MPI library)
            • timer_init (#ifdef 0)
            • timer_print (#ifdef 0)
            • timer_start (#ifdef 0)
            • timer_stop (#ifdef 0)
            • zcopy (BLAS) [Copies a vector, x, to a vector, y]
            • zdiagonalmv1 (matvec.f90z) [No comments!]
            • zdiagonalmv2 (matvec.f90z) [No comments!]
            • zdiagonalmv3 (matvec.f90z) [No comments!]
            • zdiagonalmv4 (matvec.f90z) [No comments!]
            • zdiagonalmv5 (matvec.f90z) [No comments!]
            • zlaplacianmv1 (matvec.f90z) [No comments!]
            • zlaplacianmv2 (matvec.f90z) [No comments!]
            • zlaplacianmv3 (matvec.f90z) [No comments!]
            • zlaplacianmv4 (matvec.f90z) [No comments!]
            • zlaplacianmv5 (matvec.f90z) [No comments!]
          • zmatvec_ke_kpt (matvec.f90z) [No comments!]
          • zmatvec_nloc (matvec.f90z) [Calculates K-B dot products over all atoms, and all angular components (l,m)]
            • zplusu (plusu.f90z) [V_u = (U-J)/2 { (delta_m,mp) - 2(n_l,s,m,mp)} |phi_lm)(phi_lm|]
              • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
            • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
            • MPI_Barrier (MPI library)
      • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
  • mysecond (timing.f90p) [machine-dependent subroutine]
  • myflush (myflush.f90p) [makes data written to an external file available to other processes]
    • flush (MPI IBM LIBRARY)
    • flush_ (MPI SGI LIBRARY)
  • exit_err (exit_err.f90p) [See above]
  • MPI_Allreduce (MPI library)
  • flevel (flevel.f90) [Determines states occupations, based on an input Fermi temperature]
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
    • sortreal (subspace_sub.f90) [Quick sort algorithm]
      • which_xr (subspace_sub.f90) [program uses 'SA' setting]
  • exit_err (exit_err.f90p) [See above]
  • mysecond (timing.f90p) [machine-dependent subroutine]
  • rho_homotopy (newrho.f90p) [Updates the charge density based on the new wave functions use of homotopy relation at the beginning of the SCF]
    • dcopy (BLAS) [Copies a vector, x, to a vector, y]
    • dscal or zscal (BLAS) [Scales a vector by a constant]
    • grid_set_ist (structures.f90p) [Only comment: distribute points so that the first PEs receive (isize+1) points and the last ones receive (isize)]
    • group_reduction (structures.f90p) [Performs a reduction of a function distributed across groups over all processors which share the same set of grid points]
    • MPI_Allreduce
    • MPI_Barrier (MPI library)
    • MPI_Bcast (MPI library)
    • Part (FUNCTION grid_partition.f90) [Split the nwedge-long vector into nnodes equal parts]
    • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • symop_relative [Applies it-th symmetry operation, T, according to the usual rule: T(r) -> tr = M*(r-t)]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
  • symm_scalar (rho_homotopy.f90p) [Symmetrizes a scalar function according to symmetry operations]
    • dcopy (BLAS) [Copies a vector, x, to a vector, y]
    • grid_set_ist (structures.f90p) [Only comment: distribute points so that the first PEs receive (isize+1) points and the last ones receive (isize)]
    • MPI_Allreduce (MPI library)
    • MPI_Barrier (MPI library)
    • MPI_Bcast (MPI library)
    • Part (FUNCTION grid_partition.f90) [Split the nwedge-long vector into nnodes equal parts]
    • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
  • rho_har (rho_hart.f90p) [Sets up the Hartree potential and solve Poisson's equation from a known charge density]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • dcopy (BLAS) [Copies a vector, x, to a vector, y]
    • exc_nspn (exc_nspn.f90) [Computes the exchange correlation potential, for the case of a spin-unpolarized calculation]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • gradmvs (hpotcg.f90p) [Operates the Gradient of a distributed function over the grid, using finite differences]
        • dcopy (BLAS) [Copies a vector, x, to a vector, y]
        • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • lapmvs (hpotcg.f90p) [Output is distributed function lapl = -Laplacian(func)]
        • dcopy (BLAS) [Copies a vector, x, to a vector, y]
        • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
      • pbe (pbe.f90) [driver for the PBE subroutines]
        • exchpbe (pbe.f90) [PBE exchange for a spin-unpolarized electronic system]
        • corpbe (pbe.f90) [Official PBE correlation code. K. Burke, May 14, 1996]
          • gcor2 (pbe.f90) [Slimmed down version of gcor used in PW91 routines, to interpolate LSD correlation energy]
      • pw91 (pbe.f90) [PW91 spin-unpolarized functional, extracted from spn_pbe]
        • exchpw91 (spn_pbe.f90) [GGA91 exchange for a spin-unpolarized electronic system]
        • corlsd (spn_pbe.f90) [uniform-gas correlation of Perdew and Wang 1991]
          • spn_gcor (spn_pbe.f90) [Computes the local correlation energy and potential for the Perdew-Wang exchange-correlation scheme]
        • corpw91 (spn_pbe.f90) [PW91 correlation]
      • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • exc_spn (exc_spn.f90) [Computes the exchange correlation potential, for the case of a spin-polarized calculation]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • gradmvs (hpotcg.f90p) [Operates the Gradient of a distributed function over the grid, using finite differences]
        • dcopy (BLAS) [Copies a vector, x, to a vector, y]
        • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • lapmvs (hpotcg.f90p) [Output is distributed function lapl = -Laplacian(func)]
        • dcopy (BLAS) [Copies a vector, x, to a vector, y]
        • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
      • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
      • spn_pbe (spn_pbe.f90) [driver for the PBE subroutines]
        • corlsd (spn_pbe.f90) [uniform-gas correlation of Perdew and Wang 1991]
          • spn_gcor (spn_pbe.f90) [Computes the local correlation energy and potential for the Perdew-Wang exchange-correlation scheme]
        • corpw91 (spn_pbe.f90) [PW91 correlation]
        • exchpw91 (spn_pbe.f90) [gga91 exchange for a spin-unpolarized electronic system]
        • spn_exchpbe (spn_pbe.f90) [PBE exchange for a spin-unpolarized electronic system]
        • spn_corpbe (spn_pbe.f90) [Official PBE correlation code. K. Burke, May 14, 1996]
          • spn_gcor2 (spn_pbe.f90) [Slimmed down version of gcor used in PW91 routines, to interpolate LSD correlation energy]
      • spn_gcor (spn_pbe.f90) [Computes the local correlation energy and potential for the Perdew-Wang exchange-correlation scheme]
    • hartset (hartset.f90) [Computes an effective charge density]
      • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
      • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • setplm (hartset.f90) [Calculates all of the associated Legendre polynomials up to a supplied lpole]
    • hartset_wire (hartset_wire.f90p) [Boundary conditions and builder of charge distribution for wire systems]
      • bessel_i (hartset_wire.f90)
        • bessi0 (FUNCTION hardset_wire.f90)
        • bessi1 (FUNCTION hardset_wire.f90)
      • bessel_k (hartset_wire.f90)
        • bessk0 (FUNCTION hardset_wire.f90)
        • bessk1 (FUNCTION hardset_wire.f90)
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
      • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • hpotcg (hpotcg.f90p) [Use Conjugate Gradient method to compute the Hartree Potential]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • cg (cg.f90) [SPARSKIT several basic iterative linear system solvers]
        • bisinit (cg.f90) [Initializes parameters and work arrays]
        • tidycg (cg.f90) [Some common operations required before terminating the CG routines]
        • brkdn (FUNCTION cg.f90) [Test whether alpha is zero or an abnormal number]
        • stopbis (FUNCTION cg.f90) [Function for determining the stopping criteria]
      • dcopy (BLAS) [Copies a vector, x, to a vector, y]
      • lapmvs (hpotcg.f90p) [Output is distributed function lapl = -Laplacian(func)]
        • dcopy (BLAS) [Copies a vector, x, to a vector, y]
        • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
      • MPI_Barrier (MPI library)
    • MPI_Allreduce (MPI library)
    • potshift (potshift.f90) [Shifts a potential so that its average is zero; for PBC only]
      • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
  • mysecond (timing.f90p) [machine-dependent subroutine]
  • myflush (myflush.f90p) [makes data written to an external file available to other processes]
    • flush (MPI IBM LIBRARY)
    • flush_ (MPI SGI LIBRARY)
  • totnrg (totnrg.f90) [Determines the total energy of the system, based on Eq. (17) of Chelikowsky & Louie, Phys. Rev. B 29, 3470 (1984)]
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
  • getsre (getsre.f90) [Calculates and reports the regular and charge-weighted self-consistent residual error (SRE)]
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
  • Select mixing with or without spin
  • spinmix (spinmix.f90) [Apparently copies types "pot" to type "mixer" for the spins]
  • anderson_mix (anderson.f90) [mixes the old and new potential for SCF, V. Eyert, J. Comput. Phys. 124, 271(1996)]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • dgesv (LAPACK LIBRARY) [A = P*L*U solve the system of equations A * X = B]
  • genbro (genbro.f90) [Mixes the old and new potential according to the generalized Broyden method (Jain Kronik)]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • dgetrf (LAPACK)
    • dgetri (LAPACK)
    • distdot (FUNCTION hpotcg.f90p) [Dot product, MPI version of the BLAS ddot function]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
  • msecant1_mix (msecant1.f90) [Multisecant methods for mixing, Type-I update on approximate Jacobian]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • qinv (qinv.f90) [Quasi-inverse by Householder QR factorization with column-pivoting]
  • msecant2_mix (msecant2.f90) [Multisecant methods for mixing, Type-II update on approximate Jacobian]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • qinv (qinv.f90) [Quasi-inverse by Householder QR factorization with column-pivoting]
  • msecant3_mix (msecant3.f90) [Multisecant methods for mixing, hybrid update on approximate Jacobian]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • msecant1_mix (msecant1.f90) [Multisecant methods for mixing, Type-I update on approximate Jacobian]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
      • qinv (qinv.f90) [Quasi-inverse by Householder QR factorization with column-pivoting]
    • msecant2_mix (msecant2.f90) [Multisecant methods for mixing, Type-II update on approximate Jacobian]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
      • qinv (qinv.f90) [Quasi-inverse by Householder QR factorization with column-pivoting]
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • qinv (qinv.f90) [Quasi-inverse by Householder QR factorization with column-pivoting]
  • spinunmix (spinunmix.f90) [Copies types "mixer" to type "pot" for the spins]
  • exit_err (exit_err.f90p) [See above]
  • wfnsave (wfnsave.f90p) [Unformatted output for restart]
    • collect_function (structures.f90p) [Collects array parallel%ftmp to master PE]
      • dcopy (BLAS) [Copies a vector, x, to a vector, y]CK)
      • MPI_Gatherv (MPI LIBRARY)
    • date_time (wfnsave.f90p) [returns the wall-clock time in absolute seconds]
    • dcopy or zcopy (BLAS) [Copies a vector, x, to a vector, y]
    • MPI_Bcast (MPI library)
    • MPI_Barrier (MPI library)
  • eigensave (eigensave.f90) [Saves DFT eigenvalues to unit # funit]
    • myflush (myflush.f90p) [Makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
  • destroy_eigen_solver (structures.f90p; eigen_solver_module) [Deallocates memory]
  • create_eigen_solver (structures.f90p; eigen_solver_module) [Allocation of memory, mostly]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
  • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
    • MPI_ABORT (MPI library)
  • pls (pls.f90p) [No comments, related to spin-orbit scalar relativistic pot]
    • create_eigenstate (structures.f90p) [mostly allocations of memory]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
    • destroy_eigenstate (structures.f90p) [Deallocations of memory]
    • eig_e_adj_size (eigval_CheFSI.f90p) [Defines buffer arrays for eigenvectors, eigenvalues, occupancy factors]
    • lsxy (pls.f90p) [No comments!]
      • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
      • MPI_Barrier (MPI library)
    • lzsz (pls.f90p) [No comments!]
      • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
      • MPI_Barrier (MPI library)
    • MPI_Barrier (MPI library)
    • MPI_Bcast (MPI library)
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
    • my_zheev (peig_inter.f90z) [Diagonalizes a complex symmetric matrix]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • zheev (LAPACK) [computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix]
      • zhpev (LAPACK) [computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix in packed storage] (LAPACK)
    • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
  • MPI_Bcast (MPI library) [multiple]
  • SCF ↑
  • mysecond (timing.f90p) [machine-dependent subroutine]
  • zprintdensitymatrix (printdensitymatrix.f90) [Calculates the density matrix, used for wavelets stuff]
  • dipole (dipole.f90) [calculates the total charge and the zeroth and first multipole]
    • symop (symmetries.f90) [symmetry operations in reduced group with translation]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
  • wfnsave_format (wfnsave_format.f90p) [formatted output used for interpolation P.Carrier]
    • collect_function (structures.f90p) [Collects array parallel%ftmp to master PE]
      • dcopy (BLAS) [Copies a vector, x, to a vector, y]CK)
      • MPI_Gatherv (MPI LIBRARY)
    • date_time (wfnsave.f90p) [returns the wall-clock time in absolute seconds]
    • dcopy or zcopy (BLAS) [Copies a vector, x, to a vector, y]
    • MPI_Bcast (MPI library)
    • MPI_Barrier (MPI library)
  • wfnsave (wfnsave.f90p) [Unformatted output for restart]
    • collect_function (structures.f90p) [Collects array parallel%ftmp to master PE]
      • dcopy (BLAS) [Copies a vector, x, to a vector, y]CK)
      • MPI_Gatherv (MPI LIBRARY)
    • date_time (wfnsave.f90p) [returns the wall-clock time in absolute seconds]
    • dcopy or zcopy (BLAS) [Copies a vector, x, to a vector, y]
    • MPI_Bcast (MPI library)
    • MPI_Barrier (MPI library)
  • eigensave (eigensave.f90) [Saves DFT eigenvalues to unit # funit]
    • myflush (myflush.f90p) [Makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
  • polar (polar.f90) [Prints out the electric field direction, total energy, and dipoles, for each of the seven polarizability runs]
    • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
  • MPI_Bcast (MPI library) [multiple]
  • POLARIZABILITY
    Select boundary conditions for forces:
  • forpbc (forpbc.f90) [Computes the local potential contribution to the Hellman-Feynman forces]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [Makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • cfftw (cfftw.f90p) [interface with FFTW 3.*]
      • dfftw_destroy_plan (FFTW3 LIBRARY)
      • dfftw_execute (FFTW3 LIBRARY)
      • dfftw_plan_dft_3d (FFTW3 LIBRARY)
      • fftw3d_f77_create_plan_ (FFTW3 LIB for SUN)
      • fftw3d_f77_create_plan (FFTW3 LIB)
      • fftwnd_f77_ (FFTW3 LIBRARY for SUN)
      • fftwnd_f77 (FFTW3 LIBRARY)
      • zscal (BLAS)
    • collect_function (structures.f90p) [Collects array parallel%ftmp to master PE]
      • dcopy (BLAS) [Copies a vector, x, to a vector, y]CK)
      • MPI_Gatherv (MPI LIBRARY)
    • daxpy (LINPACK)
    • dcopy (BLAS) [Copies a vector, x, to a vector, y]CK)
    • force_loc_pb (force_loc_pb.f) [Computes the local potential contribution to the Hellmann-Feynman forces]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
    • get_address (inipbc.f90) [For input coordinates (i,j,k) in FFT grid, calculate the address and phase associated to these coordinates]
  • forcloc_wire (forcloc_wire.f90) [Calculates the ionic force and total nuclear energy due to the local pseudopotential in wire (1-D)]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • erfc (FUNCTION erfc.f90) [Error function from Kyoto U./Ooura]
    • grad_char (forcloc_wire.f90) [Calculate the characters of the gradient operator]
      • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
    • gradmvs (hpotcg.f90p) [Operates the Gradient of a distributed function over the grid, using finite differences]
      • dcopy (BLAS) [Copies a vector, x, to a vector, y]
      • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
  • forcloc (forcloc.f90) [Calculates the force contribution due to the local component of the local pseudopotential]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
  • forcnloc_u (forcnloc.f90) [Same thing as above, for the U potential]
    • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • symm_forces (symm_forces.f90) [Symmetrizes the set of atomic forces according to symmetry operations]
      • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
  • forcnloc (forcnloc.f90) [Calculates the force term due to the non-local components of the pseudopotential; See Jing et al., Phys. Rev. B 50, 12234 (1994)]
    • forcso (soforc.f90) [No comments! looks like spin-orbit contribution to forces ]
      • flzsz (soforc.f90) [No comments!]
        • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
        • MPI_Barrier (MPI library)
      • flsxy (soforc.f90) [No comments!]
        • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
        • MPI_Barrier (MPI library)
      • MPI_Barrier (MPI library)
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • symm_forces (symm_forces.f90) [Symmetrizes the set of atomic forces according to symmetry operations]
      • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
  • exit_err (exit_err.f90p) [See above]
  • mysecond (timing.f90p) [machine-dependent subroutine]
  • domove (domove.f90) [Steepest descent (done in "domove") or L-BFGS (see "setulb")]
    • back_to_cell (initial.f90) [Takes care of atoms falling outside the periodic border]
      • mtrxin (symgen.f90) [Inverts a 3x3 matrix + determinant and trace]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
    • setulb (lbfgs.f) L-BFGS Wikipedia written by Prof. Nocedal, copyrighted area; Nocedal et al manual; F90 version
      • mainlb (lbfgs.f)
        • active (lbfgs.f)
        • cauchy (lbfgs.f)
          • bmv (lbfgs.f)
          • daxpy (LINPACK)
          • dcopy (LINPACK) [Copies a vector, x, to a vector, y]
          • dscal (LINPACK)
          • hpsolb (lbfgs.f)
        • cmprlb (lbfgs.f)
          • bmv (lbfgs.f)
        • dcopy (LINPACK) [Copies a vector, x, to a vector, y]
        • dpmeps (FUNCTION lbfgs.f)
        • dscal (LINPACK)
        • errclb (lbfgs.f)
        • formk (lbfgs.f)
          • dcopy (LINPACK) [Copies a vector, x, to a vector, y]
          • dpofa (lbfgs.f)
          • dtrsl (LINPACK)
        • formt (lbfgs.f)
          • dpofa (lbfgs.f)
        • freev (lbfgs.f)
        • lnsrlb (lbfgs.f)
          • dcopy (LINPACK) [Copies a vector, x, to a vector, y]
          • dcsrch (lbfgs.f)
            • dcstep (lbfgs.f)
        • matupd (lbfgs.f)
          • dcopy (LINPACK) [Copies a vector, x, to a vector, y]
        • prn3lb (lbfgs.f)
        • prn2lb (lbfgs.f)
        • prn1lb (lbfgs.f)
        • projgr (lbfgs.f)
        • subsm (lbfgs.f)
        • timer (lbfgs.f)
  • myflush (myflush.f90p) [makes data written to an external file available to other processes]
    • flush (MPI IBM LIBRARY)
    • flush_ (MPI SGI LIBRARY)
  • exit_err (exit_err.f90p) [See above]
  • MPI_Bcast (MPI library) [multiple]
  • moldyn (moldyn.f90) [Computes new positions, velocities, and accelerations for the atoms given an equation of motion]
    • back_to_cell (initial.f90) [Takes care of atoms falling outside the periodic border]
      • mtrxin (symgen.f90) [Inverts a 3x3 matrix + determinant and trace]
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • gdev (FUNCTION moldyn.f) [Selects one random number between 0 and 1 from random Gaussian distribution]
      • getrandom (FUNCTION moldyn.f) [Picks element of order "iset" from an array]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
    • random_number (F90)
    • random_seed (F90)
    • system_clock (GNU FORTRAN)
  • MPI_Bcast (MPI library) [multiple]
  • isolat (isolat.f90) [Checks whether there are insulated atoms]
  • exit_err (exit_err.f90p) [See above]
  • nonloc (nonloc.f90p) [Calculates various quantities associated with the non-local components of the pseudopotential]
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • MPI_Bcast (MPI library)
    • nonloc_pseudo_pot_set_maxnloc (structures.f90p) [Allocates variables nloc_p_pot%*]
    • pisum (comm_neigh.f90p) [Global sum of integer array]
    • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • ylm_cplx (nonloc.f90p) [Calculate the complex combination of spherical harmonics ylm(1:2*lp-1) and their gradients, ylmd(1:3, 1:2*lp-1)]
    • ylm_real (nonloc.f90p) [Calculate the real combination of spherical harmonics ylm(1:2*lp-1) and their gradients, ylmd(1:3, 1:2*lp-1)]
  • exit_err (exit_err.f90p) [See above]
  • upot (upot.f90p) [Calculates various quantities associated with the non-local components of the pseudopotential]
    • contraction (FUNCTION upot.f90p) [Performs the operation Sum_{m,n} A_{m,n} * B _{m,n}, with m,n = 1,...,5 and complex matrices A and B]
    • create_nonloc_pseudo_pot (structures.f90p) [Allocates type nonloc_pseudo_potential]
    • initialize_p_matrices (upot.f90p) [Initializes matrices p3, p4 for the U potential. Liechtenstein et al. 52 R5467 (1995)]
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • MPI_Bcast (MPI library)
    • nonloc_pseudo_pot_set_maxnloc (structures.f90p) [Allocates variables nloc_p_pot%*]
    • pisum (comm_neigh.f90p) [Global sum of integer array]
    • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • ylm_real (nonloc.f90p) [Calculate the real combination of spherical harmonics ylm(1:2*lp-1) and their gradients, ylmd(1:3, 1:2*lp-1)]
  • exit_err (exit_err.f90p) [See above]
  • matvec_init (structures.f90p) [Allocates dwvec and zwvec]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • matvec_destroy (structures.f90p)
  • corecd (corecd.f) [Core correction Louie et al, Phys. Rev. B 26, 1738 (1982)]
    • myflush (myflush.f90p) [makes data written to an external file available to other processes]
      • flush (MPI IBM LIBRARY)
      • flush_ (MPI SGI LIBRARY)
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
    • splint (spline.f90) [Cubic splines from Numerical recipes in Fortran
  • exit_err (exit_err.f90p) [See above]
  • Select boundary conditions
  • ionpbc (ionpbc.f90) [Calculates ionic local potential (vion) on real space mesh for a given ionic configuration (xatm,yatm,zatm)]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • v_first (v_first.f90) [Calculates the local ionic potential in the g-vectors]
    • pot_local (pot_local.f90) [Computes the local potential vscr on the real space using fast fourier transforms]
      • get_address (inipbc.f90) [For input coordinates (i,j,k) in FFT grid, calculate the address and phase associated to these coordinates]
      • cfftw (cfftw.f90p) [interface with FFTW 3.*]
        • dfftw_destroy_plan (FFTW3 LIBRARY)
        • dfftw_execute (FFTW3 LIBRARY)
        • dfftw_plan_dft_3d (FFTW3 LIBRARY)
        • fftw3d_f77_create_plan_ (FFTW3 LIB for SUN)
        • fftw3d_f77_create_plan (FFTW3 LIB)
        • fftwnd_f77_ (FFTW3 LIBRARY for SUN)
        • fftwnd_f77 (FFTW3 LIBRARY)
        • zscal (BLAS)
    • export_function (structures.f90p) [Distributes array parallel%ftmp from master PE to the other processors]
  • ionpot_wire (ionpot_wire.f90) [Version of ionpot for one-dimensional (wire) systems]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (MPI IBM LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • erfc (FUNCTION erfc.f90) [Error function from Kyoto U./Ooura]
    • hartset_wire (hartset_wire.f90p) [Boundary conditions and builder of charge distribution for wire systems]
      • bessel_i (hartset_wire.f90) Bessel functions
        • bessi0 (FUNCTION hardset_wire.f90)
        • bessi1 (FUNCTION hardset_wire.f90)
      • bessel_k (hartset_wire.f90) Bessel functions
        • bessk0 (FUNCTION hardset_wire.f90)
        • bessk1 (FUNCTION hardset_wire.f90)
      • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
      • zpsum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
      • symop (symmetries.f90) [Determines the set of existing symmetry operations based on crystallographic systems]
        • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • hpotcg (hpotcg.f90p) [Use Conjugate Gradient method to compute the Hartree Potential]
      • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
        • myflush (myflush.f90p) [makes data written to an external file available to other processes]
          • flush (MPI IBM LIBRARY)
          • flush_ (MPI SGI LIBRARY)
      • cg (cg.f90) [SPARSKIT several basic iterative linear system solvers]
        • bisinit (cg.f90) [Initializes parameters and work arrays]
        • brkdn (FUNCTION cg.f90) [Test whether alpha is zero or an abnormal number]
        • distdot (FUNCTION hpotcg.f90p) [Dot product, MPI version of the BLAS ddot function]
        • stopbis (FUNCTION cg.f90) [Function for determining the stopping criteria]
        • tidycg (cg.f90) [Some common operations required before terminating the CG routines]
      • dcopy (BLAS) [Copies a vector, x, to a vector, y]
      • lapmvs (hpotcg.f90p) [Output is distributed function lapl = -Laplacian(func)]
        • dcopy (BLAS) [Copies a vector, x, to a vector, y]
        • bdxc_as (psum.f90z) [Performs an exchange of boundary information among neighboring processors]
      • MPI_Barrier (MPI library)
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays.]
    • psum (psum.f90z) [Global sum routine using the all_reduce primitive, see Peter Pacheco]
  • ionpot (ionpot.f90) [Sets up the superposition of the LOCAL ionic potentials on the grid]
  • Select Ion-Ion interaction
  • ewald_sum (ewald_sum.f90) [Computes the Ewald contribution to the total energy and forces]
    • alccheck (exit_err.f90p) [Checks allocation and aborts if size too large]
      • myflush (myflush.f90p) [makes data written to an external file available to other processes]
        • flush (LIBRARY)
        • flush_ (MPI SGI LIBRARY)
    • erfc (FUNCTION erfc.f90) [Error function from Kyoto U./Ooura]
    • matvec3 (inipbc.f90) [Performs matrix-vector multiplications in 3-d arrays]
  • forceion_wire (forceion_wire.f90) [Same thing as above, in wire geometry]
    • bessel_k (hartset_wire.f90) [Boundary conditions and builder of charge distribution for wire systems]
      • bessk0 (FUNCTION hardset_wire.f90) [Bessel function K0]
      • bessk1 (FUNCTION hardset_wire.f90) [Bessel function K1]
    • expint (FUNCTION forceios_wire.f90)
  • forceion (forceion.f90) [Calculates ionic force contributions and the total nuclear energy]
    • forcept (forcept.f90) [point charges Q and "real" nuclei N ionic force contributions]
  • exit_err (exit_err.f90p) [See above]
  • ATOMIC MOVEMENT
  • mysecond (timing.f90p) [machine-dependent subroutine]
  • date_time (wfnsave.f90p) [returns the wall-clock time in absolute seconds]
  • exit_err (exit_err.f90p) [See above]