namespace rgpot_fehe

Overview

Fe-He embedded-atom potential in gather form. More…

namespace rgpot_fehe {
 
// global functions
 
pure real(wp) function fehe_cutoff(class(fehe_params_t), intent(in) self);
subroutine, public fehe_energy_forces(real(wp), dimension(:, :), intent(in), contiguous positions, integer(ip), dimension(:), intent(in), contiguous atomic_numbers, real(wp), dimension(3, 3), intent(in) cell, type(fehe_params_t), intent(in) par, type(neighbor_table_t), intent(inout) table, real(wp), intent(out) energy, real(wp), dimension(:, :), intent(out), contiguous forces, integer, intent(out) status, character(len=:), intent(out), allocatable errmsg);
 
} // namespace rgpot_fehe

Detailed Documentation

Fe-He embedded-atom potential in gather form.

The energy has three species-dependent pair terms (Fe-Fe, Fe-He, He-He) and two independent embedding channels:

  • a d-band density rho_d, fed only by Fe-Fe pairs and embedded only on Fe atoms through -sqrt(rho_d) + ...;

  • an s-band density rho_s, fed only by Fe-He pairs and embedded on both species through xhep(9) sqrt(rho_s) + ....

He-He pairs feed neither density, so a pure-helium configuration reduces to the bare HFD-B dimer potential.

An embedded-atom sum closes as a gather in three passes, because the force on atom i needs dF/drho at both ends of every pair:

  1. per-atom densities from the full neighbour list;

  2. per-atom embedding energy and dF/drho for both channels;

  3. per-atom force gather, reading dF/drho of i and of each j.

Each pass writes only slot i of its output arrays, so all three run under do concurrent. Energy accrues to per-atom arrays and reduces afterwards.

Global Functions

pure real(wp) function fehe_cutoff(class(fehe_params_t), intent(in) self)

Largest of the five cutoffs, which is what the neighbour table needs. Every pair term re-checks its own cutoff.

subroutine, public fehe_energy_forces(real(wp), dimension(:, :), intent(in), contiguous positions, integer(ip), dimension(:), intent(in), contiguous atomic_numbers, real(wp), dimension(3, 3), intent(in) cell, type(fehe_params_t), intent(in) par, type(neighbor_table_t), intent(inout) table, real(wp), intent(out) energy, real(wp), dimension(:, :), intent(out), contiguous forces, integer, intent(out) status, character(len=:), intent(out), allocatable errmsg)

Energy and forces for positions (3 x natoms) of the species named by atomic_numbers, in cell.