38 USE ieee_arithmetic,
ONLY: ieee_is_finite
65#include "./base/base_uses.f90"
69 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_spectral_localizer'
81 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_scf_post_localizer'
82 CHARACTER(len=1),
PARAMETER :: axes(3) = [
'X',
'Y',
'Z']
85 COMPLEX(KIND=dp),
ALLOCATABLE :: local_dense(:, :), metric_dense(:, :)
86 INTEGER :: after, axis, directions(3), flatten_handle, formulation, handle, ie, ik, &
87 invariant, ip, iw, max_ao, n, nao, ndim, nposition, output_unit, plane, poisson_periodic, &
89 INTEGER,
POINTER :: grid(:)
90 LOGICAL :: active, aii, do_kpoints, do_soc, explicit_scale, flatten, omit_headers, &
91 periodic_localizer, print_position, print_soc, time_reversal, torus
92 REAL(
dp) :: build_energy, electronic_gap(2), eps_electronic_gap, eps_flattening, &
93 flatten_residuals(4), flatten_scale, local_point(3), physical_ratio
94 REAL(kind=
dp) :: eps_gap, eps_metric, gap, &
95 matrix_tolerance, metric_ratio
96 REAL(kind=
dp),
POINTER :: energies(:), kappas(:), point(:)
99 TYPE(
dbcsr_p_type),
POINTER :: cosines(:), image_matrices(:, :), &
100 matrix_ks(:), matrix_s(:), &
101 positions(:), soc_matrices(:, :)
110 CALL timeset(routinen, handle)
111 NULLIFY (input, section, cell, dft_control, para_env, sab_orb, matrix_ks, matrix_s, &
112 positions, soc_matrices, energies, kappas, point, cosines, flat_hamiltonian)
119 'DFT%PRINT%AO_MATRICES/POSITION'),
cp_p_file)
122 IF (.NOT. active .AND. .NOT. print_position .AND. .NOT. print_soc)
THEN
123 CALL timestop(handle)
126 CALL get_qs_env(qs_env, cell=cell, do_kpoints=do_kpoints, dft_control=dft_control, &
127 matrix_s_kp=image_matrices, para_env=para_env, sab_orb=sab_orb)
128 matrix_s => image_matrices(:, 1)
130 periodic_localizer = active .AND. formulation == 1
131 IF ((print_position .OR. print_soc) .AND. (any(cell%perd /= 0) .OR. do_kpoints))
THEN
132 cpabort(
'AO_MATRICES POSITION/SOC requires finite systems without KPOINTS.')
134 IF (do_kpoints .AND. .NOT. periodic_localizer)
THEN
135 cpabort(
'Explicit KPOINTS require FORMULATION PERIODIC for localizers.')
137 IF (.NOT. periodic_localizer .AND. any(cell%perd /= 0))
THEN
138 cpabort(
'AO position/localizer requires PERIODIC NONE without KPOINTS.')
141 IF (ndim /= 2 .AND. ndim /= 3) cpabort(
'SPECTRAL_LOCALIZER DIMENSION must be 2 or 3.')
143 IF (active .AND. ndim == 3 .AND. explicit_scale)
THEN
144 cpabort(
'PLANE is only valid for DIMENSION 2.')
147 IF (any(grid < 1)) cpabort(
'SPECTRAL_LOCALIZER MP_GRID must be positive.')
148 IF (.NOT. periodic_localizer .AND. explicit_scale)
THEN
149 cpabort(
'SPECTRAL_LOCALIZER MP_GRID requires FORMULATION PERIODIC.')
151 IF (any(grid /= 1 .AND. cell%perd == 0))
THEN
152 cpabort(
'Localizer MP_GRID must be one in nonperiodic directions.')
154 torus = periodic_localizer .AND. (do_kpoints .OR. any(grid /= 1))
155 directions = [1, 2, 3]
159 directions(:2) = [1, 2]
161 directions(:2) = [1, 3]
163 directions(:2) = [2, 3]
167 IF (periodic_localizer)
THEN
169 IF (any(cell%perd == 0) .OR. poisson_periodic /=
use_perd_xyz)
THEN
170 cpabort(
'PERIODIC DIMENSION 3 requires CELL and POISSON PERIODIC XYZ.')
173 IF (count(cell%perd /= 0) /= 2 .OR. any(cell%perd(directions(:2)) == 0))
THEN
174 cpabort(
'PERIODIC localizer requires two periodic CELL axes matching PLANE.')
176 IF (poisson_periodic /= plane_periodicity(plane))
THEN
177 cpabort(
'PERIODIC localizer requires matching CELL and POISSON periodicity.')
181 IF (explicit_scale) cpabort(
'Use ETA, not KAPPA, for FORMULATION PERIODIC.')
182 ELSE IF (active .AND. poisson_periodic /=
use_perd_none)
THEN
183 cpabort(
'SPECTRAL_LOCALIZER requires POISSON PERIODIC NONE.')
185 IF (active .AND. .NOT. periodic_localizer)
THEN
187 IF (explicit_scale) cpabort(
'Use KAPPA, not ETA, for FORMULATION FINITE.')
189 SELECT CASE (dft_control%qs_control%method_id)
192 cpabort(
'AO position/localizer currently supports GPW and GAPW only.')
195 IF (.NOT. qs_env%scf_convergence_available .OR. .NOT. qs_env%scf_converged)
THEN
196 cpabort(
'SPECTRAL_LOCALIZER requires a converged SCF calculation.')
202 IF (max_ao < 1 .OR. nao > max_ao)
THEN
203 cpabort(
'SPECTRAL_LOCALIZER exceeds the MAX_AO limit.')
206 IF (grid(axis) > max_ao/nao)
THEN
207 cpabort(
'SPECTRAL_LOCALIZER torus exceeds the MAX_AO limit.')
213 IF (periodic_localizer .AND. .NOT. torus)
THEN
214 CALL periodic_ao_moments(qs_env, directions(:ndim), cosines, positions)
215 ELSE IF (.NOT. periodic_localizer .AND. (active .OR. print_position))
THEN
218 IF (print_position)
THEN
221 after = min(max(after, 1), 16)
224 extension=
'.Log', middle_name=axes(axis))
225 IF (iw > 0 .AND. .NOT. omit_headers)
THEN
226 WRITE (iw,
'(A)')
'AO POSITION '//axes(axis)//
' [bohr]; coordinate origin; covariant AO matrix'
229 output_unit=iw, omit_headers=omit_headers)
237 after = min(max(after, 1), 16)
240 extension=
'.Log', middle_name=
'SOC_'//axes(axis))
241 IF (iw > 0 .AND. .NOT. omit_headers)
THEN
242 WRITE (iw,
'(A)')
'AO SOC '//axes(axis)//
' [hartree]; real antisymmetric component; multiply by i'
245 output_unit=iw, omit_headers=omit_headers)
249 IF (.NOT. active)
THEN
252 CALL timestop(handle)
258 IF (ndim == 3 .AND. .NOT. aii) cpabort(
'DIMENSION 3 requires INVARIANT Z2.')
264 IF (aii .AND. (.NOT. do_soc .OR. .NOT. time_reversal))
THEN
265 cpabort(
'SPECTRAL_LOCALIZER INVARIANT Z2 requires SOC T and TIME_REVERSAL T.')
267 CALL get_qs_env(qs_env, matrix_ks_kp=image_matrices)
268 matrix_ks => image_matrices(:, 1)
269 IF (spin_channel < 1 .OR. spin_channel >
SIZE(matrix_ks))
THEN
270 cpabort(
'SPECTRAL_LOCALIZER SPIN_CHANNEL is unavailable.')
272 IF (do_soc .AND. (
SIZE(matrix_ks) /= 1 .OR. spin_channel /= 1))
THEN
273 cpabort(
'SPECTRAL_LOCALIZER SOC requires a restricted SCF and SPIN_CHANNEL 1.')
276 IF (periodic_localizer)
THEN
281 IF (.NOT. all(ieee_is_finite(energies)) .OR. .NOT. all(ieee_is_finite(kappas)))
THEN
282 cpabort(
'SPECTRAL_LOCALIZER requires finite ENERGY and KAPPA/ETA.')
284 IF (any(kappas <= 0.0_dp))
THEN
285 cpabort(
'SPECTRAL_LOCALIZER requires positive KAPPA/ETA.')
290 IF (.NOT. all(ieee_is_finite([eps_gap, eps_metric, matrix_tolerance])))
THEN
291 cpabort(
'SPECTRAL_LOCALIZER requires finite numerical tolerances.')
293 IF (eps_gap < 0.0_dp .OR. eps_metric <= 0.0_dp .OR. eps_metric >= 1.0_dp .OR. &
294 matrix_tolerance <= 0.0_dp .OR. matrix_tolerance >= 1.0_dp)
THEN
295 cpabort(
'SPECTRAL_LOCALIZER: invalid EPS_GAP, EPS_METRIC or MATRIX_TOLERANCE.')
302 IF (.NOT. all(ieee_is_finite([flatten_scale, eps_flattening, eps_electronic_gap])))
THEN
303 cpabort(
'SPECTRAL_FLATTENING requires finite scales and tolerances.')
305 IF (flatten_scale <= 0.0_dp .OR. eps_flattening <= 0.0_dp .OR. eps_flattening >= 1.0_dp .OR. &
306 eps_electronic_gap < 0.0_dp)
THEN
307 cpabort(
'SPECTRAL_FLATTENING: invalid scale or tolerance.')
312 IF (do_soc) n = 2*nao
314 NULLIFY (matrix_ks, matrix_s)
316 cosines, positions, soc_matrices)
317 ELSE IF (do_soc)
THEN
318 IF (.NOT.
ASSOCIATED(soc_matrices))
CALL finite_ao_soc(qs_env, soc_matrices)
320 IF (output_unit > 0)
THEN
321 IF (periodic_localizer)
THEN
322 WRITE (output_unit,
'(/,T2,A)')
'SPECTRAL_LOCALIZER| Periodic Born-von-Karman DBCSR localizer'
323 WRITE (output_unit,
'(T2,A,3I6)')
'SPECTRAL_LOCALIZER| Full analysis mesh: ', grid
324 WRITE (output_unit,
'(T2,A)')
'SPECTRAL_LOCALIZER| Analytic cos(G.r)/sin(G.r); no finite-coordinate substitution.'
325 WRITE (output_unit,
'(T2,A)')
'SPECTRAL_LOCALIZER| Finite AO torus diagnostic; converge basis, supercell and ETA.'
327 WRITE (output_unit,
'(/,T2,A)')
'SPECTRAL_LOCALIZER| Finite-system DBCSR localizer'
330 WRITE (output_unit,
'(T2,A)')
'SPECTRAL_LOCALIZER| LAPACK real LU/QR sign; independent generalized chiral gap.'
332 WRITE (output_unit,
'(T2,A)')
'SPECTRAL_LOCALIZER| LAPACK LDL inertia with eigenvalue validation.'
334 WRITE (output_unit,
'(T2,A,I0)')
'SPECTRAL_LOCALIZER| Localizer dimension: ', merge(4*n, 2*n, ndim == 3)
336 WRITE (output_unit,
'(T2,A)')
'SPECTRAL_LOCALIZER| Three-dimensional AII; chiral determinant sign.'
338 WRITE (output_unit,
'(T2,A,2A)')
'SPECTRAL_LOCALIZER| Oriented plane: ', axes(directions(:2))
340 IF (.NOT. periodic_localizer)
THEN
341 WRITE (output_unit,
'(T2,A)')
'SPECTRAL_LOCALIZER| Check basis, volume and KAPPA convergence.'
343 IF (.NOT. do_soc)
WRITE (output_unit,
'(T2,A)') &
344 'SPECTRAL_LOCALIZER| Real scalar Hamiltonian: no nonzero class A Chern index is expected.'
347 ALLOCATE (flat_hamiltonian)
350 physical_h, physical_metric, soc_matrices)
353 physical_h, physical_metric)
355 IF (output_unit > 0)
THEN
356 WRITE (output_unit,
'(T2,A,ES23.14)')
'SPECTRAL_LOCALIZER| Flattening scale [hartree]: ', flatten_scale
357 WRITE (output_unit,
'(T2,A)')
'SPECTRAL_LOCALIZER| Gaps and indices refer to the flattened Hamiltonian.'
358 IF (periodic_localizer)
THEN
359 WRITE (output_unit,
'(T2,A)')
'SPECTRAL_LOCALIZER| Flattening in complete primitive Bloch blocks.'
360 WRITE (output_unit,
'(T2,A)') &
361 'SPECTRAL_LOCALIZER| Residuals: translation, metric orthonormality, eigenproblem, Hermiticity.'
365 DO ie = 1,
SIZE(energies)
366 build_energy = energies(ie)
368 CALL timeset(
'localizer_spectral_flattening', flatten_handle)
369 IF (periodic_localizer)
THEN
371 energies(ie), flatten_scale, eps_flattening, eps_metric, eps_electronic_gap, &
372 para_env, flat_hamiltonian, electronic_gap(1), physical_ratio, &
373 flatten_residuals, status)
374 electronic_gap(2) = electronic_gap(1)
377 eps_metric, eps_electronic_gap, para_env, flat_hamiltonian, &
378 electronic_gap, physical_ratio, flatten_residuals, status)
380 CALL timestop(flatten_handle)
381 IF (output_unit > 0)
THEN
382 WRITE (output_unit,
'(T2,A,ES23.14)')
'SPECTRAL_LOCALIZER| Flattening query [hartree]: ', energies(ie)
383 WRITE (output_unit,
'(T2,A,2ES23.14)') &
384 'SPECTRAL_LOCALIZER| Original electronic gap bracket [hartree]: ', electronic_gap
385 WRITE (output_unit,
'(T2,A,ES23.14)')
'SPECTRAL_LOCALIZER| Original metric ratio bound: ', physical_ratio
386 WRITE (output_unit,
'(T2,A,4ES14.5)')
'SPECTRAL_LOCALIZER| Flattening residuals: ', flatten_residuals
391 cpabort(
'SPECTRAL_FLATTENING: electronic gap unresolved; no index.')
393 cpabort(
'SPECTRAL_FLATTENING: invalid original AO metric.')
395 cpabort(
'SPECTRAL_FLATTENING: sign iteration or structure failed.')
397 cpabort(
'SPECTRAL_FLATTENING: broken torus translations.')
399 cpabort(
'SPECTRAL_FLATTENING: input or gap factorization failed.')
401 build_energy = 0.0_dp
405 IF (.NOT. all(ieee_is_finite(point)))
THEN
406 cpabort(
'SPECTRAL_LOCALIZER requires finite POSITION.')
408 local_point(:ndim) = point(directions(:ndim))
409 IF (periodic_localizer)
THEN
411 local_point(axis) =
twopi*dot_product(cell%h_inv(directions(axis), :), point)/ &
412 REAL(grid(directions(axis)),
dp)
415 DO ik = 1,
SIZE(kappas)
418 local_point, build_energy, kappas(ik), localizer, metric, soc_matrices, &
419 shifted_hamiltonian=flat_hamiltonian, periodic_cosines=cosines)
420 ELSE IF (do_soc)
THEN
422 positions(directions(1))%matrix, positions(directions(2))%matrix, &
423 local_point(:2), build_energy, kappas(ik), localizer, metric, soc_matrices, cosines, &
424 shifted_hamiltonian=flat_hamiltonian)
427 positions(directions(1))%matrix, positions(directions(2))%matrix, &
428 local_point(:2), build_energy, kappas(ik), localizer, metric, &
429 periodic_cosines=cosines, shifted_hamiltonian=flat_hamiltonian)
433 IF (para_env%is_source())
THEN
436 matrix_tolerance, eps_metric, eps_gap, invariant, gap, &
437 metric_ratio, status)
440 matrix_tolerance, eps_metric, eps_gap, invariant, gap, metric_ratio, status)
442 IF (status < 0 .AND. output_unit > 0 .AND. ndim == 2)
THEN
443 WRITE (output_unit,
'(T2,A,I0,2ES14.5)') &
444 'SPECTRAL_LOCALIZER| Failure status and L/B Hermiticity residuals: ', status, &
445 maxval(abs(local_dense - conjg(transpose(local_dense)))), &
446 maxval(abs(metric_dense - conjg(transpose(metric_dense))))
449 DEALLOCATE (local_dense, metric_dense)
452 CALL para_env%bcast(status, para_env%source)
453 IF (status < 0 .OR. status > 1)
THEN
456 cpabort(
'SPECTRAL_LOCALIZER: invalid AO metric; check basis/EPS_METRIC.')
458 cpabort(
'SPECTRAL_LOCALIZER: broken physical TR/AII structure.')
460 cpabort(
'SPECTRAL_LOCALIZER: invalid data or factorization failure.')
463 CALL para_env%bcast(invariant, para_env%source)
464 CALL para_env%bcast(gap, para_env%source)
465 CALL para_env%bcast(metric_ratio, para_env%source)
466 IF (output_unit > 0)
THEN
467 WRITE (output_unit,
'(T2,A,3ES23.14)')
'SPECTRAL_LOCALIZER| Position [bohr]: ', point
468 WRITE (output_unit,
'(T2,A,ES23.14)')
'SPECTRAL_LOCALIZER| Energy [hartree]: ', energies(ie)
469 IF (periodic_localizer)
THEN
470 WRITE (output_unit,
'(T2,A,ES23.14)')
'SPECTRAL_LOCALIZER| Eta [hartree]: ', kappas(ik)
472 WRITE (output_unit,
'(T2,A,ES23.14)')
'SPECTRAL_LOCALIZER| Kappa [hartree/bohr]: ', kappas(ik)
474 WRITE (output_unit,
'(T2,A,ES23.14)')
'SPECTRAL_LOCALIZER| Metric ratio: ', metric_ratio
475 WRITE (output_unit,
'(T2,A,ES23.14)')
'SPECTRAL_LOCALIZER| Gap [hartree]: ', gap
476 IF (status == 1)
THEN
477 WRITE (output_unit,
'(T2,A)')
'SPECTRAL_LOCALIZER| UNRESOLVED: gap or factorization below accuracy; no index.'
479 WRITE (output_unit,
'(T2,A,I0)')
'SPECTRAL_LOCALIZER| Z2 index: ', invariant
481 WRITE (output_unit,
'(T2,A,I0)')
'SPECTRAL_LOCALIZER| Chern index: ', invariant
491 DEALLOCATE (flat_hamiltonian)
500 CALL timestop(handle)
510 SUBROUTINE periodic_ao_moments(qs_env, directions, cosines, sines)
512 INTEGER,
INTENT(IN) :: directions(:)
520 CALL get_qs_env(qs_env, cell=cell, matrix_s=matrix_s, sab_orb=sab_orb)
521 ALLOCATE (cosines(
SIZE(directions)), sines(3))
523 ALLOCATE (sines(j)%matrix)
524 CALL dbcsr_create(sines(j)%matrix, template=matrix_s(1)%matrix, name=
'TORUS SIN')
528 DO j = 1,
SIZE(directions)
529 ALLOCATE (cosines(j)%matrix)
530 CALL dbcsr_create(cosines(j)%matrix, template=matrix_s(1)%matrix, name=
'TORUS COS')
532 CALL dbcsr_set(cosines(j)%matrix, 0.0_dp)
534 twopi*cell%h_inv(directions(j), :))
536 END SUBROUTINE periodic_ao_moments
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public wong2026
integer, save, public dixon2023
integer, save, public doll2025
integer, save, public loring2015
Handles all functions related to the CELL.
integer, parameter, public use_perd_xyz
integer, parameter, public use_perd_xz
integer, parameter, public use_perd_yz
integer, parameter, public use_perd_none
integer, parameter, public use_perd_xy
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dbcsr_get_info(matrix, nblkrows_total, nblkcols_total, nfullrows_total, nfullcols_total, nblkrows_local, nblkcols_local, nfullrows_local, nfullcols_local, my_prow, my_pcol, local_rows, local_cols, proc_row_dist, proc_col_dist, row_blk_size, col_blk_size, row_blk_offset, col_blk_offset, distribution, name, matrix_type, group)
...
subroutine, public dbcsr_set(matrix, alpha)
...
Routines that link DBCSR and CP2K concepts together.
subroutine, public cp_dbcsr_alloc_block_from_nbl(matrix, sab_orb, desymmetrize)
allocate the blocks of a dbcsr based on the neighbor list
DBCSR operations in CP2K.
subroutine, public cp_dbcsr_write_sparse_matrix(sparse_matrix, before, after, qs_env, para_env, first_row, last_row, first_col, last_col, scale, output_unit, omit_headers, cartesian_basis)
...
various routines to log and control the output. The idea is that decisions about where to log should ...
integer function, public cp_logger_get_default_io_unit(logger)
returns the unit nr for the ionode (-1 on all other processors) skips as well checks if the procs cal...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
integer, parameter, public cp_p_file
integer function, public cp_print_key_should_output(iteration_info, basis_section, print_key_path, used_print_key, first_time)
returns what should be done with the given property if btest(res,cp_p_store) then the property should...
Defines the basic variable types.
integer, parameter, public dp
Definition of mathematical constants and functions.
real(kind=dp), parameter, public twopi
Interface to the message passing library MPI.
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, matrix_vhxc, 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.
Shared finite-system AO position and SOC operators for post-SCF analyses.
subroutine, public finite_ao_soc(qs_env, soc_matrices)
Validate and construct post-SCF GTH SOC components shared by finite AO analyses.
subroutine, public finite_ao_positions(qs_env, positions)
Analytic covariant first moments in the coordinate frame of SUBSYS/COORD.
Full Born-von-Karman AO operators at a frozen SCF potential.
subroutine, public localizer_torus_operators(qs_env, grid, directions, do_soc, h, s, cosines, sines, soc)
Lift scalar image operators and ordered Berry integrals to a full real-cell torus.
Calculates the moment integrals <a|r^m|b> and <a|r x d/dr|b>.
subroutine, public build_berry_moment_matrix(qs_env, cosmat, sinmat, kvec, sab_orb_external, basis_type)
...
Define the neighbor list data types and the corresponding functionality.
Post-SCF finite-system spectral localizers and analytic AO position export.
subroutine, public qs_scf_post_localizer(qs_env)
Export finite AO positions and optionally evaluate localizers after SCF.
provides a uniform framework to add references to CP2K cite and output these
subroutine, public cite_reference(key)
marks a given reference as cited.
Exact spectral flattening of a translation-invariant AO torus in primitive Bloch blocks.
subroutine, public localizer_flatten_bloch(h, s, grid, nspin, energy, scale, tolerance, metric_tolerance, gap_tolerance, para_env, flattened, gap, metric_ratio, residuals, status)
Flatten all Bloch bands, then return to the original distributed real-cell/spin AO basis.
Distributed block-sparse finite localizers, retaining the covariant AO metric.
subroutine, public localizer_ao_operators(h, s, positions, operators, metric, soc)
Shared AO Hamiltonian, Hermitian scalar observables and optional GTH physical-spin SOC.
subroutine, public localizer_dbcsr_dense(matrix, para_env, dense)
Collect the size-limited dense oracle; sparse solvers must not call this routine.
subroutine, public localizer_dbcsr_release(matrix)
Release both real components of a complex sparse operator.
subroutine, public localizer_dbcsr_build(h, s, x, y, point, energy, kappa, localizer, metric, soc, periodic_cosines, shifted_hamiltonian)
Assemble L and B=diag(S,S), including optional physical spin and SOC, without dense AOs.
subroutine, public localizer_dbcsr_3d_build(h, s, positions, point, energy, kappa, block, metric, soc, shifted_hamiltonian, periodic_cosines)
Build the 3D AII chiral block in DBCSR; not a Hermitian 2D localizer.
Metric-covariant spectral flattening with existing distributed matrix iterations.
subroutine, public localizer_flatten_checked(h, s, energy, scale, tolerance, metric_tolerance, gap_tolerance, para_env, flattened, gap, metric_ratio, residuals, status)
Establish a positive AO metric and electronic gap before iterating the matrix sign.
Dense reference spectral localizers in a nonorthogonal finite basis.
subroutine, public localizer_matrix_evaluate(localizer, s, aii, matrix_tol, metric_tol, gap_tol, invariant, gap, metric_ratio, status)
Dense reference evaluation of an assembled localizer with metric diag(S,S).
subroutine, public localizer_3d_matrix_evaluate(block, s, matrix_tol, metric_tol, gap_tol, invariant, gap, metric_ratio, status)
Metric gap and real determinant sign of a three-dimensional AII chiral block.
Control for reading in different topologies and coordinates.
Type defining parameters related to the simulation cell.
type of a logger, at the moment it contains just a print level starting at which level it should be l...
stores all the informations relevant to an mpi environment