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
135#include "./base/base_uses.f90"
141 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_core_hamiltonian'
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
173 TYPE(dbcsr_distribution_type),
POINTER :: dbcsr_dist
174 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_h, matrix_p, matrix_s, matrix_t, &
180 POINTER :: sab_orb, sap_oce
184 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
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)
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
433 POINTER :: sab_orb, sac_ae, sac_ppl, sap_ppnl
436 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
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
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
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
572 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_v
573 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrixkp_h, matrixkp_s, matrixkp_t
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)
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
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
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
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 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.
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.
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 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)
...
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)
...
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...
Provides all information about an atomic kind.
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
type of a logger, at the moment it contains just a print level starting at which level it should be l...
Contains all the info needed for KG runs...
Contains information about kpoints.
stores all the informations relevant to an mpi environment
Provides all information about a quickstep kind.
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...
keeps the density in various representations, keeping track of which ones are valid.