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_get_sc_klist | w90_berry | Subroutine | |

berry_get_shc_klist | w90_berry | Subroutine | ! |

berry_main | w90_berry | Subroutine | Computes the following quantities: (i) Anomalous Hall conductivity (from Berry curvature) (ii) Complex optical conductivity (Kubo-Greenwood) & JDOS (iii) Orbital magnetization (iv) Nonlinear shift current (v) Spin Hall conductivity |

berry_print_progress | w90_berry | Subroutine | |

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 (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_cmplx_1 | w90_comms | Subroutine | Gather complex data to root node (for arrays of rank 1) |

comms_gatherv_cmplx_2 | w90_comms | Subroutine | Gather complex data to root node (for arrays of rank 2) |

comms_gatherv_cmplx_3 | w90_comms | Subroutine | Gather complex data to root node (for arrays of rank 3) |

comms_gatherv_cmplx_3_4 | w90_comms | Subroutine | Gather complex data to root node (for arrays of rank 3 and 4, respectively) |

comms_gatherv_cmplx_4 | w90_comms | Subroutine | Gather complex data to root node (for arrays of rank 4) |

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

comms_gatherv_real_1 | w90_comms | Subroutine | Gather real data to root node (for arrays of rank 1) |

comms_gatherv_real_2 | w90_comms | Subroutine | Gather real data to root node (for arrays of rank 2) |

comms_gatherv_real_2_3 | w90_comms | Subroutine | Gather real data to root node (for arrays of rank 2 and 3, respectively) |

comms_gatherv_real_3 | w90_comms | Subroutine | Gather real data to root node (for arrays of rank 3) |

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_cmplx_4 | w90_comms | Subroutine | Scatter complex data from root node (array of rank 4) |

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_1 | w90_comms | Subroutine | Scatter real data from root node (array of rank 1) |

comms_scatterv_real_2 | w90_comms | Subroutine | Scatter real data from root node (array of rank 2) |

comms_scatterv_real_3 | w90_comms | Subroutine | Scatter real data from root node (array of rank 3) |

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 |

comms_setup_vars | w90_comms | Subroutine | Set up variables related to communicators This should be called also in library mode |

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

conv_get_seedname | w90_conv_spn | 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_read_spn | w90_conv_spn | Subroutine | Read unformatted spn file |

conv_read_spn_fmt | w90_conv_spn | Subroutine | Read formatted spn file |

conv_write_chkpt | w90_conv | Subroutine | Write formatted checkpoint file |

conv_write_chkpt_fmt | w90_conv | Subroutine | Write formatted checkpoint file |

conv_write_spn | w90_conv_spn | Subroutine | Write unformatted spn file |

conv_write_spn_fmt | w90_conv_spn | Subroutine | Write formatted spn 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_gauge_overlap_matrix | w90_get_oper | Subroutine | |

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_SHC_R | w90_get_oper | Subroutine | Compute several matrices for spin Hall conductivity
SR_R = <0n|sigma_{x,y,z}.(r-R) |

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 | |

gyrotropic_get_curv_w_k | w90_gyrotropic | Subroutine | |

gyrotropic_get_k_list | w90_gyrotropic | Subroutine | |

gyrotropic_get_NOA_Bnl_orb | w90_gyrotropic | Subroutine | |

gyrotropic_get_NOA_Bnl_spin | w90_gyrotropic | Subroutine | |

gyrotropic_get_NOA_k | w90_gyrotropic | Subroutine | |

gyrotropic_main | w90_gyrotropic | Subroutine | Computes the following quantities: (i) D tensor (ii) K tensor (iii) C tensor (iv) current-induced optical activity (v) natural optical activity |

gyrotropic_outprint_tensor | w90_gyrotropic | Subroutine | |

gyrotropic_outprint_tensor_w | w90_gyrotropic | 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: * lattice vectors * <0n|H|Rn> * <0n|r|Rn> |

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_commandline | w90_io | Subroutine | Parse the commandline |

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 |

io_wallclocktime | w90_io | Function | |

k_path | w90_kpath | Subroutine | Main routine |

k_path_get_points | w90_kpath | Subroutine | |

k_path_print_info | w90_kpath | Subroutine | |

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 The stratagy is: 1) Take the bvectors from the next shell 2) Reject them if they are parallel to exisiting b vectors 3) Test to see if we satisfy B1, if not add another shell and repeat |

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. Here we order the cells by the distance from the origin. Doing the search in this order gives a dramatic speed up |

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

kslice_print_info | w90_kslice | Subroutine | |

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_allocate | w90_overlap | Subroutine | Allocate memory to read Mmn and Amn from files This must be called before calling overlap_read |

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 since, if we are here, then disentanglement = FALSE Gamma specific version |

overlap_read | w90_overlap | Subroutine | Read the Mmn and Amn from files Note: one needs to call overlap_allocate first! |

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_chkpt_dist | w90_parameters | Subroutine | Distribute the chk files |

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

param_dist | w90_parameters | Subroutine | distribute the parameters across processors ! |

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_centre_constraint_from_column | w90_parameters | Subroutine | assigns value read to constraint parameters based on column |

param_get_centre_constraints | w90_parameters | Subroutine | assigns projection centres as default centre constraints and global Lagrange multiplier as individual Lagrange multipliers then reads the centre_constraints block for individual centre constraint parameters |

param_get_convention_type | w90_parameters | Function | This function returns a string describing the convention associated to a sc_phase_conv integer value. |

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 if(lcount) we return the number of states in length |

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 array in_file, ignoring comments and blank lines and converting everything to lowercase characters |

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 IMPORTANT! If you change the chkpt format, adapt accordingly also the w90chk2chk.x utility! |

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 IMPORTANT! If you change the chkpt format, adapt accordingly also the w90chk2chk.x utility! Also, note that this routine writes the u_matrix and the m_matrix - in parallel mode these are however stored in distributed form in, e.g., u_matrix_loc only, so if you are changing the u_matrix, remember to gather it from u_matrix_loc first! |

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

parameters_gyro_write_task | w90_parameters | Subroutine | |

plot_bvec | w90_plot | Subroutine | June 2018: RM and SP Write to file the matrix elements of bvector and their weights This is used by EPW to compute the velocity. You need "write_bvec = .true." in your wannier input |

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 |

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

pw90common_fourier_R_to_k | w90_postw90_common | Subroutine | For alpha=0: O_ij(R) --> O_ij(k) = sum_R e^{+ik.R}*O_ij(R) |

pw90common_fourier_R_to_k_new | w90_postw90_common | Subroutine | For OO: For : where R_{x,y,z} are the Cartesian components of R |

pw90common_fourier_R_to_k_new_second_d | w90_postw90_common | Subroutine | For OO: For : where R_{x,y,z} are the Cartesian components of R For : where R_{xi,yi,zi} are the Cartesian components of R |

pw90common_fourier_R_to_k_new_second_d_TB_conv | w90_postw90_common | Subroutine | For OO: For : where R_{x,y,z} are the Cartesian components of R For : where {xi,yi,zi} denote the Cartesian components and |

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

pw90common_fourier_R_to_k_vec_dadb | w90_postw90_common | Subroutine | For : For : |

pw90common_fourier_R_to_k_vec_dadb_TB_conv | w90_postw90_common | Subroutine | For : For : |

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 NOTE: we only send the ones postw90 uses, not all in w90 |

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 | Subroutine | Put R_in in the Wigner-Seitz cell centered around R0, and find all equivalent vectors to this (i.e., with same distance). Return their coordinates and the degeneracy, as well as the integer shifts needed to get the vector (these are always multiples of the mp_grid, i.e. they are supercell displacements in the large supercell) |

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 |

spin_get_S | w90_spin | Subroutine | |

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_det3 | w90_utility | Function | |

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_im_tr_prod | w90_utility | Function | |

utility_inv2 | w90_utility | Subroutine | Return in b the adjoint of the 2x2 matrix a, together with the determinant of a. The inverse is defined as the adjoind divided by the determinant, so that inverse(a) = b/det |

utility_inv3 | w90_utility | Subroutine | Return in b the adjoint of the 3x3 matrix a, and its determinant. The inverse is defined as the adjoind divided by the determinant, so that inverse(a) = b/det |

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_re_tr_prod | w90_utility | Function | |

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_rotate_new | w90_utility | Subroutine | |

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_w0gauss_vec | 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_zdotu | w90_utility | Function | |

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

utility_zgemm_new | w90_utility | Subroutine | |

utility_zgemmm | w90_utility | Subroutine | |

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 definition |

wann_spread_copy | w90_wannierise | Subroutine | copy%om_c = orig%om_c |

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 | This routine should be called after wannier_setup from a code calling the library mode to actually run the Wannier code. |

wannier_setup | wannier_lib.F90 | Subroutine | This routine should be called first from a code calling the library mode to setup all the variables. NOTE! The library mode currently works ONLY in serial (when called from a parallel code, make sure to run it only on 1 MPI process) |

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_D_h_P_value | w90_wan_ham | Subroutine | Compute D^H_a=UU^dag.del_a UU (a=x,y,z) 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_deleig_TB_conv | 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_AA_sc | w90_wan_ham | Subroutine | Wrapper routine used to reduce number of Fourier calls |

wham_get_eig_UU_HH_AA_sc_TB_conv | w90_wan_ham | Subroutine | |

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

wham_get_JJp_JJm_list | w90_wan_ham | Subroutine | |

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) |

write_coords_file | w90_kslice | Subroutine | |

write_data_file | w90_kslice | Subroutine | |

ws_translate_dist | w90_ws_distance | Subroutine | Find the supercell translation (i.e. the translation by a integer number of supercell vectors, the supercell being defined by the mp_grid) that minimizes the distance between two given Wannier functions, i and j, the first in unit cell 0, the other in unit cell R. I.e., we find the translation to put WF j in the Wigner-Seitz of WF i. We also look for the number of equivalent translation, that happen when w_j,R is on the edge of the WS of w_i,0. The results are stored in global arrays wdist_ndeg, irdist_ws, crdist_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. |