container type for all variables used by the Wannier90 library
prints a wide variety of simulation parameters to stdout prints a decorative summary of disentanglement/mlwf/plot timings perform disentanglement provides an MPI k-point distribution for codes that don't have one get wannier centers open a file and get the corresponding unit number get a fortran unit number corresponding to standard error get a fortran unit number corresponding to standard output get projection info (after interpreting projector specification strings) get spreads get k' indexes for finite-difference scheme get number of b-vectors (finite-difference points) get g offsets of k' number of excluded bands, for sizing array arg of w90_get_excl_bands list of indices of excluded bands (which may be possibly non-contiguous) optionally read additional input variables from .win file act upon (interpret & setup) options specified by set_option interface whether this build of the library supports MPI performs plot functions transform overlaps and initial projections setup MPI communicator in parallel case setup MPI communicator in parallel case via integer handle to MPI comm set value of Bohr/Angstrom conversion set (pointer to) eigenvalues set (pointer to) m (potentially MPI decomposed by k-points) specify options to the library; set_option is overloaded to accept arguments of various types set (pointer to) u matrix (nw,nw) set (pointer to) optimised (disentangled) u matrix (nb,nb) perform transport functions perform wannierisation
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| logical, | intent(in) | :: | boolarg |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| character(len=*), | intent(in) | :: | text |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| integer, | intent(in) | :: | ival |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| integer, | intent(in) | :: | arr(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| integer, | intent(in) | :: | arr(:,:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| real(kind=dp), | intent(in) | :: | arr(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| real(kind=dp), | intent(in) | :: | arr(:,:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| character(len=*), | intent(in) | :: | arr(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| real(kind=dp), | intent(in) | :: | rval |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| character(len=50), | public | :: | seedname |
base name for reading/writing of files |
|||
| complex(kind=dp), | public, | allocatable | :: | ham_k(:,:,:) |
KS Hamiltonian, takes size (number of WF, number of WF, number of k-points) |
||
| complex(kind=dp), | public, | allocatable | :: | ham_r(:,:,:) |
RS Hamiltonian, takes size (number of WF, number of WF, number of RS-points) |
||
| complex(kind=dp), | public, | pointer | :: | a_matrix(:,:,:) | => | null() |
pointer to matrix "a" (projections), dimensioned (number of bands, number WF, number of k-points) |
| complex(kind=dp), | public, | pointer | :: | m_matrix_local(:,:,:,:) | => | null() |
pointer to rank local part of "m", dimensioned (number of bands, number of bands, FD neighbours, number of k-points on this rank) |
| complex(kind=dp), | public, | pointer | :: | u_matrix(:,:,:) | => | null() |
pointer to matrix "u", dimensionsed (number of WF, number of WF, number of k-points) |
| complex(kind=dp), | public, | pointer | :: | u_matrix_opt(:,:,:) | => | null() |
pointer to matrix "u_matrix_opt", dimensioned (number of bands, number of WF, number of k-points) |
| real(kind=dp), | public, | pointer | :: | eigval(:,:) | => | null() |
pointer to eigenvalue array dimensioned (number of bands, number of k-points) |
| integer, | public, | allocatable | :: | dist_kpoints(:) |
distribution of k-points; dist_kpoints(i) = rank operating on k-point i |
||
| integer, | public, | allocatable | :: | exclude_bands(:) |
index of bands to exclude from the calculation: passed to DFT code to define space for overlaps, projections, etc |
||
| integer, | public, | allocatable | :: | irvec(:,:) | |||
| integer, | public, | allocatable | :: | ndegen(:) | |||
| integer, | public, | allocatable | :: | shift_vec(:,:) | |||
| integer, | public | :: | mp_grid(3) |
Dimensions of the Monkhorst-Pack grid |
|||
| integer, | public | :: | nrpts |
Dimensions of the RS grid |
|||
| integer, | public | :: | num_bands |
Number of bands (greater or equal to number of WFs) |
|||
| integer, | public | :: | num_kpts |
Total number of k-points |
|||
| integer, | public | :: | num_proj | = | 0 |
Number of projectors defined |
|
| integer, | public | :: | num_wann |
Number of WFs |
|||
| integer, | public | :: | optimisation | = | 3 |
Algorithm control (affects memory use/speed) |
|
| integer, | public | :: | rpt_origin | ||||
| logical, | public | :: | calc_only_A | = | .false. | ||
| logical, | public | :: | gamma_only | = | .false. |
Select gamma_only branch of some algorithms |
|
| logical, | public | :: | have_disentangled | = | .false. |
Flag that disentanglment has been performed |
|
| logical, | public | :: | lhasproj | = | .false. |
Flag that projectors are defined |
|
| logical, | public | :: | lsitesymmetry | = | .false. |
Flag that symmetry-adapted WFs are to be calculated |
|
| logical, | public | :: | use_bloch_phases | = | .false. |
Flag to bypass disentanglement |
|
| logical, | public | :: | setup_complete | = | .false. |
Internal flag to indicate completion of setup |
|
| real(kind=dp), | public, | allocatable | :: | fermi_energy_list(:) |
Array of energies around the Fermi energy |
||
| real(kind=dp), | public, | allocatable | :: | kpt_latt(:,:) |
Tabulation of k-points in crystal coordinates |
||
| real(kind=dp), | public, | allocatable | :: | wannier_centres_translated(:,:) | |||
| real(kind=dp), | public | :: | real_lattice(3,3) | ||||
| type(atom_data_type), | public | :: | atom_data | ||||
| type(band_plot_type), | public | :: | band_plot | ||||
| type(dis_control_type), | public | :: | dis_control | ||||
| type(dis_manifold_type), | public | :: | dis_manifold | ||||
| type(dis_spheres_type), | public | :: | dis_spheres | ||||
| type(fermi_surface_plot_type), | public | :: | fermi_surface_data | ||||
| type(ham_logical_type), | public | :: | ham_logical | ||||
| type(kmesh_info_type), | public | :: | kmesh_info | ||||
| type(kmesh_input_type), | public | :: | kmesh_input | ||||
| type(kpoint_path_type), | public | :: | kpoint_path | ||||
| type(output_file_type), | public | :: | output_file | ||||
| type(print_output_type), | public | :: | print_output | ||||
| type(proj_type), | public, | allocatable | :: | proj(:) | |||
| type(proj_type), | public, | allocatable | :: | proj_input(:) | |||
| type(real_space_ham_type), | public | :: | real_space_ham | ||||
| type(select_projection_type), | public | :: | select_proj | ||||
| type(settings_type), | public | :: | settings |
container for input file (.win) data and options set via library interface |
|||
| type(sitesym_type), | public | :: | sitesym | ||||
| type(timer_list_type), | public | :: | timer | ||||
| type(transport_type), | public | :: | tran | ||||
| type(w90_calculation_type), | public | :: | w90_calculation | ||||
| type(w90_comm_type), | public | :: | comm | ||||
| type(w90_physical_constants_type), | public | :: | physics | ||||
| type(w90_system_type), | public | :: | w90_system | ||||
| type(wann_control_type), | public | :: | wann_control | ||||
| type(wannier_data_type), | public | :: | wannier_data | ||||
| type(wannier_plot_type), | public | :: | wann_plot | ||||
| type(wann_omega_type), | public | :: | omega | ||||
| type(wann_omega_type), | public | :: | wann_omega | ||||
| type(ws_region_type), | public | :: | ws_region | ||||
| type(wvfn_read_type), | public | :: | wvfn_read |
Report whether this build of the library supports MPI.
fortran unit number for stdout
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(out) | :: | istdout |
fortran unit number for stderr
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(out) | :: | istdout |
open a (formatted) file and return the corresponding fortran unit number
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(out) | :: | output | |||
| character(len=*), | intent(in) | :: | name |
mechanism to act upon options supplied to the library input is parsed and interpreted (any errors are identified) and the library data structure (variable common_data) is populated ready for use
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data |
instance of library data object, modified here |
||
| character(len=*), | intent(in) | :: | seedname | |||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
mechanism to act upon tokens read from the input ".win" file input is parsed and interpreted (any errors are identified) and the library data structure (variable common_data), already setup by w90_input_setopt, is modified
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
perform disentanglement; assumes library data object is already setup after w90_input_setopt() call no effect if number of bands == number of WF
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
performs a variety of plotting functions
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
performs a variety of transport calculations
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| complex(kind=dp), | intent(inout), | target | :: | m_matrix_local(:,:,:,:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| complex(kind=dp), | intent(inout), | target | :: | u_matrix(:,:,:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| complex(kind=dp), | intent(inout), | target | :: | u_matrix_opt(:,:,:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| real(kind=dp), | intent(in), | target | :: | eigval(:,:) |
used to set the bohr_to_angstrom value as used in the SCF code
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| real(kind=dp), | intent(in) | :: | bohr_to_angstrom |
causes w90 to calculate finite difference neighbour lists
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
probe w90 library for number of finite difference k-point neighbours setup k-mesh (b vectors) if not already done (sets setup_complete)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data |
library data object |
||
| integer, | intent(out) | :: | nn |
nn is the number of neighbours in F.D. scheme |
||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
nn is the number of neighbours in F.D. scheme |
probe w90 library for finite difference k-point neighbour indices setup k-mesh (b vectors) if not already done (sets setup_complete)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data |
library data object |
||
| integer, | intent(out) | :: | nnkp(:,:) |
nnkp must be dimensioned (n_neighbours, n_fbz) |
||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
nnkp must be dimensioned (n_neighbours, n_fbz) |
probe w90 library for the triple of reciprocal lattice translations determining phase in k'= k+b setup k-mesh (b vectors) if not already done (sets setup_complete)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data |
library data object |
||
| integer, | intent(out) | :: | gkpb(:,:,:) |
gkpb must be dimensioned (3,nk,nnb) |
||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
gkpb must be dimensioned (3,nk,nnb) |
probes w90 library for (current) wannier centres
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(in) | :: | common_data |
library data object |
||
| real(kind=dp), | intent(out) | :: | centres(:,:) |
must be allocated with size >= n_wannier |
probes w90 library for (current) wannier spreads
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(in) | :: | common_data |
library data object |
||
| real(kind=dp), | intent(out) | :: | spreads(:) |
must be allocated with size >= n_wannier |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(in) | :: | common_data |
library data object |
||
| integer, | intent(out) | :: | num_excl_bands |
number of excluded bands, for sizing array arg of w90_get_excl_bands |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(in) | :: | common_data |
library data object |
||
| integer, | intent(inout), | allocatable | :: | excl_bands(:) | ||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
must be allocated with size >= num_excl_bands |
probes library data object and returns arrays describing a list of projections projectors defined either in .win file or passed (using same syntax) through w90_setopt array arguments assumed allocated at call array arguments must have length >= number of projectors (checked here)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(in), | target | :: | common_data |
library data object |
|
| integer, | intent(inout) | :: | n |
number of projectors, angular, orbital and spin numbers |
||
| real(kind=dp), | intent(inout) | :: | site(:,:) |
projector origin (kind, site of kind) |
||
| integer, | intent(inout) | :: | l(:) |
number of projectors, angular, orbital and spin numbers |
||
| integer, | intent(inout) | :: | m(:) |
number of projectors, angular, orbital and spin numbers |
||
| integer, | intent(inout) | :: | s(:) |
number of projectors, angular, orbital and spin numbers |
||
| integer, | intent(inout) | :: | rad(:) |
radial function defining projector |
||
| real(kind=dp), | intent(inout) | :: | x(:,:) |
spin quantisation axis, z- an x-axes |
||
| real(kind=dp), | intent(inout) | :: | z(:,:) |
spin quantisation axis, z- an x-axes |
||
| real(kind=dp), | intent(inout) | :: | sqa(:,:) |
spin quantisation axis, z- an x-axes |
||
| real(kind=dp), | intent(inout) | :: | zona(:) |
spin quantisation axis, z- an x-axes |
||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
ierr returned > 0 in case of error |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| integer, | intent(in) | :: | comm |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| integer, | intent(in) | :: | comm |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| integer, | intent(in) | :: | istdout |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| character(len=*), | intent(in) | :: | text |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| logical, | intent(in) | :: | boolarg |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| integer, | intent(in) | :: | arr(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| integer, | intent(in) | :: | arr(:,:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| integer, | intent(in) | :: | ival |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| real(kind=dp), | intent(in) | :: | arr(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| real(kind=dp), | intent(in) | :: | arr(:,:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| character(len=*), | intent(in) | :: | arr(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| character(len=*), | intent(in) | :: | keyword | |||
| real(kind=dp), | intent(in) | :: | rval |
provide a distribution of num_kpts k-points across mpi_size MPI ranks
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(in) | :: | common_data |
library object: only the communicator type is referenced |
||
| integer, | intent(in) | :: | num_kpts |
number of k-points |
||
| integer, | intent(in) | :: | mpi_size |
number of ranks in MPI communicator |
||
| integer, | intent(inout), | allocatable | :: | dist_k(:) |
already allocated array assigned here such that dist_k(i) = rank handling kpt i size and allocation status are tested |
|
| integer, | intent(in) | :: | istdout |
destination for error messages |
||
| integer, | intent(in) | :: | istderr |
destination for error messages |
||
| integer, | intent(out) | :: | ierr |
return code, nonzero in case of error |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data |