HFPP is a Fortran research code for post-processing a mean-field Hartree-Fock solution of a low-energy Hubbard model. It reads a localized/Wannier-basis model and the fixed-format outputs of a prior Hartree-Fock calculation, then evaluates Green-function and local-force-theorem quantities. Optional functionality includes exchange parameters, spin-wave dispersions, spin-orbit-coupling corrections, and self-consistent linear response (SCLR).
- Green-function contour integration with a rational Fermi-Dirac approximation.
- Local-force exchange calculations and
lf.datoutput. - Curie-Weiss and optional spin-wave calculations.
- SCLR response to spin-orbit coupling, including energy corrections and spin/orbital moments.
- Optional Dzyaloshinskii-Moriya interaction (DMI) calculation from three magnetization directions.
The program entry point is main.f90; the principal modules are green.f90, response.f90, perturb.f90, properties.f90, spinwav.f90, and dmi.f90.
The checked-in Makefile is configured for Intel Fortran and Intel MKL:
makeIt invokes ifort -mkl and uses LAPACK routines. The recipe does not pass an explicit -o hf.x flag, so the generated executable name is compiler- and platform-dependent. After building, run the executable actually produced by the compiler, or add an explicit output name in a local build configuration.
Run the program from a calculation directory containing the following fixed-name files.
| Purpose | Files |
|---|---|
| Control and structure | gflr.in, struct.in |
| Required Hartree-Fock outputs | wav.out, eig.out, bond.out, pot.out, dens.out |
| Spin-wave data, when requested | maglatt.in, bandpath.in |
| SCLR data | sclr_ham.in, sclr_hamso.in, sclr_u.in; or sclr_vso.in in the alternative SOC-input mode; sclr_l.in is needed for orbital moments |
gflr.in is positional. After its heading, it specifies the pole count, contour-point count, Hubbard-site spin, Fermi-Dirac temperature, electron count, exchange and spin-wave flags, then the SCLR flags/options and magnetization angles. See the comments in parameter.f90 and the supplied example before changing it.
For the usual SCLR input mode (soctype = 'r'), the code obtains the external SOC perturbation from the difference between sclr_hamso.in and sclr_ham.in. In the alternative mode (soctype = 'f'), it reads sclr_vso.in directly.
- Run MFHF to generate
wav.out,eig.out,bond.out,pot.out, anddens.out. - Supply an equivalent
struct.inand preparegflr.inplus the desired exchange or SCLR inputs. - Run the executable from that directory and inspect
gf.out. - For SCLR, an initial run with no
sclr_r.outwrites the response tensor. Run again to read that tensor and calculate the SCLR results. - For DMI, perform the required calculations for the x, y, and z magnetization directions; the resulting
forces_x.dat,forces_y.dat, andforces_z.datare combined intodmi.dat.
| Calculation | Main outputs |
|---|---|
| Diagnostics | gf.out, poles.dat, separation.dat, frac.dat, error.dat, path.dat |
| Exchange and spin waves | lf.dat, spinwav.dat |
| SCLR | sclr_r.out, sclr.out |
| DMI | forces_x.dat, forces_y.dat, forces_z.dat, dmi.dat |
Results are written with replacement semantics. Use a separate working directory or preserve outputs before re-running a calculation.
Example/NaFePO contains an SCLR input template for NaFePO. It is not a standalone runnable example: it does not include the required Hartree-Fock output files. In addition, the current code unconditionally reads lf.dat for the Curie-Weiss calculation, so an exchange-enabled run or a compatible pre-existing lf.dat is required even though the supplied gflr.in sets lexch = .false..
- I. V. Solovyev, "Combining DFT and many-body methods to understand correlated materials", Journal of Physics: Condensed Matter 20, 293201 (2008). https://doi.org/10.1088/0953-8984/20/29/293201
- I. V. Solovyev, "Self-consistent linear response for the spin-orbit interaction related properties", Physical Review B 90, 024417 (2014). https://doi.org/10.1103/PhysRevB.90.024417
This project is distributed under the MIT License.