w90_types Module

Definition of types encapsulating various quantities, data and parameters. Variables are grouped according to physical meaning and their use in the Wannier90 project.

Here are defined types used by both wannier90.x and postw90.x. Types specific to wannier90.x (not used by postw90.x) are defined in wannier90_types.F90. Types specific to postw90.x (not used by wannier90.x) are defined in postw90/postw90_types.F90.


Uses

  • module~~w90_types~~UsesGraph module~w90_types w90_types module~w90_constants w90_constants module~w90_types->module~w90_constants

Used by


Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: nmax = 100

Maximum number of stopwatches

integer, public, parameter :: max_shells = 6
integer, public, parameter :: num_nnmax = 12

Derived Types

type, public ::  print_output_type

================================================== Contains variables to control output file formatting and verbosity. ==================================================

Components

Type Visibility Attributes Name Initial
integer, public :: iprint = 1
integer, public :: timing_level = 1
character(len=20), public :: length_unit = 'ang'
real(kind=dp), public :: lenconfac = 1.0_dp

type, public ::  w90_system_type

================================================== Contains physical information about the material being calculated. ==================================================

Components

Type Visibility Attributes Name Initial
integer, public :: num_valence_bands
integer, public :: num_elec_per_state = 2
logical, public :: spinors = .false.

type, public ::  timing_data_type

Data about each stopwatch - for timing routines

Components

Type Visibility Attributes Name Initial
integer, public :: ncalls

Number of times stopwatch has been called

real(kind=DP), public :: ctime

Total time on stopwatch

real(kind=DP), public :: ptime

Temporary record of time when watch is started

character(len=60), public :: label

What is this stopwatch timing

type, public ::  timer_list_type

Components

Type Visibility Attributes Name Initial
type(timing_data_type), public :: clocks(nmax)

Data for the stopwatches

integer, public :: nnames = 0

Number of active stopwatches

logical, public :: overflow = .false.

type, public ::  ws_region_type

Components

Type Visibility Attributes Name Initial
logical, public :: use_ws_distance = .true.
real(kind=dp), public :: ws_distance_tol = 1.e-5_dp

absolute tolerance for the distance to equivalent positions

integer, public :: ws_search_size(3) = 2

maximum extension in each direction of the supercell of the BvK cell to search for points inside the Wigner-Seitz cell

type, public ::  ws_distance_type

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: irdist(:,:,:,:,:)

The integer number of unit cells to shift Wannier function j to put its centre inside the Wigner-Seitz of wannier function i. If several shifts are equivalent (i.e. they take the function on the edge of the WS) they are all listed. First index: xyz, second index: number of degenerate shifts, third and fourth indices: i,j; fifth index: index on the R vector.

real(kind=DP), public, allocatable :: crdist(:,:,:,:,:)

Cartesian version of irdist_ws, in angstrom

integer, public, allocatable :: ndeg(:,:,:)

The number of equivalent vectors for each set of (i,j,R) (that is, loops on the second index of irdist_ws(:,:,i,j,R) go from 1 to wdist_ndeg(i,j,R))

logical, public :: done = .false.

Global variable to know if the properties were already calculated, and avoid recalculating them when the ws_translate_dist function is called multiple times

type, public ::  wannier_data_type

================================================== Contains the centres and spreads of the MLWFs ==================================================

Components

Type Visibility Attributes Name Initial
real(kind=dp), public, allocatable :: centres(:,:)
real(kind=dp), public, allocatable :: spreads(:)

type, public ::  kmesh_input_type

================================================== Contains information that can be provided by the user about determining the kmesh ==================================================

Components

Type Visibility Attributes Name Initial
integer, public :: num_shells = 0

no longer an input keyword higher-order finite difference

integer, public :: max_shells_h
integer, public :: max_shells_aux
integer, public :: num_nnmax_h
integer, public :: higher_order_n = 1
logical, public :: higher_order_nearest_shells = .false.

A simpler algorithm of determining bvectors

logical, public :: kmesh_shell_from_file = .false.

allow specifying b-vector shells from file (for complex cases where the automatic procedure fails)

logical, public :: skip_B1_tests = .false.

do not check the B1 condition

integer, public, allocatable :: shell_list(:)
integer, public :: search_shells = 36
integer, public :: search_supcell_size = 5
real(kind=dp), public :: tol = 0.000001_dp

type, public ::  proj_type

================================================== Contains information that can be provided by the user about the projections ==================================================

Components

Type Visibility Attributes Name Initial
integer, public :: l
integer, public :: m
integer, public :: s
integer, public :: radial = 1
real(kind=dp), public :: site(3)
real(kind=dp), public :: s_qaxis(3) = (/0.0_dp, 0.0_dp, 1.0_dp/)
real(kind=dp), public :: z(3) = (/0.0_dp, 0.0_dp, 1.0_dp/)
real(kind=dp), public :: x(3) = (/1.0_dp, 0.0_dp, 0.0_dp/)
real(kind=dp), public :: zona = 1.0_dp

type, public ::  kmesh_info_type

================================================== Contains derived information about the kmesh ==================================================

Components

Type Visibility Attributes Name Initial
integer, public :: nnh
integer, public :: nntot
integer, public, allocatable :: nnlist(:,:)
integer, public, allocatable :: neigh(:,:)
integer, public, allocatable :: nncell(:,:,:)
integer, public, allocatable :: nnord(:,:)
integer, public, allocatable :: nninv(:,:)
integer, public, allocatable :: nnrev(:,:)
real(kind=dp), public :: wbtot
real(kind=dp), public, allocatable :: wb(:)
real(kind=dp), public, allocatable :: bk(:,:,:)
real(kind=dp), public, allocatable :: bka(:,:)
logical, public :: explicit_nnkpts

nnkpts block is in the input file (allowed only for post-proc setup)

type, public ::  dis_manifold_type

================================================== Contains information about the manifold of states from which the MLWFs are to be disentangled. ==================================================

Components

Type Visibility Attributes Name Initial
real(kind=dp), public :: win_min = -huge(0.0_dp)

lower bound of the disentanglement outer window

real(kind=dp), public :: win_max = huge(0.0_dp)

upper bound of the disentanglement outer window

real(kind=dp), public :: froz_min = -huge(0.0_dp)

lower bound of the disentanglement inner (frozen) window

real(kind=dp), public :: froz_max = huge(0.0_dp)

upper bound of the disentanglement inner (frozen) window

logical, public :: frozen_states = .false.

whether to use energy frozen window, i.e., froz_min/froz_max

real(kind=dp), public :: proj_min = -1.0_dp

lower threshold of the projectability disentanglement, below are discarded (negative = unset: set explicitly or determined automatically via proj_auto)

real(kind=dp), public :: proj_max = -1.0_dp

upper threshold of the projectability disentanglement, equal and above are frozen (negative = unset: set explicitly or determined automatically via proj_auto)

logical, public :: frozen_proj

whether to use projectability frozen window, i.e., proj_min/proj_max

logical, public :: proj_auto = .true.

whether to determine proj_min/proj_max automatically via multi-Otsu thresholding (ignored when proj_min/proj_max are set explicitly)

integer, public :: proj_auto_num_classes = 5

number of classes for the automatic multi-Otsu projectability thresholds

integer, public, allocatable :: ndimwin(:)

number of bands in outer window at each k

integer, public, allocatable :: nfirstwin(:)

index of first band in outer window at each k

logical, public, allocatable :: lwindow(:,:)

type, public ::  atom_data_type

================================================== Contains information about the atoms (and maybe the cell...) of the system being calculated. ==================================================

Components

Type Visibility Attributes Name Initial
real(kind=dp), public, allocatable :: pos_cart(:,:,:)
integer, public, allocatable :: species_num(:)
character(len=maxlen), public, allocatable :: label(:)
character(len=2), public, allocatable :: symbol(:)
integer, public :: num_atoms = 0
integer, public :: num_species = 0

type, public ::  kpoint_path_type

================================================== Contains information that specifies the k-point path for plotting and other purposes. Note: The length of bands_label and the second index of bands_spec_points is twice the number of segments specified by the user. Each pair of special points defines a segment. ==================================================

Components

Type Visibility Attributes Name Initial
integer, public :: num_points_first_segment = 100
character(len=20), public, allocatable :: labels(:)
real(kind=dp), public, allocatable :: points(:,:)
logical, public :: bands_kpt_explicit = .false.
real(kind=dp), public, allocatable :: bands_kpt_frac(:,:)

type, public ::  settings_data

================================================== structure to hold a scalar and array settings ==================================================

Components

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: keyword
character(len=:), public, allocatable :: txtdata
character(len=:), public, allocatable :: c2d(:)
integer, public, allocatable :: i1d(:)
integer, public, allocatable :: i2d(:,:)
integer, public, allocatable :: idata
logical, public, allocatable :: l1d(:)
logical, public, allocatable :: ldata
real(kind=dp), public, allocatable :: r1d(:)
real(kind=dp), public, allocatable :: r2d(:,:)
real(kind=dp), public, allocatable :: rdata

type, public ::  settings_type

================================================== structure to hold input var/values contents of .win file and settings set by library interface ==================================================

Components

Type Visibility Attributes Name Initial
integer, public :: num_entries = 0
integer, public :: num_entries_max = 0
type(settings_data), public, allocatable :: entries(:)
integer, public :: num_lines
character(len=maxlen), public, allocatable :: in_data(:)