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)
753 CHARACTER(len=*),
PARAMETER :: routinen =
'read_mgrid_section'
755 INTEGER :: handle, igrid_level, ngrid_level
756 LOGICAL :: explicit, multigrid_set
758 REAL(
dp),
DIMENSION(:),
POINTER :: cutofflist
761 CALL timeset(routinen, handle)
763 NULLIFY (mgrid_section, cutofflist)
769 CALL section_vals_val_get(mgrid_section,
"PROGRESSION_FACTOR", r_val=qs_control%progression_factor)
774 l_val=qs_control%skip_load_balance_distributed)
777 IF (qs_control%semi_empirical .OR. qs_control%dftb .OR. qs_control%xtb)
THEN
779 multigrid_set = .false.
782 IF (.NOT. explicit) cutoff = 1.0_dp
785 ALLOCATE (qs_control%e_cutoff(ngrid_level))
786 qs_control%cutoff = cutoff
788 IF (multigrid_set)
THEN
790 IF (qs_control%commensurate_mgrids)
THEN
791 cpabort(
"Do not specify cutoffs for the commensurate grids (NYI)")
795 IF (
ASSOCIATED(cutofflist))
THEN
796 IF (
SIZE(cutofflist, 1) /= ngrid_level)
THEN
797 cpabort(
"Number of multi-grids requested and number of cutoff values do not match")
799 DO igrid_level = 1, ngrid_level
800 qs_control%e_cutoff(igrid_level) = cutofflist(igrid_level)
804 DO igrid_level = ngrid_level, 1, -1
805 IF (qs_control%cutoff <= qs_control%e_cutoff(igrid_level))
THEN
806 qs_control%cutoff = qs_control%e_cutoff(igrid_level)
810 IF (igrid_level == 1)
THEN
811 qs_control%cutoff = qs_control%e_cutoff(1)
815 IF (qs_control%commensurate_mgrids) qs_control%progression_factor = 4.0_dp
816 qs_control%e_cutoff(1) = qs_control%cutoff
817 DO igrid_level = 2, ngrid_level
818 qs_control%e_cutoff(igrid_level) = qs_control%e_cutoff(igrid_level - 1)/ &
819 qs_control%progression_factor
823 DO igrid_level = 2, ngrid_level
824 IF (qs_control%e_cutoff(igrid_level) > qs_control%e_cutoff(igrid_level - 1))
THEN
825 cpabort(
"The cutoff values for the multi-grids are not ordered from large to small")
826 ELSE IF (qs_control%e_cutoff(igrid_level) == qs_control%e_cutoff(igrid_level - 1))
THEN
827 cpabort(
"The same cutoff value was specified for two multi-grids")
830 CALL timestop(handle)
843 CHARACTER(len=*),
PARAMETER :: routinen =
'read_qs_section'
845 CHARACTER(LEN=default_string_length) :: cval
846 CHARACTER(LEN=default_string_length), &
847 DIMENSION(:),
POINTER :: clist
848 INTEGER :: handle, itmp, j, jj, k, n_rep, n_var, &
850 INTEGER,
DIMENSION(:),
POINTER :: tmplist
851 LOGICAL :: explicit, was_present
852 REAL(
dp) :: tmp, tmpsqrt, value
853 REAL(
dp),
POINTER :: scal(:)
854 TYPE(
section_vals_type),
POINTER :: cdft_control_section, ddapc_restraint_section, &
855 dftb_parameter, dftb_section, eeq_section, genpot_section, lri_optbas_section, &
856 mull_section, nonbonded_section, s2_restraint_section, se_section, xtb_parameter, &
857 xtb_section, xtb_tblite
859 CALL timeset(routinen, handle)
861 was_present = .false.
862 NULLIFY (mull_section, ddapc_restraint_section, s2_restraint_section, &
863 se_section, dftb_section, xtb_section, dftb_parameter, xtb_parameter, lri_optbas_section, &
864 cdft_control_section, genpot_section, eeq_section)
884 tmpsqrt = sqrt(
value)
887 qs_control%eps_core_charge =
value/100.0_dp
890 qs_control%eps_pgf_orb = tmpsqrt
891 qs_control%eps_kg_orb = qs_control%eps_pgf_orb
893 qs_control%eps_ppnl = qs_control%eps_pgf_orb/100.0_dp
895 qs_control%eps_ppl = 1.0e-2_dp
897 qs_control%gapw_control%eps_cpc =
value
899 qs_control%eps_rho_gspace =
value
900 qs_control%eps_rho_rspace =
value
902 qs_control%eps_gvg_rspace = tmpsqrt
919 qs_control%eps_kg_orb = sqrt(tmp)
932 qs_control%eps_rho_rspace = qs_control%eps_rho_gspace
956 qs_control%gapw_control%alpha0_hard_from_input = .false.
957 IF (qs_control%gapw_control%alpha0_hard /= 0.0_dp) qs_control%gapw_control%alpha0_hard_from_input = .true.
959 CALL section_vals_val_get(qs_section,
"MAX_RAD_LOCAL", r_val=qs_control%gapw_control%max_rad_local)
969 CALL section_vals_val_get(qs_section,
"CLUSTER_EMBED_SUBSYS", l_val=qs_control%cluster_embed_subsys)
970 CALL section_vals_val_get(qs_section,
"HIGH_LEVEL_EMBED_SUBSYS", l_val=qs_control%high_level_embed_subsys)
981 IF (qs_control%gapw_control%basis_1c /=
gapw_1c_orb)
THEN
982 qs_control%gapw_control%eps_svd = max(qs_control%gapw_control%eps_svd, 1.e-12_dp)
989 qs_control%pw_grid_opt%spherical = .true.
990 qs_control%pw_grid_opt%fullspace = .false.
992 qs_control%pw_grid_opt%spherical = .false.
993 qs_control%pw_grid_opt%fullspace = .true.
995 qs_control%pw_grid_opt%spherical = .false.
996 qs_control%pw_grid_opt%fullspace = .false.
1001 qs_control%do_ppl_method = itmp
1004 qs_control%pw_grid_opt%distribution_layout = tmplist
1008 CALL section_vals_val_get(qs_section,
"EXTRAPOLATION", i_val=qs_control%wf_interpolation_method_nr)
1009 CALL section_vals_val_get(qs_section,
"EXTRAPOLATION_ORDER", i_val=qs_control%wf_extrapolation_order)
1013 qs_control%gapw = .false.
1014 qs_control%gapw_xc = .false.
1015 qs_control%gpw = .false.
1016 qs_control%pao = .false.
1017 qs_control%dftb = .false.
1018 qs_control%xtb = .false.
1019 qs_control%semi_empirical = .false.
1020 qs_control%ofgpw = .false.
1021 qs_control%lrigpw = .false.
1022 qs_control%rigpw = .false.
1023 SELECT CASE (qs_control%method_id)
1027 qs_control%gapw = .true.
1029 qs_control%gapw_xc = .true.
1033 qs_control%gpw = .true.
1035 qs_control%ofgpw = .true.
1037 qs_control%lrigpw = .true.
1039 qs_control%rigpw = .true.
1041 qs_control%dftb = .true.
1045 qs_control%xtb = .true.
1050 qs_control%semi_empirical = .true.
1053 qs_control%semi_empirical = .true.
1056 qs_control%semi_empirical = .true.
1059 qs_control%semi_empirical = .true.
1062 qs_control%semi_empirical = .true.
1065 qs_control%semi_empirical = .true.
1068 qs_control%semi_empirical = .true.
1071 qs_control%semi_empirical = .true.
1075 qs_control%semi_empirical = .true.
1078 CALL section_vals_get(mull_section, explicit=qs_control%mulliken_restraint)
1080 IF (qs_control%mulliken_restraint)
THEN
1081 CALL section_vals_val_get(mull_section,
"STRENGTH", r_val=qs_control%mulliken_restraint_control%strength)
1082 CALL section_vals_val_get(mull_section,
"TARGET", r_val=qs_control%mulliken_restraint_control%target)
1087 jj = jj +
SIZE(tmplist)
1089 qs_control%mulliken_restraint_control%natoms = jj
1090 IF (qs_control%mulliken_restraint_control%natoms < 1) &
1091 cpabort(
"Need at least 1 atom to use mulliken constraints")
1092 ALLOCATE (qs_control%mulliken_restraint_control%atoms(qs_control%mulliken_restraint_control%natoms))
1096 DO j = 1,
SIZE(tmplist)
1098 qs_control%mulliken_restraint_control%atoms(jj) = tmplist(j)
1102 CALL section_vals_get(ddapc_restraint_section, n_repetition=nrep, explicit=qs_control%ddapc_restraint)
1103 IF (qs_control%ddapc_restraint)
THEN
1104 ALLOCATE (qs_control%ddapc_restraint_control(nrep))
1106 qs_control%ddapc_restraint_is_spin = .false.
1107 qs_control%ddapc_explicit_potential = .false.
1110 CALL section_vals_get(s2_restraint_section, explicit=qs_control%s2_restraint)
1111 IF (qs_control%s2_restraint)
THEN
1113 r_val=qs_control%s2_restraint_control%strength)
1115 r_val=qs_control%s2_restraint_control%target)
1117 i_val=qs_control%s2_restraint_control%functional_form)
1121 IF (qs_control%cdft)
THEN
1126 IF (qs_control%semi_empirical)
THEN
1128 l_val=qs_control%se_control%orthogonal_basis)
1130 r_val=qs_control%se_control%delta)
1132 l_val=qs_control%se_control%analytical_gradients)
1134 l_val=qs_control%se_control%force_kdsod_EX)
1137 i_val=qs_control%se_control%integral_screening)
1140 CALL cp_warn(__location__, &
1141 "PNNL semi-empirical parameterization supports only the Slater type "// &
1142 "integral scheme. Revert to Slater and continue the calculation.")
1147 i_val=qs_control%se_control%ga_ncells)
1150 r_val=qs_control%se_control%cutoff_lrc)
1151 qs_control%se_control%taper_lrc = qs_control%se_control%cutoff_lrc
1156 r_val=qs_control%se_control%taper_lrc)
1159 r_val=qs_control%se_control%range_lrc)
1162 r_val=qs_control%se_control%cutoff_cou)
1163 qs_control%se_control%taper_cou = qs_control%se_control%cutoff_cou
1168 r_val=qs_control%se_control%taper_cou)
1171 r_val=qs_control%se_control%range_cou)
1174 r_val=qs_control%se_control%cutoff_exc)
1175 qs_control%se_control%taper_exc = qs_control%se_control%cutoff_exc
1180 r_val=qs_control%se_control%taper_exc)
1183 r_val=qs_control%se_control%range_exc)
1187 r_val=qs_control%se_control%taper_scr)
1189 r_val=qs_control%se_control%range_scr)
1193 i_val=qs_control%se_control%periodic_type)
1194 SELECT CASE (qs_control%se_control%periodic_type)
1196 qs_control%se_control%do_ewald = .false.
1197 qs_control%se_control%do_ewald_r3 = .false.
1198 qs_control%se_control%do_ewald_gks = .false.
1200 qs_control%se_control%do_ewald = .true.
1201 qs_control%se_control%do_ewald_r3 = .false.
1202 qs_control%se_control%do_ewald_gks = .false.
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 = .true.
1208 CALL cp_abort(__location__, &
1209 "A periodic semi-empirical calculation was requested with a long-range "// &
1210 "summation on the single integral evaluation. This scheme is supported "// &
1211 "only by the PNNL parameterization.")
1213 qs_control%se_control%do_ewald = .true.
1214 qs_control%se_control%do_ewald_r3 = .true.
1215 qs_control%se_control%do_ewald_gks = .false.
1216 IF (qs_control%se_control%integral_screening /=
do_se_is_kdso) &
1217 CALL cp_abort(__location__, &
1218 "A periodic semi-empirical calculation was requested with a long-range "// &
1219 "summation for the slowly convergent part 1/R^3, which is not congruent "// &
1220 "with the integral screening chosen. The only integral screening supported "// &
1221 "by this periodic type calculation is the standard Klopman-Dewar-Sabelli-Ohno.")
1226 l_val=qs_control%se_control%dispersion)
1228 r_val=qs_control%se_control%rcdisp)
1230 r_val=qs_control%se_control%epscn)
1232 qs_control%se_control%sd3(1) = scal(1)
1233 qs_control%se_control%sd3(2) = scal(2)
1234 qs_control%se_control%sd3(3) = scal(3)
1236 c_val=qs_control%se_control%dispersion_parameter_file)
1240 cpabort(
"EWALD_R3 not implemented yet!")
1252 qs_control%se_control%orthogonal_basis = .true.
1257 IF (qs_control%dftb)
THEN
1259 l_val=qs_control%dftb_control%orthogonal_basis)
1261 l_val=qs_control%dftb_control%self_consistent)
1263 l_val=qs_control%dftb_control%dispersion)
1265 l_val=qs_control%dftb_control%dftb3_diagonal)
1267 l_val=qs_control%dftb_control%hb_sr_damp)
1269 r_val=qs_control%dftb_control%eps_disp)
1273 l_val=qs_control%dftb_control%do_ewald)
1275 qs_control%dftb_control%do_ewald = (qs_control%periodicity /= 0)
1278 c_val=qs_control%dftb_control%sk_file_path)
1280 c_val=qs_control%dftb_control%sk_file_list)
1282 r_val=qs_control%dftb_control%hb_sr_para)
1284 ALLOCATE (qs_control%dftb_control%sk_pair_list(3, n_var))
1288 qs_control%dftb_control%sk_pair_list(1:3, k) = clist(1:3)
1292 i_val=qs_control%dftb_control%dispersion_type)
1294 c_val=qs_control%dftb_control%uff_force_field)
1297 r_val=qs_control%dftb_control%rcdisp)
1299 r_val=qs_control%dftb_control%epscn)
1301 r_val=qs_control%dftb_control%exp_pre)
1303 r_val=qs_control%dftb_control%scaling)
1305 qs_control%dftb_control%sd3(1) = scal(1)
1306 qs_control%dftb_control%sd3(2) = scal(2)
1307 qs_control%dftb_control%sd3(3) = scal(3)
1309 qs_control%dftb_control%sd3bj(1) = scal(1)
1310 qs_control%dftb_control%sd3bj(2) = scal(2)
1311 qs_control%dftb_control%sd3bj(3) = scal(3)
1312 qs_control%dftb_control%sd3bj(4) = scal(4)
1314 c_val=qs_control%dftb_control%dispersion_parameter_file)
1316 IF (qs_control%dftb_control%dispersion)
CALL cite_reference(
zhechkov2005)
1317 IF (qs_control%dftb_control%self_consistent)
CALL cite_reference(
elstner1998)
1318 IF (qs_control%dftb_control%hb_sr_damp)
CALL cite_reference(
hu2007)
1322 IF (qs_control%xtb)
THEN
1327 l_val=qs_control%xtb_control%do_ewald)
1329 qs_control%xtb_control%do_ewald = (qs_control%periodicity /= 0)
1347 SELECT CASE (qs_control%xtb_control%gfn_type)
1354 cpabort(
"gfn2-xtb tbd")
1361 qs_control%xtb_control%sto_ng = ngauss
1363 qs_control%xtb_control%h_sto_ng = ngauss
1365 c_val=qs_control%xtb_control%parameter_file_path)
1369 c_val=qs_control%xtb_control%parameter_file_name)
1371 SELECT CASE (qs_control%xtb_control%gfn_type)
1373 qs_control%xtb_control%parameter_file_name =
"xTB0_parameters"
1375 qs_control%xtb_control%parameter_file_name =
"xTB1_parameters"
1377 cpabort(
"gfn2-xtb tbd")
1384 r_val=qs_control%xtb_control%rcdisp)
1386 r_val=qs_control%xtb_control%epscn)
1390 qs_control%xtb_control%s6 = scal(1)
1391 qs_control%xtb_control%s8 = scal(2)
1393 SELECT CASE (qs_control%xtb_control%gfn_type)
1395 qs_control%xtb_control%s6 = 1.00_dp
1396 qs_control%xtb_control%s8 = 2.85_dp
1398 qs_control%xtb_control%s6 = 1.00_dp
1399 qs_control%xtb_control%s8 = 2.40_dp
1401 cpabort(
"gfn2-xtb tbd")
1409 qs_control%xtb_control%a1 = scal(1)
1410 qs_control%xtb_control%a2 = scal(2)
1412 SELECT CASE (qs_control%xtb_control%gfn_type)
1414 qs_control%xtb_control%a1 = 0.80_dp
1415 qs_control%xtb_control%a2 = 4.60_dp
1417 qs_control%xtb_control%a1 = 0.63_dp
1418 qs_control%xtb_control%a2 = 5.00_dp
1420 cpabort(
"gfn2-xtb tbd")
1426 c_val=qs_control%xtb_control%dispersion_parameter_file)
1431 qs_control%xtb_control%ks = scal(1)
1432 qs_control%xtb_control%kp = scal(2)
1433 qs_control%xtb_control%kd = scal(3)
1434 qs_control%xtb_control%ksp = scal(4)
1435 qs_control%xtb_control%k2sh = scal(5)
1436 IF (qs_control%xtb_control%gfn_type == 0)
THEN
1438 qs_control%xtb_control%ksp = 0.5_dp*(scal(1) + scal(2))
1441 SELECT CASE (qs_control%xtb_control%gfn_type)
1443 qs_control%xtb_control%ks = 2.00_dp
1444 qs_control%xtb_control%kp = 2.4868_dp
1445 qs_control%xtb_control%kd = 2.27_dp
1446 qs_control%xtb_control%ksp = 2.2434_dp
1447 qs_control%xtb_control%k2sh = 1.1241_dp
1449 qs_control%xtb_control%ks = 1.85_dp
1450 qs_control%xtb_control%kp = 2.25_dp
1451 qs_control%xtb_control%kd = 2.00_dp
1452 qs_control%xtb_control%ksp = 2.08_dp
1453 qs_control%xtb_control%k2sh = 2.85_dp
1455 cpabort(
"gfn2-xtb tbd")
1463 qs_control%xtb_control%kg = scal(1)
1464 qs_control%xtb_control%kf = scal(2)
1466 SELECT CASE (qs_control%xtb_control%gfn_type)
1468 qs_control%xtb_control%kg = 2.00_dp
1469 qs_control%xtb_control%kf = 1.50_dp
1471 qs_control%xtb_control%kg = 2.00_dp
1472 qs_control%xtb_control%kf = 1.50_dp
1474 cpabort(
"gfn2-xtb tbd")
1480 qs_control%xtb_control%kcns = scal(1)
1481 qs_control%xtb_control%kcnp = scal(2)
1482 qs_control%xtb_control%kcnd = scal(3)
1487 SELECT CASE (qs_control%xtb_control%gfn_type)
1489 qs_control%xtb_control%ksen = scal(1)
1490 qs_control%xtb_control%kpen = scal(2)
1491 qs_control%xtb_control%kden = scal(3)
1493 qs_control%xtb_control%ken = scal(1)
1495 cpabort(
"gfn2-xtb tbd")
1500 SELECT CASE (qs_control%xtb_control%gfn_type)
1502 qs_control%xtb_control%ksen = 0.006_dp
1503 qs_control%xtb_control%kpen = -0.001_dp
1504 qs_control%xtb_control%kden = -0.002_dp
1506 qs_control%xtb_control%ken = -0.007_dp
1508 cpabort(
"gfn2-xtb tbd")
1515 qs_control%xtb_control%ben = scal(1)
1520 r_val=qs_control%xtb_control%enscale)
1522 SELECT CASE (qs_control%xtb_control%gfn_type)
1524 qs_control%xtb_control%enscale = -0.09_dp
1526 qs_control%xtb_control%enscale = 0._dp
1528 cpabort(
"gfn2-xtb tbd")
1535 l_val=qs_control%xtb_control%xb_interaction)
1537 qs_control%xtb_control%kxr = scal(1)
1538 qs_control%xtb_control%kx2 = scal(2)
1541 l_val=qs_control%xtb_control%do_nonbonded)
1543 IF (explicit .AND. qs_control%xtb_control%do_nonbonded)
THEN
1547 CALL read_gp_section(qs_control%xtb_control%nonbonded, genpot_section, 0)
1551 r_val=qs_control%xtb_control%eps_pair)
1554 qs_control%xtb_control%coulomb_sr_cut = scal(1)
1556 qs_control%xtb_control%coulomb_sr_eps = scal(1)
1562 SELECT CASE (qs_control%xtb_control%gfn_type)
1564 qs_control%xtb_control%coulomb_interaction = .false.
1565 qs_control%xtb_control%coulomb_lr = .false.
1566 qs_control%xtb_control%tb3_interaction = .false.
1567 qs_control%xtb_control%check_atomic_charges = .false.
1569 l_val=qs_control%xtb_control%var_dipole)
1573 l_val=qs_control%xtb_control%coulomb_interaction)
1575 l_val=qs_control%xtb_control%coulomb_lr)
1577 l_val=qs_control%xtb_control%tb3_interaction)
1580 l_val=qs_control%xtb_control%check_atomic_charges)
1581 qs_control%xtb_control%var_dipole = .false.
1583 cpabort(
"gfn2-xtb tbd")
1587 qs_control%xtb_control%kab_nval = n_rep
1589 ALLOCATE (qs_control%xtb_control%kab_param(3, n_rep))
1590 ALLOCATE (qs_control%xtb_control%kab_types(2, n_rep))
1591 ALLOCATE (qs_control%xtb_control%kab_vals(n_rep))
1594 qs_control%xtb_control%kab_param(1, j) = clist(1)
1596 ielement=qs_control%xtb_control%kab_types(1, j))
1597 qs_control%xtb_control%kab_param(2, j) = clist(2)
1599 ielement=qs_control%xtb_control%kab_types(2, j))
1600 qs_control%xtb_control%kab_param(3, j) = clist(3)
1601 READ (clist(3),
'(F10.0)') qs_control%xtb_control%kab_vals(j)
1605 IF (qs_control%xtb_control%gfn_type == 0)
THEN
1607 qs_control%xtb_control%ksrb = scal(1)
1608 qs_control%xtb_control%esrb = scal(2)
1609 qs_control%xtb_control%gscal = scal(3)
1610 qs_control%xtb_control%c1srb = scal(4)
1611 qs_control%xtb_control%c2srb = scal(5)
1612 qs_control%xtb_control%shift = scal(6)
1617 SELECT CASE (trim(cval))
1619 qs_control%xtb_control%enshift_type = 0
1621 qs_control%xtb_control%enshift_type = 1
1623 qs_control%xtb_control%enshift_type = 2
1625 cpabort(
"Unknown value for EN_SHIFT_TYPE")
1629 CALL read_eeq_param(eeq_section, qs_control%xtb_control%eeq_sparam)
1638 l_val=qs_control%xtb_control%do_tblite)
1640 i_val=qs_control%xtb_control%tblite_method)
1641 IF (qs_control%xtb_control%do_tblite)
THEN
1648 qs_control%xtb_control%do_ewald = .false.
1651 CALL timestop(handle)
1665 CHARACTER(LEN=*),
PARAMETER :: routinen =
'read_tddfpt2_control'
1667 CHARACTER(LEN=default_string_length), &
1668 DIMENSION(:),
POINTER :: tmpstringlist
1669 INTEGER :: handle, irep, isize, nrep
1670 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: inds
1671 LOGICAL :: do_ewald, do_exchange, expl, explicit, &
1673 REAL(kind=
dp) :: filter, fval, hfx
1675 soc_section, stda_section, xc_func, &
1678 CALL timeset(routinen, handle)
1694 CALL section_vals_val_get(t_section,
"MIN_AMPLITUDE", r_val=t_control%min_excitation_amplitude)
1702 CALL section_vals_val_get(t_section,
"ADMM_KERNEL_CORRECTION_SYMMETRIC", l_val=t_control%admm_symm)
1703 CALL section_vals_val_get(t_section,
"ADMM_KERNEL_XC_CORRECTION", l_val=t_control%admm_xc_correction)
1704 CALL section_vals_val_get(t_section,
"EXCITON_DESCRIPTORS", l_val=t_control%do_exciton_descriptors)
1705 CALL section_vals_val_get(t_section,
"DIRECTIONAL_EXCITON_DESCRIPTORS", l_val=t_control%do_directional_exciton_descriptors)
1711 IF (
SIZE(tmpstringlist) == 2)
THEN
1713 SELECT CASE (tmpstringlist(2))
1725 cpabort(
"Unknown basis size in AUTO_BASIS keyword:"//trim(tmpstringlist(1)))
1728 SELECT CASE (tmpstringlist(1))
1731 t_control%auto_basis_p_lri_aux = isize
1733 cpabort(
"Unknown basis type in AUTO_BASIS keyword:"//trim(tmpstringlist(1)))
1736 CALL cp_abort(__location__, &
1737 "AUTO_BASIS keyword in &PROPERTIES &TDDFT section has a wrong number of arguments.")
1741 IF (t_control%conv < 0) &
1742 t_control%conv = abs(t_control%conv)
1750 t_control%dipole_form = 0
1755 CALL section_vals_val_get(dipole_section,
"REFERENCE_POINT", r_vals=t_control%dipole_ref_point)
1757 NULLIFY (t_control%dipole_ref_point)
1759 cpabort(
"User-defined reference point should be given explicitly")
1767 t_control%do_soc = .true.
1774 IF (t_control%mgrid_is_explicit)
THEN
1775 CALL section_vals_val_get(mgrid_section,
"NGRIDS", i_val=t_control%mgrid_ngrids, explicit=explicit)
1776 IF (.NOT. explicit) t_control%mgrid_ngrids =
SIZE(qs_control%e_cutoff)
1778 CALL section_vals_val_get(mgrid_section,
"CUTOFF", r_val=t_control%mgrid_cutoff, explicit=explicit)
1779 IF (.NOT. explicit) t_control%mgrid_cutoff = qs_control%cutoff
1782 r_val=t_control%mgrid_progression_factor, explicit=explicit)
1784 IF (t_control%mgrid_progression_factor <= 1.0_dp) &
1785 CALL cp_abort(__location__, &
1786 "Progression factor should be greater then 1.0 to ensure multi-grid ordering")
1788 t_control%mgrid_progression_factor = qs_control%progression_factor
1791 CALL section_vals_val_get(mgrid_section,
"COMMENSURATE", l_val=t_control%mgrid_commensurate_mgrids, explicit=explicit)
1792 IF (.NOT. explicit) t_control%mgrid_commensurate_mgrids = qs_control%commensurate_mgrids
1793 IF (t_control%mgrid_commensurate_mgrids)
THEN
1795 t_control%mgrid_progression_factor = 4.0_dp
1797 t_control%mgrid_progression_factor = qs_control%progression_factor
1801 CALL section_vals_val_get(mgrid_section,
"REL_CUTOFF", r_val=t_control%mgrid_relative_cutoff, explicit=explicit)
1802 IF (.NOT. explicit) t_control%mgrid_relative_cutoff = qs_control%relative_cutoff
1804 CALL section_vals_val_get(mgrid_section,
"MULTIGRID_SET", l_val=multigrid_set, explicit=explicit)
1805 IF (.NOT. explicit) multigrid_set = .false.
1806 IF (multigrid_set)
THEN
1809 NULLIFY (t_control%mgrid_e_cutoff)
1812 CALL section_vals_val_get(mgrid_section,
"REALSPACE", l_val=t_control%mgrid_realspace_mgrids, explicit=explicit)
1813 IF (.NOT. explicit) t_control%mgrid_realspace_mgrids = qs_control%realspace_mgrids
1816 l_val=t_control%mgrid_skip_load_balance, explicit=explicit)
1817 IF (.NOT. explicit) t_control%mgrid_skip_load_balance = qs_control%skip_load_balance_distributed
1819 IF (
ASSOCIATED(t_control%mgrid_e_cutoff))
THEN
1820 IF (
SIZE(t_control%mgrid_e_cutoff) /= t_control%mgrid_ngrids) &
1821 cpabort(
"Inconsistent values for number of multi-grids")
1824 t_control%mgrid_e_cutoff = -t_control%mgrid_e_cutoff
1825 ALLOCATE (inds(t_control%mgrid_ngrids))
1826 CALL sort(t_control%mgrid_e_cutoff, t_control%mgrid_ngrids, inds)
1828 t_control%mgrid_e_cutoff = -t_control%mgrid_e_cutoff
1842 t_control%stda_control%hfx_fraction = 0.0_dp
1843 t_control%stda_control%do_exchange = .true.
1844 t_control%stda_control%eps_td_filter = 1.e-10_dp
1845 t_control%stda_control%mn_alpha = -99.0_dp
1846 t_control%stda_control%mn_beta = -99.0_dp
1848 SELECT CASE (qs_control%periodicity)
1850 t_control%stda_control%do_ewald = .false.
1852 t_control%stda_control%do_ewald = .true.
1854 t_control%stda_control%do_ewald = .true.
1856 t_control%stda_control%do_ewald = .true.
1858 cpabort(
"Illegal value for periodiciy")
1863 IF (expl) t_control%stda_control%hfx_fraction = hfx
1865 IF (expl) t_control%stda_control%eps_td_filter = filter
1867 IF (expl) t_control%stda_control%do_ewald = do_ewald
1869 IF (expl) t_control%stda_control%do_exchange = do_exchange
1871 t_control%stda_control%mn_alpha = fval
1873 t_control%stda_control%mn_beta = fval
1876 t_control%stda_control%coulomb_sr_cut = fval
1878 t_control%stda_control%coulomb_sr_eps = fval
1881 CALL timestop(handle)
1893 CHARACTER(len=*),
PARAMETER :: routinen =
'write_dft_control'
1895 CHARACTER(LEN=20) :: tmpstr
1896 INTEGER :: handle, i, i_rep, n_rep, output_unit
1897 REAL(kind=
dp) :: density_cut, density_smooth_cut_range, &
1898 gradient_cut, tau_cut
1905 IF (dft_control%qs_control%semi_empirical)
RETURN
1906 IF (dft_control%qs_control%dftb)
RETURN
1907 IF (dft_control%qs_control%xtb)
THEN
1908 CALL write_xtb_control(dft_control%qs_control%xtb_control, dft_section)
1911 CALL timeset(routinen, handle)
1917 "PRINT%DFT_CONTROL_PARAMETERS", extension=
".Log")
1919 IF (output_unit > 0)
THEN
1923 IF (dft_control%uks)
THEN
1924 WRITE (unit=output_unit, fmt=
"(/,T2,A,T78,A)") &
1925 "DFT| Spin unrestricted (spin-polarized) Kohn-Sham calculation",
"UKS"
1926 ELSE IF (dft_control%roks)
THEN
1927 WRITE (unit=output_unit, fmt=
"(/,T2,A,T77,A)") &
1928 "DFT| Spin restricted open Kohn-Sham calculation",
"ROKS"
1930 WRITE (unit=output_unit, fmt=
"(/,T2,A,T78,A)") &
1931 "DFT| Spin restricted Kohn-Sham (RKS) calculation",
"RKS"
1934 WRITE (unit=output_unit, fmt=
"(T2,A,T76,I5)") &
1935 "DFT| Multiplicity", dft_control%multiplicity
1936 WRITE (unit=output_unit, fmt=
"(T2,A,T76,I5)") &
1937 "DFT| Number of spin states", dft_control%nspins
1939 WRITE (unit=output_unit, fmt=
"(T2,A,T76,I5)") &
1940 "DFT| Charge", dft_control%charge
1943 SELECT CASE (dft_control%sic_method_id)
1947 tmpstr =
"SPZ/MAURI SIC"
1949 tmpstr =
"US/MAURI SIC"
1953 tmpstr =
"Explicit Orbital SIC"
1956 cpabort(
"SIC option unknown")
1959 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
1960 "DFT| Self-interaction correction (SIC)", adjustr(trim(tmpstr))
1962 IF (dft_control%sic_method_id /=
sic_none)
THEN
1963 WRITE (unit=output_unit, fmt=
"(T2,A,T66,ES15.6)") &
1964 "DFT| SIC scaling parameter a", dft_control%sic_scaling_a, &
1965 "DFT| SIC scaling parameter b", dft_control%sic_scaling_b
1968 IF (dft_control%sic_method_id ==
sic_eo)
THEN
1970 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A)") &
1971 "DFT| SIC orbitals",
"ALL"
1974 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A)") &
1975 "DFT| SIC orbitals",
"UNPAIRED"
1982 CALL section_vals_val_get(xc_section,
"density_smooth_cutoff_range", r_val=density_smooth_cut_range)
1984 WRITE (unit=output_unit, fmt=
"(T2,A,T66,ES15.6)") &
1985 "DFT| Cutoffs: density ", density_cut, &
1986 "DFT| gradient", gradient_cut, &
1987 "DFT| tau ", tau_cut, &
1988 "DFT| cutoff_smoothing_range", density_smooth_cut_range
1991 WRITE (output_unit,
'( A, T61, A )') &
1992 " DFT| XC density smoothing ", adjustr(tmpstr)
1995 WRITE (output_unit,
'( A, T61, A )') &
1996 " DFT| XC derivatives ", adjustr(tmpstr)
1997 IF (dft_control%dft_plus_u)
THEN
1998 NULLIFY (enum, keyword, section)
2002 WRITE (unit=output_unit, fmt=
"(/,T2,A,T41,A40)") &
2003 "DFT+U| Method", adjustr(trim(
enum_i2c(enum, dft_control%plus_u_method_id)))
2004 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2005 "DFT+U| Check atomic kind information for details"
2009 WRITE (unit=output_unit, fmt=
"(A)")
""
2010 CALL xc_write(output_unit, xc_section, dft_control%lsd)
2012 IF (dft_control%apply_period_efield)
THEN
2013 WRITE (unit=output_unit, fmt=
"(A)")
""
2014 IF (dft_control%period_efield%displacement_field)
THEN
2015 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2016 "PERIODIC_EFIELD| Use displacement field formulation"
2017 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,ES14.6)") &
2018 "PERIODIC_EFIELD| Displacement field filter: x", &
2019 dft_control%period_efield%d_filter(1), &
2020 "PERIODIC_EFIELD| y", &
2021 dft_control%period_efield%d_filter(2), &
2022 "PERIODIC_EFIELD| z", &
2023 dft_control%period_efield%d_filter(3)
2025 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,ES14.6)") &
2026 "PERIODIC_EFIELD| Polarisation vector: x", &
2027 dft_control%period_efield%polarisation(1), &
2028 "PERIODIC_EFIELD| y", &
2029 dft_control%period_efield%polarisation(2), &
2030 "PERIODIC_EFIELD| z", &
2031 dft_control%period_efield%polarisation(3)
2033 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,I14)") &
2034 "PERIODIC_EFIELD| Start Frame:", &
2035 dft_control%period_efield%start_frame, &
2036 "PERIODIC_EFIELD| End Frame:", &
2037 dft_control%period_efield%end_frame
2039 IF (
ALLOCATED(dft_control%period_efield%strength_list))
THEN
2040 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,I14)") &
2041 "PERIODIC_EFIELD| Number of Intensities:", &
2042 SIZE(dft_control%period_efield%strength_list)
2043 WRITE (unit=output_unit, fmt=
"(T2,A,I10,T66,1X,ES14.6)") &
2044 "PERIODIC_EFIELD| Intensity List [a.u.] ", &
2045 1, dft_control%period_efield%strength_list(1)
2046 DO i = 2,
SIZE(dft_control%period_efield%strength_list)
2047 WRITE (unit=output_unit, fmt=
"(T2,A,I10,T66,1X,ES14.6)") &
2048 "PERIODIC_EFIELD| ", &
2049 i, dft_control%period_efield%strength_list(i)
2052 WRITE (unit=output_unit, fmt=
"(T2,A,T66,1X,ES14.6)") &
2053 "PERIODIC_EFIELD| Intensity [a.u.]:", &
2054 dft_control%period_efield%strength
2057 IF (sqrt(dot_product(dft_control%period_efield%polarisation, &
2058 dft_control%period_efield%polarisation)) < epsilon(0.0_dp))
THEN
2059 cpabort(
"Invalid (too small) polarisation vector specified for PERIODIC_EFIELD")
2063 IF (dft_control%do_sccs)
THEN
2064 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
2065 "SCCS| Self-consistent continuum solvation model"
2066 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2067 "SCCS| Relative permittivity of the solvent (medium)", &
2068 dft_control%sccs_control%epsilon_solvent, &
2069 "SCCS| Absolute permittivity [a.u.]", &
2070 dft_control%sccs_control%epsilon_solvent/
fourpi
2071 SELECT CASE (dft_control%sccs_control%method_id)
2073 WRITE (unit=output_unit, fmt=
"(T2,A,/,(T2,A,T61,ES20.6))") &
2074 "SCCS| Dielectric function proposed by Andreussi et al.", &
2075 "SCCS| rho_max", dft_control%sccs_control%rho_max, &
2076 "SCCS| rho_min", dft_control%sccs_control%rho_min
2078 WRITE (unit=output_unit, fmt=
"(T2,A,/,(T2,A,T61,ES20.6))") &
2079 "SCCS| Dielectric function proposed by Fattebert and Gygi", &
2080 "SCCS| beta", dft_control%sccs_control%beta, &
2081 "SCCS| rho_zero", dft_control%sccs_control%rho_zero
2083 cpabort(
"Invalid SCCS model specified. Please, check your input!")
2085 SELECT CASE (dft_control%sccs_control%derivative_method)
2087 WRITE (unit=output_unit, fmt=
"(T2,A,T46,A35)") &
2088 "SCCS| Numerical derivative calculation", &
2091 WRITE (unit=output_unit, fmt=
"(T2,A,T46,A35)") &
2092 "SCCS| Numerical derivative calculation", &
2093 adjustr(
"3-point stencil central differences")
2095 WRITE (unit=output_unit, fmt=
"(T2,A,T46,A35)") &
2096 "SCCS| Numerical derivative calculation", &
2097 adjustr(
"5-point stencil central differences")
2099 WRITE (unit=output_unit, fmt=
"(T2,A,T46,A35)") &
2100 "SCCS| Numerical derivative calculation", &
2101 adjustr(
"7-point stencil central differences")
2103 CALL cp_abort(__location__, &
2104 "Invalid derivative method specified for SCCS model. "// &
2105 "Please, check your input!")
2107 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2108 "SCCS| Repulsion parameter alpha [mN/m] = [dyn/cm]", &
2110 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2111 "SCCS| Dispersion parameter beta [GPa]", &
2113 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2114 "SCCS| Surface tension gamma [mN/m] = [dyn/cm]", &
2116 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2117 "SCCS| Mixing parameter applied during the iteration cycle", &
2118 dft_control%sccs_control%mixing
2119 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2120 "SCCS| Tolerance for the convergence of the SCCS iteration cycle", &
2121 dft_control%sccs_control%eps_sccs
2122 WRITE (unit=output_unit, fmt=
"(T2,A,T61,I20)") &
2123 "SCCS| Maximum number of iteration steps", &
2124 dft_control%sccs_control%max_iter
2125 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2126 "SCCS| SCF convergence threshold for starting the SCCS iteration", &
2127 dft_control%sccs_control%eps_scf
2128 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2129 "SCCS| Numerical increment for the cavity surface calculation", &
2130 dft_control%sccs_control%delta_rho
2133 WRITE (unit=output_unit, fmt=
"(A)")
""
2137 IF (dft_control%hairy_probes .EQV. .true.)
THEN
2138 n_rep =
SIZE(dft_control%probe)
2139 IF (output_unit > 0)
THEN
2141 WRITE (unit=output_unit, fmt=
"(T2,A,I5)") &
2142 "HP | hair probe set", i_rep
2143 WRITE (unit=output_unit, fmt=
"(T2,A,T61,*(I5))") &
2144 "HP| atom indexes", &
2145 (dft_control%probe(i_rep)%atom_ids(i), i=1, dft_control%probe(i_rep)%natoms)
2146 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2147 "HP| potential", dft_control%probe(i_rep)%mu
2148 WRITE (unit=output_unit, fmt=
"(T2,A,T61,F20.2)") &
2149 "HP| temperature", dft_control%probe(i_rep)%T
2150 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES20.6)") &
2151 "HP| eps_hp", dft_control%probe(i_rep)%eps_hp
2157 "PRINT%DFT_CONTROL_PARAMETERS")
2159 CALL timestop(handle)
2179 "PRINT%DFT_CONTROL_PARAMETERS", extension=
".Log")
2181 IF (iounit > 0)
THEN
2183 SELECT CASE (admm_control%admm_type)
2185 WRITE (unit=iounit, fmt=
"(/,T2,A,T77,A)")
"ADMM| Specific ADMM type specified",
"NONE"
2187 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMM1"
2189 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMM2"
2191 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMMS"
2193 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMMP"
2195 WRITE (unit=iounit, fmt=
"(/,T2,A,T76,A)")
"ADMM| Specific ADMM type specified",
"ADMMQ"
2197 cpabort(
"admm_type")
2200 SELECT CASE (admm_control%purification_method)
2202 WRITE (unit=iounit, fmt=
"(T2,A,T77,A)")
"ADMM| Density matrix purification method",
"NONE"
2204 WRITE (unit=iounit, fmt=
"(T2,A,T75,A)")
"ADMM| Density matrix purification method",
"Cauchy"
2206 WRITE (unit=iounit, fmt=
"(T2,A,T66,A)")
"ADMM| Density matrix purification method",
"Cauchy subspace"
2208 WRITE (unit=iounit, fmt=
"(T2,A,T63,A)")
"ADMM| Density matrix purification method",
"MO diagonalization"
2210 WRITE (unit=iounit, fmt=
"(T2,A,T71,A)")
"ADMM| Density matrix purification method",
"MO no diag"
2212 WRITE (unit=iounit, fmt=
"(T2,A,T74,A)")
"ADMM| Density matrix purification method",
"McWeeny"
2214 WRITE (unit=iounit, fmt=
"(T2,A,T73,A)")
"ADMM| Density matrix purification method",
"NONE(DM)"
2216 cpabort(
"admm_purification_method")
2219 SELECT CASE (admm_control%method)
2221 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Orbital projection on ADMM basis"
2223 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Blocked Fock matrix projection with full purification"
2225 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Blocked Fock matrix projection"
2227 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Orbital projection with charge constrain"
2229 cpabort(
"admm method")
2232 SELECT CASE (admm_control%scaling_model)
2235 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| Use Merlot (2014) scaling model"
2237 cpabort(
"admm scaling_model")
2240 WRITE (unit=iounit, fmt=
"(T2,A,T61,G20.10)")
"ADMM| eps_filter", admm_control%eps_filter
2242 SELECT CASE (admm_control%aux_exch_func)
2244 WRITE (unit=iounit, fmt=
"(T2,A)")
"ADMM| No exchange functional correction term used"
2246 WRITE (unit=iounit, fmt=
"(T2,A,T74,A)")
"ADMM| Exchange functional in correction term",
"(W)PBEX"
2248 WRITE (unit=iounit, fmt=
"(T2,A,T77,A)")
"ADMM| Exchange functional in correction term",
"PBEX"
2250 WRITE (unit=iounit, fmt=
"(T2,A,T77,A)")
"ADMM| Exchange functional in correction term",
"OPTX"
2252 WRITE (unit=iounit, fmt=
"(T2,A,T74,A)")
"ADMM| Exchange functional in correction term",
"Becke88"
2254 WRITE (unit=iounit, fmt=
"(T2,A,T74,A)")
"ADMM| Exchange functional in correction term",
"SlaterX"
2256 cpabort(
"admm aux_exch_func")
2259 WRITE (unit=iounit, fmt=
"(A)")
""
2264 "PRINT%DFT_CONTROL_PARAMETERS")
2272 SUBROUTINE write_xtb_control(xtb_control, dft_section)
2276 CHARACTER(len=*),
PARAMETER :: routinen =
'write_xtb_control'
2278 INTEGER :: handle, output_unit
2281 CALL timeset(routinen, handle)
2286 "PRINT%DFT_CONTROL_PARAMETERS", extension=
".Log")
2288 IF (output_unit > 0)
THEN
2290 WRITE (unit=output_unit, fmt=
"(/,T2,A,T31,A50)") &
2291 "xTB| Parameter file", adjustr(trim(xtb_control%parameter_file_name))
2292 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2293 "xTB| Basis expansion STO-NG", xtb_control%sto_ng
2294 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2295 "xTB| Basis expansion STO-NG for Hydrogen", xtb_control%h_sto_ng
2296 WRITE (unit=output_unit, fmt=
"(T2,A,T71,E10.4)") &
2297 "xTB| Repulsive pair potential accuracy", xtb_control%eps_pair
2298 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.6)") &
2299 "xTB| Repulsive enhancement factor", xtb_control%enscale
2300 WRITE (unit=output_unit, fmt=
"(T2,A,T71,L10)") &
2301 "xTB| Halogen interaction potential", xtb_control%xb_interaction
2302 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.3)") &
2303 "xTB| Halogen interaction potential cutoff radius", xtb_control%xb_radius
2304 WRITE (unit=output_unit, fmt=
"(T2,A,T71,L10)") &
2305 "xTB| Nonbonded interactions", xtb_control%do_nonbonded
2306 SELECT CASE (xtb_control%vdw_type)
2308 WRITE (unit=output_unit, fmt=
"(T2,A)")
"xTB| No vdW potential selected"
2310 WRITE (unit=output_unit, fmt=
"(T2,A,T72,A)")
"xTB| vdW potential type:",
"DFTD3(BJ)"
2311 WRITE (unit=output_unit, fmt=
"(T2,A,T31,A50)") &
2312 "xTB| D3 Dispersion: Parameter file", adjustr(trim(xtb_control%dispersion_parameter_file))
2314 WRITE (unit=output_unit, fmt=
"(T2,A,T76,A)")
"xTB| vdW potential type:",
"DFTD4"
2315 WRITE (unit=output_unit, fmt=
"(T2,A,T31,A50)") &
2316 "xTB| D4 Dispersion: Parameter file", adjustr(trim(xtb_control%dispersion_parameter_file))
2320 WRITE (unit=output_unit, fmt=
"(T2,A,T51,3F10.3)") &
2321 "xTB| Huckel constants ks kp kd", xtb_control%ks, xtb_control%kp, xtb_control%kd
2322 WRITE (unit=output_unit, fmt=
"(T2,A,T61,2F10.3)") &
2323 "xTB| Huckel constants ksp k2sh", xtb_control%ksp, xtb_control%k2sh
2324 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.3)") &
2325 "xTB| Mataga-Nishimoto exponent", xtb_control%kg
2326 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.3)") &
2327 "xTB| Repulsion potential exponent", xtb_control%kf
2328 WRITE (unit=output_unit, fmt=
"(T2,A,T51,3F10.3)") &
2329 "xTB| Coordination number scaling kcn(s) kcn(p) kcn(d)", &
2330 xtb_control%kcns, xtb_control%kcnp, xtb_control%kcnd
2331 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.3)") &
2332 "xTB| Electronegativity scaling", xtb_control%ken
2333 WRITE (unit=output_unit, fmt=
"(T2,A,T61,2F10.3)") &
2334 "xTB| Halogen potential scaling kxr kx2", xtb_control%kxr, xtb_control%kx2
2335 WRITE (unit=output_unit, fmt=
"(/)")
2340 "PRINT%DFT_CONTROL_PARAMETERS")
2342 CALL timestop(handle)
2344 END SUBROUTINE write_xtb_control
2355 CHARACTER(len=*),
PARAMETER :: routinen =
'write_qs_control'
2357 CHARACTER(len=20) :: method, quadrature
2358 INTEGER :: handle, i, igrid_level, ngrid_level, &
2367 IF (qs_control%semi_empirical)
RETURN
2368 IF (qs_control%dftb)
RETURN
2369 IF (qs_control%xtb)
RETURN
2370 CALL timeset(routinen, handle)
2371 NULLIFY (logger, print_section_vals, qs_section, qs_section_vals)
2377 NULLIFY (enum, keyword)
2380 method = trim(
enum_i2c(enum, qs_control%method_id))
2382 NULLIFY (enum, keyword)
2385 quadrature = trim(
enum_i2c(enum, qs_control%gapw_control%quadrature))
2388 "DFT_CONTROL_PARAMETERS", extension=
".Log")
2389 IF (output_unit > 0)
THEN
2390 ngrid_level =
SIZE(qs_control%e_cutoff)
2391 WRITE (unit=output_unit, fmt=
"(/,T2,A,T61,A20)") &
2392 "QS| Method:", adjustr(method)
2393 IF (qs_control%pw_grid_opt%spherical)
THEN
2394 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A)") &
2395 "QS| Density plane wave grid type",
" SPHERICAL HALFSPACE"
2396 ELSE IF (qs_control%pw_grid_opt%fullspace)
THEN
2397 WRITE (unit=output_unit, fmt=
"(T2,A,T57,A)") &
2398 "QS| Density plane wave grid type",
" NON-SPHERICAL FULLSPACE"
2400 WRITE (unit=output_unit, fmt=
"(T2,A,T57,A)") &
2401 "QS| Density plane wave grid type",
" NON-SPHERICAL HALFSPACE"
2403 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2404 "QS| Number of grid levels:",
SIZE(qs_control%e_cutoff)
2405 IF (ngrid_level == 1)
THEN
2406 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2407 "QS| Density cutoff [a.u.]:", qs_control%e_cutoff(1)
2409 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2410 "QS| Density cutoff [a.u.]:", qs_control%cutoff
2411 IF (qs_control%commensurate_mgrids) &
2412 WRITE (unit=output_unit, fmt=
"(T2,A)")
"QS| Using commensurate multigrids"
2413 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2414 "QS| Multi grid cutoff [a.u.]: 1) grid level", qs_control%e_cutoff(1)
2415 WRITE (unit=output_unit, fmt=
"(T2,A,I3,A,T71,F10.1)") &
2416 (
"QS| ", igrid_level,
") grid level", &
2417 qs_control%e_cutoff(igrid_level), &
2418 igrid_level=2,
SIZE(qs_control%e_cutoff))
2420 IF (qs_control%pao)
THEN
2421 WRITE (unit=output_unit, fmt=
"(T2,A)")
"QS| PAO active"
2423 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2424 "QS| Grid level progression factor:", qs_control%progression_factor
2425 WRITE (unit=output_unit, fmt=
"(T2,A,T71,F10.1)") &
2426 "QS| Relative density cutoff [a.u.]:", qs_control%relative_cutoff
2427 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2428 "QS| Interaction thresholds: eps_pgf_orb:", &
2429 qs_control%eps_pgf_orb, &
2430 "QS| eps_filter_matrix:", &
2431 qs_control%eps_filter_matrix, &
2432 "QS| eps_core_charge:", &
2433 qs_control%eps_core_charge, &
2434 "QS| eps_rho_gspace:", &
2435 qs_control%eps_rho_gspace, &
2436 "QS| eps_rho_rspace:", &
2437 qs_control%eps_rho_rspace, &
2438 "QS| eps_gvg_rspace:", &
2439 qs_control%eps_gvg_rspace, &
2441 qs_control%eps_ppl, &
2444 IF (qs_control%gapw)
THEN
2445 SELECT CASE (qs_control%gapw_control%basis_1c)
2447 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2448 "QS| GAPW| One center basis from orbital basis primitives"
2450 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2451 "QS| GAPW| One center basis extended with primitives (small:s)"
2453 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2454 "QS| GAPW| One center basis extended with primitives (medium:sp)"
2456 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2457 "QS| GAPW| One center basis extended with primitives (large:spd)"
2459 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2460 "QS| GAPW| One center basis extended with primitives (very large:spdf)"
2462 cpabort(
"basis_1c incorrect")
2464 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2465 "QS| GAPW| eps_fit:", &
2466 qs_control%gapw_control%eps_fit, &
2467 "QS| GAPW| eps_iso:", &
2468 qs_control%gapw_control%eps_iso, &
2469 "QS| GAPW| eps_svd:", &
2470 qs_control%gapw_control%eps_svd, &
2471 "QS| GAPW| eps_cpc:", &
2472 qs_control%gapw_control%eps_cpc
2473 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2474 "QS| GAPW| atom-r-grid: quadrature:", &
2476 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2477 "QS| GAPW| atom-s-grid: max l :", &
2478 qs_control%gapw_control%lmax_sphere, &
2479 "QS| GAPW| max_l_rho0 :", &
2480 qs_control%gapw_control%lmax_rho0
2481 IF (qs_control%gapw_control%non_paw_atoms)
THEN
2482 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2483 "QS| GAPW| At least one kind is NOT PAW, i.e. it has only soft AO "
2485 IF (qs_control%gapw_control%nopaw_as_gpw)
THEN
2486 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2487 "QS| GAPW| The NOT PAW atoms are treated fully GPW"
2490 IF (qs_control%gapw_xc)
THEN
2491 SELECT CASE (qs_control%gapw_control%basis_1c)
2493 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2494 "QS| GAPW_XC| One center basis from orbital basis primitives"
2496 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2497 "QS| GAPW_XC| One center basis extended with primitives (small:s)"
2499 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2500 "QS| GAPW_XC| One center basis extended with primitives (medium:sp)"
2502 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2503 "QS| GAPW_XC| One center basis extended with primitives (large:spd)"
2505 WRITE (unit=output_unit, fmt=
"(T2,A)") &
2506 "QS| GAPW_XC| One center basis extended with primitives (very large:spdf)"
2508 cpabort(
"basis_1c incorrect")
2510 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2511 "QS| GAPW_XC| eps_fit:", &
2512 qs_control%gapw_control%eps_fit, &
2513 "QS| GAPW_XC| eps_iso:", &
2514 qs_control%gapw_control%eps_iso, &
2515 "QS| GAPW_XC| eps_svd:", &
2516 qs_control%gapw_control%eps_svd
2517 WRITE (unit=output_unit, fmt=
"(T2,A,T55,A30)") &
2518 "QS| GAPW_XC|atom-r-grid: quadrature:", &
2519 enum_i2c(enum, qs_control%gapw_control%quadrature)
2520 WRITE (unit=output_unit, fmt=
"(T2,A,T71,I10)") &
2521 "QS| GAPW_XC| atom-s-grid: max l :", &
2522 qs_control%gapw_control%lmax_sphere
2524 IF (qs_control%mulliken_restraint)
THEN
2525 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2526 "QS| Mulliken restraint target", qs_control%mulliken_restraint_control%target
2527 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2528 "QS| Mulliken restraint strength", qs_control%mulliken_restraint_control%strength
2529 WRITE (unit=output_unit, fmt=
"(T2,A,T73,I8)") &
2530 "QS| Mulliken restraint atoms: ", qs_control%mulliken_restraint_control%natoms
2531 WRITE (unit=output_unit, fmt=
"(5I8)") qs_control%mulliken_restraint_control%atoms
2533 IF (qs_control%ddapc_restraint)
THEN
2534 DO i = 1,
SIZE(qs_control%ddapc_restraint_control)
2535 ddapc_restraint_control => qs_control%ddapc_restraint_control(i)
2536 IF (
SIZE(qs_control%ddapc_restraint_control) > 1) &
2537 WRITE (unit=output_unit, fmt=
"(T2,A,T3,I8)") &
2538 "QS| parameters for DDAPC restraint number", i
2539 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2540 "QS| ddapc restraint target", ddapc_restraint_control%target
2541 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2542 "QS| ddapc restraint strength", ddapc_restraint_control%strength
2543 WRITE (unit=output_unit, fmt=
"(T2,A,T73,I8)") &
2544 "QS| ddapc restraint atoms: ", ddapc_restraint_control%natoms
2545 WRITE (unit=output_unit, fmt=
"(5I8)") ddapc_restraint_control%atoms
2546 WRITE (unit=output_unit, fmt=
"(T2,A)")
"Coefficients:"
2547 WRITE (unit=output_unit, fmt=
"(5F6.2)") ddapc_restraint_control%coeff
2548 SELECT CASE (ddapc_restraint_control%functional_form)
2550 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2551 "QS| ddapc restraint functional form :",
"RESTRAINT"
2553 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2554 "QS| ddapc restraint functional form :",
"CONSTRAINT"
2556 cpabort(
"Unknown ddapc restraint")
2560 IF (qs_control%s2_restraint)
THEN
2561 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2562 "QS| s2 restraint target", qs_control%s2_restraint_control%target
2563 WRITE (unit=output_unit, fmt=
"(T2,A,T73,ES8.1)") &
2564 "QS| s2 restraint strength", qs_control%s2_restraint_control%strength
2565 SELECT CASE (qs_control%s2_restraint_control%functional_form)
2567 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2568 "QS| s2 restraint functional form :",
"RESTRAINT"
2569 cpabort(
"Not yet implemented")
2571 WRITE (unit=output_unit, fmt=
"(T2,A,T61,A20)") &
2572 "QS| s2 restraint functional form :",
"CONSTRAINT"
2574 cpabort(
"Unknown ddapc restraint")
2579 "DFT_CONTROL_PARAMETERS")
2581 CALL timestop(handle)
2599 TYPE(
section_vals_type),
OPTIONAL,
POINTER :: qs_section, ddapc_restraint_section
2601 INTEGER :: i, j, jj, k, n_rep
2602 INTEGER,
DIMENSION(:),
POINTER :: tmplist
2603 REAL(kind=
dp),
DIMENSION(:),
POINTER :: rtmplist
2607 IF (
PRESENT(ddapc_restraint_section))
THEN
2608 IF (
ASSOCIATED(qs_control%ddapc_restraint_control))
THEN
2609 IF (
SIZE(qs_control%ddapc_restraint_control) >= 2) &
2610 cpabort(
"ET_COUPLING cannot be used in combination with a normal restraint")
2612 ddapc_section => ddapc_restraint_section
2613 ALLOCATE (qs_control%ddapc_restraint_control(1))
2617 IF (
PRESENT(qs_section))
THEN
2618 NULLIFY (ddapc_section)
2623 DO i = 1,
SIZE(qs_control%ddapc_restraint_control)
2626 ddapc_restraint_control => qs_control%ddapc_restraint_control(i)
2629 r_val=ddapc_restraint_control%strength)
2631 r_val=ddapc_restraint_control%target)
2633 i_val=ddapc_restraint_control%functional_form)
2637 i_val=ddapc_restraint_control%density_type)
2642 i_rep_val=k, i_vals=tmplist)
2643 DO j = 1,
SIZE(tmplist)
2647 IF (jj < 1) cpabort(
"Need at least 1 atom to use ddapc constraints")
2648 ddapc_restraint_control%natoms = jj
2649 IF (
ASSOCIATED(ddapc_restraint_control%atoms)) &
2650 DEALLOCATE (ddapc_restraint_control%atoms)
2651 ALLOCATE (ddapc_restraint_control%atoms(ddapc_restraint_control%natoms))
2655 i_rep_val=k, i_vals=tmplist)
2656 DO j = 1,
SIZE(tmplist)
2658 ddapc_restraint_control%atoms(jj) = tmplist(j)
2662 IF (
ASSOCIATED(ddapc_restraint_control%coeff)) &
2663 DEALLOCATE (ddapc_restraint_control%coeff)
2664 ALLOCATE (ddapc_restraint_control%coeff(ddapc_restraint_control%natoms))
2665 ddapc_restraint_control%coeff = 1.0_dp
2672 i_rep_val=k, r_vals=rtmplist)
2673 DO j = 1,
SIZE(rtmplist)
2675 IF (jj > ddapc_restraint_control%natoms) &
2676 cpabort(
"Need the same number of coeff as there are atoms ")
2677 ddapc_restraint_control%coeff(jj) = rtmplist(j)
2680 IF (jj < ddapc_restraint_control%natoms .AND. jj /= 0) &
2681 cpabort(
"Need no or the same number of coeff as there are atoms.")
2684 DO i = 1,
SIZE(qs_control%ddapc_restraint_control)
2685 IF (qs_control%ddapc_restraint_control(i)%functional_form == &
2688 IF (k == 2)
CALL cp_abort(__location__, &
2689 "Only a single constraint possible yet, try to use restraints instead ")
2698 SUBROUTINE read_efield_sections(dft_control, efield_section)
2702 CHARACTER(len=default_path_length) :: file_name
2703 INTEGER :: i, io, j, n, unit_nr
2704 REAL(kind=
dp),
DIMENSION(:),
POINTER :: tmp_vals
2708 DO i = 1,
SIZE(dft_control%efield_fields)
2709 NULLIFY (dft_control%efield_fields(i)%efield)
2710 ALLOCATE (dft_control%efield_fields(i)%efield)
2711 efield => dft_control%efield_fields(i)%efield
2712 NULLIFY (efield%envelop_i_vars, efield%envelop_r_vars)
2714 r_val=efield%strength)
2718 ALLOCATE (efield%polarisation(
SIZE(tmp_vals)))
2719 efield%polarisation = tmp_vals
2721 r_val=efield%phase_offset)
2723 i_val=efield%envelop_id)
2725 r_val=efield%wavelength)
2728 efield%vec_pot_initial = tmp_vals
2731 ALLOCATE (efield%envelop_i_vars(2))
2734 i_val=efield%envelop_i_vars(1))
2736 i_val=efield%envelop_i_vars(2))
2738 ALLOCATE (efield%envelop_r_vars(2))
2741 r_val=efield%envelop_r_vars(1))
2743 r_val=efield%envelop_r_vars(2))
2744 ELSE IF (efield%envelop_id ==
ramp_env)
THEN
2745 ALLOCATE (efield%envelop_i_vars(4))
2748 i_val=efield%envelop_i_vars(1))
2750 i_val=efield%envelop_i_vars(2))
2752 i_val=efield%envelop_i_vars(3))
2754 i_val=efield%envelop_i_vars(4))
2755 ELSE IF (efield%envelop_id ==
custom_env)
THEN
2758 CALL open_file(file_name=trim(file_name), file_action=
"READ", file_status=
"OLD", unit_number=unit_nr)
2762 READ (unit_nr, *, iostat=io)
2767 ALLOCATE (efield%envelop_r_vars(n + 1))
2772 READ (unit_nr, *) efield%envelop_r_vars(j)
2773 efield%envelop_r_vars(j) =
cp_unit_to_cp2k(efield%envelop_r_vars(j),
"volt/m")
2778 END SUBROUTINE read_efield_sections
2786 SUBROUTINE read_rtp_section(dft_control, rtp_section)
2791 INTEGER :: i, j, n_elems
2792 INTEGER,
DIMENSION(:),
POINTER :: tmp
2793 LOGICAL :: is_present, local_moment_possible
2796 ALLOCATE (dft_control%rtp_control)
2798 i_val=dft_control%rtp_control%max_iter)
2800 i_val=dft_control%rtp_control%mat_exp)
2802 i_val=dft_control%rtp_control%aspc_order)
2804 r_val=dft_control%rtp_control%eps_exp)
2806 i_val=dft_control%rtp_control%rtp_method)
2808 i_val=dft_control%rtp_control%rtbse_ham)
2810 i_val=dft_control%rtp_control%propagator)
2812 r_val=dft_control%rtp_control%eps_ener)
2814 i_val=dft_control%rtp_control%initial_wfn)
2816 l_val=dft_control%rtp_control%hfx_redistribute)
2818 l_val=dft_control%rtp_control%apply_wfn_mix_init_restart)
2820 l_val=dft_control%rtp_control%apply_delta_pulse)
2822 l_val=dft_control%rtp_control%apply_delta_pulse_mag)
2824 l_val=dft_control%rtp_control%velocity_gauge)
2826 l_val=dft_control%rtp_control%nl_gauge_transform)
2828 l_val=dft_control%rtp_control%periodic)
2830 l_val=dft_control%rtp_control%linear_scaling)
2832 i_val=dft_control%rtp_control%mcweeny_max_iter)
2834 i_val=dft_control%rtp_control%acc_ref)
2836 r_val=dft_control%rtp_control%mcweeny_eps)
2838 r_val=dft_control%rtp_control%delta_pulse_scale)
2841 dft_control%rtp_control%delta_pulse_direction = tmp
2843 i_val=dft_control%rtp_control%sc_check_start)
2846 IF (is_present)
THEN
2847 IF (dft_control%rtp_control%linear_scaling) &
2848 CALL cp_abort(__location__, &
2849 "You have defined a time dependent projection of mos, but "// &
2850 "only the density matrix is propagated (DENSITY_PROPAGATION "// &
2851 ".TRUE.). Please either use MO-based real time DFT or do not "// &
2852 "define any PRINT%PROJECTION_MO section")
2853 dft_control%rtp_control%is_proj_mo = .true.
2855 dft_control%rtp_control%is_proj_mo = .false.
2858 local_moment_possible = (dft_control%rtp_control%rtp_method ==
rtp_method_bse) .OR. &
2859 ((.NOT. dft_control%rtp_control%periodic) .AND. dft_control%rtp_control%linear_scaling)
2864 dft_control%rtp_control%save_local_moments = &
2865 is_present .OR. dft_control%rtp_control%save_local_moments
2866 IF (is_present .AND. (.NOT. local_moment_possible))
THEN
2867 CALL cp_abort(__location__,
"Moments trace printing only "// &
2868 "implemented in non-periodic systems in linear scaling. "// &
2869 "Please use DFT%PRINT%MOMENTS for other printing.")
2872 i_val=dft_control%rtp_control%moment_trace_ref_type)
2874 r_vals=dft_control%rtp_control%moment_trace_user_ref_point)
2879 dft_control%rtp_control%save_local_moments = &
2880 is_present .OR. dft_control%rtp_control%save_local_moments
2881 IF (is_present .AND. (.NOT. local_moment_possible))
THEN
2883 CALL cp_abort(__location__,
"Moments Fourier transform printing "// &
2884 "implemented only for non-periodic systems in linear scaling.")
2888 r_val=dft_control%rtp_control%ft_damping)
2890 r_val=dft_control%rtp_control%ft_t0)
2894 l_val=dft_control%rtp_control%pade_requested)
2896 r_val=dft_control%rtp_control%pade_e_min)
2898 r_val=dft_control%rtp_control%pade_e_step)
2900 r_val=dft_control%rtp_control%pade_e_max)
2902 r_val=dft_control%rtp_control%pade_fit_e_min)
2904 r_val=dft_control%rtp_control%pade_fit_e_max)
2906 IF (dft_control%rtp_control%pade_fit_e_min < 0)
THEN
2907 dft_control%rtp_control%pade_fit_e_min = dft_control%rtp_control%pade_e_min
2909 IF (dft_control%rtp_control%pade_fit_e_max < 0)
THEN
2910 dft_control%rtp_control%pade_fit_e_max = dft_control%rtp_control%pade_e_max
2916 dft_control%rtp_control%save_local_moments = &
2917 is_present .OR. dft_control%rtp_control%save_local_moments
2918 IF (is_present .AND. (.NOT. local_moment_possible))
THEN
2920 CALL cp_abort(__location__,
"Polarizability printing "// &
2921 "implemented only for non-periodic systems.")
2924 NULLIFY (dft_control%rtp_control%print_pol_elements)
2925 IF (is_present)
THEN
2928 ALLOCATE (dft_control%rtp_control%print_pol_elements(n_elems, 2))
2931 dft_control%rtp_control%print_pol_elements(i, :) = tmp(:)
2936 IF (dft_control%rtp_control%print_pol_elements(i, j) > 3 .OR. &
2937 dft_control%rtp_control%print_pol_elements(i, j) < 1) &
2938 cpabort(
"Polarisation tensor element not 1,2 or 3 in at least one index")
2945 dft_control%rtp_control%save_local_moments = &
2946 dft_control%rtp_control%save_local_moments .OR. &
2947 ((.NOT. dft_control%rtp_control%periodic) .AND. dft_control%rtp_control%linear_scaling)
2949 END SUBROUTINE read_rtp_section
2957 SUBROUTINE guess_pol_elements(dftc, elems)
2959 INTEGER,
DIMENSION(:, :),
POINTER :: elems
2961 INTEGER :: i, i_nonzero, n_nonzero
2962 LOGICAL :: pol_vector_known
2963 REAL(kind=
dp),
DIMENSION(3) :: pol_vector
2965 pol_vector_known = .false.
2968 IF (dftc%rtp_control%apply_delta_pulse .OR. dftc%rtp_control%apply_delta_pulse_mag)
THEN
2969 pol_vector(:) = real(dftc%rtp_control%delta_pulse_direction(:), kind=
dp)
2972 pol_vector(:) = dftc%efield_fields(1)%efield%polarisation(:)
2974 IF (dot_product(pol_vector, pol_vector) > 0.0_dp) pol_vector_known = .true.
2976 IF (.NOT. pol_vector_known)
THEN
2977 cpabort(
"Cannot guess polarization elements - please specify!")
2982 IF (pol_vector(i) /= 0.0_dp)
THEN
2983 n_nonzero = n_nonzero + 1
2987 IF (n_nonzero > 1)
THEN
2988 CALL cp_abort(__location__, &
2989 "More than one non-zero field elements - "// &
2990 "cannot guess polarizability elements - please specify!")
2991 ELSE IF (n_nonzero == 0)
THEN
2992 CALL cp_abort(__location__, &
2993 "No non-zero field elements - "// &
2994 "cannot guess polarizability elements - please specify!")
2998 ALLOCATE (elems(3, 2))
3001 elems(i, 2) = i_nonzero
3005 END SUBROUTINE guess_pol_elements
3012 SUBROUTINE read_admm_block_list(admm_control, dft_section)
3016 INTEGER :: irep, list_size, n_rep
3017 INTEGER,
DIMENSION(:),
POINTER :: tmplist
3024 ALLOCATE (admm_control%blocks(n_rep))
3028 i_rep_val=irep, i_vals=tmplist)
3029 list_size =
SIZE(tmplist)
3030 ALLOCATE (admm_control%blocks(irep)%list(list_size))
3031 admm_control%blocks(irep)%list(:) = tmplist(:)
3034 END SUBROUTINE read_admm_block_list
3043 SUBROUTINE read_hairy_probes_sections(dft_control, hairy_probes_section)
3047 INTEGER :: i, j, jj, kk, n_rep
3048 INTEGER,
DIMENSION(:),
POINTER :: tmplist
3050 DO i = 1,
SIZE(dft_control%probe)
3051 NULLIFY (dft_control%probe(i)%atom_ids)
3056 CALL section_vals_val_get(hairy_probes_section,
"ATOM_IDS", i_rep_section=i, i_rep_val=kk, i_vals=tmplist)
3057 jj = jj +
SIZE(tmplist)
3060 dft_control%probe(i)%natoms = jj
3061 IF (dft_control%probe(i)%natoms < 1) &
3062 cpabort(
"Need at least 1 atom to use hair probes formalism")
3063 ALLOCATE (dft_control%probe(i)%atom_ids(dft_control%probe(i)%natoms))
3067 CALL section_vals_val_get(hairy_probes_section,
"ATOM_IDS", i_rep_section=i, i_rep_val=kk, i_vals=tmplist)
3068 DO j = 1,
SIZE(tmplist)
3070 dft_control%probe(i)%atom_ids(jj) = tmplist(j)
3074 CALL section_vals_val_get(hairy_probes_section,
"MU", i_rep_section=i, r_val=dft_control%probe(i)%mu)
3076 CALL section_vals_val_get(hairy_probes_section,
"T", i_rep_section=i, r_val=dft_control%probe(i)%T)
3078 CALL section_vals_val_get(hairy_probes_section,
"ALPHA", i_rep_section=i, r_val=dft_control%probe(i)%alpha)
3080 CALL section_vals_val_get(hairy_probes_section,
"eps_hp", i_rep_section=i, r_val=dft_control%probe(i)%eps_hp)
3083 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, quip, 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...