Procedure | Location | Procedure Type | Description |
---|---|---|---|

berry_get_imf_klist | w90_berry | Subroutine | Calculates the Berry curvature traced over the occupied states, -2Im[f(k)] [Eq.33 CTVR06, Eq.6 LVTS12] for a list of Fermi energies, and stores it in axial-vector form |

berry_get_imfgh_klist | w90_berry | Subroutine | Calculates the three quantities needed for the orbital magnetization: |

berry_get_kubo_k | w90_berry | Subroutine | Contribution from point k to the complex interband optical conductivity, separated into Hermitian (H) and anti-Hermitian (AH) parts. Also returns the joint density of states |

berry_main | w90_berry | Subroutine | Computes the following quantities: |

boltzwann_main | w90_boltzwann | Subroutine | This is the main routine of the BoltzWann module. It calculates the transport coefficients using the Boltzmann transport equation. |

calcTDFandDOS | w90_boltzwann | Subroutine | This routine calculates the Transport Distribution Function $$\sigma_{ij}(\epsilon)$$ (TDF) in units of 1/hbar^2 * eV*fs/angstrom, and possibly the DOS. |

check_and_sort_similar_centres | w90_transport | Subroutine | |

clean_ws_translate | w90_ws_distance | Subroutine | |

comms_allreduce | w90_comms | Interface | |

comms_allreduce_cmplx | w90_comms | Subroutine | Reduce complex data to all nodes |

comms_allreduce_real | w90_comms | Subroutine | Reduce real data to all nodes |

comms_array_split | w90_comms | Subroutine | Given an array of size numpoints, we want to split on num_nodes nodes. This function returns two arrays: count and displs. |

comms_barrier | w90_comms | Subroutine | A barrier to synchronise all nodes |

comms_bcast | w90_comms | Interface | |

comms_bcast_char | w90_comms | Subroutine | Send character array from root node to all nodes |

comms_bcast_cmplx | w90_comms | Subroutine | Send character array from root node to all nodes |

comms_bcast_int | w90_comms | Subroutine | Send integar array from root node to all nodes |

comms_bcast_logical | w90_comms | Subroutine | Send logical array from root node to all nodes |

comms_bcast_real | w90_comms | Subroutine | Send real array from root node to all nodes |

comms_end | w90_comms | Subroutine | Called to finalise the comms |

comms_gatherv | w90_comms | Interface | |

comms_gatherv_real | w90_comms | Subroutine | Gather real data to root node |

comms_recv | w90_comms | Interface | |

comms_recv_char | w90_comms | Subroutine | Receive character array from specified node |

comms_recv_cmplx | w90_comms | Subroutine | Receive complex array from specified node |

comms_recv_int | w90_comms | Subroutine | Receive integer array from specified node |

comms_recv_logical | w90_comms | Subroutine | Receive logical array from specified node |

comms_recv_real | w90_comms | Subroutine | Receive real array from specified node |

comms_reduce | w90_comms | Interface | |

comms_reduce_cmplx | w90_comms | Subroutine | Reduce complex data to root node |

comms_reduce_int | w90_comms | Subroutine | Reduce integer data to root node |

comms_reduce_real | w90_comms | Subroutine | Reduce real data to root node |

comms_scatterv | w90_comms | Interface | |

comms_scatterv_int_1 | w90_comms | Subroutine | Scatter integer data from root node (array of rank 1) |

comms_scatterv_int_2 | w90_comms | Subroutine | Scatter integer data from root node (array of rank 2) |

comms_scatterv_int_3 | w90_comms | Subroutine | Scatter integer data from root node (array of rank 3) |

comms_scatterv_real | w90_comms | Subroutine | Scatter data from root node |

comms_send | w90_comms | Interface | |

comms_send_char | w90_comms | Subroutine | Send character array to specified node |

comms_send_cmplx | w90_comms | Subroutine | Send complex array to specified node |

comms_send_int | w90_comms | Subroutine | Send integer array to specified node |

comms_send_logical | w90_comms | Subroutine | Send logical array to specified node |

comms_send_real | w90_comms | Subroutine | Send real array to specified node |

comms_setup | w90_comms | Subroutine | Set up communications |

conv_get_seedname | w90_conv | Subroutine | Set the seedname from the command line |

conv_read_chkpt | w90_conv | Subroutine | Read formatted checkpoint file |

conv_read_chkpt_fmt | w90_conv | Subroutine | Read formatted checkpoint file |

conv_write_chkpt | w90_conv | Subroutine | Write formatted checkpoint file |

conv_write_chkpt_fmt | w90_conv | Subroutine | Write formatted checkpoint file |

dis_extract | w90_disentangle | Subroutine | Extracts an num_wann-dimensional subspace at each k by minimizing Omega_I |

dis_extract_gamma | w90_disentangle | Subroutine | Extracts an num_wann-dimensional subspace at each k by minimizing Omega_I (Gamma point version) |

dis_main | w90_disentangle | Subroutine | Main disentanglement routine |

dis_proj_froz | w90_disentangle | Subroutine | COMPUTES THE LEADING EIGENVECTORS OF Q_froz . P_s . Q_froz, WHERE P_s PROJECTOR OPERATOR ONTO THE SUBSPACE S OF THE PROJECTED GAUSSIANS, P_f THE PROJECTOR ONTO THE FROZEN STATES, AND Q_froz = 1 - P_froz, ALL EXP IN THE BASIS OF THE BLOCH EIGENSTATES INSIDE THE OUTER ENERGY WINDOW (See Eq. (27) in Sec. III.G of SMV) |

dis_project | w90_disentangle | Subroutine | Construct projections for the start of the disentanglement routine |

dis_windows | w90_disentangle | Subroutine | This subroutine selects the states that are inside the outer window (ie, the energy window out of which we fish out the optimally-connected subspace) and those that are inside the inner window (that make up the frozen manifold, and are straightfowardly included as they are). This, in practice, amounts to slimming down the original num_wann x num_wann overlap matrices, removing rows and columns that belong to u_nks that have been excluded forever, and marking (indexing) the rows and columns that correspond to frozen states. |

dos_get_k | w90_dos | Subroutine | This subroutine calculates the contribution to the DOS of a single k point |

dos_get_levelspacing | w90_dos | Subroutine | This subroutine calculates the level spacing, i.e. how much the level changes near a given point of the interpolation mesh |

dos_main | w90_dos | Subroutine | Computes the electronic density of states. Can resolve into up-spin and down-spin parts, project onto selected Wannier orbitals, and use adaptive broadening, as in PRB 75, 195121 (2007) [YWVS07]. |

fourier_q_to_R | w90_get_oper | Subroutine | Fourier transforms Wannier-gauge representation of a given operator O from q-space to R-space: |

gauss_freq | w90_utility | Function | gauss_freq(x) = (1+erf(x/sqrt(2)))/2 = erfc(-x/sqrt(2))/2 - See comments in erf |

geninterp_main | w90_geninterp | Subroutine | This routine prints the band energies (and possibly the band derivatives) |

get_AA_R | w90_get_oper | Subroutine | AA_a(R) = <0|r_a|R> is the Fourier transform
of the Berrry connection AA_a(k) = i |

get_BB_R | w90_get_oper | Subroutine | BB_a(R)=<0n|H(r-R)|Rm> is the Fourier transform of
BB_a(k) = i |

get_CC_R | w90_get_oper | Subroutine | CC_ab(R) = <0|r_a.H.(r-R)_b|R> is the Fourier transform of
CC_ab(k) = |

get_FF_R | w90_get_oper | Subroutine | FF_ab(R) = <0|r_a.(r-R)_b|R> is the Fourier transform of
FF_ab(k) = |

get_HH_R | w90_get_oper | Subroutine | computes <0n|H|Rm>, in eV (pwscf uses Ry, but pw2wannier90 converts to eV) |

get_module_kmesh | w90_parameters | Subroutine | This function reads and sets the interpolation mesh variables needed by a given module |

get_smearing_index | w90_parameters | Function | This function parses a string containing the type of smearing and returns the correct index for the smearing_index variable |

get_SS_R | w90_get_oper | Subroutine | Wannier representation of the Pauli matrices: <0n|sigma_a|Rm> (a=x,y,z) |

get_win_min | w90_get_oper | Subroutine | Find the lower bound (band index) of the outer energy window at the specified k-point |

group | w90_transport | Subroutine | |

hamiltonian_dealloc | w90_hamiltonian | Subroutine | Deallocate module data |

hamiltonian_get_hr | w90_hamiltonian | Subroutine | Calculate the Hamiltonian in the WF basis |

hamiltonian_setup | w90_hamiltonian | Subroutine | Allocate arrays and setup data |

hamiltonian_wigner_seitz | w90_hamiltonian | Subroutine | Calculates a grid of points that fall inside of (and eventually on the
surface of) the Wigner-Seitz supercell centered on the origin of the B
lattice with primitive translations nmonkh(1) |

hamiltonian_write_hr | w90_hamiltonian | Subroutine | Write the Hamiltonian in the WF basis |

hamiltonian_write_rmn | w90_hamiltonian | Subroutine | Write out the matrix elements of r |

hamiltonian_write_tb | w90_hamiltonian | Subroutine | Write in a single file all the information
that is needed to set up a Wannier-based
tight-binding model: |

internal_maxloc | w90_kmesh | Function | A reproducible maxloc function so b-vectors come in the same order each time |

internal_set_kmesh | w90_parameters | Subroutine | This routines returns the three integers that define the interpolation k-mesh, satisfying the condition that the spacing between two neighboring points along each of the three k_x, k_y and k_z directions is at smaller than a given spacing. |

internal_write_header | w90_geninterp | Subroutine | Writes a header for the output file(s). |

io_date | w90_io | Subroutine | Returns two strings containing the date and the time in human-readable format. Uses a standard f90 call. |

io_error | w90_io | Subroutine | Abort the code giving an error message |

io_file_unit | w90_io | Function | Returns an unused unit number so we can later open a file on that unit. |

io_get_seedname | w90_io | Subroutine | Get the seedname from the commandline |

io_print_timings | w90_io | Subroutine | Output timing information to stdout |

io_stopwatch | w90_io | Subroutine | Stopwatch to time parts of the code |

io_time | w90_io | Function | Returns elapsed CPU time in seconds since its first call. Uses standard f90 call |

k_path | w90_kpath | Subroutine | Main routine |

k_slice | w90_kslice | Subroutine | Main routine |

kmesh_dealloc | w90_kmesh | Subroutine | Release memory from the kmesh module |

kmesh_get | w90_kmesh | Subroutine | Main routine to calculate the b-vectors |

kmesh_get_bvectors | w90_kmesh | Subroutine | Returns the b-vectors for a given shell and kpoint. |

kmesh_shell_automatic | w90_kmesh | Subroutine | Find the correct set of shells to satisfy B1 |

kmesh_shell_fixed | w90_kmesh | Subroutine | Find the B1 weights for a set of shells specified by the user |

kmesh_shell_from_file | w90_kmesh | Subroutine | Find the B1 weights for a set of b-vectors given in a file. This routine is only activated via a devel_flag and is not intended for regular use. |

kmesh_spacing_mesh | w90_postw90_common | Function | Same as kmesh_spacing_singleinteger, but for a kmesh with three different mesh samplings along the three directions |

kmesh_spacing_singleinteger | w90_postw90_common | Function | Set up the value of the interpolation mesh spacing, needed for adaptive smearing [see Eqs. (34-35) YWVS07]. Choose it as the largest of the three Delta_k's for each of the primitive translations b1, b2, and b3 |

kmesh_supercell_sort | w90_kmesh | Subroutine | We look for kpoint neighbours in a large supercell of reciprocal
unit cells. Done sequentially this is very slow. |

kmesh_write | w90_kmesh | Subroutine | Writes nnkp file (list of overlaps needed) |

master_sort_and_group | w90_transport | Subroutine | |

MinusFermiDerivative | w90_boltzwann | Function | This function calculates -dn(E)/dE, where n(E) is the Fermi distribution function. |

my_ICOPY | comms.F90 | Subroutine | |

orthogonalize_u | w90_sitesym | Subroutine | |

overlap_dealloc | w90_overlap | Subroutine | Dellocate memory |

overlap_project | w90_overlap | Subroutine | Construct initial guess from the projection via a Lowdin transformation See section 3 of the CPC 2008 Note that in this subroutine num_wann = num_bands since, if we are here, then disentanglement = FALSE |

overlap_project_gamma | w90_overlap | Subroutine | Construct initial guess from the projection via a Lowdin transformation
See section 3 of the CPC 2008
Note that in this subroutine num_wann = num_bands |

overlap_read | w90_overlap | Subroutine | Allocate and read the Mmn and Amn from files |

overlap_rotate | w90_overlap | Subroutine | Only used when interfaced to the CP code Not sure why this is done here and not in CP |

param_dealloc | w90_parameters | Subroutine | release memory from allocated parameters |

param_get_atoms | w90_parameters | Subroutine | Fills the atom data block |

param_get_block_length | w90_parameters | Subroutine | Finds the length of the data block |

param_get_keyword | w90_parameters | Subroutine | Finds the value of the required keyword. |

param_get_keyword_block | w90_parameters | Subroutine | Finds the values of the required data block |

param_get_keyword_kpath | w90_parameters | Subroutine | Fills the kpath data block |

param_get_keyword_vector | w90_parameters | Subroutine | Finds the values of the required keyword vector |

param_get_projections | w90_parameters | Subroutine | Fills the projection data block |

param_get_range_vector | w90_parameters | Subroutine | Read a range vector eg. 1,2,3,4-10 or 1 3 400:100 |

param_get_smearing_type | w90_parameters | Function | This function returns a string describing the type of smearing associated to a given smr_index integer value. |

param_get_vector_length | w90_parameters | Subroutine | Returns the length of a keyword vector |

param_in_file | w90_parameters | Subroutine | Load the *.win file into a character |

param_lib_set_atoms | w90_parameters | Subroutine | Fills the atom data block during a library call |

param_memory_estimate | w90_parameters | Subroutine | Estimate how much memory we will allocate |

param_postw90_write | w90_parameters | Subroutine | write postw90 parameters to stdout |

param_read | w90_parameters | Subroutine | Read parameters and calculate derived values |

param_read_chkpt | w90_parameters | Subroutine | Read checkpoint file |

param_uppercase | w90_parameters | Subroutine | Convert a few things to uppercase to look nice in the output |

param_write | w90_parameters | Subroutine | write wannier90 parameters to stdout |

param_write_chkpt | w90_parameters | Subroutine | Write checkpoint file |

param_write_header | w90_parameters | Subroutine | Write a suitable header for the calculation - version authors etc |

plot_fermi_surface | w90_plot | Subroutine | Prepares a Xcrysden bxsf file to view the fermi surface |

plot_interpolate_bands | w90_plot | Subroutine | Plots the interpolated band structure |

plot_main | w90_plot | Subroutine | Main plotting routine |

plot_u_matrices | w90_plot | Subroutine | Plot u_matrix and u_matrix_opt to textfiles in readable format |

plot_wannier | w90_plot | Subroutine | Plot the WF in Xcrysden format based on code written by Michel Posternak |

print_usage | w90_conv | Subroutine | Writes the usage of the program to stdout |

pw90common_fourier_R_to_k | w90_postw90_common | Subroutine | For alpha=0: |

pw90common_fourier_R_to_k_new | w90_postw90_common | Subroutine | For OO: $$O_{ij}(k) = \sum_R e^{+ik.R}.O_{ij}(R)$$ For $$OO_{dx,dy,dz}$$: $$\sum_R [i.R_{dx,dy,dz}.e^{+ik.R}.O_{ij}(R)]$$ where R_{x,y,z} are the Cartesian components of R |

pw90common_fourier_R_to_k_vec | w90_postw90_common | Subroutine | For OO_true (true vector): |

pw90common_get_occ | w90_postw90_common | Subroutine | Compute the electronic occupancy |

pw90common_kmesh_spacing | w90_postw90_common | Interface | |

pw90common_wanint_data_dist | w90_postw90_common | Subroutine | Distribute the um and chk files |

pw90common_wanint_get_kpoint_file | w90_postw90_common | Subroutine | read kpoints from kpoint.dat and distribute |

pw90common_wanint_param_dist | w90_postw90_common | Subroutine | distribute the parameters across processors |

pw90common_wanint_setup | w90_postw90_common | Subroutine | Setup data ready for interpolation |

qe_erf | w90_utility | Function | Error function - computed from the rational approximations of W. J. Cody, Math. Comp. 22 (1969), pages 631-637. |

qe_erfc | w90_utility | Function | erfc(x) = 1-erf(x) - See comments in erf |

R_wz_sc | w90_ws_distance | Function | puts R_in in the Wigner-Seitz cell centered around R0 |

R_wz_sc_equiv | w90_ws_distance | Subroutine | Find the list list of R_out that differ from R_in by a lattice vector and are equally distant from R0 (i.e. that are on the edges of the WS cell centered on R0) |

script_common | w90_kslice | Subroutine | |

script_fermi_lines | w90_kslice | Subroutine | |

sitesym_dealloc | w90_sitesym | Subroutine | |

sitesym_dis_extract_symmetry | w90_sitesym | Subroutine | |

sitesym_read | w90_sitesym | Subroutine | |

sitesym_replace_d_matrix_band | w90_sitesym | Subroutine | |

sitesym_slim_d_matrix_band | w90_sitesym | Subroutine | |

sitesym_symmetrize_gradient | w90_sitesym | Subroutine | |

sitesym_symmetrize_rotation | w90_sitesym | Subroutine | |

sitesym_symmetrize_u_matrix | w90_sitesym | Subroutine | |

sitesym_symmetrize_zmatrix | w90_sitesym | Subroutine | |

sort | w90_transport | Subroutine | |

spin_get_moment | w90_spin | Subroutine | Computes the spin magnetic moment by Wannier interpolation |

spin_get_moment_k | w90_spin | Subroutine | Computes the spin magnetic moment by Wannier interpolation at the specified k-point |

spin_get_nk | w90_spin | Subroutine | Computes |

symmetrize_ukirr | w90_sitesym | Subroutine | |

TDF_kpt | w90_boltzwann | Subroutine | This subroutine calculates the contribution to the TDF of a single k point |

tran_bulk | w90_transport | Subroutine | |

tran_cut_hr_one_dim | w90_transport | Subroutine | |

tran_dealloc | w90_transport | Subroutine | Dellocate module data |

tran_find_integral_signatures | w90_transport | Subroutine | |

tran_get_ht | w90_transport | Subroutine | |

tran_green | w90_transport | Subroutine | |

tran_lcr | w90_transport | Subroutine | |

tran_lcr_2c2_build_ham | w90_transport | Subroutine | |

tran_lcr_2c2_sort | w90_transport | Subroutine | |

tran_main | w90_transport | Subroutine | Main transport subroutine |

tran_parity_enforce | w90_transport | Subroutine | |

tran_read_htC | w90_transport | Subroutine | |

tran_read_htX | w90_transport | Subroutine | |

tran_read_htXY | w90_transport | Subroutine | |

tran_reduce_hr | w90_transport | Subroutine | |

tran_transfer | w90_transport | Subroutine | |

tran_write_xyz | w90_transport | Subroutine | |

utility_cart_to_frac | w90_utility | Subroutine | Convert from Cartesian to fractional coordinates |

utility_commutator_diag | w90_utility | Function | Computes diagonal elements of [mat1,mat2]=mat1.mat2-mat2.mat1 |

utility_compar | w90_utility | Subroutine | Compares two vectors |

utility_diagonalize | w90_utility | Subroutine | Diagonalize the dim x dim hermitian matrix 'mat' and return the eigenvalues 'eig' and the unitary rotation 'rot' |

utility_frac_to_cart | w90_utility | Subroutine | Convert from fractional to Cartesian coordinates |

utility_im_tr | w90_utility | Function | Imaginary part of the trace |

utility_inv2 | w90_utility | Subroutine | Return in b the adjoint of the 2x2 matrix
a, together with the determinant of a. |

utility_inv3 | w90_utility | Subroutine | Return in b the adjoint of the 3x3 matrix a, and its |

utility_lowercase | w90_utility | Function | Takes a string and converts to lowercase characters |

utility_matmul_diag | w90_utility | Function | Computes the diagonal elements of the matrix mat1.mat2 |

utility_metric | w90_utility | Subroutine | Calculate the real and reciprical space metrics |

utility_re_tr | w90_utility | Function | Real part of the trace |

utility_recip_lattice | w90_utility | Subroutine | Calculates the reciprical lattice vectors and the cell volume |

utility_rotate | w90_utility | Function | Rotates the dim x dim matrix 'mat' according to (rot)^dagger.mat.rot, where 'rot' is a unitary matrix |

utility_rotate_diag | w90_utility | Function | Rotates the dim x dim matrix 'mat' according to (rot)^dagger.mat.rot, where 'rot' is a unitary matrix. Computes only the diagonal elements of rotated matrix. |

utility_string_to_coord | w90_utility | Subroutine | Takes a string in the form 0.0,1.0,0.5 and returns an array of the real num |

utility_strip | w90_utility | Function | Strips string of all blank spaces |

utility_translate_home | w90_utility | Subroutine | Translate a vector to the home unit cell |

utility_w0gauss | w90_utility | Function | the derivative of utility_wgauss: an approximation to the delta function |

utility_wgauss | w90_utility | Function | this function computes the approximate theta function for the given order n, at the point x. |

utility_zgemm | w90_utility | Subroutine | Return matrix product of complex n x n matrices a and b: |

wann_calc_projection | w90_wannierise | Subroutine | |

wann_check_unitarity | w90_wannierise | Subroutine | |

wann_domega | w90_wannierise | Subroutine | |

wann_main | w90_wannierise | Subroutine | Calculate the Unitary Rotations to give Maximally Localised Wannier Functions |

wann_main_gamma | w90_wannierise | Subroutine | |

wann_omega | w90_wannierise | Subroutine | Calculate the Wannier Function spread |

wann_omega_gamma | w90_wannierise | Subroutine | |

wann_phases | w90_wannierise | Subroutine | Uses guiding centres to pick phases which give a consistent choice of branch cut for the spread definction |

wann_spread_copy | w90_wannierise | Subroutine | |

wann_svd_omega_i | w90_wannierise | Subroutine | |

wann_write_r2mn | w90_wannierise | Subroutine | |

wann_write_vdw_data | w90_wannierise | Subroutine | |

wann_write_xyz | w90_wannierise | Subroutine | |

wannier_run | wannier_lib.F90 | Subroutine | |

wannier_setup | wannier_lib.F90 | Subroutine | |

wham_get_D_h | w90_wan_ham | Subroutine | Compute D^H_a=UU^dag.del_a UU (a=x,y,z) using Eq.(24) of WYSV06 |

wham_get_D_h_a | w90_wan_ham | Subroutine | Compute D^H_a=UU^dag.del_a UU (a=alpha,beta), using Eq.(24) of WYSV06 |

wham_get_deleig_a | w90_wan_ham | Subroutine | Band derivatives dE/dk_a |

wham_get_eig_deleig | w90_wan_ham | Subroutine | Given a k point, this function returns eigenvalues E and derivatives of the eigenvalues dE/dk_a, using wham_get_deleig_a |

wham_get_eig_UU_HH_JJlist | w90_wan_ham | Subroutine | Wrapper routine used to reduce number of Fourier calls |

wham_get_JJm_list | w90_wan_ham | Subroutine | Compute JJ^-_a (a=Cartesian index) for a list of Fermi energies |

wham_get_JJp_list | w90_wan_ham | Subroutine | Compute JJ^+_a (a=Cartesian index) for a list of Fermi energies |

wham_get_occ_mat_list | w90_wan_ham | Subroutine | Occupation matrix f, and g=1-f for a list of Fermi energies |

wigner_seitz | w90_postw90_common | Subroutine | Calculates a grid of lattice vectors r that fall inside (and eventually
on the surface of) the Wigner-Seitz supercell centered on the
origin of the Bravais superlattice with primitive translations
mp_grid(1) |

ws_translate_dist | w90_ws_distance | Subroutine | The next three subroutines find the supercell translation (i.e. the translation by a integer number of supercell) That minimizes the distance between two given funtions, i and j, the first in unit cell 0, the other in unit cell R. I.e. we put WF j in the Wigner-Seitz of WF i. We also look for the number of equivalent translation, meaning that j is on the edge of the WS The results are stored in global arrays wdist_ndeg and irdist_ws |

ws_write_vec | w90_ws_distance | Subroutine | Write to file the lattice vectors of the superlattice to be added to R vector in seedname_hr.dat, seedname_rmn.dat, etc. in order to have the second Wannier function inside the WS cell of the first one. |