mctc_wignerseitz Module

Declaration of the cyclic cluster Wigner-Seitz type, generation, and weight evaluation



Derived Types

type, public ::  wignerseitz_cell

Wigner-Seitz cell and its nearest image translations

Components

Type Visibility Attributes Name Initial
integer(kind=i8), public, allocatable :: itr_list(:)

Flattened atom-pair image offsets

integer, public, allocatable :: nimg(:,:)

Number of images for each atom pair

integer, public, allocatable :: nimg_list(:)

Number of images for each atom pair in flattened storage

integer, public :: nimg_max = 0

Maximum number of images per atom pair

real(kind=wp), public, allocatable :: trans(:,:)

Lattice translation vectors

integer, public, allocatable :: tridx(:,:,:)

Translation indices for each atom pair

integer, public, allocatable :: tridx_list(:)

Flattened translation indices


Subroutines

public subroutine get_pairs(iws, trans, rij, list)

Find the nearest translation images for an interatomic vector

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: iws

Number of nearest images

real(kind=wp), intent(in) :: trans(:,:)

Translation vectors

real(kind=wp), intent(in) :: rij(3)

Interatomic vector

integer, intent(out) :: list(:)

Indices of the nearest translation images

public subroutine get_wignerseitz_weights(self, jat, iat, rij, weight, dwdr, dwdL)

Evaluate smooth weights for competing nearest Wigner-Seitz images

Arguments

Type IntentOptional Attributes Name
type(wignerseitz_cell), intent(in) :: self

Wigner-Seitz cell instance

integer, intent(in) :: jat

Index of examined atom in the Wigner-Seitz image arrays

integer, intent(in) :: iat

Index of reference atom in the Wigner-Seitz image arrays

real(kind=wp), intent(in) :: rij(3)

Cartesian pair vector

real(kind=wp), intent(out) :: weight(:)

Normalized image weights

real(kind=wp), intent(out), optional :: dwdr(:,:)

Weight derivatives with respect to the pair vector

real(kind=wp), intent(out), optional :: dwdL(:,:,:)

Weight derivatives with respect to strain

public subroutine new_wignerseitz_cell(self, mol)

Construct a Wigner-Seitz cell for a molecular structure

Arguments

Type IntentOptional Attributes Name
type(wignerseitz_cell), intent(out) :: self

Wigner-Seitz cell instance

type(structure_type), intent(in) :: mol

Molecular structure data