(git:07a6c39)
Loading...
Searching...
No Matches
floquet_utils Module Reference

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.
 

Detailed Description

Helper routines for the Floquet-Bloch band-structure calculation (floquet_main).

History
Author
Shridhar Shanbhag (27.01.2026)

Function/Subroutine Documentation

◆ build_floquet_matrix()

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.

Parameters
bs_env...
floquet_env...
floquet_matrix...

Definition at line 378 of file floquet_utils.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ distribute_floquet_kp_data()

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.

Parameters
para_envthe global parallel environment
para_env_subthe subgroup parallel environment
ispinthe spin channel
ikpthe DOS k-point index
e_kband energies for all DOS k-points, distributed
de_dkband-energy k-derivatives, distributed
dipoledipole matrix elements, distributed
floquet_env...

Definition at line 431 of file floquet_utils.F.

Here is the caller graph for this function:

◆ compute_e_k_de_dk_dipole()

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.

Parameters
qs_env...
bs_env...
e_k...
de_dk...
dipole...

Definition at line 479 of file floquet_utils.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ make_floquet_subgroups()

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.

Parameters
qs_env...
bs_env...
para_env_subthe created subgroup parallel environment
blacs_env_subthe created subgroup BLACS context
group_distributionsubgroup index of every global rank, 0:num_pe-1
ngroupsthe number of subgroups created

Definition at line 635 of file floquet_utils.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ floquet_sector_weights()

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.

Parameters
floquet_env...
cfm_eigenvectorsFloquet eigenvectors

Definition at line 691 of file floquet_utils.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_floquet_convergence()

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.

Parameters
bs_env...
floquet_envholds the central- (w0) and outermost-sector (wE) weights

Definition at line 737 of file floquet_utils.F.

Here is the caller graph for this function:

◆ calculate_floquet_observables()

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.

Parameters
bs_env...
para_env_sub...
ispin...
ikp...
floquet_envholds eigenvalues, w0 (input) and a_k, m0_energies, m0_weights, quasi_energies (output)

Definition at line 807 of file floquet_utils.F.

Here is the caller graph for this function:

◆ write_floquet_header()

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.

Parameters
bs_env...

Definition at line 884 of file floquet_utils.F.

Here is the caller graph for this function:

◆ write_floquet_results()

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.

Parameters
bs_env...
floquet_env...

Definition at line 961 of file floquet_utils.F.

Here is the call graph for this function:
Here is the caller graph for this function: