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.
| 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 |
================================================== Contains variables to control output file formatting and verbosity. ==================================================
| 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 |
================================================== Contains physical information about the material being calculated. ==================================================
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | num_valence_bands | ||||
| integer, | public | :: | num_elec_per_state | = | 2 | ||
| logical, | public | :: | spinors | = | .false. |
Data about each stopwatch - for timing routines
| 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 | 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 | 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 | 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 |
================================================== Contains the centres and spreads of the MLWFs ==================================================
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | public, | allocatable | :: | centres(:,:) | |||
| real(kind=dp), | public, | allocatable | :: | spreads(:) |
================================================== Contains information that can be provided by the user about determining the kmesh ==================================================
| 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 |
================================================== Contains information that can be provided by the user about the projections ==================================================
| 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 |
================================================== Contains derived information about the kmesh ==================================================
| 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) |
================================================== Contains information about the manifold of states from which the MLWFs are to be disentangled. ==================================================
| 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(:,:) |
================================================== Contains information about the atoms (and maybe the cell...) of the system being calculated. ==================================================
| 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 |
================================================== 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. ==================================================
| 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(:,:) |
================================================== structure to hold a scalar and array settings ==================================================
| 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 |
================================================== structure to hold input var/values contents of .win file and settings set by library interface ==================================================
| 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(:) |