219#include "./base/base_uses.f90"
226 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_environment'
252 SUBROUTINE qs_init(qs_env, para_env, root_section, globenv, cp_subsys, kpoint_env, cell, cell_ref, &
253 qmmm, qmmm_env_qm, force_env_section, subsys_section, &
254 use_motion_section, silent)
262 TYPE(
cell_type),
OPTIONAL,
POINTER :: cell, cell_ref
263 LOGICAL,
INTENT(IN),
OPTIONAL :: qmmm
266 LOGICAL,
INTENT(IN) :: use_motion_section
267 LOGICAL,
INTENT(IN),
OPTIONAL :: silent
269 CHARACTER(LEN=default_string_length) :: basis_type
270 INTEGER :: ikind, method_id, nelectron_total, &
272 LOGICAL :: do_admm_rpa, do_ec_hfx, do_et, do_exx, do_hfx, do_kpoints, is_identical, is_semi, &
273 mp2_present, my_qmmm, qmmm_decoupl, same_except_frac, use_ref_cell
274 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: rtmat
276 TYPE(
cell_type),
POINTER :: my_cell, my_cell_ref
286 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
293 et_coupling_section, hfx_section, kpoint_section, mp2_section, rpa_hfx_section, &
296 NULLIFY (my_cell, my_cell_ref, atomic_kind_set, particle_set, &
297 qs_kind_set, kpoint_section, dft_section, ec_section, &
298 subsys, ks_env, dft_control, blacs_env)
300 CALL set_qs_env(qs_env, input=force_env_section)
301 IF (.NOT.
ASSOCIATED(subsys_section))
THEN
307 IF (
PRESENT(qmmm)) my_qmmm = qmmm
308 qmmm_decoupl = .false.
309 IF (
PRESENT(qmmm_env_qm))
THEN
313 qmmm_decoupl = my_qmmm .AND. qmmm_env_qm%periodic .AND. qmmm_env_qm%multipole
315 qs_env%qmmm_env_qm => qmmm_env_qm
321 SELECT CASE (method_id)
334 force_env_section=force_env_section, &
335 subsys_section=subsys_section, &
336 use_motion_section=use_motion_section, &
337 root_section=root_section, &
338 cp_subsys=cp_subsys, cell=cell, cell_ref=cell_ref, &
339 elkind=is_semi, silent=silent)
348 cell_ref=my_cell_ref, &
349 use_ref_cell=use_ref_cell, &
350 atomic_kind_set=atomic_kind_set, &
351 qs_kind_set=qs_kind_set, &
352 particle_set=particle_set)
355 IF (
PRESENT(globenv))
THEN
357 globenv%blacs_repeatable)
366 force_env_section, subsys_section, para_env)
369 IF (
PRESENT(kpoint_env))
THEN
370 kpoints => kpoint_env
371 CALL set_qs_env(qs_env=qs_env, kpoints=kpoints)
376 CALL set_qs_env(qs_env=qs_env, kpoints=kpoints)
384 CALL qs_init_subsys(qs_env, para_env, subsys, my_cell, my_cell_ref, use_ref_cell, &
385 subsys_section, silent=silent)
387 CALL get_qs_env(qs_env, dft_control=dft_control)
388 IF (method_id ==
do_method_lrigpw .OR. dft_control%qs_control%lri_optbas)
THEN
389 CALL get_qs_env(qs_env=qs_env, lri_env=lri_env)
392 CALL cp_warn(__location__,
"Experimental code: "// &
393 "RIGPW should only be used for testing.")
394 CALL get_qs_env(qs_env=qs_env, lri_env=lri_env)
398 IF (my_qmmm .AND.
PRESENT(qmmm_env_qm) .AND. .NOT. dft_control%qs_control%commensurate_mgrids)
THEN
400 CALL cp_abort(__location__,
"QM/MM with coupling GAUSS or S-WAVE requires "// &
401 "keyword FORCE_EVAL/DFT/MGRID/COMMENSURATE to be enabled.")
406 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints, blacs_env=blacs_env)
410 CALL get_qs_env(qs_env=qs_env, wf_history=wf_history)
421 CALL get_qs_env(qs_env, dft_control=dft_control, scf_control=scf_control, nelectron_total=nelectron_total)
426 IF (dft_control%do_admm)
THEN
427 basis_type =
'AUX_FIT'
431 CALL hfx_create(qs_env%x_data, para_env, hfx_section, atomic_kind_set, &
432 qs_kind_set, particle_set, dft_control, my_cell, orb_basis=basis_type, &
433 nelectron_total=nelectron_total, nkp_grid=nkp_grid)
438 IF (mp2_present)
THEN
439 cpassert(
ASSOCIATED(qs_env%mp2_env))
452 qs_env%mp2_env%ri_rpa%reuse_hfx = .true.
453 IF (.NOT. do_hfx) qs_env%mp2_env%ri_rpa%reuse_hfx = .false.
455 IF (.NOT. (is_identical .OR. same_except_frac)) qs_env%mp2_env%ri_rpa%reuse_hfx = .false.
456 IF (dft_control%do_admm .AND. .NOT. do_admm_rpa) qs_env%mp2_env%ri_rpa%reuse_hfx = .false.
458 IF (.NOT. qs_env%mp2_env%ri_rpa%reuse_hfx)
THEN
459 IF (do_admm_rpa)
THEN
460 basis_type =
'AUX_FIT'
464 CALL hfx_create(qs_env%mp2_env%ri_rpa%x_data, para_env, rpa_hfx_section, atomic_kind_set, &
465 qs_kind_set, particle_set, dft_control, my_cell, orb_basis=basis_type, &
466 nelectron_total=nelectron_total)
468 qs_env%mp2_env%ri_rpa%x_data => qs_env%x_data
473 IF (dft_control%qs_control%do_kg)
THEN
475 CALL kg_env_create(qs_env, qs_env%kg_env, qs_kind_set, qs_env%input)
480 l_val=qs_env%excited_state)
481 NULLIFY (exstate_env)
482 CALL exstate_create(exstate_env, qs_env%excited_state, dft_section)
483 CALL set_qs_env(qs_env, exstate_env=exstate_env)
486 "PROPERTIES%ET_COUPLING")
492 IF (qs_env%do_transport)
THEN
496 CALL get_qs_env(qs_env, harris_env=harris_env)
497 IF (qs_env%harris_method)
THEN
499 CALL get_qs_env(qs_env, local_particles=local_particles)
500 CALL harris_rhoin_init(harris_env%rhoin,
"RHOIN", qs_kind_set, atomic_kind_set, &
501 local_particles, dft_control%nspins)
509 l_val=qs_env%energy_correction)
514 IF (qs_env%energy_correction)
THEN
519 IF (ec_env%do_ec_hfx)
THEN
522 IF (ec_env%do_kpoints)
THEN
523 CALL cp_abort(__location__, &
524 "Energy correction methods with hybrid functionals "// &
525 "and kpoints is not yet available.")
529 IF (ec_env%basis_inconsistent)
THEN
530 CALL cp_abort(__location__, &
531 "Energy correction methods with hybrid functionals: "// &
532 "correction and ground state need to use the same basis. "// &
533 "Checked by comparing basis set names only.")
537 IF (ec_env%do_ec_admm .AND. .NOT. dft_control%do_admm)
THEN
538 CALL cp_abort(__location__,
"Need an ADMM input section for ADMM EC to work")
541 ec_env%reuse_hfx = .true.
542 IF (.NOT. do_hfx) ec_env%reuse_hfx = .false.
544 IF (.NOT. (is_identical .OR. same_except_frac)) ec_env%reuse_hfx = .false.
545 IF (dft_control%do_admm .AND. .NOT. ec_env%do_ec_admm) ec_env%reuse_hfx = .false.
547 IF (.NOT. ec_env%reuse_hfx)
THEN
548 IF (ec_env%do_ec_admm)
THEN
549 basis_type =
'AUX_FIT'
553 CALL hfx_create(ec_env%x_data, para_env, ec_hfx_section, atomic_kind_set, &
554 qs_kind_set, particle_set, dft_control, my_cell, orb_basis=basis_type, &
555 nelectron_total=nelectron_total)
557 ec_env%x_data => qs_env%x_data
566 IF (dft_control%qs_control%do_almo_scf)
THEN
571 CALL get_qs_env(qs_env, rel_control=rel_control)
572 IF (rel_control%rel_method /=
rel_none)
THEN
574 nkind =
SIZE(atomic_kind_set)
578 IF (
ASSOCIATED(rtmat))
CALL set_qs_kind(qs_kind_set(ikind), reltmat=rtmat)
597 SUBROUTINE qs_init_subsys(qs_env, para_env, subsys, cell, cell_ref, use_ref_cell, subsys_section, &
603 TYPE(
cell_type),
POINTER :: cell, cell_ref
604 LOGICAL,
INTENT(in) :: use_ref_cell
606 LOGICAL,
INTENT(in),
OPTIONAL :: silent
608 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_init_subsys'
610 CHARACTER(len=2) :: element_symbol
611 INTEGER :: gfn_type, handle, ikind, ispin, iw, lmax_sphere, maxl, maxlgto, maxlgto_lri, &
612 maxlgto_nuc, maxlppl, maxlppnl, method_id, multiplicity, my_ival, n_ao, n_mo_add, natom, &
613 nelectron, ngauss, nkind, output_unit, sort_basis, tnadd_method
614 INTEGER,
DIMENSION(2) :: n_mo, nelectron_spin
615 INTEGER,
DIMENSION(5) :: occ
616 INTEGER,
DIMENSION(:),
POINTER :: mo_index_range
617 LOGICAL :: all_potential_present, be_silent, cneo_potential_present, do_kpoints, do_ri_hfx, &
618 do_ri_mp2, do_ri_rpa, do_ri_sos_mp2, do_rpa_ri_exx, do_wfc_im_time, e1terms, &
619 has_unit_metric, lribas, mp2_present, orb_gradient, paw_atom
620 REAL(kind=
dp) :: alpha, ccore, ewald_rcut, fxx, maxocc, &
621 rc, rcut, total_zeff_corr, &
622 verlet_skin, zeff_correction
633 rhoin_basis, ri_aux_basis_set, &
634 ri_hfx_basis, ri_xas_basis, &
639 TYPE(
mo_set_type),
DIMENSION(:),
POINTER :: mos, mos_last_converged
648 POINTER :: dftb_potential
653 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
661 TYPE(
section_vals_type),
POINTER :: dft_section, et_coupling_section, et_ddapc_section, &
662 ewald_section, harris_section, lri_section, mp2_section, nl_section, poisson_section, &
663 pp_section, print_section, qs_section, rixs_section, se_section, tddfpt_section, &
669 CALL timeset(routinen, handle)
675 IF (
PRESENT(silent)) be_silent = silent
680 NULLIFY (mos, se_taper)
681 NULLIFY (dft_control)
684 NULLIFY (local_molecules)
685 NULLIFY (local_particles)
686 NULLIFY (scf_control)
687 NULLIFY (dft_section)
688 NULLIFY (et_coupling_section)
690 NULLIFY (mos_last_converged)
699 qs_kind_set=qs_kind_set, &
700 atomic_kind_set=atomic_kind_set, &
701 molecule_set=molecule_set, &
702 molecule_kind_set=molecule_kind_set)
708 dft_control%qs_control%periodicity = sum(cell%perd)
714 IF (.NOT. be_silent)
THEN
717 SELECT CASE (method_id)
726 IF (dft_control%qs_control%xtb_control%do_tblite)
THEN
727 CALL tblite_header(iw, dft_control%qs_control%xtb_control%tblite_method)
729 gfn_type = dft_control%qs_control%xtb_control%gfn_type
734 "PRINT%PROGRAM_BANNER")
737 IF (dft_control%do_sccs .AND. dft_control%qs_control%gapw)
THEN
738 cpabort(
"SCCS is not yet implemented with GAPW")
740 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
743 SELECT CASE (dft_control%qs_control%wf_interpolation_method_nr)
745 CALL cp_warn(__location__,
"Linear WFN-based extrapolation methods are not "// &
746 "implemented for k-points. Switching to USE_PREV_WF.")
753 dft_control%qs_control%et_coupling_calc = .false.
756 dft_control%qs_control%et_coupling_calc = .true.
757 dft_control%qs_control%ddapc_restraint = .true.
758 CALL read_ddapc_section(dft_control%qs_control, ddapc_restraint_section=et_ddapc_section)
768 IF (qs_env%do_rixs)
THEN
769 CALL read_rixs_control(dft_control%rixs_control, rixs_section, dft_control%qs_control)
775 ALLOCATE (rel_control)
778 CALL set_qs_env(qs_env, rel_control=rel_control)
783 NULLIFY (ewald_env, ewald_pw, dftb_potential)
784 dftb_control => dft_control%qs_control%dftb_control
786 subsys_section=subsys_section, para_env=para_env)
787 CALL set_qs_env(qs_env, dftb_potential=dftb_potential)
789 IF (dftb_control%do_ewald)
THEN
793 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
799 CALL ewald_pw_create(ewald_pw, ewald_env, cell, cell_ref, print_section=print_section)
800 CALL set_qs_env(qs_env, ewald_env=ewald_env, ewald_pw=ewald_pw)
802 ELSEIF (dft_control%qs_control%method_id ==
do_method_xtb)
THEN
804 xtb_control => dft_control%qs_control%xtb_control
806 IF (xtb_control%do_tblite)
THEN
815 qs_kind => qs_kind_set(ikind)
817 cpassert(.NOT.
ASSOCIATED(qs_kind%xtb_parameter))
820 CALL get_qs_kind(qs_kind, element_symbol=element_symbol)
822 NULLIFY (tmp_basis_set)
823 CALL tb_get_basis(qs_env%tb_tblite, tmp_basis_set, element_symbol, qs_kind%xtb_parameter, occ)
828 zeff_correction = 0.0_dp
830 zeff=real(sum(occ),
dp), zeff_correction=zeff_correction)
833 NULLIFY (ewald_env, ewald_pw)
835 qs_kind => qs_kind_set(ikind)
837 cpassert(.NOT.
ASSOCIATED(qs_kind%xtb_parameter))
840 gfn_type = dft_control%qs_control%xtb_control%gfn_type
841 CALL get_qs_kind(qs_kind, element_symbol=element_symbol)
843 xtb_control%parameter_file_path, xtb_control%parameter_file_name, &
848 NULLIFY (tmp_basis_set)
849 IF (qs_kind%xtb_parameter%z == 1)
THEN
851 ngauss = xtb_control%h_sto_ng
853 ngauss = xtb_control%sto_ng
855 IF (qs_kind%xtb_parameter%defined)
THEN
860 IF (
ASSOCIATED(qs_kind%all_potential))
THEN
861 DEALLOCATE (qs_kind%all_potential%elec_conf)
862 DEALLOCATE (qs_kind%all_potential)
866 IF (qs_kind%xtb_parameter%defined)
THEN
867 zeff_correction = 0.0_dp
869 zeff=qs_kind%xtb_parameter%zeff, zeff_correction=zeff_correction)
870 CALL get_potential(qs_kind%all_potential, alpha_core_charge=alpha)
871 ccore = qs_kind%xtb_parameter%zeff*sqrt((alpha/
pi)**3)
872 CALL set_potential(qs_kind%all_potential, ccore_charge=ccore)
873 qs_kind%xtb_parameter%zeff = qs_kind%xtb_parameter%zeff - zeff_correction
879 ALLOCATE (xtb_control%rcpair(nkind, nkind))
880 CALL xtb_pp_radius(qs_kind_set, xtb_control%rcpair, xtb_control%eps_pair, xtb_control%kf)
882 IF (xtb_control%do_ewald)
THEN
886 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
889 IF (gfn_type == 0)
THEN
891 silent=silent, pset=
"EEQ")
897 CALL ewald_pw_create(ewald_pw, ewald_env, cell, cell_ref, print_section=print_section)
898 CALL set_qs_env(qs_env, ewald_env=ewald_env, ewald_pw=ewald_pw)
905 dft_control%qs_control%lri_optbas .OR. &
915 CALL get_qs_kind_set(qs_kind_set, all_potential_present=all_potential_present)
916 IF ((dft_control%qs_control%method_id ==
do_method_gpw) .OR. &
919 IF (all_potential_present)
THEN
920 cpabort(
"All-electron calculations with GPW, GAPW_XC, and OFGPW are not implemented")
925 CALL get_qs_kind_set(qs_kind_set, cneo_potential_present=cneo_potential_present)
926 IF (cneo_potential_present .AND. &
928 cpabort(
"CNEO calculations require GAPW method")
932 CALL get_qs_kind_set(qs_kind_set, dft_plus_u_atom_present=dft_control%dft_plus_u)
934 IF (dft_control%do_admm)
THEN
938 NULLIFY (aux_fit_basis)
939 qs_kind => qs_kind_set(ikind)
940 CALL get_qs_kind(qs_kind, basis_set=aux_fit_basis, basis_type=
"AUX_FIT")
941 IF (.NOT. (
ASSOCIATED(aux_fit_basis)))
THEN
943 cpabort(
"AUX_FIT basis set is not defined. ")
953 e1terms = lri_env%exact_1c_terms
955 IF (dft_control%qs_control%do_kg)
THEN
963 NULLIFY (lri_aux_basis)
964 qs_kind => qs_kind_set(ikind)
965 CALL get_qs_kind(qs_kind, basis_set=lri_aux_basis, basis_type=
"LRI_AUX")
966 IF (.NOT. (
ASSOCIATED(lri_aux_basis)))
THEN
968 CALL cp_warn(__location__,
"Automatic Generation of LRI_AUX basis. "// &
969 "This is experimental code.")
978 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_RPA%HF%RI%_SECTION_PARAMETERS_", &
980 IF (do_ri_hfx .OR. do_rpa_ri_exx)
THEN
984 NULLIFY (ri_hfx_basis)
985 qs_kind => qs_kind_set(ikind)
986 CALL get_qs_kind(qs_kind=qs_kind, basis_set=ri_hfx_basis, &
988 IF (.NOT. (
ASSOCIATED(ri_hfx_basis)))
THEN
990 IF (dft_control%do_admm)
THEN
992 basis_type=
"AUX_FIT", basis_sort=sort_basis)
995 basis_sort=sort_basis)
1006 NULLIFY (ri_hfx_basis)
1007 qs_kind => qs_kind_set(ikind)
1008 CALL get_qs_kind(qs_kind, basis_set=ri_hfx_basis, basis_type=
"RI_HXC")
1009 IF (.NOT. (
ASSOCIATED(ri_hfx_basis)))
THEN
1018 NULLIFY (harris_env)
1020 l_val=qs_env%harris_method)
1023 CALL set_qs_env(qs_env, harris_env=harris_env)
1025 IF (qs_env%harris_method)
THEN
1029 NULLIFY (tmp_basis_set)
1030 qs_kind => qs_kind_set(ikind)
1031 CALL get_qs_kind(qs_kind, basis_set=rhoin_basis, basis_type=
"RHOIN")
1032 IF (.NOT. (
ASSOCIATED(rhoin_basis)))
THEN
1035 IF (qs_env%harris_env%density_source ==
hden_atomic)
THEN
1039 rhoin_basis => tmp_basis_set
1048 IF (mp2_present)
THEN
1052 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%LOW_SCALING%_SECTION_PARAMETERS_", &
1053 l_val=do_wfc_im_time)
1056 CALL cp_warn(__location__, &
1057 "Low-scaling RPA requires SORT_BASIS EXP keyword (in DFT input section) for good performance")
1062 CALL get_qs_env(qs_env, mp2_env=mp2_env, nkind=nkind)
1063 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_MP2%_SECTION_PARAMETERS_", l_val=do_ri_mp2)
1064 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_SOS_MP2%_SECTION_PARAMETERS_", l_val=do_ri_sos_mp2)
1065 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_RPA%_SECTION_PARAMETERS_", l_val=do_ri_rpa)
1066 IF (do_ri_mp2 .OR. do_ri_sos_mp2 .OR. do_ri_rpa)
THEN
1068 NULLIFY (ri_aux_basis_set)
1069 qs_kind => qs_kind_set(ikind)
1070 CALL get_qs_kind(qs_kind=qs_kind, basis_set=ri_aux_basis_set, &
1071 basis_type=
"RI_AUX")
1072 IF (.NOT. (
ASSOCIATED(ri_aux_basis_set)))
THEN
1079 qs_env%mp2_env%ri_aux_auto_generated = .true.
1086 IF (dft_control%do_xas_tdp_calculation .OR. qs_env%do_rixs)
THEN
1090 NULLIFY (ri_xas_basis)
1091 qs_kind => qs_kind_set(ikind)
1092 CALL get_qs_kind(qs_kind, basis_set=ri_xas_basis, basis_type=
"RI_XAS")
1093 IF (.NOT.
ASSOCIATED(ri_xas_basis))
THEN
1102 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto, maxlppl=maxlppl, maxlppnl=maxlppnl)
1105 IF (cneo_potential_present)
THEN
1106 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_nuc, basis_type=
"NUC")
1107 maxlgto = max(maxlgto, maxlgto_nuc)
1109 lmax_sphere = dft_control%qs_control%gapw_control%lmax_sphere
1110 IF (lmax_sphere < 0)
THEN
1111 lmax_sphere = 2*maxlgto
1112 dft_control%qs_control%gapw_control%lmax_sphere = lmax_sphere
1114 IF (dft_control%qs_control%method_id ==
do_method_lrigpw .OR. dft_control%qs_control%lri_optbas)
THEN
1115 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_lri, basis_type=
"LRI_AUX")
1117 maxlgto = max(maxlgto, maxlgto_lri)
1119 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_lri, basis_type=
"RI_HXC")
1120 maxlgto = max(maxlgto, maxlgto_lri)
1122 IF (dft_control%do_xas_tdp_calculation .OR. qs_env%do_rixs)
THEN
1124 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_lri, basis_type=
"RI_XAS")
1125 maxlgto = max(maxlgto, maxlgto_lri)
1127 maxl = max(2*maxlgto, maxlppl, maxlppnl, lmax_sphere) + 1
1139 qs_control => dft_control%qs_control
1144 IF (cneo_potential_present)
THEN
1151 maxl = max(3*maxlgto + 1, 0)
1158 IF (.NOT. dft_control%qs_control%xtb_control%do_tblite)
THEN
1162 qs_kind => qs_kind_set(ikind)
1163 IF (qs_kind%xtb_parameter%defined)
THEN
1164 CALL get_qs_kind(qs_kind, basis_set=tmp_basis_set)
1165 rcut = xtb_control%coulomb_sr_cut
1166 fxx = 2.0_dp*xtb_control%coulomb_sr_eps*qs_kind%xtb_parameter%eta**2
1167 fxx = 0.80_dp*(1.0_dp/fxx)**0.3333_dp
1168 rcut = min(rcut, xtb_control%coulomb_sr_cut)
1169 qs_kind%xtb_parameter%rcut = min(rcut, fxx)
1171 qs_kind%xtb_parameter%rcut = 0.0_dp
1177 IF (.NOT. be_silent)
THEN
1190 particle_set=particle_set, &
1191 local_particles=local_particles, &
1192 molecule_kind_set=molecule_kind_set, &
1193 molecule_set=molecule_set, &
1194 local_molecules=local_molecules, &
1195 force_env_section=qs_env%input)
1198 ALLOCATE (scf_control)
1200 IF (dft_control%qs_control%dftb)
THEN
1201 scf_control%non_selfconsistent = .NOT. dft_control%qs_control%dftb_control%self_consistent
1203 IF (dft_control%qs_control%xtb)
THEN
1204 IF (dft_control%qs_control%xtb_control%do_tblite)
THEN
1205 scf_control%non_selfconsistent = .false.
1207 scf_control%non_selfconsistent = (dft_control%qs_control%xtb_control%gfn_type == 0)
1210 IF (qs_env%harris_method)
THEN
1211 scf_control%non_selfconsistent = .true.
1220 has_unit_metric = .false.
1221 IF (dft_control%qs_control%semi_empirical)
THEN
1222 IF (dft_control%qs_control%se_control%orthogonal_basis) has_unit_metric = .true.
1224 IF (dft_control%qs_control%dftb)
THEN
1225 IF (dft_control%qs_control%dftb_control%orthogonal_basis) has_unit_metric = .true.
1227 CALL set_qs_env(qs_env, has_unit_metric=has_unit_metric)
1231 interpolation_method_nr= &
1232 dft_control%qs_control%wf_interpolation_method_nr, &
1233 extrapolation_order=dft_control%qs_control%wf_extrapolation_order, &
1234 has_unit_metric=has_unit_metric)
1238 scf_control=scf_control, &
1239 wf_history=wf_history)
1242 cell_ref=cell_ref, &
1243 use_ref_cell=use_ref_cell, &
1248 CALL set_ks_env(ks_env, dft_control=dft_control)
1250 CALL qs_subsys_set(subsys, local_molecules=local_molecules, &
1251 local_particles=local_particles, cell=cell)
1258 atomic_kind_set=atomic_kind_set, &
1259 dft_control=dft_control, &
1260 scf_control=scf_control)
1264 IF (dft_control%qs_control%do_ls_scf .OR. &
1265 dft_control%qs_control%do_almo_scf)
THEN
1266 CALL set_qs_env(qs_env=qs_env, requires_mo_derivs=.false.)
1268 IF (scf_control%use_ot)
THEN
1269 CALL set_qs_env(qs_env=qs_env, requires_mo_derivs=.true.)
1271 CALL set_qs_env(qs_env=qs_env, requires_mo_derivs=.false.)
1276 IF (dft_control%qs_control%xtb_control%do_tblite)
THEN
1277 IF (.NOT. scf_control%smear%do_smear)
THEN
1279 scf_control%smear%do_smear = .true.
1281 scf_control%smear%electronic_temperature = 300._dp/
kelvin
1282 scf_control%smear%eps_fermi_dirac = 1.e-6_dp
1285 dft_control%smear = scf_control%smear%do_smear
1288 IF (.NOT. (dft_control%qs_control%dftb .OR. dft_control%qs_control%xtb))
THEN
1289 IF (dft_control%apply_period_efield)
THEN
1290 CALL get_qs_env(qs_env=qs_env, requires_mo_derivs=orb_gradient)
1291 IF (.NOT. orb_gradient)
THEN
1292 CALL cp_abort(__location__,
"Periodic Efield needs orbital gradient and direct optimization."// &
1293 " Use the OT optimization method.")
1295 IF (dft_control%smear)
THEN
1296 CALL cp_abort(__location__,
"Periodic Efield needs equal occupation numbers."// &
1297 " Smearing option is not possible.")
1306 NULLIFY (rho_atom_set)
1307 gapw_control => dft_control%qs_control%gapw_control
1308 CALL init_rho_atom(rho_atom_set, atomic_kind_set, qs_kind_set, dft_control, para_env)
1309 CALL set_qs_env(qs_env=qs_env, rho_atom_set=rho_atom_set)
1311 CALL get_qs_env(qs_env=qs_env, local_rho_set=local_rho_set, natom=natom)
1313 CALL init_rho0(local_rho_set, qs_env, gapw_control)
1320 IF (gapw_control%accurate_xcint)
THEN
1321 cpassert(.NOT.
ASSOCIATED(gapw_control%aw))
1323 ALLOCATE (gapw_control%aw(nkind))
1324 alpha = gapw_control%aweights
1326 qs_kind => qs_kind_set(ikind)
1327 CALL get_qs_kind(qs_kind, hard_radius=rc, paw_atom=paw_atom)
1329 gapw_control%aw(ikind) = alpha*(1.2_dp/rc)**2
1331 gapw_control%aw(ikind) = 0.0_dp
1341 ELSE IF (dft_control%qs_control%semi_empirical)
THEN
1342 NULLIFY (se_store_int_env, se_nddo_mpole, se_nonbond_env)
1343 natom =
SIZE(particle_set)
1345 se_control => dft_control%qs_control%se_control
1350 SELECT CASE (dft_control%qs_control%method_id)
1356 CALL init_se_nlradius(se_control, atomic_kind_set, qs_kind_set, subsys_section)
1361 IF (se_control%do_ewald .OR. se_control%do_ewald_gks)
THEN
1362 ALLOCATE (ewald_env)
1365 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
1368 "PRINT%GRID_INFORMATION")
1373 print_section=print_section)
1379 IF (se_control%do_ewald)
THEN
1380 CALL ewald_env_get(ewald_env, max_multipole=se_control%max_multipole)
1384 ALLOCATE (se_nonbond_env)
1386 do_electrostatics=.true., verlet_skin=verlet_skin, ewald_rcut=ewald_rcut, &
1387 ei_scale14=0.0_dp, vdw_scale14=0.0_dp, shift_cutoff=.false.)
1390 CALL set_qs_env(qs_env, ewald_env=ewald_env, ewald_pw=ewald_pw, &
1391 se_nonbond_env=se_nonbond_env, se_nddo_mpole=se_nddo_mpole)
1394 dft_control%qs_control%method_id)
1397 CALL se_taper_create(se_taper, se_control%integral_screening, se_control%do_ewald, &
1398 se_control%taper_cou, se_control%range_cou, &
1399 se_control%taper_exc, se_control%range_exc, &
1400 se_control%taper_scr, se_control%range_scr, &
1401 se_control%taper_lrc, se_control%range_lrc)
1405 CALL set_qs_env(qs_env, se_store_int_env=se_store_int_env)
1409 IF (dft_control%qs_control%method_id ==
do_method_gpw .OR. &
1415 ALLOCATE (dispersion_env)
1416 NULLIFY (xc_section)
1420 NULLIFY (pp_section)
1424 NULLIFY (nl_section)
1428 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1429 ELSE IF (dft_control%qs_control%method_id ==
do_method_dftb)
THEN
1430 ALLOCATE (dispersion_env)
1432 dispersion_env%doabc = .false.
1433 dispersion_env%c9cnst = .false.
1434 dispersion_env%lrc = .false.
1435 dispersion_env%srb = .false.
1436 dispersion_env%verbose = .false.
1437 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, dispersion_env%r0ab, dispersion_env%rcov, &
1438 dispersion_env%r2r4, dispersion_env%cn, dispersion_env%cnkind, dispersion_env%cnlist, &
1439 dispersion_env%d3_exclude_pair)
1440 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
1441 dispersion_env%d2y_dx2, dispersion_env%dftd_section)
1442 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
1443 IF (dftb_control%dispersion .AND. dftb_control%dispersion_type ==
dispersion_d3)
THEN
1446 dispersion_env%eps_cn = dftb_control%epscn
1447 dispersion_env%s6 = dftb_control%sd3(1)
1448 dispersion_env%sr6 = dftb_control%sd3(2)
1449 dispersion_env%s8 = dftb_control%sd3(3)
1450 dispersion_env%domol = .false.
1451 dispersion_env%kgc8 = 0._dp
1452 dispersion_env%rc_disp = dftb_control%rcdisp
1453 dispersion_env%exp_pre = 0._dp
1454 dispersion_env%scaling = 0._dp
1455 dispersion_env%nd3_exclude_pair = 0
1456 dispersion_env%parameter_file_name = dftb_control%dispersion_parameter_file
1458 ELSEIF (dftb_control%dispersion .AND. dftb_control%dispersion_type ==
dispersion_d3bj)
THEN
1461 dispersion_env%eps_cn = dftb_control%epscn
1462 dispersion_env%s6 = dftb_control%sd3bj(1)
1463 dispersion_env%a1 = dftb_control%sd3bj(2)
1464 dispersion_env%s8 = dftb_control%sd3bj(3)
1465 dispersion_env%a2 = dftb_control%sd3bj(4)
1466 dispersion_env%domol = .false.
1467 dispersion_env%kgc8 = 0._dp
1468 dispersion_env%rc_disp = dftb_control%rcdisp
1469 dispersion_env%exp_pre = 0._dp
1470 dispersion_env%scaling = 0._dp
1471 dispersion_env%nd3_exclude_pair = 0
1472 dispersion_env%parameter_file_name = dftb_control%dispersion_parameter_file
1474 ELSEIF (dftb_control%dispersion .AND. dftb_control%dispersion_type ==
dispersion_d2)
THEN
1477 dispersion_env%exp_pre = dftb_control%exp_pre
1478 dispersion_env%scaling = dftb_control%scaling
1479 dispersion_env%parameter_file_name = dftb_control%dispersion_parameter_file
1480 dispersion_env%rc_disp = dftb_control%rcdisp
1485 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1486 ELSE IF (dft_control%qs_control%method_id ==
do_method_xtb)
THEN
1487 IF (.NOT. (dft_control%qs_control%xtb_control%do_tblite))
THEN
1488 ALLOCATE (dispersion_env)
1490 dispersion_env%doabc = .false.
1491 dispersion_env%c9cnst = .false.
1492 dispersion_env%lrc = .false.
1493 dispersion_env%srb = .false.
1494 dispersion_env%verbose = .false.
1495 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, &
1496 dispersion_env%r0ab, dispersion_env%rcov, &
1497 dispersion_env%r2r4, dispersion_env%cn, &
1498 dispersion_env%cnkind, dispersion_env%cnlist, &
1499 dispersion_env%d3_exclude_pair)
1500 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
1501 dispersion_env%d2y_dx2, dispersion_env%dftd_section)
1502 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
1504 dispersion_env%eps_cn = xtb_control%epscn
1505 dispersion_env%s6 = xtb_control%s6
1506 dispersion_env%s8 = xtb_control%s8
1507 dispersion_env%a1 = xtb_control%a1
1508 dispersion_env%a2 = xtb_control%a2
1509 dispersion_env%domol = .false.
1510 dispersion_env%kgc8 = 0._dp
1511 dispersion_env%rc_disp = xtb_control%rcdisp
1512 dispersion_env%rc_d4 = xtb_control%rcdisp
1513 dispersion_env%exp_pre = 0._dp
1514 dispersion_env%scaling = 0._dp
1515 dispersion_env%nd3_exclude_pair = 0
1516 dispersion_env%parameter_file_name = xtb_control%dispersion_parameter_file
1518 SELECT CASE (xtb_control%vdw_type)
1525 dispersion_env%ref_functional =
"none"
1527 dispersion_env, para_env=para_env)
1528 dispersion_env%cnfun = 2
1532 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1534 ELSE IF (dft_control%qs_control%semi_empirical)
THEN
1535 ALLOCATE (dispersion_env)
1537 dispersion_env%doabc = .false.
1538 dispersion_env%c9cnst = .false.
1539 dispersion_env%lrc = .false.
1540 dispersion_env%srb = .false.
1541 dispersion_env%verbose = .false.
1542 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, dispersion_env%r0ab, dispersion_env%rcov, &
1543 dispersion_env%r2r4, dispersion_env%cn, dispersion_env%cnkind, dispersion_env%cnlist, &
1544 dispersion_env%d3_exclude_pair)
1545 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
1546 dispersion_env%d2y_dx2, dispersion_env%dftd_section)
1547 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
1548 IF (se_control%dispersion)
THEN
1551 dispersion_env%eps_cn = se_control%epscn
1552 dispersion_env%s6 = se_control%sd3(1)
1553 dispersion_env%sr6 = se_control%sd3(2)
1554 dispersion_env%s8 = se_control%sd3(3)
1555 dispersion_env%domol = .false.
1556 dispersion_env%kgc8 = 0._dp
1557 dispersion_env%rc_disp = se_control%rcdisp
1558 dispersion_env%exp_pre = 0._dp
1559 dispersion_env%scaling = 0._dp
1560 dispersion_env%nd3_exclude_pair = 0
1561 dispersion_env%parameter_file_name = se_control%dispersion_parameter_file
1566 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1570 IF (dft_control%qs_control%method_id ==
do_method_gpw .OR. &
1577 NULLIFY (xc_section)
1588 nelectron = nelectron - dft_control%charge
1590 IF (dft_control%multiplicity == 0)
THEN
1591 IF (
modulo(nelectron, 2) == 0)
THEN
1592 dft_control%multiplicity = 1
1594 dft_control%multiplicity = 2
1598 multiplicity = dft_control%multiplicity
1600 IF ((dft_control%nspins < 1) .OR. (dft_control%nspins > 2))
THEN
1601 cpabort(
"nspins should be 1 or 2 for the time being ...")
1604 IF ((
modulo(nelectron, 2) /= 0) .AND. (dft_control%nspins == 1))
THEN
1605 IF (.NOT. dft_control%qs_control%ofgpw .AND. .NOT. dft_control%smear)
THEN
1606 cpabort(
"Use the LSD option for an odd number of electrons")
1611 IF (dft_control%do_xas_calculation)
THEN
1612 IF (dft_control%nspins == 1)
THEN
1613 cpabort(
"Use the LSD option for XAS with transition potential")
1623 IF (dft_control%qs_control%ofgpw)
THEN
1625 IF (dft_control%nspins == 1)
THEN
1627 nelectron_spin(1) = nelectron
1628 nelectron_spin(2) = 0
1632 IF (
modulo(nelectron + multiplicity - 1, 2) /= 0)
THEN
1633 cpabort(
"LSD: try to use a different multiplicity")
1635 nelectron_spin(1) = (nelectron + multiplicity - 1)/2
1636 nelectron_spin(2) = (nelectron - multiplicity + 1)/2
1637 IF (nelectron_spin(1) < 0)
THEN
1638 cpabort(
"LSD: too few electrons for this multiplicity")
1640 maxocc = maxval(nelectron_spin)
1641 n_mo(1) = min(nelectron_spin(1), 1)
1642 n_mo(2) = min(nelectron_spin(2), 1)
1647 IF (dft_control%nspins == 1)
THEN
1649 nelectron_spin(1) = nelectron
1650 nelectron_spin(2) = 0
1651 IF (
modulo(nelectron, 2) == 0)
THEN
1652 n_mo(1) = nelectron/2
1654 n_mo(1) = int(nelectron/2._dp) + 1
1662 IF (
modulo(nelectron + multiplicity - 1, 2) /= 0)
THEN
1663 cpabort(
"LSD: try to use a different multiplicity")
1666 nelectron_spin(1) = (nelectron + multiplicity - 1)/2
1667 nelectron_spin(2) = (nelectron - multiplicity + 1)/2
1669 IF (nelectron_spin(2) < 0)
THEN
1670 cpabort(
"LSD: too few electrons for this multiplicity")
1673 n_mo(1) = nelectron_spin(1)
1674 n_mo(2) = nelectron_spin(2)
1683 qs_env%total_zeff_corr = total_zeff_corr
1687 nelectron_total=nelectron, &
1688 nelectron_spin=nelectron_spin)
1693 cpassert(
ASSOCIATED(mo_index_range))
1694 IF (all(mo_index_range > 0))
THEN
1695 IF (mo_index_range(1) > mo_index_range(2))
THEN
1696 CALL cp_abort(__location__, &
1697 "The upper orbital index ("// &
1699 ") of the MO_INDEX_RANGE should be equal or larger "// &
1700 "than the lower orbital index ("// &
1705 IF (.NOT. scf_control%use_ot)
THEN
1706 scf_control%added_mos(1) = min(max(scf_control%added_mos(1), &
1707 mo_index_range(2) - n_mo(1)), &
1709 IF (dft_control%nspins == 2)
THEN
1710 scf_control%added_mos(2) = min(max(scf_control%added_mos(2), &
1711 mo_index_range(2) - n_mo(2)), &
1715 ELSE IF (mo_index_range(2) < 0)
THEN
1716 IF (.NOT. scf_control%use_ot)
THEN
1718 scf_control%added_mos(1) = n_ao - n_mo(1)
1719 IF (dft_control%nspins == 2)
THEN
1721 scf_control%added_mos(2) = n_ao - n_mo(2)
1726 IF (dft_control%nspins == 2)
THEN
1728 IF (scf_control%added_mos(2) < 0)
THEN
1729 n_mo_add = n_ao - n_mo(2)
1730 ELSE IF (scf_control%added_mos(2) > 0)
THEN
1731 n_mo_add = scf_control%added_mos(2)
1733 n_mo_add = scf_control%added_mos(1)
1735 IF (n_mo_add > n_ao - n_mo(2))
THEN
1736 cpwarn(
"More ADDED_MOs requested for beta spin than available.")
1738 scf_control%added_mos(2) = min(n_mo_add, n_ao - n_mo(2))
1739 n_mo(2) = n_mo(2) + scf_control%added_mos(2)
1750 IF (dft_control%qs_control%xtb_control%do_tblite)
THEN
1751 scf_control%added_mos(1) = n_ao - n_mo(1)
1752 ELSE IF (scf_control%added_mos(1) < 0)
THEN
1753 scf_control%added_mos(1) = n_ao - n_mo(1)
1754 ELSE IF (scf_control%added_mos(1) > n_ao - n_mo(1))
THEN
1755 CALL cp_warn(__location__, &
1756 "More added MOs requested than available. "// &
1757 "The full set of unoccupied MOs will be used. "// &
1758 "Use 'ADDED_MOS -1' to always use all available MOs "// &
1759 "and to get rid of this warning.")
1761 scf_control%added_mos(1) = min(scf_control%added_mos(1), n_ao - n_mo(1))
1762 n_mo(1) = n_mo(1) + scf_control%added_mos(1)
1764 IF (dft_control%nspins == 2)
THEN
1765 IF (n_mo(2) > n_mo(1)) &
1766 CALL cp_warn(__location__, &
1767 "More beta than alpha MOs requested. "// &
1768 "The number of beta MOs will be reduced to the number alpha MOs.")
1769 n_mo(2) = min(n_mo(1), n_mo(2))
1770 cpassert(n_mo(1) >= nelectron_spin(1))
1771 cpassert(n_mo(2) >= nelectron_spin(2))
1775 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
1776 IF (do_kpoints .AND. dft_control%nspins == 2)
THEN
1778 IF (n_mo(2) /= n_mo(1)) &
1779 CALL cp_warn(__location__, &
1780 "Kpoints: Different number of MOs requested. "// &
1781 "The number of beta MOs will be set to the number alpha MOs.")
1783 cpassert(n_mo(1) >= nelectron_spin(1))
1784 cpassert(n_mo(2) >= nelectron_spin(2))
1788 IF (scf_control%smear%do_smear)
THEN
1789 IF (scf_control%added_mos(1) == 0)
THEN
1790 cpabort(
"Extra MOs (ADDED_MOS) are required for smearing")
1796 "PRINT%MO/CARTESIAN"), &
1798 (scf_control%level_shift /= 0.0_dp) .OR. &
1799 (scf_control%diagonalization%eps_jacobi /= 0.0_dp) .OR. &
1800 (dft_control%roks .AND. (.NOT. scf_control%use_ot)))
THEN
1805 IF (dft_control%roks .AND. (.NOT. scf_control%use_ot))
THEN
1807 cpwarn(
"General ROKS scheme is not yet tested!")
1809 IF (scf_control%smear%do_smear)
THEN
1810 CALL cp_abort(__location__, &
1811 "The options ROKS and SMEAR are not compatible. "// &
1812 "Try UKS instead of ROKS")
1815 IF (dft_control%low_spin_roks)
THEN
1816 SELECT CASE (dft_control%qs_control%method_id)
1819 CALL cp_abort(__location__, &
1820 "xTB/DFTB methods are not compatible with low spin ROKS.")
1823 CALL cp_abort(__location__, &
1824 "SE methods are not compatible with low spin ROKS.")
1832 IF (dft_control%restricted .AND. (output_unit > 0))
THEN
1834 WRITE (output_unit, *)
""
1835 WRITE (output_unit, *)
" **************************************"
1836 WRITE (output_unit, *)
" restricted calculation cutting corners"
1837 WRITE (output_unit, *)
" experimental feature, check code "
1838 WRITE (output_unit, *)
" **************************************"
1842 IF (dft_control%qs_control%do_ls_scf)
THEN
1845 ALLOCATE (mos(dft_control%nspins))
1846 DO ispin = 1, dft_control%nspins
1850 nelectron=nelectron_spin(ispin), &
1851 n_el_f=real(nelectron_spin(ispin),
dp), &
1853 flexible_electron_count=dft_control%relax_multiplicity)
1860 IF (dft_control%switch_surf_dip)
THEN
1861 ALLOCATE (mos_last_converged(dft_control%nspins))
1862 DO ispin = 1, dft_control%nspins
1866 nelectron=nelectron_spin(ispin), &
1867 n_el_f=real(nelectron_spin(ispin),
dp), &
1869 flexible_electron_count=dft_control%relax_multiplicity)
1871 CALL set_qs_env(qs_env, mos_last_converged=mos_last_converged)
1874 IF (.NOT. be_silent)
THEN
1879 IF (dft_control%qs_control%method_id ==
do_method_gpw .OR. &
1886 (.NOT. dft_control%qs_control%xtb_control%do_tblite)) .OR. &
1888 CALL get_qs_env(qs_env, dispersion_env=dispersion_env)
1896 IF (dft_control%do_admm)
THEN
1901 IF (dft_control%do_xas_calculation)
THEN
1916 CALL write_total_numbers(qs_kind_set, particle_set, qs_env%input)
1931 IF ((.NOT. dft_control%qs_control%do_ls_scf) .AND. &
1932 (.NOT. dft_control%qs_control%do_almo_scf))
THEN
1942 CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, rho0_mpole=rho0_mpole)
1946 IF (output_unit > 0)
CALL m_flush(output_unit)
1947 CALL timestop(handle)
1949 END SUBROUTINE qs_init_subsys
1959 SUBROUTINE write_total_numbers(qs_kind_set, particle_set, force_env_section)
1961 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
1962 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
1963 TYPE(section_vals_type),
POINTER :: force_env_section
1965 INTEGER :: maxlgto, maxlppl, maxlppnl, natom, &
1966 natom_q, ncgf, nkind, nkind_q, npgf, &
1967 nset, nsgf, nshell, output_unit
1968 TYPE(cp_logger_type),
POINTER :: logger
1971 logger => cp_get_default_logger()
1972 output_unit = cp_print_key_unit_nr(logger, force_env_section,
"PRINT%TOTAL_NUMBERS", &
1975 IF (output_unit > 0)
THEN
1976 natom =
SIZE(particle_set)
1977 nkind =
SIZE(qs_kind_set)
1979 CALL get_qs_kind_set(qs_kind_set, &
1989 WRITE (unit=output_unit, fmt=
"(/,/,T2,A)") &
1990 "TOTAL NUMBERS AND MAXIMUM NUMBERS"
1992 IF (nset + npgf + ncgf > 0)
THEN
1993 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T71,I10))") &
1994 "Total number of", &
1995 "- Atomic kinds: ", nkind, &
1996 "- Atoms: ", natom, &
1997 "- Shell sets: ", nset, &
1998 "- Shells: ", nshell, &
1999 "- Primitive Cartesian functions: ", npgf, &
2000 "- Cartesian basis functions: ", ncgf, &
2001 "- Spherical basis functions: ", nsgf
2002 ELSE IF (nshell + nsgf > 0)
THEN
2003 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T71,I10))") &
2004 "Total number of", &
2005 "- Atomic kinds: ", nkind, &
2006 "- Atoms: ", natom, &
2007 "- Shells: ", nshell, &
2008 "- Spherical basis functions: ", nsgf
2010 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T71,I10))") &
2011 "Total number of", &
2012 "- Atomic kinds: ", nkind, &
2016 IF ((maxlppl > -1) .AND. (maxlppnl > -1))
THEN
2017 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T75,I6))") &
2018 "Maximum angular momentum of the", &
2019 "- Orbital basis functions: ", maxlgto, &
2020 "- Local part of the GTH pseudopotential: ", maxlppl, &
2021 "- Non-local part of the GTH pseudopotential: ", maxlppnl
2022 ELSEIF (maxlppl > -1)
THEN
2023 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T75,I6))") &
2024 "Maximum angular momentum of the", &
2025 "- Orbital basis functions: ", maxlgto, &
2026 "- Local part of the GTH pseudopotential: ", maxlppl
2028 WRITE (unit=output_unit, fmt=
"(/,T3,A,T75,I6)") &
2029 "Maximum angular momentum of the orbital basis functions: ", maxlgto
2033 CALL get_qs_kind_set(qs_kind_set, &
2040 basis_type=
"LRI_AUX")
2041 IF (nset + npgf + ncgf > 0)
THEN
2042 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
2043 "LRI_AUX Basis: ", &
2044 "Total number of", &
2045 "- Shell sets: ", nset, &
2046 "- Shells: ", nshell, &
2047 "- Primitive Cartesian functions: ", npgf, &
2048 "- Cartesian basis functions: ", ncgf, &
2049 "- Spherical basis functions: ", nsgf
2050 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
2051 " Maximum angular momentum ", maxlgto
2055 CALL get_qs_kind_set(qs_kind_set, &
2062 basis_type=
"RI_HXC")
2063 IF (nset + npgf + ncgf > 0)
THEN
2064 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
2066 "Total number of", &
2067 "- Shell sets: ", nset, &
2068 "- Shells: ", nshell, &
2069 "- Primitive Cartesian functions: ", npgf, &
2070 "- Cartesian basis functions: ", ncgf, &
2071 "- Spherical basis functions: ", nsgf
2072 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
2073 " Maximum angular momentum ", maxlgto
2077 CALL get_qs_kind_set(qs_kind_set, &
2084 basis_type=
"AUX_FIT")
2085 IF (nset + npgf + ncgf > 0)
THEN
2086 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
2087 "AUX_FIT ADMM-Basis: ", &
2088 "Total number of", &
2089 "- Shell sets: ", nset, &
2090 "- Shells: ", nshell, &
2091 "- Primitive Cartesian functions: ", npgf, &
2092 "- Cartesian basis functions: ", ncgf, &
2093 "- Spherical basis functions: ", nsgf
2094 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
2095 " Maximum angular momentum ", maxlgto
2099 CALL get_qs_kind_set(qs_kind_set, &
2109 IF (nset + npgf + ncgf > 0)
THEN
2110 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
2111 "Nuclear Basis: ", &
2112 "Total number of", &
2113 "- Quantum atomic kinds: ", nkind_q, &
2114 "- Quantum atoms: ", natom_q, &
2115 "- Shell sets: ", nset, &
2116 "- Shells: ", nshell, &
2117 "- Primitive Cartesian functions: ", npgf, &
2118 "- Cartesian basis functions: ", ncgf, &
2119 "- Spherical basis functions: ", nsgf
2120 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
2121 " Maximum angular momentum ", maxlgto
2125 CALL cp_print_key_finished_output(output_unit, logger, force_env_section, &
2126 "PRINT%TOTAL_NUMBERS")
2128 END SUBROUTINE write_total_numbers
static GRID_HOST_DEVICE int modulo(int a, int m)
Equivalent of Fortran's MODULO, which always return a positive number. https://gcc....
subroutine, public almo_scf_env_create(qs_env)
Creation and basic initialization of the almo environment.
calculate the orbitals for a given atomic kind type
subroutine, public calculate_atomic_relkin(atomic_kind, qs_kind, rel_control, rtmat)
...
Define the atomic kind types and their sub types.
Automatic generation of auxiliary basis sets of different kind.
subroutine, public create_lri_aux_basis_set(lri_aux_basis_set, qs_kind, basis_cntrl, exact_1c_terms, tda_kernel)
Create a LRI_AUX basis set using some heuristics.
subroutine, public create_ri_aux_basis_set(ri_aux_basis_set, qs_kind, basis_cntrl, basis_type, basis_sort)
Create a RI_AUX basis set using some heuristics.
subroutine, public add_basis_set_to_container(container, basis_set, basis_set_type)
...
integer, parameter, public basis_sort_zet
subroutine, public deallocate_gto_basis_set(gto_basis_set)
...
subroutine, public create_primitive_basis_set(basis_set, pbasis, lmax)
...
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public cp2kqs2020
integer, save, public iannuzzi2007
integer, save, public iannuzzi2006
Handles all functions related to the CELL.
methods related to the blacs parallel environment
subroutine, public cp_blacs_env_release(blacs_env)
releases the given blacs_env
subroutine, public cp_blacs_env_create(blacs_env, para_env, blacs_grid_layout, blacs_repeatable, row_major, grid_2d)
allocates and initializes a type that represent a blacs context
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
Utilities to set up the control types.
subroutine, public write_qs_control(qs_control, dft_section)
Purpose: Write the QS control parameters to the output unit.
subroutine, public read_rixs_control(rixs_control, rixs_section, qs_control)
Reads the input and stores in the rixs_control_type.
subroutine, public read_tddfpt2_control(t_control, t_section, qs_control)
Read TDDFPT-related input parameters.
subroutine, public read_dft_control(dft_control, dft_section)
...
subroutine, public read_qs_section(qs_control, qs_section)
...
subroutine, public write_admm_control(admm_control, dft_section)
Write the ADMM control parameters to the output unit.
subroutine, public write_dft_control(dft_control, dft_section)
Write the DFT control parameters to the output unit.
subroutine, public read_ddapc_section(qs_control, qs_section, ddapc_restraint_section)
reads the input parameters needed for ddapc.
subroutine, public read_mgrid_section(qs_control, dft_section)
...
contains information regarding the decoupling/recoupling method of Bloechl
subroutine, public cp_ddapc_ewald_create(cp_ddapc_ewald, qmmm_decoupl, qm_cell, force_env_section, subsys_section, para_env)
...
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...
types that represent a subsys, i.e. a part of the system
subroutine, public write_symmetry(particle_set, cell, input_section)
Write symmetry information to output.
stores a lists of integer that are local to a processor. The idea is that these integers represent ob...
subroutine, public distribution_1d_release(distribution_1d)
releases the given distribution_1d
Distribution methods for atoms, particles, or molecules.
subroutine, public distribute_molecules_1d(atomic_kind_set, particle_set, local_particles, molecule_kind_set, molecule_set, local_molecules, force_env_section, prev_molecule_kind_set, prev_local_molecules)
Distribute molecules and particles.
Types needed for a for a Energy Correction.
Energy correction environment setup and handling.
subroutine, public ec_write_input(ec_env)
Print out the energy correction input section.
subroutine, public ec_env_create(qs_env, ec_env, dft_section, ec_section)
Allocates and intitializes ec_env.
Definition and initialisation of the et_coupling data type.
subroutine, public et_coupling_create(et_coupling)
...
subroutine, public ewald_env_set(ewald_env, ewald_type, alpha, epsilon, eps_pol, gmax, ns_max, precs, o_spline, para_env, poisson_section, interaction_cutoffs, cell_hmat)
Purpose: Set the EWALD environment.
subroutine, public ewald_env_create(ewald_env, para_env)
allocates and intitializes a ewald_env
subroutine, public read_ewald_section(ewald_env, ewald_section)
Purpose: read the EWALD section.
subroutine, public read_ewald_section_tb(ewald_env, ewald_section, hmat, silent, pset)
Purpose: read the EWALD section for TB methods.
subroutine, public ewald_env_get(ewald_env, ewald_type, alpha, eps_pol, epsilon, gmax, ns_max, o_spline, group, para_env, poisson_section, precs, rcut, do_multipoles, max_multipole, do_ipol, max_ipol_iter, interaction_cutoffs, cell_hmat)
Purpose: Get the EWALD environment.
subroutine, public ewald_pw_grid_update(ewald_pw, ewald_env, cell_hmat)
Rescales pw_grids for given box, if necessary.
subroutine, public ewald_pw_create(ewald_pw, ewald_env, cell, cell_ref, print_section)
creates the structure ewald_pw_type
Types for excited states potential energies.
subroutine, public exstate_create(ex_env, excited_state, dft_section)
Allocates and intitializes exstate_env.
Definition of the atomic potential types.
subroutine, public fist_nonbond_env_create(fist_nonbond_env, atomic_kind_set, potparm14, potparm, do_nonbonded, do_electrostatics, verlet_skin, ewald_rcut, ei_scale14, vdw_scale14, shift_cutoff)
allocates and intitializes a fist_nonbond_env
Calculation of the incomplete Gamma function F_n(t) for multi-center integrals over Cartesian Gaussia...
subroutine, public init_md_ftable(nmax)
Initialize a table of F_n(t) values in the range 0 <= t <= 12 with a stepsize of 0....
Define type storing the global information of a run. Keep the amount of stored data small....
subroutine, public init_coulomb_local(hartree_local, natom)
...
Types and set/get functions for HFX.
subroutine, public hfx_create(x_data, para_env, hfx_section, atomic_kind_set, qs_kind_set, particle_set, dft_control, cell, orb_basis, ri_basis, nelectron_total, nkp_grid)
This routine allocates and initializes all types in hfx_data
subroutine, public compare_hfx_sections(hfx_section1, hfx_section2, is_identical, same_except_frac)
Compares the non-technical parts of two HFX input section and check whether they are the same Ignore ...
Routines for a Kim-Gordon-like partitioning into molecular subunits.
subroutine, public kg_env_create(qs_env, kg_env, qs_kind_set, input)
Allocates and intitializes kg_env.
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Routines needed for kpoint calculation.
subroutine, public kpoint_initialize_mos(kpoint, mos, added_mos, for_aux_fit)
Initialize a set of MOs and density matrix for each kpoint (kpoint group)
subroutine, public kpoint_initialize(kpoint, particle_set, cell)
Generate the kpoints and initialize the kpoint environment.
subroutine, public kpoint_env_initialize(kpoint, para_env, blacs_env, with_aux_fit)
Initialize the kpoint environment.
Types and basic routines needed for a kpoint calculation.
subroutine, public read_kpoint_section(kpoint, kpoint_section, a_vec)
Read the kpoint input section.
subroutine, public write_kpoint_info(kpoint, iounit, dft_section)
Write information on the kpoints to output.
subroutine, public kpoint_create(kpoint)
Create a kpoint environment.
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.
initializes the environment for lri lri : local resolution of the identity
subroutine, public lri_env_init(lri_env, lri_section)
initializes the lri env
subroutine, public lri_env_basis(ri_type, qs_env, lri_env, qs_kind_set)
initializes the lri env
contains the types and subroutines for dealing with the lri_env lri : local resolution of the identit...
Machine interface based on Fortran 2003 and POSIX.
subroutine, public m_flush(lunit)
flushes units if the &GLOBAL flag is set accordingly
Definition of mathematical constants and functions.
real(kind=dp), parameter, public pi
Interface to the message passing library MPI.
Define the molecule kind structure types and the corresponding functionality.
subroutine, public write_molecule_kind_set(molecule_kind_set, subsys_section)
Write a moleculeatomic kind set data set to the output unit.
Define the data structure for the molecule information.
Types needed for MP2 calculations.
subroutine, public read_mp2_section(input, mp2_env)
...
Types needed for MP2 calculations.
subroutine, public mp2_env_create(mp2_env)
...
Multipole structure: for multipole (fixed and induced) in FF based MD.
integer, parameter, public do_multipole_none
Provides Cartesian and spherical orbital pointers and indices.
subroutine, public init_orbital_pointers(maxl)
Initialize or update the orbital pointers.
Define methods related to particle_type.
subroutine, public write_qs_particle_coordinates(particle_set, qs_kind_set, subsys_section, label)
Write the atomic coordinates to the output unit.
subroutine, public write_structure_data(particle_set, cell, input_section)
Write structure data requested by a separate structure data input section to the output unit....
subroutine, public write_particle_distances(particle_set, cell, subsys_section)
Write the matrix of the particle distances to the output unit.
Define the data structure for the particle information.
Definition of physical constants:
real(kind=dp), parameter, public kelvin
container for various plainwaves related things
subroutine, public qs_basis_rotation(qs_env, kpoints)
Construct basis set rotation matrices.
subroutine, public qs_dftb_param_init(atomic_kind_set, qs_kind_set, dftb_control, dftb_potential, subsys_section, para_env)
...
Definition of the DFTB parameter types.
Calculation of non local dispersion functionals Some routines adapted from: Copyright (C) 2001-2009 Q...
subroutine, public qs_dispersion_nonloc_init(dispersion_env, para_env)
...
Calculation of dispersion using pair potentials.
subroutine, public qs_dispersion_pairpot_init(atomic_kind_set, qs_kind_set, dispersion_env, pp_section, para_env)
...
Definition of disperson types for DFT calculations.
Set disperson types for DFT calculations.
subroutine, public qs_dispersion_env_set(dispersion_env, xc_section)
...
subroutine, public qs_write_dispersion(qs_env, dispersion_env, ounit)
...
subroutine, public allocate_qs_energy(qs_energy)
Allocate and/or initialise a Quickstep energy data structure.
qs_environment methods that use many other modules
subroutine, public qs_env_setup(qs_env)
initializes various components of the qs_env, that need only atomic_kind_set, cell,...
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.
subroutine, public set_qs_env(qs_env, super_cell, mos, qmmm, qmmm_periodic, mimic, 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, rhoz_cneo_set, 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, harris_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, eeq, rhs, do_rixs, tb_tblite)
Set the QUICKSTEP environment.
subroutine, public qs_init(qs_env, para_env, root_section, globenv, cp_subsys, kpoint_env, cell, cell_ref, qmmm, qmmm_env_qm, force_env_section, subsys_section, use_motion_section, silent)
Read the input and the database files for the setup of the QUICKSTEP environment.
Definition of gCP types for DFT calculations.
Set disperson types for DFT calculations.
subroutine, public qs_gcp_env_set(gcp_env, xc_section)
...
subroutine, public qs_gcp_init(qs_env, gcp_env)
...
Types needed for a for a Harris model calculation.
subroutine, public harris_rhoin_init(rhoin, basis_type, qs_kind_set, atomic_kind_set, local_particles, nspin)
...
Harris method environment setup and handling.
subroutine, public harris_write_input(harris_env)
Print out the Harris method input section.
subroutine, public harris_env_create(qs_env, harris_env, harris_section)
Allocates and intitializes harris_env.
Calculate the interaction radii for the operator matrix calculation.
subroutine, public write_pgf_orb_radii(basis, atomic_kind_set, qs_kind_set, subsys_section)
Write the orbital basis function radii to the output unit.
subroutine, public write_paw_radii(atomic_kind_set, qs_kind_set, subsys_section)
Write the radii of the one center projector.
subroutine, public write_ppnl_radii(atomic_kind_set, qs_kind_set, subsys_section)
Write the radii of the projector functions of the Goedecker pseudopotential (GTH, non-local part) to ...
subroutine, public init_se_nlradius(se_control, atomic_kind_set, qs_kind_set, subsys_section)
...
subroutine, public write_ppl_radii(atomic_kind_set, qs_kind_set, subsys_section)
Write the radii of the exponential functions of the Goedecker pseudopotential (GTH,...
subroutine, public init_interaction_radii(qs_control, qs_kind_set)
Initialize all the atomic kind radii for a given threshold value.
subroutine, public write_core_charge_radii(atomic_kind_set, qs_kind_set, subsys_section)
Write the radii of the core charge distributions to the output unit.
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, cneo_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, zatom, 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_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, monovalent, floating, name, element_symbol, pao_basis_size, pao_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
subroutine, public get_qs_kind_set(qs_kind_set, all_potential_present, tnadd_potential_present, gth_potential_present, sgp_potential_present, paw_atom_present, dft_plus_u_atom_present, maxcgf, maxsgf, maxco, maxco_proj, maxgtops, maxlgto, maxlprj, maxnset, maxsgf_set, ncgf, npgf, nset, nsgf, nshell, maxpol, maxlppl, maxlppnl, maxppnl, nelectron, maxder, max_ngrid_rad, max_sph_harm, maxg_iso_not0, lmax_rho0, basis_rcut, basis_type, total_zeff_corr, npgf_seg, cneo_potential_present, nkind_q, natom_q)
Get attributes of an atomic kind set.
subroutine, public init_gapw_nlcc(qs_kind_set)
...
subroutine, public init_cneo_basis_set(qs_kind_set, qs_control)
...
subroutine, public set_qs_kind(qs_kind, paw_atom, ghost, floating, hard_radius, hard0_radius, covalent_radius, vdw_radius, lmax_rho0, zeff, no_optimize, dispersion, u_minus_j, reltmat, dftb_parameter, xtb_parameter, elec_conf, pao_basis_size)
Set the components of an atomic kind data set.
subroutine, public write_qs_kind_set(qs_kind_set, subsys_section)
Write an atomic kind set data set to the output unit.
subroutine, public init_gapw_basis_set(qs_kind_set, qs_control, force_env_section, modify_qs_control)
...
subroutine, public init_qs_kind_set(qs_kind_set)
Initialise an atomic kind set data set.
subroutine, public check_qs_kind_set(qs_kind_set, dft_control, subsys_section)
...
subroutine, public write_gto_basis_sets(qs_kind_set, subsys_section)
Write all the GTO basis sets of an atomic kind set to the output unit (for the printing of the unnorm...
subroutine, public set_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, exc_accint, 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, xcint_weights, 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_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, task_list, task_list_soft, subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env)
...
subroutine, public qs_ks_env_create(ks_env)
Allocates a new instance of ks_env.
Definition and initialisation of the mo data type.
subroutine, public allocate_mo_set(mo_set, nao, nmo, nelectron, n_el_f, maxocc, flexible_electron_count)
Allocates a mo set and partially initializes it (nao,nmo,nelectron, and flexible_electron_count are v...
subroutine, public rho0_s_grid_create(pw_env, rho0_mpole)
...
subroutine, public init_rho0(local_rho_set, qs_env, gapw_control, zcore)
...
subroutine, public init_rho_atom(rho_atom_set, atomic_kind_set, qs_kind_set, dft_control, para_env)
...
Routines that work on qs_subsys_type.
subroutine, public qs_subsys_create(subsys, para_env, root_section, force_env_section, subsys_section, use_motion_section, cp_subsys, cell, cell_ref, elkind, silent)
Creates a qs_subsys. Optionally an existsing cp_subsys is used.
types that represent a quickstep subsys
subroutine, public qs_subsys_get(subsys, atomic_kinds, atomic_kind_set, particles, particle_set, local_particles, molecules, molecule_set, molecule_kinds, molecule_kind_set, local_molecules, para_env, colvar_p, shell_particles, core_particles, gci, multipoles, natom, nparticle, ncore, nshell, nkind, atprop, virial, results, cell, cell_ref, use_ref_cell, energy, force, qs_kind_set, cp_subsys, nelectron_total, nelectron_spin)
...
subroutine, public qs_subsys_set(subsys, cp_subsys, local_particles, local_molecules, cell, cell_ref, use_ref_cell, energy, force, qs_kind_set, nelectron_total, nelectron_spin)
...
Storage of past states of the qs_env. Methods to interpolate (or actually normally extrapolate) the n...
subroutine, public wfi_create_for_kp(wf_history)
Adapts wf_history storage flags for k-point calculations. For ASPC, switches from Gamma WFN storage t...
subroutine, public wfi_create(wf_history, interpolation_method_nr, extrapolation_order, has_unit_metric)
...
interpolate the wavefunctions to speed up the convergence when doing MD
subroutine, public wfi_release(wf_history)
releases a wf_history of a wavefunction (see doc/ReferenceCounting.html)
parameters that control a relativistic calculation
subroutine, public rel_c_create(rel_control)
allocates and initializes an rel control object with the default values
subroutine, public rel_c_read_parameters(rel_control, dft_section)
reads the parameters of the relativistic section into the given rel_control
parameters that control an scf iteration
subroutine, public scf_c_read_parameters(scf_control, inp_section)
reads the parameters of the scf section into the given scf_control
subroutine, public scf_c_write_parameters(scf_control, dft_section)
writes out the scf parameters
subroutine, public scf_c_create(scf_control)
allocates and initializes an scf control object with the default values
Methods for handling the 1/R^3 residual integral part.
subroutine, public semi_empirical_expns3_setup(qs_kind_set, se_control, method_id)
Setup the quantity necessary to handle the slowly convergent residual integral term 1/R^3.
Arrays of parameters used in the semi-empirical calculations \References Everywhere in this module TC...
subroutine, public init_se_intd_array()
Initialize all arrays used for the evaluation of the integrals.
Setup and Methods for semi-empirical multipole types.
subroutine, public nddo_mpole_setup(nddo_mpole, natom)
Setup NDDO multipole type.
Definition of the semi empirical multipole integral expansions types.
Type to store integrals for semi-empirical calculations.
subroutine, public semi_empirical_si_create(store_int_env, se_section, compression)
Allocate semi-empirical store integrals type.
Definition of the semi empirical parameter types.
subroutine, public se_taper_create(se_taper, integral_screening, do_ewald, taper_cou, range_cou, taper_exc, range_exc, taper_scr, range_scr, taper_lrc, range_lrc)
Creates the taper type used in SE calculations.
Working with the semi empirical parameter types.
subroutine, public se_cutoff_compatible(se_control, se_section, cell, output_unit)
Reset cutoffs trying to be somehow a bit smarter.
subroutine, public tb_set_calculator(tb, typ)
...
subroutine, public tb_init_wf(tb)
initialize wavefunction ...
subroutine, public tb_init_geometry(qs_env, tb)
intialize geometry objects ...
subroutine, public tb_get_basis(tb, gto_basis_set, element_symbol, param, occ)
...
routines for DFT+NEGF calculations (coupling with the quantum transport code OMEN)
subroutine, public transport_env_create(qs_env)
creates the transport environment
subroutine, public xtb_parameters_set(param)
Read atom parameters for xTB Hamiltonian from input file.
subroutine, public xtb_parameters_init(param, gfn_type, element_symbol, parameter_file_path, parameter_file_name, para_env)
...
subroutine, public init_xtb_basis(param, gto_basis_set, ngauss)
...
xTB (repulsive) pair potentials Reference: Stefan Grimme, Christoph Bannwarth, Philip Shushkov JCTC 1...
subroutine, public xtb_pp_radius(qs_kind_set, ppradius, eps_pair, kfparam)
...
Definition of the xTB parameter types.
subroutine, public allocate_xtb_atom_param(xtb_parameter)
...
subroutine, public set_xtb_atom_param(xtb_parameter, aname, typ, defined, z, zeff, natorb, lmax, nao, lao, rcut, rcov, kx, eta, xgamma, alpha, zneff, nshell, nval, lval, kpoly, kappa, hen, zeta, xi, kappa0, alpg, electronegativity, occupation, chmax, en, kqat2, kcn, kq)
...
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.
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...
represents a system: atoms, molecules, their pos,vel,...
structure to store local (to a processor) ordered lists of integers.
Contains information on the energy correction functional for KG.
to build arrays of pointers
Contains information on the excited states energy.
contains the initially parsed file and the initial parallel environment
Contains information about kpoints.
stores all the informations relevant to an mpi environment
contained for different pw related things
Contains information on the Harris method.
Provides all information about a quickstep kind.
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...
keeps track of the previous wavefunctions and can extrapolate them for the next step of md
contains the parameters needed by a relativistic calculation
Global Multipolar NDDO information type.
Semi-empirical store integrals type.
Taper type use in semi-empirical calculations.