85#include "./base/base_uses.f90"
91 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'cp_control_utils'
113 CHARACTER(len=default_path_length) :: basis_set_file_name, &
114 intensities_file_name, &
116 CHARACTER(LEN=default_string_length), &
117 DIMENSION(:),
POINTER :: tmpstringlist
118 INTEGER :: admmtype, irep, isize, method_id, nrep, &
120 LOGICAL :: at_end, do_hfx, do_ot, do_rpa_admm, do_rtp, exopt1, exopt2, exopt3, explicit, &
121 is_present, l_param, local_moment_possible, not_se, was_present
122 REAL(kind=
dp) :: density_cut, gradient_cut, tau_cut
123 REAL(kind=
dp),
DIMENSION(:),
POINTER :: pol
126 TYPE(
section_vals_type),
POINTER :: hairy_probes_section, hfx_section, maxwell_section, &
127 sccs_section, scf_section, tmp_section, xc_fun_section, xc_section
129 was_present = .false.
133 NULLIFY (tmp_section, xc_fun_section, xc_section)
134 ALLOCATE (dft_control)
140 SELECT CASE (method_id)
148 IF (.NOT. is_present .AND. not_se)
THEN
149 cpabort(
"XC section missing.")
156 IF (density_cut <= epsilon(0.0_dp)*100.0_dp) &
157 CALL cp_warn(__location__, &
158 "DENSITY_CUTOFF lower than 100*EPSILON, where EPSILON is the machine precision. "// &
159 "This may lead to numerical problems. Setting up shake_tol to 100*EPSILON! ")
160 density_cut = max(epsilon(0.0_dp)*100.0_dp, density_cut)
161 IF (gradient_cut <= epsilon(0.0_dp)*100.0_dp) &
162 CALL cp_warn(__location__, &
163 "GRADIENT_CUTOFF lower than 100*EPSILON, where EPSILON is the machine precision. "// &
164 "This may lead to numerical problems. Setting up shake_tol to 100*EPSILON! ")
165 gradient_cut = max(epsilon(0.0_dp)*100.0_dp, gradient_cut)
166 IF (tau_cut <= epsilon(0.0_dp)*100.0_dp) &
167 CALL cp_warn(__location__, &
168 "TAU_CUTOFF lower than 100*EPSILON, where EPSILON is the machine precision. "// &
169 "This may lead to numerical problems. Setting up shake_tol to 100*EPSILON! ")
170 tau_cut = max(epsilon(0.0_dp)*100.0_dp, tau_cut)
177 IF (.NOT. is_present .AND. not_se)
THEN
178 cpabort(
"XC_FUNCTIONAL section missing.")
183 IF (dft_control%uks .OR. dft_control%roks)
THEN
184 dft_control%nspins = 2
186 dft_control%nspins = 1
189 dft_control%lsd = (dft_control%nspins > 1)
193 dft_control%drho_by_collocation = (
xc_uses_norm_drho(xc_fun_section, dft_control%lsd) &
195 IF (dft_control%drho_by_collocation)
THEN
196 cpabort(
"derivatives by collocation not implemented")
203 IF (
SIZE(tmpstringlist) == 2)
THEN
205 SELECT CASE (tmpstringlist(2))
217 cpwarn(
"Unknown basis size in AUTO_BASIS keyword:"//trim(tmpstringlist(1)))
220 SELECT CASE (tmpstringlist(1))
223 dft_control%auto_basis_ri_aux = isize
225 dft_control%auto_basis_aux_fit = isize
227 dft_control%auto_basis_lri_aux = isize
229 dft_control%auto_basis_p_lri_aux = isize
231 dft_control%auto_basis_ri_hxc = isize
233 dft_control%auto_basis_ri_xas = isize
235 dft_control%auto_basis_ri_hfx = isize
237 cpwarn(
"Unknown basis type in AUTO_BASIS keyword:"//trim(tmpstringlist(1)))
240 CALL cp_abort(__location__, &
241 "AUTO_BASIS keyword in &DFT section has a wrong number of arguments.")
252 is_present = is_present .AND. (do_hfx .OR. do_rpa_admm)
254 dft_control%do_admm = is_present
255 dft_control%do_admm_mo = .false.
256 dft_control%do_admm_dm = .false.
262 CALL section_vals_val_get(dft_section,
"AUXILIARY_DENSITY_MATRIX_METHOD%ADMM_TYPE", i_val=admmtype)
263 CALL section_vals_val_get(dft_section,
"AUXILIARY_DENSITY_MATRIX_METHOD%ADMM_PURIFICATION_METHOD", explicit=exopt1)
264 CALL section_vals_val_get(dft_section,
"AUXILIARY_DENSITY_MATRIX_METHOD%METHOD", explicit=exopt2)
265 CALL section_vals_val_get(dft_section,
"AUXILIARY_DENSITY_MATRIX_METHOD%EXCH_SCALING_MODEL", explicit=exopt3)
266 dft_control%admm_control%admm_type = admmtype
267 SELECT CASE (admmtype)
269 CALL section_vals_val_get(dft_section,
"AUXILIARY_DENSITY_MATRIX_METHOD%ADMM_PURIFICATION_METHOD", i_val=method_id)
270 dft_control%admm_control%purification_method = method_id
271 CALL section_vals_val_get(dft_section,
"AUXILIARY_DENSITY_MATRIX_METHOD%METHOD", i_val=method_id)
272 dft_control%admm_control%method = method_id
273 CALL section_vals_val_get(dft_section,
"AUXILIARY_DENSITY_MATRIX_METHOD%EXCH_SCALING_MODEL", i_val=method_id)
274 dft_control%admm_control%scaling_model = method_id
279 CALL section_vals_val_get(dft_section,
"AUXILIARY_DENSITY_MATRIX_METHOD%ADMM_PURIFICATION_METHOD", i_val=method_id)
280 dft_control%admm_control%purification_method = method_id
312 CALL cp_abort(__location__, &
313 "ADMM_TYPE keyword in &AUXILIARY_DENSITY_MATRIX_METHOD section has a wrong value.")
317 r_val=dft_control%admm_control%eps_filter)
319 CALL section_vals_val_get(dft_section,
"AUXILIARY_DENSITY_MATRIX_METHOD%EXCH_CORRECTION_FUNC", i_val=method_id)
320 dft_control%admm_control%aux_exch_func = method_id
323 dft_control%admm_control%aux_exch_func_param = .false.
324 CALL section_vals_val_get(dft_section,
"AUXILIARY_DENSITY_MATRIX_METHOD%OPTX_A1", explicit=explicit, &
325 r_val=dft_control%admm_control%aux_x_param(1))
326 IF (explicit) dft_control%admm_control%aux_exch_func_param = .true.
327 CALL section_vals_val_get(dft_section,
"AUXILIARY_DENSITY_MATRIX_METHOD%OPTX_A2", explicit=explicit, &
328 r_val=dft_control%admm_control%aux_x_param(2))
329 IF (explicit) dft_control%admm_control%aux_exch_func_param = .true.
330 CALL section_vals_val_get(dft_section,
"AUXILIARY_DENSITY_MATRIX_METHOD%OPTX_GAMMA", explicit=explicit, &
331 r_val=dft_control%admm_control%aux_x_param(3))
332 IF (explicit) dft_control%admm_control%aux_exch_func_param = .true.
334 CALL read_admm_block_list(dft_control%admm_control, dft_section)
337 SELECT CASE (admmtype)
339 IF (exopt2)
CALL cp_warn(__location__, &
340 "Value of ADMM_PURIFICATION_METHOD keyword will be overwritten with ADMM_TYPE selections.")
341 IF (exopt3)
CALL cp_warn(__location__, &
342 "Value of EXCH_SCALING_MODEL keyword will be overwritten with ADMM_TYPE selections.")
344 IF (exopt1)
CALL cp_warn(__location__, &
345 "Value of METHOD keyword will be overwritten with ADMM_TYPE selections.")
346 IF (exopt2)
CALL cp_warn(__location__, &
347 "Value of METHOD keyword will be overwritten with ADMM_TYPE selections.")
348 IF (exopt3)
CALL cp_warn(__location__, &
349 "Value of EXCH_SCALING_MODEL keyword will be overwritten with ADMM_TYPE selections.")
358 cpabort(
"ADMM: Blocking and Merlot scaling are mutually exclusive.")
363 CALL cp_abort(__location__, &
364 "ADMM: In the case of METHOD=CHARGE_CONSTRAINED_PROJECTION, "// &
365 "ADMM_PURIFICATION_METHOD=NONE has to be set.")
371 cpabort(
"ADMM: Chosen purification requires BASIS_PROJECTION")
373 IF (.NOT. do_ot) cpabort(
"ADMM: MO-based purification requires OT.")
378 dft_control%do_admm_dm = .true.
380 dft_control%do_admm_mo = .true.
388 dft_control%restricted = (dft_control%roks .AND. l_param)
392 CALL section_vals_val_get(dft_section,
"RELAX_MULTIPLICITY", r_val=dft_control%relax_multiplicity)
393 IF (dft_control%relax_multiplicity > 0.0_dp)
THEN
394 IF (.NOT. dft_control%uks) &
395 CALL cp_abort(__location__,
"The option RELAX_MULTIPLICITY is only valid for "// &
396 "unrestricted Kohn-Sham (UKS) calculations")
401 CALL section_vals_get(hairy_probes_section, n_repetition=nrep, explicit=is_present)
404 dft_control%hairy_probes = .true.
405 ALLOCATE (dft_control%probe(nrep))
406 CALL read_hairy_probes_sections(dft_control, hairy_probes_section)
413 dft_control%sic_method_id =
sic_none
414 dft_control%sic_scaling_a = 1.0_dp
415 dft_control%sic_scaling_b = 1.0_dp
418 dft_control%dft_plus_u = .false.
420 dft_control%plus_u_method_id = method_id
423 dft_control%smear = .false.
426 dft_control%correct_surf_dip = .false.
427 CALL section_vals_val_get(dft_section,
"SURFACE_DIPOLE_CORRECTION", l_val=dft_control%correct_surf_dip)
429 dft_control%pos_dir_surf_dip = -1.0_dp
433 dft_control%switch_surf_dip = .false.
434 dft_control%surf_dip_correct_switch = dft_control%correct_surf_dip
436 dft_control%correct_el_density_dip = .false.
437 CALL section_vals_val_get(dft_section,
"CORE_CORR_DIP", l_val=dft_control%correct_el_density_dip)
438 IF (dft_control%correct_el_density_dip)
THEN
439 IF (dft_control%correct_surf_dip)
THEN
442 dft_control%correct_el_density_dip = .false.
443 cpwarn(
"CORE_CORR_DIP keyword is activated only if SURFACE_DIPOLE_CORRECTION is TRUE")
448 c_val=basis_set_file_name)
450 c_val=potential_file_name)
455 i_val=dft_control%sic_method_id)
457 i_val=dft_control%sic_list_id)
459 r_val=dft_control%sic_scaling_a)
461 r_val=dft_control%sic_scaling_b)
467 CALL read_rtp_section(dft_control, tmp_section)
474 IF (dft_control%do_xas_calculation)
THEN
477 l_val=dft_control%do_xas_calculation)
481 CALL section_vals_get(tmp_section, explicit=dft_control%do_xas_tdp_calculation)
482 IF (dft_control%do_xas_tdp_calculation)
THEN
485 l_val=dft_control%do_xas_tdp_calculation)
489 dft_control%apply_efield = .false.
490 dft_control%apply_efield_field = .false.
491 dft_control%apply_vector_potential = .false.
495 ALLOCATE (dft_control%efield_fields(nrep))
496 CALL read_efield_sections(dft_control, tmp_section)
498 IF (.NOT. dft_control%rtp_control%velocity_gauge)
THEN
499 dft_control%apply_efield_field = .true.
501 dft_control%apply_vector_potential = .true.
503 dft_control%rtp_control%vec_pot = dft_control%efield_fields(1)%efield%vec_pot_initial
506 dft_control%apply_efield = .true.
515 local_moment_possible = (dft_control%rtp_control%rtp_method ==
rtp_method_bse) .OR. &
516 ((.NOT. dft_control%rtp_control%periodic) .AND. dft_control%rtp_control%linear_scaling)
517 IF (local_moment_possible .AND. (.NOT.
ASSOCIATED(dft_control%rtp_control%print_pol_elements)))
THEN
519 CALL guess_pol_elements(dft_control, &
520 dft_control%rtp_control%print_pol_elements)
526 CALL section_vals_get(tmp_section, explicit=dft_control%apply_period_efield)
527 IF (dft_control%apply_period_efield)
THEN
528 ALLOCATE (dft_control%period_efield)
530 dft_control%period_efield%polarisation(1:3) = pol(1:3)
532 dft_control%period_efield%d_filter(1:3) = pol(1:3)
534 r_val=dft_control%period_efield%strength)
535 dft_control%period_efield%displacement_field = .false.
537 l_val=dft_control%period_efield%displacement_field)
543 IF (
SIZE(pol) > 1 .OR. pol(1) /= 0.0_dp)
THEN
545 IF (dft_control%period_efield%strength /= 0.0_dp .OR. intensities_file_name /=
"")
THEN
546 CALL cp_abort(__location__,
"[PERIODIC FIELD] Only one of INTENSITY, INTENSITY_LIST "// &
547 "or INTENSITIES_FILE_NAME can be specified.")
550 ALLOCATE (dft_control%period_efield%strength_list(
SIZE(pol)))
551 dft_control%period_efield%strength_list(1:
SIZE(pol)) = pol(1:
SIZE(pol))
554 IF (intensities_file_name /=
"")
THEN
556 IF (dft_control%period_efield%strength /= 0.0_dp)
THEN
557 CALL cp_abort(__location__,
"[PERIODIC FIELD] Only one of INTENSITY, INTENSITY_LIST "// &
558 "or INTENSITIES_FILE_NAME can be specified.")
571 cpabort(
"[PERIODIC FIELD] No intensities found in INTENSITIES_FILE_NAME")
574 ALLOCATE (dft_control%period_efield%strength_list(nrep))
579 READ (parser%input_line, *) dft_control%period_efield%strength_list(irep)
586 i_val=dft_control%period_efield%start_frame)
588 i_val=dft_control%period_efield%end_frame)
590 IF (dft_control%period_efield%end_frame /= -1)
THEN
594 IF (dft_control%period_efield%start_frame > dft_control%period_efield%end_frame)
THEN
595 cpabort(
"[PERIODIC FIELD] START_FRAME > END_FRAME")
596 ELSE IF (dft_control%period_efield%start_frame < 1)
THEN
597 cpabort(
"[PERIODIC FIELD] START_FRAME < 1")
598 ELSE IF (mod(dft_control%period_efield%end_frame - &
599 dft_control%period_efield%start_frame + 1,
SIZE(pol)) /= 0)
THEN
600 CALL cp_abort(__location__, &
601 "[PERIODIC FIELD] Number of active frames must be a multiple of the number of intensities")
606 cpassert(.NOT. do_rtp)
607 IF (dft_control%period_efield%displacement_field)
THEN
617 CALL section_vals_get(tmp_section, explicit=dft_control%apply_external_potential)
618 IF (dft_control%apply_external_potential)
THEN
621 l_val=dft_control%expot_control%read_from_cube)
623 l_val=dft_control%expot_control%static)
625 r_val=dft_control%expot_control%scaling_factor)
630 dft_control%expot_control%maxwell_solver = .true.
634 r_val=dft_control%maxwell_control%real_test)
636 i_val=dft_control%maxwell_control%int_test)
638 l_val=dft_control%maxwell_control%log_test)
640 dft_control%expot_control%maxwell_solver = .false.
650 l_val=dft_control%do_sccs)
651 IF (dft_control%do_sccs)
THEN
652 ALLOCATE (dft_control%sccs_control)
654 r_val=dft_control%sccs_control%epsilon_solvent)
656 r_val=dft_control%sccs_control%alpha_solvent)
658 r_val=dft_control%sccs_control%beta_solvent)
660 r_val=dft_control%sccs_control%delta_rho)
662 i_val=dft_control%sccs_control%derivative_method)
664 i_val=dft_control%sccs_control%method_id)
666 r_val=dft_control%sccs_control%eps_sccs)
668 r_val=dft_control%sccs_control%eps_scf)
670 r_val=dft_control%sccs_control%gamma_solvent)
672 i_val=dft_control%sccs_control%max_iter)
674 r_val=dft_control%sccs_control%mixing)
675 SELECT CASE (dft_control%sccs_control%method_id)
679 r_val=dft_control%sccs_control%rho_max)
681 r_val=dft_control%sccs_control%rho_min)
682 IF (dft_control%sccs_control%rho_max < dft_control%sccs_control%rho_min)
THEN
683 CALL cp_abort(__location__, &
684 "The SCCS parameter RHO_MAX is smaller than RHO_MIN. "// &
685 "Please, check your input!")
691 r_val=dft_control%sccs_control%beta)
692 IF (dft_control%sccs_control%beta < 0.5_dp)
THEN
693 CALL cp_abort(__location__, &
694 "A value smaller than 0.5 for the SCCS parameter beta "// &
695 "causes numerical problems. Please, check your input!")
698 r_val=dft_control%sccs_control%rho_zero)
701 cpabort(
"Invalid SCCS model specified. Please, check your input!")
710 CALL section_vals_get(tmp_section, explicit=dft_control%apply_external_density)
758 CHARACTER(len=*),
PARAMETER :: routinen =
'read_mgrid_section'
760 INTEGER :: handle, igrid_level, ngrid_level
761 LOGICAL :: explicit, multigrid_set
763 REAL(
dp),
DIMENSION(:),
POINTER :: cutofflist
766 CALL timeset(routinen, handle)
768 NULLIFY (mgrid_section, cutofflist)
774 CALL section_vals_val_get(mgrid_section,
"PROGRESSION_FACTOR", r_val=qs_control%progression_factor)
779 l_val=qs_control%skip_load_balance_distributed)
782 IF (qs_control%semi_empirical .OR. qs_control%dftb .OR. qs_control%xtb)
THEN
784 multigrid_set = .false.
787 IF (.NOT. explicit) cutoff = 1.0_dp
790 ALLOCATE (qs_control%e_cutoff(ngrid_level))
791 qs_control%cutoff = cutoff
793 IF (multigrid_set)
THEN
795 IF (qs_control%commensurate_mgrids)
THEN
796 cpabort(
"Do not specify cutoffs for the commensurate grids (NYI)")
800 IF (
ASSOCIATED(cutofflist))
THEN
801 IF (
SIZE(cutofflist, 1) /= ngrid_level)
THEN
802 cpabort(
"Number of multi-grids requested and number of cutoff values do not match")
804 DO igrid_level = 1, ngrid_level
805 qs_control%e_cutoff(igrid_level) = cutofflist(igrid_level)
809 DO igrid_level = ngrid_level, 1, -1
810 IF (qs_control%cutoff <= qs_control%e_cutoff(igrid_level))
THEN
811 qs_control%cutoff = qs_control%e_cutoff(igrid_level)
815 IF (igrid_level == 1)
THEN
816 qs_control%cutoff = qs_control%e_cutoff(1)
820 IF (qs_control%commensurate_mgrids) qs_control%progression_factor = 4.0_dp
821 qs_control%e_cutoff(1) = qs_control%cutoff
822 DO igrid_level = 2, ngrid_level
823 qs_control%e_cutoff(igrid_level) = qs_control%e_cutoff(igrid_level - 1)/ &
824 qs_control%progression_factor
828 DO igrid_level = 2, ngrid_level
829 IF (qs_control%e_cutoff(igrid_level) > qs_control%e_cutoff(igrid_level - 1))
THEN
830 cpabort(
"The cutoff values for the multi-grids are not ordered from large to small")
831 ELSE IF (qs_control%e_cutoff(igrid_level) == qs_control%e_cutoff(igrid_level - 1))
THEN
832 cpabort(
"The same cutoff value was specified for two multi-grids")
835 CALL timestop(handle)
848 CHARACTER(len=*),
PARAMETER :: routinen =
'read_qs_section'
850 CHARACTER(LEN=default_string_length) :: cval
851 CHARACTER(LEN=default_string_length), &
852 DIMENSION(:),
POINTER :: clist
853 INTEGER :: handle, itmp, j, jj, k, n_rep, n_var, &
855 INTEGER,
DIMENSION(:),
POINTER :: tmplist
856 LOGICAL :: explicit, was_present
857 REAL(
dp) :: tmp, tmpsqrt, value
858 REAL(
dp),
POINTER :: scal(:)
859 TYPE(
section_vals_type),
POINTER :: cdft_control_section, ddapc_restraint_section, &
860 dftb_parameter, dftb_section, eeq_section, genpot_section, lri_optbas_section, &
861 mull_section, nonbonded_section, s2_restraint_section, se_section, xtb_parameter, &
862 xtb_section, xtb_tblite
864 CALL timeset(routinen, handle)
866 was_present = .false.
867 NULLIFY (mull_section, ddapc_restraint_section, s2_restraint_section, &
868 se_section, dftb_section, xtb_section, dftb_parameter, xtb_parameter, lri_optbas_section, &
869 cdft_control_section, genpot_section, eeq_section)
889 tmpsqrt = sqrt(
value)
892 qs_control%eps_core_charge =
value/100.0_dp
895 qs_control%eps_pgf_orb = tmpsqrt
896 qs_control%eps_kg_orb = qs_control%eps_pgf_orb
898 qs_control%eps_ppnl = qs_control%eps_pgf_orb/100.0_dp
900 qs_control%eps_ppl = 1.0e-2_dp
902 qs_control%gapw_control%eps_cpc =
value
904 qs_control%eps_rho_gspace =
value
905 qs_control%eps_rho_rspace =
value
907 qs_control%eps_gvg_rspace = tmpsqrt
924 qs_control%eps_kg_orb = sqrt(tmp)
937 qs_control%eps_rho_rspace = qs_control%eps_rho_gspace
961 qs_control%gapw_control%alpha0_hard_from_input = .false.
962 IF (qs_control%gapw_control%alpha0_hard /= 0.0_dp) qs_control%gapw_control%alpha0_hard_from_input = .true.
964 CALL section_vals_val_get(qs_section,
"MAX_RAD_LOCAL", r_val=qs_control%gapw_control%max_rad_local)
974 CALL section_vals_val_get(qs_section,
"CLUSTER_EMBED_SUBSYS", l_val=qs_control%cluster_embed_subsys)
975 CALL section_vals_val_get(qs_section,
"HIGH_LEVEL_EMBED_SUBSYS", l_val=qs_control%high_level_embed_subsys)
986 IF (qs_control%gapw_control%basis_1c /=
gapw_1c_orb)
THEN
987 qs_control%gapw_control%eps_svd = max(qs_control%gapw_control%eps_svd, 1.e-12_dp)
990 CALL section_vals_val_get(qs_section,
"GAPW_ACCURATE_XCINT", l_val=qs_control%gapw_control%accurate_xcint)
997 qs_control%pw_grid_opt%spherical = .true.
998 qs_control%pw_grid_opt%fullspace = .false.
1000 qs_control%pw_grid_opt%spherical = .false.
1001 qs_control%pw_grid_opt%fullspace = .true.
1003 qs_control%pw_grid_opt%spherical = .false.
1004 qs_control%pw_grid_opt%fullspace = .false.
1009 qs_control%do_ppl_method = itmp
1012 qs_control%pw_grid_opt%distribution_layout = tmplist
1016 CALL section_vals_val_get(qs_section,
"EXTRAPOLATION", i_val=qs_control%wf_interpolation_method_nr)
1017 CALL section_vals_val_get(qs_section,
"EXTRAPOLATION_ORDER", i_val=qs_control%wf_extrapolation_order)
1021 qs_control%gapw = .false.
1022 qs_control%gapw_xc = .false.
1023 qs_control%gpw = .false.
1024 qs_control%pao = .false.
1025 qs_control%dftb = .false.
1026 qs_control%xtb = .false.
1027 qs_control%semi_empirical = .false.
1028 qs_control%ofgpw = .false.
1029 qs_control%lrigpw = .false.
1030 qs_control%rigpw = .false.
1031 SELECT CASE (qs_control%method_id)
1035 qs_control%gapw = .true.
1037 qs_control%gapw_xc = .true.
1041 qs_control%gpw = .true.
1043 qs_control%ofgpw = .true.
1045 qs_control%lrigpw = .true.
1047 qs_control%rigpw = .true.
1049 qs_control%dftb = .true.
1053 qs_control%xtb = .true.
1058 qs_control%semi_empirical = .true.
1061 qs_control%semi_empirical = .true.
1064 qs_control%semi_empirical = .true.
1067 qs_control%semi_empirical = .true.
1070 qs_control%semi_empirical = .true.
1073 qs_control%semi_empirical = .true.
1076 qs_control%semi_empirical = .true.
1079 qs_control%semi_empirical = .true.
1083 qs_control%semi_empirical = .true.
1086 CALL section_vals_get(mull_section, explicit=qs_control%mulliken_restraint)
1088 IF (qs_control%mulliken_restraint)
THEN
1089 CALL section_vals_val_get(mull_section,
"STRENGTH", r_val=qs_control%mulliken_restraint_control%strength)
1090 CALL section_vals_val_get(mull_section,
"TARGET", r_val=qs_control%mulliken_restraint_control%target)
1095 jj = jj +
SIZE(tmplist)
1097 qs_control%mulliken_restraint_control%natoms = jj
1098 IF (qs_control%mulliken_restraint_control%natoms < 1) &
1099 cpabort(
"Need at least 1 atom to use mulliken constraints")
1100 ALLOCATE (qs_control%mulliken_restraint_control%atoms(qs_control%mulliken_restraint_control%natoms))
1104 DO j = 1,
SIZE(tmplist)
1106 qs_control%mulliken_restraint_control%atoms(jj) = tmplist(j)
1110 CALL section_vals_get(ddapc_restraint_section, n_repetition=nrep, explicit=qs_control%ddapc_restraint)
1111 IF (qs_control%ddapc_restraint)
THEN
1112 ALLOCATE (qs_control%ddapc_restraint_control(nrep))
1114 qs_control%ddapc_restraint_is_spin = .false.
1115 qs_control%ddapc_explicit_potential = .false.
1118 CALL section_vals_get(s2_restraint_section, explicit=qs_control%s2_restraint)
1119 IF (qs_control%s2_restraint)
THEN
1121 r_val=qs_control%s2_restraint_control%strength)
1123 r_val=qs_control%s2_restraint_control%target)
1125 i_val=qs_control%s2_restraint_control%functional_form)
1129 IF (qs_control%cdft)
THEN
1134 IF (qs_control%semi_empirical)
THEN
1136 l_val=qs_control%se_control%orthogonal_basis)
1138 r_val=qs_control%se_control%delta)
1140 l_val=qs_control%se_control%analytical_gradients)
1142 l_val=qs_control%se_control%force_kdsod_EX)
1145 i_val=qs_control%se_control%integral_screening)
1148 CALL cp_warn(__location__, &
1149 "PNNL semi-empirical parameterization supports only the Slater type "// &
1150 "integral scheme. Revert to Slater and continue the calculation.")
1155 i_val=qs_control%se_control%ga_ncells)
1158 r_val=qs_control%se_control%cutoff_lrc)
1159 qs_control%se_control%taper_lrc = qs_control%se_control%cutoff_lrc
1164 r_val=qs_control%se_control%taper_lrc)
1167 r_val=qs_control%se_control%range_lrc)
1170 r_val=qs_control%se_control%cutoff_cou)
1171 qs_control%se_control%taper_cou = qs_control%se_control%cutoff_cou
1176 r_val=qs_control%se_control%taper_cou)
1179 r_val=qs_control%se_control%range_cou)
1182 r_val=qs_control%se_control%cutoff_exc)
1183 qs_control%se_control%taper_exc = qs_control%se_control%cutoff_exc
1188 r_val=qs_control%se_control%taper_exc)
1191 r_val=qs_control%se_control%range_exc)
1195 r_val=qs_control%se_control%taper_scr)
1197 r_val=qs_control%se_control%range_scr)
1201 i_val=qs_control%se_control%periodic_type)
1202 SELECT CASE (qs_control%se_control%periodic_type)
1204 qs_control%se_control%do_ewald = .false.
1205 qs_control%se_control%do_ewald_r3 = .false.
1206 qs_control%se_control%do_ewald_gks = .false.
1208 qs_control%se_control%do_ewald = .true.
1209 qs_control%se_control%do_ewald_r3 = .false.
1210 qs_control%se_control%do_ewald_gks = .false.
1212 qs_control%se_control%do_ewald = .false.
1213 qs_control%se_control%do_ewald_r3 = .false.
1214 qs_control%se_control%do_ewald_gks = .true.
1216 CALL cp_abort(__location__, &
1217 "A periodic semi-empirical calculation was requested with a long-range "// &
1218 "summation on the single integral evaluation. This scheme is supported "// &
1219 "only by the PNNL parameterization.")
1221 qs_control%se_control%do_ewald = .true.
1222 qs_control%se_control%do_ewald_r3 = .true.
1223 qs_control%se_control%do_ewald_gks = .false.
1224 IF (qs_control%se_control%integral_screening /=
do_se_is_kdso) &
1225 CALL cp_abort(__location__, &
1226 "A periodic semi-empirical calculation was requested with a long-range "// &
1227 "summation for the slowly convergent part 1/R^3, which is not congruent "// &
1228 "with the integral screening chosen. The only integral screening supported "// &
1229 "by this periodic type calculation is the standard Klopman-Dewar-Sabelli-Ohno.")
1234 l_val=qs_control%se_control%dispersion)
1236 r_val=qs_control%se_control%rcdisp)
1238 r_val=qs_control%se_control%epscn)
1240 qs_control%se_control%sd3(1) = scal(1)
1241 qs_control%se_control%sd3(2) = scal(2)
1242 qs_control%se_control%sd3(3) = scal(3)
1244 c_val=qs_control%se_control%dispersion_parameter_file)
1248 cpabort(
"EWALD_R3 not implemented yet!")
1260 qs_control%se_control%orthogonal_basis = .true.
1265 IF (qs_control%dftb)
THEN
1267 l_val=qs_control%dftb_control%orthogonal_basis)
1269 l_val=qs_control%dftb_control%self_consistent)
1271 l_val=qs_control%dftb_control%dispersion)
1273 l_val=qs_control%dftb_control%dftb3_diagonal)
1275 l_val=qs_control%dftb_control%hb_sr_damp)
1277 r_val=qs_control%dftb_control%eps_disp)
1281 l_val=qs_control%dftb_control%do_ewald)
1283 qs_control%dftb_control%do_ewald = (qs_control%periodicity /= 0)
1286 c_val=qs_control%dftb_control%sk_file_path)
1288 c_val=qs_control%dftb_control%sk_file_list)
1290 r_val=qs_control%dftb_control%hb_sr_para)
1292 ALLOCATE (qs_control%dftb_control%sk_pair_list(3, n_var))
1296 qs_control%dftb_control%sk_pair_list(1:3, k) = clist(1:3)
1300 i_val=qs_control%dftb_control%dispersion_type)
1302 c_val=qs_control%dftb_control%uff_force_field)
1305 r_val=qs_control%dftb_control%rcdisp)
1307 r_val=qs_control%dftb_control%epscn)
1309 r_val=qs_control%dftb_control%exp_pre)
1311 r_val=qs_control%dftb_control%scaling)
1313 qs_control%dftb_control%sd3(1) = scal(1)
1314 qs_control%dftb_control%sd3(2) = scal(2)
1315 qs_control%dftb_control%sd3(3) = scal(3)
1317 qs_control%dftb_control%sd3bj(1) = scal(1)
1318 qs_control%dftb_control%sd3bj(2) = scal(2)
1319 qs_control%dftb_control%sd3bj(3) = scal(3)
1320 qs_control%dftb_control%sd3bj(4) = scal(4)
1322 c_val=qs_control%dftb_control%dispersion_parameter_file)
1324 IF (qs_control%dftb_control%dispersion)
CALL cite_reference(
zhechkov2005)
1325 IF (qs_control%dftb_control%self_consistent)
CALL cite_reference(
elstner1998)
1326 IF (qs_control%dftb_control%hb_sr_damp)
CALL cite_reference(
hu2007)
1330 IF (qs_control%xtb)
THEN
1335 l_val=qs_control%xtb_control%do_ewald)
1337 qs_control%xtb_control%do_ewald = (qs_control%periodicity /= 0)
1355 SELECT CASE (qs_control%xtb_control%gfn_type)
1362 cpabort(
"gfn2-xtb tbd")
1369 qs_control%xtb_control%sto_ng = ngauss
1371 qs_control%xtb_control%h_sto_ng = ngauss
1373 c_val=qs_control%xtb_control%parameter_file_path)
1377 c_val=qs_control%xtb_control%parameter_file_name)
1379 SELECT CASE (qs_control%xtb_control%gfn_type)
1381 qs_control%xtb_control%parameter_file_name =
"xTB0_parameters"
1383 qs_control%xtb_control%parameter_file_name =
"xTB1_parameters"
1385 cpabort(
"gfn2-xtb tbd")
1392 r_val=qs_control%xtb_control%rcdisp)
1394 r_val=qs_control%xtb_control%epscn)
1398 qs_control%xtb_control%s6 = scal(1)
1399 qs_control%xtb_control%s8 = scal(2)
1401 SELECT CASE (qs_control%xtb_control%gfn_type)
1403 qs_control%xtb_control%s6 = 1.00_dp
1404 qs_control%xtb_control%s8 = 2.85_dp
1406 qs_control%xtb_control%s6 = 1.00_dp
1407 qs_control%xtb_control%s8 = 2.40_dp
1409 cpabort(
"gfn2-xtb tbd")
1417 qs_control%xtb_control%a1 = scal(1)
1418 qs_control%xtb_control%a2 = scal(2)
1420 SELECT CASE (qs_control%xtb_control%gfn_type)
1422 qs_control%xtb_control%a1 = 0.80_dp
1423 qs_control%xtb_control%a2 = 4.60_dp
1425 qs_control%xtb_control%a1 = 0.63_dp
1426 qs_control%xtb_control%a2 = 5.00_dp
1428 cpabort(
"gfn2-xtb tbd")
1434 c_val=qs_control%xtb_control%dispersion_parameter_file)
1439 qs_control%xtb_control%ks = scal(1)
1440 qs_control%xtb_control%kp = scal(2)
1441 qs_control%xtb_control%kd = scal(3)
1442 qs_control%xtb_control%ksp = scal(4)
1443 qs_control%xtb_control%k2sh = scal(5)
1444 IF (qs_control%xtb_control%gfn_type == 0)
THEN
1446 qs_control%xtb_control%ksp = 0.5_dp*(scal(1) + scal(2))
1449 SELECT CASE (qs_control%xtb_control%gfn_type)
1451 qs_control%xtb_control%ks = 2.00_dp
1452 qs_control%xtb_control%kp = 2.4868_dp
1453 qs_control%xtb_control%kd = 2.27_dp
1454 qs_control%xtb_control%ksp = 2.2434_dp
1455 qs_control%xtb_control%k2sh = 1.1241_dp
1457 qs_control%xtb_control%ks = 1.85_dp
1458 qs_control%xtb_control%kp = 2.25_dp
1459 qs_control%xtb_control%kd = 2.00_dp
1460 qs_control%xtb_control%ksp = 2.08_dp
1461 qs_control%xtb_control%k2sh = 2.85_dp
1463 cpabort(
"gfn2-xtb tbd")
1471 qs_control%xtb_control%kg = scal(1)
1472 qs_control%xtb_control%kf = scal(2)
1474 SELECT CASE (qs_control%xtb_control%gfn_type)
1476 qs_control%xtb_control%kg = 2.00_dp
1477 qs_control%xtb_control%kf = 1.50_dp
1479 qs_control%xtb_control%kg = 2.00_dp
1480 qs_control%xtb_control%kf = 1.50_dp
1482 cpabort(
"gfn2-xtb tbd")
1488 qs_control%xtb_control%kcns = scal(1)
1489 qs_control%xtb_control%kcnp = scal(2)
1490 qs_control%xtb_control%kcnd = scal(3)
1495 SELECT CASE (qs_control%xtb_control%gfn_type)
1497 qs_control%xtb_control%ksen = scal(1)
1498 qs_control%xtb_control%kpen = scal(2)
1499 qs_control%xtb_control%kden = scal(3)
1501 qs_control%xtb_control%ken = scal(1)
1503 cpabort(
"gfn2-xtb tbd")
1508 SELECT CASE (qs_control%xtb_control%gfn_type)
1510 qs_control%xtb_control%ksen = 0.006_dp
1511 qs_control%xtb_control%kpen = -0.001_dp
1512 qs_control%xtb_control%kden = -0.002_dp
1514 qs_control%xtb_control%ken = -0.007_dp
1516 cpabort(
"gfn2-xtb tbd")
1523 qs_control%xtb_control%ben = scal(1)
1528 r_val=qs_control%xtb_control%enscale)
1530 SELECT CASE (qs_control%xtb_control%gfn_type)
1532 qs_control%xtb_control%enscale = -0.09_dp
1534 qs_control%xtb_control%enscale = 0._dp
1536 cpabort(
"gfn2-xtb tbd")
1543 l_val=qs_control%xtb_control%xb_interaction)
1545 qs_control%xtb_control%kxr = scal(1)
1546 qs_control%xtb_control%kx2 = scal(2)
1549 l_val=qs_control%xtb_control%do_nonbonded)
1551 IF (explicit .AND. qs_control%xtb_control%do_nonbonded)
THEN
1555 CALL read_gp_section(qs_control%xtb_control%nonbonded, genpot_section, 0)
1559 r_val=qs_control%xtb_control%eps_pair)
1562 qs_control%xtb_control%coulomb_sr_cut = scal(1)
1564 qs_control%xtb_control%coulomb_sr_eps = scal(1)
1570 SELECT CASE (qs_control%xtb_control%gfn_type)
1572 qs_control%xtb_control%coulomb_interaction = .false.
1573 qs_control%xtb_control%coulomb_lr = .false.
1574 qs_control%xtb_control%tb3_interaction = .false.
1575 qs_control%xtb_control%check_atomic_charges = .false.
1577 l_val=qs_control%xtb_control%var_dipole)
1581 l_val=qs_control%xtb_control%coulomb_interaction)
1583 l_val=qs_control%xtb_control%coulomb_lr)
1585 l_val=qs_control%xtb_control%tb3_interaction)
1588 l_val=qs_control%xtb_control%check_atomic_charges)
1589 qs_control%xtb_control%var_dipole = .false.
1591 cpabort(
"gfn2-xtb tbd")
1595 qs_control%xtb_control%kab_nval = n_rep
1597 ALLOCATE (qs_control%xtb_control%kab_param(3, n_rep))
1598 ALLOCATE (qs_control%xtb_control%kab_types(2, n_rep))
1599 ALLOCATE (qs_control%xtb_control%kab_vals(n_rep))
1602 qs_control%xtb_control%kab_param(1, j) = clist(1)
1604 ielement=qs_control%xtb_control%kab_types(1, j))
1605 qs_control%xtb_control%kab_param(2, j) = clist(2)
1607 ielement=qs_control%xtb_control%kab_types(2, j))
1608 qs_control%xtb_control%kab_param(3, j) = clist(3)
1609 READ (clist(3),
'(F10.0)') qs_control%xtb_control%kab_vals(j)
1613 IF (qs_control%xtb_control%gfn_type == 0)
THEN
1615 qs_control%xtb_control%ksrb = scal(1)
1616 qs_control%xtb_control%esrb = scal(2)
1617 qs_control%xtb_control%gscal = scal(3)
1618 qs_control%xtb_control%c1srb = scal(4)
1619 qs_control%xtb_control%c2srb = scal(5)
1620 qs_control%xtb_control%shift = scal(6)
1625 SELECT CASE (trim(cval))
1627 qs_control%xtb_control%enshift_type = 0
1629 qs_control%xtb_control%enshift_type = 1
1631 qs_control%xtb_control%enshift_type = 2
1633 cpabort(
"Unknown value for EN_SHIFT_TYPE")
1637 CALL read_eeq_param(eeq_section, qs_control%xtb_control%eeq_sparam)
1646 l_val=qs_control%xtb_control%do_tblite)
1648 i_val=qs_control%xtb_control%tblite_method)
1649 IF (qs_control%xtb_control%do_tblite)
THEN
1656 qs_control%xtb_control%do_ewald = .false.
1659 CALL timestop(handle)
1673 CHARACTER(LEN=*),
PARAMETER :: routinen =
'read_tddfpt2_control'
1675 CHARACTER(LEN=default_string_length), &
1676 DIMENSION(:),
POINTER :: tmpstringlist
1677 INTEGER :: handle, irep, isize, nrep
1678 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: inds
1679 LOGICAL :: do_ewald, do_exchange, expl, explicit, &
1681 REAL(kind=
dp) :: filter, fval, hfx
1683 soc_section, stda_section, xc_func, &
1686 CALL timeset(routinen, handle)
1702 CALL section_vals_val_get(t_section,
"MIN_AMPLITUDE", r_val=t_control%min_excitation_amplitude)
1710 CALL section_vals_val_get(t_section,
"ADMM_KERNEL_CORRECTION_SYMMETRIC", l_val=t_control%admm_symm)
1711 CALL section_vals_val_get(t_section,
"ADMM_KERNEL_XC_CORRECTION", l_val=t_control%admm_xc_correction)
1712 CALL section_vals_val_get(t_section,
"EXCITON_DESCRIPTORS", l_val=t_control%do_exciton_descriptors)
1713 CALL section_vals_val_get(t_section,
"DIRECTIONAL_EXCITON_DESCRIPTORS", l_val=t_control%do_directional_exciton_descriptors)
1719 IF (
SIZE(tmpstringlist) == 2)
THEN
1721 SELECT CASE (tmpstringlist(2))
1733 cpabort(
"Unknown basis size in AUTO_BASIS keyword:"//trim(tmpstringlist(1)))
1736 SELECT CASE (tmpstringlist(1))
1739 t_control%auto_basis_p_lri_aux = isize
1741 cpabort(
"Unknown basis type in AUTO_BASIS keyword:"//trim(tmpstringlist(1)))
1744 CALL cp_abort(__location__, &
1745 "AUTO_BASIS keyword in &PROPERTIES &TDDFT section has a wrong number of arguments.")
1749 IF (t_control%conv < 0) &
1750 t_control%conv = abs(t_control%conv)
1758 t_control%dipole_form = 0
1763 CALL section_vals_val_get(dipole_section,
"REFERENCE_POINT", r_vals=t_control%dipole_ref_point)
1765 NULLIFY (t_control%dipole_ref_point)
1767 cpabort(
"User-defined reference point should be given explicitly")
1775 t_control%do_soc = .true.
1782 IF (t_control%mgrid_is_explicit)
THEN
1783 CALL section_vals_val_get(mgrid_section,
"NGRIDS", i_val=t_control%mgrid_ngrids, explicit=explicit)
1784 IF (.NOT. explicit) t_control%mgrid_ngrids =
SIZE(qs_control%e_cutoff)
1786 CALL section_vals_val_get(mgrid_section,
"CUTOFF", r_val=t_control%mgrid_cutoff, explicit=explicit)
1787 IF (.NOT. explicit) t_control%mgrid_cutoff = qs_control%cutoff
1790 r_val=t_control%mgrid_progression_factor, explicit=explicit)
1792 IF (t_control%mgrid_progression_factor <= 1.0_dp) &
1793 CALL cp_abort(__location__, &
1794 "Progression factor should be greater then 1.0 to ensure multi-grid ordering")
1796 t_control%mgrid_progression_factor = qs_control%progression_factor
1799 CALL section_vals_val_get(mgrid_section,
"COMMENSURATE", l_val=t_control%mgrid_commensurate_mgrids, explicit=explicit)
1800 IF (.NOT. explicit) t_control%mgrid_commensurate_mgrids = qs_control%commensurate_mgrids
1801 IF (t_control%mgrid_commensurate_mgrids)
THEN
1803 t_control%mgrid_progression_factor = 4.0_dp
1805 t_control%mgrid_progression_factor = qs_control%progression_factor
1809 CALL section_vals_val_get(mgrid_section,
"REL_CUTOFF", r_val=t_control%mgrid_relative_cutoff, explicit=explicit)
1810 IF (.NOT. explicit) t_control%mgrid_relative_cutoff = qs_control%relative_cutoff
1812 CALL section_vals_val_get(mgrid_section,
"MULTIGRID_SET", l_val=multigrid_set, explicit=explicit)
1813 IF (.NOT. explicit) multigrid_set = .false.
1814 IF (multigrid_set)
THEN
1817 NULLIFY (t_control%mgrid_e_cutoff)
1820 CALL section_vals_val_get(mgrid_section,
"REALSPACE", l_val=t_control%mgrid_realspace_mgrids, explicit=explicit)
1821 IF (.NOT. explicit) t_control%mgrid_realspace_mgrids = qs_control%realspace_mgrids
1824 l_val=t_control%mgrid_skip_load_balance, explicit=explicit)
1825 IF (.NOT. explicit) t_control%mgrid_skip_load_balance = qs_control%skip_load_balance_distributed
1827 IF (
ASSOCIATED(t_control%mgrid_e_cutoff))
THEN
1828 IF (
SIZE(t_control%mgrid_e_cutoff) /= t_control%mgrid_ngrids) &
1829 cpabort(
"Inconsistent values for number of multi-grids")
1832 t_control%mgrid_e_cutoff = -t_control%mgrid_e_cutoff
1833 ALLOCATE (inds(t_control%mgrid_ngrids))
1834 CALL sort(t_control%mgrid_e_cutoff, t_control%mgrid_ngrids, inds)
1836 t_control%mgrid_e_cutoff = -t_control%mgrid_e_cutoff
1850 t_control%stda_control%hfx_fraction = 0.0_dp
1851 t_control%stda_control%do_exchange = .true.
1852 t_control%stda_control%eps_td_filter = 1.e-10_dp
1853 t_control%stda_control%mn_alpha = -99.0_dp
1854 t_control%stda_control%mn_beta = -99.0_dp
1856 SELECT CASE (qs_control%periodicity)
1858 t_control%stda_control%do_ewald = .false.
1860 t_control%stda_control%do_ewald = .true.
1862 t_control%stda_control%do_ewald = .true.
1864 t_control%stda_control%do_ewald = .true.
1866 cpabort(
"Illegal value for periodiciy")
1871 IF (expl) t_control%stda_control%hfx_fraction = hfx
1873 IF (expl) t_control%stda_control%eps_td_filter = filter
1875 IF (expl) t_control%stda_control%do_ewald = do_ewald
1877 IF (expl) t_control%stda_control%do_exchange = do_exchange
1879 t_control%stda_control%mn_alpha = fval
1881 t_control%stda_control%mn_beta = fval
1884 t_control%stda_control%coulomb_sr_cut = fval
1886 t_control%stda_control%coulomb_sr_eps = fval
1889 CALL timestop(handle)
1901 CHARACTER(len=*),
PARAMETER :: routinen =
'write_dft_control'
1903 CHARACTER(LEN=20) :: tmpstr
1904 INTEGER :: handle, i, i_rep, n_rep, output_unit
1905 REAL(kind=
dp) :: density_cut, density_smooth_cut_range, &
1906 gradient_cut, tau_cut
1913 IF (dft_control%qs_control%semi_empirical)
RETURN
1914 IF (dft_control%qs_control%dftb)
RETURN
1915 IF (dft_control%qs_control%xtb)
THEN
1916 CALL write_xtb_control(dft_control%qs_control%xtb_control, dft_section)
1919 CALL timeset(routinen, handle)
1925 "PRINT%DFT_CONTROL_PARAMETERS", extension=
".Log")
1927 IF (output_unit > 0)
THEN
1931 IF (dft_control%uks)
THEN
1932 WRITE (unit=output_unit, fmt=
"(/,T2,A,T78,A)") &
1933 "DFT| Spin unrestricted (spin-polarized) Kohn-Sham calculation",
"UKS"
1934 ELSE IF (dft_control%roks)
THEN
1935 WRITE (unit=output_unit, fmt=
"(/,T2,A,T77,A)") &
1936 "DFT| Spin restricted open Kohn-Sham calculation",
"ROKS"
1938 WRITE (unit=output_unit, fmt=
"(/,T2,A,T78,A)") &
1939 "DFT| Spin restricted Kohn-Sham (RKS) calculation",
"RKS"
1942 WRITE (unit=output_unit, fmt=
"(T2,A,T76,I5)") &
1943 "DFT| Multiplicity", dft_control%multiplicity
1944 WRITE (unit=output_unit, fmt=
"(T2,A,T76,I5)") &
1945 "DFT| Number of spin states", dft_control%nspins
1947 WRITE (unit=output_unit, fmt=
"(T2,A,T76,I5)") &
1948 "DFT| Charge", dft_control%charge
1951 SELECT CASE (dft_control%sic_method_id)
1955 tmpstr =
"SPZ/MAURI SIC"
1957 tmpstr =
"US/MAURI SIC"
1961 tmpstr =
"Explicit Orbital SIC"
1964 cpabort(
"SIC option unknown")
1967 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
1968 "DFT| Self-interaction correction (SIC)", adjustr(trim(tmpstr))
1970 IF (dft_control%sic_method_id /=
sic_none)
THEN
1971 WRITE (unit=output_unit, fmt=
"(T2,A,T66,ES15.6)") &
1972 "DFT| SIC scaling parameter a", dft_control%sic_scaling_a, &
1973 "DFT| SIC scaling parameter b", dft_control%sic_scaling_b
1976 IF (dft_control%sic_method_id ==
sic_eo)
THEN
1978 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A)") &
1979 "DFT| SIC orbitals",
"ALL"
1982 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A)") &
1983 "DFT| SIC orbitals",
"UNPAIRED"
1990 CALL section_vals_val_get(xc_section,
"density_smooth_cutoff_range", r_val=density_smooth_cut_range)
1992 WRITE (unit=output_unit, fmt=
"(T2,A,T66,ES15.6)") &
1993 "DFT| Cutoffs: density ", density_cut, &
1994 "DFT| gradient", gradient_cut, &
1995 "DFT| tau ", tau_cut, &
1996 "DFT| cutoff_smoothing_range", density_smooth_cut_range
1999 WRITE (output_unit,
'( A, T61, A )') &
2000 " DFT| XC density smoothing ", adjustr(tmpstr)
2003 WRITE (output_unit,
'( A, T61, A )') &
2004 " DFT| XC derivatives ", adjustr(tmpstr)
2005 IF (dft_control%dft_plus_u)
THEN
2006 NULLIFY (enum, keyword, section)
2010 WRITE (unit=output_unit, fmt=
"(/,T2,A,T41,A40)") &
2011 "DFT+U| Method", adjustr(trim(
enum_i2c(enum, dft_control%plus_u_method_id)))
2012 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2013 "DFT+U| Check atomic kind information for details"
2017 WRITE (unit=output_unit, fmt=
"(A)")
""
2018 CALL xc_write(output_unit, xc_section, dft_control%lsd)
2020 IF (dft_control%apply_period_efield)
THEN
2021 WRITE (unit=output_unit, fmt=
"(A)")
""
2022 IF (dft_control%period_efield%displacement_field)
THEN
2023 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2024 "PERIODIC_EFIELD| Use displacement field formulation"
2025 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,ES14.6)") &
2026 "PERIODIC_EFIELD| Displacement field filter: x", &
2027 dft_control%period_efield%d_filter(1), &
2028 "PERIODIC_EFIELD| y", &
2029 dft_control%period_efield%d_filter(2), &
2030 "PERIODIC_EFIELD| z", &
2031 dft_control%period_efield%d_filter(3)
2033 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,ES14.6)") &
2034 "PERIODIC_EFIELD| Polarisation vector: x", &
2035 dft_control%period_efield%polarisation(1), &
2036 "PERIODIC_EFIELD| y", &
2037 dft_control%period_efield%polarisation(2), &
2038 "PERIODIC_EFIELD| z", &
2039 dft_control%period_efield%polarisation(3)
2041 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,I14)") &
2042 "PERIODIC_EFIELD| Start Frame:", &
2043 dft_control%period_efield%start_frame, &
2044 "PERIODIC_EFIELD| End Frame:", &
2045 dft_control%period_efield%end_frame
2047 IF (
ALLOCATED(dft_control%period_efield%strength_list))
THEN
2048 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,I14)") &
2049 "PERIODIC_EFIELD| Number of Intensities:", &
2050 SIZE(dft_control%period_efield%strength_list)
2051 WRITE (unit=output_unit, fmt=
"(T2,A,I10,T66,1X,ES14.6)") &
2052 "PERIODIC_EFIELD| Intensity List [a.u.] ", &
2053 1, dft_control%period_efield%strength_list(1)
2054 DO i = 2,
SIZE(dft_control%period_efield%strength_list)
2055 WRITE (unit=output_unit, fmt=
"(T2,A,I10,T66,1X,ES14.6)") &
2056 "PERIODIC_EFIELD| ", &
2057 i, dft_control%period_efield%strength_list(i)
2060 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,ES14.6)") &
2061 "PERIODIC_EFIELD| Intensity [a.u.]:", &
2062 dft_control%period_efield%strength
2065 IF (sqrt(dot_product(dft_control%period_efield%polarisation, &
2066 dft_control%period_efield%polarisation)) < epsilon(0.0_dp))
THEN
2067 cpabort(
"Invalid (too small) polarisation vector specified for PERIODIC_EFIELD")
2071 IF (dft_control%do_sccs)
THEN
2072 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
2073 "SCCS| Self-consistent continuum solvation model"
2074 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2075 "SCCS| Relative permittivity of the solvent (medium)", &
2076 dft_control%sccs_control%epsilon_solvent, &
2077 "SCCS| Absolute permittivity [a.u.]", &
2078 dft_control%sccs_control%epsilon_solvent/
fourpi
2079 SELECT CASE (dft_control%sccs_control%method_id)
2081 WRITE (unit=output_unit, fmt=
"(T2,A,/,(T2,A,T61,ES20.6))") &
2082 "SCCS| Dielectric function proposed by Andreussi et al.", &
2083 "SCCS| rho_max", dft_control%sccs_control%rho_max, &
2084 "SCCS| rho_min", dft_control%sccs_control%rho_min
2086 WRITE (unit=output_unit, fmt=
"(T2,A,/,(T2,A,T61,ES20.6))") &
2087 "SCCS| Dielectric function proposed by Fattebert and Gygi", &
2088 "SCCS| beta", dft_control%sccs_control%beta, &
2089 "SCCS| rho_zero", dft_control%sccs_control%rho_zero
2091 cpabort(
"Invalid SCCS model specified. Please, check your input!")
2093 SELECT CASE (dft_control%sccs_control%derivative_method)
2095 WRITE (unit=output_unit, fmt=
"(T2,A,T46,A35)") &
2096 "SCCS| Numerical derivative calculation", &
2099 WRITE (unit=output_unit, fmt=
"(T2,A,T46,A35)") &
2100 "SCCS| Numerical derivative calculation", &
2101 adjustr(
"3-point stencil central differences")
2103 WRITE (unit=output_unit, fmt=
"(T2,A,T46,A35)") &
2104 "SCCS| Numerical derivative calculation", &
2105 adjustr(
"5-point stencil central differences")
2107 WRITE (unit=output_unit, fmt=
"(T2,A,T46,A35)") &
2108 "SCCS| Numerical derivative calculation", &
2109 adjustr(
"7-point stencil central differences")
2111 CALL cp_abort(__location__, &
2112 "Invalid derivative method specified for SCCS model. "// &
2113 "Please, check your input!")
2115 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2116 "SCCS| Repulsion parameter alpha [mN/m] = [dyn/cm]", &
2118 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2119 "SCCS| Dispersion parameter beta [GPa]", &
2121 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2122 "SCCS| Surface tension gamma [mN/m] = [dyn/cm]", &
2124 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2125 "SCCS| Mixing parameter applied during the iteration cycle", &
2126 dft_control%sccs_control%mixing
2127 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2128 "SCCS| Tolerance for the convergence of the SCCS iteration cycle", &
2129 dft_control%sccs_control%eps_sccs
2130 WRITE (unit=output_unit, fmt=
"(T2,A,T61,I20)") &
2131 "SCCS| Maximum number of iteration steps", &
2132 dft_control%sccs_control%max_iter
2133 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2134 "SCCS| SCF convergence threshold for starting the SCCS iteration", &
2135 dft_control%sccs_control%eps_scf
2136 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2137 "SCCS| Numerical increment for the cavity surface calculation", &
2138 dft_control%sccs_control%delta_rho
2141 WRITE (unit=output_unit, fmt=
"(A)")
""
2145 IF (dft_control%hairy_probes .EQV. .true.)
THEN
2146 n_rep =
SIZE(dft_control%probe)
2147 IF (output_unit > 0)
THEN
2149 WRITE (unit=output_unit, fmt=
"(T2,A,I5)") &
2150 "HP | hair probe set", i_rep
2151 WRITE (unit=output_unit, fmt=
"(T2,A,T61,*(I5))") &
2152 "HP| atom indexes", &
2153 (dft_control%probe(i_rep)%atom_ids(i), i=1, dft_control%probe(i_rep)%natoms)
2154 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2155 "HP| potential", dft_control%probe(i_rep)%mu
2156 WRITE (unit=output_unit, fmt=
"(T2,A,T61,F20.2)") &
2157 "HP| temperature", dft_control%probe(i_rep)%T
2158 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2159 "HP| eps_hp", dft_control%probe(i_rep)%eps_hp
2165 "PRINT%DFT_CONTROL_PARAMETERS")
2167 CALL timestop(handle)
2187 "PRINT%DFT_CONTROL_PARAMETERS", extension=
".Log")
2189 IF (iounit > 0)
THEN
2191 SELECT CASE (admm_control%admm_type)
2193 WRITE (unit=iounit, fmt=
"(/,T2,A,T77,A)")
"ADMM| Specific ADMM type specified",
"NONE"
2195 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMM1"
2197 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMM2"
2199 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMMS"
2201 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMMP"
2203 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMMQ"
2205 cpabort(
"admm_type")
2208 SELECT CASE (admm_control%purification_method)
2210 WRITE (unit=iounit, fmt=
"(T2,A,T77,A)")
"ADMM| Density matrix purification method",
"NONE"
2212 WRITE (unit=iounit, fmt=
"(T2,A,T75,A)")
"ADMM| Density matrix purification method",
"Cauchy"
2214 WRITE (unit=iounit, fmt=
"(T2,A,T66,A)")
"ADMM| Density matrix purification method",
"Cauchy subspace"
2216 WRITE (unit=iounit, fmt=
"(T2,A,T63,A)")
"ADMM| Density matrix purification method",
"MO diagonalization"
2218 WRITE (unit=iounit, fmt=
"(T2,A,T71,A)")
"ADMM| Density matrix purification method",
"MO no diag"
2220 WRITE (unit=iounit, fmt=
"(T2,A,T74,A)")
"ADMM| Density matrix purification method",
"McWeeny"
2222 WRITE (unit=iounit, fmt=
"(T2,A,T73,A)")
"ADMM| Density matrix purification method",
"NONE(DM)"
2224 cpabort(
"admm_purification_method")
2227 SELECT CASE (admm_control%method)
2229 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Orbital projection on ADMM basis"
2231 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Blocked Fock matrix projection with full purification"
2233 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Blocked Fock matrix projection"
2235 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Orbital projection with charge constrain"
2237 cpabort(
"admm method")
2240 SELECT CASE (admm_control%scaling_model)
2243 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Use Merlot (2014) scaling model"
2245 cpabort(
"admm scaling_model")
2248 WRITE (unit=iounit, fmt=
"(T2,A,T61,G20.10)")
"ADMM| eps_filter", admm_control%eps_filter
2250 SELECT CASE (admm_control%aux_exch_func)
2252 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| No exchange functional correction term used"
2254 WRITE (unit=iounit, fmt=
"(T2,A,T74,A)")
"ADMM| Exchange functional in correction term",
"(W)PBEX"
2256 WRITE (unit=iounit, fmt=
"(T2,A,T77,A)")
"ADMM| Exchange functional in correction term",
"PBEX"
2258 WRITE (unit=iounit, fmt=
"(T2,A,T77,A)")
"ADMM| Exchange functional in correction term",
"OPTX"
2260 WRITE (unit=iounit, fmt=
"(T2,A,T74,A)")
"ADMM| Exchange functional in correction term",
"Becke88"
2262 WRITE (unit=iounit, fmt=
"(T2,A,T74,A)")
"ADMM| Exchange functional in correction term",
"SlaterX"
2264 cpabort(
"admm aux_exch_func")
2267 WRITE (unit=iounit, fmt=
"(A)")
""
2272 "PRINT%DFT_CONTROL_PARAMETERS")
2280 SUBROUTINE write_xtb_control(xtb_control, dft_section)
2284 CHARACTER(len=*),
PARAMETER :: routinen =
'write_xtb_control'
2286 INTEGER :: handle, output_unit
2289 CALL timeset(routinen, handle)
2294 "PRINT%DFT_CONTROL_PARAMETERS", extension=
".Log")
2296 IF (output_unit > 0)
THEN
2298 WRITE (unit=output_unit, fmt=
"(/,T2,A,T31,A50)") &
2299 "xTB| Parameter file", adjustr(trim(xtb_control%parameter_file_name))
2300 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2301 "xTB| Basis expansion STO-NG", xtb_control%sto_ng
2302 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2303 "xTB| Basis expansion STO-NG for Hydrogen", xtb_control%h_sto_ng
2304 WRITE (unit=output_unit, fmt=
"(T2,A,T71,E10.4)") &
2305 "xTB| Repulsive pair potential accuracy", xtb_control%eps_pair
2306 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.6)") &
2307 "xTB| Repulsive enhancement factor", xtb_control%enscale
2308 WRITE (unit=output_unit, fmt=
"(T2,A,T71,L10)") &
2309 "xTB| Halogen interaction potential", xtb_control%xb_interaction
2310 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.3)") &
2311 "xTB| Halogen interaction potential cutoff radius", xtb_control%xb_radius
2312 WRITE (unit=output_unit, fmt=
"(T2,A,T71,L10)") &
2313 "xTB| Nonbonded interactions", xtb_control%do_nonbonded
2314 SELECT CASE (xtb_control%vdw_type)
2316 WRITE (unit=output_unit, fmt=
"(T2,A)")
"xTB| No vdW potential selected"
2318 WRITE (unit=output_unit, fmt=
"(T2,A,T72,A)")
"xTB| vdW potential type:",
"DFTD3(BJ)"
2319 WRITE (unit=output_unit, fmt=
"(T2,A,T31,A50)") &
2320 "xTB| D3 Dispersion: Parameter file", adjustr(trim(xtb_control%dispersion_parameter_file))
2322 WRITE (unit=output_unit, fmt=
"(T2,A,T76,A)")
"xTB| vdW potential type:",
"DFTD4"
2323 WRITE (unit=output_unit, fmt=
"(T2,A,T31,A50)") &
2324 "xTB| D4 Dispersion: Parameter file", adjustr(trim(xtb_control%dispersion_parameter_file))
2328 WRITE (unit=output_unit, fmt=
"(T2,A,T51,3F10.3)") &
2329 "xTB| Huckel constants ks kp kd", xtb_control%ks, xtb_control%kp, xtb_control%kd
2330 WRITE (unit=output_unit, fmt=
"(T2,A,T61,2F10.3)") &
2331 "xTB| Huckel constants ksp k2sh", xtb_control%ksp, xtb_control%k2sh
2332 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.3)") &
2333 "xTB| Mataga-Nishimoto exponent", xtb_control%kg
2334 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.3)") &
2335 "xTB| Repulsion potential exponent", xtb_control%kf
2336 WRITE (unit=output_unit, fmt=
"(T2,A,T51,3F10.3)") &
2337 "xTB| Coordination number scaling kcn(s) kcn(p) kcn(d)", &
2338 xtb_control%kcns, xtb_control%kcnp, xtb_control%kcnd
2339 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.3)") &
2340 "xTB| Electronegativity scaling", xtb_control%ken
2341 WRITE (unit=output_unit, fmt=
"(T2,A,T61,2F10.3)") &
2342 "xTB| Halogen potential scaling kxr kx2", xtb_control%kxr, xtb_control%kx2
2343 WRITE (unit=output_unit, fmt=
"(/)")
2348 "PRINT%DFT_CONTROL_PARAMETERS")
2350 CALL timestop(handle)
2352 END SUBROUTINE write_xtb_control
2363 CHARACTER(len=*),
PARAMETER :: routinen =
'write_qs_control'
2365 CHARACTER(len=20) :: method, quadrature
2366 INTEGER :: handle, i, igrid_level, ngrid_level, &
2375 IF (qs_control%semi_empirical)
RETURN
2376 IF (qs_control%dftb)
RETURN
2377 IF (qs_control%xtb)
RETURN
2378 CALL timeset(routinen, handle)
2379 NULLIFY (logger, print_section_vals, qs_section, qs_section_vals)
2385 NULLIFY (enum, keyword)
2388 method = trim(
enum_i2c(enum, qs_control%method_id))
2390 NULLIFY (enum, keyword)
2393 quadrature = trim(
enum_i2c(enum, qs_control%gapw_control%quadrature))
2396 "DFT_CONTROL_PARAMETERS", extension=
".Log")
2397 IF (output_unit > 0)
THEN
2398 ngrid_level =
SIZE(qs_control%e_cutoff)
2399 WRITE (unit=output_unit, fmt=
"(/,T2,A,T61,A20)") &
2400 "QS| Method:", adjustr(method)
2401 IF (qs_control%pw_grid_opt%spherical)
THEN
2402 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A)") &
2403 "QS| Density plane wave grid type",
" SPHERICAL HALFSPACE"
2404 ELSE IF (qs_control%pw_grid_opt%fullspace)
THEN
2405 WRITE (unit=output_unit, fmt=
"(T2,A,T57,A)") &
2406 "QS| Density plane wave grid type",
" NON-SPHERICAL FULLSPACE"
2408 WRITE (unit=output_unit, fmt=
"(T2,A,T57,A)") &
2409 "QS| Density plane wave grid type",
" NON-SPHERICAL HALFSPACE"
2411 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2412 "QS| Number of grid levels:",
SIZE(qs_control%e_cutoff)
2413 IF (ngrid_level == 1)
THEN
2414 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2415 "QS| Density cutoff [a.u.]:", qs_control%e_cutoff(1)
2417 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2418 "QS| Density cutoff [a.u.]:", qs_control%cutoff
2419 IF (qs_control%commensurate_mgrids) &
2420 WRITE (unit=output_unit, fmt=
"(T2,A)")
"QS| Using commensurate multigrids"
2421 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2422 "QS| Multi grid cutoff [a.u.]: 1) grid level", qs_control%e_cutoff(1)
2423 WRITE (unit=output_unit, fmt=
"(T2,A,I3,A,T71,F10.1)") &
2424 (
"QS| ", igrid_level,
") grid level", &
2425 qs_control%e_cutoff(igrid_level), &
2426 igrid_level=2,
SIZE(qs_control%e_cutoff))
2428 IF (qs_control%pao)
THEN
2429 WRITE (unit=output_unit, fmt=
"(T2,A)")
"QS| PAO active"
2431 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2432 "QS| Grid level progression factor:", qs_control%progression_factor
2433 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2434 "QS| Relative density cutoff [a.u.]:", qs_control%relative_cutoff
2435 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2436 "QS| Interaction thresholds: eps_pgf_orb:", &
2437 qs_control%eps_pgf_orb, &
2438 "QS| eps_filter_matrix:", &
2439 qs_control%eps_filter_matrix, &
2440 "QS| eps_core_charge:", &
2441 qs_control%eps_core_charge, &
2442 "QS| eps_rho_gspace:", &
2443 qs_control%eps_rho_gspace, &
2444 "QS| eps_rho_rspace:", &
2445 qs_control%eps_rho_rspace, &
2446 "QS| eps_gvg_rspace:", &
2447 qs_control%eps_gvg_rspace, &
2449 qs_control%eps_ppl, &
2452 IF (qs_control%gapw)
THEN
2453 IF (qs_control%gapw_control%accurate_xcint)
THEN
2454 WRITE (unit=output_unit, fmt=
"(T2,A,T69,F12.6)") &
2455 "QS| GAPW| XC integration using accurate scheme: Ref. exponent =", &
2456 qs_control%gapw_control%aweights
2459 SELECT CASE (qs_control%gapw_control%basis_1c)
2461 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2462 "QS| GAPW| One center basis from orbital basis primitives"
2464 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2465 "QS| GAPW| One center basis extended with primitives (small:s)"
2467 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2468 "QS| GAPW| One center basis extended with primitives (medium:sp)"
2470 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2471 "QS| GAPW| One center basis extended with primitives (large:spd)"
2473 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2474 "QS| GAPW| One center basis extended with primitives (very large:spdf)"
2476 cpabort(
"basis_1c incorrect")
2478 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2479 "QS| GAPW| eps_fit:", &
2480 qs_control%gapw_control%eps_fit, &
2481 "QS| GAPW| eps_iso:", &
2482 qs_control%gapw_control%eps_iso, &
2483 "QS| GAPW| eps_svd:", &
2484 qs_control%gapw_control%eps_svd, &
2485 "QS| GAPW| eps_cpc:", &
2486 qs_control%gapw_control%eps_cpc
2487 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2488 "QS| GAPW| atom-r-grid: quadrature:", &
2490 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2491 "QS| GAPW| atom-s-grid: max l :", &
2492 qs_control%gapw_control%lmax_sphere, &
2493 "QS| GAPW| max_l_rho0 :", &
2494 qs_control%gapw_control%lmax_rho0
2495 IF (qs_control%gapw_control%non_paw_atoms)
THEN
2496 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2497 "QS| GAPW| At least one kind is NOT PAW, i.e. it has only soft AO "
2499 IF (qs_control%gapw_control%nopaw_as_gpw)
THEN
2500 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2501 "QS| GAPW| The NOT PAW atoms are treated fully GPW"
2504 IF (qs_control%gapw_xc)
THEN
2505 SELECT CASE (qs_control%gapw_control%basis_1c)
2507 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2508 "QS| GAPW_XC| One center basis from orbital basis primitives"
2510 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2511 "QS| GAPW_XC| One center basis extended with primitives (small:s)"
2513 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2514 "QS| GAPW_XC| One center basis extended with primitives (medium:sp)"
2516 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2517 "QS| GAPW_XC| One center basis extended with primitives (large:spd)"
2519 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2520 "QS| GAPW_XC| One center basis extended with primitives (very large:spdf)"
2522 cpabort(
"basis_1c incorrect")
2524 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2525 "QS| GAPW_XC| eps_fit:", &
2526 qs_control%gapw_control%eps_fit, &
2527 "QS| GAPW_XC| eps_iso:", &
2528 qs_control%gapw_control%eps_iso, &
2529 "QS| GAPW_XC| eps_svd:", &
2530 qs_control%gapw_control%eps_svd
2531 WRITE (unit=output_unit, fmt=
"(T2,A,T55,A30)") &
2532 "QS| GAPW_XC|atom-r-grid: quadrature:", &
2533 enum_i2c(enum, qs_control%gapw_control%quadrature)
2534 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2535 "QS| GAPW_XC| atom-s-grid: max l :", &
2536 qs_control%gapw_control%lmax_sphere
2538 IF (qs_control%mulliken_restraint)
THEN
2539 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2540 "QS| Mulliken restraint target", qs_control%mulliken_restraint_control%target
2541 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2542 "QS| Mulliken restraint strength", qs_control%mulliken_restraint_control%strength
2543 WRITE (unit=output_unit, fmt=
"(T2,A,T73,I8)") &
2544 "QS| Mulliken restraint atoms: ", qs_control%mulliken_restraint_control%natoms
2545 WRITE (unit=output_unit, fmt=
"(5I8)") qs_control%mulliken_restraint_control%atoms
2547 IF (qs_control%ddapc_restraint)
THEN
2548 DO i = 1,
SIZE(qs_control%ddapc_restraint_control)
2549 ddapc_restraint_control => qs_control%ddapc_restraint_control(i)
2550 IF (
SIZE(qs_control%ddapc_restraint_control) > 1) &
2551 WRITE (unit=output_unit, fmt=
"(T2,A,T3,I8)") &
2552 "QS| parameters for DDAPC restraint number", i
2553 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2554 "QS| ddapc restraint target", ddapc_restraint_control%target
2555 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2556 "QS| ddapc restraint strength", ddapc_restraint_control%strength
2557 WRITE (unit=output_unit, fmt=
"(T2,A,T73,I8)") &
2558 "QS| ddapc restraint atoms: ", ddapc_restraint_control%natoms
2559 WRITE (unit=output_unit, fmt=
"(5I8)") ddapc_restraint_control%atoms
2560 WRITE (unit=output_unit, fmt=
"(T2,A)")
"Coefficients:"
2561 WRITE (unit=output_unit, fmt=
"(5F6.2)") ddapc_restraint_control%coeff
2562 SELECT CASE (ddapc_restraint_control%functional_form)
2564 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2565 "QS| ddapc restraint functional form :",
"RESTRAINT"
2567 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2568 "QS| ddapc restraint functional form :",
"CONSTRAINT"
2570 cpabort(
"Unknown ddapc restraint")
2574 IF (qs_control%s2_restraint)
THEN
2575 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2576 "QS| s2 restraint target", qs_control%s2_restraint_control%target
2577 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2578 "QS| s2 restraint strength", qs_control%s2_restraint_control%strength
2579 SELECT CASE (qs_control%s2_restraint_control%functional_form)
2581 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2582 "QS| s2 restraint functional form :",
"RESTRAINT"
2583 cpabort(
"Not yet implemented")
2585 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2586 "QS| s2 restraint functional form :",
"CONSTRAINT"
2588 cpabort(
"Unknown ddapc restraint")
2593 "DFT_CONTROL_PARAMETERS")
2595 CALL timestop(handle)
2613 TYPE(
section_vals_type),
OPTIONAL,
POINTER :: qs_section, ddapc_restraint_section
2615 INTEGER :: i, j, jj, k, n_rep
2616 INTEGER,
DIMENSION(:),
POINTER :: tmplist
2617 REAL(kind=
dp),
DIMENSION(:),
POINTER :: rtmplist
2621 IF (
PRESENT(ddapc_restraint_section))
THEN
2622 IF (
ASSOCIATED(qs_control%ddapc_restraint_control))
THEN
2623 IF (
SIZE(qs_control%ddapc_restraint_control) >= 2) &
2624 cpabort(
"ET_COUPLING cannot be used in combination with a normal restraint")
2626 ddapc_section => ddapc_restraint_section
2627 ALLOCATE (qs_control%ddapc_restraint_control(1))
2631 IF (
PRESENT(qs_section))
THEN
2632 NULLIFY (ddapc_section)
2637 DO i = 1,
SIZE(qs_control%ddapc_restraint_control)
2640 ddapc_restraint_control => qs_control%ddapc_restraint_control(i)
2643 r_val=ddapc_restraint_control%strength)
2645 r_val=ddapc_restraint_control%target)
2647 i_val=ddapc_restraint_control%functional_form)
2651 i_val=ddapc_restraint_control%density_type)
2656 i_rep_val=k, i_vals=tmplist)
2657 DO j = 1,
SIZE(tmplist)
2661 IF (jj < 1) cpabort(
"Need at least 1 atom to use ddapc constraints")
2662 ddapc_restraint_control%natoms = jj
2663 IF (
ASSOCIATED(ddapc_restraint_control%atoms)) &
2664 DEALLOCATE (ddapc_restraint_control%atoms)
2665 ALLOCATE (ddapc_restraint_control%atoms(ddapc_restraint_control%natoms))
2669 i_rep_val=k, i_vals=tmplist)
2670 DO j = 1,
SIZE(tmplist)
2672 ddapc_restraint_control%atoms(jj) = tmplist(j)
2676 IF (
ASSOCIATED(ddapc_restraint_control%coeff)) &
2677 DEALLOCATE (ddapc_restraint_control%coeff)
2678 ALLOCATE (ddapc_restraint_control%coeff(ddapc_restraint_control%natoms))
2679 ddapc_restraint_control%coeff = 1.0_dp
2686 i_rep_val=k, r_vals=rtmplist)
2687 DO j = 1,
SIZE(rtmplist)
2689 IF (jj > ddapc_restraint_control%natoms) &
2690 cpabort(
"Need the same number of coeff as there are atoms ")
2691 ddapc_restraint_control%coeff(jj) = rtmplist(j)
2694 IF (jj < ddapc_restraint_control%natoms .AND. jj /= 0) &
2695 cpabort(
"Need no or the same number of coeff as there are atoms.")
2698 DO i = 1,
SIZE(qs_control%ddapc_restraint_control)
2699 IF (qs_control%ddapc_restraint_control(i)%functional_form == &
2702 IF (k == 2)
CALL cp_abort(__location__, &
2703 "Only a single constraint possible yet, try to use restraints instead ")
2712 SUBROUTINE read_efield_sections(dft_control, efield_section)
2716 CHARACTER(len=default_path_length) :: file_name
2717 INTEGER :: i, io, j, n, unit_nr
2718 REAL(kind=
dp),
DIMENSION(:),
POINTER :: tmp_vals
2722 DO i = 1,
SIZE(dft_control%efield_fields)
2723 NULLIFY (dft_control%efield_fields(i)%efield)
2724 ALLOCATE (dft_control%efield_fields(i)%efield)
2725 efield => dft_control%efield_fields(i)%efield
2726 NULLIFY (efield%envelop_i_vars, efield%envelop_r_vars)
2728 r_val=efield%strength)
2732 ALLOCATE (efield%polarisation(
SIZE(tmp_vals)))
2733 efield%polarisation = tmp_vals
2735 r_val=efield%phase_offset)
2737 i_val=efield%envelop_id)
2739 r_val=efield%wavelength)
2742 efield%vec_pot_initial = tmp_vals
2745 ALLOCATE (efield%envelop_i_vars(2))
2748 i_val=efield%envelop_i_vars(1))
2750 i_val=efield%envelop_i_vars(2))
2752 ALLOCATE (efield%envelop_r_vars(2))
2755 r_val=efield%envelop_r_vars(1))
2757 r_val=efield%envelop_r_vars(2))
2758 ELSE IF (efield%envelop_id ==
ramp_env)
THEN
2759 ALLOCATE (efield%envelop_i_vars(4))
2762 i_val=efield%envelop_i_vars(1))
2764 i_val=efield%envelop_i_vars(2))
2766 i_val=efield%envelop_i_vars(3))
2768 i_val=efield%envelop_i_vars(4))
2769 ELSE IF (efield%envelop_id ==
custom_env)
THEN
2772 CALL open_file(file_name=trim(file_name), file_action=
"READ", file_status=
"OLD", unit_number=unit_nr)
2776 READ (unit_nr, *, iostat=io)
2781 ALLOCATE (efield%envelop_r_vars(n + 1))
2786 READ (unit_nr, *) efield%envelop_r_vars(j)
2787 efield%envelop_r_vars(j) =
cp_unit_to_cp2k(efield%envelop_r_vars(j),
"volt/m")
2792 END SUBROUTINE read_efield_sections
2800 SUBROUTINE read_rtp_section(dft_control, rtp_section)
2805 INTEGER :: i, j, n_elems
2806 INTEGER,
DIMENSION(:),
POINTER :: tmp
2807 LOGICAL :: is_present, local_moment_possible
2810 ALLOCATE (dft_control%rtp_control)
2812 i_val=dft_control%rtp_control%max_iter)
2814 i_val=dft_control%rtp_control%mat_exp)
2816 i_val=dft_control%rtp_control%aspc_order)
2818 r_val=dft_control%rtp_control%eps_exp)
2820 i_val=dft_control%rtp_control%rtp_method)
2822 i_val=dft_control%rtp_control%rtbse_ham)
2824 i_val=dft_control%rtp_control%propagator)
2826 r_val=dft_control%rtp_control%eps_ener)
2828 i_val=dft_control%rtp_control%initial_wfn)
2830 l_val=dft_control%rtp_control%hfx_redistribute)
2832 l_val=dft_control%rtp_control%apply_wfn_mix_init_restart)
2834 l_val=dft_control%rtp_control%apply_delta_pulse)
2836 l_val=dft_control%rtp_control%apply_delta_pulse_mag)
2838 l_val=dft_control%rtp_control%velocity_gauge)
2840 l_val=dft_control%rtp_control%nl_gauge_transform)
2842 l_val=dft_control%rtp_control%periodic)
2844 l_val=dft_control%rtp_control%linear_scaling)
2846 i_val=dft_control%rtp_control%mcweeny_max_iter)
2848 i_val=dft_control%rtp_control%acc_ref)
2850 r_val=dft_control%rtp_control%mcweeny_eps)
2852 r_val=dft_control%rtp_control%delta_pulse_scale)
2855 dft_control%rtp_control%delta_pulse_direction = tmp
2857 i_val=dft_control%rtp_control%sc_check_start)
2860 IF (is_present)
THEN
2861 IF (dft_control%rtp_control%linear_scaling) &
2862 CALL cp_abort(__location__, &
2863 "You have defined a time dependent projection of mos, but "// &
2864 "only the density matrix is propagated (DENSITY_PROPAGATION "// &
2865 ".TRUE.). Please either use MO-based real time DFT or do not "// &
2866 "define any PRINT%PROJECTION_MO section")
2867 dft_control%rtp_control%is_proj_mo = .true.
2869 dft_control%rtp_control%is_proj_mo = .false.
2872 local_moment_possible = (dft_control%rtp_control%rtp_method ==
rtp_method_bse) .OR. &
2873 ((.NOT. dft_control%rtp_control%periodic) .AND. dft_control%rtp_control%linear_scaling)
2878 dft_control%rtp_control%save_local_moments = &
2879 is_present .OR. dft_control%rtp_control%save_local_moments
2880 IF (is_present .AND. (.NOT. local_moment_possible))
THEN
2881 CALL cp_abort(__location__,
"Moments trace printing only "// &
2882 "implemented in non-periodic systems in linear scaling. "// &
2883 "Please use DFT%PRINT%MOMENTS for other printing.")
2886 i_val=dft_control%rtp_control%moment_trace_ref_type)
2888 r_vals=dft_control%rtp_control%moment_trace_user_ref_point)
2893 dft_control%rtp_control%save_local_moments = &
2894 is_present .OR. dft_control%rtp_control%save_local_moments
2895 IF (is_present .AND. (.NOT. local_moment_possible))
THEN
2897 CALL cp_abort(__location__,
"Moments Fourier transform printing "// &
2898 "implemented only for non-periodic systems in linear scaling.")
2902 r_val=dft_control%rtp_control%ft_damping)
2904 r_val=dft_control%rtp_control%ft_t0)
2908 l_val=dft_control%rtp_control%pade_requested)
2910 r_val=dft_control%rtp_control%pade_e_min)
2912 r_val=dft_control%rtp_control%pade_e_step)
2914 r_val=dft_control%rtp_control%pade_e_max)
2916 r_val=dft_control%rtp_control%pade_fit_e_min)
2918 r_val=dft_control%rtp_control%pade_fit_e_max)
2920 IF (dft_control%rtp_control%pade_fit_e_min < 0)
THEN
2921 dft_control%rtp_control%pade_fit_e_min = dft_control%rtp_control%pade_e_min
2923 IF (dft_control%rtp_control%pade_fit_e_max < 0)
THEN
2924 dft_control%rtp_control%pade_fit_e_max = dft_control%rtp_control%pade_e_max
2930 dft_control%rtp_control%save_local_moments = &
2931 is_present .OR. dft_control%rtp_control%save_local_moments
2932 IF (is_present .AND. (.NOT. local_moment_possible))
THEN
2934 CALL cp_abort(__location__,
"Polarizability printing "// &
2935 "implemented only for non-periodic systems.")
2938 NULLIFY (dft_control%rtp_control%print_pol_elements)
2939 IF (is_present)
THEN
2942 ALLOCATE (dft_control%rtp_control%print_pol_elements(n_elems, 2))
2945 dft_control%rtp_control%print_pol_elements(i, :) = tmp(:)
2950 IF (dft_control%rtp_control%print_pol_elements(i, j) > 3 .OR. &
2951 dft_control%rtp_control%print_pol_elements(i, j) < 1) &
2952 cpabort(
"Polarisation tensor element not 1,2 or 3 in at least one index")
2959 dft_control%rtp_control%save_local_moments = &
2960 dft_control%rtp_control%save_local_moments .OR. &
2961 ((.NOT. dft_control%rtp_control%periodic) .AND. dft_control%rtp_control%linear_scaling)
2963 END SUBROUTINE read_rtp_section
2971 SUBROUTINE guess_pol_elements(dftc, elems)
2973 INTEGER,
DIMENSION(:, :),
POINTER :: elems
2975 INTEGER :: i, i_nonzero, n_nonzero
2976 LOGICAL :: pol_vector_known
2977 REAL(kind=
dp),
DIMENSION(3) :: pol_vector
2979 pol_vector_known = .false.
2982 IF (dftc%rtp_control%apply_delta_pulse .OR. dftc%rtp_control%apply_delta_pulse_mag)
THEN
2983 pol_vector(:) = real(dftc%rtp_control%delta_pulse_direction(:), kind=
dp)
2986 pol_vector(:) = dftc%efield_fields(1)%efield%polarisation(:)
2988 IF (dot_product(pol_vector, pol_vector) > 0.0_dp) pol_vector_known = .true.
2990 IF (.NOT. pol_vector_known)
THEN
2991 cpabort(
"Cannot guess polarization elements - please specify!")
2996 IF (pol_vector(i) /= 0.0_dp)
THEN
2997 n_nonzero = n_nonzero + 1
3001 IF (n_nonzero > 1)
THEN
3002 CALL cp_abort(__location__, &
3003 "More than one non-zero field elements - "// &
3004 "cannot guess polarizability elements - please specify!")
3005 ELSE IF (n_nonzero == 0)
THEN
3006 CALL cp_abort(__location__, &
3007 "No non-zero field elements - "// &
3008 "cannot guess polarizability elements - please specify!")
3012 ALLOCATE (elems(3, 2))
3015 elems(i, 2) = i_nonzero
3019 END SUBROUTINE guess_pol_elements
3026 SUBROUTINE read_admm_block_list(admm_control, dft_section)
3030 INTEGER :: irep, list_size, n_rep
3031 INTEGER,
DIMENSION(:),
POINTER :: tmplist
3038 ALLOCATE (admm_control%blocks(n_rep))
3042 i_rep_val=irep, i_vals=tmplist)
3043 list_size =
SIZE(tmplist)
3044 ALLOCATE (admm_control%blocks(irep)%list(list_size))
3045 admm_control%blocks(irep)%list(:) = tmplist(:)
3048 END SUBROUTINE read_admm_block_list
3057 SUBROUTINE read_hairy_probes_sections(dft_control, hairy_probes_section)
3061 INTEGER :: i, j, jj, kk, n_rep
3062 INTEGER,
DIMENSION(:),
POINTER :: tmplist
3064 DO i = 1,
SIZE(dft_control%probe)
3065 NULLIFY (dft_control%probe(i)%atom_ids)
3070 CALL section_vals_val_get(hairy_probes_section,
"ATOM_IDS", i_rep_section=i, i_rep_val=kk, i_vals=tmplist)
3071 jj = jj +
SIZE(tmplist)
3074 dft_control%probe(i)%natoms = jj
3075 IF (dft_control%probe(i)%natoms < 1) &
3076 cpabort(
"Need at least 1 atom to use hair probes formalism")
3077 ALLOCATE (dft_control%probe(i)%atom_ids(dft_control%probe(i)%natoms))
3081 CALL section_vals_val_get(hairy_probes_section,
"ATOM_IDS", i_rep_section=i, i_rep_val=kk, i_vals=tmplist)
3082 DO j = 1,
SIZE(tmplist)
3084 dft_control%probe(i)%atom_ids(jj) = tmplist(j)
3088 CALL section_vals_val_get(hairy_probes_section,
"MU", i_rep_section=i, r_val=dft_control%probe(i)%mu)
3090 CALL section_vals_val_get(hairy_probes_section,
"T", i_rep_section=i, r_val=dft_control%probe(i)%T)
3092 CALL section_vals_val_get(hairy_probes_section,
"ALPHA", i_rep_section=i, r_val=dft_control%probe(i)%alpha)
3094 CALL section_vals_val_get(hairy_probes_section,
"eps_hp", i_rep_section=i, r_val=dft_control%probe(i)%eps_hp)
3097 END SUBROUTINE read_hairy_probes_sections
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public vandevondele2005b
integer, save, public umari2002
integer, save, public yin2017
integer, save, public stewart2007
integer, save, public caldeweyher2020
integer, save, public stengel2009
integer, save, public vandevondele2005a
integer, save, public caldeweyher2017
integer, save, public grimme2017
integer, save, public lippert1999
integer, save, public dewar1977
integer, save, public elstner1998
integer, save, public vanvoorhis2015
integer, save, public repasky2002
integer, save, public hu2007
integer, save, public andreussi2012
integer, save, public asgeirsson2017
integer, save, public rocha2006
integer, save, public lippert1997
integer, save, public fattebert2002
integer, save, public thiel1992
integer, save, public pracht2019
integer, save, public porezag1995
integer, save, public bannwarth2019
integer, save, public souza2002
integer, save, public schenter2008
integer, save, public krack2000
integer, save, public dewar1985
integer, save, public stewart1989
integer, save, public seifert1996
integer, save, public zhechkov2005
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dft_control_create(dft_control)
allocates and perform a very basic initialization
subroutine, public expot_control_create(expot_control)
...
subroutine, public maxwell_control_create(maxwell_control)
...
subroutine, public ddapc_control_create(ddapc_restraint_control)
create the ddapc_restraint_type
subroutine, public admm_control_create(admm_control)
...
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)
...
Utility routines to open and close files. Tracking of preconnections.
subroutine, public open_file(file_name, file_status, file_form, file_action, file_position, file_pad, unit_number, debug, skip_get_unit_number, file_access)
Opens the requested file using a free unit number.
subroutine, public close_file(unit_number, file_status, keep_preconnection)
Close an open file given by its logical unit number. Optionally, keep the file and unit preconnected.
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
Utility routines to read data from files. Kept as close as possible to the old parser because.
subroutine, public parser_read_line(parser, nline, at_end)
Read the next line from a logical unit "unit" (I/O node only). Skip (nline-1) lines and skip also all...
Utility routines to read data from files. Kept as close as possible to the old parser because.
subroutine, public parser_reset(parser)
Resets the parser: rewinding the unit and re-initializing all parser structures.
subroutine, public parser_release(parser)
releases the parser
subroutine, public parser_create(parser, file_name, unit_nr, para_env, end_section_label, separator_chars, comment_char, continuation_char, quote_char, section_char, parse_white_lines, initial_variables, apply_preprocessing)
Start a parser run. Initial variables allow to @SET stuff before opening the file.
real(kind=dp) function, public cp_unit_from_cp2k(value, unit_str, defaults, power)
converts from the internal cp2k units to the given unit
real(kind=dp) function, public cp_unit_to_cp2k(value, unit_str, defaults, power)
converts to the internal cp2k units to the given unit
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
integer, parameter, public default_path_length
Definition of mathematical constants and functions.
real(kind=dp), parameter, public fourpi
subroutine, public pair_potential_reallocate(p, lb1_new, ub1_new, lj, lj_charmm, williams, goodwin, eam, nequip, bmhft, bmhftd, ipbv, buck4r, buckmo, gp, tersoff, siepmann, gal, gal21, tab, deepmd, ace)
Cleans the potential parameter type.
Periodic Table related data definitions.
subroutine, public get_ptable_info(symbol, number, amass, ielement, covalent_radius, metallic_radius, vdw_radius, found)
Pass information about the kind given the element symbol.
Utility subroutines for CDFT calculations.
subroutine, public read_cdft_control_section(qs_control, cdft_control_section)
reads the input parameters needed for CDFT with OT
Input control types for NEGF/SMEAGOL transport calculations.
subroutine, public read_smeagol_control(smeagol_control, smeagol_section)
Read SMEAGOL-related input parameters.
Utilities for string manipulations.
elemental subroutine, public uppercase(string)
Convert all lower case characters in a string to upper case.
All kind of helpful little routines.
Define XAS TDP control type and associated create, release, etc subroutines, as well as XAS TDP envir...
subroutine, public read_xas_tdp_control(xas_tdp_control, xas_tdp_section)
Reads the inputs and stores in xas_tdp_control_type.
Writes information on XC functionals to output.
subroutine, public xc_write(iounit, xc_section, lsd)
...
Exchange and Correlation functional calculations.
logical function, public xc_uses_norm_drho(xc_fun_section, lsd)
...
logical function, public xc_uses_kinetic_energy_density(xc_fun_section, lsd)
...
type of a logger, at the moment it contains just a print level starting at which level it should be l...