Documentation for module kpoint_types

Types and basic routines needed for a kpoint calculation

source: kpoint_types.F
Loading...

public Types:

kpoint_env_p_type
...
kpoint_env_type
Keeps information about a specific k-point
kpoint_sym_type
Keeps symmetry information about a specific k-point
kpoint_type
Contains information about kpoints

public Subroutines/Functions:

Retrieve information from a kpoint environment
SUBROUTINE
kpoint_create (kpoint)
Create a kpoint environment
Create a single kpoint environment
SUBROUTINE
kpoint_release (kpoint)
Release a kpoint environment, deallocate all data
Create a single kpoint symmetry environment
Read the kpoint input section
Write information on the kpoints to output

public Types:

TYPE :: kpoint_env_p_type

...


POINTER :: kpoint_env ...

TYPE :: kpoint_env_type

Keeps information about a specific k-point


INTEGER
:: nkpoint the kpoint index
REAL(dp)
:: wkp weight of this kpoint
REAL(dp),
DIMENSION(3) :: xkp kpoint coordinates in units of b-vector
LOGICAL
:: is_local if this kpoint is calculated on a single thread
DIMENSION(:,:), POINTER :: mos associated MOs (r/i,spin)
DIMENSION(:,:), POINTER :: pmat associated density matrix (r/i,spin)
DIMENSION(:,:), POINTER :: wmat associated energy weighted density matrix (r/i,spin)

TYPE :: kpoint_sym_type

Keeps symmetry information about a specific k-point


LOGICAL
:: apply_symmetry ...
INTEGER
:: nwght kpoint multiplicity
REAL(dp),
DIMENSION(:,:), POINTER :: xkp kpoint coordinates
REAL(dp),
DIMENSION(:,:,:), POINTER :: rot rotation matrices
INTEGER,
DIMENSION(:,:), POINTER :: f0 atom permutation

TYPE :: kpoint_type

Contains information about kpoints


:: kp_scheme Type of kpoint grid
INTEGER,
DIMENSION(3) :: nkp_grid Grid points
REAL(dp),
DIMENSION(3) :: kp_shift Shift of the grid
LOGICAL
:: use_real_wfn real/complex wfn
LOGICAL
:: symmetry use symmetry (atoms) to reduce kpoints
LOGICAL
:: full_grid don't reduce kpoints at all
LOGICAL
:: verbose more output information
REAL(dp)
:: eps_geo accuracy of atom symmetry detection
INTEGER
:: parallel_group_size kpoint group size
INTEGER
:: nkp number of kpoints
REAL(dp),
DIMENSION(:,:), POINTER :: xkp => NULL() kpoint coordinates
REAL(dp),
DIMENSION(:), POINTER :: wkp => NULL() kpoint weights
POINTER :: para_env => NULL() 'global' parallel environment
POINTER :: blacs_env_all => NULL() ...
POINTER :: cart => NULL() 2d distribution of the processors for the kpoints, a column work together on the same kpoint
POINTER :: para_env_full => NULL() the global para env that contains all the kpoints, this is just the cart as para_env
POINTER :: para_env_kp => NULL() parallel environment of the kpoint calculation
POINTER :: para_env_inter_kp => NULL() parallel environment between kpoints
LOGICAL
:: iogrp this kpoint group has the IO processor
INTEGER
:: nkp_groups number of kpoint groups
INTEGER,
DIMENSION(:,:), POINTER :: kp_dist => NULL() kpoints distribution on groups
INTEGER,
DIMENSION(2) :: kp_range kpoints distribution for local processor
POINTER :: blacs_env => NULL() BLACS env for the kpoint group
INTEGER,
DIMENSION(:,:,:), POINTER :: cell_to_index => NULL() ...
DIMENSION(:), POINTER :: sab_nl => NULL() ...
DIMENSION(:), POINTER :: kp_env => NULL() Information for each kpoint
DIMENSION(:), POINTER :: kp_sym => NULL() ...
POINTER :: mpools => NULL() FM matrix pools for kpoint groups

SUBROUTINEget_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, para_env, blacs_env_all, cart, para_env_full, para_env_kp, para_env_inter_kp, blacs_env, kp_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, sab_nl)

Retrieve information from a kpoint environment

Arguments:
POINTER
:: kpoint The kpoint environment
CHARACTER(*),
OPTIONAL
:: kp_scheme Type of kpoint grid
INTEGER,
OPTIONAL
:: nkp_grid(3) Grid points
REAL(dp),
OPTIONAL
:: kp_shift(3) Shift of the grid
LOGICAL,
OPTIONAL
:: symmetry use symmetry (atoms) to reduce kpoints
LOGICAL,
OPTIONAL
:: verbose more output information
LOGICAL,
OPTIONAL
:: full_grid don't reduce kpoints at all
LOGICAL,
OPTIONAL
:: use_real_wfn real/complex wfn
REAL(dp),
OPTIONAL
:: eps_geo accuracy of atom symmetry detection
INTEGER,
OPTIONAL
:: parallel_group_size kpoint group size
INTEGER,
OPTIONAL
:: kp_range(2) kpoints distribution for local processor
INTEGER,
OPTIONAL
:: nkp number of kpoints
REAL(dp),
OPTIONAL, POINTER
:: xkp(:,:) kpoint coordinates in units of b-vector
REAL(dp),
OPTIONAL, POINTER
:: wkp(:) kpoint weights
OPTIONAL, POINTER
:: para_env 'global' parallel environment
OPTIONAL, POINTER
:: blacs_env_all BLACS env for the total environment
OPTIONAL, POINTER
:: cart 2d distribution of the processors for the kpoints, a column work together on the same kpoint
OPTIONAL, POINTER
:: para_env_full the global para env that contains all the kpoints, this is just the cart as para_env
OPTIONAL, POINTER
:: para_env_kp parallel environment of the kpoint calculation
OPTIONAL, POINTER
:: para_env_inter_kp parallel environment between kpoints
OPTIONAL, POINTER
:: blacs_env BLACS env for the kpoint group
OPTIONAL, POINTER
:: kp_env(:) Information for each kpoint
OPTIONAL, POINTER
:: mpools FM matrix pools for kpoint groups
LOGICAL,
OPTIONAL
:: iogrp this kpoint group has the IO processor
INTEGER,
OPTIONAL
:: nkp_groups number of kpoint groups
INTEGER,
OPTIONAL, POINTER
:: kp_dist(:,:) kpoints distribution on groups
INTEGER,
OPTIONAL, POINTER
:: cell_to_index(:,:,:) given a cell triple, returns the real space index
OPTIONAL, POINTER
:: sab_nl(:) neighbourlist that defines real space matrices

SUBROUTINEkpoint_create(kpoint)

Create a kpoint environment

Arguments:
POINTER
:: kpoint All the kpoint information

SUBROUTINEkpoint_env_create(kp_env)

Create a single kpoint environment

Arguments:
POINTER
:: kp_env Single kpoint environment

SUBROUTINEkpoint_release(kpoint)

Release a kpoint environment, deallocate all data

Arguments:
POINTER
:: kpoint The kpoint environment

SUBROUTINEkpoint_sym_create(kp_sym)

Create a single kpoint symmetry environment

Arguments:
POINTER
:: kp_sym ...

SUBROUTINEread_kpoint_section(kpoint, kpoint_section, a_vec)

Read the kpoint input section

Arguments:
POINTER
:: kpoint The kpoint environment
POINTER
:: kpoint_section The input section
REAL(dp),
INTENT(in)
:: a_vec(3,3) ...

SUBROUTINEwrite_kpoint_info(kpoint, dft_section)

Write information on the kpoints to output

Arguments:
POINTER
:: kpoint The kpoint environment
POINTER
:: dft_section DFT section information

private Parameters/Types:

private Types:

TYPE :: kpoint_sym_p_type

...


POINTER :: kpoint_sym ...