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)
994 qs_control%pw_grid_opt%spherical = .true.
995 qs_control%pw_grid_opt%fullspace = .false.
997 qs_control%pw_grid_opt%spherical = .false.
998 qs_control%pw_grid_opt%fullspace = .true.
1000 qs_control%pw_grid_opt%spherical = .false.
1001 qs_control%pw_grid_opt%fullspace = .false.
1006 qs_control%do_ppl_method = itmp
1009 qs_control%pw_grid_opt%distribution_layout = tmplist
1013 CALL section_vals_val_get(qs_section,
"EXTRAPOLATION", i_val=qs_control%wf_interpolation_method_nr)
1014 CALL section_vals_val_get(qs_section,
"EXTRAPOLATION_ORDER", i_val=qs_control%wf_extrapolation_order)
1018 qs_control%gapw = .false.
1019 qs_control%gapw_xc = .false.
1020 qs_control%gpw = .false.
1021 qs_control%pao = .false.
1022 qs_control%dftb = .false.
1023 qs_control%xtb = .false.
1024 qs_control%semi_empirical = .false.
1025 qs_control%ofgpw = .false.
1026 qs_control%lrigpw = .false.
1027 qs_control%rigpw = .false.
1028 SELECT CASE (qs_control%method_id)
1032 qs_control%gapw = .true.
1034 qs_control%gapw_xc = .true.
1038 qs_control%gpw = .true.
1040 qs_control%ofgpw = .true.
1042 qs_control%lrigpw = .true.
1044 qs_control%rigpw = .true.
1046 qs_control%dftb = .true.
1050 qs_control%xtb = .true.
1055 qs_control%semi_empirical = .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.
1080 qs_control%semi_empirical = .true.
1083 CALL section_vals_get(mull_section, explicit=qs_control%mulliken_restraint)
1085 IF (qs_control%mulliken_restraint)
THEN
1086 CALL section_vals_val_get(mull_section,
"STRENGTH", r_val=qs_control%mulliken_restraint_control%strength)
1087 CALL section_vals_val_get(mull_section,
"TARGET", r_val=qs_control%mulliken_restraint_control%target)
1092 jj = jj +
SIZE(tmplist)
1094 qs_control%mulliken_restraint_control%natoms = jj
1095 IF (qs_control%mulliken_restraint_control%natoms < 1) &
1096 cpabort(
"Need at least 1 atom to use mulliken constraints")
1097 ALLOCATE (qs_control%mulliken_restraint_control%atoms(qs_control%mulliken_restraint_control%natoms))
1101 DO j = 1,
SIZE(tmplist)
1103 qs_control%mulliken_restraint_control%atoms(jj) = tmplist(j)
1107 CALL section_vals_get(ddapc_restraint_section, n_repetition=nrep, explicit=qs_control%ddapc_restraint)
1108 IF (qs_control%ddapc_restraint)
THEN
1109 ALLOCATE (qs_control%ddapc_restraint_control(nrep))
1111 qs_control%ddapc_restraint_is_spin = .false.
1112 qs_control%ddapc_explicit_potential = .false.
1115 CALL section_vals_get(s2_restraint_section, explicit=qs_control%s2_restraint)
1116 IF (qs_control%s2_restraint)
THEN
1118 r_val=qs_control%s2_restraint_control%strength)
1120 r_val=qs_control%s2_restraint_control%target)
1122 i_val=qs_control%s2_restraint_control%functional_form)
1126 IF (qs_control%cdft)
THEN
1131 IF (qs_control%semi_empirical)
THEN
1133 l_val=qs_control%se_control%orthogonal_basis)
1135 r_val=qs_control%se_control%delta)
1137 l_val=qs_control%se_control%analytical_gradients)
1139 l_val=qs_control%se_control%force_kdsod_EX)
1142 i_val=qs_control%se_control%integral_screening)
1145 CALL cp_warn(__location__, &
1146 "PNNL semi-empirical parameterization supports only the Slater type "// &
1147 "integral scheme. Revert to Slater and continue the calculation.")
1152 i_val=qs_control%se_control%ga_ncells)
1155 r_val=qs_control%se_control%cutoff_lrc)
1156 qs_control%se_control%taper_lrc = qs_control%se_control%cutoff_lrc
1161 r_val=qs_control%se_control%taper_lrc)
1164 r_val=qs_control%se_control%range_lrc)
1167 r_val=qs_control%se_control%cutoff_cou)
1168 qs_control%se_control%taper_cou = qs_control%se_control%cutoff_cou
1173 r_val=qs_control%se_control%taper_cou)
1176 r_val=qs_control%se_control%range_cou)
1179 r_val=qs_control%se_control%cutoff_exc)
1180 qs_control%se_control%taper_exc = qs_control%se_control%cutoff_exc
1185 r_val=qs_control%se_control%taper_exc)
1188 r_val=qs_control%se_control%range_exc)
1192 r_val=qs_control%se_control%taper_scr)
1194 r_val=qs_control%se_control%range_scr)
1198 i_val=qs_control%se_control%periodic_type)
1199 SELECT CASE (qs_control%se_control%periodic_type)
1201 qs_control%se_control%do_ewald = .false.
1202 qs_control%se_control%do_ewald_r3 = .false.
1203 qs_control%se_control%do_ewald_gks = .false.
1205 qs_control%se_control%do_ewald = .true.
1206 qs_control%se_control%do_ewald_r3 = .false.
1207 qs_control%se_control%do_ewald_gks = .false.
1209 qs_control%se_control%do_ewald = .false.
1210 qs_control%se_control%do_ewald_r3 = .false.
1211 qs_control%se_control%do_ewald_gks = .true.
1213 CALL cp_abort(__location__, &
1214 "A periodic semi-empirical calculation was requested with a long-range "// &
1215 "summation on the single integral evaluation. This scheme is supported "// &
1216 "only by the PNNL parameterization.")
1218 qs_control%se_control%do_ewald = .true.
1219 qs_control%se_control%do_ewald_r3 = .true.
1220 qs_control%se_control%do_ewald_gks = .false.
1221 IF (qs_control%se_control%integral_screening /=
do_se_is_kdso) &
1222 CALL cp_abort(__location__, &
1223 "A periodic semi-empirical calculation was requested with a long-range "// &
1224 "summation for the slowly convergent part 1/R^3, which is not congruent "// &
1225 "with the integral screening chosen. The only integral screening supported "// &
1226 "by this periodic type calculation is the standard Klopman-Dewar-Sabelli-Ohno.")
1231 l_val=qs_control%se_control%dispersion)
1233 r_val=qs_control%se_control%rcdisp)
1235 r_val=qs_control%se_control%epscn)
1237 qs_control%se_control%sd3(1) = scal(1)
1238 qs_control%se_control%sd3(2) = scal(2)
1239 qs_control%se_control%sd3(3) = scal(3)
1241 c_val=qs_control%se_control%dispersion_parameter_file)
1245 cpabort(
"EWALD_R3 not implemented yet!")
1257 qs_control%se_control%orthogonal_basis = .true.
1262 IF (qs_control%dftb)
THEN
1264 l_val=qs_control%dftb_control%orthogonal_basis)
1266 l_val=qs_control%dftb_control%self_consistent)
1268 l_val=qs_control%dftb_control%dispersion)
1270 l_val=qs_control%dftb_control%dftb3_diagonal)
1272 l_val=qs_control%dftb_control%hb_sr_damp)
1274 r_val=qs_control%dftb_control%eps_disp)
1278 l_val=qs_control%dftb_control%do_ewald)
1280 qs_control%dftb_control%do_ewald = (qs_control%periodicity /= 0)
1283 c_val=qs_control%dftb_control%sk_file_path)
1285 c_val=qs_control%dftb_control%sk_file_list)
1287 r_val=qs_control%dftb_control%hb_sr_para)
1289 ALLOCATE (qs_control%dftb_control%sk_pair_list(3, n_var))
1293 qs_control%dftb_control%sk_pair_list(1:3, k) = clist(1:3)
1297 i_val=qs_control%dftb_control%dispersion_type)
1299 c_val=qs_control%dftb_control%uff_force_field)
1302 r_val=qs_control%dftb_control%rcdisp)
1304 r_val=qs_control%dftb_control%epscn)
1306 r_val=qs_control%dftb_control%exp_pre)
1308 r_val=qs_control%dftb_control%scaling)
1310 qs_control%dftb_control%sd3(1) = scal(1)
1311 qs_control%dftb_control%sd3(2) = scal(2)
1312 qs_control%dftb_control%sd3(3) = scal(3)
1314 qs_control%dftb_control%sd3bj(1) = scal(1)
1315 qs_control%dftb_control%sd3bj(2) = scal(2)
1316 qs_control%dftb_control%sd3bj(3) = scal(3)
1317 qs_control%dftb_control%sd3bj(4) = scal(4)
1319 c_val=qs_control%dftb_control%dispersion_parameter_file)
1321 IF (qs_control%dftb_control%dispersion)
CALL cite_reference(
zhechkov2005)
1322 IF (qs_control%dftb_control%self_consistent)
CALL cite_reference(
elstner1998)
1323 IF (qs_control%dftb_control%hb_sr_damp)
CALL cite_reference(
hu2007)
1327 IF (qs_control%xtb)
THEN
1332 l_val=qs_control%xtb_control%do_ewald)
1334 qs_control%xtb_control%do_ewald = (qs_control%periodicity /= 0)
1352 SELECT CASE (qs_control%xtb_control%gfn_type)
1359 cpabort(
"gfn2-xtb tbd")
1366 qs_control%xtb_control%sto_ng = ngauss
1368 qs_control%xtb_control%h_sto_ng = ngauss
1370 c_val=qs_control%xtb_control%parameter_file_path)
1374 c_val=qs_control%xtb_control%parameter_file_name)
1376 SELECT CASE (qs_control%xtb_control%gfn_type)
1378 qs_control%xtb_control%parameter_file_name =
"xTB0_parameters"
1380 qs_control%xtb_control%parameter_file_name =
"xTB1_parameters"
1382 cpabort(
"gfn2-xtb tbd")
1389 r_val=qs_control%xtb_control%rcdisp)
1391 r_val=qs_control%xtb_control%epscn)
1395 qs_control%xtb_control%s6 = scal(1)
1396 qs_control%xtb_control%s8 = scal(2)
1398 SELECT CASE (qs_control%xtb_control%gfn_type)
1400 qs_control%xtb_control%s6 = 1.00_dp
1401 qs_control%xtb_control%s8 = 2.85_dp
1403 qs_control%xtb_control%s6 = 1.00_dp
1404 qs_control%xtb_control%s8 = 2.40_dp
1406 cpabort(
"gfn2-xtb tbd")
1414 qs_control%xtb_control%a1 = scal(1)
1415 qs_control%xtb_control%a2 = scal(2)
1417 SELECT CASE (qs_control%xtb_control%gfn_type)
1419 qs_control%xtb_control%a1 = 0.80_dp
1420 qs_control%xtb_control%a2 = 4.60_dp
1422 qs_control%xtb_control%a1 = 0.63_dp
1423 qs_control%xtb_control%a2 = 5.00_dp
1425 cpabort(
"gfn2-xtb tbd")
1431 c_val=qs_control%xtb_control%dispersion_parameter_file)
1436 qs_control%xtb_control%ks = scal(1)
1437 qs_control%xtb_control%kp = scal(2)
1438 qs_control%xtb_control%kd = scal(3)
1439 qs_control%xtb_control%ksp = scal(4)
1440 qs_control%xtb_control%k2sh = scal(5)
1441 IF (qs_control%xtb_control%gfn_type == 0)
THEN
1443 qs_control%xtb_control%ksp = 0.5_dp*(scal(1) + scal(2))
1446 SELECT CASE (qs_control%xtb_control%gfn_type)
1448 qs_control%xtb_control%ks = 2.00_dp
1449 qs_control%xtb_control%kp = 2.4868_dp
1450 qs_control%xtb_control%kd = 2.27_dp
1451 qs_control%xtb_control%ksp = 2.2434_dp
1452 qs_control%xtb_control%k2sh = 1.1241_dp
1454 qs_control%xtb_control%ks = 1.85_dp
1455 qs_control%xtb_control%kp = 2.25_dp
1456 qs_control%xtb_control%kd = 2.00_dp
1457 qs_control%xtb_control%ksp = 2.08_dp
1458 qs_control%xtb_control%k2sh = 2.85_dp
1460 cpabort(
"gfn2-xtb tbd")
1468 qs_control%xtb_control%kg = scal(1)
1469 qs_control%xtb_control%kf = scal(2)
1471 SELECT CASE (qs_control%xtb_control%gfn_type)
1473 qs_control%xtb_control%kg = 2.00_dp
1474 qs_control%xtb_control%kf = 1.50_dp
1476 qs_control%xtb_control%kg = 2.00_dp
1477 qs_control%xtb_control%kf = 1.50_dp
1479 cpabort(
"gfn2-xtb tbd")
1485 qs_control%xtb_control%kcns = scal(1)
1486 qs_control%xtb_control%kcnp = scal(2)
1487 qs_control%xtb_control%kcnd = scal(3)
1492 SELECT CASE (qs_control%xtb_control%gfn_type)
1494 qs_control%xtb_control%ksen = scal(1)
1495 qs_control%xtb_control%kpen = scal(2)
1496 qs_control%xtb_control%kden = scal(3)
1498 qs_control%xtb_control%ken = scal(1)
1500 cpabort(
"gfn2-xtb tbd")
1505 SELECT CASE (qs_control%xtb_control%gfn_type)
1507 qs_control%xtb_control%ksen = 0.006_dp
1508 qs_control%xtb_control%kpen = -0.001_dp
1509 qs_control%xtb_control%kden = -0.002_dp
1511 qs_control%xtb_control%ken = -0.007_dp
1513 cpabort(
"gfn2-xtb tbd")
1520 qs_control%xtb_control%ben = scal(1)
1525 r_val=qs_control%xtb_control%enscale)
1527 SELECT CASE (qs_control%xtb_control%gfn_type)
1529 qs_control%xtb_control%enscale = -0.09_dp
1531 qs_control%xtb_control%enscale = 0._dp
1533 cpabort(
"gfn2-xtb tbd")
1540 l_val=qs_control%xtb_control%xb_interaction)
1542 qs_control%xtb_control%kxr = scal(1)
1543 qs_control%xtb_control%kx2 = scal(2)
1546 l_val=qs_control%xtb_control%do_nonbonded)
1548 IF (explicit .AND. qs_control%xtb_control%do_nonbonded)
THEN
1552 CALL read_gp_section(qs_control%xtb_control%nonbonded, genpot_section, 0)
1556 r_val=qs_control%xtb_control%eps_pair)
1559 qs_control%xtb_control%coulomb_sr_cut = scal(1)
1561 qs_control%xtb_control%coulomb_sr_eps = scal(1)
1567 SELECT CASE (qs_control%xtb_control%gfn_type)
1569 qs_control%xtb_control%coulomb_interaction = .false.
1570 qs_control%xtb_control%coulomb_lr = .false.
1571 qs_control%xtb_control%tb3_interaction = .false.
1572 qs_control%xtb_control%check_atomic_charges = .false.
1574 l_val=qs_control%xtb_control%var_dipole)
1578 l_val=qs_control%xtb_control%coulomb_interaction)
1580 l_val=qs_control%xtb_control%coulomb_lr)
1582 l_val=qs_control%xtb_control%tb3_interaction)
1585 l_val=qs_control%xtb_control%check_atomic_charges)
1586 qs_control%xtb_control%var_dipole = .false.
1588 cpabort(
"gfn2-xtb tbd")
1592 qs_control%xtb_control%kab_nval = n_rep
1594 ALLOCATE (qs_control%xtb_control%kab_param(3, n_rep))
1595 ALLOCATE (qs_control%xtb_control%kab_types(2, n_rep))
1596 ALLOCATE (qs_control%xtb_control%kab_vals(n_rep))
1599 qs_control%xtb_control%kab_param(1, j) = clist(1)
1601 ielement=qs_control%xtb_control%kab_types(1, j))
1602 qs_control%xtb_control%kab_param(2, j) = clist(2)
1604 ielement=qs_control%xtb_control%kab_types(2, j))
1605 qs_control%xtb_control%kab_param(3, j) = clist(3)
1606 READ (clist(3),
'(F10.0)') qs_control%xtb_control%kab_vals(j)
1610 IF (qs_control%xtb_control%gfn_type == 0)
THEN
1612 qs_control%xtb_control%ksrb = scal(1)
1613 qs_control%xtb_control%esrb = scal(2)
1614 qs_control%xtb_control%gscal = scal(3)
1615 qs_control%xtb_control%c1srb = scal(4)
1616 qs_control%xtb_control%c2srb = scal(5)
1617 qs_control%xtb_control%shift = scal(6)
1622 SELECT CASE (trim(cval))
1624 qs_control%xtb_control%enshift_type = 0
1626 qs_control%xtb_control%enshift_type = 1
1628 qs_control%xtb_control%enshift_type = 2
1630 cpabort(
"Unknown value for EN_SHIFT_TYPE")
1634 CALL read_eeq_param(eeq_section, qs_control%xtb_control%eeq_sparam)
1643 l_val=qs_control%xtb_control%do_tblite)
1645 i_val=qs_control%xtb_control%tblite_method)
1646 IF (qs_control%xtb_control%do_tblite)
THEN
1653 qs_control%xtb_control%do_ewald = .false.
1656 CALL timestop(handle)
1670 CHARACTER(LEN=*),
PARAMETER :: routinen =
'read_tddfpt2_control'
1672 CHARACTER(LEN=default_string_length), &
1673 DIMENSION(:),
POINTER :: tmpstringlist
1674 INTEGER :: handle, irep, isize, nrep
1675 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: inds
1676 LOGICAL :: do_ewald, do_exchange, expl, explicit, &
1678 REAL(kind=
dp) :: filter, fval, hfx
1680 soc_section, stda_section, xc_func, &
1683 CALL timeset(routinen, handle)
1699 CALL section_vals_val_get(t_section,
"MIN_AMPLITUDE", r_val=t_control%min_excitation_amplitude)
1707 CALL section_vals_val_get(t_section,
"ADMM_KERNEL_CORRECTION_SYMMETRIC", l_val=t_control%admm_symm)
1708 CALL section_vals_val_get(t_section,
"ADMM_KERNEL_XC_CORRECTION", l_val=t_control%admm_xc_correction)
1709 CALL section_vals_val_get(t_section,
"EXCITON_DESCRIPTORS", l_val=t_control%do_exciton_descriptors)
1710 CALL section_vals_val_get(t_section,
"DIRECTIONAL_EXCITON_DESCRIPTORS", l_val=t_control%do_directional_exciton_descriptors)
1716 IF (
SIZE(tmpstringlist) == 2)
THEN
1718 SELECT CASE (tmpstringlist(2))
1730 cpabort(
"Unknown basis size in AUTO_BASIS keyword:"//trim(tmpstringlist(1)))
1733 SELECT CASE (tmpstringlist(1))
1736 t_control%auto_basis_p_lri_aux = isize
1738 cpabort(
"Unknown basis type in AUTO_BASIS keyword:"//trim(tmpstringlist(1)))
1741 CALL cp_abort(__location__, &
1742 "AUTO_BASIS keyword in &PROPERTIES &TDDFT section has a wrong number of arguments.")
1746 IF (t_control%conv < 0) &
1747 t_control%conv = abs(t_control%conv)
1755 t_control%dipole_form = 0
1760 CALL section_vals_val_get(dipole_section,
"REFERENCE_POINT", r_vals=t_control%dipole_ref_point)
1762 NULLIFY (t_control%dipole_ref_point)
1764 cpabort(
"User-defined reference point should be given explicitly")
1772 t_control%do_soc = .true.
1779 IF (t_control%mgrid_is_explicit)
THEN
1780 CALL section_vals_val_get(mgrid_section,
"NGRIDS", i_val=t_control%mgrid_ngrids, explicit=explicit)
1781 IF (.NOT. explicit) t_control%mgrid_ngrids =
SIZE(qs_control%e_cutoff)
1783 CALL section_vals_val_get(mgrid_section,
"CUTOFF", r_val=t_control%mgrid_cutoff, explicit=explicit)
1784 IF (.NOT. explicit) t_control%mgrid_cutoff = qs_control%cutoff
1787 r_val=t_control%mgrid_progression_factor, explicit=explicit)
1789 IF (t_control%mgrid_progression_factor <= 1.0_dp) &
1790 CALL cp_abort(__location__, &
1791 "Progression factor should be greater then 1.0 to ensure multi-grid ordering")
1793 t_control%mgrid_progression_factor = qs_control%progression_factor
1796 CALL section_vals_val_get(mgrid_section,
"COMMENSURATE", l_val=t_control%mgrid_commensurate_mgrids, explicit=explicit)
1797 IF (.NOT. explicit) t_control%mgrid_commensurate_mgrids = qs_control%commensurate_mgrids
1798 IF (t_control%mgrid_commensurate_mgrids)
THEN
1800 t_control%mgrid_progression_factor = 4.0_dp
1802 t_control%mgrid_progression_factor = qs_control%progression_factor
1806 CALL section_vals_val_get(mgrid_section,
"REL_CUTOFF", r_val=t_control%mgrid_relative_cutoff, explicit=explicit)
1807 IF (.NOT. explicit) t_control%mgrid_relative_cutoff = qs_control%relative_cutoff
1809 CALL section_vals_val_get(mgrid_section,
"MULTIGRID_SET", l_val=multigrid_set, explicit=explicit)
1810 IF (.NOT. explicit) multigrid_set = .false.
1811 IF (multigrid_set)
THEN
1814 NULLIFY (t_control%mgrid_e_cutoff)
1817 CALL section_vals_val_get(mgrid_section,
"REALSPACE", l_val=t_control%mgrid_realspace_mgrids, explicit=explicit)
1818 IF (.NOT. explicit) t_control%mgrid_realspace_mgrids = qs_control%realspace_mgrids
1821 l_val=t_control%mgrid_skip_load_balance, explicit=explicit)
1822 IF (.NOT. explicit) t_control%mgrid_skip_load_balance = qs_control%skip_load_balance_distributed
1824 IF (
ASSOCIATED(t_control%mgrid_e_cutoff))
THEN
1825 IF (
SIZE(t_control%mgrid_e_cutoff) /= t_control%mgrid_ngrids) &
1826 cpabort(
"Inconsistent values for number of multi-grids")
1829 t_control%mgrid_e_cutoff = -t_control%mgrid_e_cutoff
1830 ALLOCATE (inds(t_control%mgrid_ngrids))
1831 CALL sort(t_control%mgrid_e_cutoff, t_control%mgrid_ngrids, inds)
1833 t_control%mgrid_e_cutoff = -t_control%mgrid_e_cutoff
1847 t_control%stda_control%hfx_fraction = 0.0_dp
1848 t_control%stda_control%do_exchange = .true.
1849 t_control%stda_control%eps_td_filter = 1.e-10_dp
1850 t_control%stda_control%mn_alpha = -99.0_dp
1851 t_control%stda_control%mn_beta = -99.0_dp
1853 SELECT CASE (qs_control%periodicity)
1855 t_control%stda_control%do_ewald = .false.
1857 t_control%stda_control%do_ewald = .true.
1859 t_control%stda_control%do_ewald = .true.
1861 t_control%stda_control%do_ewald = .true.
1863 cpabort(
"Illegal value for periodiciy")
1868 IF (expl) t_control%stda_control%hfx_fraction = hfx
1870 IF (expl) t_control%stda_control%eps_td_filter = filter
1872 IF (expl) t_control%stda_control%do_ewald = do_ewald
1874 IF (expl) t_control%stda_control%do_exchange = do_exchange
1876 t_control%stda_control%mn_alpha = fval
1878 t_control%stda_control%mn_beta = fval
1881 t_control%stda_control%coulomb_sr_cut = fval
1883 t_control%stda_control%coulomb_sr_eps = fval
1886 CALL timestop(handle)
1898 CHARACTER(len=*),
PARAMETER :: routinen =
'write_dft_control'
1900 CHARACTER(LEN=20) :: tmpstr
1901 INTEGER :: handle, i, i_rep, n_rep, output_unit
1902 REAL(kind=
dp) :: density_cut, density_smooth_cut_range, &
1903 gradient_cut, tau_cut
1910 IF (dft_control%qs_control%semi_empirical)
RETURN
1911 IF (dft_control%qs_control%dftb)
RETURN
1912 IF (dft_control%qs_control%xtb)
THEN
1913 CALL write_xtb_control(dft_control%qs_control%xtb_control, dft_section)
1916 CALL timeset(routinen, handle)
1922 "PRINT%DFT_CONTROL_PARAMETERS", extension=
".Log")
1924 IF (output_unit > 0)
THEN
1928 IF (dft_control%uks)
THEN
1929 WRITE (unit=output_unit, fmt=
"(/,T2,A,T78,A)") &
1930 "DFT| Spin unrestricted (spin-polarized) Kohn-Sham calculation",
"UKS"
1931 ELSE IF (dft_control%roks)
THEN
1932 WRITE (unit=output_unit, fmt=
"(/,T2,A,T77,A)") &
1933 "DFT| Spin restricted open Kohn-Sham calculation",
"ROKS"
1935 WRITE (unit=output_unit, fmt=
"(/,T2,A,T78,A)") &
1936 "DFT| Spin restricted Kohn-Sham (RKS) calculation",
"RKS"
1939 WRITE (unit=output_unit, fmt=
"(T2,A,T76,I5)") &
1940 "DFT| Multiplicity", dft_control%multiplicity
1941 WRITE (unit=output_unit, fmt=
"(T2,A,T76,I5)") &
1942 "DFT| Number of spin states", dft_control%nspins
1944 WRITE (unit=output_unit, fmt=
"(T2,A,T76,I5)") &
1945 "DFT| Charge", dft_control%charge
1948 SELECT CASE (dft_control%sic_method_id)
1952 tmpstr =
"SPZ/MAURI SIC"
1954 tmpstr =
"US/MAURI SIC"
1958 tmpstr =
"Explicit Orbital SIC"
1961 cpabort(
"SIC option unknown")
1964 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
1965 "DFT| Self-interaction correction (SIC)", adjustr(trim(tmpstr))
1967 IF (dft_control%sic_method_id /=
sic_none)
THEN
1968 WRITE (unit=output_unit, fmt=
"(T2,A,T66,ES15.6)") &
1969 "DFT| SIC scaling parameter a", dft_control%sic_scaling_a, &
1970 "DFT| SIC scaling parameter b", dft_control%sic_scaling_b
1973 IF (dft_control%sic_method_id ==
sic_eo)
THEN
1975 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A)") &
1976 "DFT| SIC orbitals",
"ALL"
1979 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A)") &
1980 "DFT| SIC orbitals",
"UNPAIRED"
1987 CALL section_vals_val_get(xc_section,
"density_smooth_cutoff_range", r_val=density_smooth_cut_range)
1989 WRITE (unit=output_unit, fmt=
"(T2,A,T66,ES15.6)") &
1990 "DFT| Cutoffs: density ", density_cut, &
1991 "DFT| gradient", gradient_cut, &
1992 "DFT| tau ", tau_cut, &
1993 "DFT| cutoff_smoothing_range", density_smooth_cut_range
1996 WRITE (output_unit,
'( A, T61, A )') &
1997 " DFT| XC density smoothing ", adjustr(tmpstr)
2000 WRITE (output_unit,
'( A, T61, A )') &
2001 " DFT| XC derivatives ", adjustr(tmpstr)
2002 IF (dft_control%dft_plus_u)
THEN
2003 NULLIFY (enum, keyword, section)
2007 WRITE (unit=output_unit, fmt=
"(/,T2,A,T41,A40)") &
2008 "DFT+U| Method", adjustr(trim(
enum_i2c(enum, dft_control%plus_u_method_id)))
2009 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2010 "DFT+U| Check atomic kind information for details"
2014 WRITE (unit=output_unit, fmt=
"(A)")
""
2015 CALL xc_write(output_unit, xc_section, dft_control%lsd)
2017 IF (dft_control%apply_period_efield)
THEN
2018 WRITE (unit=output_unit, fmt=
"(A)")
""
2019 IF (dft_control%period_efield%displacement_field)
THEN
2020 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2021 "PERIODIC_EFIELD| Use displacement field formulation"
2022 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,ES14.6)") &
2023 "PERIODIC_EFIELD| Displacement field filter: x", &
2024 dft_control%period_efield%d_filter(1), &
2025 "PERIODIC_EFIELD| y", &
2026 dft_control%period_efield%d_filter(2), &
2027 "PERIODIC_EFIELD| z", &
2028 dft_control%period_efield%d_filter(3)
2030 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,ES14.6)") &
2031 "PERIODIC_EFIELD| Polarisation vector: x", &
2032 dft_control%period_efield%polarisation(1), &
2033 "PERIODIC_EFIELD| y", &
2034 dft_control%period_efield%polarisation(2), &
2035 "PERIODIC_EFIELD| z", &
2036 dft_control%period_efield%polarisation(3)
2038 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,I14)") &
2039 "PERIODIC_EFIELD| Start Frame:", &
2040 dft_control%period_efield%start_frame, &
2041 "PERIODIC_EFIELD| End Frame:", &
2042 dft_control%period_efield%end_frame
2044 IF (
ALLOCATED(dft_control%period_efield%strength_list))
THEN
2045 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,I14)") &
2046 "PERIODIC_EFIELD| Number of Intensities:", &
2047 SIZE(dft_control%period_efield%strength_list)
2048 WRITE (unit=output_unit, fmt=
"(T2,A,I10,T66,1X,ES14.6)") &
2049 "PERIODIC_EFIELD| Intensity List [a.u.] ", &
2050 1, dft_control%period_efield%strength_list(1)
2051 DO i = 2,
SIZE(dft_control%period_efield%strength_list)
2052 WRITE (unit=output_unit, fmt=
"(T2,A,I10,T66,1X,ES14.6)") &
2053 "PERIODIC_EFIELD| ", &
2054 i, dft_control%period_efield%strength_list(i)
2057 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,ES14.6)") &
2058 "PERIODIC_EFIELD| Intensity [a.u.]:", &
2059 dft_control%period_efield%strength
2062 IF (sqrt(dot_product(dft_control%period_efield%polarisation, &
2063 dft_control%period_efield%polarisation)) < epsilon(0.0_dp))
THEN
2064 cpabort(
"Invalid (too small) polarisation vector specified for PERIODIC_EFIELD")
2068 IF (dft_control%do_sccs)
THEN
2069 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
2070 "SCCS| Self-consistent continuum solvation model"
2071 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2072 "SCCS| Relative permittivity of the solvent (medium)", &
2073 dft_control%sccs_control%epsilon_solvent, &
2074 "SCCS| Absolute permittivity [a.u.]", &
2075 dft_control%sccs_control%epsilon_solvent/
fourpi
2076 SELECT CASE (dft_control%sccs_control%method_id)
2078 WRITE (unit=output_unit, fmt=
"(T2,A,/,(T2,A,T61,ES20.6))") &
2079 "SCCS| Dielectric function proposed by Andreussi et al.", &
2080 "SCCS| rho_max", dft_control%sccs_control%rho_max, &
2081 "SCCS| rho_min", dft_control%sccs_control%rho_min
2083 WRITE (unit=output_unit, fmt=
"(T2,A,/,(T2,A,T61,ES20.6))") &
2084 "SCCS| Dielectric function proposed by Fattebert and Gygi", &
2085 "SCCS| beta", dft_control%sccs_control%beta, &
2086 "SCCS| rho_zero", dft_control%sccs_control%rho_zero
2088 cpabort(
"Invalid SCCS model specified. Please, check your input!")
2090 SELECT CASE (dft_control%sccs_control%derivative_method)
2092 WRITE (unit=output_unit, fmt=
"(T2,A,T46,A35)") &
2093 "SCCS| Numerical derivative calculation", &
2096 WRITE (unit=output_unit, fmt=
"(T2,A,T46,A35)") &
2097 "SCCS| Numerical derivative calculation", &
2098 adjustr(
"3-point stencil central differences")
2100 WRITE (unit=output_unit, fmt=
"(T2,A,T46,A35)") &
2101 "SCCS| Numerical derivative calculation", &
2102 adjustr(
"5-point stencil central differences")
2104 WRITE (unit=output_unit, fmt=
"(T2,A,T46,A35)") &
2105 "SCCS| Numerical derivative calculation", &
2106 adjustr(
"7-point stencil central differences")
2108 CALL cp_abort(__location__, &
2109 "Invalid derivative method specified for SCCS model. "// &
2110 "Please, check your input!")
2112 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2113 "SCCS| Repulsion parameter alpha [mN/m] = [dyn/cm]", &
2115 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2116 "SCCS| Dispersion parameter beta [GPa]", &
2118 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2119 "SCCS| Surface tension gamma [mN/m] = [dyn/cm]", &
2121 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2122 "SCCS| Mixing parameter applied during the iteration cycle", &
2123 dft_control%sccs_control%mixing
2124 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2125 "SCCS| Tolerance for the convergence of the SCCS iteration cycle", &
2126 dft_control%sccs_control%eps_sccs
2127 WRITE (unit=output_unit, fmt=
"(T2,A,T61,I20)") &
2128 "SCCS| Maximum number of iteration steps", &
2129 dft_control%sccs_control%max_iter
2130 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2131 "SCCS| SCF convergence threshold for starting the SCCS iteration", &
2132 dft_control%sccs_control%eps_scf
2133 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2134 "SCCS| Numerical increment for the cavity surface calculation", &
2135 dft_control%sccs_control%delta_rho
2138 WRITE (unit=output_unit, fmt=
"(A)")
""
2142 IF (dft_control%hairy_probes .EQV. .true.)
THEN
2143 n_rep =
SIZE(dft_control%probe)
2144 IF (output_unit > 0)
THEN
2146 WRITE (unit=output_unit, fmt=
"(T2,A,I5)") &
2147 "HP | hair probe set", i_rep
2148 WRITE (unit=output_unit, fmt=
"(T2,A,T61,*(I5))") &
2149 "HP| atom indexes", &
2150 (dft_control%probe(i_rep)%atom_ids(i), i=1, dft_control%probe(i_rep)%natoms)
2151 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2152 "HP| potential", dft_control%probe(i_rep)%mu
2153 WRITE (unit=output_unit, fmt=
"(T2,A,T61,F20.2)") &
2154 "HP| temperature", dft_control%probe(i_rep)%T
2155 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2156 "HP| eps_hp", dft_control%probe(i_rep)%eps_hp
2162 "PRINT%DFT_CONTROL_PARAMETERS")
2164 CALL timestop(handle)
2184 "PRINT%DFT_CONTROL_PARAMETERS", extension=
".Log")
2186 IF (iounit > 0)
THEN
2188 SELECT CASE (admm_control%admm_type)
2190 WRITE (unit=iounit, fmt=
"(/,T2,A,T77,A)")
"ADMM| Specific ADMM type specified",
"NONE"
2192 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMM1"
2194 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMM2"
2196 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMMS"
2198 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMMP"
2200 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMMQ"
2202 cpabort(
"admm_type")
2205 SELECT CASE (admm_control%purification_method)
2207 WRITE (unit=iounit, fmt=
"(T2,A,T77,A)")
"ADMM| Density matrix purification method",
"NONE"
2209 WRITE (unit=iounit, fmt=
"(T2,A,T75,A)")
"ADMM| Density matrix purification method",
"Cauchy"
2211 WRITE (unit=iounit, fmt=
"(T2,A,T66,A)")
"ADMM| Density matrix purification method",
"Cauchy subspace"
2213 WRITE (unit=iounit, fmt=
"(T2,A,T63,A)")
"ADMM| Density matrix purification method",
"MO diagonalization"
2215 WRITE (unit=iounit, fmt=
"(T2,A,T71,A)")
"ADMM| Density matrix purification method",
"MO no diag"
2217 WRITE (unit=iounit, fmt=
"(T2,A,T74,A)")
"ADMM| Density matrix purification method",
"McWeeny"
2219 WRITE (unit=iounit, fmt=
"(T2,A,T73,A)")
"ADMM| Density matrix purification method",
"NONE(DM)"
2221 cpabort(
"admm_purification_method")
2224 SELECT CASE (admm_control%method)
2226 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Orbital projection on ADMM basis"
2228 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Blocked Fock matrix projection with full purification"
2230 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Blocked Fock matrix projection"
2232 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Orbital projection with charge constrain"
2234 cpabort(
"admm method")
2237 SELECT CASE (admm_control%scaling_model)
2240 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Use Merlot (2014) scaling model"
2242 cpabort(
"admm scaling_model")
2245 WRITE (unit=iounit, fmt=
"(T2,A,T61,G20.10)")
"ADMM| eps_filter", admm_control%eps_filter
2247 SELECT CASE (admm_control%aux_exch_func)
2249 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| No exchange functional correction term used"
2251 WRITE (unit=iounit, fmt=
"(T2,A,T74,A)")
"ADMM| Exchange functional in correction term",
"(W)PBEX"
2253 WRITE (unit=iounit, fmt=
"(T2,A,T77,A)")
"ADMM| Exchange functional in correction term",
"PBEX"
2255 WRITE (unit=iounit, fmt=
"(T2,A,T77,A)")
"ADMM| Exchange functional in correction term",
"OPTX"
2257 WRITE (unit=iounit, fmt=
"(T2,A,T74,A)")
"ADMM| Exchange functional in correction term",
"Becke88"
2259 WRITE (unit=iounit, fmt=
"(T2,A,T74,A)")
"ADMM| Exchange functional in correction term",
"SlaterX"
2261 cpabort(
"admm aux_exch_func")
2264 WRITE (unit=iounit, fmt=
"(A)")
""
2269 "PRINT%DFT_CONTROL_PARAMETERS")
2277 SUBROUTINE write_xtb_control(xtb_control, dft_section)
2281 CHARACTER(len=*),
PARAMETER :: routinen =
'write_xtb_control'
2283 INTEGER :: handle, output_unit
2286 CALL timeset(routinen, handle)
2291 "PRINT%DFT_CONTROL_PARAMETERS", extension=
".Log")
2293 IF (output_unit > 0)
THEN
2295 WRITE (unit=output_unit, fmt=
"(/,T2,A,T31,A50)") &
2296 "xTB| Parameter file", adjustr(trim(xtb_control%parameter_file_name))
2297 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2298 "xTB| Basis expansion STO-NG", xtb_control%sto_ng
2299 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2300 "xTB| Basis expansion STO-NG for Hydrogen", xtb_control%h_sto_ng
2301 WRITE (unit=output_unit, fmt=
"(T2,A,T71,E10.4)") &
2302 "xTB| Repulsive pair potential accuracy", xtb_control%eps_pair
2303 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.6)") &
2304 "xTB| Repulsive enhancement factor", xtb_control%enscale
2305 WRITE (unit=output_unit, fmt=
"(T2,A,T71,L10)") &
2306 "xTB| Halogen interaction potential", xtb_control%xb_interaction
2307 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.3)") &
2308 "xTB| Halogen interaction potential cutoff radius", xtb_control%xb_radius
2309 WRITE (unit=output_unit, fmt=
"(T2,A,T71,L10)") &
2310 "xTB| Nonbonded interactions", xtb_control%do_nonbonded
2311 SELECT CASE (xtb_control%vdw_type)
2313 WRITE (unit=output_unit, fmt=
"(T2,A)")
"xTB| No vdW potential selected"
2315 WRITE (unit=output_unit, fmt=
"(T2,A,T72,A)")
"xTB| vdW potential type:",
"DFTD3(BJ)"
2316 WRITE (unit=output_unit, fmt=
"(T2,A,T31,A50)") &
2317 "xTB| D3 Dispersion: Parameter file", adjustr(trim(xtb_control%dispersion_parameter_file))
2319 WRITE (unit=output_unit, fmt=
"(T2,A,T76,A)")
"xTB| vdW potential type:",
"DFTD4"
2320 WRITE (unit=output_unit, fmt=
"(T2,A,T31,A50)") &
2321 "xTB| D4 Dispersion: Parameter file", adjustr(trim(xtb_control%dispersion_parameter_file))
2325 WRITE (unit=output_unit, fmt=
"(T2,A,T51,3F10.3)") &
2326 "xTB| Huckel constants ks kp kd", xtb_control%ks, xtb_control%kp, xtb_control%kd
2327 WRITE (unit=output_unit, fmt=
"(T2,A,T61,2F10.3)") &
2328 "xTB| Huckel constants ksp k2sh", xtb_control%ksp, xtb_control%k2sh
2329 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.3)") &
2330 "xTB| Mataga-Nishimoto exponent", xtb_control%kg
2331 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.3)") &
2332 "xTB| Repulsion potential exponent", xtb_control%kf
2333 WRITE (unit=output_unit, fmt=
"(T2,A,T51,3F10.3)") &
2334 "xTB| Coordination number scaling kcn(s) kcn(p) kcn(d)", &
2335 xtb_control%kcns, xtb_control%kcnp, xtb_control%kcnd
2336 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.3)") &
2337 "xTB| Electronegativity scaling", xtb_control%ken
2338 WRITE (unit=output_unit, fmt=
"(T2,A,T61,2F10.3)") &
2339 "xTB| Halogen potential scaling kxr kx2", xtb_control%kxr, xtb_control%kx2
2340 WRITE (unit=output_unit, fmt=
"(/)")
2345 "PRINT%DFT_CONTROL_PARAMETERS")
2347 CALL timestop(handle)
2349 END SUBROUTINE write_xtb_control
2360 CHARACTER(len=*),
PARAMETER :: routinen =
'write_qs_control'
2362 CHARACTER(len=20) :: method, quadrature
2363 INTEGER :: handle, i, igrid_level, ngrid_level, &
2372 IF (qs_control%semi_empirical)
RETURN
2373 IF (qs_control%dftb)
RETURN
2374 IF (qs_control%xtb)
RETURN
2375 CALL timeset(routinen, handle)
2376 NULLIFY (logger, print_section_vals, qs_section, qs_section_vals)
2382 NULLIFY (enum, keyword)
2385 method = trim(
enum_i2c(enum, qs_control%method_id))
2387 NULLIFY (enum, keyword)
2390 quadrature = trim(
enum_i2c(enum, qs_control%gapw_control%quadrature))
2393 "DFT_CONTROL_PARAMETERS", extension=
".Log")
2394 IF (output_unit > 0)
THEN
2395 ngrid_level =
SIZE(qs_control%e_cutoff)
2396 WRITE (unit=output_unit, fmt=
"(/,T2,A,T61,A20)") &
2397 "QS| Method:", adjustr(method)
2398 IF (qs_control%pw_grid_opt%spherical)
THEN
2399 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A)") &
2400 "QS| Density plane wave grid type",
" SPHERICAL HALFSPACE"
2401 ELSE IF (qs_control%pw_grid_opt%fullspace)
THEN
2402 WRITE (unit=output_unit, fmt=
"(T2,A,T57,A)") &
2403 "QS| Density plane wave grid type",
" NON-SPHERICAL FULLSPACE"
2405 WRITE (unit=output_unit, fmt=
"(T2,A,T57,A)") &
2406 "QS| Density plane wave grid type",
" NON-SPHERICAL HALFSPACE"
2408 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2409 "QS| Number of grid levels:",
SIZE(qs_control%e_cutoff)
2410 IF (ngrid_level == 1)
THEN
2411 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2412 "QS| Density cutoff [a.u.]:", qs_control%e_cutoff(1)
2414 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2415 "QS| Density cutoff [a.u.]:", qs_control%cutoff
2416 IF (qs_control%commensurate_mgrids) &
2417 WRITE (unit=output_unit, fmt=
"(T2,A)")
"QS| Using commensurate multigrids"
2418 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2419 "QS| Multi grid cutoff [a.u.]: 1) grid level", qs_control%e_cutoff(1)
2420 WRITE (unit=output_unit, fmt=
"(T2,A,I3,A,T71,F10.1)") &
2421 (
"QS| ", igrid_level,
") grid level", &
2422 qs_control%e_cutoff(igrid_level), &
2423 igrid_level=2,
SIZE(qs_control%e_cutoff))
2425 IF (qs_control%pao)
THEN
2426 WRITE (unit=output_unit, fmt=
"(T2,A)")
"QS| PAO active"
2428 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2429 "QS| Grid level progression factor:", qs_control%progression_factor
2430 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2431 "QS| Relative density cutoff [a.u.]:", qs_control%relative_cutoff
2432 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2433 "QS| Interaction thresholds: eps_pgf_orb:", &
2434 qs_control%eps_pgf_orb, &
2435 "QS| eps_filter_matrix:", &
2436 qs_control%eps_filter_matrix, &
2437 "QS| eps_core_charge:", &
2438 qs_control%eps_core_charge, &
2439 "QS| eps_rho_gspace:", &
2440 qs_control%eps_rho_gspace, &
2441 "QS| eps_rho_rspace:", &
2442 qs_control%eps_rho_rspace, &
2443 "QS| eps_gvg_rspace:", &
2444 qs_control%eps_gvg_rspace, &
2446 qs_control%eps_ppl, &
2449 IF (qs_control%gapw)
THEN
2450 SELECT CASE (qs_control%gapw_control%basis_1c)
2452 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2453 "QS| GAPW| One center basis from orbital basis primitives"
2455 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2456 "QS| GAPW| One center basis extended with primitives (small:s)"
2458 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2459 "QS| GAPW| One center basis extended with primitives (medium:sp)"
2461 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2462 "QS| GAPW| One center basis extended with primitives (large:spd)"
2464 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2465 "QS| GAPW| One center basis extended with primitives (very large:spdf)"
2467 cpabort(
"basis_1c incorrect")
2469 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2470 "QS| GAPW| eps_fit:", &
2471 qs_control%gapw_control%eps_fit, &
2472 "QS| GAPW| eps_iso:", &
2473 qs_control%gapw_control%eps_iso, &
2474 "QS| GAPW| eps_svd:", &
2475 qs_control%gapw_control%eps_svd, &
2476 "QS| GAPW| eps_cpc:", &
2477 qs_control%gapw_control%eps_cpc
2478 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2479 "QS| GAPW| atom-r-grid: quadrature:", &
2481 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2482 "QS| GAPW| atom-s-grid: max l :", &
2483 qs_control%gapw_control%lmax_sphere, &
2484 "QS| GAPW| max_l_rho0 :", &
2485 qs_control%gapw_control%lmax_rho0
2486 IF (qs_control%gapw_control%non_paw_atoms)
THEN
2487 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2488 "QS| GAPW| At least one kind is NOT PAW, i.e. it has only soft AO "
2490 IF (qs_control%gapw_control%nopaw_as_gpw)
THEN
2491 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2492 "QS| GAPW| The NOT PAW atoms are treated fully GPW"
2495 IF (qs_control%gapw_xc)
THEN
2496 SELECT CASE (qs_control%gapw_control%basis_1c)
2498 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2499 "QS| GAPW_XC| One center basis from orbital basis primitives"
2501 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2502 "QS| GAPW_XC| One center basis extended with primitives (small:s)"
2504 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2505 "QS| GAPW_XC| One center basis extended with primitives (medium:sp)"
2507 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2508 "QS| GAPW_XC| One center basis extended with primitives (large:spd)"
2510 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2511 "QS| GAPW_XC| One center basis extended with primitives (very large:spdf)"
2513 cpabort(
"basis_1c incorrect")
2515 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2516 "QS| GAPW_XC| eps_fit:", &
2517 qs_control%gapw_control%eps_fit, &
2518 "QS| GAPW_XC| eps_iso:", &
2519 qs_control%gapw_control%eps_iso, &
2520 "QS| GAPW_XC| eps_svd:", &
2521 qs_control%gapw_control%eps_svd
2522 WRITE (unit=output_unit, fmt=
"(T2,A,T55,A30)") &
2523 "QS| GAPW_XC|atom-r-grid: quadrature:", &
2524 enum_i2c(enum, qs_control%gapw_control%quadrature)
2525 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2526 "QS| GAPW_XC| atom-s-grid: max l :", &
2527 qs_control%gapw_control%lmax_sphere
2529 IF (qs_control%mulliken_restraint)
THEN
2530 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2531 "QS| Mulliken restraint target", qs_control%mulliken_restraint_control%target
2532 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2533 "QS| Mulliken restraint strength", qs_control%mulliken_restraint_control%strength
2534 WRITE (unit=output_unit, fmt=
"(T2,A,T73,I8)") &
2535 "QS| Mulliken restraint atoms: ", qs_control%mulliken_restraint_control%natoms
2536 WRITE (unit=output_unit, fmt=
"(5I8)") qs_control%mulliken_restraint_control%atoms
2538 IF (qs_control%ddapc_restraint)
THEN
2539 DO i = 1,
SIZE(qs_control%ddapc_restraint_control)
2540 ddapc_restraint_control => qs_control%ddapc_restraint_control(i)
2541 IF (
SIZE(qs_control%ddapc_restraint_control) > 1) &
2542 WRITE (unit=output_unit, fmt=
"(T2,A,T3,I8)") &
2543 "QS| parameters for DDAPC restraint number", i
2544 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2545 "QS| ddapc restraint target", ddapc_restraint_control%target
2546 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2547 "QS| ddapc restraint strength", ddapc_restraint_control%strength
2548 WRITE (unit=output_unit, fmt=
"(T2,A,T73,I8)") &
2549 "QS| ddapc restraint atoms: ", ddapc_restraint_control%natoms
2550 WRITE (unit=output_unit, fmt=
"(5I8)") ddapc_restraint_control%atoms
2551 WRITE (unit=output_unit, fmt=
"(T2,A)")
"Coefficients:"
2552 WRITE (unit=output_unit, fmt=
"(5F6.2)") ddapc_restraint_control%coeff
2553 SELECT CASE (ddapc_restraint_control%functional_form)
2555 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2556 "QS| ddapc restraint functional form :",
"RESTRAINT"
2558 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2559 "QS| ddapc restraint functional form :",
"CONSTRAINT"
2561 cpabort(
"Unknown ddapc restraint")
2565 IF (qs_control%s2_restraint)
THEN
2566 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2567 "QS| s2 restraint target", qs_control%s2_restraint_control%target
2568 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2569 "QS| s2 restraint strength", qs_control%s2_restraint_control%strength
2570 SELECT CASE (qs_control%s2_restraint_control%functional_form)
2572 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2573 "QS| s2 restraint functional form :",
"RESTRAINT"
2574 cpabort(
"Not yet implemented")
2576 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2577 "QS| s2 restraint functional form :",
"CONSTRAINT"
2579 cpabort(
"Unknown ddapc restraint")
2584 "DFT_CONTROL_PARAMETERS")
2586 CALL timestop(handle)
2604 TYPE(
section_vals_type),
OPTIONAL,
POINTER :: qs_section, ddapc_restraint_section
2606 INTEGER :: i, j, jj, k, n_rep
2607 INTEGER,
DIMENSION(:),
POINTER :: tmplist
2608 REAL(kind=
dp),
DIMENSION(:),
POINTER :: rtmplist
2612 IF (
PRESENT(ddapc_restraint_section))
THEN
2613 IF (
ASSOCIATED(qs_control%ddapc_restraint_control))
THEN
2614 IF (
SIZE(qs_control%ddapc_restraint_control) >= 2) &
2615 cpabort(
"ET_COUPLING cannot be used in combination with a normal restraint")
2617 ddapc_section => ddapc_restraint_section
2618 ALLOCATE (qs_control%ddapc_restraint_control(1))
2622 IF (
PRESENT(qs_section))
THEN
2623 NULLIFY (ddapc_section)
2628 DO i = 1,
SIZE(qs_control%ddapc_restraint_control)
2631 ddapc_restraint_control => qs_control%ddapc_restraint_control(i)
2634 r_val=ddapc_restraint_control%strength)
2636 r_val=ddapc_restraint_control%target)
2638 i_val=ddapc_restraint_control%functional_form)
2642 i_val=ddapc_restraint_control%density_type)
2647 i_rep_val=k, i_vals=tmplist)
2648 DO j = 1,
SIZE(tmplist)
2652 IF (jj < 1) cpabort(
"Need at least 1 atom to use ddapc constraints")
2653 ddapc_restraint_control%natoms = jj
2654 IF (
ASSOCIATED(ddapc_restraint_control%atoms)) &
2655 DEALLOCATE (ddapc_restraint_control%atoms)
2656 ALLOCATE (ddapc_restraint_control%atoms(ddapc_restraint_control%natoms))
2660 i_rep_val=k, i_vals=tmplist)
2661 DO j = 1,
SIZE(tmplist)
2663 ddapc_restraint_control%atoms(jj) = tmplist(j)
2667 IF (
ASSOCIATED(ddapc_restraint_control%coeff)) &
2668 DEALLOCATE (ddapc_restraint_control%coeff)
2669 ALLOCATE (ddapc_restraint_control%coeff(ddapc_restraint_control%natoms))
2670 ddapc_restraint_control%coeff = 1.0_dp
2677 i_rep_val=k, r_vals=rtmplist)
2678 DO j = 1,
SIZE(rtmplist)
2680 IF (jj > ddapc_restraint_control%natoms) &
2681 cpabort(
"Need the same number of coeff as there are atoms ")
2682 ddapc_restraint_control%coeff(jj) = rtmplist(j)
2685 IF (jj < ddapc_restraint_control%natoms .AND. jj /= 0) &
2686 cpabort(
"Need no or the same number of coeff as there are atoms.")
2689 DO i = 1,
SIZE(qs_control%ddapc_restraint_control)
2690 IF (qs_control%ddapc_restraint_control(i)%functional_form == &
2693 IF (k == 2)
CALL cp_abort(__location__, &
2694 "Only a single constraint possible yet, try to use restraints instead ")
2703 SUBROUTINE read_efield_sections(dft_control, efield_section)
2707 CHARACTER(len=default_path_length) :: file_name
2708 INTEGER :: i, io, j, n, unit_nr
2709 REAL(kind=
dp),
DIMENSION(:),
POINTER :: tmp_vals
2713 DO i = 1,
SIZE(dft_control%efield_fields)
2714 NULLIFY (dft_control%efield_fields(i)%efield)
2715 ALLOCATE (dft_control%efield_fields(i)%efield)
2716 efield => dft_control%efield_fields(i)%efield
2717 NULLIFY (efield%envelop_i_vars, efield%envelop_r_vars)
2719 r_val=efield%strength)
2723 ALLOCATE (efield%polarisation(
SIZE(tmp_vals)))
2724 efield%polarisation = tmp_vals
2726 r_val=efield%phase_offset)
2728 i_val=efield%envelop_id)
2730 r_val=efield%wavelength)
2733 efield%vec_pot_initial = tmp_vals
2736 ALLOCATE (efield%envelop_i_vars(2))
2739 i_val=efield%envelop_i_vars(1))
2741 i_val=efield%envelop_i_vars(2))
2743 ALLOCATE (efield%envelop_r_vars(2))
2746 r_val=efield%envelop_r_vars(1))
2748 r_val=efield%envelop_r_vars(2))
2749 ELSE IF (efield%envelop_id ==
ramp_env)
THEN
2750 ALLOCATE (efield%envelop_i_vars(4))
2753 i_val=efield%envelop_i_vars(1))
2755 i_val=efield%envelop_i_vars(2))
2757 i_val=efield%envelop_i_vars(3))
2759 i_val=efield%envelop_i_vars(4))
2760 ELSE IF (efield%envelop_id ==
custom_env)
THEN
2763 CALL open_file(file_name=trim(file_name), file_action=
"READ", file_status=
"OLD", unit_number=unit_nr)
2767 READ (unit_nr, *, iostat=io)
2772 ALLOCATE (efield%envelop_r_vars(n + 1))
2777 READ (unit_nr, *) efield%envelop_r_vars(j)
2778 efield%envelop_r_vars(j) =
cp_unit_to_cp2k(efield%envelop_r_vars(j),
"volt/m")
2783 END SUBROUTINE read_efield_sections
2791 SUBROUTINE read_rtp_section(dft_control, rtp_section)
2796 INTEGER :: i, j, n_elems
2797 INTEGER,
DIMENSION(:),
POINTER :: tmp
2798 LOGICAL :: is_present, local_moment_possible
2801 ALLOCATE (dft_control%rtp_control)
2803 i_val=dft_control%rtp_control%max_iter)
2805 i_val=dft_control%rtp_control%mat_exp)
2807 i_val=dft_control%rtp_control%aspc_order)
2809 r_val=dft_control%rtp_control%eps_exp)
2811 i_val=dft_control%rtp_control%rtp_method)
2813 i_val=dft_control%rtp_control%rtbse_ham)
2815 i_val=dft_control%rtp_control%propagator)
2817 r_val=dft_control%rtp_control%eps_ener)
2819 i_val=dft_control%rtp_control%initial_wfn)
2821 l_val=dft_control%rtp_control%hfx_redistribute)
2823 l_val=dft_control%rtp_control%apply_wfn_mix_init_restart)
2825 l_val=dft_control%rtp_control%apply_delta_pulse)
2827 l_val=dft_control%rtp_control%apply_delta_pulse_mag)
2829 l_val=dft_control%rtp_control%velocity_gauge)
2831 l_val=dft_control%rtp_control%nl_gauge_transform)
2833 l_val=dft_control%rtp_control%periodic)
2835 l_val=dft_control%rtp_control%linear_scaling)
2837 i_val=dft_control%rtp_control%mcweeny_max_iter)
2839 i_val=dft_control%rtp_control%acc_ref)
2841 r_val=dft_control%rtp_control%mcweeny_eps)
2843 r_val=dft_control%rtp_control%delta_pulse_scale)
2846 dft_control%rtp_control%delta_pulse_direction = tmp
2848 i_val=dft_control%rtp_control%sc_check_start)
2851 IF (is_present)
THEN
2852 IF (dft_control%rtp_control%linear_scaling) &
2853 CALL cp_abort(__location__, &
2854 "You have defined a time dependent projection of mos, but "// &
2855 "only the density matrix is propagated (DENSITY_PROPAGATION "// &
2856 ".TRUE.). Please either use MO-based real time DFT or do not "// &
2857 "define any PRINT%PROJECTION_MO section")
2858 dft_control%rtp_control%is_proj_mo = .true.
2860 dft_control%rtp_control%is_proj_mo = .false.
2863 local_moment_possible = (dft_control%rtp_control%rtp_method ==
rtp_method_bse) .OR. &
2864 ((.NOT. dft_control%rtp_control%periodic) .AND. dft_control%rtp_control%linear_scaling)
2869 dft_control%rtp_control%save_local_moments = &
2870 is_present .OR. dft_control%rtp_control%save_local_moments
2871 IF (is_present .AND. (.NOT. local_moment_possible))
THEN
2872 CALL cp_abort(__location__,
"Moments trace printing only "// &
2873 "implemented in non-periodic systems in linear scaling. "// &
2874 "Please use DFT%PRINT%MOMENTS for other printing.")
2877 i_val=dft_control%rtp_control%moment_trace_ref_type)
2879 r_vals=dft_control%rtp_control%moment_trace_user_ref_point)
2884 dft_control%rtp_control%save_local_moments = &
2885 is_present .OR. dft_control%rtp_control%save_local_moments
2886 IF (is_present .AND. (.NOT. local_moment_possible))
THEN
2888 CALL cp_abort(__location__,
"Moments Fourier transform printing "// &
2889 "implemented only for non-periodic systems in linear scaling.")
2893 r_val=dft_control%rtp_control%ft_damping)
2895 r_val=dft_control%rtp_control%ft_t0)
2899 l_val=dft_control%rtp_control%pade_requested)
2901 r_val=dft_control%rtp_control%pade_e_min)
2903 r_val=dft_control%rtp_control%pade_e_step)
2905 r_val=dft_control%rtp_control%pade_e_max)
2907 r_val=dft_control%rtp_control%pade_fit_e_min)
2909 r_val=dft_control%rtp_control%pade_fit_e_max)
2911 IF (dft_control%rtp_control%pade_fit_e_min < 0)
THEN
2912 dft_control%rtp_control%pade_fit_e_min = dft_control%rtp_control%pade_e_min
2914 IF (dft_control%rtp_control%pade_fit_e_max < 0)
THEN
2915 dft_control%rtp_control%pade_fit_e_max = dft_control%rtp_control%pade_e_max
2921 dft_control%rtp_control%save_local_moments = &
2922 is_present .OR. dft_control%rtp_control%save_local_moments
2923 IF (is_present .AND. (.NOT. local_moment_possible))
THEN
2925 CALL cp_abort(__location__,
"Polarizability printing "// &
2926 "implemented only for non-periodic systems.")
2929 NULLIFY (dft_control%rtp_control%print_pol_elements)
2930 IF (is_present)
THEN
2933 ALLOCATE (dft_control%rtp_control%print_pol_elements(n_elems, 2))
2936 dft_control%rtp_control%print_pol_elements(i, :) = tmp(:)
2941 IF (dft_control%rtp_control%print_pol_elements(i, j) > 3 .OR. &
2942 dft_control%rtp_control%print_pol_elements(i, j) < 1) &
2943 cpabort(
"Polarisation tensor element not 1,2 or 3 in at least one index")
2950 dft_control%rtp_control%save_local_moments = &
2951 dft_control%rtp_control%save_local_moments .OR. &
2952 ((.NOT. dft_control%rtp_control%periodic) .AND. dft_control%rtp_control%linear_scaling)
2954 END SUBROUTINE read_rtp_section
2962 SUBROUTINE guess_pol_elements(dftc, elems)
2964 INTEGER,
DIMENSION(:, :),
POINTER :: elems
2966 INTEGER :: i, i_nonzero, n_nonzero
2967 LOGICAL :: pol_vector_known
2968 REAL(kind=
dp),
DIMENSION(3) :: pol_vector
2970 pol_vector_known = .false.
2973 IF (dftc%rtp_control%apply_delta_pulse .OR. dftc%rtp_control%apply_delta_pulse_mag)
THEN
2974 pol_vector(:) = real(dftc%rtp_control%delta_pulse_direction(:), kind=
dp)
2977 pol_vector(:) = dftc%efield_fields(1)%efield%polarisation(:)
2979 IF (dot_product(pol_vector, pol_vector) > 0.0_dp) pol_vector_known = .true.
2981 IF (.NOT. pol_vector_known)
THEN
2982 cpabort(
"Cannot guess polarization elements - please specify!")
2987 IF (pol_vector(i) /= 0.0_dp)
THEN
2988 n_nonzero = n_nonzero + 1
2992 IF (n_nonzero > 1)
THEN
2993 CALL cp_abort(__location__, &
2994 "More than one non-zero field elements - "// &
2995 "cannot guess polarizability elements - please specify!")
2996 ELSE IF (n_nonzero == 0)
THEN
2997 CALL cp_abort(__location__, &
2998 "No non-zero field elements - "// &
2999 "cannot guess polarizability elements - please specify!")
3003 ALLOCATE (elems(3, 2))
3006 elems(i, 2) = i_nonzero
3010 END SUBROUTINE guess_pol_elements
3017 SUBROUTINE read_admm_block_list(admm_control, dft_section)
3021 INTEGER :: irep, list_size, n_rep
3022 INTEGER,
DIMENSION(:),
POINTER :: tmplist
3029 ALLOCATE (admm_control%blocks(n_rep))
3033 i_rep_val=irep, i_vals=tmplist)
3034 list_size =
SIZE(tmplist)
3035 ALLOCATE (admm_control%blocks(irep)%list(list_size))
3036 admm_control%blocks(irep)%list(:) = tmplist(:)
3039 END SUBROUTINE read_admm_block_list
3048 SUBROUTINE read_hairy_probes_sections(dft_control, hairy_probes_section)
3052 INTEGER :: i, j, jj, kk, n_rep
3053 INTEGER,
DIMENSION(:),
POINTER :: tmplist
3055 DO i = 1,
SIZE(dft_control%probe)
3056 NULLIFY (dft_control%probe(i)%atom_ids)
3061 CALL section_vals_val_get(hairy_probes_section,
"ATOM_IDS", i_rep_section=i, i_rep_val=kk, i_vals=tmplist)
3062 jj = jj +
SIZE(tmplist)
3065 dft_control%probe(i)%natoms = jj
3066 IF (dft_control%probe(i)%natoms < 1) &
3067 cpabort(
"Need at least 1 atom to use hair probes formalism")
3068 ALLOCATE (dft_control%probe(i)%atom_ids(dft_control%probe(i)%natoms))
3072 CALL section_vals_val_get(hairy_probes_section,
"ATOM_IDS", i_rep_section=i, i_rep_val=kk, i_vals=tmplist)
3073 DO j = 1,
SIZE(tmplist)
3075 dft_control%probe(i)%atom_ids(jj) = tmplist(j)
3079 CALL section_vals_val_get(hairy_probes_section,
"MU", i_rep_section=i, r_val=dft_control%probe(i)%mu)
3081 CALL section_vals_val_get(hairy_probes_section,
"T", i_rep_section=i, r_val=dft_control%probe(i)%T)
3083 CALL section_vals_val_get(hairy_probes_section,
"ALPHA", i_rep_section=i, r_val=dft_control%probe(i)%alpha)
3085 CALL section_vals_val_get(hairy_probes_section,
"eps_hp", i_rep_section=i, r_val=dft_control%probe(i)%eps_hp)
3088 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, allegro, 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...