70#include "./base/base_uses.f90"
75 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
76 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_properties_dft'
93 cpassert(.NOT.
ASSOCIATED(section))
95 description=
"This section is used to set up the PROPERTIES calculation.", &
96 n_keywords=0, n_subsections=6, repeats=.false.)
98 NULLIFY (subsection, keyword)
100 CALL create_linres_section(subsection, create_subsections=.true.)
104 CALL create_et_coupling_section(subsection)
117 description=
"This section is used to print the density derived atomic point charges. "// &
118 "The fit of the charges is controlled through the DENSITY_FITTING section", &
120 CALL keyword_create(keyword, __location__, name=
"TYPE_OF_DENSITY", &
121 description=
"Specifies the type of density used for the fitting", &
122 usage=
"TYPE_OF_DENSITY (FULL|SPIN)", &
123 enum_c_vals=
s2a(
"FULL",
"SPIN"), &
125 enum_desc=
s2a(
"Full density",
"Spin density"), &
132 CALL create_tddfpt2_section(subsection)
136 CALL create_rixs_section(subsection)
140 CALL create_bandstructure_section(subsection)
144 CALL create_tipscan_section(subsection)
155 SUBROUTINE create_rixs_section(section)
160 cpassert(.NOT.
ASSOCIATED(section))
162 NULLIFY (keyword, subsection, print_key)
165 description=
"Resonant Inelastic Xray Scattering using XAS_TDP and TDDFPT.", &
166 n_keywords=1, n_subsections=3, repeats=.false., &
170 name=
"_SECTION_PARAMETERS_", &
171 description=
"Controls the activation of the RIXS procedure", &
172 default_l_val=.false., &
173 lone_keyword_l_val=.true.)
178 description=
"Number of core excited states to be used in the RIXS "// &
179 "calculation. Restricting this number reduces computational cost. "// &
180 "-1 means all available core states will be used.", &
181 n_var=1, type_of_var=
integer_t, default_i_val=-1)
185 CALL keyword_create(keyword, __location__, name=
"VALENCE_STATES", &
186 description=
"Number of valence excited states to be used in the RIXS "// &
187 "calculation. Restricting this number reduces computational cost, but "// &
188 "removes spectral features corresponding to higher excitations. Should be "// &
189 "used with care. -1 means all available valence states will be used.", &
190 n_var=1, type_of_var=
integer_t, default_i_val=-1)
194 CALL create_tddfpt2_section(subsection)
202 CALL section_create(subsection, __location__,
"PRINT",
"Controls the printing of information "// &
203 "during RIXS calculations", repeats=.false.)
206 description=
"Controles the printing of the RIXS spectrum "// &
209 common_iter_levels=3)
216 END SUBROUTINE create_rixs_section
227 SUBROUTINE create_linres_section(section, create_subsections, default_set_tdlr)
229 LOGICAL,
INTENT(in) :: create_subsections
230 LOGICAL,
INTENT(IN),
OPTIONAL :: default_set_tdlr
232 INTEGER :: def_max_iter, def_precond
233 REAL(kind=
dp) :: def_egap, def_eps, def_eps_filter
237 CHARACTER(len=256) :: desc
239 NULLIFY (keyword, print_key)
241 IF (
PRESENT(default_set_tdlr))
THEN
244 def_eps_filter = 1.0e-15_dp
247 desc =
"Controls the parameters of the LINRES force calculations for excited states."
251 def_eps_filter = 0.0_dp
254 desc =
"The linear response is used to calculate one of the following properties: nmr, epr, raman, ..."
257 cpassert(.NOT.
ASSOCIATED(section))
259 description=desc, n_keywords=5, n_subsections=2, repeats=.false., &
263 description=
"target accuracy for the convergence of the conjugate gradient.", &
264 usage=
"EPS 1.e-6", default_r_val=def_eps)
269 description=
"Filter threshold for response density matrix.", &
270 usage=
"EPS_FILTER 1.e-8", default_r_val=def_eps_filter)
275 description=
"Maximum number of conjugate gradient iteration to be performed for one optimization.", &
276 usage=
"MAX_ITER 200", default_i_val=def_max_iter)
280 CALL keyword_create(keyword, __location__, name=
"RESTART_EVERY", &
281 description=
"Restart the conjugate gradient after the specified number of iterations.", &
282 usage=
"RESTART_EVERY 200", default_i_val=50)
287 keyword, __location__, name=
"PRECONDITIONER", &
288 description=
"Type of preconditioner to be used with all minimization schemes. "// &
289 "They differ in effectiveness, cost of construction, cost of application. "// &
290 "Properly preconditioned minimization can be orders of magnitude faster than doing nothing.", &
291 usage=
"PRECONDITIONER FULL_ALL", &
292 default_i_val=def_precond, &
293 enum_c_vals=
s2a(
"FULL_ALL",
"FULL_SINGLE_INVERSE",
"FULL_SINGLE",
"FULL_KINETIC",
"FULL_S_INVERSE", &
295 enum_desc=
s2a(
"Most effective state selective preconditioner based on diagonalization, "// &
296 "requires the ENERGY_GAP parameter to be an underestimate of the HOMO-LUMO gap. "// &
297 "This preconditioner is recommended for almost all systems, except very large systems where "// &
298 "make_preconditioner would dominate the total computational cost.", &
299 "Based on H-eS cholesky inversion, similar to FULL_SINGLE in preconditioning efficiency "// &
300 "but cheaper to construct, "// &
301 "might be somewhat less robust. Recommended for large systems.", &
302 "Based on H-eS diagonalisation, not as good as FULL_ALL, but somewhat cheaper to apply. ", &
303 "Cholesky inversion of S and T, fast construction, robust, and relatively good, "// &
304 "use for very large systems.", &
305 "Cholesky inversion of S, not as good as FULL_KINETIC, yet equally expensive.", &
306 "skip preconditioning"), &
313 description=
"Energy gap estimate [a.u.] for preconditioning", &
314 usage=
"ENERGY_GAP 0.1", &
315 default_r_val=def_egap)
320 description=
"Perform a linear response calculation every N-th step for MD run", &
321 usage=
"EVERY_N_STEP 50", default_i_val=1)
326 description=
"Restart the response calculation if the restart file exists", &
328 default_l_val=.false., lone_keyword_l_val=.true.)
332 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
333 variants=[
"RESTART_FILE_NAME"], &
334 description=
"Root of the file names where to read the response functions from "// &
335 "which to restart the calculation of the linear response", &
336 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
341 IF (create_subsections)
THEN
348 CALL create_current_section(subsection)
352 CALL create_nmr_section(subsection)
356 CALL create_spin_spin_section(subsection)
360 CALL create_epr_section(subsection)
364 CALL create_polarizability_section(subsection)
368 CALL create_dcdr_section(subsection)
372 CALL create_vcd_section(subsection)
377 description=
"printing of information during the linear response calculation", &
381 print_key, __location__,
"program_run_info", &
382 description=
"Controls the printing of basic iteration information during the LINRES calculation", &
388 description=
"Controls the dumping of restart file of the response wavefunction. "// &
389 "For each set of response functions, i.e. for each perturbation, "// &
390 "one different restart file is dumped. These restart files should be "// &
391 "employed only to restart the same type of LINRES calculation, "// &
392 "i.e. with the same perturbation.", &
403 END SUBROUTINE create_linres_section
411 SUBROUTINE create_dcdr_section(section)
420 NULLIFY (keyword, print_key, subsection)
422 cpassert(.NOT.
ASSOCIATED(section))
424 IF (.NOT. failure)
THEN
426 description=
"Compute analytical gradients the dipole moments.", &
427 n_keywords=50, n_subsections=1, repeats=.false.)
429 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
430 description=
"controls the activation of the APT calculation", &
432 default_l_val=.false., &
433 lone_keyword_l_val=.true.)
437 CALL keyword_create(keyword, __location__, name=
"LIST_OF_ATOMS", &
438 description=
"Specifies a list of atoms.", &
439 usage=
"LIST_OF_ATOMS {integer} {integer} .. {integer}", repeats=.true., &
444 CALL keyword_create(keyword, __location__, name=
"DISTRIBUTED_ORIGIN", &
445 variants=[
"DO_GAUGE"], &
446 description=
"Use the distributed origin (DO) gauge?", &
447 usage=
"DISTRIBUTED_ORIGIN T", &
448 default_l_val=.false., lone_keyword_l_val=.true.)
452 CALL keyword_create(keyword, __location__, name=
"ORBITAL_CENTER", &
453 description=
"The orbital center.", &
454 usage=
"ORBITAL_CENTER WANNIER", &
456 enum_c_vals=
s2a(
"WANNIER",
"COMMON",
"ATOM",
"BOX"), &
457 enum_desc=
s2a(
"Use the Wannier centers.", &
458 "Use a common center (works only for an isolate molecule).", &
459 "Use the atoms as center.", &
467 description=
"Gauge origin of the velocity gauge factor.", &
468 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
469 enum_desc=
s2a(
"Use Center of Mass", &
470 "Use Center of Atomic Charges", &
471 "Use User-defined Point", &
472 "Use Origin of Coordinate System"), &
481 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
482 description=
"User-defined reference point of the velocity gauge factor.", &
483 usage=
"REFERENCE_POINT x y z", &
484 repeats=.false., n_var=3, type_of_var=
real_t, unit_str=
'bohr')
488 CALL keyword_create(keyword, __location__, name=
"Z_MATRIX_METHOD", &
489 description=
"Use Z_matrix method to solve the response equation", &
490 usage=
"Z_MATRIX_METHOD T", &
491 default_l_val=.false., lone_keyword_l_val=.true.)
496 description=
"Use numerical differentiation to compute the APT, "// &
497 "switches off the calculation of dcdr analytical derivatives. "// &
498 "Requires RUN_TYPE = ENERGY_FORCE or MD.", &
500 default_l_val=.false., lone_keyword_l_val=.true.)
505 description=
"Electric field strength (atomic units) to use for finite differences", &
509 default_r_val=0.0003_dp, &
510 usage=
"APT_FD_DE 1.0E-4")
514 CALL keyword_create(keyword, __location__, name=
"APT_FD_METHOD", &
515 description=
"Numerical differentiation method", &
516 usage=
"APT_FD_METHOD FD", &
519 enum_c_vals=
s2a(
"2PNT"), &
522 enum_desc=
s2a(
"Symmetric two-point differences."), &
530 description=
"print results of the magnetic dipole moment calculation", &
534 description=
"Controls the printing of the electric dipole gradient", &
549 END SUBROUTINE create_dcdr_section
557 SUBROUTINE create_vcd_section(section)
564 NULLIFY (keyword, print_key, subsection)
566 cpassert(.NOT.
ASSOCIATED(section))
569 description=
"Carry out a VCD calculation.", &
570 n_keywords=50, n_subsections=1, repeats=.false.)
572 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
573 description=
"controls the activation of the APT/AAT calculation", &
575 default_l_val=.false., &
576 lone_keyword_l_val=.true.)
580 CALL keyword_create(keyword, __location__, name=
"LIST_OF_ATOMS", &
581 description=
"Specifies a list of atoms.", &
582 usage=
"LIST_OF_ATOMS {integer} {integer} .. {integer}", repeats=.true., &
587 CALL keyword_create(keyword, __location__, name=
"DISTRIBUTED_ORIGIN", &
588 variants=[
"DO_GAUGE"], &
589 description=
"Use the distributed origin (DO) gauge?", &
590 usage=
"DISTRIBUTED_ORIGIN T", &
591 default_l_val=.false., lone_keyword_l_val=.true.)
595 CALL keyword_create(keyword, __location__, name=
"ORIGIN_DEPENDENT_MFP", &
596 description=
"Use the origin dependent MFP operator.", &
597 usage=
"ORIGIN_DEPENDENT_MFP T", &
598 default_l_val=.false., lone_keyword_l_val=.true.)
602 CALL keyword_create(keyword, __location__, name=
"ORBITAL_CENTER", &
603 description=
"The orbital center.", &
604 usage=
"ORBITAL_CENTER WANNIER", &
606 enum_c_vals=
s2a(
"WANNIER",
"COMMON",
"ATOM",
"BOX"), &
607 enum_desc=
s2a(
"Use the Wannier centers.", &
608 "Use a common center (works only for an isolate molecule).", &
609 "Use the atoms as center.", &
617 CALL keyword_create(keyword, __location__, name=
"MAGNETIC_ORIGIN", &
618 description=
"Gauge origin of the magnetic dipole operator.", &
619 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
620 enum_desc=
s2a(
"Use Center of Mass", &
621 "Use Center of Atomic Charges", &
622 "Use User-defined Point", &
623 "Use Origin of Coordinate System"), &
632 CALL keyword_create(keyword, __location__, name=
"MAGNETIC_ORIGIN_REFERENCE", &
633 description=
"User-defined reference point of the magnetic dipole operator.", &
634 usage=
"MAGNETIC_ORIGIN_REFERENCE x y z", &
635 repeats=.false., n_var=3, type_of_var=
real_t, unit_str=
'bohr')
640 CALL keyword_create(keyword, __location__, name=
"SPATIAL_ORIGIN", &
641 description=
"Gauge origin of the velocity gauge factor/spatial origin.", &
642 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
643 enum_desc=
s2a(
"Use Center of Mass", &
644 "Use Center of Atomic Charges", &
645 "Use User-defined Point", &
646 "Use Origin of Coordinate System"), &
655 CALL keyword_create(keyword, __location__, name=
"SPATIAL_ORIGIN_REFERENCE", &
656 description=
"User-defined reference point of the velocity gauge factor/spatial origin.", &
657 usage=
"SPATIAL_ORIGIN_REFERENCE x y z", &
658 repeats=.false., n_var=3, type_of_var=
real_t, unit_str=
'bohr')
664 description=
"print results of the magnetic dipole moment calculation", &
668 description=
"Controls the printing of the APTs and AATs", &
681 END SUBROUTINE create_vcd_section
690 SUBROUTINE create_current_section(section)
696 NULLIFY (keyword, print_key, subsection)
698 cpassert(.NOT.
ASSOCIATED(section))
700 description=
"The induced current density is calculated by DFPT.", &
701 n_keywords=4, n_subsections=1, repeats=.false., &
704 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
705 description=
"controls the activation of the induced current calculation", &
706 usage=
"&CURRENT T", &
707 default_l_val=.false., &
708 lone_keyword_l_val=.true.)
713 description=
"The gauge used to compute the induced current within GAPW.", &
716 enum_c_vals=
s2a(
"R",
"R_AND_STEP_FUNCTION",
"ATOM"), &
717 enum_desc=
s2a(
"Position gauge (doesnt work well).", &
718 "Position and step function for the soft and the local parts, respectively.", &
724 CALL keyword_create(keyword, __location__, name=
"GAUGE_ATOM_RADIUS", &
725 description=
"Build the gauge=atom using only the atoms within this radius.", &
726 usage=
"GAUGE_ATOM_RADIUS 10.0", &
733 CALL keyword_create(keyword, __location__, name=
"USE_OLD_GAUGE_ATOM", &
734 description=
"Use the old way to compute the gauge.", &
735 usage=
"USE_OLD_GAUGE_ATOM T", &
736 default_l_val=.true., lone_keyword_l_val=.true.)
740 CALL keyword_create(keyword, __location__, name=
"ORBITAL_CENTER", &
741 description=
"The orbital center.", &
742 usage=
"ORBITAL_CENTER WANNIER", &
744 enum_c_vals=
s2a(
"WANNIER",
"COMMON",
"ATOM",
"BOX"), &
745 enum_desc=
s2a(
"Use the Wannier centers.", &
746 "Use a common center (works only for an isolate molecule).", &
747 "Use the atoms as center.", &
754 CALL keyword_create(keyword, __location__, name=
"COMMON_CENTER", &
755 description=
"The common center ", usage=
"COMMON_CENTER 0.0 1.0 0.0", &
756 n_var=3, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp], type_of_var=
real_t, &
762 description=
"How many boxes along each directions ", usage=
"NBOX 6 6 5", &
763 n_var=3, default_i_vals=[4, 4, 4], type_of_var=
integer_t)
768 description=
"Calculate the succeptibility correction to the shift with PBC", &
770 default_l_val=.false., lone_keyword_l_val=.true.)
774 CALL keyword_create(keyword, __location__, name=
"FORCE_NO_FULL", &
775 description=
"Avoid the calculation of the state dependent perturbation term, "// &
776 "even if the orbital centers are set at Wannier centers or at Atom centers", &
777 usage=
"FORCE_NO_FULL T", &
778 default_l_val=.false., lone_keyword_l_val=.true.)
782 CALL keyword_create(keyword, __location__, name=
"SELECTED_STATES_ON_ATOM_LIST", &
783 description=
"Indexes of the atoms for selecting"// &
784 " the states to be used for the response calculations.", &
785 usage=
"SELECTED_STATES_ON_ATOM_LIST 1 2 10", &
786 n_var=-1, type_of_var=
integer_t, repeats=.true.)
790 CALL keyword_create(keyword, __location__, name=
"SELECTED_STATES_ATOM_RADIUS", &
791 description=
"Select all the states included in the given radius around each atoms "// &
792 "in SELECTED_STATES_ON_ATOM_LIST.", &
793 usage=
"SELECTED_STATES_ATOM_RADIUS 2.0", &
800 CALL keyword_create(keyword, __location__, name=
"RESTART_CURRENT", &
801 description=
"Restart the induced current density calculation"// &
802 " from a previous run (not working yet).", &
803 usage=
"RESTART_CURRENT", default_l_val=.false., &
804 lone_keyword_l_val=.true.)
810 description=
"print results of induced current density calculation", &
814 description=
"Controls the printing of the induced current density (not working yet).", &
817 description=
"The stride (X,Y,Z) used to write the cube file "// &
818 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
819 " 1 number valid for all components (not working yet).", &
820 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
824 description=
"append the cube files when they already exist", &
825 default_l_val=.false., lone_keyword_l_val=.true.)
833 description=
"Controls the printing of the response functions (not working yet).", &
836 description=
"The stride (X,Y,Z) used to write the cube file "// &
837 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
838 " 1 number valid for all components (not working yet).", &
839 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
843 CALL keyword_create(keyword, __location__, name=
"CUBES_LU_BOUNDS", &
844 variants=[
"CUBES_LU"], &
845 description=
"The lower and upper index of the states to be printed as cube (not working yet).", &
846 usage=
"CUBES_LU_BOUNDS integer integer", &
847 n_var=2, default_i_vals=[0, -2], type_of_var=
integer_t)
852 description=
"Indexes of the states to be printed as cube files "// &
853 "This keyword can be repeated several times "// &
854 "(useful if you have to specify many indexes) (not working yet).", &
855 usage=
"CUBES_LIST 1 2", &
856 n_var=-1, type_of_var=
integer_t, repeats=.true.)
860 description=
"append the cube files when they already exist", &
861 default_l_val=.false., lone_keyword_l_val=.true.)
876 END SUBROUTINE create_current_section
886 SUBROUTINE create_nmr_section(section)
892 NULLIFY (keyword, print_key, subsection)
894 cpassert(.NOT.
ASSOCIATED(section))
896 description=
"The chemical shift is calculated by DFPT.", &
897 n_keywords=5, n_subsections=1, repeats=.false., &
900 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
901 description=
"controls the activation of the nmr calculation", &
903 default_l_val=.false., &
904 lone_keyword_l_val=.true.)
908 CALL keyword_create(keyword, __location__, name=
"INTERPOLATE_SHIFT", &
909 description=
"Calculate the soft part of the chemical shift by interpolation ", &
910 usage=
"INTERPOLATE_SHIFT T", &
911 default_l_val=.false., lone_keyword_l_val=.true.)
916 description=
"Calculate the chemical shift in a set of points"// &
917 " given from an external file", usage=
"NICS", &
918 default_l_val=.false., lone_keyword_l_val=.true.)
922 CALL keyword_create(keyword, __location__, name=
"NICS_FILE_NAME", &
923 description=
"Name of the file with the NICS points coordinates", &
924 usage=
"NICS_FILE_NAME nics_file", &
925 default_lc_val=
"nics_file")
930 description=
"Restart the NMR calculation from a previous run (NOT WORKING YET)", &
931 usage=
"RESTART_NMR", default_l_val=.false., &
932 lone_keyword_l_val=.true.)
936 CALL keyword_create(keyword, __location__, name=
"SHIFT_GAPW_RADIUS", &
937 description=
"While computing the local part of the shift (GAPW), "// &
938 "the integration is restricted to nuclei that are within this radius.", &
939 usage=
"SHIFT_GAPW_RADIUS 20.0", &
948 description=
"print results of nmr calculation", &
952 description=
"Controls the printing of the response functions ", &
955 description=
"The stride (X,Y,Z) used to write the cube file "// &
956 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
957 " 1 number valid for all components.", &
958 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
962 CALL keyword_create(keyword, __location__, name=
"CUBES_LU_BOUNDS", &
963 variants=[
"CUBES_LU"], &
964 description=
"The lower and upper index of the states to be printed as cube", &
965 usage=
"CUBES_LU_BOUNDS integer integer", &
966 n_var=2, default_i_vals=[0, -2], type_of_var=
integer_t)
971 description=
"Indexes of the states to be printed as cube files "// &
972 "This keyword can be repeated several times "// &
973 "(useful if you have to specify many indexes).", &
974 usage=
"CUBES_LIST 1 2", &
975 n_var=-1, type_of_var=
integer_t, repeats=.true.)
979 description=
"append the cube files when they already exist", &
980 default_l_val=.false., lone_keyword_l_val=.true.)
988 description=
"Controls the printing of susceptibility", &
994 description=
"Controls the printing of the chemical shift", &
997 CALL keyword_create(keyword, __location__, name=
"ATOMS_LU_BOUNDS", &
998 variants=[
"ATOMS_LU"], &
999 description=
"The lower and upper atomic index for which the tensor is printed", &
1000 usage=
"ATOMS_LU_BOUNDS integer integer", &
1001 n_var=2, default_i_vals=[0, -2], type_of_var=
integer_t)
1006 description=
"list of atoms for which the shift is printed into a file ", &
1007 usage=
"ATOMS_LIST 1 2", n_var=-1, &
1018 NULLIFY (subsection)
1023 END SUBROUTINE create_nmr_section
1032 SUBROUTINE create_spin_spin_section(section)
1038 NULLIFY (keyword, print_key, subsection)
1040 cpassert(.NOT.
ASSOCIATED(section))
1042 description=
"Compute indirect spin-spin coupling constants.", &
1043 n_keywords=5, n_subsections=1, repeats=.false.)
1045 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1046 description=
"controls the activation of the nmr calculation", &
1047 usage=
"&SPINSPIN T", &
1048 default_l_val=.false., &
1049 lone_keyword_l_val=.true.)
1053 CALL keyword_create(keyword, __location__, name=
"RESTART_SPINSPIN", &
1054 description=
"Restart the spin-spin calculation from a previous run (NOT WORKING YET)", &
1055 usage=
"RESTART_SPINSPIN", default_l_val=.false., &
1056 lone_keyword_l_val=.true.)
1060 CALL keyword_create(keyword, __location__, name=
"ISSC_ON_ATOM_LIST", &
1061 description=
"Atoms for which the issc is computed.", &
1062 usage=
"ISSC_ON_ATOM_LIST 1 2 10", &
1063 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1068 description=
"Compute the Fermi contact contribution", &
1070 default_l_val=.true., lone_keyword_l_val=.true.)
1075 description=
"Compute the spin-dipolar contribution", &
1077 default_l_val=.true., lone_keyword_l_val=.true.)
1082 description=
"Compute the paramagnetic spin-orbit contribution", &
1084 default_l_val=.true., lone_keyword_l_val=.true.)
1089 description=
"Compute the diamagnetic spin-orbit contribution (NOT YET IMPLEMENTED)", &
1091 default_l_val=.true., lone_keyword_l_val=.true.)
1095 NULLIFY (subsection)
1097 description=
"print results of the indirect spin-spin calculation", &
1101 description=
"Controls the printing of the indirect spin-spin matrix", &
1105 description=
"list of atoms for which the indirect spin-spin is printed into a file ", &
1106 usage=
"ATOMS_LIST 1 2", n_var=-1, &
1117 NULLIFY (subsection)
1122 END SUBROUTINE create_spin_spin_section
1132 SUBROUTINE create_epr_section(section)
1136 TYPE(
section_type),
POINTER :: print_key, subsection, subsubsection
1138 NULLIFY (keyword, print_key, subsection, subsubsection)
1140 cpassert(.NOT.
ASSOCIATED(section))
1142 description=
"The g tensor is calculated by DFPT ", &
1143 n_keywords=5, n_subsections=1, repeats=.false., &
1146 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1147 description=
"controls the activation of the epr calculation", &
1149 default_l_val=.false., &
1150 lone_keyword_l_val=.true.)
1155 description=
"Restart the EPR calculation from a previous run (NOT WORKING)", &
1156 usage=
"RESTART_EPR", default_l_val=.false., &
1157 lone_keyword_l_val=.true.)
1161 NULLIFY (subsection)
1163 description=
"print results of epr calculation", &
1167 description=
"Controls the printing of the components of nabla v_ks ", &
1170 description=
"The stride (X,Y,Z) used to write the cube file "// &
1171 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1172 " 1 number valid for all components.", &
1173 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1177 description=
"append the cube files when they already exist", &
1178 default_l_val=.false., lone_keyword_l_val=.true.)
1186 description=
"Controls the printing of the g tensor", &
1192 CALL keyword_create(keyword, __location__, name=
"GAPW_MAX_ALPHA", &
1193 description=
"Maximum alpha of GTH potentials allowed on the soft grids ", &
1194 usage=
"GAPW_MAX_ALPHA real", default_r_val=5.0_dp)
1198 CALL keyword_create(keyword, __location__, name=
"SOO_RHO_HARD", &
1199 description=
"Whether or not to include the atomic parts of the density "// &
1200 "in the SOO part of the g tensor", usage=
"SOO_RHO_HARD", &
1201 default_l_val=.false., lone_keyword_l_val=.true.)
1209 description=
"Controls the printing of the response functions ", &
1212 description=
"The stride (X,Y,Z) used to write the cube file "// &
1213 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1214 " 1 number valid for all components.", &
1215 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1219 CALL keyword_create(keyword, __location__, name=
"CUBES_LU_BOUNDS", &
1220 variants=[
"CUBES_LU"], &
1221 description=
"The lower and upper index of the states to be printed as cube", &
1222 usage=
"CUBES_LU_BOUNDS integer integer", &
1223 n_var=2, default_i_vals=[0, -2], type_of_var=
integer_t)
1228 description=
"Indexes of the states to be printed as cube files "// &
1229 "This keyword can be repeated several times "// &
1230 "(useful if you have to specify many indexes).", &
1231 usage=
"CUBES_LIST 1 2", &
1232 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1236 description=
"append the cube files when they already exist", &
1237 default_l_val=.false., lone_keyword_l_val=.true.)
1247 NULLIFY (subsection)
1252 END SUBROUTINE create_epr_section
1261 SUBROUTINE create_polarizability_section(section)
1268 NULLIFY (keyword, print_key, subsection)
1270 cpassert(.NOT.
ASSOCIATED(section))
1272 description=
"Compute polarizabilities.", &
1273 n_keywords=5, n_subsections=1, repeats=.false., &
1276 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1277 description=
"controls the activation of the polarizability calculation", &
1279 default_l_val=.false., &
1280 lone_keyword_l_val=.true.)
1285 description=
"Compute the electric-dipole--electric-dipole polarizability", &
1286 usage=
"DO_RAMAN F", &
1288 default_l_val=.true., lone_keyword_l_val=.true.)
1292 CALL keyword_create(keyword, __location__, name=
"PERIODIC_DIPOLE_OPERATOR", &
1293 description=
"Type of dipole operator: Berry phase(T) or Local(F)", &
1294 usage=
"PERIODIC_DIPOLE_OPERATOR T", &
1295 default_l_val=.true., lone_keyword_l_val=.true.)
1299 NULLIFY (subsection)
1301 description=
"print results of the polarizability calculation", &
1305 description=
"Controls the printing of the polarizabilities", &
1313 NULLIFY (subsection)
1318 END SUBROUTINE create_polarizability_section
1325 SUBROUTINE create_et_coupling_section(section)
1332 cpassert(.NOT.
ASSOCIATED(section))
1334 description=
"specifies the two constraints/restraints for extracting ET coupling elements", &
1337 NULLIFY (subsection)
1342 NULLIFY (subsection)
1347 NULLIFY (subsection)
1348 CALL create_projection(subsection,
"PROJECTION")
1352 CALL keyword_create(keyword, __location__, name=
"TYPE_OF_CONSTRAINT", &
1353 description=
"Specifies the type of constraint", &
1354 usage=
"TYPE_OF_CONSTRAINT DDAPC", &
1355 enum_c_vals=
s2a(
"NONE",
"DDAPC"), &
1357 enum_desc=
s2a(
"NONE",
"DDAPC Constraint"), &
1364 description=
"Controls the printing basic info about the method", &
1369 END SUBROUTINE create_et_coupling_section
1378 SUBROUTINE create_projection(section, section_name)
1382 CHARACTER(len=*),
INTENT(in) :: section_name
1385 TYPE(
section_type),
POINTER :: print_key, section_block, section_print
1390 cpassert(.NOT.
ASSOCIATED(section))
1395 NULLIFY (section_block)
1396 NULLIFY (section_print)
1399 CALL section_create(section, __location__, name=trim(adjustl(section_name)), &
1400 description=
"Projection-operator approach fo ET coupling calculation", &
1401 n_keywords=0, n_subsections=2, repeats=.false.)
1405 description=
"Controls printing of data and informations to log file", &
1412 description=
"Part of the system (donor, acceptor, bridge,...)", &
1413 n_keywords=2, n_subsections=1, repeats=.true.)
1418 description=
"Array of atom IDs in the system part", &
1419 usage=
"ATOMS {integer} {integer} .. {integer}", &
1420 n_var=-1, type_of_var=
integer_t, repeats=.false.)
1426 description=
"Number of electrons expected in the system part", &
1427 usage=
"NELECTRON {integer}", default_i_val=0)
1433 description=
"Possible printing options in ET system part", &
1434 n_keywords=0, n_subsections=0, repeats=.false.)
1438 CALL keyword_create(keyword, __location__, name=
'MO_COEFF_ATOM', &
1439 description=
"Print out MO coeffiecients on given atom", &
1440 usage=
"MO_COEFF_ATOM {integer} {integer} .. {integer}", &
1441 type_of_var=
integer_t, n_var=-1, repeats=.true.)
1446 CALL keyword_create(keyword, __location__, name=
'MO_COEFF_ATOM_STATE', &
1447 description=
"Print out MO coeffiecients of specific state", &
1448 usage=
"MO_COEFF_ATOM_STATE {integer} {integer} .. {integer}", &
1449 type_of_var=
integer_t, n_var=-1, repeats=.true.)
1455 description=
"Controls saving of MO cube files", &
1460 description=
"The stride (X,Y,Z) used to write the cube file", &
1461 usage=
"STRIDE {integer} {integer} {integer}", n_var=-1, &
1462 default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1468 description=
"Indices of molecular orbitals to save", &
1469 usage=
"MO_LIST {integer} {integer} .. {integer}", &
1470 type_of_var=
integer_t, n_var=-1, repeats=.true.)
1476 description=
"Number of unoccupied molecular orbitals to save", &
1477 usage=
"NLUMO {integer}", default_i_val=1)
1483 description=
"Number of occupied molecular orbitals to save", &
1484 usage=
"NHOMO {integer}", default_i_val=1)
1499 description=
"Possible printing options in ET", &
1500 n_keywords=0, n_subsections=0, repeats=.false.)
1505 description=
"Controls printing couplings onto file", &
1509 description=
"append the files when they already exist", &
1510 default_l_val=.false., lone_keyword_l_val=.true.)
1519 END SUBROUTINE create_projection
1528 SUBROUTINE create_tddfpt2_section(section)
1534 cpassert(.NOT.
ASSOCIATED(section))
1536 description=
"Controls time-dependent density functional perturbation theory "// &
1537 "(TDDFPT) calculations for electronic excitations and related properties.", &
1538 n_keywords=14, n_subsections=4, repeats=.false., &
1541 NULLIFY (keyword, print_key, subsection)
1544 name=
"_SECTION_PARAMETERS_", &
1545 description=
"Activates the TDDFPT procedure.", &
1546 default_l_val=.false., &
1547 lone_keyword_l_val=.true.)
1553 description=
"Number of excited states to converge.", &
1560 description=
"Maximal number of iterations to be performed.", &
1567 description=
"Maximal number of Krylov space vectors. "// &
1568 "Davidson iterations will be restarted upon reaching this limit.", &
1575 description=
"Number of unoccupied orbitals to consider. "// &
1576 "Default is to use all unoccupied orbitals (-1).", &
1583 description=
"Number of MPI processes to be used per excited state. "// &
1584 "Default is to use all MPI processes (0).", &
1592 description=
"Options to compute the kernel", &
1593 usage=
"KERNEL FULL", &
1594 enum_c_vals=
s2a(
"FULL",
"sTDA",
"NONE"), &
1602 description=
"Selects the type of spin-flip TDDFPT kernel", &
1603 usage=
"SPINFLIP NONCOLLINEAR", &
1604 enum_c_vals=
s2a(
"NONE",
"COLLINEAR",
"NONCOLLINEAR"), &
1606 enum_desc=
s2a(
"Only molecular orbital energy differences are considered", &
1607 "MO energy diferences and Fock exchange contributions are "// &
1609 "MO energy differences, Fock exchange and "// &
1610 "Noncollinear local exchange-correlation "// &
1611 "kernel are considered"), &
1617 description=
"Orbital energy correction potential.", &
1618 enum_c_vals=
s2a(
"NONE",
"LB94",
"GLLB",
"SAOP",
"SHIFT"), &
1620 enum_desc=
s2a(
"No orbital correction scheme is used", &
1621 "van Leeuwen and Baerends. PRA, 49:2421, 1994", &
1622 "Gritsenko, van Leeuwen, van Lenthe, Baerends. PRA, 51:1944, 1995", &
1623 "Gritsenko, Schipper, Baerends. Chem. Phys. Lett., 302:199, 1999", &
1624 "Constant shift of virtual and/or open-shell orbitals"), &
1631 variants=
s2a(
"VIRTUAL_SHIFT"), &
1632 description=
"Constant shift of virtual state eigenvalues.", &
1633 usage=
"EV_SHIFT 0.500", &
1634 n_var=1, type_of_var=
real_t, &
1636 default_r_val=0.0_dp)
1641 variants=
s2a(
"OPEN_SHELL_SHIFT"), &
1642 description=
"Constant shift of open shell eigenvalues.", &
1643 usage=
"EOS_SHIFT 0.200", &
1644 n_var=1, type_of_var=
real_t, &
1646 default_r_val=0.0_dp)
1652 description=
"Target accuracy for excited state energies.", &
1653 n_var=1, type_of_var=
real_t, unit_str=
"hartree", &
1654 default_r_val=1.0e-5_dp)
1658 CALL keyword_create(keyword, __location__, name=
"MIN_AMPLITUDE", &
1659 description=
"The smallest excitation amplitude to print.", &
1660 n_var=1, type_of_var=
real_t, &
1661 default_r_val=5.0e-2_dp)
1665 CALL keyword_create(keyword, __location__, name=
"ORTHOGONAL_EPS", &
1666 description=
"The largest possible overlap between the ground state and "// &
1667 "orthogonalised excited state wave-functions. Davidson iterations "// &
1668 "will be restarted when the overlap goes beyond this threshold in "// &
1669 "order to prevent numerical instability.", &
1670 n_var=1, type_of_var=
real_t, &
1671 default_r_val=1.0e-4_dp)
1677 description=
"Restart the TDDFPT calculation if a restart file exists", &
1679 default_l_val=.false., lone_keyword_l_val=.true.)
1683 CALL keyword_create(keyword, __location__, name=
"RKS_TRIPLETS", &
1684 description=
"Compute triplet excited states using spin-unpolarised molecular orbitals.", &
1686 default_l_val=.false.)
1690 CALL keyword_create(keyword, __location__, name=
"ADMM_KERNEL_XC_CORRECTION", &
1691 description=
"Use/Ignore ADMM correction xc functional for TD kernel. "// &
1692 "XC correction functional is defined in ground state XC section.", &
1694 default_l_val=.true., lone_keyword_l_val=.true.)
1698 CALL keyword_create(keyword, __location__, name=
"ADMM_KERNEL_CORRECTION_SYMMETRIC", &
1699 description=
"ADMM correction functional in kernel is applied symmetrically. "// &
1700 "Original implementation is using a non-symmetric formula.", &
1702 default_l_val=.true., lone_keyword_l_val=.true.)
1707 description=
"Local resolution of identity for Coulomb contribution.", &
1709 default_l_val=.false.)
1714 description=
"Specify size of automatically generated auxiliary basis sets: "// &
1715 "Options={small,medium,large,huge}", &
1716 usage=
"AUTO_BASIS {basis_type} {basis_size}", &
1717 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=[
"X",
"X"])
1722 description=
"Implying smeared occupation. ", &
1724 default_l_val=.false., lone_keyword_l_val=.true.)
1728 CALL keyword_create(keyword, __location__, name=
"EXCITON_DESCRIPTORS", &
1729 description=
"Compute exciton descriptors. "// &
1730 "Details given in Manual section about Bethe Salpeter equation.", &
1732 default_l_val=.false.)
1736 CALL keyword_create(keyword, __location__, name=
"DIRECTIONAL_EXCITON_DESCRIPTORS", &
1737 description=
"Print cartesian components of exciton descriptors.", &
1739 default_l_val=.false.)
1744 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
1745 variants=[
"RESTART_FILE_NAME"], &
1746 description=
"Name of the wave function restart file, may include a path."// &
1747 " If no file is specified, the default is to open the file as generated by"// &
1748 " the wave function restart print key.", &
1749 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
1755 CALL section_create(subsection, __location__, name=
"DIPOLE_MOMENTS", &
1756 description=
"Parameters to compute oscillator strengths in the dipole approximation.", &
1757 n_keywords=3, n_subsections=0, repeats=.false.)
1760 description=
"Form of dipole transition integrals.", &
1761 enum_c_vals=
s2a(
"BERRY",
"LENGTH",
"VELOCITY"), &
1762 enum_desc=
s2a(
"Based on Berry phase formula (valid for fully periodic molecular systems only)", &
1763 "Length form ⟨ i | r | j ⟩ (valid for non-periodic molecular systems only)", &
1764 "Velocity form ⟨ i | d/dr | j ⟩"), &
1771 description=
"Reference point to calculate electric "// &
1772 "dipole moments using the dipole integrals in the length form.", &
1773 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1774 enum_desc=
s2a(
"Use Center of Mass", &
1775 "Use Center of Atomic Charges", &
1776 "Use User-defined Point", &
1777 "Use Origin of Coordinate System"), &
1786 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
1787 description=
"User-defined reference point.", &
1788 usage=
"REFERENCE_POINT x y z", &
1789 repeats=.false., n_var=3, type_of_var=
real_t, unit_str=
'bohr')
1799 description=
"Is jet to be implemented", &
1800 n_keywords=2, n_subsections=0, repeats=.false.)
1803 variants=
s2a(
"EPS_FILTER_MATRIX"), &
1804 description=
"The threshold used for sparse matrix operations", &
1805 usage=
"EPS_FILTER {real}", &
1807 default_r_val=1.0e-10_dp)
1812 variants=[
"ATOMIC_GRID"], &
1813 description=
"Specification of the atomic angular and radial grids for "// &
1814 "a atomic kind. This keyword must be repeated for all kinds! "// &
1815 "Usage: GRID < LEBEDEV_GRID > < RADIAL_GRID >", &
1816 usage=
"GRID {string} {integer} {integer}", &
1817 n_var=3, type_of_var=
char_t, repeats=.true.)
1835 CALL create_stda_section(subsection)
1840 CALL create_res_section(subsection)
1845 description=
"Choosing BSE kernel.", &
1846 usage=
"DO_BSE", default_l_val=.false., lone_keyword_l_val=.true.)
1850 CALL keyword_create(keyword, __location__, name=
"DO_BSE_W_ONLY", &
1851 description=
"Debug option for BSE kernel.", &
1852 usage=
"DO_BSE_W_ONLY", default_l_val=.false., lone_keyword_l_val=.true.)
1856 CALL keyword_create(keyword, __location__, name=
"DO_BSE_GW_ONLY", &
1857 description=
"Debug option for BSE kernel.", &
1858 usage=
"DO_BSE_GW_ONLY", default_l_val=.false., lone_keyword_l_val=.true.)
1868 CALL create_linres_section(subsection, create_subsections=.false., default_set_tdlr=.true.)
1874 description=
"Printing of information during the TDDFT run.", repeats=.false.)
1877 description=
"Controls the printing of the banner for TDDFPT program", &
1883 description=
"Controls the printing of initial guess vectors.", &
1889 description=
"Controls the printing of basic iteration information "// &
1890 "during the TDDFT run.", &
1896 description=
"Controls the printing of detailed energy information "// &
1897 "during the TDDFT run.", &
1903 description=
"Controls the printing of a file with all basis sets used.", &
1909 description=
"Controls the dumping of the MO restart file during TDDFPT. "// &
1910 "By default keeps a short history of three restarts.", &
1912 each_iter_names=
s2a(
"TDDFT_SCF"), each_iter_values=[10], &
1914 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1915 description=
"Specifies the maximum number of backup copies.", &
1916 usage=
"BACKUP_COPIES {int}", &
1924 description=
"Perform a natural transition orbital analysis.", &
1927 description=
"Threshold for sum of NTO eigenvalues considered", &
1928 usage=
"Threshold 0.95", &
1931 default_r_val=0.975_dp)
1934 CALL keyword_create(keyword, __location__, name=
"INTENSITY_THRESHOLD", &
1935 description=
"Threshold for oscillator strength to screen states.", &
1936 usage=
"Intensity_threshold 0.01", &
1939 default_r_val=0.0_dp)
1943 description=
"Specifies a list of states for the NTO calculations.", &
1944 usage=
"STATE_LIST {integer} {integer} .. {integer}", &
1949 description=
"Print NTOs on Cube Files", &
1950 usage=
"CUBE_FILES {logical}", repeats=.false., n_var=1, &
1951 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1955 description=
"The stride (X,Y,Z) used to write the cube file "// &
1956 "(larger values result in smaller cube files). Provide 3 numbers (for X,Y,Z) or"// &
1957 " 1 number valid for all components.", &
1958 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1962 description=
"append the cube files when they already exist", &
1963 default_l_val=.false., lone_keyword_l_val=.true.)
1970 description=
"Write the NTO in Molden file format, for visualisation.", &
1973 description=
"Unit for coordinates and cell in the MOLDEN file.", &
1974 usage=
"UNIT ANGSTROM", &
1975 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
1976 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
1977 enum_i_vals=[1, 2], &
1982 description=
"Controls whether the [Cell] block is written to the MOLDEN file.", &
1983 usage=
"WRITE_CELL TRUE", &
1984 default_l_val=.false., lone_keyword_l_val=.true.)
1988 description=
"Controls whether the [Nval] block is written to the MOLDEN file.", &
1989 usage=
"WRITE_NVAL TRUE", &
1990 default_l_val=.false., lone_keyword_l_val=.true.)
1994 description=
"Specifies the number of significant digits retained. 3 is OK for visualization.", &
1995 usage=
"NDIGITS {int}", &
2000 description=
"Representation of Gaussian-type orbitals", &
2002 enum_c_vals=
s2a(
"CARTESIAN",
"SPHERICAL"), &
2004 "Cartesian Gaussian orbitals. Use with caution", &
2005 "Spherical Gaussian orbitals. Incompatible with VMD"), &
2013 description=
"Controls the printout required for NAMD with NEWTONX.", &
2015 CALL keyword_create(keyword, __location__, name=
"PRINT_VIRTUALS", &
2016 description=
"Print occupied AND virtual molecular orbital coefficients", &
2017 default_l_val=.false., lone_keyword_l_val=.true.)
2020 CALL keyword_create(keyword, __location__, name=
"PRINT_PHASES", &
2021 description=
"Print phases of occupied and virtuals MOs.", &
2022 default_l_val=.false., lone_keyword_l_val=.true.)
2025 CALL keyword_create(keyword, __location__, name=
"SCALE_WITH_PHASES", &
2026 description=
"Scale ES eigenvectors with phases of occupied and virtuals MOs.", &
2027 default_l_val=.false., lone_keyword_l_val=.true.)
2035 description=
"Controls the printout of the tddfpt2_soc modul", &
2038 description=
"Will detrement if output in eVolt will be printef.", &
2039 default_l_val=.true., lone_keyword_l_val=.true.)
2043 description=
"Will detrement if output in wavenumbers will be printed.", &
2044 default_l_val=.false., lone_keyword_l_val=.true.)
2048 description=
"Will add the SOC-Splitting as additional output", &
2049 default_l_val=.false., lone_keyword_l_val=.true.)
2053 description=
"Will add the SOC-Matrix as additional output in a different file", &
2054 default_l_val=.false., lone_keyword_l_val=.true.)
2061 description=
"Controls the calculation and printing of excited state forces. "// &
2062 "This needs a RUN_TYPE that includes force evaluation, e.g. ENERGY_FORCE", &
2065 description=
"Specifies a list of states for the force calculations.", &
2066 usage=
"LIST {integer} {integer} .. {integer}", repeats=.true., &
2071 description=
"Threshold for oszillator strength to screen states.", &
2072 usage=
"Threshold 0.01", &
2075 default_r_val=0.0_dp)
2084 END SUBROUTINE create_tddfpt2_section
2090 SUBROUTINE create_stda_section(section)
2095 cpassert(.NOT.
ASSOCIATED(section))
2097 description=
"parameters needed and setup for sTDA calculations", &
2098 n_keywords=3, n_subsections=0, repeats=.false.)
2102 variants=[
"HFX_FRACTION"], &
2103 description=
"The fraction of TB Hartree-Fock exchange to use in the Kernel. "// &
2104 "0.0 implies no HFX part is used in the kernel. ", &
2105 usage=
"FRACTION 0.0", default_r_val=0.0_dp)
2112 description=
"Explicitly including or switching off sTDA exchange", &
2113 usage=
"DO_EXCHANGE", default_l_val=.true., lone_keyword_l_val=.true.)
2118 description=
"Use Ewald type method for Coulomb interaction", &
2119 usage=
"DO_EWALD", default_l_val=.false., lone_keyword_l_val=.true.)
2123 CALL keyword_create(keyword, __location__, name=
"EPS_TD_FILTER", &
2124 description=
"Threshold for filtering the transition density matrix", &
2125 usage=
"EPS_TD_FILTER epsf", default_r_val=1.e-10_dp)
2129 CALL keyword_create(keyword, __location__, name=
"MATAGA_NISHIMOTO_CEXP", &
2130 description=
"Exponent used in Mataga-Nishimoto formula for Coulomb (alpha). "// &
2131 "Default value is method dependent!", &
2132 usage=
"MATAGA_NISHIMOTO_CEXP cexp", default_r_val=-99.0_dp)
2136 CALL keyword_create(keyword, __location__, name=
"MATAGA_NISHIMOTO_XEXP", &
2137 description=
"Exponent used in Mataga-Nishimoto formula for Exchange (beta). "// &
2138 "Default value is method dependent!", &
2139 usage=
"MATAGA_NISHIMOTO_XEXP xexp", default_r_val=-99.0_dp)
2143 CALL keyword_create(keyword, __location__, name=
"COULOMB_SR_CUT", &
2144 description=
"Maximum range of short range part of Coulomb interaction.", &
2145 usage=
"COULOMB_SR_CUT rcut", default_r_val=20.0_dp)
2149 CALL keyword_create(keyword, __location__, name=
"COULOMB_SR_EPS", &
2150 description=
"Threshold for short range part of Coulomb interaction.", &
2151 usage=
"COULOMB_SR_EPS sreps", default_r_val=1.e-03_dp)
2155 END SUBROUTINE create_stda_section
2161 SUBROUTINE create_res_section(section)
2166 cpassert(.NOT.
ASSOCIATED(section))
2167 CALL section_create(section, __location__, name=
"REDUCED_EXCITATION_SPACE", &
2168 description=
"Sets up a restricted (reduced) excitation space for TDDFT", &
2169 n_keywords=3, n_subsections=0, repeats=.false.)
2173 name=
"_SECTION_PARAMETERS_", &
2174 description=
"Controls the activation of RES calculation.", &
2175 default_l_val=.false., &
2176 lone_keyword_l_val=.true.)
2180 CALL keyword_create(keyword, __location__, name=
"ENERGY_WINDOW", &
2181 description=
"Upper and lower cutoffs [eV] for orbitals to be included for excitations. ", &
2182 usage=
"ENERGY_WINDOW -5.0 0.0", default_r_vals=[-1.0e10_dp, 1.0e10_dp], &
2183 type_of_var=
real_t, unit_str=
"eV")
2187 CALL keyword_create(keyword, __location__, name=
"UPPER_ENERGY_CUTOFF", &
2188 description=
"Upper energy cutoff [eV] for orbitals to be included in excitations.", &
2189 usage=
"UPPER_ENERGY_CUTOFF -5.0", default_r_val=1.0e10_dp, &
2190 type_of_var=
real_t, unit_str=
"eV")
2194 CALL keyword_create(keyword, __location__, name=
"LOWER_ENERGY_CUTOFF", &
2195 description=
"Lower energy cutoff [eV] for orbitals to be included in excitations.", &
2196 usage=
"LOWER_ENERGY_CUTOFF -5.0", default_r_val=-1.0e10_dp, &
2197 type_of_var=
real_t, unit_str=
"eV")
2201 CALL keyword_create(keyword, __location__, name=
"MOLECULE_LIST", &
2202 description=
"Indices of molecules to be excited. "// &
2203 "This implies the calculation of molecular states through orbital location "// &
2204 "and subspace diagonalization.", &
2205 usage=
"MOLECULE_LIST {integer} {integer} .. {integer} ", &
2206 n_var=-1, type_of_var=
integer_t, repeats=.false.)
2210 END SUBROUTINE create_res_section
2218 SUBROUTINE create_bandstructure_section(section)
2224 cpassert(.NOT.
ASSOCIATED(section))
2225 CALL section_create(section, __location__, name=
"BANDSTRUCTURE", &
2226 description=
"Parameters needed to set up a calculation for "// &
2227 "electronic level energies of molecules and the electronic band "// &
2228 "structure of materials from post-SCF schemes (GW, perturbative "// &
2229 "spin-orbit coupling). Also, the density of states (DOS), "// &
2230 "projected density of states (PDOS), local density of states (LDOS), "// &
2231 "local valence band maximum (LVBM), local conduction band minimum "// &
2232 "(LCBM) and local band gap can be calculated. Please note that "// &
2233 "all methods in this section start from a Gamma-only DFT SCF. "// &
2234 "You need to make sure that the cell chosen in the DFT SCF is "// &
2235 "converged in the cell size. Band structures are computed "// &
2236 "for the primitive cell (i.e. the smallest possible unit cell of "// &
2237 "the input structure which is detected automatically). Moreover, "// &
2238 "spin-orbit coupling (SOC) on eigenvalues and band structures is "// &
2239 "available using Hartwigsen-Goedecker-Hutter "// &
2240 "pseudopotentials.", &
2241 n_keywords=1, n_subsections=1, repeats=.false.)
2243 NULLIFY (keyword, subsection)
2245 name=
"_SECTION_PARAMETERS_", &
2246 description=
"Controls the activation of the band structure calculation.", &
2247 default_l_val=.false., &
2248 lone_keyword_l_val=.true.)
2257 CALL create_gw_section(subsection)
2261 CALL create_soc_section(subsection)
2265 CALL create_dos_section(subsection)
2269 END SUBROUTINE create_bandstructure_section
2277 SUBROUTINE create_gw_section(section)
2283 cpassert(.NOT.
ASSOCIATED(section))
2285 description=
"Parameters needed to set up a GW calculation for "// &
2286 "electronic level energies $\varepsilon_{n\mathbf{k}}^{G_0W_0}$ "// &
2287 "of molecules and the band structure of materials: "// &
2288 "$\varepsilon_{n\mathbf{k}}^{G_0W_0}= "// &
2289 "\varepsilon_{n\mathbf{k}}^\text{DFT}+\Sigma_{n\mathbf{k}} "// &
2290 "-v^\text{xc}_{n\mathbf{k}}$. "// &
2291 "For the GW algorithm for molecules, see "// &
2292 "<https://doi.org/10.1021/acs.jctc.0c01282>. "// &
2293 "For 2D materials, see <https://doi.org/10.1021/acs.jctc.3c01230>.", &
2294 n_keywords=1, n_subsections=1, repeats=.false.)
2298 name=
"_SECTION_PARAMETERS_", &
2299 description=
"Controls the activation of the GW calculation.", &
2300 default_l_val=.false., &
2301 lone_keyword_l_val=.true.)
2305 CALL keyword_create(keyword, __location__, name=
"NUM_TIME_FREQ_POINTS", &
2306 description=
"Number of discrete points for the imaginary-time "// &
2307 "grid and the imaginary-frequency grid. The more points, the more "// &
2308 "precise is the calculation. Typically, 10 points are good "// &
2309 "for 0.1 eV precision of band structures and molecular energy "// &
2310 "levels, 20 points for 0.03 eV precision, "// &
2311 "and 30 points for 0.01 eV precision, see Table I in "// &
2312 "<https://doi.org/10.1021/acs.jctc.0c01282>. GW computation time "// &
2313 "increases linearly with `NUM_TIME_FREQ_POINTS`.", &
2314 usage=
"NUM_TIME_FREQ_POINTS 30", &
2320 description=
"Determines a threshold for the DBCSR based sparse "// &
2321 "multiplications. Normally, `EPS_FILTER` determines accuracy "// &
2322 "and timing of low-scaling GW calculations. (Lower filter means "// &
2323 "higher numerical precision, but higher computational cost.)", &
2324 usage=
"EPS_FILTER 1.0E-6", &
2325 default_r_val=1.0e-8_dp)
2329 CALL keyword_create(keyword, __location__, name=
"REGULARIZATION_MINIMAX", &
2330 description=
"Parameter to regularize the Fourier transformation with minimax grids. "// &
2331 "In case the parameter 0.0 is chosen, no regularization is performed.", &
2332 usage=
"REGULARIZATION_MINIMAX 1.0E-4", &
2333 default_r_val=-1.0_dp)
2337 CALL keyword_create(keyword, __location__, name=
"REGULARIZATION_RI", &
2338 description=
"Parameter for RI regularization, setting a negative "// &
2339 "value triggers the default value. Affects RI basis set convergence "// &
2340 "but in any case large RI basis will give RI basis set convergence.", &
2341 usage=
"REGULARIZATION_RI 1.0E-4", &
2342 default_r_val=-1.0_dp)
2346 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS_RI", &
2347 description=
"The cutoff radius (in Angstrom) for the truncated "// &
2348 "Coulomb operator. The larger the cutoff radius, the faster "// &
2349 "converges the resolution of the identity (RI) with respect to the "// &
2350 "RI basis set size. Larger cutoff radius means higher computational "// &
2352 usage=
"CUTOFF_RADIUS_RI 3.0", &
2354 type_of_var=
real_t, unit_str=
"angstrom")
2358 CALL keyword_create(keyword, __location__, name=
"MEMORY_PER_PROC", &
2359 description=
"Specify the available memory per MPI process. Set "// &
2360 "`MEMORY_PER_PROC` as accurately as possible for good performance. If "// &
2361 "`MEMORY_PER_PROC` is set lower as the actually available "// &
2362 "memory per MPI process, the performance will be "// &
2363 "bad; if `MEMORY_PER_PROC` is set higher as the actually "// &
2364 "available memory per MPI process, the program might run out of "// &
2365 "memory. You can calculate `MEMORY_PER_PROC` as follows: "// &
2366 "Get the memory per node on your machine, mem_per_node "// &
2367 "(for example, from a supercomputer website, typically between "// &
2368 "100 GB and 2 TB), get the number of "// &
2369 "MPI processes per node, n_MPI_proc_per_node"// &
2370 " (for example from your run-script; if you "// &
2371 "use slurm, the number behind '--ntasks-per-node' is the number "// &
2372 "of MPI processes per node). Then calculate "// &
2373 "`MEMORY_PER_PROC` = mem_per_node / n_MPI_proc_per_node "// &
2374 "(typically between 2 GB and 50 GB). Unit of keyword: Gigabyte (GB).", &
2375 usage=
"MEMORY_PER_PROC 16", &
2376 default_r_val=2.0_dp)
2380 CALL keyword_create(keyword, __location__, name=
"APPROX_KP_EXTRAPOL", &
2381 description=
"If true, use only a 4x4 kpoint mesh for frequency "// &
2382 "points $\omega_j, j \ge 2$ (instead of a 4x4 and 6x6 k-point mesh). "// &
2383 "The k-point extrapolation of $W_{PQ}(i\omega_j,\mathbf{q})$ "// &
2384 "is done approximately from $W_{PQ}(i\omega_1,\mathbf{q})$.", &
2385 usage=
"APPROX_KP_EXTRAPOL", &
2386 default_l_val=.false., lone_keyword_l_val=.true.)
2390 CALL keyword_create(keyword, __location__, name=
"SIZE_LATTICE_SUM", &
2391 description=
"Parameter determines how many neighbor cells $\mathbf{R}$ "// &
2392 "are used for computing "// &
2393 "$V_{PQ}(\mathbf{k}) = "// &
2394 "\sum_{\mathbf{R}} e^{i\mathbf{k}\cdot\mathbf{R}}\,\langle P, "// &
2395 "\text{cell}{=}\mathbf{0}|1/r|Q,\text{cell}{=}\mathbf{R}\rangle$. "// &
2396 "Normally, parameter does not need to be touched.", &
2397 usage=
"SIZE_LATTICE_SUM 4", &
2403 keyword, __location__, name=
"KPOINTS_W", &
2404 description=
"Monkhorst-Pack k-point mesh of size N_x, N_y, N_z for calculating "// &
2405 "$W_{PQ}^\mathbf{R}=\int_\text{BZ}\frac{d\mathbf{k}}{\Omega_\text{BZ}}\, "// &
2406 "e^{-i\mathbf{k}\cdot\mathbf{R}}\,W_{PQ}(\mathbf{k})$. "// &
2407 αα
"For non-periodic directions , choose N_ = 1. "// &
2408 "Automatic choice of the k-point mesh for negative "// &
2409 "values, i.e. KPOINTS_W -1 -1 -1. "// &
2410 "K-point extrapolation of W is automatically switched on.", &
2411 usage=
"KPOINTS_W N_x N_y N_z", &
2412 n_var=3, type_of_var=
integer_t, default_i_vals=[-1, -1, -1])
2417 description=
"If true, use Hedin's shift in G0W0, evGW and evGW0. "// &
2418 "Details see in Li et al. JCTC 18, 7570 "// &
2419 "(2022), Figure 1. G0W0 with Hedin's shift should give "// &
2420 "similar GW eigenvalues as evGW0; at a lower "// &
2421 "computational cost.", &
2422 usage=
"HEDIN_SHIFT", &
2423 default_l_val=.false., &
2424 lone_keyword_l_val=.true.)
2428 CALL keyword_create(keyword, __location__, name=
"FREQ_MAX_FIT", &
2429 description=Σω
"For analytic continuation, a fit on (i) is performed. "// &
2430 Σω
"This fit is then evaluated at a real frequency, (), which is used "// &
2431 "in the quasiparticle equation "// &
2432 "$\varepsilon_{n\mathbf{k}}^{G_0W_0}= "// &
2433 "\varepsilon_{n\mathbf{k}}^\text{DFT}+\Sigma_{n\mathbf{k}} "// &
2434 "-v^\text{xc}_{n\mathbf{k}}$. The keyword FREQ_MAX_FIT "// &
2435 Σω
"determines fitting range for the self-energy (i) on "// &
2436 ωω
"imaginary axis: i*[0, _max] for empty orbitals/bands, i*[-_max,0] "// &
2437 ω
"for occ orbitals. A smaller _max might lead to better numerical "// &
2438 "stability (i.e., if you observe clearly wrong GW eigenvalues/bands "// &
2439 ω
"around HOMO/LUMO, decreasing _max might fix this issue). "// &
2440 ω
"A small benchmark of _max is contained in Fig. 5 of "// &
2441 "J. Wilhelm et al., JCTC 12, 3623-3635 (2016). "// &
2442 ω
"Note that we used _max = 1 Ha = 27.211 eV in the benchmark "// &
2443 "M. Azizi et al., PRB 109, 245101 (2024).", &
2445 usage=
"FREQ_MAX_FIT 20.0", &
2450 NULLIFY (subsection, print_key)
2452 description=
"Printing of GW restarts.", &
2453 n_keywords=2, n_subsections=1, repeats=.false.)
2455 description=
"Controls the printing of restart files "// &
2458 common_iter_levels=3)
2462 CALL keyword_create(keyword, __location__, name=
"PRINT_DBT_CONTRACT", &
2463 description=
"Prints information of contraction routines.", &
2464 usage=
"PRINT_DBT_CONTRACT", &
2465 default_l_val=.false., &
2466 lone_keyword_l_val=.true.)
2470 CALL keyword_create(keyword, __location__, name=
"PRINT_DBT_CONTRACT_VERBOSE", &
2471 description=
"Prints verbose information of contraction routines.", &
2472 usage=
"PRINT_DBT_CONTRACT_VERBOSE", &
2473 default_l_val=.false., &
2474 lone_keyword_l_val=.true.)
2481 END SUBROUTINE create_gw_section
2489 SUBROUTINE create_soc_section(section)
2494 cpassert(.NOT.
ASSOCIATED(section))
2496 description=
"Switch on or off spin-orbit coupling. Use SOC "// &
2497 "parameters from non-local pseudopotentials as given in "// &
2498 "Hartwigsen, Goedecker, Hutter, Eq.(18), (19), "// &
2499 "<https://doi.org/10.1103/PhysRevB.58.3641>, "// &
2500 "$V_{\mu\nu}^{\mathrm{SOC}, (\alpha)} = "// &
2501 "(\hbar/2) \langle \phi_\mu | \sum_l \Delta "// &
2502 "V_l^\mathrm{SO}(\mathbf{r},\mathbf{r}') "// &
2503 "L^{(\alpha)} | \phi_\nu \rangle, "// &
2504 "\alpha = x, y, z$.", &
2505 n_keywords=1, n_subsections=1, repeats=.false.)
2509 name=
"_SECTION_PARAMETERS_", &
2510 description=
"Controls the activation of the SOC calculation.", &
2511 default_l_val=.false., &
2512 lone_keyword_l_val=.true.)
2516 CALL keyword_create(keyword, __location__, name=
"ENERGY_WINDOW", &
2517 description=
"Apply SOC only for states with eigenvalues in the "// &
2518 "interval $[\varepsilon_\mathrm{VBM}-E_\mathrm{window}/2, "// &
2519 "\varepsilon_\mathrm{CBM}+E_\mathrm{window}/2]$. Might be necessary "// &
2520 "to use for large systems to prevent numerical instabilities.", &
2521 usage=
"ENERGY_WINDOW 5.0", &
2527 END SUBROUTINE create_soc_section
2535 SUBROUTINE create_dos_section(section)
2541 cpassert(.NOT.
ASSOCIATED(section))
2543 description=
"Parameters needed to calculate the density of states "// &
2544 "(DOS) and the projected density of states (PDOS).", &
2545 n_keywords=1, n_subsections=1, repeats=.false.)
2549 name=
"_SECTION_PARAMETERS_", &
2550 description=
"Controls the activation of the DOS calculation.", &
2551 default_l_val=.false., &
2552 lone_keyword_l_val=.true.)
2556 CALL keyword_create(keyword, __location__, name=
"ENERGY_WINDOW", &
2557 description=
"Print DOS and PDOS in the energy window "// &
2558 "$[\varepsilon_\mathrm{VBM}-E_\mathrm{window}/2, "// &
2559 "\varepsilon_\mathrm{CBM}+E_\mathrm{window}/2]$,"// &
2560 " where VBM is the valence "// &
2561 "band maximum (or highest occupied molecular orbital, HOMO, for "// &
2562 "molecules) and CBM the conduction band minimum (or lowest "// &
2563 "unoccupied molecular orbital, LUMO, for molecules).", &
2564 usage=
"ENERGY_WINDOW 5.0", &
2571 description=
"Resolution of the energy E when computing the $\rho(E)$.", &
2572 usage=
"ENERGY_STEP 0.01", &
2579 description=α
"Broadening in Gaussians used in the DOS; "// &
2580 "$\rho(E) = \sum_n \exp(((E-\varepsilon_n)/\alpha)^2)/("// &
2581 " \sqrt{2\pi} \alpha)$.", &
2582 usage=
"BROADENING 0.01", &
2589 keyword, __location__, name=
"KPOINTS", &
2590 description=
"Monkhorst-Pack k-point mesh of size N_x, N_y, N_z for calculating "// &
2591 "the density of states (DOS). In GW, the KPOINT_DOS mesh is thus used as k-point "// &
2592 αα
"mesh for the self-energy. For non-periodic directions , choose N_ = 1. "// &
2593 "Automatic choice of the k-point mesh for negative "// &
2594 α
"values, i.e. KPOINTS_DOS -1 -1 -1 (automatic choice: N_ = 1 in non-periodic "// &
2595 "direction, 8 k-points in periodic direction). If you like to compute a "// &
2596 "band structure along a k-path, you can specify the k-path in "// &
2598 usage=
"KPOINTS N_x N_y N_z", &
2599 n_var=3, type_of_var=
integer_t, default_i_vals=[-1, -1, -1])
2603 NULLIFY (subsection)
2604 CALL create_ldos_section(subsection)
2608 END SUBROUTINE create_dos_section
2614 SUBROUTINE create_ldos_section(section)
2619 cpassert(.NOT.
ASSOCIATED(section))
2621 description=
"Parameters needed to calculate the local density "// &
2622 "of states (LDOS). "// &
2623 "The LDOS is computed as $\rho(\mathbf{r},E) = "// &
2624 "\sum\limits_{n,\mathbf{k}}"// &
2625 " |\psi_{n\mathbf{k}}(r)|^2\, w_\mathbf{k}\, g(E-\varepsilon_{n\mathbf{k}})$ "// &
2626 "using the Gaussian weight function "// &
2627 "$g(x) = \exp(x^2/\alpha^2)/(\sqrt{2\pi}\alpha)$, $\alpha$ is the broadening "// &
2628 "from the &DOS section, and the k-point weight "// &
2629 "$w_\mathbf{k}$. The k-mesh is taken from the &DOS section.", &
2630 n_keywords=2, repeats=.false.)
2634 name=
"_SECTION_PARAMETERS_", &
2635 description=
"Activates the local VBM CBM gap calculation.", &
2636 default_l_val=.false., &
2637 lone_keyword_l_val=.true.)
2642 description=
"Defines whether the LDOS is integrated along a "// &
2643 "coordinate. As an example, for INTEGRATION Z, the LDOS "// &
2644 "$\rho(x,y,E) = \int dz\, \rho(x,y,z,E)$ is computed.", &
2645 usage=
"INTEGRATION Z", &
2646 enum_c_vals=
s2a(
"X",
"Y",
"Z",
"NONE"), &
2648 enum_desc=
s2a(
"Integrate over x coordinate (not yet implemented).", &
2649 "Integrate over y coordinate (not yet implemented).", &
2650 "Integrate over z coordinate.", &
2651 "No integration, print cube file as function "// &
2652 "of x,y,z (not yet implemented)."), &
2658 keyword, __location__, name=
"BIN_MESH", &
2659 description=
"Mesh of size n x m for binning the space coordinates x and y of "// &
2660 "the LDOS $\rho(x,y,E)$. If -1, no binning is performed and the "// &
2661 "fine x, y resolution of the electron density from SCF is used.", &
2662 usage=
"BIN_MESH n m", &
2663 n_var=2, type_of_var=
integer_t, default_i_vals=[10, 10])
2667 END SUBROUTINE create_ldos_section
2675 SUBROUTINE create_tipscan_section(section)
2680 cpassert(.NOT.
ASSOCIATED(section))
2682 description=
"Parameters needed to set up a Tip Scan. "// &
2683 "Needs external definition of tip induced field.", &
2684 n_keywords=1, n_subsections=1, repeats=.false.)
2689 name=
"_SECTION_PARAMETERS_", &
2690 description=
"Controls the activation of the Tip Scan procedure", &
2691 default_l_val=.false., &
2692 lone_keyword_l_val=.true.)
2696 CALL keyword_create(keyword, __location__, name=
"SCAN_DIRECTION", &
2697 description=
"Defines scan direction and scan type(line, plane).", &
2698 usage=
"SCAN_DIRECTION XY", &
2699 enum_c_vals=
s2a(
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ",
"XYZ"), &
2705 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
2706 description=
"The reference point to define the absolute position of the scan. ", &
2707 usage=
"REFERENCE_POINT 0.0 0.0 1.0", &
2708 n_var=3, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp], type_of_var=
real_t, &
2709 unit_str=
"angstrom")
2714 description=
"Number of points calculated for each scan direction.", &
2715 usage=
"SCAN_POINTS 20 20", &
2721 description=
"Step size for each scan direction.", &
2722 usage=
"SCAN_STEP 0.01 0.01", &
2723 n_var=-1, type_of_var=
real_t, unit_str=
"angstrom")
2727 CALL keyword_create(keyword, __location__, name=
"TIP_FILENAME", &
2728 description=
"Filename of tip potential defined in cube file format.", &
2729 usage=
"TIP_FILENAME <filename>", &
2734 END SUBROUTINE create_tipscan_section
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public putrino2000
integer, save, public weber2009
integer, save, public kondov2007
integer, save, public luber2014
integer, save, public iannuzzi2005
integer, save, public sebastiani2001
integer, save, public hernandez2025
integer, save, public putrino2002
integer, save, public vazdacruz2021
integer, save, public hanasaki2025
integer, save, public futera2017
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer, parameter, public debug_print_level
integer, parameter, public low_print_level
integer, parameter, public medium_print_level
integer, parameter, public high_print_level
integer, parameter, public add_last_numeric
integer, parameter, public silent_print_level
subroutine, public cp_print_key_section_create(print_key_section, location, name, description, print_level, each_iter_names, each_iter_values, add_last, filename, common_iter_levels, citations, unit_str)
creates a print_key section
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
Utilities for string manipulations.