216#include "./base/base_uses.f90"
223 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_environment'
249 SUBROUTINE qs_init(qs_env, para_env, root_section, globenv, cp_subsys, kpoint_env, cell, cell_ref, &
250 qmmm, qmmm_env_qm, force_env_section, subsys_section, &
251 use_motion_section, silent)
259 TYPE(
cell_type),
OPTIONAL,
POINTER :: cell, cell_ref
260 LOGICAL,
INTENT(IN),
OPTIONAL :: qmmm
263 LOGICAL,
INTENT(IN) :: use_motion_section
264 LOGICAL,
INTENT(IN),
OPTIONAL :: silent
266 CHARACTER(LEN=default_string_length) :: basis_type
267 INTEGER :: ikind, method_id, nelectron_total, &
269 LOGICAL :: do_admm_rpa, do_ec_hfx, do_et, do_exx, do_hfx, do_kpoints, is_identical, is_semi, &
270 mp2_present, my_qmmm, qmmm_decoupl, same_except_frac, use_ref_cell
271 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: rtmat
273 TYPE(
cell_type),
POINTER :: my_cell, my_cell_ref
283 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
290 et_coupling_section, hfx_section, kpoint_section, mp2_section, rpa_hfx_section, &
293 NULLIFY (my_cell, my_cell_ref, atomic_kind_set, particle_set, &
294 qs_kind_set, kpoint_section, dft_section, ec_section, &
295 subsys, ks_env, dft_control, blacs_env)
297 CALL set_qs_env(qs_env, input=force_env_section)
298 IF (.NOT.
ASSOCIATED(subsys_section))
THEN
304 IF (
PRESENT(qmmm)) my_qmmm = qmmm
305 qmmm_decoupl = .false.
306 IF (
PRESENT(qmmm_env_qm))
THEN
310 qmmm_decoupl = my_qmmm .AND. qmmm_env_qm%periodic .AND. qmmm_env_qm%multipole
312 qs_env%qmmm_env_qm => qmmm_env_qm
318 SELECT CASE (method_id)
331 force_env_section=force_env_section, &
332 subsys_section=subsys_section, &
333 use_motion_section=use_motion_section, &
334 root_section=root_section, &
335 cp_subsys=cp_subsys, cell=cell, cell_ref=cell_ref, &
336 elkind=is_semi, silent=silent)
345 cell_ref=my_cell_ref, &
346 use_ref_cell=use_ref_cell, &
347 atomic_kind_set=atomic_kind_set, &
348 qs_kind_set=qs_kind_set, &
349 particle_set=particle_set)
352 IF (
PRESENT(globenv))
THEN
354 globenv%blacs_repeatable)
363 force_env_section, subsys_section, para_env)
366 IF (
PRESENT(kpoint_env))
THEN
367 kpoints => kpoint_env
368 CALL set_qs_env(qs_env=qs_env, kpoints=kpoints)
373 CALL set_qs_env(qs_env=qs_env, kpoints=kpoints)
381 CALL qs_init_subsys(qs_env, para_env, subsys, my_cell, my_cell_ref, use_ref_cell, &
382 subsys_section, silent=silent)
384 CALL get_qs_env(qs_env, dft_control=dft_control)
385 IF (method_id ==
do_method_lrigpw .OR. dft_control%qs_control%lri_optbas)
THEN
386 CALL get_qs_env(qs_env=qs_env, lri_env=lri_env)
389 CALL cp_warn(__location__,
"Experimental code: "// &
390 "RIGPW should only be used for testing.")
391 CALL get_qs_env(qs_env=qs_env, lri_env=lri_env)
395 IF (my_qmmm .AND.
PRESENT(qmmm_env_qm) .AND. .NOT. dft_control%qs_control%commensurate_mgrids)
THEN
397 CALL cp_abort(__location__,
"QM/MM with coupling GAUSS or S-WAVE requires "// &
398 "keyword FORCE_EVAL/DFT/MGRID/COMMENSURATE to be enabled.")
403 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints, blacs_env=blacs_env)
407 CALL get_qs_env(qs_env=qs_env, wf_history=wf_history)
418 CALL get_qs_env(qs_env, dft_control=dft_control, scf_control=scf_control, nelectron_total=nelectron_total)
423 IF (dft_control%do_admm)
THEN
424 basis_type =
'AUX_FIT'
428 CALL hfx_create(qs_env%x_data, para_env, hfx_section, atomic_kind_set, &
429 qs_kind_set, particle_set, dft_control, my_cell, orb_basis=basis_type, &
430 nelectron_total=nelectron_total, nkp_grid=nkp_grid)
435 IF (mp2_present)
THEN
436 cpassert(
ASSOCIATED(qs_env%mp2_env))
449 qs_env%mp2_env%ri_rpa%reuse_hfx = .true.
450 IF (.NOT. do_hfx) qs_env%mp2_env%ri_rpa%reuse_hfx = .false.
452 IF (.NOT. (is_identical .OR. same_except_frac)) qs_env%mp2_env%ri_rpa%reuse_hfx = .false.
453 IF (dft_control%do_admm .AND. .NOT. do_admm_rpa) qs_env%mp2_env%ri_rpa%reuse_hfx = .false.
455 IF (.NOT. qs_env%mp2_env%ri_rpa%reuse_hfx)
THEN
456 IF (do_admm_rpa)
THEN
457 basis_type =
'AUX_FIT'
461 CALL hfx_create(qs_env%mp2_env%ri_rpa%x_data, para_env, rpa_hfx_section, atomic_kind_set, &
462 qs_kind_set, particle_set, dft_control, my_cell, orb_basis=basis_type, &
463 nelectron_total=nelectron_total)
465 qs_env%mp2_env%ri_rpa%x_data => qs_env%x_data
470 IF (dft_control%qs_control%do_kg)
THEN
472 CALL kg_env_create(qs_env, qs_env%kg_env, qs_kind_set, qs_env%input)
477 l_val=qs_env%excited_state)
478 NULLIFY (exstate_env)
479 CALL exstate_create(exstate_env, qs_env%excited_state, dft_section)
480 CALL set_qs_env(qs_env, exstate_env=exstate_env)
483 "PROPERTIES%ET_COUPLING")
489 IF (qs_env%do_transport)
THEN
493 CALL get_qs_env(qs_env, harris_env=harris_env)
494 IF (qs_env%harris_method)
THEN
496 CALL get_qs_env(qs_env, local_particles=local_particles)
497 CALL harris_rhoin_init(harris_env%rhoin,
"RHOIN", qs_kind_set, atomic_kind_set, &
498 local_particles, dft_control%nspins)
506 l_val=qs_env%energy_correction)
511 IF (qs_env%energy_correction)
THEN
516 IF (ec_env%do_ec_hfx)
THEN
519 IF (ec_env%basis_inconsistent)
THEN
520 CALL cp_abort(__location__, &
521 "Energy correction methods with hybrid functionals: "// &
522 "correction and ground state need to use the same basis. "// &
523 "Checked by comparing basis set names only.")
527 IF (ec_env%do_ec_admm .AND. .NOT. dft_control%do_admm)
THEN
528 CALL cp_abort(__location__,
"Need an ADMM input section for ADMM EC to work")
531 ec_env%reuse_hfx = .true.
532 IF (.NOT. do_hfx) ec_env%reuse_hfx = .false.
534 IF (.NOT. (is_identical .OR. same_except_frac)) ec_env%reuse_hfx = .false.
535 IF (dft_control%do_admm .AND. .NOT. ec_env%do_ec_admm) ec_env%reuse_hfx = .false.
537 IF (.NOT. ec_env%reuse_hfx)
THEN
538 IF (ec_env%do_ec_admm)
THEN
539 basis_type =
'AUX_FIT'
543 CALL hfx_create(ec_env%x_data, para_env, ec_hfx_section, atomic_kind_set, &
544 qs_kind_set, particle_set, dft_control, my_cell, orb_basis=basis_type, &
545 nelectron_total=nelectron_total)
547 ec_env%x_data => qs_env%x_data
556 IF (dft_control%qs_control%do_almo_scf)
THEN
561 CALL get_qs_env(qs_env, rel_control=rel_control)
562 IF (rel_control%rel_method /=
rel_none)
THEN
564 nkind =
SIZE(atomic_kind_set)
568 IF (
ASSOCIATED(rtmat))
CALL set_qs_kind(qs_kind_set(ikind), reltmat=rtmat)
587 SUBROUTINE qs_init_subsys(qs_env, para_env, subsys, cell, cell_ref, use_ref_cell, subsys_section, &
593 TYPE(
cell_type),
POINTER :: cell, cell_ref
594 LOGICAL,
INTENT(in) :: use_ref_cell
596 LOGICAL,
INTENT(in),
OPTIONAL :: silent
598 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_init_subsys'
600 CHARACTER(len=2) :: element_symbol
601 INTEGER :: gfn_type, handle, ikind, ispin, iw, lmax_sphere, maxl, maxlgto, maxlgto_lri, &
602 maxlgto_nuc, maxlppl, maxlppnl, method_id, multiplicity, my_ival, n_ao, n_mo_add, natom, &
603 nelectron, ngauss, nkind, output_unit, sort_basis, tnadd_method
604 INTEGER,
DIMENSION(2) :: n_mo, nelectron_spin
605 INTEGER,
DIMENSION(5) :: occ
606 LOGICAL :: all_potential_present, be_silent, cneo_potential_present, do_kpoints, do_ri_hfx, &
607 do_ri_mp2, do_ri_rpa, do_ri_sos_mp2, do_rpa_ri_exx, do_wfc_im_time, e1terms, &
608 has_unit_metric, lribas, mp2_present, orb_gradient, paw_atom
609 REAL(kind=
dp) :: alpha, ccore, ewald_rcut, fxx, maxocc, &
610 rc, rcut, total_zeff_corr, &
611 verlet_skin, zeff_correction
622 rhoin_basis, ri_aux_basis_set, &
623 ri_hfx_basis, ri_xas_basis, &
628 TYPE(
mo_set_type),
DIMENSION(:),
POINTER :: mos, mos_last_converged
637 POINTER :: dftb_potential
642 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
650 TYPE(
section_vals_type),
POINTER :: dft_section, et_coupling_section, et_ddapc_section, &
651 ewald_section, harris_section, lri_section, mp2_section, nl_section, poisson_section, &
652 pp_section, print_section, qs_section, rixs_section, se_section, tddfpt_section, &
658 CALL timeset(routinen, handle)
664 IF (
PRESENT(silent)) be_silent = silent
669 NULLIFY (mos, se_taper)
670 NULLIFY (dft_control)
673 NULLIFY (local_molecules)
674 NULLIFY (local_particles)
675 NULLIFY (scf_control)
676 NULLIFY (dft_section)
677 NULLIFY (et_coupling_section)
679 NULLIFY (mos_last_converged)
688 qs_kind_set=qs_kind_set, &
689 atomic_kind_set=atomic_kind_set, &
690 molecule_set=molecule_set, &
691 molecule_kind_set=molecule_kind_set)
697 dft_control%qs_control%periodicity = sum(cell%perd)
703 IF (.NOT. be_silent)
THEN
706 SELECT CASE (method_id)
715 IF (dft_control%qs_control%xtb_control%do_tblite)
THEN
716 CALL tblite_header(iw, dft_control%qs_control%xtb_control%tblite_method)
718 gfn_type = dft_control%qs_control%xtb_control%gfn_type
723 "PRINT%PROGRAM_BANNER")
726 IF (dft_control%do_sccs .AND. dft_control%qs_control%gapw)
THEN
727 cpabort(
"SCCS is not yet implemented with GAPW")
729 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
732 SELECT CASE (dft_control%qs_control%wf_interpolation_method_nr)
740 dft_control%qs_control%et_coupling_calc = .false.
743 dft_control%qs_control%et_coupling_calc = .true.
744 dft_control%qs_control%ddapc_restraint = .true.
745 CALL read_ddapc_section(dft_control%qs_control, ddapc_restraint_section=et_ddapc_section)
755 IF (qs_env%do_rixs)
THEN
756 CALL read_rixs_control(dft_control%rixs_control, rixs_section, dft_control%qs_control)
762 ALLOCATE (rel_control)
765 CALL set_qs_env(qs_env, rel_control=rel_control)
770 NULLIFY (ewald_env, ewald_pw, dftb_potential)
771 dftb_control => dft_control%qs_control%dftb_control
773 subsys_section=subsys_section, para_env=para_env)
774 CALL set_qs_env(qs_env, dftb_potential=dftb_potential)
776 IF (dftb_control%do_ewald)
THEN
780 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
786 CALL ewald_pw_create(ewald_pw, ewald_env, cell, cell_ref, print_section=print_section)
787 CALL set_qs_env(qs_env, ewald_env=ewald_env, ewald_pw=ewald_pw)
789 ELSEIF (dft_control%qs_control%method_id ==
do_method_xtb)
THEN
791 xtb_control => dft_control%qs_control%xtb_control
793 IF (xtb_control%do_tblite)
THEN
802 qs_kind => qs_kind_set(ikind)
804 cpassert(.NOT.
ASSOCIATED(qs_kind%xtb_parameter))
807 CALL get_qs_kind(qs_kind, element_symbol=element_symbol)
809 NULLIFY (tmp_basis_set)
810 CALL tb_get_basis(qs_env%tb_tblite, tmp_basis_set, element_symbol, qs_kind%xtb_parameter, occ)
815 zeff_correction = 0.0_dp
817 zeff=real(sum(occ),
dp), zeff_correction=zeff_correction)
820 NULLIFY (ewald_env, ewald_pw)
822 qs_kind => qs_kind_set(ikind)
824 cpassert(.NOT.
ASSOCIATED(qs_kind%xtb_parameter))
827 gfn_type = dft_control%qs_control%xtb_control%gfn_type
828 CALL get_qs_kind(qs_kind, element_symbol=element_symbol)
830 xtb_control%parameter_file_path, xtb_control%parameter_file_name, &
835 NULLIFY (tmp_basis_set)
836 IF (qs_kind%xtb_parameter%z == 1)
THEN
838 ngauss = xtb_control%h_sto_ng
840 ngauss = xtb_control%sto_ng
842 IF (qs_kind%xtb_parameter%defined)
THEN
847 IF (
ASSOCIATED(qs_kind%all_potential))
THEN
848 DEALLOCATE (qs_kind%all_potential%elec_conf)
849 DEALLOCATE (qs_kind%all_potential)
853 IF (qs_kind%xtb_parameter%defined)
THEN
854 zeff_correction = 0.0_dp
856 zeff=qs_kind%xtb_parameter%zeff, zeff_correction=zeff_correction)
857 CALL get_potential(qs_kind%all_potential, alpha_core_charge=alpha)
858 ccore = qs_kind%xtb_parameter%zeff*sqrt((alpha/
pi)**3)
859 CALL set_potential(qs_kind%all_potential, ccore_charge=ccore)
860 qs_kind%xtb_parameter%zeff = qs_kind%xtb_parameter%zeff - zeff_correction
866 ALLOCATE (xtb_control%rcpair(nkind, nkind))
867 CALL xtb_pp_radius(qs_kind_set, xtb_control%rcpair, xtb_control%eps_pair, xtb_control%kf)
869 IF (xtb_control%do_ewald)
THEN
873 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
876 IF (gfn_type == 0)
THEN
878 silent=silent, pset=
"EEQ")
884 CALL ewald_pw_create(ewald_pw, ewald_env, cell, cell_ref, print_section=print_section)
885 CALL set_qs_env(qs_env, ewald_env=ewald_env, ewald_pw=ewald_pw)
892 dft_control%qs_control%lri_optbas .OR. &
902 CALL get_qs_kind_set(qs_kind_set, all_potential_present=all_potential_present)
903 IF ((dft_control%qs_control%method_id ==
do_method_gpw) .OR. &
906 IF (all_potential_present)
THEN
907 cpabort(
"All-electron calculations with GPW, GAPW_XC, and OFGPW are not implemented")
912 CALL get_qs_kind_set(qs_kind_set, cneo_potential_present=cneo_potential_present)
913 IF (cneo_potential_present .AND. &
915 cpabort(
"CNEO calculations require GAPW method")
919 CALL get_qs_kind_set(qs_kind_set, dft_plus_u_atom_present=dft_control%dft_plus_u)
921 IF (dft_control%do_admm)
THEN
925 NULLIFY (aux_fit_basis)
926 qs_kind => qs_kind_set(ikind)
927 CALL get_qs_kind(qs_kind, basis_set=aux_fit_basis, basis_type=
"AUX_FIT")
928 IF (.NOT. (
ASSOCIATED(aux_fit_basis)))
THEN
930 cpabort(
"AUX_FIT basis set is not defined. ")
940 e1terms = lri_env%exact_1c_terms
942 IF (dft_control%qs_control%do_kg)
THEN
950 NULLIFY (lri_aux_basis)
951 qs_kind => qs_kind_set(ikind)
952 CALL get_qs_kind(qs_kind, basis_set=lri_aux_basis, basis_type=
"LRI_AUX")
953 IF (.NOT. (
ASSOCIATED(lri_aux_basis)))
THEN
955 CALL cp_warn(__location__,
"Automatic Generation of LRI_AUX basis. "// &
956 "This is experimental code.")
965 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_RPA%HF%RI%_SECTION_PARAMETERS_", &
967 IF (do_ri_hfx .OR. do_rpa_ri_exx)
THEN
971 NULLIFY (ri_hfx_basis)
972 qs_kind => qs_kind_set(ikind)
973 CALL get_qs_kind(qs_kind=qs_kind, basis_set=ri_hfx_basis, &
975 IF (.NOT. (
ASSOCIATED(ri_hfx_basis)))
THEN
977 IF (dft_control%do_admm)
THEN
979 basis_type=
"AUX_FIT", basis_sort=sort_basis)
982 basis_sort=sort_basis)
993 NULLIFY (ri_hfx_basis)
994 qs_kind => qs_kind_set(ikind)
995 CALL get_qs_kind(qs_kind, basis_set=ri_hfx_basis, basis_type=
"RI_HXC")
996 IF (.NOT. (
ASSOCIATED(ri_hfx_basis)))
THEN
1005 NULLIFY (harris_env)
1007 l_val=qs_env%harris_method)
1010 CALL set_qs_env(qs_env, harris_env=harris_env)
1012 IF (qs_env%harris_method)
THEN
1016 NULLIFY (tmp_basis_set)
1017 qs_kind => qs_kind_set(ikind)
1018 CALL get_qs_kind(qs_kind, basis_set=rhoin_basis, basis_type=
"RHOIN")
1019 IF (.NOT. (
ASSOCIATED(rhoin_basis)))
THEN
1022 IF (qs_env%harris_env%density_source ==
hden_atomic)
THEN
1026 rhoin_basis => tmp_basis_set
1035 IF (mp2_present)
THEN
1039 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%LOW_SCALING%_SECTION_PARAMETERS_", &
1040 l_val=do_wfc_im_time)
1043 CALL cp_warn(__location__, &
1044 "Low-scaling RPA requires SORT_BASIS EXP keyword (in DFT input section) for good performance")
1049 CALL get_qs_env(qs_env, mp2_env=mp2_env, nkind=nkind)
1050 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_MP2%_SECTION_PARAMETERS_", l_val=do_ri_mp2)
1051 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_SOS_MP2%_SECTION_PARAMETERS_", l_val=do_ri_sos_mp2)
1052 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_RPA%_SECTION_PARAMETERS_", l_val=do_ri_rpa)
1053 IF (do_ri_mp2 .OR. do_ri_sos_mp2 .OR. do_ri_rpa)
THEN
1055 NULLIFY (ri_aux_basis_set)
1056 qs_kind => qs_kind_set(ikind)
1057 CALL get_qs_kind(qs_kind=qs_kind, basis_set=ri_aux_basis_set, &
1058 basis_type=
"RI_AUX")
1059 IF (.NOT. (
ASSOCIATED(ri_aux_basis_set)))
THEN
1066 qs_env%mp2_env%ri_aux_auto_generated = .true.
1073 IF (dft_control%do_xas_tdp_calculation .OR. qs_env%do_rixs)
THEN
1077 NULLIFY (ri_xas_basis)
1078 qs_kind => qs_kind_set(ikind)
1079 CALL get_qs_kind(qs_kind, basis_set=ri_xas_basis, basis_type=
"RI_XAS")
1080 IF (.NOT.
ASSOCIATED(ri_xas_basis))
THEN
1090 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto, maxlppl=maxlppl, maxlppnl=maxlppnl)
1093 IF (cneo_potential_present)
THEN
1094 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_nuc, basis_type=
"NUC")
1095 maxlgto = max(maxlgto, maxlgto_nuc)
1097 lmax_sphere = dft_control%qs_control%gapw_control%lmax_sphere
1098 IF (lmax_sphere < 0)
THEN
1099 lmax_sphere = 2*maxlgto
1100 dft_control%qs_control%gapw_control%lmax_sphere = lmax_sphere
1102 IF (dft_control%qs_control%method_id ==
do_method_lrigpw .OR. dft_control%qs_control%lri_optbas)
THEN
1103 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_lri, basis_type=
"LRI_AUX")
1105 maxlgto = max(maxlgto, maxlgto_lri)
1107 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_lri, basis_type=
"RI_HXC")
1108 maxlgto = max(maxlgto, maxlgto_lri)
1110 IF (dft_control%do_xas_tdp_calculation .OR. qs_env%do_rixs)
THEN
1112 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_lri, basis_type=
"RI_XAS")
1113 maxlgto = max(maxlgto, maxlgto_lri)
1115 maxl = max(2*maxlgto, maxlppl, maxlppnl, lmax_sphere) + 1
1127 qs_control => dft_control%qs_control
1132 IF (cneo_potential_present)
THEN
1139 maxl = max(3*maxlgto + 1, 0)
1146 IF (.NOT. dft_control%qs_control%xtb_control%do_tblite)
THEN
1150 qs_kind => qs_kind_set(ikind)
1151 IF (qs_kind%xtb_parameter%defined)
THEN
1152 CALL get_qs_kind(qs_kind, basis_set=tmp_basis_set)
1153 rcut = xtb_control%coulomb_sr_cut
1154 fxx = 2.0_dp*xtb_control%coulomb_sr_eps*qs_kind%xtb_parameter%eta**2
1155 fxx = 0.80_dp*(1.0_dp/fxx)**0.3333_dp
1156 rcut = min(rcut, xtb_control%coulomb_sr_cut)
1157 qs_kind%xtb_parameter%rcut = min(rcut, fxx)
1159 qs_kind%xtb_parameter%rcut = 0.0_dp
1165 IF (.NOT. be_silent)
THEN
1178 particle_set=particle_set, &
1179 local_particles=local_particles, &
1180 molecule_kind_set=molecule_kind_set, &
1181 molecule_set=molecule_set, &
1182 local_molecules=local_molecules, &
1183 force_env_section=qs_env%input)
1186 ALLOCATE (scf_control)
1188 IF (dft_control%qs_control%dftb)
THEN
1189 scf_control%non_selfconsistent = .NOT. dft_control%qs_control%dftb_control%self_consistent
1191 IF (dft_control%qs_control%xtb)
THEN
1192 IF (dft_control%qs_control%xtb_control%do_tblite)
THEN
1193 scf_control%non_selfconsistent = .false.
1195 scf_control%non_selfconsistent = (dft_control%qs_control%xtb_control%gfn_type == 0)
1198 IF (qs_env%harris_method)
THEN
1199 scf_control%non_selfconsistent = .true.
1207 has_unit_metric = .false.
1208 IF (dft_control%qs_control%semi_empirical)
THEN
1209 IF (dft_control%qs_control%se_control%orthogonal_basis) has_unit_metric = .true.
1211 IF (dft_control%qs_control%dftb)
THEN
1212 IF (dft_control%qs_control%dftb_control%orthogonal_basis) has_unit_metric = .true.
1214 CALL set_qs_env(qs_env, has_unit_metric=has_unit_metric)
1218 interpolation_method_nr= &
1219 dft_control%qs_control%wf_interpolation_method_nr, &
1220 extrapolation_order=dft_control%qs_control%wf_extrapolation_order, &
1221 has_unit_metric=has_unit_metric)
1225 scf_control=scf_control, &
1226 wf_history=wf_history)
1229 cell_ref=cell_ref, &
1230 use_ref_cell=use_ref_cell, &
1235 CALL set_ks_env(ks_env, dft_control=dft_control)
1237 CALL qs_subsys_set(subsys, local_molecules=local_molecules, &
1238 local_particles=local_particles, cell=cell)
1245 atomic_kind_set=atomic_kind_set, &
1246 dft_control=dft_control, &
1247 scf_control=scf_control)
1251 IF (dft_control%qs_control%do_ls_scf .OR. &
1252 dft_control%qs_control%do_almo_scf)
THEN
1253 CALL set_qs_env(qs_env=qs_env, requires_mo_derivs=.false.)
1255 IF (scf_control%use_ot)
THEN
1256 CALL set_qs_env(qs_env=qs_env, requires_mo_derivs=.true.)
1258 CALL set_qs_env(qs_env=qs_env, requires_mo_derivs=.false.)
1263 dft_control%smear = scf_control%smear%do_smear
1266 IF (.NOT. (dft_control%qs_control%dftb .OR. dft_control%qs_control%xtb))
THEN
1267 IF (dft_control%apply_period_efield)
THEN
1268 CALL get_qs_env(qs_env=qs_env, requires_mo_derivs=orb_gradient)
1269 IF (.NOT. orb_gradient)
THEN
1270 CALL cp_abort(__location__,
"Periodic Efield needs orbital gradient and direct optimization."// &
1271 " Use the OT optimization method.")
1273 IF (dft_control%smear)
THEN
1274 CALL cp_abort(__location__,
"Periodic Efield needs equal occupation numbers."// &
1275 " Smearing option is not possible.")
1284 NULLIFY (rho_atom_set)
1285 gapw_control => dft_control%qs_control%gapw_control
1286 CALL init_rho_atom(rho_atom_set, atomic_kind_set, qs_kind_set, dft_control, para_env)
1287 CALL set_qs_env(qs_env=qs_env, rho_atom_set=rho_atom_set)
1289 CALL get_qs_env(qs_env=qs_env, local_rho_set=local_rho_set, natom=natom)
1291 CALL init_rho0(local_rho_set, qs_env, gapw_control)
1298 IF (gapw_control%accurate_xcint)
THEN
1299 cpassert(.NOT.
ASSOCIATED(gapw_control%aw))
1301 ALLOCATE (gapw_control%aw(nkind))
1302 alpha = gapw_control%aweights
1304 qs_kind => qs_kind_set(ikind)
1305 CALL get_qs_kind(qs_kind, hard_radius=rc, paw_atom=paw_atom)
1307 gapw_control%aw(ikind) = alpha*(1.2_dp/rc)**2
1309 gapw_control%aw(ikind) = 0.0_dp
1319 ELSE IF (dft_control%qs_control%semi_empirical)
THEN
1320 NULLIFY (se_store_int_env, se_nddo_mpole, se_nonbond_env)
1321 natom =
SIZE(particle_set)
1323 se_control => dft_control%qs_control%se_control
1328 SELECT CASE (dft_control%qs_control%method_id)
1334 CALL init_se_nlradius(se_control, atomic_kind_set, qs_kind_set, subsys_section)
1339 IF (se_control%do_ewald .OR. se_control%do_ewald_gks)
THEN
1340 ALLOCATE (ewald_env)
1343 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
1346 "PRINT%GRID_INFORMATION")
1351 print_section=print_section)
1357 IF (se_control%do_ewald)
THEN
1358 CALL ewald_env_get(ewald_env, max_multipole=se_control%max_multipole)
1362 ALLOCATE (se_nonbond_env)
1364 do_electrostatics=.true., verlet_skin=verlet_skin, ewald_rcut=ewald_rcut, &
1365 ei_scale14=0.0_dp, vdw_scale14=0.0_dp, shift_cutoff=.false.)
1368 CALL set_qs_env(qs_env, ewald_env=ewald_env, ewald_pw=ewald_pw, &
1369 se_nonbond_env=se_nonbond_env, se_nddo_mpole=se_nddo_mpole)
1372 dft_control%qs_control%method_id)
1375 CALL se_taper_create(se_taper, se_control%integral_screening, se_control%do_ewald, &
1376 se_control%taper_cou, se_control%range_cou, &
1377 se_control%taper_exc, se_control%range_exc, &
1378 se_control%taper_scr, se_control%range_scr, &
1379 se_control%taper_lrc, se_control%range_lrc)
1383 CALL set_qs_env(qs_env, se_store_int_env=se_store_int_env)
1387 IF (dft_control%qs_control%method_id ==
do_method_gpw .OR. &
1393 ALLOCATE (dispersion_env)
1394 NULLIFY (xc_section)
1398 NULLIFY (pp_section)
1402 NULLIFY (nl_section)
1406 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1407 ELSE IF (dft_control%qs_control%method_id ==
do_method_dftb)
THEN
1408 ALLOCATE (dispersion_env)
1410 dispersion_env%doabc = .false.
1411 dispersion_env%c9cnst = .false.
1412 dispersion_env%lrc = .false.
1413 dispersion_env%srb = .false.
1414 dispersion_env%verbose = .false.
1415 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, dispersion_env%r0ab, dispersion_env%rcov, &
1416 dispersion_env%r2r4, dispersion_env%cn, dispersion_env%cnkind, dispersion_env%cnlist, &
1417 dispersion_env%d3_exclude_pair)
1418 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
1419 dispersion_env%d2y_dx2, dispersion_env%dftd_section)
1420 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
1421 IF (dftb_control%dispersion .AND. dftb_control%dispersion_type ==
dispersion_d3)
THEN
1424 dispersion_env%eps_cn = dftb_control%epscn
1425 dispersion_env%s6 = dftb_control%sd3(1)
1426 dispersion_env%sr6 = dftb_control%sd3(2)
1427 dispersion_env%s8 = dftb_control%sd3(3)
1428 dispersion_env%domol = .false.
1429 dispersion_env%kgc8 = 0._dp
1430 dispersion_env%rc_disp = dftb_control%rcdisp
1431 dispersion_env%exp_pre = 0._dp
1432 dispersion_env%scaling = 0._dp
1433 dispersion_env%nd3_exclude_pair = 0
1434 dispersion_env%parameter_file_name = dftb_control%dispersion_parameter_file
1436 ELSEIF (dftb_control%dispersion .AND. dftb_control%dispersion_type ==
dispersion_d3bj)
THEN
1439 dispersion_env%eps_cn = dftb_control%epscn
1440 dispersion_env%s6 = dftb_control%sd3bj(1)
1441 dispersion_env%a1 = dftb_control%sd3bj(2)
1442 dispersion_env%s8 = dftb_control%sd3bj(3)
1443 dispersion_env%a2 = dftb_control%sd3bj(4)
1444 dispersion_env%domol = .false.
1445 dispersion_env%kgc8 = 0._dp
1446 dispersion_env%rc_disp = dftb_control%rcdisp
1447 dispersion_env%exp_pre = 0._dp
1448 dispersion_env%scaling = 0._dp
1449 dispersion_env%nd3_exclude_pair = 0
1450 dispersion_env%parameter_file_name = dftb_control%dispersion_parameter_file
1452 ELSEIF (dftb_control%dispersion .AND. dftb_control%dispersion_type ==
dispersion_d2)
THEN
1455 dispersion_env%exp_pre = dftb_control%exp_pre
1456 dispersion_env%scaling = dftb_control%scaling
1457 dispersion_env%parameter_file_name = dftb_control%dispersion_parameter_file
1458 dispersion_env%rc_disp = dftb_control%rcdisp
1463 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1464 ELSE IF (dft_control%qs_control%method_id ==
do_method_xtb)
THEN
1465 IF (.NOT. (dft_control%qs_control%xtb_control%do_tblite))
THEN
1466 ALLOCATE (dispersion_env)
1468 dispersion_env%doabc = .false.
1469 dispersion_env%c9cnst = .false.
1470 dispersion_env%lrc = .false.
1471 dispersion_env%srb = .false.
1472 dispersion_env%verbose = .false.
1473 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, &
1474 dispersion_env%r0ab, dispersion_env%rcov, &
1475 dispersion_env%r2r4, dispersion_env%cn, &
1476 dispersion_env%cnkind, dispersion_env%cnlist, &
1477 dispersion_env%d3_exclude_pair)
1478 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
1479 dispersion_env%d2y_dx2, dispersion_env%dftd_section)
1480 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
1482 dispersion_env%eps_cn = xtb_control%epscn
1483 dispersion_env%s6 = xtb_control%s6
1484 dispersion_env%s8 = xtb_control%s8
1485 dispersion_env%a1 = xtb_control%a1
1486 dispersion_env%a2 = xtb_control%a2
1487 dispersion_env%domol = .false.
1488 dispersion_env%kgc8 = 0._dp
1489 dispersion_env%rc_disp = xtb_control%rcdisp
1490 dispersion_env%rc_d4 = xtb_control%rcdisp
1491 dispersion_env%exp_pre = 0._dp
1492 dispersion_env%scaling = 0._dp
1493 dispersion_env%nd3_exclude_pair = 0
1494 dispersion_env%parameter_file_name = xtb_control%dispersion_parameter_file
1496 SELECT CASE (xtb_control%vdw_type)
1503 dispersion_env%ref_functional =
"none"
1505 dispersion_env, para_env=para_env)
1506 dispersion_env%cnfun = 2
1510 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1512 ELSE IF (dft_control%qs_control%semi_empirical)
THEN
1513 ALLOCATE (dispersion_env)
1515 dispersion_env%doabc = .false.
1516 dispersion_env%c9cnst = .false.
1517 dispersion_env%lrc = .false.
1518 dispersion_env%srb = .false.
1519 dispersion_env%verbose = .false.
1520 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, dispersion_env%r0ab, dispersion_env%rcov, &
1521 dispersion_env%r2r4, dispersion_env%cn, dispersion_env%cnkind, dispersion_env%cnlist, &
1522 dispersion_env%d3_exclude_pair)
1523 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
1524 dispersion_env%d2y_dx2, dispersion_env%dftd_section)
1525 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
1526 IF (se_control%dispersion)
THEN
1529 dispersion_env%eps_cn = se_control%epscn
1530 dispersion_env%s6 = se_control%sd3(1)
1531 dispersion_env%sr6 = se_control%sd3(2)
1532 dispersion_env%s8 = se_control%sd3(3)
1533 dispersion_env%domol = .false.
1534 dispersion_env%kgc8 = 0._dp
1535 dispersion_env%rc_disp = se_control%rcdisp
1536 dispersion_env%exp_pre = 0._dp
1537 dispersion_env%scaling = 0._dp
1538 dispersion_env%nd3_exclude_pair = 0
1539 dispersion_env%parameter_file_name = se_control%dispersion_parameter_file
1544 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1548 IF (dft_control%qs_control%method_id ==
do_method_gpw .OR. &
1555 NULLIFY (xc_section)
1566 nelectron = nelectron - dft_control%charge
1568 IF (dft_control%multiplicity == 0)
THEN
1569 IF (
modulo(nelectron, 2) == 0)
THEN
1570 dft_control%multiplicity = 1
1572 dft_control%multiplicity = 2
1576 multiplicity = dft_control%multiplicity
1578 IF ((dft_control%nspins < 1) .OR. (dft_control%nspins > 2))
THEN
1579 cpabort(
"nspins should be 1 or 2 for the time being ...")
1582 IF ((
modulo(nelectron, 2) /= 0) .AND. (dft_control%nspins == 1))
THEN
1583 IF (.NOT. dft_control%qs_control%ofgpw .AND. .NOT. dft_control%smear)
THEN
1584 cpabort(
"Use the LSD option for an odd number of electrons")
1589 IF (dft_control%do_xas_calculation)
THEN
1590 IF (dft_control%nspins == 1)
THEN
1591 cpabort(
"Use the LSD option for XAS with transition potential")
1602 IF (dft_control%qs_control%ofgpw)
THEN
1604 IF (dft_control%nspins == 1)
THEN
1606 nelectron_spin(1) = nelectron
1607 nelectron_spin(2) = 0
1611 IF (
modulo(nelectron + multiplicity - 1, 2) /= 0)
THEN
1612 cpabort(
"LSD: try to use a different multiplicity")
1614 nelectron_spin(1) = (nelectron + multiplicity - 1)/2
1615 nelectron_spin(2) = (nelectron - multiplicity + 1)/2
1616 IF (nelectron_spin(1) < 0)
THEN
1617 cpabort(
"LSD: too few electrons for this multiplicity")
1619 maxocc = maxval(nelectron_spin)
1620 n_mo(1) = min(nelectron_spin(1), 1)
1621 n_mo(2) = min(nelectron_spin(2), 1)
1626 IF (dft_control%nspins == 1)
THEN
1628 nelectron_spin(1) = nelectron
1629 nelectron_spin(2) = 0
1630 IF (
modulo(nelectron, 2) == 0)
THEN
1631 n_mo(1) = nelectron/2
1633 n_mo(1) = int(nelectron/2._dp) + 1
1641 IF (
modulo(nelectron + multiplicity - 1, 2) /= 0)
THEN
1642 cpabort(
"LSD: try to use a different multiplicity")
1645 nelectron_spin(1) = (nelectron + multiplicity - 1)/2
1646 nelectron_spin(2) = (nelectron - multiplicity + 1)/2
1648 IF (nelectron_spin(2) < 0)
THEN
1649 cpabort(
"LSD: too few electrons for this multiplicity")
1652 n_mo(1) = nelectron_spin(1)
1653 n_mo(2) = nelectron_spin(2)
1662 qs_env%total_zeff_corr = total_zeff_corr
1666 nelectron_total=nelectron, &
1667 nelectron_spin=nelectron_spin)
1670 IF (dft_control%nspins == 2)
THEN
1671 IF (scf_control%added_mos(2) < 0)
THEN
1672 n_mo_add = n_ao - n_mo(2)
1673 ELSEIF (scf_control%added_mos(2) > 0)
THEN
1674 n_mo_add = scf_control%added_mos(2)
1676 n_mo_add = scf_control%added_mos(1)
1678 IF (n_mo_add > n_ao - n_mo(2))
THEN
1679 cpwarn(
"More ADDED_MOs requested for beta spin than available.")
1681 scf_control%added_mos(2) = min(n_mo_add, n_ao - n_mo(2))
1682 n_mo(2) = n_mo(2) + scf_control%added_mos(2)
1693 IF (scf_control%added_mos(1) < 0)
THEN
1694 scf_control%added_mos(1) = n_ao - n_mo(1)
1695 ELSEIF (scf_control%added_mos(1) > n_ao - n_mo(1))
THEN
1696 CALL cp_warn(__location__, &
1697 "More added MOs requested than available. "// &
1698 "The full set of unoccupied MOs will be used. "// &
1699 "Use 'ADDED_MOS -1' to always use all available MOs "// &
1700 "and to get rid of this warning.")
1702 scf_control%added_mos(1) = min(scf_control%added_mos(1), n_ao - n_mo(1))
1703 n_mo(1) = n_mo(1) + scf_control%added_mos(1)
1705 IF (dft_control%nspins == 2)
THEN
1706 IF (n_mo(2) > n_mo(1)) &
1707 CALL cp_warn(__location__, &
1708 "More beta than alpha MOs requested. "// &
1709 "The number of beta MOs will be reduced to the number alpha MOs.")
1710 n_mo(2) = min(n_mo(1), n_mo(2))
1711 cpassert(n_mo(1) >= nelectron_spin(1))
1712 cpassert(n_mo(2) >= nelectron_spin(2))
1716 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
1717 IF (do_kpoints .AND. dft_control%nspins == 2)
THEN
1719 IF (n_mo(2) /= n_mo(1)) &
1720 CALL cp_warn(__location__, &
1721 "Kpoints: Different number of MOs requested. "// &
1722 "The number of beta MOs will be set to the number alpha MOs.")
1724 cpassert(n_mo(1) >= nelectron_spin(1))
1725 cpassert(n_mo(2) >= nelectron_spin(2))
1729 IF (scf_control%smear%do_smear)
THEN
1730 IF (scf_control%added_mos(1) == 0)
THEN
1731 cpabort(
"Extra MOs (ADDED_MOS) are required for smearing")
1737 "PRINT%MO/CARTESIAN"), &
1739 (scf_control%level_shift /= 0.0_dp) .OR. &
1740 (scf_control%diagonalization%eps_jacobi /= 0.0_dp) .OR. &
1741 (dft_control%roks .AND. (.NOT. scf_control%use_ot)))
THEN
1746 IF (dft_control%roks .AND. (.NOT. scf_control%use_ot))
THEN
1748 cpwarn(
"General ROKS scheme is not yet tested!")
1750 IF (scf_control%smear%do_smear)
THEN
1751 CALL cp_abort(__location__, &
1752 "The options ROKS and SMEAR are not compatible. "// &
1753 "Try UKS instead of ROKS")
1756 IF (dft_control%low_spin_roks)
THEN
1757 SELECT CASE (dft_control%qs_control%method_id)
1760 CALL cp_abort(__location__, &
1761 "xTB/DFTB methods are not compatible with low spin ROKS.")
1764 CALL cp_abort(__location__, &
1765 "SE methods are not compatible with low spin ROKS.")
1773 IF (dft_control%restricted .AND. (output_unit > 0))
THEN
1775 WRITE (output_unit, *)
""
1776 WRITE (output_unit, *)
" **************************************"
1777 WRITE (output_unit, *)
" restricted calculation cutting corners"
1778 WRITE (output_unit, *)
" experimental feature, check code "
1779 WRITE (output_unit, *)
" **************************************"
1783 IF (dft_control%qs_control%do_ls_scf)
THEN
1786 ALLOCATE (mos(dft_control%nspins))
1787 DO ispin = 1, dft_control%nspins
1791 nelectron=nelectron_spin(ispin), &
1792 n_el_f=real(nelectron_spin(ispin),
dp), &
1794 flexible_electron_count=dft_control%relax_multiplicity)
1801 IF (dft_control%switch_surf_dip)
THEN
1802 ALLOCATE (mos_last_converged(dft_control%nspins))
1803 DO ispin = 1, dft_control%nspins
1807 nelectron=nelectron_spin(ispin), &
1808 n_el_f=real(nelectron_spin(ispin),
dp), &
1810 flexible_electron_count=dft_control%relax_multiplicity)
1812 CALL set_qs_env(qs_env, mos_last_converged=mos_last_converged)
1815 IF (.NOT. be_silent)
THEN
1820 IF (dft_control%qs_control%method_id ==
do_method_gpw .OR. &
1827 (.NOT. dft_control%qs_control%xtb_control%do_tblite)) .OR. &
1829 CALL get_qs_env(qs_env, dispersion_env=dispersion_env)
1837 IF (dft_control%do_admm)
THEN
1842 IF (dft_control%do_xas_calculation)
THEN
1857 CALL write_total_numbers(qs_kind_set, particle_set, qs_env%input)
1872 IF ((.NOT. dft_control%qs_control%do_ls_scf) .AND. &
1873 (.NOT. dft_control%qs_control%do_almo_scf))
THEN
1883 CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, rho0_mpole=rho0_mpole)
1887 IF (output_unit > 0)
CALL m_flush(output_unit)
1888 CALL timestop(handle)
1890 END SUBROUTINE qs_init_subsys
1900 SUBROUTINE write_total_numbers(qs_kind_set, particle_set, force_env_section)
1902 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
1903 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
1904 TYPE(section_vals_type),
POINTER :: force_env_section
1906 INTEGER :: maxlgto, maxlppl, maxlppnl, natom, &
1907 natom_q, ncgf, nkind, nkind_q, npgf, &
1908 nset, nsgf, nshell, output_unit
1909 TYPE(cp_logger_type),
POINTER :: logger
1912 logger => cp_get_default_logger()
1913 output_unit = cp_print_key_unit_nr(logger, force_env_section,
"PRINT%TOTAL_NUMBERS", &
1916 IF (output_unit > 0)
THEN
1917 natom =
SIZE(particle_set)
1918 nkind =
SIZE(qs_kind_set)
1920 CALL get_qs_kind_set(qs_kind_set, &
1930 WRITE (unit=output_unit, fmt=
"(/,/,T2,A)") &
1931 "TOTAL NUMBERS AND MAXIMUM NUMBERS"
1933 IF (nset + npgf + ncgf > 0)
THEN
1934 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T71,I10))") &
1935 "Total number of", &
1936 "- Atomic kinds: ", nkind, &
1937 "- Atoms: ", natom, &
1938 "- Shell sets: ", nset, &
1939 "- Shells: ", nshell, &
1940 "- Primitive Cartesian functions: ", npgf, &
1941 "- Cartesian basis functions: ", ncgf, &
1942 "- Spherical basis functions: ", nsgf
1943 ELSE IF (nshell + nsgf > 0)
THEN
1944 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T71,I10))") &
1945 "Total number of", &
1946 "- Atomic kinds: ", nkind, &
1947 "- Atoms: ", natom, &
1948 "- Shells: ", nshell, &
1949 "- Spherical basis functions: ", nsgf
1951 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T71,I10))") &
1952 "Total number of", &
1953 "- Atomic kinds: ", nkind, &
1957 IF ((maxlppl > -1) .AND. (maxlppnl > -1))
THEN
1958 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T75,I6))") &
1959 "Maximum angular momentum of the", &
1960 "- Orbital basis functions: ", maxlgto, &
1961 "- Local part of the GTH pseudopotential: ", maxlppl, &
1962 "- Non-local part of the GTH pseudopotential: ", maxlppnl
1963 ELSEIF (maxlppl > -1)
THEN
1964 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T75,I6))") &
1965 "Maximum angular momentum of the", &
1966 "- Orbital basis functions: ", maxlgto, &
1967 "- Local part of the GTH pseudopotential: ", maxlppl
1969 WRITE (unit=output_unit, fmt=
"(/,T3,A,T75,I6)") &
1970 "Maximum angular momentum of the orbital basis functions: ", maxlgto
1974 CALL get_qs_kind_set(qs_kind_set, &
1981 basis_type=
"LRI_AUX")
1982 IF (nset + npgf + ncgf > 0)
THEN
1983 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
1984 "LRI_AUX Basis: ", &
1985 "Total number of", &
1986 "- Shell sets: ", nset, &
1987 "- Shells: ", nshell, &
1988 "- Primitive Cartesian functions: ", npgf, &
1989 "- Cartesian basis functions: ", ncgf, &
1990 "- Spherical basis functions: ", nsgf
1991 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
1992 " Maximum angular momentum ", maxlgto
1996 CALL get_qs_kind_set(qs_kind_set, &
2003 basis_type=
"RI_HXC")
2004 IF (nset + npgf + ncgf > 0)
THEN
2005 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
2007 "Total number of", &
2008 "- Shell sets: ", nset, &
2009 "- Shells: ", nshell, &
2010 "- Primitive Cartesian functions: ", npgf, &
2011 "- Cartesian basis functions: ", ncgf, &
2012 "- Spherical basis functions: ", nsgf
2013 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
2014 " Maximum angular momentum ", maxlgto
2018 CALL get_qs_kind_set(qs_kind_set, &
2025 basis_type=
"AUX_FIT")
2026 IF (nset + npgf + ncgf > 0)
THEN
2027 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
2028 "AUX_FIT ADMM-Basis: ", &
2029 "Total number of", &
2030 "- Shell sets: ", nset, &
2031 "- Shells: ", nshell, &
2032 "- Primitive Cartesian functions: ", npgf, &
2033 "- Cartesian basis functions: ", ncgf, &
2034 "- Spherical basis functions: ", nsgf
2035 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
2036 " Maximum angular momentum ", maxlgto
2040 CALL get_qs_kind_set(qs_kind_set, &
2050 IF (nset + npgf + ncgf > 0)
THEN
2051 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
2052 "Nuclear Basis: ", &
2053 "Total number of", &
2054 "- Quantum atomic kinds: ", nkind_q, &
2055 "- Quantum atoms: ", natom_q, &
2056 "- Shell sets: ", nset, &
2057 "- Shells: ", nshell, &
2058 "- Primitive Cartesian functions: ", npgf, &
2059 "- Cartesian basis functions: ", ncgf, &
2060 "- Spherical basis functions: ", nsgf
2061 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
2062 " Maximum angular momentum ", maxlgto
2066 CALL cp_print_key_finished_output(output_unit, logger, force_env_section, &
2067 "PRINT%TOTAL_NUMBERS")
2069 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, 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.
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)
...
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.