220#include "./base/base_uses.f90"
227 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_environment'
253 SUBROUTINE qs_init(qs_env, para_env, root_section, globenv, cp_subsys, kpoint_env, cell, cell_ref, &
254 qmmm, qmmm_env_qm, force_env_section, subsys_section, &
255 use_motion_section, silent)
263 TYPE(
cell_type),
OPTIONAL,
POINTER :: cell, cell_ref
264 LOGICAL,
INTENT(IN),
OPTIONAL :: qmmm
267 LOGICAL,
INTENT(IN) :: use_motion_section
268 LOGICAL,
INTENT(IN),
OPTIONAL :: silent
270 CHARACTER(LEN=default_string_length) :: basis_type
271 INTEGER :: ikind, method_id, nelectron_total, &
273 LOGICAL :: do_admm_rpa, do_ec_hfx, do_et, do_exx, do_hfx, do_kpoints, is_identical, is_semi, &
274 mp2_present, my_qmmm, qmmm_decoupl, same_except_frac, use_ref_cell
275 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: rtmat
277 TYPE(
cell_type),
POINTER :: my_cell, my_cell_ref
287 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
294 et_coupling_section, hfx_section, kpoint_section, mp2_section, rpa_hfx_section, &
297 NULLIFY (my_cell, my_cell_ref, atomic_kind_set, particle_set, &
298 qs_kind_set, kpoint_section, dft_section, ec_section, &
299 subsys, ks_env, dft_control, blacs_env)
301 CALL set_qs_env(qs_env, input=force_env_section)
302 IF (.NOT.
ASSOCIATED(subsys_section))
THEN
308 IF (
PRESENT(qmmm)) my_qmmm = qmmm
309 qmmm_decoupl = .false.
310 IF (
PRESENT(qmmm_env_qm))
THEN
314 qmmm_decoupl = my_qmmm .AND. qmmm_env_qm%periodic .AND. qmmm_env_qm%multipole
316 qs_env%qmmm_env_qm => qmmm_env_qm
322 SELECT CASE (method_id)
335 force_env_section=force_env_section, &
336 subsys_section=subsys_section, &
337 use_motion_section=use_motion_section, &
338 root_section=root_section, &
339 cp_subsys=cp_subsys, cell=cell, cell_ref=cell_ref, &
340 elkind=is_semi, silent=silent)
349 cell_ref=my_cell_ref, &
350 use_ref_cell=use_ref_cell, &
351 atomic_kind_set=atomic_kind_set, &
352 qs_kind_set=qs_kind_set, &
353 particle_set=particle_set)
356 IF (
PRESENT(globenv))
THEN
358 globenv%blacs_repeatable)
367 force_env_section, subsys_section, para_env)
370 IF (
PRESENT(kpoint_env))
THEN
371 kpoints => kpoint_env
372 CALL set_qs_env(qs_env=qs_env, kpoints=kpoints)
377 CALL set_qs_env(qs_env=qs_env, kpoints=kpoints)
385 CALL qs_init_subsys(qs_env, para_env, subsys, my_cell, my_cell_ref, use_ref_cell, &
386 subsys_section, silent=silent)
388 CALL get_qs_env(qs_env, dft_control=dft_control)
389 IF (method_id ==
do_method_lrigpw .OR. dft_control%qs_control%lri_optbas)
THEN
390 CALL get_qs_env(qs_env=qs_env, lri_env=lri_env)
393 CALL cp_warn(__location__,
"Experimental code: "// &
394 "RIGPW should only be used for testing.")
395 CALL get_qs_env(qs_env=qs_env, lri_env=lri_env)
399 IF (my_qmmm .AND.
PRESENT(qmmm_env_qm) .AND. .NOT. dft_control%qs_control%commensurate_mgrids)
THEN
401 CALL cp_abort(__location__,
"QM/MM with coupling GAUSS or S-WAVE requires "// &
402 "keyword FORCE_EVAL/DFT/MGRID/COMMENSURATE to be enabled.")
407 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints, blacs_env=blacs_env)
411 CALL get_qs_env(qs_env=qs_env, wf_history=wf_history)
422 CALL get_qs_env(qs_env, dft_control=dft_control, scf_control=scf_control, nelectron_total=nelectron_total)
427 IF (dft_control%do_admm)
THEN
428 basis_type =
'AUX_FIT'
432 CALL hfx_create(qs_env%x_data, para_env, hfx_section, atomic_kind_set, &
433 qs_kind_set, particle_set, dft_control, my_cell, orb_basis=basis_type, &
434 nelectron_total=nelectron_total, nkp_grid=nkp_grid)
439 IF (mp2_present)
THEN
440 cpassert(
ASSOCIATED(qs_env%mp2_env))
453 qs_env%mp2_env%ri_rpa%reuse_hfx = .true.
454 IF (.NOT. do_hfx) qs_env%mp2_env%ri_rpa%reuse_hfx = .false.
456 IF (.NOT. (is_identical .OR. same_except_frac)) qs_env%mp2_env%ri_rpa%reuse_hfx = .false.
457 IF (dft_control%do_admm .AND. .NOT. do_admm_rpa) qs_env%mp2_env%ri_rpa%reuse_hfx = .false.
459 IF (.NOT. qs_env%mp2_env%ri_rpa%reuse_hfx)
THEN
460 IF (do_admm_rpa)
THEN
461 basis_type =
'AUX_FIT'
465 CALL hfx_create(qs_env%mp2_env%ri_rpa%x_data, para_env, rpa_hfx_section, atomic_kind_set, &
466 qs_kind_set, particle_set, dft_control, my_cell, orb_basis=basis_type, &
467 nelectron_total=nelectron_total)
469 qs_env%mp2_env%ri_rpa%x_data => qs_env%x_data
474 IF (dft_control%qs_control%do_kg)
THEN
476 CALL kg_env_create(qs_env, qs_env%kg_env, qs_kind_set, qs_env%input)
481 l_val=qs_env%excited_state)
482 NULLIFY (exstate_env)
483 CALL exstate_create(exstate_env, qs_env%excited_state, dft_section)
484 CALL set_qs_env(qs_env, exstate_env=exstate_env)
487 "PROPERTIES%ET_COUPLING")
493 IF (qs_env%do_transport)
THEN
497 CALL get_qs_env(qs_env, harris_env=harris_env)
498 IF (qs_env%harris_method)
THEN
500 CALL get_qs_env(qs_env, local_particles=local_particles)
501 CALL harris_rhoin_init(harris_env%rhoin,
"RHOIN", qs_kind_set, atomic_kind_set, &
502 local_particles, dft_control%nspins)
510 l_val=qs_env%energy_correction)
515 IF (qs_env%energy_correction)
THEN
520 IF (ec_env%do_ec_hfx)
THEN
523 IF (ec_env%basis_inconsistent)
THEN
524 CALL cp_abort(__location__, &
525 "Energy correction methods with hybrid functionals: "// &
526 "correction and ground state need to use the same basis. "// &
527 "Checked by comparing basis set names only.")
531 IF (ec_env%do_ec_admm .AND. .NOT. dft_control%do_admm)
THEN
532 CALL cp_abort(__location__,
"Need an ADMM input section for ADMM EC to work")
535 ec_env%reuse_hfx = .true.
536 IF (.NOT. do_hfx) ec_env%reuse_hfx = .false.
538 IF (.NOT. (is_identical .OR. same_except_frac)) ec_env%reuse_hfx = .false.
539 IF (dft_control%do_admm .AND. .NOT. ec_env%do_ec_admm) ec_env%reuse_hfx = .false.
541 IF (.NOT. ec_env%reuse_hfx)
THEN
542 IF (ec_env%do_ec_admm)
THEN
543 basis_type =
'AUX_FIT'
547 CALL hfx_create(ec_env%x_data, para_env, ec_hfx_section, atomic_kind_set, &
548 qs_kind_set, particle_set, dft_control, my_cell, orb_basis=basis_type, &
549 nelectron_total=nelectron_total)
551 ec_env%x_data => qs_env%x_data
560 IF (dft_control%qs_control%do_almo_scf)
THEN
565 CALL get_qs_env(qs_env, rel_control=rel_control)
566 IF (rel_control%rel_method /=
rel_none)
THEN
568 nkind =
SIZE(atomic_kind_set)
572 IF (
ASSOCIATED(rtmat))
CALL set_qs_kind(qs_kind_set(ikind), reltmat=rtmat)
591 SUBROUTINE qs_init_subsys(qs_env, para_env, subsys, cell, cell_ref, use_ref_cell, subsys_section, &
597 TYPE(
cell_type),
POINTER :: cell, cell_ref
598 LOGICAL,
INTENT(in) :: use_ref_cell
600 LOGICAL,
INTENT(in),
OPTIONAL :: silent
602 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_init_subsys'
604 CHARACTER(len=2) :: element_symbol
605 INTEGER :: gfn_type, handle, ikind, ispin, iw, lmax_sphere, maxl, maxlgto, maxlgto_lri, &
606 maxlppl, maxlppnl, method_id, multiplicity, my_ival, n_ao, n_mo_add, natom, nelectron, &
607 ngauss, nkind, output_unit, sort_basis, tnadd_method
608 INTEGER,
DIMENSION(2) :: n_mo, nelectron_spin
609 INTEGER,
DIMENSION(5) :: occ
610 LOGICAL :: all_potential_present, be_silent, do_kpoints, do_ri_hfx, do_ri_mp2, do_ri_rpa, &
611 do_ri_sos_mp2, do_rpa_ri_exx, do_wfc_im_time, e1terms, has_unit_metric, lribas, &
612 mp2_present, orb_gradient
613 REAL(kind=
dp) :: alpha, ccore, ewald_rcut, fxx, maxocc, &
614 rcut, total_zeff_corr, verlet_skin, &
626 rhoin_basis, ri_aux_basis_set, &
627 ri_hfx_basis, ri_xas_basis, &
632 TYPE(
mo_set_type),
DIMENSION(:),
POINTER :: mos, mos_last_converged
641 POINTER :: dftb_potential
646 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
654 TYPE(
section_vals_type),
POINTER :: dft_section, et_coupling_section, et_ddapc_section, &
655 ewald_section, harris_section, lri_section, mp2_section, nl_section, poisson_section, &
656 pp_section, print_section, qs_section, se_section, tddfpt_section, xc_section
661 CALL timeset(routinen, handle)
667 IF (
PRESENT(silent)) be_silent = silent
672 NULLIFY (mos, se_taper)
673 NULLIFY (dft_control)
676 NULLIFY (local_molecules)
677 NULLIFY (local_particles)
678 NULLIFY (scf_control)
679 NULLIFY (dft_section)
680 NULLIFY (et_coupling_section)
682 NULLIFY (mos_last_converged)
690 qs_kind_set=qs_kind_set, &
691 atomic_kind_set=atomic_kind_set, &
692 molecule_set=molecule_set, &
693 molecule_kind_set=molecule_kind_set)
699 dft_control%qs_control%periodicity = sum(cell%perd)
705 IF (.NOT. be_silent)
THEN
708 SELECT CASE (method_id)
717 IF (dft_control%qs_control%xtb_control%do_tblite)
THEN
718 CALL tblite_header(iw, dft_control%qs_control%xtb_control%tblite_method)
720 gfn_type = dft_control%qs_control%xtb_control%gfn_type
725 "PRINT%PROGRAM_BANNER")
728 IF (dft_control%do_sccs .AND. dft_control%qs_control%gapw)
THEN
729 cpabort(
"SCCS is not yet implemented with GAPW")
731 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
734 SELECT CASE (dft_control%qs_control%wf_interpolation_method_nr)
742 dft_control%qs_control%et_coupling_calc = .false.
745 dft_control%qs_control%et_coupling_calc = .true.
746 dft_control%qs_control%ddapc_restraint = .true.
747 CALL read_ddapc_section(dft_control%qs_control, ddapc_restraint_section=et_ddapc_section)
758 ALLOCATE (rel_control)
761 CALL set_qs_env(qs_env, rel_control=rel_control)
766 NULLIFY (ewald_env, ewald_pw, dftb_potential)
767 dftb_control => dft_control%qs_control%dftb_control
769 subsys_section=subsys_section, para_env=para_env)
770 CALL set_qs_env(qs_env, dftb_potential=dftb_potential)
772 IF (dftb_control%do_ewald)
THEN
776 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
782 CALL ewald_pw_create(ewald_pw, ewald_env, cell, cell_ref, print_section=print_section)
783 CALL set_qs_env(qs_env, ewald_env=ewald_env, ewald_pw=ewald_pw)
785 ELSEIF (dft_control%qs_control%method_id ==
do_method_xtb)
THEN
787 xtb_control => dft_control%qs_control%xtb_control
789 IF (xtb_control%do_tblite)
THEN
800 qs_kind => qs_kind_set(ikind)
802 cpassert(.NOT.
ASSOCIATED(qs_kind%xtb_parameter))
805 CALL get_qs_kind(qs_kind, element_symbol=element_symbol)
807 NULLIFY (tmp_basis_set)
808 CALL tb_get_basis(qs_env%tb_tblite, tmp_basis_set, element_symbol, qs_kind%xtb_parameter, occ)
813 zeff_correction = 0.0_dp
815 zeff=real(sum(occ),
dp), zeff_correction=zeff_correction)
818 NULLIFY (ewald_env, ewald_pw)
820 qs_kind => qs_kind_set(ikind)
822 cpassert(.NOT.
ASSOCIATED(qs_kind%xtb_parameter))
825 gfn_type = dft_control%qs_control%xtb_control%gfn_type
826 CALL get_qs_kind(qs_kind, element_symbol=element_symbol)
828 xtb_control%parameter_file_path, xtb_control%parameter_file_name, &
833 NULLIFY (tmp_basis_set)
834 IF (qs_kind%xtb_parameter%z == 1)
THEN
836 ngauss = xtb_control%h_sto_ng
838 ngauss = xtb_control%sto_ng
840 IF (qs_kind%xtb_parameter%defined)
THEN
845 IF (
ASSOCIATED(qs_kind%all_potential))
THEN
846 DEALLOCATE (qs_kind%all_potential%elec_conf)
847 DEALLOCATE (qs_kind%all_potential)
851 IF (qs_kind%xtb_parameter%defined)
THEN
852 zeff_correction = 0.0_dp
854 zeff=qs_kind%xtb_parameter%zeff, zeff_correction=zeff_correction)
855 CALL get_potential(qs_kind%all_potential, alpha_core_charge=alpha)
856 ccore = qs_kind%xtb_parameter%zeff*sqrt((alpha/
pi)**3)
857 CALL set_potential(qs_kind%all_potential, ccore_charge=ccore)
858 qs_kind%xtb_parameter%zeff = qs_kind%xtb_parameter%zeff - zeff_correction
864 ALLOCATE (xtb_control%rcpair(nkind, nkind))
865 CALL xtb_pp_radius(qs_kind_set, xtb_control%rcpair, xtb_control%eps_pair, xtb_control%kf)
867 IF (xtb_control%do_ewald)
THEN
871 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
874 IF (gfn_type == 0)
THEN
876 silent=silent, pset=
"EEQ")
882 CALL ewald_pw_create(ewald_pw, ewald_env, cell, cell_ref, print_section=print_section)
883 CALL set_qs_env(qs_env, ewald_env=ewald_env, ewald_pw=ewald_pw)
890 dft_control%qs_control%lri_optbas .OR. &
900 CALL get_qs_kind_set(qs_kind_set, all_potential_present=all_potential_present)
901 IF ((dft_control%qs_control%method_id ==
do_method_gpw) .OR. &
904 IF (all_potential_present)
THEN
905 cpabort(
"All-electron calculations with GPW, GAPW_XC, and OFGPW are not implemented")
910 CALL get_qs_kind_set(qs_kind_set, dft_plus_u_atom_present=dft_control%dft_plus_u)
912 IF (dft_control%do_admm)
THEN
916 NULLIFY (aux_fit_basis)
917 qs_kind => qs_kind_set(ikind)
918 CALL get_qs_kind(qs_kind, basis_set=aux_fit_basis, basis_type=
"AUX_FIT")
919 IF (.NOT. (
ASSOCIATED(aux_fit_basis)))
THEN
921 cpabort(
"AUX_FIT basis set is not defined. ")
931 e1terms = lri_env%exact_1c_terms
933 IF (dft_control%qs_control%do_kg)
THEN
941 NULLIFY (lri_aux_basis)
942 qs_kind => qs_kind_set(ikind)
943 CALL get_qs_kind(qs_kind, basis_set=lri_aux_basis, basis_type=
"LRI_AUX")
944 IF (.NOT. (
ASSOCIATED(lri_aux_basis)))
THEN
946 CALL cp_warn(__location__,
"Automatic Generation of LRI_AUX basis. "// &
947 "This is experimental code.")
956 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_RPA%HF%RI%_SECTION_PARAMETERS_", &
958 IF (do_ri_hfx .OR. do_rpa_ri_exx)
THEN
962 NULLIFY (ri_hfx_basis)
963 qs_kind => qs_kind_set(ikind)
964 CALL get_qs_kind(qs_kind=qs_kind, basis_set=ri_hfx_basis, &
966 IF (.NOT. (
ASSOCIATED(ri_hfx_basis)))
THEN
968 IF (dft_control%do_admm)
THEN
970 basis_type=
"AUX_FIT", basis_sort=sort_basis)
973 basis_sort=sort_basis)
984 NULLIFY (ri_hfx_basis)
985 qs_kind => qs_kind_set(ikind)
986 CALL get_qs_kind(qs_kind, basis_set=ri_hfx_basis, basis_type=
"RI_HXC")
987 IF (.NOT. (
ASSOCIATED(ri_hfx_basis)))
THEN
998 l_val=qs_env%harris_method)
1001 CALL set_qs_env(qs_env, harris_env=harris_env)
1003 IF (qs_env%harris_method)
THEN
1007 NULLIFY (tmp_basis_set)
1008 qs_kind => qs_kind_set(ikind)
1009 CALL get_qs_kind(qs_kind, basis_set=rhoin_basis, basis_type=
"RHOIN")
1010 IF (.NOT. (
ASSOCIATED(rhoin_basis)))
THEN
1013 IF (qs_env%harris_env%density_source ==
hden_atomic)
THEN
1017 rhoin_basis => tmp_basis_set
1026 IF (mp2_present)
THEN
1030 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%LOW_SCALING%_SECTION_PARAMETERS_", &
1031 l_val=do_wfc_im_time)
1034 CALL cp_warn(__location__, &
1035 "Low-scaling RPA requires SORT_BASIS EXP keyword (in DFT input section) for good performance")
1040 CALL get_qs_env(qs_env, mp2_env=mp2_env, nkind=nkind)
1041 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_MP2%_SECTION_PARAMETERS_", l_val=do_ri_mp2)
1042 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_SOS_MP2%_SECTION_PARAMETERS_", l_val=do_ri_sos_mp2)
1043 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_RPA%_SECTION_PARAMETERS_", l_val=do_ri_rpa)
1044 IF (do_ri_mp2 .OR. do_ri_sos_mp2 .OR. do_ri_rpa)
THEN
1046 NULLIFY (ri_aux_basis_set)
1047 qs_kind => qs_kind_set(ikind)
1048 CALL get_qs_kind(qs_kind=qs_kind, basis_set=ri_aux_basis_set, &
1049 basis_type=
"RI_AUX")
1050 IF (.NOT. (
ASSOCIATED(ri_aux_basis_set)))
THEN
1057 qs_env%mp2_env%ri_aux_auto_generated = .true.
1064 IF (dft_control%do_xas_tdp_calculation)
THEN
1068 NULLIFY (ri_xas_basis)
1069 qs_kind => qs_kind_set(ikind)
1070 CALL get_qs_kind(qs_kind, basis_set=ri_xas_basis, basis_type=
"RI_XAS")
1071 IF (.NOT.
ASSOCIATED(ri_xas_basis))
THEN
1081 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto, maxlppl=maxlppl, maxlppnl=maxlppnl)
1083 lmax_sphere = dft_control%qs_control%gapw_control%lmax_sphere
1084 IF (lmax_sphere .LT. 0)
THEN
1085 lmax_sphere = 2*maxlgto
1086 dft_control%qs_control%gapw_control%lmax_sphere = lmax_sphere
1088 IF (dft_control%qs_control%method_id ==
do_method_lrigpw .OR. dft_control%qs_control%lri_optbas)
THEN
1089 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_lri, basis_type=
"LRI_AUX")
1091 maxlgto = max(maxlgto, maxlgto_lri)
1093 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_lri, basis_type=
"RI_HXC")
1094 maxlgto = max(maxlgto, maxlgto_lri)
1096 IF (dft_control%do_xas_tdp_calculation)
THEN
1098 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_lri, basis_type=
"RI_XAS")
1099 maxlgto = max(maxlgto, maxlgto_lri)
1101 maxl = max(2*maxlgto, maxlppl, maxlppnl, lmax_sphere) + 1
1113 qs_control => dft_control%qs_control
1120 maxl = max(3*maxlgto + 1, 0)
1127 IF (.NOT. dft_control%qs_control%xtb_control%do_tblite)
THEN
1130 qs_kind => qs_kind_set(ikind)
1131 IF (qs_kind%xtb_parameter%defined)
THEN
1132 CALL get_qs_kind(qs_kind, basis_set=tmp_basis_set)
1133 rcut = xtb_control%coulomb_sr_cut
1134 fxx = 2.0_dp*xtb_control%coulomb_sr_eps*qs_kind%xtb_parameter%eta**2
1135 fxx = 0.80_dp*(1.0_dp/fxx)**0.3333_dp
1136 rcut = min(rcut, xtb_control%coulomb_sr_cut)
1137 qs_kind%xtb_parameter%rcut = min(rcut, fxx)
1139 qs_kind%xtb_parameter%rcut = 0.0_dp
1145 IF (.NOT. be_silent)
THEN
1157 particle_set=particle_set, &
1158 local_particles=local_particles, &
1159 molecule_kind_set=molecule_kind_set, &
1160 molecule_set=molecule_set, &
1161 local_molecules=local_molecules, &
1162 force_env_section=qs_env%input)
1165 ALLOCATE (scf_control)
1167 IF (dft_control%qs_control%dftb)
THEN
1168 scf_control%non_selfconsistent = .NOT. dft_control%qs_control%dftb_control%self_consistent
1170 IF (dft_control%qs_control%xtb)
THEN
1171 IF (dft_control%qs_control%xtb_control%do_tblite)
THEN
1172 scf_control%non_selfconsistent = .false.
1174 scf_control%non_selfconsistent = (dft_control%qs_control%xtb_control%gfn_type == 0)
1177 IF (qs_env%harris_method)
THEN
1178 scf_control%non_selfconsistent = .true.
1186 has_unit_metric = .false.
1187 IF (dft_control%qs_control%semi_empirical)
THEN
1188 IF (dft_control%qs_control%se_control%orthogonal_basis) has_unit_metric = .true.
1190 IF (dft_control%qs_control%dftb)
THEN
1191 IF (dft_control%qs_control%dftb_control%orthogonal_basis) has_unit_metric = .true.
1193 CALL set_qs_env(qs_env, has_unit_metric=has_unit_metric)
1197 interpolation_method_nr= &
1198 dft_control%qs_control%wf_interpolation_method_nr, &
1199 extrapolation_order=dft_control%qs_control%wf_extrapolation_order, &
1200 has_unit_metric=has_unit_metric)
1204 scf_control=scf_control, &
1205 wf_history=wf_history)
1208 cell_ref=cell_ref, &
1209 use_ref_cell=use_ref_cell, &
1214 CALL set_ks_env(ks_env, dft_control=dft_control)
1216 CALL qs_subsys_set(subsys, local_molecules=local_molecules, &
1217 local_particles=local_particles, cell=cell)
1224 atomic_kind_set=atomic_kind_set, &
1225 dft_control=dft_control, &
1226 scf_control=scf_control)
1230 IF (dft_control%qs_control%do_ls_scf .OR. &
1231 dft_control%qs_control%do_almo_scf)
THEN
1232 CALL set_qs_env(qs_env=qs_env, requires_mo_derivs=.false.)
1234 IF (scf_control%use_ot)
THEN
1235 CALL set_qs_env(qs_env=qs_env, requires_mo_derivs=.true.)
1237 CALL set_qs_env(qs_env=qs_env, requires_mo_derivs=.false.)
1242 dft_control%smear = scf_control%smear%do_smear
1245 IF (.NOT. (dft_control%qs_control%dftb .OR. dft_control%qs_control%xtb))
THEN
1246 IF (dft_control%apply_period_efield)
THEN
1247 CALL get_qs_env(qs_env=qs_env, requires_mo_derivs=orb_gradient)
1248 IF (.NOT. orb_gradient)
THEN
1249 CALL cp_abort(__location__,
"Periodic Efield needs orbital gradient and direct optimization."// &
1250 " Use the OT optimization method.")
1252 IF (dft_control%smear)
THEN
1253 CALL cp_abort(__location__,
"Periodic Efield needs equal occupation numbers."// &
1254 " Smearing option is not possible.")
1263 NULLIFY (rho_atom_set)
1264 gapw_control => dft_control%qs_control%gapw_control
1265 CALL init_rho_atom(rho_atom_set, atomic_kind_set, qs_kind_set, dft_control, para_env)
1266 CALL set_qs_env(qs_env=qs_env, rho_atom_set=rho_atom_set)
1268 CALL get_qs_env(qs_env=qs_env, local_rho_set=local_rho_set, natom=natom)
1270 CALL init_rho0(local_rho_set, qs_env, gapw_control)
1282 ELSE IF (dft_control%qs_control%semi_empirical)
THEN
1283 NULLIFY (se_store_int_env, se_nddo_mpole, se_nonbond_env)
1284 natom =
SIZE(particle_set)
1286 se_control => dft_control%qs_control%se_control
1291 SELECT CASE (dft_control%qs_control%method_id)
1297 CALL init_se_nlradius(se_control, atomic_kind_set, qs_kind_set, subsys_section)
1302 IF (se_control%do_ewald .OR. se_control%do_ewald_gks)
THEN
1303 ALLOCATE (ewald_env)
1306 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
1309 "PRINT%GRID_INFORMATION")
1314 print_section=print_section)
1320 IF (se_control%do_ewald)
THEN
1321 CALL ewald_env_get(ewald_env, max_multipole=se_control%max_multipole)
1325 ALLOCATE (se_nonbond_env)
1327 do_electrostatics=.true., verlet_skin=verlet_skin, ewald_rcut=ewald_rcut, &
1328 ei_scale14=0.0_dp, vdw_scale14=0.0_dp, shift_cutoff=.false.)
1331 CALL set_qs_env(qs_env, ewald_env=ewald_env, ewald_pw=ewald_pw, &
1332 se_nonbond_env=se_nonbond_env, se_nddo_mpole=se_nddo_mpole)
1335 dft_control%qs_control%method_id)
1338 CALL se_taper_create(se_taper, se_control%integral_screening, se_control%do_ewald, &
1339 se_control%taper_cou, se_control%range_cou, &
1340 se_control%taper_exc, se_control%range_exc, &
1341 se_control%taper_scr, se_control%range_scr, &
1342 se_control%taper_lrc, se_control%range_lrc)
1346 CALL set_qs_env(qs_env, se_store_int_env=se_store_int_env)
1350 IF (dft_control%qs_control%method_id ==
do_method_gpw .OR. &
1356 ALLOCATE (dispersion_env)
1357 NULLIFY (xc_section)
1361 NULLIFY (pp_section)
1365 NULLIFY (nl_section)
1369 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1370 ELSE IF (dft_control%qs_control%method_id ==
do_method_dftb)
THEN
1371 ALLOCATE (dispersion_env)
1373 dispersion_env%doabc = .false.
1374 dispersion_env%c9cnst = .false.
1375 dispersion_env%lrc = .false.
1376 dispersion_env%srb = .false.
1377 dispersion_env%verbose = .false.
1378 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, dispersion_env%r0ab, dispersion_env%rcov, &
1379 dispersion_env%r2r4, dispersion_env%cn, dispersion_env%cnkind, dispersion_env%cnlist, &
1380 dispersion_env%d3_exclude_pair)
1381 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
1382 dispersion_env%d2y_dx2, dispersion_env%dftd_section)
1383 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
1384 IF (dftb_control%dispersion .AND. dftb_control%dispersion_type ==
dispersion_d3)
THEN
1387 dispersion_env%eps_cn = dftb_control%epscn
1388 dispersion_env%s6 = dftb_control%sd3(1)
1389 dispersion_env%sr6 = dftb_control%sd3(2)
1390 dispersion_env%s8 = dftb_control%sd3(3)
1391 dispersion_env%domol = .false.
1392 dispersion_env%kgc8 = 0._dp
1393 dispersion_env%rc_disp = dftb_control%rcdisp
1394 dispersion_env%exp_pre = 0._dp
1395 dispersion_env%scaling = 0._dp
1396 dispersion_env%nd3_exclude_pair = 0
1397 dispersion_env%parameter_file_name = dftb_control%dispersion_parameter_file
1399 ELSEIF (dftb_control%dispersion .AND. dftb_control%dispersion_type ==
dispersion_d3bj)
THEN
1402 dispersion_env%eps_cn = dftb_control%epscn
1403 dispersion_env%s6 = dftb_control%sd3bj(1)
1404 dispersion_env%a1 = dftb_control%sd3bj(2)
1405 dispersion_env%s8 = dftb_control%sd3bj(3)
1406 dispersion_env%a2 = dftb_control%sd3bj(4)
1407 dispersion_env%domol = .false.
1408 dispersion_env%kgc8 = 0._dp
1409 dispersion_env%rc_disp = dftb_control%rcdisp
1410 dispersion_env%exp_pre = 0._dp
1411 dispersion_env%scaling = 0._dp
1412 dispersion_env%nd3_exclude_pair = 0
1413 dispersion_env%parameter_file_name = dftb_control%dispersion_parameter_file
1415 ELSEIF (dftb_control%dispersion .AND. dftb_control%dispersion_type ==
dispersion_d2)
THEN
1418 dispersion_env%exp_pre = dftb_control%exp_pre
1419 dispersion_env%scaling = dftb_control%scaling
1420 dispersion_env%parameter_file_name = dftb_control%dispersion_parameter_file
1421 dispersion_env%rc_disp = dftb_control%rcdisp
1426 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1427 ELSE IF (dft_control%qs_control%method_id ==
do_method_xtb)
THEN
1428 IF (.NOT. (dft_control%qs_control%xtb_control%do_tblite))
THEN
1429 ALLOCATE (dispersion_env)
1431 dispersion_env%doabc = .false.
1432 dispersion_env%c9cnst = .false.
1433 dispersion_env%lrc = .false.
1434 dispersion_env%srb = .false.
1435 dispersion_env%verbose = .false.
1436 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, &
1437 dispersion_env%r0ab, dispersion_env%rcov, &
1438 dispersion_env%r2r4, dispersion_env%cn, &
1439 dispersion_env%cnkind, dispersion_env%cnlist, &
1440 dispersion_env%d3_exclude_pair)
1441 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
1442 dispersion_env%d2y_dx2, dispersion_env%dftd_section)
1443 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
1445 dispersion_env%eps_cn = xtb_control%epscn
1446 dispersion_env%s6 = xtb_control%s6
1447 dispersion_env%s8 = xtb_control%s8
1448 dispersion_env%a1 = xtb_control%a1
1449 dispersion_env%a2 = xtb_control%a2
1450 dispersion_env%domol = .false.
1451 dispersion_env%kgc8 = 0._dp
1452 dispersion_env%rc_disp = xtb_control%rcdisp
1453 dispersion_env%rc_d4 = xtb_control%rcdisp
1454 dispersion_env%exp_pre = 0._dp
1455 dispersion_env%scaling = 0._dp
1456 dispersion_env%nd3_exclude_pair = 0
1457 dispersion_env%parameter_file_name = xtb_control%dispersion_parameter_file
1459 SELECT CASE (xtb_control%vdw_type)
1466 dispersion_env%ref_functional =
"none"
1468 dispersion_env, para_env=para_env)
1469 dispersion_env%cnfun = 2
1473 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1475 ELSE IF (dft_control%qs_control%semi_empirical)
THEN
1476 ALLOCATE (dispersion_env)
1478 dispersion_env%doabc = .false.
1479 dispersion_env%c9cnst = .false.
1480 dispersion_env%lrc = .false.
1481 dispersion_env%srb = .false.
1482 dispersion_env%verbose = .false.
1483 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, dispersion_env%r0ab, dispersion_env%rcov, &
1484 dispersion_env%r2r4, dispersion_env%cn, dispersion_env%cnkind, dispersion_env%cnlist, &
1485 dispersion_env%d3_exclude_pair)
1486 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
1487 dispersion_env%d2y_dx2, dispersion_env%dftd_section)
1488 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
1489 IF (se_control%dispersion)
THEN
1492 dispersion_env%eps_cn = se_control%epscn
1493 dispersion_env%s6 = se_control%sd3(1)
1494 dispersion_env%sr6 = se_control%sd3(2)
1495 dispersion_env%s8 = se_control%sd3(3)
1496 dispersion_env%domol = .false.
1497 dispersion_env%kgc8 = 0._dp
1498 dispersion_env%rc_disp = se_control%rcdisp
1499 dispersion_env%exp_pre = 0._dp
1500 dispersion_env%scaling = 0._dp
1501 dispersion_env%nd3_exclude_pair = 0
1502 dispersion_env%parameter_file_name = se_control%dispersion_parameter_file
1507 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1511 IF (dft_control%qs_control%method_id ==
do_method_gpw .OR. &
1518 NULLIFY (xc_section)
1529 nelectron = nelectron - dft_control%charge
1531 IF (dft_control%multiplicity == 0)
THEN
1532 IF (
modulo(nelectron, 2) == 0)
THEN
1533 dft_control%multiplicity = 1
1535 dft_control%multiplicity = 2
1539 multiplicity = dft_control%multiplicity
1541 IF ((dft_control%nspins < 1) .OR. (dft_control%nspins > 2))
THEN
1542 cpabort(
"nspins should be 1 or 2 for the time being ...")
1545 IF ((
modulo(nelectron, 2) /= 0) .AND. (dft_control%nspins == 1))
THEN
1546 IF (.NOT. dft_control%qs_control%ofgpw .AND. .NOT. dft_control%smear)
THEN
1547 cpabort(
"Use the LSD option for an odd number of electrons")
1552 IF (dft_control%do_xas_calculation)
THEN
1553 IF (dft_control%nspins == 1)
THEN
1554 cpabort(
"Use the LSD option for XAS with transition potential")
1565 IF (dft_control%qs_control%ofgpw)
THEN
1567 IF (dft_control%nspins == 1)
THEN
1569 nelectron_spin(1) = nelectron
1570 nelectron_spin(2) = 0
1574 IF (
modulo(nelectron + multiplicity - 1, 2) /= 0)
THEN
1575 cpabort(
"LSD: try to use a different multiplicity")
1577 nelectron_spin(1) = (nelectron + multiplicity - 1)/2
1578 nelectron_spin(2) = (nelectron - multiplicity + 1)/2
1579 IF (nelectron_spin(1) < 0)
THEN
1580 cpabort(
"LSD: too few electrons for this multiplicity")
1582 maxocc = maxval(nelectron_spin)
1583 n_mo(1) = min(nelectron_spin(1), 1)
1584 n_mo(2) = min(nelectron_spin(2), 1)
1589 IF (dft_control%nspins == 1)
THEN
1591 nelectron_spin(1) = nelectron
1592 nelectron_spin(2) = 0
1593 IF (
modulo(nelectron, 2) == 0)
THEN
1594 n_mo(1) = nelectron/2
1596 n_mo(1) = int(nelectron/2._dp) + 1
1604 IF (
modulo(nelectron + multiplicity - 1, 2) /= 0)
THEN
1605 cpabort(
"LSD: try to use a different multiplicity")
1608 nelectron_spin(1) = (nelectron + multiplicity - 1)/2
1609 nelectron_spin(2) = (nelectron - multiplicity + 1)/2
1611 IF (nelectron_spin(2) < 0)
THEN
1612 cpabort(
"LSD: too few electrons for this multiplicity")
1615 n_mo(1) = nelectron_spin(1)
1616 n_mo(2) = nelectron_spin(2)
1625 qs_env%total_zeff_corr = total_zeff_corr
1629 nelectron_total=nelectron, &
1630 nelectron_spin=nelectron_spin)
1633 IF (dft_control%nspins == 2)
THEN
1634 IF (scf_control%added_mos(2) < 0)
THEN
1635 n_mo_add = n_ao - n_mo(2)
1636 ELSEIF (scf_control%added_mos(2) > 0)
THEN
1637 n_mo_add = scf_control%added_mos(2)
1639 n_mo_add = scf_control%added_mos(1)
1641 IF (n_mo_add > n_ao - n_mo(2))
THEN
1642 cpwarn(
"More ADDED_MOs requested for beta spin than available.")
1644 scf_control%added_mos(2) = min(n_mo_add, n_ao - n_mo(2))
1645 n_mo(2) = n_mo(2) + scf_control%added_mos(2)
1656 IF (scf_control%added_mos(1) < 0)
THEN
1657 scf_control%added_mos(1) = n_ao - n_mo(1)
1658 ELSEIF (scf_control%added_mos(1) > n_ao - n_mo(1))
THEN
1659 CALL cp_warn(__location__, &
1660 "More added MOs requested than available. "// &
1661 "The full set of unoccupied MOs will be used. "// &
1662 "Use 'ADDED_MOS -1' to always use all available MOs "// &
1663 "and to get rid of this warning.")
1665 scf_control%added_mos(1) = min(scf_control%added_mos(1), n_ao - n_mo(1))
1666 n_mo(1) = n_mo(1) + scf_control%added_mos(1)
1668 IF (dft_control%nspins == 2)
THEN
1669 IF (n_mo(2) > n_mo(1)) &
1670 CALL cp_warn(__location__, &
1671 "More beta than alpha MOs requested. "// &
1672 "The number of beta MOs will be reduced to the number alpha MOs.")
1673 n_mo(2) = min(n_mo(1), n_mo(2))
1674 cpassert(n_mo(1) >= nelectron_spin(1))
1675 cpassert(n_mo(2) >= nelectron_spin(2))
1679 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
1680 IF (do_kpoints .AND. dft_control%nspins == 2)
THEN
1682 IF (n_mo(2) /= n_mo(1)) &
1683 CALL cp_warn(__location__, &
1684 "Kpoints: Different number of MOs requested. "// &
1685 "The number of beta MOs will be set to the number alpha MOs.")
1687 cpassert(n_mo(1) >= nelectron_spin(1))
1688 cpassert(n_mo(2) >= nelectron_spin(2))
1692 IF (scf_control%smear%do_smear)
THEN
1693 IF (scf_control%added_mos(1) == 0)
THEN
1694 cpabort(
"Extra MOs (ADDED_MOS) are required for smearing")
1700 "PRINT%MO/CARTESIAN"), &
1702 (scf_control%level_shift /= 0.0_dp) .OR. &
1703 (scf_control%diagonalization%eps_jacobi /= 0.0_dp) .OR. &
1704 (dft_control%roks .AND. (.NOT. scf_control%use_ot)))
THEN
1709 IF (dft_control%roks .AND. (.NOT. scf_control%use_ot))
THEN
1711 cpwarn(
"General ROKS scheme is not yet tested!")
1713 IF (scf_control%smear%do_smear)
THEN
1714 CALL cp_abort(__location__, &
1715 "The options ROKS and SMEAR are not compatible. "// &
1716 "Try UKS instead of ROKS")
1719 IF (dft_control%low_spin_roks)
THEN
1720 SELECT CASE (dft_control%qs_control%method_id)
1723 CALL cp_abort(__location__, &
1724 "xTB/DFTB methods are not compatible with low spin ROKS.")
1727 CALL cp_abort(__location__, &
1728 "SE methods are not compatible with low spin ROKS.")
1736 IF (dft_control%restricted .AND. (output_unit > 0))
THEN
1738 WRITE (output_unit, *)
""
1739 WRITE (output_unit, *)
" **************************************"
1740 WRITE (output_unit, *)
" restricted calculation cutting corners"
1741 WRITE (output_unit, *)
" experimental feature, check code "
1742 WRITE (output_unit, *)
" **************************************"
1746 IF (dft_control%qs_control%do_ls_scf)
THEN
1749 ALLOCATE (mos(dft_control%nspins))
1750 DO ispin = 1, dft_control%nspins
1754 nelectron=nelectron_spin(ispin), &
1755 n_el_f=real(nelectron_spin(ispin),
dp), &
1757 flexible_electron_count=dft_control%relax_multiplicity)
1764 IF (dft_control%switch_surf_dip)
THEN
1765 ALLOCATE (mos_last_converged(dft_control%nspins))
1766 DO ispin = 1, dft_control%nspins
1770 nelectron=nelectron_spin(ispin), &
1771 n_el_f=real(nelectron_spin(ispin),
dp), &
1773 flexible_electron_count=dft_control%relax_multiplicity)
1775 CALL set_qs_env(qs_env, mos_last_converged=mos_last_converged)
1778 IF (.NOT. be_silent)
THEN
1783 IF (dft_control%qs_control%method_id ==
do_method_gpw .OR. &
1790 (.NOT. dft_control%qs_control%xtb_control%do_tblite)) .OR. &
1792 CALL get_qs_env(qs_env, dispersion_env=dispersion_env)
1800 IF (dft_control%do_admm)
THEN
1805 IF (dft_control%do_xas_calculation)
THEN
1820 CALL write_total_numbers(qs_kind_set, particle_set, qs_env%input)
1835 IF ((.NOT. dft_control%qs_control%do_ls_scf) .AND. &
1836 (.NOT. dft_control%qs_control%do_almo_scf))
THEN
1846 CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, rho0_mpole=rho0_mpole)
1850 IF (output_unit > 0)
CALL m_flush(output_unit)
1851 CALL timestop(handle)
1853 END SUBROUTINE qs_init_subsys
1863 SUBROUTINE write_total_numbers(qs_kind_set, particle_set, force_env_section)
1865 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
1866 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
1867 TYPE(section_vals_type),
POINTER :: force_env_section
1869 INTEGER :: maxlgto, maxlppl, maxlppnl, natom, ncgf, &
1870 nkind, npgf, nset, nsgf, nshell, &
1872 TYPE(cp_logger_type),
POINTER :: logger
1875 logger => cp_get_default_logger()
1876 output_unit = cp_print_key_unit_nr(logger, force_env_section,
"PRINT%TOTAL_NUMBERS", &
1879 IF (output_unit > 0)
THEN
1880 natom =
SIZE(particle_set)
1881 nkind =
SIZE(qs_kind_set)
1883 CALL get_qs_kind_set(qs_kind_set, &
1893 WRITE (unit=output_unit, fmt=
"(/,/,T2,A)") &
1894 "TOTAL NUMBERS AND MAXIMUM NUMBERS"
1896 IF (nset + npgf + ncgf > 0)
THEN
1897 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T71,I10))") &
1898 "Total number of", &
1899 "- Atomic kinds: ", nkind, &
1900 "- Atoms: ", natom, &
1901 "- Shell sets: ", nset, &
1902 "- Shells: ", nshell, &
1903 "- Primitive Cartesian functions: ", npgf, &
1904 "- Cartesian basis functions: ", ncgf, &
1905 "- Spherical basis functions: ", nsgf
1906 ELSE IF (nshell + nsgf > 0)
THEN
1907 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T71,I10))") &
1908 "Total number of", &
1909 "- Atomic kinds: ", nkind, &
1910 "- Atoms: ", natom, &
1911 "- Shells: ", nshell, &
1912 "- Spherical basis functions: ", nsgf
1914 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T71,I10))") &
1915 "Total number of", &
1916 "- Atomic kinds: ", nkind, &
1920 IF ((maxlppl > -1) .AND. (maxlppnl > -1))
THEN
1921 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T75,I6))") &
1922 "Maximum angular momentum of the", &
1923 "- Orbital basis functions: ", maxlgto, &
1924 "- Local part of the GTH pseudopotential: ", maxlppl, &
1925 "- Non-local part of the GTH pseudopotential: ", maxlppnl
1926 ELSEIF (maxlppl > -1)
THEN
1927 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T75,I6))") &
1928 "Maximum angular momentum of the", &
1929 "- Orbital basis functions: ", maxlgto, &
1930 "- Local part of the GTH pseudopotential: ", maxlppl
1932 WRITE (unit=output_unit, fmt=
"(/,T3,A,T75,I6)") &
1933 "Maximum angular momentum of the orbital basis functions: ", maxlgto
1937 CALL get_qs_kind_set(qs_kind_set, &
1944 basis_type=
"LRI_AUX")
1945 IF (nset + npgf + ncgf > 0)
THEN
1946 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
1947 "LRI_AUX Basis: ", &
1948 "Total number of", &
1949 "- Shell sets: ", nset, &
1950 "- Shells: ", nshell, &
1951 "- Primitive Cartesian functions: ", npgf, &
1952 "- Cartesian basis functions: ", ncgf, &
1953 "- Spherical basis functions: ", nsgf
1954 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
1955 " Maximum angular momentum ", maxlgto
1959 CALL get_qs_kind_set(qs_kind_set, &
1966 basis_type=
"RI_HXC")
1967 IF (nset + npgf + ncgf > 0)
THEN
1968 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
1970 "Total number of", &
1971 "- Shell sets: ", nset, &
1972 "- Shells: ", nshell, &
1973 "- Primitive Cartesian functions: ", npgf, &
1974 "- Cartesian basis functions: ", ncgf, &
1975 "- Spherical basis functions: ", nsgf
1976 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
1977 " Maximum angular momentum ", maxlgto
1981 CALL get_qs_kind_set(qs_kind_set, &
1988 basis_type=
"AUX_FIT")
1989 IF (nset + npgf + ncgf > 0)
THEN
1990 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
1991 "AUX_FIT ADMM-Basis: ", &
1992 "Total number of", &
1993 "- Shell sets: ", nset, &
1994 "- Shells: ", nshell, &
1995 "- Primitive Cartesian functions: ", npgf, &
1996 "- Cartesian basis functions: ", ncgf, &
1997 "- Spherical basis functions: ", nsgf
1998 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
1999 " Maximum angular momentum ", maxlgto
2003 CALL cp_print_key_finished_output(output_unit, logger, force_env_section, &
2004 "PRINT%TOTAL_NUMBERS")
2006 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_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 set_qs_env(qs_env, super_cell, mos, qmmm, qmmm_periodic, ewald_env, ewald_pw, mpools, rho_external, external_vxc, mask, scf_control, rel_control, qs_charges, ks_env, ks_qmmm_env, wf_history, scf_env, active_space, input, oce, rho_atom_set, rho0_atom_set, rho0_mpole, run_rtp, rtp, rhoz_set, rhoz_tot, ecoul_1c, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, efield, linres_control, xas_env, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, ls_scf_env, do_transport, transport_env, lri_env, lri_density, exstate_env, ec_env, dispersion_env, 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, tb_tblite)
Set the QUICKSTEP environment.
subroutine, public get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, sac_ae, sac_ppl, sac_lri, sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, particle_set, energy, force, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, rho, rho_xc, pw_env, ewald_env, ewald_pw, active_space, mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, vppl, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, task_list, task_list_soft, rho0_atom_set, rho0_mpole, rhoz_set, ecoul_1c, rho0_s_rs, rho0_s_gs, do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, lri_env, lri_density, exstate_env, ec_env, 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, tb_tblite)
Get 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, 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, floating, name, element_symbol, pao_basis_size, pao_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
subroutine, public init_gapw_nlcc(qs_kind_set)
...
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)
Get attributes of an atomic kind set.
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, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_ks_im_kp, vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, kpoints, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, task_list, task_list_soft, subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env)
...
subroutine, public 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_ham(tb)
...
subroutine, public tb_init_geometry(qs_env, tb)
...
subroutine, public tb_init_wf(tb, do_grad)
...
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.