![]() |
(git:07a6c39)
|
Helper routines for the Floquet-Bloch band-structure calculation (floquet_main). More...
Functions/Subroutines | |
| subroutine, public | build_floquet_matrix (bs_env, floquet_env, floquet_matrix) |
| Builds the Floquet-Bloch Hamiltonian H_F(k) for a single k-point and spin channel from the band data currently held in floquet_env. | |
| subroutine, public | distribute_floquet_kp_data (para_env, para_env_sub, ispin, ikp, e_k, de_dk, dipole, floquet_env) |
| Make this k-point/spin's band data available to every rank of the owning subgroup. | |
| subroutine, public | compute_e_k_de_dk_dipole (qs_env, bs_env, e_k, de_dk, dipole) |
| Precompute, on the global communicator, the band quantities needed to assemble the Floquet-Bloch Hamiltonian for all DOS k-points (all spins), distributed across ranks. | |
| subroutine, public | make_floquet_subgroups (qs_env, bs_env, para_env_sub, blacs_env_sub, group_distribution, ngroups) |
| Split the para_env into subgroups so that the Floquet Hamiltonian is distributed across the ranks of each subgroup. Also creates the subgroup BLACS context. | |
| subroutine, public | floquet_sector_weights (floquet_env, cfm_eigenvectors) |
| Central and boundary-sector weights of every Floquet eigenvector, stored into floquet_envw0 and floquet_envwE. | |
| subroutine, public | check_floquet_convergence (bs_env, floquet_env) |
| Checks that MAX_FLOQUET_INDEX is large enough and the Floquet Hamiltonian was truncated far enough away from the central sector to leave it unperturbed. | |
| subroutine, public | calculate_floquet_observables (bs_env, para_env_sub, ispin, ikp, floquet_env) |
| Calculate all Floquet observables for one k-point and spin: the DOS (a_k), the m=0 bands, the quasi-energies, and store in floquet_env. | |
| subroutine, public | write_floquet_header (bs_env) |
| Print the Floquet header with the input parameters and a short description of the output. | |
| subroutine, public | write_floquet_results (bs_env, floquet_env) |
| Sum the accumulated results across MPI ranks and write the m=0 band structure, the quasi-energies and the Floquet DOS to their files. | |
Helper routines for the Floquet-Bloch band-structure calculation (floquet_main).
| subroutine, public floquet_utils::build_floquet_matrix | ( | type(post_scf_bandstructure_type), pointer | bs_env, |
| type(floquet_env_type), intent(in) | floquet_env, | ||
| type(cp_cfm_type), intent(in) | floquet_matrix | ||
| ) |
Builds the Floquet-Bloch Hamiltonian H_F(k) for a single k-point and spin channel from the band data currently held in floquet_env.
| bs_env | ... |
| floquet_env | ... |
| floquet_matrix | ... |
Definition at line 378 of file floquet_utils.F.
| subroutine, public floquet_utils::distribute_floquet_kp_data | ( | type(mp_para_env_type), pointer | para_env, |
| type(mp_para_env_type), pointer | para_env_sub, | ||
| integer, intent(in) | ispin, | ||
| integer, intent(in) | ikp, | ||
| real(kind=dp), dimension(:, :, :), intent(in) | e_k, | ||
| real(kind=dp), dimension(:, :, :, :), intent(in) | de_dk, | ||
| complex(kind=dp), dimension(:, :, :, :, :), intent(in) | dipole, | ||
| type(floquet_env_type), intent(inout) | floquet_env | ||
| ) |
Make this k-point/spin's band data available to every rank of the owning subgroup.
| para_env | the global parallel environment |
| para_env_sub | the subgroup parallel environment |
| ispin | the spin channel |
| ikp | the DOS k-point index |
| e_k | band energies for all DOS k-points, distributed |
| de_dk | band-energy k-derivatives, distributed |
| dipole | dipole matrix elements, distributed |
| floquet_env | ... |
Definition at line 431 of file floquet_utils.F.
| subroutine, public floquet_utils::compute_e_k_de_dk_dipole | ( | type(qs_environment_type), pointer | qs_env, |
| type(post_scf_bandstructure_type), pointer | bs_env, | ||
| real(kind=dp), dimension(:, :, :), intent(out), allocatable | e_k, | ||
| real(kind=dp), dimension(:, :, :, :), intent(out), allocatable | de_dk, | ||
| complex(kind=dp), dimension(:, :, :, :, :), intent(out), allocatable | dipole | ||
| ) |
Precompute, on the global communicator, the band quantities needed to assemble the Floquet-Bloch Hamiltonian for all DOS k-points (all spins), distributed across ranks.
| qs_env | ... |
| bs_env | ... |
| e_k | ... |
| de_dk | ... |
| dipole | ... |
Definition at line 479 of file floquet_utils.F.
| subroutine, public floquet_utils::make_floquet_subgroups | ( | type(qs_environment_type), pointer | qs_env, |
| type(post_scf_bandstructure_type), pointer | bs_env, | ||
| type(mp_para_env_type), pointer | para_env_sub, | ||
| type(cp_blacs_env_type), pointer | blacs_env_sub, | ||
| integer, dimension(:), intent(out), allocatable | group_distribution, | ||
| integer, intent(out) | ngroups | ||
| ) |
Split the para_env into subgroups so that the Floquet Hamiltonian is distributed across the ranks of each subgroup. Also creates the subgroup BLACS context.
| qs_env | ... |
| bs_env | ... |
| para_env_sub | the created subgroup parallel environment |
| blacs_env_sub | the created subgroup BLACS context |
| group_distribution | subgroup index of every global rank, 0:num_pe-1 |
| ngroups | the number of subgroups created |
Definition at line 635 of file floquet_utils.F.
| subroutine, public floquet_utils::floquet_sector_weights | ( | type(floquet_env_type), intent(inout) | floquet_env, |
| type(cp_cfm_type), intent(in) | cfm_eigenvectors | ||
| ) |
Central and boundary-sector weights of every Floquet eigenvector, stored into floquet_envw0 and floquet_envwE.
| floquet_env | ... |
| cfm_eigenvectors | Floquet eigenvectors |
Definition at line 691 of file floquet_utils.F.
| subroutine, public floquet_utils::check_floquet_convergence | ( | type(post_scf_bandstructure_type), pointer | bs_env, |
| type(floquet_env_type), intent(in) | floquet_env | ||
| ) |
Checks that MAX_FLOQUET_INDEX is large enough and the Floquet Hamiltonian was truncated far enough away from the central sector to leave it unperturbed.
| bs_env | ... |
| floquet_env | holds the central- (w0) and outermost-sector (wE) weights |
Definition at line 737 of file floquet_utils.F.
| subroutine, public floquet_utils::calculate_floquet_observables | ( | type(post_scf_bandstructure_type), pointer | bs_env, |
| type(mp_para_env_type), pointer | para_env_sub, | ||
| integer, intent(in) | ispin, | ||
| integer, intent(in) | ikp, | ||
| type(floquet_env_type), intent(inout) | floquet_env | ||
| ) |
Calculate all Floquet observables for one k-point and spin: the DOS (a_k), the m=0 bands, the quasi-energies, and store in floquet_env.
| bs_env | ... |
| para_env_sub | ... |
| ispin | ... |
| ikp | ... |
| floquet_env | holds eigenvalues, w0 (input) and a_k, m0_energies, m0_weights, quasi_energies (output) |
Definition at line 807 of file floquet_utils.F.
| subroutine, public floquet_utils::write_floquet_header | ( | type(post_scf_bandstructure_type), pointer | bs_env | ) |
Print the Floquet header with the input parameters and a short description of the output.
| bs_env | ... |
Definition at line 884 of file floquet_utils.F.
| subroutine, public floquet_utils::write_floquet_results | ( | type(post_scf_bandstructure_type), pointer | bs_env, |
| type(floquet_env_type), intent(inout) | floquet_env | ||
| ) |
Sum the accumulated results across MPI ranks and write the m=0 band structure, the quasi-energies and the Floquet DOS to their files.
| bs_env | ... |
| floquet_env | ... |
Definition at line 961 of file floquet_utils.F.