96 USE dbcsr_api,
ONLY: &
97 dbcsr_add, dbcsr_copy, dbcsr_create, dbcsr_distribution_type, dbcsr_iterator_blocks_left, &
98 dbcsr_iterator_next_block, dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, &
99 dbcsr_p_type, dbcsr_set, dbcsr_type, dbcsr_type_antisymmetric
117 qs_environment_type,&
135 #include "./base/base_uses.f90"
141 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_core_hamiltonian'
158 TYPE(qs_environment_type),
POINTER :: qs_env
159 LOGICAL,
INTENT(IN) :: calculate_forces
161 CHARACTER(LEN=*),
PARAMETER :: routinen =
'build_core_hamiltonian_matrix'
163 INTEGER :: handle, ic, img, iw, nder, nders, &
165 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index
166 LOGICAL :: h_is_complex, norml1, norml2, ofdft, &
167 use_arnoldi, use_virial
168 REAL(kind=
dp) :: eps_filter, eps_fit
169 REAL(kind=
dp),
DIMENSION(2) :: condnum
170 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
171 TYPE(cp_blacs_env_type),
POINTER :: blacs_env
172 TYPE(cp_logger_type),
POINTER :: logger
173 TYPE(dbcsr_distribution_type),
POINTER :: dbcsr_dist
174 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_h, matrix_p, matrix_s, matrix_t, &
176 TYPE(dft_control_type),
POINTER :: dft_control
177 TYPE(kg_environment_type),
POINTER :: kg_env
178 TYPE(kpoint_type),
POINTER :: kpoints
179 TYPE(neighbor_list_set_p_type),
DIMENSION(:), &
180 POINTER :: sab_orb, sap_oce
181 TYPE(oce_matrix_type),
POINTER :: oce
182 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
183 TYPE(qs_force_type),
DIMENSION(:),
POINTER :: force
184 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
185 TYPE(qs_ks_env_type),
POINTER :: ks_env
186 TYPE(qs_rho_type),
POINTER :: rho
187 TYPE(virial_type),
POINTER :: virial
189 IF (calculate_forces)
THEN
190 CALL timeset(routinen//
"_forces", handle)
192 CALL timeset(routinen, handle)
198 NULLIFY (dft_control)
199 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control)
202 ofdft = dft_control%qs_control%ofgpw
204 nimages = dft_control%nimages
206 cpassert(nimages == 1)
210 IF (calculate_forces)
THEN
214 "DFT%PRINT%AO_MATRICES/DERIVATIVES") /= 0)
THEN
222 "DFT%PRINT%AO_MATRICES/OVERLAP") /= 0 .AND. &
224 "DFT%PRINT%AO_MATRICES/DERIVATIVES"),
cp_p_file)))
THEN
230 IF (
ASSOCIATED(dft_control%rtp_control))
THEN
231 IF (dft_control%rtp_control%apply_delta_pulse .AND. &
232 dft_control%rtp_control%periodic)
THEN
237 IF (dft_control%tddfpt2_control%enabled)
THEN
239 IF (dft_control%do_admm)
THEN
241 CALL cp_abort(__location__, &
242 "Only purification method NONE is possible with TDDFT at the moment")
247 eps_filter = dft_control%qs_control%eps_filter_matrix
251 NULLIFY (matrix_s, matrix_t)
252 CALL get_qs_env(qs_env=qs_env, kinetic_kp=matrix_t, matrix_s_kp=matrix_s)
254 CALL get_qs_env(qs_env=qs_env, sab_orb=sab_orb)
255 NULLIFY (rho, force, matrix_p, matrix_w)
256 IF (calculate_forces)
THEN
257 CALL get_qs_env(qs_env=qs_env, force=force, matrix_w_kp=matrix_w)
266 IF (
SIZE(matrix_p, 1) == 2)
THEN
268 CALL dbcsr_add(matrix_p(1, img)%matrix, matrix_p(2, img)%matrix, &
269 alpha_scalar=1.0_dp, beta_scalar=1.0_dp)
270 CALL dbcsr_add(matrix_p(2, img)%matrix, matrix_p(1, img)%matrix, &
271 alpha_scalar=-2.0_dp, beta_scalar=1.0_dp)
272 CALL dbcsr_add(matrix_w(1, img)%matrix, matrix_w(2, img)%matrix, &
273 alpha_scalar=1.0_dp, beta_scalar=1.0_dp)
278 matrix_name=
"OVERLAP MATRIX", &
279 basis_type_a=
"ORB", &
280 basis_type_b=
"ORB", &
281 sab_nl=sab_orb, calculate_forces=.true., &
286 matrix_name=
"KINETIC ENERGY MATRIX", &
288 sab_nl=sab_orb, calculate_forces=.true., &
289 matrixkp_p=matrix_p, &
290 eps_filter=eps_filter)
295 IF (
SIZE(matrix_p, 1) == 2)
THEN
297 CALL dbcsr_add(matrix_p(1, img)%matrix, matrix_p(2, img)%matrix, &
298 alpha_scalar=0.5_dp, beta_scalar=0.5_dp)
299 CALL dbcsr_add(matrix_p(2, img)%matrix, matrix_p(1, img)%matrix, &
300 alpha_scalar=-1.0_dp, beta_scalar=1.0_dp)
306 matrix_name=
"OVERLAP MATRIX", &
307 basis_type_a=
"ORB", &
308 basis_type_b=
"ORB", &
313 matrix_name=
"KINETIC ENERGY MATRIX", &
316 eps_filter=eps_filter)
320 CALL get_ks_env(ks_env, complex_ks=h_is_complex)
321 CALL qs_matrix_h_allocate(qs_env, matrix_s(1, 1)%matrix, is_complex=h_is_complex)
326 IF (.NOT. ofdft)
THEN
328 CALL dbcsr_copy(matrix_h(1, img)%matrix, matrix_t(1, img)%matrix, &
329 keep_sparsity=.true., name=
"CORE HAMILTONIAN MATRIX")
333 NULLIFY (qs_kind_set, atomic_kind_set, particle_set)
334 CALL get_qs_env(qs_env=qs_env, qs_kind_set=qs_kind_set, atomic_kind_set=atomic_kind_set, &
335 particle_set=particle_set)
337 IF (.NOT. ofdft)
THEN
339 IF (qs_env%rel_control%rel_method /=
rel_none)
THEN
341 IF (nimages == 1)
THEN
344 CALL get_ks_env(ks_env=ks_env, kpoints=kpoints)
346 ic = cell_to_index(0, 0, 0)
348 CALL build_atomic_relmat(matrix_h(1, 1)%matrix, atomic_kind_set, qs_kind_set)
350 cpabort(
"Relativistic corrections of this type are currently not implemented")
356 CALL core_matrices(qs_env, matrix_h, matrix_p, calculate_forces, nder)
360 CALL get_qs_env(qs_env=qs_env, sap_oce=sap_oce)
362 IF (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc)
THEN
365 nkind =
SIZE(atomic_kind_set)
367 eps_fit = dft_control%qs_control%gapw_control%eps_fit
368 IF (
ASSOCIATED(sap_oce)) &
369 CALL build_oce_matrices(oce%intac, calculate_forces, nder, qs_kind_set, particle_set, &
374 IF (dft_control%qs_control%do_kg)
THEN
376 CALL get_qs_env(qs_env=qs_env, kg_env=kg_env, virial=virial, dbcsr_dist=dbcsr_dist)
377 use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
378 CALL build_tnadd_mat(kg_env, matrix_p, force, virial, calculate_forces, use_virial, &
379 qs_kind_set, atomic_kind_set, particle_set, sab_orb, dbcsr_dist)
385 CALL set_ks_env(ks_env, matrix_s_kp=matrix_s, kinetic_kp=matrix_t, matrix_h_kp=matrix_h)
391 IF (.NOT. calculate_forces)
THEN
393 "DFT%PRINT%OVERLAP_CONDITION") .NE. 0)
THEN
397 CALL section_vals_val_get(qs_env%input,
"DFT%PRINT%OVERLAP_CONDITION%DIAGONALIZATION", l_val=norml2)
398 CALL section_vals_val_get(qs_env%input,
"DFT%PRINT%OVERLAP_CONDITION%ARNOLDI", l_val=use_arnoldi)
399 CALL get_qs_env(qs_env=qs_env, blacs_env=blacs_env)
400 CALL overlap_condnum(matrix_s, condnum, iw, norml1, norml2, use_arnoldi, blacs_env)
404 CALL timestop(handle)
416 SUBROUTINE core_matrices(qs_env, matrix_h, matrix_p, calculate_forces, nder)
418 TYPE(qs_environment_type),
POINTER :: qs_env
419 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_h, matrix_p
420 LOGICAL,
INTENT(IN) :: calculate_forces
421 INTEGER,
INTENT(IN) :: nder
424 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index
425 LOGICAL :: all_present, my_gt_nl, ppl_present, &
426 ppnl_present, use_virial
427 REAL(kind=
dp) :: eps_ppnl
428 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
429 TYPE(dft_control_type),
POINTER :: dft_control
430 TYPE(kpoint_type),
POINTER :: kpoints
431 TYPE(lri_environment_type),
POINTER :: lri_env
432 TYPE(neighbor_list_set_p_type),
DIMENSION(:), &
433 POINTER :: sab_orb, sac_ae, sac_ppl, sap_ppnl
434 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
435 TYPE(qs_force_type),
DIMENSION(:),
POINTER :: force
436 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
437 TYPE(qs_ks_env_type),
POINTER :: ks_env
438 TYPE(virial_type),
POINTER :: virial
440 NULLIFY (dft_control)
441 CALL get_qs_env(qs_env=qs_env, ks_env=ks_env, dft_control=dft_control)
442 nimages = dft_control%nimages
446 IF (qs_env%run_rtp)
THEN
447 cpassert(
ASSOCIATED(dft_control%rtp_control))
448 IF (dft_control%rtp_control%velocity_gauge)
THEN
449 my_gt_nl = dft_control%rtp_control%nl_gauge_transform
454 NULLIFY (cell_to_index)
455 IF (nimages > 1)
THEN
456 CALL get_ks_env(ks_env=ks_env, kpoints=kpoints)
461 IF (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc)
THEN
467 IF (calculate_forces)
CALL get_qs_env(qs_env=qs_env, force=force)
470 use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
472 NULLIFY (qs_kind_set, atomic_kind_set, particle_set)
473 CALL get_qs_env(qs_env=qs_env, qs_kind_set=qs_kind_set, atomic_kind_set=atomic_kind_set, &
474 particle_set=particle_set)
476 NULLIFY (sab_orb, sac_ae, sac_ppl, sap_ppnl)
484 all_present =
ASSOCIATED(sac_ae)
485 IF (all_present)
THEN
486 CALL build_core_ae(matrix_h, matrix_p, force, virial, calculate_forces, use_virial, nder, &
487 qs_kind_set, atomic_kind_set, particle_set, sab_orb, sac_ae, nimages, cell_to_index)
491 ppl_present =
ASSOCIATED(sac_ppl)
492 IF (ppl_present)
THEN
494 IF (dft_control%qs_control%lrigpw)
THEN
496 IF (lri_env%ppl_ri)
THEN
497 IF (lri_env%exact_1c_terms)
THEN
498 cpabort(
"not implemented")
501 CALL build_core_ppl(matrix_h, matrix_p, force, virial, calculate_forces, use_virial, nder, &
502 qs_kind_set, atomic_kind_set, particle_set, sab_orb, sac_ppl, &
503 nimages, cell_to_index,
"ORB")
506 CALL build_core_ppl(matrix_h, matrix_p, force, virial, calculate_forces, use_virial, nder, &
507 qs_kind_set, atomic_kind_set, particle_set, sab_orb, sac_ppl, &
508 nimages, cell_to_index,
"ORB")
514 eps_ppnl = dft_control%qs_control%eps_ppnl
515 ppnl_present =
ASSOCIATED(sap_ppnl)
516 IF (ppnl_present)
THEN
517 IF (.NOT. my_gt_nl)
THEN
518 CALL build_core_ppnl(matrix_h, matrix_p, force, virial, calculate_forces, use_virial, nder, &
519 qs_kind_set, atomic_kind_set, particle_set, sab_orb, sap_ppnl, eps_ppnl, &
520 nimages, cell_to_index,
"ORB")
524 END SUBROUTINE core_matrices
532 SUBROUTINE build_atomic_relmat(matrix_h, atomic_kind_set, qs_kind_set)
533 TYPE(dbcsr_type),
POINTER :: matrix_h
534 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
535 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
537 INTEGER :: blk, iatom, ikind, jatom
538 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: kind_of
539 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: hblock, reltmat
540 TYPE(dbcsr_iterator_type) :: iter
544 CALL dbcsr_iterator_start(iter, matrix_h)
545 DO WHILE (dbcsr_iterator_blocks_left(iter))
546 CALL dbcsr_iterator_next_block(iter, iatom, jatom, hblock, blk)
547 IF (iatom == jatom)
THEN
548 ikind = kind_of(iatom)
549 CALL get_qs_kind(qs_kind_set(ikind), reltmat=reltmat)
550 IF (
ASSOCIATED(reltmat)) hblock = hblock + reltmat
553 CALL dbcsr_iterator_stop(iter)
555 END SUBROUTINE build_atomic_relmat
564 TYPE(qs_environment_type),
POINTER :: qs_env
565 LOGICAL,
INTENT(IN) :: calculate_forces
567 CHARACTER(LEN=*),
PARAMETER :: routinen =
'dump_info_core_hamiltonian'
569 INTEGER :: after, handle, i, ic, iw, output_unit
570 LOGICAL :: omit_headers
571 TYPE(cp_logger_type),
POINTER :: logger
572 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_v
573 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrixkp_h, matrixkp_s, matrixkp_t
574 TYPE(mp_para_env_type),
POINTER :: para_env
576 CALL timeset(routinen, handle)
578 NULLIFY (logger, matrix_v, para_env)
584 IF (.NOT. calculate_forces)
THEN
586 qs_env%input,
"PRINT%DISTRIBUTION"),
cp_p_file))
THEN
588 extension=
".distribution")
589 CALL get_qs_env(qs_env, matrix_s_kp=matrixkp_s)
595 CALL section_vals_val_get(qs_env%input,
"DFT%PRINT%AO_MATRICES%OMIT_HEADERS", l_val=omit_headers)
598 qs_env%input,
"DFT%PRINT%AO_MATRICES/OVERLAP"),
cp_p_file))
THEN
602 after = min(max(after, 1), 16)
603 CALL get_qs_env(qs_env, matrix_s_kp=matrixkp_s)
604 IF (
ASSOCIATED(matrixkp_s))
THEN
605 DO ic = 1,
SIZE(matrixkp_s, 2)
607 output_unit=iw, omit_headers=omit_headers)
610 "DFT%PRINT%AO_MATRICES/DERIVATIVES"),
cp_p_file))
THEN
611 DO ic = 1,
SIZE(matrixkp_s, 2)
612 DO i = 2,
SIZE(matrixkp_s, 1)
614 output_unit=iw, omit_headers=omit_headers)
620 "DFT%PRINT%AO_MATRICES/OVERLAP")
625 qs_env%input,
"DFT%PRINT%AO_MATRICES/KINETIC_ENERGY"),
cp_p_file))
THEN
629 after = min(max(after, 1), 16)
630 CALL get_qs_env(qs_env, kinetic_kp=matrixkp_t)
631 IF (
ASSOCIATED(matrixkp_t))
THEN
632 DO ic = 1,
SIZE(matrixkp_t, 2)
634 output_unit=iw, omit_headers=omit_headers)
638 "DFT%PRINT%AO_MATRICES/KINETIC_ENERGY")
643 qs_env%input,
"DFT%PRINT%AO_MATRICES/POTENTIAL_ENERGY"),
cp_p_file))
THEN
647 after = min(max(after, 1), 16)
648 CALL get_qs_env(qs_env, matrix_h_kp=matrixkp_h, kinetic_kp=matrixkp_t)
649 IF (
ASSOCIATED(matrixkp_h))
THEN
650 IF (
SIZE(matrixkp_h, 2) == 1)
THEN
652 ALLOCATE (matrix_v(1)%matrix)
653 CALL dbcsr_copy(matrix_v(1)%matrix, matrixkp_h(1, 1)%matrix, name=
"POTENTIAL ENERGY MATRIX")
654 CALL dbcsr_add(matrix_v(1)%matrix, matrixkp_t(1, 1)%matrix, &
655 alpha_scalar=1.0_dp, beta_scalar=-1.0_dp)
657 para_env, output_unit=iw, omit_headers=omit_headers)
660 cpwarn(
"Printing of potential energy matrix not implemented for k-points")
664 "DFT%PRINT%AO_MATRICES/POTENTIAL_ENERGY")
669 qs_env%input,
"DFT%PRINT%AO_MATRICES/CORE_HAMILTONIAN"),
cp_p_file))
THEN
673 after = min(max(after, 1), 16)
674 CALL get_qs_env(qs_env, matrix_h_kp=matrixkp_h)
675 IF (
ASSOCIATED(matrixkp_h))
THEN
676 DO ic = 1,
SIZE(matrixkp_h, 2)
678 output_unit=iw, omit_headers=omit_headers)
682 "DFT%PRINT%AO_MATRICES/CORE_HAMILTONIAN")
685 CALL timestop(handle)
695 SUBROUTINE qs_matrix_h_allocate(qs_env, template, is_complex)
696 TYPE(qs_environment_type) :: qs_env
697 TYPE(dbcsr_type),
INTENT(in) :: template
698 LOGICAL,
INTENT(in) :: is_complex
700 CHARACTER(LEN=default_string_length) :: headline
701 INTEGER :: img, nimages
702 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_h, matrix_h_im
703 TYPE(dft_control_type),
POINTER :: dft_control
704 TYPE(neighbor_list_set_p_type),
DIMENSION(:), &
706 TYPE(qs_ks_env_type),
POINTER :: ks_env
708 NULLIFY (matrix_h, matrix_h_im, sab_orb, dft_control, ks_env)
710 matrix_h_kp=matrix_h, &
711 matrix_h_im_kp=matrix_h_im, &
713 dft_control=dft_control, &
716 nimages = dft_control%nimages
718 headline =
"CORE HAMILTONIAN MATRIX"
720 ALLOCATE (matrix_h(1, img)%matrix)
721 CALL dbcsr_create(matrix_h(1, img)%matrix, name=trim(headline), template=template)
723 CALL dbcsr_set(matrix_h(1, img)%matrix, 0.0_dp)
728 headline =
"IMAGINARY PART OF CORE HAMILTONIAN MATRIX"
731 ALLOCATE (matrix_h_im(1, img)%matrix)
732 CALL dbcsr_create(matrix_h_im(1, img)%matrix, name=trim(headline), template=template, &
733 matrix_type=dbcsr_type_antisymmetric)
735 CALL dbcsr_set(matrix_h_im(1, img)%matrix, 0.0_dp)
737 CALL set_ks_env(ks_env, matrix_h_im_kp=matrix_h_im)
740 END SUBROUTINE qs_matrix_h_allocate
747 TYPE(qs_environment_type) :: qs_env
749 CHARACTER(LEN=default_string_length) :: headline
750 INTEGER :: image, nimages
751 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_h, matrix_h_im
752 TYPE(dbcsr_type),
POINTER :: template
753 TYPE(dft_control_type),
POINTER :: dft_control
754 TYPE(neighbor_list_set_p_type),
DIMENSION(:), &
756 TYPE(qs_ks_env_type),
POINTER :: ks_env
758 NULLIFY (matrix_h_im, matrix_h, dft_control, template, sab_orb, ks_env)
761 matrix_h_im_kp=matrix_h_im, &
762 matrix_h_kp=matrix_h, &
763 dft_control=dft_control, &
767 nimages = dft_control%nimages
769 cpassert(nimages .EQ.
SIZE(matrix_h, 2))
773 DO image = 1, nimages
774 headline =
"IMAGINARY CORE HAMILTONIAN MATRIX"
775 ALLOCATE (matrix_h_im(1, image)%matrix)
776 template => matrix_h(1, image)%matrix
777 CALL dbcsr_create(matrix=matrix_h_im(1, image)%matrix, template=template, &
778 name=trim(headline), matrix_type=dbcsr_type_antisymmetric, nze=0)
780 CALL dbcsr_set(matrix_h_im(1, image)%matrix, 0.0_dp)
782 CALL set_ks_env(ks_env, matrix_h_im_kp=matrix_h_im)
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind_set(atomic_kind_set, atom_of_kind, kind_of, natom_of_kind, maxatom, natom, nshell, fist_potential_present, shell_present, shell_adiabatic, shell_check_distance, damping_present)
Get attributes of an atomic kind set.
Calculation of the nuclear attraction contribution to the core Hamiltonian <a|erfc|b> :we only calcul...
subroutine, public build_core_ae(matrix_h, matrix_p, force, virial, calculate_forces, use_virial, nder, qs_kind_set, atomic_kind_set, particle_set, sab_orb, sac_ae, nimages, cell_to_index)
...
Calculation of the local pseudopotential contribution to the core Hamiltonian <a|V(local)|b> = <a|Sum...
subroutine, public build_core_ppl(matrix_h, matrix_p, force, virial, calculate_forces, use_virial, nder, qs_kind_set, atomic_kind_set, particle_set, sab_orb, sac_ppl, nimages, cell_to_index, basis_type, deltaR)
...
Calculation of the non-local pseudopotential contribution to the core Hamiltonian <a|V(non-local)|b> ...
subroutine, public build_core_ppnl(matrix_h, matrix_p, force, virial, calculate_forces, use_virial, nder, qs_kind_set, atomic_kind_set, particle_set, sab_orb, sap_ppnl, eps_ppnl, nimages, cell_to_index, basis_type, deltaR, matrix_l)
...
methods related to the blacs parallel environment
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
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_matrix_dist(matrix, output_unit, para_env)
Print the distribution of a sparse matrix.
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)
...
various routines to log and control the output. The idea is that decisions about where to log should ...
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...
Types needed for a Kim-Gordon-like partitioning into molecular subunits.
Calculation of the local potential contribution of the nonadditive kinetic energy <a|V(local)|b> = <a...
subroutine, public build_tnadd_mat(kg_env, matrix_p, force, virial, calculate_forces, use_virial, qs_kind_set, atomic_kind_set, particle_set, sab_orb, dbcsr_dist)
...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Types and basic routines needed for a kpoint calculation.
subroutine, public get_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, para_env, blacs_env_all, para_env_kp, para_env_inter_kp, blacs_env, kp_env, kp_aux_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, index_to_cell, sab_nl, sab_nl_nosym)
Retrieve information from a kpoint environment.
contains the types and subroutines for dealing with the lri_env lri : local resolution of the identit...
Interface to the message passing library MPI.
Define the data structure for the particle information.
Calculation of overlap matrix condition numbers.
subroutine, public overlap_condnum(matrixkp_s, condnum, iunit, norml1, norml2, use_arnoldi, blacs_env)
Calculation of the overlap matrix Condition Number.
Calculation of the core Hamiltonian integral matrix <a|H|b> over Cartesian Gaussian-type functions.
subroutine, public build_core_hamiltonian_matrix(qs_env, calculate_forces)
Cosntruction of the QS Core Hamiltonian Matrix.
subroutine, public dump_info_core_hamiltonian(qs_env, calculate_forces)
Possibly prints matrices after the construction of the Core Hamiltonian Matrix.
subroutine, public qs_matrix_h_allocate_imag_from_real(qs_env)
(Re-)allocates matrix_h_im from matrix_h
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, 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_nonbond, sab_almo, sab_kp, sab_kp_nosym, 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, 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, ecoul_1c, rho0_s_rs, rho0_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, 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, rhs)
Get the QUICKSTEP environment.
subroutine, public set_qs_env(qs_env, super_cell, mos, qmmm, qmmm_periodic, ewald_env, ewald_pw, mpools, rho_external, external_vxc, mask, scf_control, rel_control, qs_charges, ks_env, ks_qmmm_env, wf_history, scf_env, active_space, input, oce, rho_atom_set, rho0_atom_set, rho0_mpole, run_rtp, rtp, rhoz_set, rhoz_tot, ecoul_1c, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, efield, linres_control, xas_env, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, ls_scf_env, do_transport, transport_env, lri_env, lri_density, exstate_env, ec_env, dispersion_env, gcp_env, mp2_env, bs_env, kg_env, force, kpoints, WannierCentres, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, rhs)
Set the QUICKSTEP environment.
Define the quickstep kind type and their sub types.
subroutine, public get_qs_kind(qs_kind, basis_set, basis_type, ncgf, nsgf, all_potential, tnadd_potential, gth_potential, sgp_potential, upf_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, zeff, elec_conf, mao, lmax_dftb, alpha_core_charge, ccore_charge, core_charge, core_charge_radius, paw_proj_set, paw_atom, hard_radius, hard0_radius, max_rad_local, covalent_radius, vdw_radius, gpw_r3d_rs_type_forced, harmonics, max_iso_not0, max_s_harm, grid_atom, ngrid_ang, ngrid_rad, lmax_rho0, dft_plus_u_atom, l_of_dft_plus_u, n_of_dft_plus_u, u_minus_j, U_of_dft_plus_u, J_of_dft_plus_u, alpha_of_dft_plus_u, beta_of_dft_plus_u, J0_of_dft_plus_u, occupation_of_dft_plus_u, dispersion, bs_occupation, magnetization, no_optimize, addel, laddel, naddel, orbitals, max_scf, eps_scf, smear, u_ramping, u_minus_j_target, eps_u_ramping, init_u_ramping_each_scf, reltmat, ghost, floating, name, element_symbol, pao_basis_size, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
Calculation of kinetic energy matrix and forces.
subroutine, public build_kinetic_matrix(ks_env, matrix_t, matrixkp_t, matrix_name, basis_type, sab_nl, calculate_forces, matrix_p, matrixkp_p, eps_filter, nderivative)
Calculation of the kinetic energy matrix over Cartesian Gaussian functions.
subroutine, public get_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_RI_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_RI_aux_kp, matrix_ks_im_kp, rho, rho_xc, vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, task_list, task_list_soft, kpoints, do_kpoints, atomic_kind_set, qs_kind_set, cell, cell_ref, use_ref_cell, particle_set, energy, force, local_particles, local_molecules, molecule_kind_set, molecule_set, subsys, cp_subsys, virial, results, atprop, nkind, natom, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env, nelectron_total, nelectron_spin)
...
subroutine, public set_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_RI_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_RI_aux_kp, matrix_ks_im_kp, vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, kpoints, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, task_list, task_list_soft, subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env)
...
Define the neighbor list data types and the corresponding functionality.
Routines for the construction of the coefficients for the expansion of the atomic densities rho1_hard...
subroutine, public build_oce_matrices(intac, calculate_forces, nder, qs_kind_set, particle_set, sap_oce, eps_fit)
Set up the sparse matrix for the coefficients of one center expansions This routine uses the same log...
subroutine, public allocate_oce_set(oce_set, nkind)
Allocate and initialize the matrix set of oce coefficients.
subroutine, public create_oce_set(oce_set)
...
Calculation of overlap matrix, its derivatives and forces.
subroutine, public build_overlap_matrix(ks_env, matrix_s, matrixkp_s, matrix_name, nderivative, basis_type_a, basis_type_b, sab_nl, calculate_forces, matrix_p, matrixkp_p)
Calculation of the overlap matrix over Cartesian Gaussian functions.
superstucture that hold various representations of the density and keeps track of which ones are vali...
subroutine, public qs_rho_get(rho_struct, rho_ao, rho_ao_im, rho_ao_kp, rho_ao_im_kp, rho_r, drho_r, rho_g, drho_g, tau_r, tau_g, rho_r_valid, drho_r_valid, rho_g_valid, drho_g_valid, tau_r_valid, tau_g_valid, tot_rho_r, tot_rho_g, rho_r_sccs, soft_valid, complex_rho_ao)
returns info about the density described by this object. If some representation is not available an e...