The Fermi surface is a function that calculates the iso-energy surface of a given energy level. If the given energy level is the Fermi energy, then it will plot the Fermi surface.


You can find an example of how to calculate the Fermi surface of Copper in the examples/Cu folder.

The Input file is:

    nspin                  1
    package                ABACUS
    fermi_energy           Auto
    fermi_energy_unit      eV
    HR_route               data-HR-sparse_SPIN0.csr
    SR_route               data-SR-sparse_SPIN0.csr
    HR_unit                Ry
    rR_unit                Bohr
    max_kpoint_num         8000

    lattice_constant       6.91640 
    lattice_constant_unit  Bohr
    0.50	0.50	0.00
    0.50	0.00	0.50
    0.00	0.50	0.50

    temperature            0
    electron_num           11
    grid                   50 50 50
    epsilon                1e-4

    bar                    1e-5
    kpoint_mode            mp
    k_start                0 0 0
    k_vect1                1 0 0
    k_vect2                0 1 0
    k_vect3                0 0 1
    mp_grid                50 50 50

bar: The max tolerable error bar for the Fermi surface.

nbands: If you know the energy band range where the Fermi energy is located, you can set this parameter to speed up the calculation. There are two numbers in total, indicating the range of the energy band. The default value is 0 0, that is, all energy bands are considered.

For the k point setting of this function, please refer to the kpoint_mode module.

After the task calculation is completed, there will be two files in the Out/Fermi_Surface folder, namely fermi_surface_kpt.dat and plot_fermi_surface.py, corresponding to the k-point found on the Fermi surface and a plotting script.

NOTE: To visualize iso-energy surface at specific energy levels, the fermi_energy parameter in INPUT_PARAMETERS can be customized.