215#include "./base/base_uses.f90"
222 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_environment'
248 SUBROUTINE qs_init(qs_env, para_env, root_section, globenv, cp_subsys, kpoint_env, cell, cell_ref, &
249 qmmm, qmmm_env_qm, force_env_section, subsys_section, &
250 use_motion_section, silent)
258 TYPE(
cell_type),
OPTIONAL,
POINTER :: cell, cell_ref
259 LOGICAL,
INTENT(IN),
OPTIONAL :: qmmm
262 LOGICAL,
INTENT(IN) :: use_motion_section
263 LOGICAL,
INTENT(IN),
OPTIONAL :: silent
265 CHARACTER(LEN=default_string_length) :: basis_type
266 INTEGER :: ikind, method_id, nelectron_total, &
268 LOGICAL :: do_admm_rpa, do_ec_hfx, do_et, do_exx, do_hfx, do_kpoints, is_identical, is_semi, &
269 mp2_present, my_qmmm, qmmm_decoupl, same_except_frac, use_ref_cell
270 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: rtmat
272 TYPE(
cell_type),
POINTER :: my_cell, my_cell_ref
282 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
289 et_coupling_section, hfx_section, kpoint_section, mp2_section, rpa_hfx_section, &
292 NULLIFY (my_cell, my_cell_ref, atomic_kind_set, particle_set, &
293 qs_kind_set, kpoint_section, dft_section, ec_section, &
294 subsys, ks_env, dft_control, blacs_env)
296 CALL set_qs_env(qs_env, input=force_env_section)
297 IF (.NOT.
ASSOCIATED(subsys_section))
THEN
303 IF (
PRESENT(qmmm)) my_qmmm = qmmm
304 qmmm_decoupl = .false.
305 IF (
PRESENT(qmmm_env_qm))
THEN
309 qmmm_decoupl = my_qmmm .AND. qmmm_env_qm%periodic .AND. qmmm_env_qm%multipole
311 qs_env%qmmm_env_qm => qmmm_env_qm
317 SELECT CASE (method_id)
330 force_env_section=force_env_section, &
331 subsys_section=subsys_section, &
332 use_motion_section=use_motion_section, &
333 root_section=root_section, &
334 cp_subsys=cp_subsys, cell=cell, cell_ref=cell_ref, &
335 elkind=is_semi, silent=silent)
344 cell_ref=my_cell_ref, &
345 use_ref_cell=use_ref_cell, &
346 atomic_kind_set=atomic_kind_set, &
347 qs_kind_set=qs_kind_set, &
348 particle_set=particle_set)
351 IF (
PRESENT(globenv))
THEN
353 globenv%blacs_repeatable)
362 force_env_section, subsys_section, para_env)
365 IF (
PRESENT(kpoint_env))
THEN
366 kpoints => kpoint_env
367 CALL set_qs_env(qs_env=qs_env, kpoints=kpoints)
372 CALL set_qs_env(qs_env=qs_env, kpoints=kpoints)
380 CALL qs_init_subsys(qs_env, para_env, subsys, my_cell, my_cell_ref, use_ref_cell, &
381 subsys_section, silent=silent)
383 CALL get_qs_env(qs_env, dft_control=dft_control)
384 IF (method_id ==
do_method_lrigpw .OR. dft_control%qs_control%lri_optbas)
THEN
385 CALL get_qs_env(qs_env=qs_env, lri_env=lri_env)
388 CALL cp_warn(__location__,
"Experimental code: "// &
389 "RIGPW should only be used for testing.")
390 CALL get_qs_env(qs_env=qs_env, lri_env=lri_env)
394 IF (my_qmmm .AND.
PRESENT(qmmm_env_qm) .AND. .NOT. dft_control%qs_control%commensurate_mgrids)
THEN
396 CALL cp_abort(__location__,
"QM/MM with coupling GAUSS or S-WAVE requires "// &
397 "keyword FORCE_EVAL/DFT/MGRID/COMMENSURATE to be enabled.")
402 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints, blacs_env=blacs_env)
406 CALL get_qs_env(qs_env=qs_env, wf_history=wf_history)
417 CALL get_qs_env(qs_env, dft_control=dft_control, scf_control=scf_control, nelectron_total=nelectron_total)
422 IF (dft_control%do_admm)
THEN
423 basis_type =
'AUX_FIT'
427 CALL hfx_create(qs_env%x_data, para_env, hfx_section, atomic_kind_set, &
428 qs_kind_set, particle_set, dft_control, my_cell, orb_basis=basis_type, &
429 nelectron_total=nelectron_total, nkp_grid=nkp_grid)
434 IF (mp2_present)
THEN
435 cpassert(
ASSOCIATED(qs_env%mp2_env))
448 qs_env%mp2_env%ri_rpa%reuse_hfx = .true.
449 IF (.NOT. do_hfx) qs_env%mp2_env%ri_rpa%reuse_hfx = .false.
451 IF (.NOT. (is_identical .OR. same_except_frac)) qs_env%mp2_env%ri_rpa%reuse_hfx = .false.
452 IF (dft_control%do_admm .AND. .NOT. do_admm_rpa) qs_env%mp2_env%ri_rpa%reuse_hfx = .false.
454 IF (.NOT. qs_env%mp2_env%ri_rpa%reuse_hfx)
THEN
455 IF (do_admm_rpa)
THEN
456 basis_type =
'AUX_FIT'
460 CALL hfx_create(qs_env%mp2_env%ri_rpa%x_data, para_env, rpa_hfx_section, atomic_kind_set, &
461 qs_kind_set, particle_set, dft_control, my_cell, orb_basis=basis_type, &
462 nelectron_total=nelectron_total)
464 qs_env%mp2_env%ri_rpa%x_data => qs_env%x_data
469 IF (dft_control%qs_control%do_kg)
THEN
471 CALL kg_env_create(qs_env, qs_env%kg_env, qs_kind_set, qs_env%input)
476 l_val=qs_env%excited_state)
477 NULLIFY (exstate_env)
478 CALL exstate_create(exstate_env, qs_env%excited_state, dft_section)
479 CALL set_qs_env(qs_env, exstate_env=exstate_env)
482 "PROPERTIES%ET_COUPLING")
488 IF (qs_env%do_transport)
THEN
492 CALL get_qs_env(qs_env, harris_env=harris_env)
493 IF (qs_env%harris_method)
THEN
495 CALL get_qs_env(qs_env, local_particles=local_particles)
496 CALL harris_rhoin_init(harris_env%rhoin,
"RHOIN", qs_kind_set, atomic_kind_set, &
497 local_particles, dft_control%nspins)
505 l_val=qs_env%energy_correction)
510 IF (qs_env%energy_correction)
THEN
515 IF (ec_env%do_ec_hfx)
THEN
518 IF (ec_env%basis_inconsistent)
THEN
519 CALL cp_abort(__location__, &
520 "Energy correction methods with hybrid functionals: "// &
521 "correction and ground state need to use the same basis. "// &
522 "Checked by comparing basis set names only.")
526 IF (ec_env%do_ec_admm .AND. .NOT. dft_control%do_admm)
THEN
527 CALL cp_abort(__location__,
"Need an ADMM input section for ADMM EC to work")
530 ec_env%reuse_hfx = .true.
531 IF (.NOT. do_hfx) ec_env%reuse_hfx = .false.
533 IF (.NOT. (is_identical .OR. same_except_frac)) ec_env%reuse_hfx = .false.
534 IF (dft_control%do_admm .AND. .NOT. ec_env%do_ec_admm) ec_env%reuse_hfx = .false.
536 IF (.NOT. ec_env%reuse_hfx)
THEN
537 IF (ec_env%do_ec_admm)
THEN
538 basis_type =
'AUX_FIT'
542 CALL hfx_create(ec_env%x_data, para_env, ec_hfx_section, atomic_kind_set, &
543 qs_kind_set, particle_set, dft_control, my_cell, orb_basis=basis_type, &
544 nelectron_total=nelectron_total)
546 ec_env%x_data => qs_env%x_data
555 IF (dft_control%qs_control%do_almo_scf)
THEN
560 CALL get_qs_env(qs_env, rel_control=rel_control)
561 IF (rel_control%rel_method /=
rel_none)
THEN
563 nkind =
SIZE(atomic_kind_set)
567 IF (
ASSOCIATED(rtmat))
CALL set_qs_kind(qs_kind_set(ikind), reltmat=rtmat)
586 SUBROUTINE qs_init_subsys(qs_env, para_env, subsys, cell, cell_ref, use_ref_cell, subsys_section, &
592 TYPE(
cell_type),
POINTER :: cell, cell_ref
593 LOGICAL,
INTENT(in) :: use_ref_cell
595 LOGICAL,
INTENT(in),
OPTIONAL :: silent
597 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_init_subsys'
599 CHARACTER(len=2) :: element_symbol
600 INTEGER :: gfn_type, handle, ikind, ispin, iw, lmax_sphere, maxl, maxlgto, maxlgto_lri, &
601 maxlppl, maxlppnl, method_id, multiplicity, my_ival, n_ao, n_mo_add, natom, nelectron, &
602 ngauss, nkind, output_unit, sort_basis, tnadd_method
603 INTEGER,
DIMENSION(2) :: n_mo, nelectron_spin
604 INTEGER,
DIMENSION(5) :: occ
605 LOGICAL :: all_potential_present, be_silent, do_kpoints, do_ri_hfx, do_ri_mp2, do_ri_rpa, &
606 do_ri_sos_mp2, do_rpa_ri_exx, do_wfc_im_time, e1terms, has_unit_metric, lribas, &
607 mp2_present, orb_gradient
608 REAL(kind=
dp) :: alpha, ccore, ewald_rcut, fxx, maxocc, &
609 rcut, total_zeff_corr, verlet_skin, &
621 rhoin_basis, ri_aux_basis_set, &
622 ri_hfx_basis, ri_xas_basis, &
627 TYPE(
mo_set_type),
DIMENSION(:),
POINTER :: mos, mos_last_converged
636 POINTER :: dftb_potential
641 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
649 TYPE(
section_vals_type),
POINTER :: dft_section, et_coupling_section, et_ddapc_section, &
650 ewald_section, harris_section, lri_section, mp2_section, nl_section, poisson_section, &
651 pp_section, print_section, qs_section, rixs_section, se_section, tddfpt_section, &
657 CALL timeset(routinen, handle)
663 IF (
PRESENT(silent)) be_silent = silent
668 NULLIFY (mos, se_taper)
669 NULLIFY (dft_control)
672 NULLIFY (local_molecules)
673 NULLIFY (local_particles)
674 NULLIFY (scf_control)
675 NULLIFY (dft_section)
676 NULLIFY (et_coupling_section)
678 NULLIFY (mos_last_converged)
687 qs_kind_set=qs_kind_set, &
688 atomic_kind_set=atomic_kind_set, &
689 molecule_set=molecule_set, &
690 molecule_kind_set=molecule_kind_set)
696 dft_control%qs_control%periodicity = sum(cell%perd)
702 IF (.NOT. be_silent)
THEN
705 SELECT CASE (method_id)
714 IF (dft_control%qs_control%xtb_control%do_tblite)
THEN
715 CALL tblite_header(iw, dft_control%qs_control%xtb_control%tblite_method)
717 gfn_type = dft_control%qs_control%xtb_control%gfn_type
722 "PRINT%PROGRAM_BANNER")
725 IF (dft_control%do_sccs .AND. dft_control%qs_control%gapw)
THEN
726 cpabort(
"SCCS is not yet implemented with GAPW")
728 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
731 SELECT CASE (dft_control%qs_control%wf_interpolation_method_nr)
739 dft_control%qs_control%et_coupling_calc = .false.
742 dft_control%qs_control%et_coupling_calc = .true.
743 dft_control%qs_control%ddapc_restraint = .true.
744 CALL read_ddapc_section(dft_control%qs_control, ddapc_restraint_section=et_ddapc_section)
754 IF (qs_env%do_rixs)
THEN
755 CALL read_rixs_control(dft_control%rixs_control, rixs_section, dft_control%qs_control)
761 ALLOCATE (rel_control)
764 CALL set_qs_env(qs_env, rel_control=rel_control)
769 NULLIFY (ewald_env, ewald_pw, dftb_potential)
770 dftb_control => dft_control%qs_control%dftb_control
772 subsys_section=subsys_section, para_env=para_env)
773 CALL set_qs_env(qs_env, dftb_potential=dftb_potential)
775 IF (dftb_control%do_ewald)
THEN
779 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
785 CALL ewald_pw_create(ewald_pw, ewald_env, cell, cell_ref, print_section=print_section)
786 CALL set_qs_env(qs_env, ewald_env=ewald_env, ewald_pw=ewald_pw)
788 ELSEIF (dft_control%qs_control%method_id ==
do_method_xtb)
THEN
790 xtb_control => dft_control%qs_control%xtb_control
792 IF (xtb_control%do_tblite)
THEN
801 qs_kind => qs_kind_set(ikind)
803 cpassert(.NOT.
ASSOCIATED(qs_kind%xtb_parameter))
806 CALL get_qs_kind(qs_kind, element_symbol=element_symbol)
808 NULLIFY (tmp_basis_set)
809 CALL tb_get_basis(qs_env%tb_tblite, tmp_basis_set, element_symbol, qs_kind%xtb_parameter, occ)
814 zeff_correction = 0.0_dp
816 zeff=real(sum(occ),
dp), zeff_correction=zeff_correction)
819 NULLIFY (ewald_env, ewald_pw)
821 qs_kind => qs_kind_set(ikind)
823 cpassert(.NOT.
ASSOCIATED(qs_kind%xtb_parameter))
826 gfn_type = dft_control%qs_control%xtb_control%gfn_type
827 CALL get_qs_kind(qs_kind, element_symbol=element_symbol)
829 xtb_control%parameter_file_path, xtb_control%parameter_file_name, &
834 NULLIFY (tmp_basis_set)
835 IF (qs_kind%xtb_parameter%z == 1)
THEN
837 ngauss = xtb_control%h_sto_ng
839 ngauss = xtb_control%sto_ng
841 IF (qs_kind%xtb_parameter%defined)
THEN
846 IF (
ASSOCIATED(qs_kind%all_potential))
THEN
847 DEALLOCATE (qs_kind%all_potential%elec_conf)
848 DEALLOCATE (qs_kind%all_potential)
852 IF (qs_kind%xtb_parameter%defined)
THEN
853 zeff_correction = 0.0_dp
855 zeff=qs_kind%xtb_parameter%zeff, zeff_correction=zeff_correction)
856 CALL get_potential(qs_kind%all_potential, alpha_core_charge=alpha)
857 ccore = qs_kind%xtb_parameter%zeff*sqrt((alpha/
pi)**3)
858 CALL set_potential(qs_kind%all_potential, ccore_charge=ccore)
859 qs_kind%xtb_parameter%zeff = qs_kind%xtb_parameter%zeff - zeff_correction
865 ALLOCATE (xtb_control%rcpair(nkind, nkind))
866 CALL xtb_pp_radius(qs_kind_set, xtb_control%rcpair, xtb_control%eps_pair, xtb_control%kf)
868 IF (xtb_control%do_ewald)
THEN
872 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
875 IF (gfn_type == 0)
THEN
877 silent=silent, pset=
"EEQ")
883 CALL ewald_pw_create(ewald_pw, ewald_env, cell, cell_ref, print_section=print_section)
884 CALL set_qs_env(qs_env, ewald_env=ewald_env, ewald_pw=ewald_pw)
891 dft_control%qs_control%lri_optbas .OR. &
901 CALL get_qs_kind_set(qs_kind_set, all_potential_present=all_potential_present)
902 IF ((dft_control%qs_control%method_id ==
do_method_gpw) .OR. &
905 IF (all_potential_present)
THEN
906 cpabort(
"All-electron calculations with GPW, GAPW_XC, and OFGPW are not implemented")
911 CALL get_qs_kind_set(qs_kind_set, dft_plus_u_atom_present=dft_control%dft_plus_u)
913 IF (dft_control%do_admm)
THEN
917 NULLIFY (aux_fit_basis)
918 qs_kind => qs_kind_set(ikind)
919 CALL get_qs_kind(qs_kind, basis_set=aux_fit_basis, basis_type=
"AUX_FIT")
920 IF (.NOT. (
ASSOCIATED(aux_fit_basis)))
THEN
922 cpabort(
"AUX_FIT basis set is not defined. ")
932 e1terms = lri_env%exact_1c_terms
934 IF (dft_control%qs_control%do_kg)
THEN
942 NULLIFY (lri_aux_basis)
943 qs_kind => qs_kind_set(ikind)
944 CALL get_qs_kind(qs_kind, basis_set=lri_aux_basis, basis_type=
"LRI_AUX")
945 IF (.NOT. (
ASSOCIATED(lri_aux_basis)))
THEN
947 CALL cp_warn(__location__,
"Automatic Generation of LRI_AUX basis. "// &
948 "This is experimental code.")
957 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_RPA%HF%RI%_SECTION_PARAMETERS_", &
959 IF (do_ri_hfx .OR. do_rpa_ri_exx)
THEN
963 NULLIFY (ri_hfx_basis)
964 qs_kind => qs_kind_set(ikind)
965 CALL get_qs_kind(qs_kind=qs_kind, basis_set=ri_hfx_basis, &
967 IF (.NOT. (
ASSOCIATED(ri_hfx_basis)))
THEN
969 IF (dft_control%do_admm)
THEN
971 basis_type=
"AUX_FIT", basis_sort=sort_basis)
974 basis_sort=sort_basis)
985 NULLIFY (ri_hfx_basis)
986 qs_kind => qs_kind_set(ikind)
987 CALL get_qs_kind(qs_kind, basis_set=ri_hfx_basis, basis_type=
"RI_HXC")
988 IF (.NOT. (
ASSOCIATED(ri_hfx_basis)))
THEN
999 l_val=qs_env%harris_method)
1002 CALL set_qs_env(qs_env, harris_env=harris_env)
1004 IF (qs_env%harris_method)
THEN
1008 NULLIFY (tmp_basis_set)
1009 qs_kind => qs_kind_set(ikind)
1010 CALL get_qs_kind(qs_kind, basis_set=rhoin_basis, basis_type=
"RHOIN")
1011 IF (.NOT. (
ASSOCIATED(rhoin_basis)))
THEN
1014 IF (qs_env%harris_env%density_source ==
hden_atomic)
THEN
1018 rhoin_basis => tmp_basis_set
1027 IF (mp2_present)
THEN
1031 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%LOW_SCALING%_SECTION_PARAMETERS_", &
1032 l_val=do_wfc_im_time)
1035 CALL cp_warn(__location__, &
1036 "Low-scaling RPA requires SORT_BASIS EXP keyword (in DFT input section) for good performance")
1041 CALL get_qs_env(qs_env, mp2_env=mp2_env, nkind=nkind)
1042 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_MP2%_SECTION_PARAMETERS_", l_val=do_ri_mp2)
1043 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_SOS_MP2%_SECTION_PARAMETERS_", l_val=do_ri_sos_mp2)
1044 CALL section_vals_val_get(qs_env%input,
"DFT%XC%WF_CORRELATION%RI_RPA%_SECTION_PARAMETERS_", l_val=do_ri_rpa)
1045 IF (do_ri_mp2 .OR. do_ri_sos_mp2 .OR. do_ri_rpa)
THEN
1047 NULLIFY (ri_aux_basis_set)
1048 qs_kind => qs_kind_set(ikind)
1049 CALL get_qs_kind(qs_kind=qs_kind, basis_set=ri_aux_basis_set, &
1050 basis_type=
"RI_AUX")
1051 IF (.NOT. (
ASSOCIATED(ri_aux_basis_set)))
THEN
1058 qs_env%mp2_env%ri_aux_auto_generated = .true.
1065 IF (dft_control%do_xas_tdp_calculation .OR. qs_env%do_rixs)
THEN
1069 NULLIFY (ri_xas_basis)
1070 qs_kind => qs_kind_set(ikind)
1071 CALL get_qs_kind(qs_kind, basis_set=ri_xas_basis, basis_type=
"RI_XAS")
1072 IF (.NOT.
ASSOCIATED(ri_xas_basis))
THEN
1082 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto, maxlppl=maxlppl, maxlppnl=maxlppnl)
1084 lmax_sphere = dft_control%qs_control%gapw_control%lmax_sphere
1085 IF (lmax_sphere .LT. 0)
THEN
1086 lmax_sphere = 2*maxlgto
1087 dft_control%qs_control%gapw_control%lmax_sphere = lmax_sphere
1089 IF (dft_control%qs_control%method_id ==
do_method_lrigpw .OR. dft_control%qs_control%lri_optbas)
THEN
1090 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_lri, basis_type=
"LRI_AUX")
1092 maxlgto = max(maxlgto, maxlgto_lri)
1094 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_lri, basis_type=
"RI_HXC")
1095 maxlgto = max(maxlgto, maxlgto_lri)
1097 IF (dft_control%do_xas_tdp_calculation .OR. qs_env%do_rixs)
THEN
1099 CALL get_qs_kind_set(qs_kind_set, maxlgto=maxlgto_lri, basis_type=
"RI_XAS")
1100 maxlgto = max(maxlgto, maxlgto_lri)
1102 maxl = max(2*maxlgto, maxlppl, maxlppnl, lmax_sphere) + 1
1114 qs_control => dft_control%qs_control
1121 maxl = max(3*maxlgto + 1, 0)
1128 IF (.NOT. dft_control%qs_control%xtb_control%do_tblite)
THEN
1131 qs_kind => qs_kind_set(ikind)
1132 IF (qs_kind%xtb_parameter%defined)
THEN
1133 CALL get_qs_kind(qs_kind, basis_set=tmp_basis_set)
1134 rcut = xtb_control%coulomb_sr_cut
1135 fxx = 2.0_dp*xtb_control%coulomb_sr_eps*qs_kind%xtb_parameter%eta**2
1136 fxx = 0.80_dp*(1.0_dp/fxx)**0.3333_dp
1137 rcut = min(rcut, xtb_control%coulomb_sr_cut)
1138 qs_kind%xtb_parameter%rcut = min(rcut, fxx)
1140 qs_kind%xtb_parameter%rcut = 0.0_dp
1146 IF (.NOT. be_silent)
THEN
1158 particle_set=particle_set, &
1159 local_particles=local_particles, &
1160 molecule_kind_set=molecule_kind_set, &
1161 molecule_set=molecule_set, &
1162 local_molecules=local_molecules, &
1163 force_env_section=qs_env%input)
1166 ALLOCATE (scf_control)
1168 IF (dft_control%qs_control%dftb)
THEN
1169 scf_control%non_selfconsistent = .NOT. dft_control%qs_control%dftb_control%self_consistent
1171 IF (dft_control%qs_control%xtb)
THEN
1172 IF (dft_control%qs_control%xtb_control%do_tblite)
THEN
1173 scf_control%non_selfconsistent = .false.
1175 scf_control%non_selfconsistent = (dft_control%qs_control%xtb_control%gfn_type == 0)
1178 IF (qs_env%harris_method)
THEN
1179 scf_control%non_selfconsistent = .true.
1187 has_unit_metric = .false.
1188 IF (dft_control%qs_control%semi_empirical)
THEN
1189 IF (dft_control%qs_control%se_control%orthogonal_basis) has_unit_metric = .true.
1191 IF (dft_control%qs_control%dftb)
THEN
1192 IF (dft_control%qs_control%dftb_control%orthogonal_basis) has_unit_metric = .true.
1194 CALL set_qs_env(qs_env, has_unit_metric=has_unit_metric)
1198 interpolation_method_nr= &
1199 dft_control%qs_control%wf_interpolation_method_nr, &
1200 extrapolation_order=dft_control%qs_control%wf_extrapolation_order, &
1201 has_unit_metric=has_unit_metric)
1205 scf_control=scf_control, &
1206 wf_history=wf_history)
1209 cell_ref=cell_ref, &
1210 use_ref_cell=use_ref_cell, &
1215 CALL set_ks_env(ks_env, dft_control=dft_control)
1217 CALL qs_subsys_set(subsys, local_molecules=local_molecules, &
1218 local_particles=local_particles, cell=cell)
1225 atomic_kind_set=atomic_kind_set, &
1226 dft_control=dft_control, &
1227 scf_control=scf_control)
1231 IF (dft_control%qs_control%do_ls_scf .OR. &
1232 dft_control%qs_control%do_almo_scf)
THEN
1233 CALL set_qs_env(qs_env=qs_env, requires_mo_derivs=.false.)
1235 IF (scf_control%use_ot)
THEN
1236 CALL set_qs_env(qs_env=qs_env, requires_mo_derivs=.true.)
1238 CALL set_qs_env(qs_env=qs_env, requires_mo_derivs=.false.)
1243 dft_control%smear = scf_control%smear%do_smear
1246 IF (.NOT. (dft_control%qs_control%dftb .OR. dft_control%qs_control%xtb))
THEN
1247 IF (dft_control%apply_period_efield)
THEN
1248 CALL get_qs_env(qs_env=qs_env, requires_mo_derivs=orb_gradient)
1249 IF (.NOT. orb_gradient)
THEN
1250 CALL cp_abort(__location__,
"Periodic Efield needs orbital gradient and direct optimization."// &
1251 " Use the OT optimization method.")
1253 IF (dft_control%smear)
THEN
1254 CALL cp_abort(__location__,
"Periodic Efield needs equal occupation numbers."// &
1255 " Smearing option is not possible.")
1264 NULLIFY (rho_atom_set)
1265 gapw_control => dft_control%qs_control%gapw_control
1266 CALL init_rho_atom(rho_atom_set, atomic_kind_set, qs_kind_set, dft_control, para_env)
1267 CALL set_qs_env(qs_env=qs_env, rho_atom_set=rho_atom_set)
1269 CALL get_qs_env(qs_env=qs_env, local_rho_set=local_rho_set, natom=natom)
1271 CALL init_rho0(local_rho_set, qs_env, gapw_control)
1283 ELSE IF (dft_control%qs_control%semi_empirical)
THEN
1284 NULLIFY (se_store_int_env, se_nddo_mpole, se_nonbond_env)
1285 natom =
SIZE(particle_set)
1287 se_control => dft_control%qs_control%se_control
1292 SELECT CASE (dft_control%qs_control%method_id)
1298 CALL init_se_nlradius(se_control, atomic_kind_set, qs_kind_set, subsys_section)
1303 IF (se_control%do_ewald .OR. se_control%do_ewald_gks)
THEN
1304 ALLOCATE (ewald_env)
1307 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
1310 "PRINT%GRID_INFORMATION")
1315 print_section=print_section)
1321 IF (se_control%do_ewald)
THEN
1322 CALL ewald_env_get(ewald_env, max_multipole=se_control%max_multipole)
1326 ALLOCATE (se_nonbond_env)
1328 do_electrostatics=.true., verlet_skin=verlet_skin, ewald_rcut=ewald_rcut, &
1329 ei_scale14=0.0_dp, vdw_scale14=0.0_dp, shift_cutoff=.false.)
1332 CALL set_qs_env(qs_env, ewald_env=ewald_env, ewald_pw=ewald_pw, &
1333 se_nonbond_env=se_nonbond_env, se_nddo_mpole=se_nddo_mpole)
1336 dft_control%qs_control%method_id)
1339 CALL se_taper_create(se_taper, se_control%integral_screening, se_control%do_ewald, &
1340 se_control%taper_cou, se_control%range_cou, &
1341 se_control%taper_exc, se_control%range_exc, &
1342 se_control%taper_scr, se_control%range_scr, &
1343 se_control%taper_lrc, se_control%range_lrc)
1347 CALL set_qs_env(qs_env, se_store_int_env=se_store_int_env)
1351 IF (dft_control%qs_control%method_id ==
do_method_gpw .OR. &
1357 ALLOCATE (dispersion_env)
1358 NULLIFY (xc_section)
1362 NULLIFY (pp_section)
1366 NULLIFY (nl_section)
1370 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1371 ELSE IF (dft_control%qs_control%method_id ==
do_method_dftb)
THEN
1372 ALLOCATE (dispersion_env)
1374 dispersion_env%doabc = .false.
1375 dispersion_env%c9cnst = .false.
1376 dispersion_env%lrc = .false.
1377 dispersion_env%srb = .false.
1378 dispersion_env%verbose = .false.
1379 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, dispersion_env%r0ab, dispersion_env%rcov, &
1380 dispersion_env%r2r4, dispersion_env%cn, dispersion_env%cnkind, dispersion_env%cnlist, &
1381 dispersion_env%d3_exclude_pair)
1382 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
1383 dispersion_env%d2y_dx2, dispersion_env%dftd_section)
1384 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
1385 IF (dftb_control%dispersion .AND. dftb_control%dispersion_type ==
dispersion_d3)
THEN
1388 dispersion_env%eps_cn = dftb_control%epscn
1389 dispersion_env%s6 = dftb_control%sd3(1)
1390 dispersion_env%sr6 = dftb_control%sd3(2)
1391 dispersion_env%s8 = dftb_control%sd3(3)
1392 dispersion_env%domol = .false.
1393 dispersion_env%kgc8 = 0._dp
1394 dispersion_env%rc_disp = dftb_control%rcdisp
1395 dispersion_env%exp_pre = 0._dp
1396 dispersion_env%scaling = 0._dp
1397 dispersion_env%nd3_exclude_pair = 0
1398 dispersion_env%parameter_file_name = dftb_control%dispersion_parameter_file
1400 ELSEIF (dftb_control%dispersion .AND. dftb_control%dispersion_type ==
dispersion_d3bj)
THEN
1403 dispersion_env%eps_cn = dftb_control%epscn
1404 dispersion_env%s6 = dftb_control%sd3bj(1)
1405 dispersion_env%a1 = dftb_control%sd3bj(2)
1406 dispersion_env%s8 = dftb_control%sd3bj(3)
1407 dispersion_env%a2 = dftb_control%sd3bj(4)
1408 dispersion_env%domol = .false.
1409 dispersion_env%kgc8 = 0._dp
1410 dispersion_env%rc_disp = dftb_control%rcdisp
1411 dispersion_env%exp_pre = 0._dp
1412 dispersion_env%scaling = 0._dp
1413 dispersion_env%nd3_exclude_pair = 0
1414 dispersion_env%parameter_file_name = dftb_control%dispersion_parameter_file
1416 ELSEIF (dftb_control%dispersion .AND. dftb_control%dispersion_type ==
dispersion_d2)
THEN
1419 dispersion_env%exp_pre = dftb_control%exp_pre
1420 dispersion_env%scaling = dftb_control%scaling
1421 dispersion_env%parameter_file_name = dftb_control%dispersion_parameter_file
1422 dispersion_env%rc_disp = dftb_control%rcdisp
1427 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1428 ELSE IF (dft_control%qs_control%method_id ==
do_method_xtb)
THEN
1429 IF (.NOT. (dft_control%qs_control%xtb_control%do_tblite))
THEN
1430 ALLOCATE (dispersion_env)
1432 dispersion_env%doabc = .false.
1433 dispersion_env%c9cnst = .false.
1434 dispersion_env%lrc = .false.
1435 dispersion_env%srb = .false.
1436 dispersion_env%verbose = .false.
1437 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, &
1438 dispersion_env%r0ab, dispersion_env%rcov, &
1439 dispersion_env%r2r4, dispersion_env%cn, &
1440 dispersion_env%cnkind, dispersion_env%cnlist, &
1441 dispersion_env%d3_exclude_pair)
1442 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
1443 dispersion_env%d2y_dx2, dispersion_env%dftd_section)
1444 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
1446 dispersion_env%eps_cn = xtb_control%epscn
1447 dispersion_env%s6 = xtb_control%s6
1448 dispersion_env%s8 = xtb_control%s8
1449 dispersion_env%a1 = xtb_control%a1
1450 dispersion_env%a2 = xtb_control%a2
1451 dispersion_env%domol = .false.
1452 dispersion_env%kgc8 = 0._dp
1453 dispersion_env%rc_disp = xtb_control%rcdisp
1454 dispersion_env%rc_d4 = xtb_control%rcdisp
1455 dispersion_env%exp_pre = 0._dp
1456 dispersion_env%scaling = 0._dp
1457 dispersion_env%nd3_exclude_pair = 0
1458 dispersion_env%parameter_file_name = xtb_control%dispersion_parameter_file
1460 SELECT CASE (xtb_control%vdw_type)
1467 dispersion_env%ref_functional =
"none"
1469 dispersion_env, para_env=para_env)
1470 dispersion_env%cnfun = 2
1474 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1476 ELSE IF (dft_control%qs_control%semi_empirical)
THEN
1477 ALLOCATE (dispersion_env)
1479 dispersion_env%doabc = .false.
1480 dispersion_env%c9cnst = .false.
1481 dispersion_env%lrc = .false.
1482 dispersion_env%srb = .false.
1483 dispersion_env%verbose = .false.
1484 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, dispersion_env%r0ab, dispersion_env%rcov, &
1485 dispersion_env%r2r4, dispersion_env%cn, dispersion_env%cnkind, dispersion_env%cnlist, &
1486 dispersion_env%d3_exclude_pair)
1487 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
1488 dispersion_env%d2y_dx2, dispersion_env%dftd_section)
1489 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
1490 IF (se_control%dispersion)
THEN
1493 dispersion_env%eps_cn = se_control%epscn
1494 dispersion_env%s6 = se_control%sd3(1)
1495 dispersion_env%sr6 = se_control%sd3(2)
1496 dispersion_env%s8 = se_control%sd3(3)
1497 dispersion_env%domol = .false.
1498 dispersion_env%kgc8 = 0._dp
1499 dispersion_env%rc_disp = se_control%rcdisp
1500 dispersion_env%exp_pre = 0._dp
1501 dispersion_env%scaling = 0._dp
1502 dispersion_env%nd3_exclude_pair = 0
1503 dispersion_env%parameter_file_name = se_control%dispersion_parameter_file
1508 CALL set_qs_env(qs_env, dispersion_env=dispersion_env)
1512 IF (dft_control%qs_control%method_id ==
do_method_gpw .OR. &
1519 NULLIFY (xc_section)
1530 nelectron = nelectron - dft_control%charge
1532 IF (dft_control%multiplicity == 0)
THEN
1533 IF (
modulo(nelectron, 2) == 0)
THEN
1534 dft_control%multiplicity = 1
1536 dft_control%multiplicity = 2
1540 multiplicity = dft_control%multiplicity
1542 IF ((dft_control%nspins < 1) .OR. (dft_control%nspins > 2))
THEN
1543 cpabort(
"nspins should be 1 or 2 for the time being ...")
1546 IF ((
modulo(nelectron, 2) /= 0) .AND. (dft_control%nspins == 1))
THEN
1547 IF (.NOT. dft_control%qs_control%ofgpw .AND. .NOT. dft_control%smear)
THEN
1548 cpabort(
"Use the LSD option for an odd number of electrons")
1553 IF (dft_control%do_xas_calculation)
THEN
1554 IF (dft_control%nspins == 1)
THEN
1555 cpabort(
"Use the LSD option for XAS with transition potential")
1566 IF (dft_control%qs_control%ofgpw)
THEN
1568 IF (dft_control%nspins == 1)
THEN
1570 nelectron_spin(1) = nelectron
1571 nelectron_spin(2) = 0
1575 IF (
modulo(nelectron + multiplicity - 1, 2) /= 0)
THEN
1576 cpabort(
"LSD: try to use a different multiplicity")
1578 nelectron_spin(1) = (nelectron + multiplicity - 1)/2
1579 nelectron_spin(2) = (nelectron - multiplicity + 1)/2
1580 IF (nelectron_spin(1) < 0)
THEN
1581 cpabort(
"LSD: too few electrons for this multiplicity")
1583 maxocc = maxval(nelectron_spin)
1584 n_mo(1) = min(nelectron_spin(1), 1)
1585 n_mo(2) = min(nelectron_spin(2), 1)
1590 IF (dft_control%nspins == 1)
THEN
1592 nelectron_spin(1) = nelectron
1593 nelectron_spin(2) = 0
1594 IF (
modulo(nelectron, 2) == 0)
THEN
1595 n_mo(1) = nelectron/2
1597 n_mo(1) = int(nelectron/2._dp) + 1
1605 IF (
modulo(nelectron + multiplicity - 1, 2) /= 0)
THEN
1606 cpabort(
"LSD: try to use a different multiplicity")
1609 nelectron_spin(1) = (nelectron + multiplicity - 1)/2
1610 nelectron_spin(2) = (nelectron - multiplicity + 1)/2
1612 IF (nelectron_spin(2) < 0)
THEN
1613 cpabort(
"LSD: too few electrons for this multiplicity")
1616 n_mo(1) = nelectron_spin(1)
1617 n_mo(2) = nelectron_spin(2)
1626 qs_env%total_zeff_corr = total_zeff_corr
1630 nelectron_total=nelectron, &
1631 nelectron_spin=nelectron_spin)
1634 IF (dft_control%nspins == 2)
THEN
1635 IF (scf_control%added_mos(2) < 0)
THEN
1636 n_mo_add = n_ao - n_mo(2)
1637 ELSEIF (scf_control%added_mos(2) > 0)
THEN
1638 n_mo_add = scf_control%added_mos(2)
1640 n_mo_add = scf_control%added_mos(1)
1642 IF (n_mo_add > n_ao - n_mo(2))
THEN
1643 cpwarn(
"More ADDED_MOs requested for beta spin than available.")
1645 scf_control%added_mos(2) = min(n_mo_add, n_ao - n_mo(2))
1646 n_mo(2) = n_mo(2) + scf_control%added_mos(2)
1657 IF (scf_control%added_mos(1) < 0)
THEN
1658 scf_control%added_mos(1) = n_ao - n_mo(1)
1659 ELSEIF (scf_control%added_mos(1) > n_ao - n_mo(1))
THEN
1660 CALL cp_warn(__location__, &
1661 "More added MOs requested than available. "// &
1662 "The full set of unoccupied MOs will be used. "// &
1663 "Use 'ADDED_MOS -1' to always use all available MOs "// &
1664 "and to get rid of this warning.")
1666 scf_control%added_mos(1) = min(scf_control%added_mos(1), n_ao - n_mo(1))
1667 n_mo(1) = n_mo(1) + scf_control%added_mos(1)
1669 IF (dft_control%nspins == 2)
THEN
1670 IF (n_mo(2) > n_mo(1)) &
1671 CALL cp_warn(__location__, &
1672 "More beta than alpha MOs requested. "// &
1673 "The number of beta MOs will be reduced to the number alpha MOs.")
1674 n_mo(2) = min(n_mo(1), n_mo(2))
1675 cpassert(n_mo(1) >= nelectron_spin(1))
1676 cpassert(n_mo(2) >= nelectron_spin(2))
1680 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
1681 IF (do_kpoints .AND. dft_control%nspins == 2)
THEN
1683 IF (n_mo(2) /= n_mo(1)) &
1684 CALL cp_warn(__location__, &
1685 "Kpoints: Different number of MOs requested. "// &
1686 "The number of beta MOs will be set to the number alpha MOs.")
1688 cpassert(n_mo(1) >= nelectron_spin(1))
1689 cpassert(n_mo(2) >= nelectron_spin(2))
1693 IF (scf_control%smear%do_smear)
THEN
1694 IF (scf_control%added_mos(1) == 0)
THEN
1695 cpabort(
"Extra MOs (ADDED_MOS) are required for smearing")
1701 "PRINT%MO/CARTESIAN"), &
1703 (scf_control%level_shift /= 0.0_dp) .OR. &
1704 (scf_control%diagonalization%eps_jacobi /= 0.0_dp) .OR. &
1705 (dft_control%roks .AND. (.NOT. scf_control%use_ot)))
THEN
1710 IF (dft_control%roks .AND. (.NOT. scf_control%use_ot))
THEN
1712 cpwarn(
"General ROKS scheme is not yet tested!")
1714 IF (scf_control%smear%do_smear)
THEN
1715 CALL cp_abort(__location__, &
1716 "The options ROKS and SMEAR are not compatible. "// &
1717 "Try UKS instead of ROKS")
1720 IF (dft_control%low_spin_roks)
THEN
1721 SELECT CASE (dft_control%qs_control%method_id)
1724 CALL cp_abort(__location__, &
1725 "xTB/DFTB methods are not compatible with low spin ROKS.")
1728 CALL cp_abort(__location__, &
1729 "SE methods are not compatible with low spin ROKS.")
1737 IF (dft_control%restricted .AND. (output_unit > 0))
THEN
1739 WRITE (output_unit, *)
""
1740 WRITE (output_unit, *)
" **************************************"
1741 WRITE (output_unit, *)
" restricted calculation cutting corners"
1742 WRITE (output_unit, *)
" experimental feature, check code "
1743 WRITE (output_unit, *)
" **************************************"
1747 IF (dft_control%qs_control%do_ls_scf)
THEN
1750 ALLOCATE (mos(dft_control%nspins))
1751 DO ispin = 1, dft_control%nspins
1755 nelectron=nelectron_spin(ispin), &
1756 n_el_f=real(nelectron_spin(ispin),
dp), &
1758 flexible_electron_count=dft_control%relax_multiplicity)
1765 IF (dft_control%switch_surf_dip)
THEN
1766 ALLOCATE (mos_last_converged(dft_control%nspins))
1767 DO ispin = 1, dft_control%nspins
1771 nelectron=nelectron_spin(ispin), &
1772 n_el_f=real(nelectron_spin(ispin),
dp), &
1774 flexible_electron_count=dft_control%relax_multiplicity)
1776 CALL set_qs_env(qs_env, mos_last_converged=mos_last_converged)
1779 IF (.NOT. be_silent)
THEN
1784 IF (dft_control%qs_control%method_id ==
do_method_gpw .OR. &
1791 (.NOT. dft_control%qs_control%xtb_control%do_tblite)) .OR. &
1793 CALL get_qs_env(qs_env, dispersion_env=dispersion_env)
1801 IF (dft_control%do_admm)
THEN
1806 IF (dft_control%do_xas_calculation)
THEN
1821 CALL write_total_numbers(qs_kind_set, particle_set, qs_env%input)
1836 IF ((.NOT. dft_control%qs_control%do_ls_scf) .AND. &
1837 (.NOT. dft_control%qs_control%do_almo_scf))
THEN
1847 CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, rho0_mpole=rho0_mpole)
1851 IF (output_unit > 0)
CALL m_flush(output_unit)
1852 CALL timestop(handle)
1854 END SUBROUTINE qs_init_subsys
1864 SUBROUTINE write_total_numbers(qs_kind_set, particle_set, force_env_section)
1866 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
1867 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
1868 TYPE(section_vals_type),
POINTER :: force_env_section
1870 INTEGER :: maxlgto, maxlppl, maxlppnl, natom, ncgf, &
1871 nkind, npgf, nset, nsgf, nshell, &
1873 TYPE(cp_logger_type),
POINTER :: logger
1876 logger => cp_get_default_logger()
1877 output_unit = cp_print_key_unit_nr(logger, force_env_section,
"PRINT%TOTAL_NUMBERS", &
1880 IF (output_unit > 0)
THEN
1881 natom =
SIZE(particle_set)
1882 nkind =
SIZE(qs_kind_set)
1884 CALL get_qs_kind_set(qs_kind_set, &
1894 WRITE (unit=output_unit, fmt=
"(/,/,T2,A)") &
1895 "TOTAL NUMBERS AND MAXIMUM NUMBERS"
1897 IF (nset + npgf + ncgf > 0)
THEN
1898 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T71,I10))") &
1899 "Total number of", &
1900 "- Atomic kinds: ", nkind, &
1901 "- Atoms: ", natom, &
1902 "- Shell sets: ", nset, &
1903 "- Shells: ", nshell, &
1904 "- Primitive Cartesian functions: ", npgf, &
1905 "- Cartesian basis functions: ", ncgf, &
1906 "- Spherical basis functions: ", nsgf
1907 ELSE IF (nshell + nsgf > 0)
THEN
1908 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T71,I10))") &
1909 "Total number of", &
1910 "- Atomic kinds: ", nkind, &
1911 "- Atoms: ", natom, &
1912 "- Shells: ", nshell, &
1913 "- Spherical basis functions: ", nsgf
1915 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T71,I10))") &
1916 "Total number of", &
1917 "- Atomic kinds: ", nkind, &
1921 IF ((maxlppl > -1) .AND. (maxlppnl > -1))
THEN
1922 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T75,I6))") &
1923 "Maximum angular momentum of the", &
1924 "- Orbital basis functions: ", maxlgto, &
1925 "- Local part of the GTH pseudopotential: ", maxlppl, &
1926 "- Non-local part of the GTH pseudopotential: ", maxlppnl
1927 ELSEIF (maxlppl > -1)
THEN
1928 WRITE (unit=output_unit, fmt=
"(/,T3,A,(T30,A,T75,I6))") &
1929 "Maximum angular momentum of the", &
1930 "- Orbital basis functions: ", maxlgto, &
1931 "- Local part of the GTH pseudopotential: ", maxlppl
1933 WRITE (unit=output_unit, fmt=
"(/,T3,A,T75,I6)") &
1934 "Maximum angular momentum of the orbital basis functions: ", maxlgto
1938 CALL get_qs_kind_set(qs_kind_set, &
1945 basis_type=
"LRI_AUX")
1946 IF (nset + npgf + ncgf > 0)
THEN
1947 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
1948 "LRI_AUX Basis: ", &
1949 "Total number of", &
1950 "- Shell sets: ", nset, &
1951 "- Shells: ", nshell, &
1952 "- Primitive Cartesian functions: ", npgf, &
1953 "- Cartesian basis functions: ", ncgf, &
1954 "- Spherical basis functions: ", nsgf
1955 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
1956 " Maximum angular momentum ", maxlgto
1960 CALL get_qs_kind_set(qs_kind_set, &
1967 basis_type=
"RI_HXC")
1968 IF (nset + npgf + ncgf > 0)
THEN
1969 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
1971 "Total number of", &
1972 "- Shell sets: ", nset, &
1973 "- Shells: ", nshell, &
1974 "- Primitive Cartesian functions: ", npgf, &
1975 "- Cartesian basis functions: ", ncgf, &
1976 "- Spherical basis functions: ", nsgf
1977 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
1978 " Maximum angular momentum ", maxlgto
1982 CALL get_qs_kind_set(qs_kind_set, &
1989 basis_type=
"AUX_FIT")
1990 IF (nset + npgf + ncgf > 0)
THEN
1991 WRITE (unit=output_unit, fmt=
"(/,T3,A,/,T3,A,(T30,A,T71,I10))") &
1992 "AUX_FIT ADMM-Basis: ", &
1993 "Total number of", &
1994 "- Shell sets: ", nset, &
1995 "- Shells: ", nshell, &
1996 "- Primitive Cartesian functions: ", npgf, &
1997 "- Cartesian basis functions: ", ncgf, &
1998 "- Spherical basis functions: ", nsgf
1999 WRITE (unit=output_unit, fmt=
"(T30,A,T75,I6)") &
2000 " Maximum angular momentum ", maxlgto
2004 CALL cp_print_key_finished_output(output_unit, logger, force_env_section, &
2005 "PRINT%TOTAL_NUMBERS")
2007 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, 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, do_rixs, tb_tblite)
Get the QUICKSTEP environment.
subroutine, public set_qs_env(qs_env, super_cell, mos, qmmm, qmmm_periodic, ewald_env, ewald_pw, mpools, rho_external, external_vxc, mask, scf_control, rel_control, qs_charges, ks_env, ks_qmmm_env, wf_history, scf_env, active_space, input, oce, rho_atom_set, rho0_atom_set, rho0_mpole, run_rtp, rtp, rhoz_set, rhoz_tot, ecoul_1c, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, efield, linres_control, xas_env, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, ls_scf_env, do_transport, transport_env, lri_env, lri_density, exstate_env, ec_env, dispersion_env, 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, 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_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.