62 CHARACTER(LEN=*),
PARAMETER :: routinen =
'floquet'
64 INTEGER :: handle, ikp, ikp_for_file, ispin, &
65 max_f_index, n_e, n_f_size, n_fbands, &
66 n_spin, nao, nkp, nkp_start, unit_nr
67 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: indices
68 REAL(kind=
dp) :: energy_step, energy_window
69 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: a_k, eigenvalues
70 REAL(kind=
dp),
DIMENSION(3) :: xkp
72 TYPE(
cp_cfm_type) :: cfm_eigenvectors, floquet_copy, &
78 CALL timeset(routinen, handle)
81 blacs_env=blacs_env, &
86 unit_nr = bs_env%unit_nr
87 nkp = bs_env%nkp_bs_and_DOS
88 nkp_start = bs_env%nkp_only_DOS
89 n_spin = bs_env%n_spin
90 max_f_index = bs_env%max_floquet_index
91 n_fbands = 1 + 2*max_f_index
92 n_f_size = nao*n_fbands
94 energy_step = bs_env%energy_step_floquet
95 energy_window = 2*bs_env%energy_window_floquet
97 n_e = int(energy_window/energy_step)
101 WRITE (unit_nr,
'(T2,A)')
' '
102 WRITE (unit_nr,
'(T2,A)') repeat(
'-', 79)
103 WRITE (unit_nr,
'(T2,A,A78)')
'-',
'-'
104 WRITE (unit_nr,
'(T2,A,A51,A27)')
'-',
'FLOQUET BANDSTRUCTURE CALCULATION',
'-'
105 WRITE (unit_nr,
'(T2,A,A78)')
'-',
'-'
106 WRITE (unit_nr,
'(T2,A)') repeat(
'-', 79)
107 WRITE (unit_nr,
'(T2,A)')
' '
109 WRITE (unit_nr,
'(T2,A,T56,ES12.2E2)') &
110 "FLOQUET PARAMETERS Amplitude [V/m]:", bs_env%floquet_amplitude*
evolt/
a_bohr
111 WRITE (unit_nr,
'(T2,A,T56,F12.4)') &
112 " Frequency [eV]:", bs_env%floquet_omega*
evolt
113 WRITE (unit_nr,
'(T2,A)')
" "//repeat(
"-", 44)
114 WRITE (unit_nr,
'(T2,A,T56,3F8.4)') &
115 " Polarisation:", bs_env%floquet_polarisation(1:3)
116 WRITE (unit_nr,
'(T2,A,T56,3F8.4)') &
117 " Phase offsets:",
pi*bs_env%floquet_phi(1:3)
118 WRITE (unit_nr,
'(T2,A)')
" "//repeat(
"-", 44)
119 WRITE (unit_nr,
'(T2,A,T56,I12)') &
120 " Max Floquet index:", bs_env%max_floquet_index
121 WRITE (unit_nr,
'(T2,A,T56,I12)') &
122 " Floquet Hamiltonian Size:", n_f_size
123 WRITE (unit_nr,
'(T2,A)')
" "//repeat(
"-", 44)
124 WRITE (unit_nr,
'(T2,A,T56,F12.4)') &
125 " Energy window [eV]:", bs_env%energy_window_floquet*
evolt
126 WRITE (unit_nr,
'(T2,A,T56,F12.4)') &
127 " Energy step [eV]:", bs_env%energy_step_floquet*
evolt
128 WRITE (unit_nr,
'(T2,A,T56,F12.4)') &
129 " Broadening [eV]:", bs_env%broadening_floquet*
evolt
130 WRITE (unit_nr,
'(T2,A)')
" "//repeat(
"-", 44)
131 WRITE (unit_nr,
'(A)')
""
133 WRITE (unit_nr,
'(T2,A)') &
134 "We construct the Floquet-Bloch Hamiltonian and diagonalise to obtain the"
135 WRITE (unit_nr,
'(T2,A)') &
136 "eigenvalues which give us the quasi-energies stored in QUASI_ENERGIES.bs"
137 WRITE (unit_nr,
'(A)')
""
138 WRITE (unit_nr,
'(T2,A)') &
139 "The k-resolved density of states is obtained by computing the trace of"
140 WRITE (unit_nr,
'(T2,A)') &
141 "the retarded Green's function and stored in FLOQUET_DOS.out"
142 WRITE (unit_nr,
'(T2,A)') &
143 ωπω
"DOS(,k) = -1/*Im[Tr_KS(G^R(,k))]"
144 WRITE (unit_nr,
'(A)')
""
145 WRITE (unit_nr,
'(T2,A)')
"Calculations completed for:"
146 WRITE (unit_nr,
'(2X,A,T12,A,T22,A)')
"KPoint",
"Spin",
"Coordinate"
150 nrow_global=n_f_size, &
151 ncol_global=n_f_size, &
155 CALL cp_cfm_create(floquet_matrix, floquet_struct, set_zero=.true.)
156 CALL cp_cfm_create(floquet_copy, floquet_struct, set_zero=.true.)
157 CALL cp_cfm_create(cfm_eigenvectors, floquet_struct, set_zero=.true.)
158 ALLOCATE (eigenvalues(n_f_size), indices(nao))
160 DO ikp = nkp_start + 1, nkp
162 xkp(1:3) = bs_env%kpoints_DOS%xkp(1:3, ikp)
163 ikp_for_file = ikp - nkp_start
179 CALL cp_cfm_heevd(floquet_copy, cfm_eigenvectors, eigenvalues)
199 IF (unit_nr > 0)
WRITE (unit_nr,
'(2X,I6,T12,I4,T18,3F12.6)') ikp_for_file, ispin, xkp(1:3)
204 IF (unit_nr > 0)
WRITE (unit_nr,
'(A)')
""
205 DEALLOCATE (eigenvalues)
211 CALL timestop(handle)
subroutine, public get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, mimic, sac_ae, sac_ppl, sac_lri, sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, particle_set, energy, force, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, rho, rho_xc, pw_env, ewald_env, ewald_pw, active_space, mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, task_list, task_list_soft, rho0_atom_set, rho0_mpole, rhoz_set, rhoz_cneo_set, ecoul_1c, rho0_s_rs, rho0_s_gs, rhoz_cneo_s_rs, rhoz_cneo_s_gs, do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, lri_env, lri_density, exstate_env, ec_env, harris_env, dispersion_env, gcp_env, vee, rho_external, external_vxc, mask, mp2_env, bs_env, kg_env, wanniercentres, atprop, ls_scf_env, do_transport, transport_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, mscfg_env, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, eeq, rhs, do_rixs, tb_tblite)
Get the QUICKSTEP environment.