73#include "./base/base_uses.f90"
78 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
79 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_properties_dft'
96 cpassert(.NOT.
ASSOCIATED(section))
98 description=
"This section is used to set up the PROPERTIES calculation.", &
99 n_keywords=0, n_subsections=6, repeats=.false.)
101 NULLIFY (subsection, keyword)
103 CALL create_linres_section(subsection, create_subsections=.true.)
107 CALL create_et_coupling_section(subsection)
120 description=
"This section is used to print the density derived atomic point charges. "// &
121 "The fit of the charges is controlled through the DENSITY_FITTING section", &
123 CALL keyword_create(keyword, __location__, name=
"TYPE_OF_DENSITY", &
124 description=
"Specifies the type of density used for the fitting", &
125 usage=
"TYPE_OF_DENSITY (FULL|SPIN)", &
126 enum_c_vals=
s2a(
"FULL",
"SPIN"), &
128 enum_desc=
s2a(
"Full density",
"Spin density"), &
135 CALL create_tddfpt2_section(subsection)
139 CALL create_rixs_section(subsection)
143 CALL create_kubo_transport_section(subsection)
147 CALL create_bandstructure_section(subsection)
151 CALL create_tipscan_section(subsection)
161 SUBROUTINE create_kubo_transport_section(section)
165 cpassert(.NOT.
ASSOCIATED(section))
169 CALL section_create(section, __location__, name=
"KUBO_TRANSPORT", &
170 description=
"Finite-volume Kubo-Greenwood transport coefficients from the "// &
171 "converged Quickstep Hamiltonian, overlap matrix, and atomic geometry. "// &
172 "For one- and two-dimensional cells, transport is projected onto the "// &
173 "periodic subspace and normalized by the periodic length or area.", &
174 n_keywords=8, n_subsections=0, repeats=.false., &
177 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
178 description=
"Controls the activation of the Kubo transport calculation.", &
179 default_l_val=.false., &
180 lone_keyword_l_val=.true.)
185 description=
"Transport algorithm. DIAGONALIZATION evaluates the finite-volume "// &
186 "Kubo-Greenwood expression from the explicit spectrum. TD and CHEBYSHEV are "// &
187 "reserved for future diagonalization-free implementations.", &
188 usage=
"METHOD DIAGONALIZATION", &
189 n_var=1, type_of_var=
char_t, default_c_val=
"DIAGONALIZATION")
194 description=
"Electronic temperature used in the Fermi operator.", &
195 usage=
"TEMPERATURE 1.0", &
197 n_var=1, type_of_var=
real_t, unit_str=
"K")
202 description=
"Dissipation/broadening parameter in the finite-temperature "// &
204 usage=
"DISSIPATION 300.0", &
206 n_var=1, type_of_var=
real_t, unit_str=
"K")
211 description=
"Absolute chemical-potential range. The default 0 0 uses the "// &
212 "full eigenvalue range of the finite-volume Hamiltonian.", &
213 usage=
"ENERGY_RANGE -0.5 0.5", &
214 default_r_vals=[0.0_dp, 0.0_dp], n_var=2, type_of_var=
real_t, &
220 description=
"Optional fixed neutral chemical potential. If omitted, the "// &
221 "neutral point is found from the eigenvalue spectrum and total electron count.", &
222 usage=
"NEUTRAL_MU 0.245467619658419", &
223 n_var=1, type_of_var=
real_t, unit_str=
"hartree")
228 description=
"Number of chemical-potential grid points.", &
230 default_i_val=200, n_var=1, type_of_var=
integer_t)
235 description=
"Number of grid points used to locate the neutral chemical potential.", &
236 usage=
"NEUTRAL_GRID 10000", &
237 default_i_val=10000, n_var=1, type_of_var=
integer_t)
241 END SUBROUTINE create_kubo_transport_section
248 SUBROUTINE create_rixs_section(section)
253 cpassert(.NOT.
ASSOCIATED(section))
255 NULLIFY (keyword, subsection, print_key)
258 description=
"Resonant Inelastic Xray Scattering using XAS_TDP and TDDFPT.", &
259 n_keywords=1, n_subsections=3, repeats=.false., &
263 name=
"_SECTION_PARAMETERS_", &
264 description=
"Controls the activation of the RIXS procedure", &
265 default_l_val=.false., &
266 lone_keyword_l_val=.true.)
271 description=
"Number of core excited states to be used in the RIXS "// &
272 "calculation. Restricting this number reduces computational cost. "// &
273 "-1 means all available core states will be used.", &
274 n_var=1, type_of_var=
integer_t, default_i_val=-1)
278 CALL keyword_create(keyword, __location__, name=
"VALENCE_STATES", &
279 description=
"Number of valence excited states to be used in the RIXS "// &
280 "calculation. Restricting this number reduces computational cost, but "// &
281 "removes spectral features corresponding to higher excitations. Should be "// &
282 "used with care. -1 means all available valence states will be used.", &
283 n_var=1, type_of_var=
integer_t, default_i_val=-1)
287 CALL create_tddfpt2_section(subsection)
295 CALL section_create(subsection, __location__,
"PRINT",
"Controls the printing of information "// &
296 "during RIXS calculations", repeats=.false.)
299 description=
"Controles the printing of the RIXS spectrum "// &
302 common_iter_levels=3)
309 END SUBROUTINE create_rixs_section
320 SUBROUTINE create_linres_section(section, create_subsections, default_set_tdlr)
322 LOGICAL,
INTENT(in) :: create_subsections
323 LOGICAL,
INTENT(IN),
OPTIONAL :: default_set_tdlr
325 INTEGER :: def_max_iter, def_precond
326 REAL(kind=
dp) :: def_egap, def_eps, def_eps_filter
330 CHARACTER(len=256) :: desc
332 NULLIFY (keyword, print_key)
334 IF (
PRESENT(default_set_tdlr))
THEN
337 def_eps_filter = 1.0e-15_dp
340 desc =
"Controls the parameters of the LINRES force calculations for excited states."
344 def_eps_filter = 0.0_dp
347 desc =
"The linear response is used to calculate one of the following properties: nmr, epr, raman, ..."
350 cpassert(.NOT.
ASSOCIATED(section))
352 description=desc, n_keywords=5, n_subsections=2, repeats=.false., &
356 description=
"target accuracy for the convergence of the conjugate gradient.", &
357 usage=
"EPS 1.e-6", default_r_val=def_eps)
362 description=
"Filter threshold for response density matrix.", &
363 usage=
"EPS_FILTER 1.e-8", default_r_val=def_eps_filter)
368 description=
"Maximum number of conjugate gradient iteration to be performed for one optimization.", &
369 usage=
"MAX_ITER 200", default_i_val=def_max_iter)
373 CALL keyword_create(keyword, __location__, name=
"RESTART_EVERY", &
374 description=
"Restart the conjugate gradient after the specified number of iterations.", &
375 usage=
"RESTART_EVERY 200", default_i_val=50)
380 keyword, __location__, name=
"PRECONDITIONER", &
381 description=
"Type of preconditioner to be used with all minimization schemes. "// &
382 "They differ in effectiveness, cost of construction, cost of application. "// &
383 "Properly preconditioned minimization can be orders of magnitude faster than doing nothing.", &
384 usage=
"PRECONDITIONER FULL_ALL", &
385 default_i_val=def_precond, &
386 enum_c_vals=
s2a(
"FULL_ALL",
"FULL_SINGLE_INVERSE",
"FULL_SINGLE",
"FULL_KINETIC",
"FULL_S_INVERSE", &
388 enum_desc=
s2a(
"Most effective state selective preconditioner based on diagonalization, "// &
389 "requires the ENERGY_GAP parameter to be an underestimate of the HOMO-LUMO gap. "// &
390 "This preconditioner is recommended for almost all systems, except very large systems where "// &
391 "make_preconditioner would dominate the total computational cost.", &
392 "Based on H-eS cholesky inversion, similar to FULL_SINGLE in preconditioning efficiency "// &
393 "but cheaper to construct, "// &
394 "might be somewhat less robust. Recommended for large systems.", &
395 "Based on H-eS diagonalisation, not as good as FULL_ALL, but somewhat cheaper to apply. ", &
396 "Cholesky inversion of S and T, fast construction, robust, and relatively good, "// &
397 "use for very large systems.", &
398 "Cholesky inversion of S, not as good as FULL_KINETIC, yet equally expensive.", &
399 "skip preconditioning"), &
406 description=
"Energy gap estimate [a.u.] for preconditioning", &
407 usage=
"ENERGY_GAP 0.1", &
408 default_r_val=def_egap)
413 description=
"Perform a linear response calculation every N-th step for MD run", &
414 usage=
"EVERY_N_STEP 50", default_i_val=1)
419 description=
"Restart the response calculation if the restart file exists", &
421 default_l_val=.false., lone_keyword_l_val=.true.)
425 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
426 variants=[
"RESTART_FILE_NAME"], &
427 description=
"Root of the file names where to read the response functions from "// &
428 "which to restart the calculation of the linear response", &
429 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
434 IF (create_subsections)
THEN
441 CALL create_current_section(subsection)
445 CALL create_nmr_section(subsection)
449 CALL create_spin_spin_section(subsection)
453 CALL create_epr_section(subsection)
457 CALL create_polarizability_section(subsection)
461 CALL create_dcdr_section(subsection)
465 CALL create_vcd_section(subsection)
470 description=
"printing of information during the linear response calculation", &
474 print_key, __location__,
"program_run_info", &
475 description=
"Controls the printing of basic iteration information during the LINRES calculation", &
481 description=
"Controls the dumping of restart file of the response wavefunction. "// &
482 "For each set of response functions, i.e. for each perturbation, "// &
483 "one different restart file is dumped. These restart files should be "// &
484 "employed only to restart the same type of LINRES calculation, "// &
485 "i.e. with the same perturbation.", &
496 END SUBROUTINE create_linres_section
504 SUBROUTINE create_dcdr_section(section)
513 NULLIFY (keyword, print_key, subsection)
515 cpassert(.NOT.
ASSOCIATED(section))
517 IF (.NOT. failure)
THEN
519 description=
"Compute analytical gradients the dipole moments.", &
520 n_keywords=50, n_subsections=1, repeats=.false.)
522 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
523 description=
"Controls the activation of the APT calculation. "// &
524 "Analytical derivatives are not available for functionals that depend on "// &
525 "the kinetic energy density; use APT_FD for these functionals.", &
527 default_l_val=.false., &
528 lone_keyword_l_val=.true.)
532 CALL keyword_create(keyword, __location__, name=
"LIST_OF_ATOMS", &
533 description=
"Specifies a list of atoms.", &
534 usage=
"LIST_OF_ATOMS {integer} {integer} .. {integer}", repeats=.true., &
539 CALL keyword_create(keyword, __location__, name=
"DISTRIBUTED_ORIGIN", &
540 variants=[
"DO_GAUGE"], &
541 description=
"Use the distributed origin (DO) gauge?", &
542 usage=
"DISTRIBUTED_ORIGIN T", &
543 default_l_val=.false., lone_keyword_l_val=.true.)
547 CALL keyword_create(keyword, __location__, name=
"ORBITAL_CENTER", &
548 description=
"The orbital center.", &
549 usage=
"ORBITAL_CENTER WANNIER", &
551 enum_c_vals=
s2a(
"WANNIER",
"COMMON",
"ATOM",
"BOX"), &
552 enum_desc=
s2a(
"Use the Wannier centers.", &
553 "Use a common center (works only for an isolate molecule).", &
554 "Use the atoms as center.", &
562 description=
"Gauge origin of the velocity gauge factor.", &
563 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
564 enum_desc=
s2a(
"Use Center of Mass", &
565 "Use Center of Atomic Charges", &
566 "Use User-defined Point", &
567 "Use Origin of Coordinate System"), &
576 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
577 description=
"User-defined reference point of the velocity gauge factor.", &
578 usage=
"REFERENCE_POINT x y z", &
579 repeats=.false., n_var=3, type_of_var=
real_t, unit_str=
'bohr')
583 CALL keyword_create(keyword, __location__, name=
"Z_MATRIX_METHOD", &
584 description=
"Use Z_matrix method to solve the response equation", &
585 usage=
"Z_MATRIX_METHOD T", &
586 default_l_val=.false., lone_keyword_l_val=.true.)
591 description=
"Use numerical differentiation to compute the APT, "// &
592 "switches off the calculation of dcdr analytical derivatives. "// &
593 "Requires RUN_TYPE = ENERGY_FORCE or MD.", &
595 default_l_val=.false., lone_keyword_l_val=.true.)
600 description=
"Electric field strength (atomic units) to use for finite differences", &
604 default_r_val=0.0003_dp, &
605 usage=
"APT_FD_DE 1.0E-4")
609 CALL keyword_create(keyword, __location__, name=
"APT_FD_METHOD", &
610 description=
"Numerical differentiation method", &
611 usage=
"APT_FD_METHOD FD", &
614 enum_c_vals=
s2a(
"2PNT"), &
617 enum_desc=
s2a(
"Symmetric two-point differences."), &
625 description=
"print results of the magnetic dipole moment calculation", &
629 description=
"Controls the printing of the electric dipole gradient", &
644 END SUBROUTINE create_dcdr_section
652 SUBROUTINE create_vcd_section(section)
659 NULLIFY (keyword, print_key, subsection)
661 cpassert(.NOT.
ASSOCIATED(section))
664 description=
"Carry out a VCD calculation.", &
665 n_keywords=50, n_subsections=1, repeats=.false.)
667 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
668 description=
"controls the activation of the APT/AAT calculation", &
670 default_l_val=.false., &
671 lone_keyword_l_val=.true.)
675 CALL keyword_create(keyword, __location__, name=
"LIST_OF_ATOMS", &
676 description=
"Specifies a list of atoms.", &
677 usage=
"LIST_OF_ATOMS {integer} {integer} .. {integer}", repeats=.true., &
682 CALL keyword_create(keyword, __location__, name=
"DISTRIBUTED_ORIGIN", &
683 variants=[
"DO_GAUGE"], &
684 description=
"Use the distributed origin (DO) gauge?", &
685 usage=
"DISTRIBUTED_ORIGIN T", &
686 default_l_val=.false., lone_keyword_l_val=.true.)
690 CALL keyword_create(keyword, __location__, name=
"ORIGIN_DEPENDENT_MFP", &
691 description=
"Use the origin dependent MFP operator.", &
692 usage=
"ORIGIN_DEPENDENT_MFP T", &
693 default_l_val=.false., lone_keyword_l_val=.true.)
697 CALL keyword_create(keyword, __location__, name=
"ORBITAL_CENTER", &
698 description=
"The orbital center.", &
699 usage=
"ORBITAL_CENTER WANNIER", &
701 enum_c_vals=
s2a(
"WANNIER",
"COMMON",
"ATOM",
"BOX"), &
702 enum_desc=
s2a(
"Use the Wannier centers.", &
703 "Use a common center (works only for an isolate molecule).", &
704 "Use the atoms as center.", &
712 CALL keyword_create(keyword, __location__, name=
"MAGNETIC_ORIGIN", &
713 description=
"Gauge origin of the magnetic dipole operator.", &
714 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
715 enum_desc=
s2a(
"Use Center of Mass", &
716 "Use Center of Atomic Charges", &
717 "Use User-defined Point", &
718 "Use Origin of Coordinate System"), &
727 CALL keyword_create(keyword, __location__, name=
"MAGNETIC_ORIGIN_REFERENCE", &
728 description=
"User-defined reference point of the magnetic dipole operator.", &
729 usage=
"MAGNETIC_ORIGIN_REFERENCE x y z", &
730 repeats=.false., n_var=3, type_of_var=
real_t, unit_str=
'bohr')
735 CALL keyword_create(keyword, __location__, name=
"SPATIAL_ORIGIN", &
736 description=
"Gauge origin of the velocity gauge factor/spatial origin.", &
737 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
738 enum_desc=
s2a(
"Use Center of Mass", &
739 "Use Center of Atomic Charges", &
740 "Use User-defined Point", &
741 "Use Origin of Coordinate System"), &
750 CALL keyword_create(keyword, __location__, name=
"SPATIAL_ORIGIN_REFERENCE", &
751 description=
"User-defined reference point of the velocity gauge factor/spatial origin.", &
752 usage=
"SPATIAL_ORIGIN_REFERENCE x y z", &
753 repeats=.false., n_var=3, type_of_var=
real_t, unit_str=
'bohr')
759 description=
"print results of the magnetic dipole moment calculation", &
763 description=
"Controls the printing of the APTs and AATs", &
776 END SUBROUTINE create_vcd_section
785 SUBROUTINE create_current_section(section)
791 NULLIFY (keyword, print_key, subsection)
793 cpassert(.NOT.
ASSOCIATED(section))
795 description=
"The induced current density is calculated by DFPT.", &
796 n_keywords=4, n_subsections=1, repeats=.false., &
799 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
800 description=
"controls the activation of the induced current calculation", &
801 usage=
"&CURRENT T", &
802 default_l_val=.false., &
803 lone_keyword_l_val=.true.)
808 description=
"The gauge used to compute the induced current within GAPW.", &
811 enum_c_vals=
s2a(
"R",
"R_AND_STEP_FUNCTION",
"ATOM"), &
812 enum_desc=
s2a(
"Position gauge (doesnt work well).", &
813 "Position and step function for the soft and the local parts, respectively.", &
819 CALL keyword_create(keyword, __location__, name=
"GAUGE_ATOM_RADIUS", &
820 description=
"Build the gauge=atom using only the atoms within this radius.", &
821 usage=
"GAUGE_ATOM_RADIUS 10.0", &
828 CALL keyword_create(keyword, __location__, name=
"USE_OLD_GAUGE_ATOM", &
829 description=
"Use the old way to compute the gauge.", &
830 usage=
"USE_OLD_GAUGE_ATOM T", &
831 default_l_val=.true., lone_keyword_l_val=.true.)
835 CALL keyword_create(keyword, __location__, name=
"ORBITAL_CENTER", &
836 description=
"The orbital center.", &
837 usage=
"ORBITAL_CENTER WANNIER", &
839 enum_c_vals=
s2a(
"WANNIER",
"COMMON",
"ATOM",
"BOX"), &
840 enum_desc=
s2a(
"Use the Wannier centers.", &
841 "Use a common center (works only for an isolate molecule).", &
842 "Use the atoms as center.", &
849 CALL keyword_create(keyword, __location__, name=
"COMMON_CENTER", &
850 description=
"The common center ", usage=
"COMMON_CENTER 0.0 1.0 0.0", &
851 n_var=3, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp], type_of_var=
real_t, &
857 description=
"How many boxes along each directions ", usage=
"NBOX 6 6 5", &
858 n_var=3, default_i_vals=[4, 4, 4], type_of_var=
integer_t)
863 description=
"Calculate the succeptibility correction to the shift with PBC", &
865 default_l_val=.false., lone_keyword_l_val=.true.)
869 CALL keyword_create(keyword, __location__, name=
"FORCE_NO_FULL", &
870 description=
"Avoid the calculation of the state dependent perturbation term, "// &
871 "even if the orbital centers are set at Wannier centers or at Atom centers", &
872 usage=
"FORCE_NO_FULL T", &
873 default_l_val=.false., lone_keyword_l_val=.true.)
877 CALL keyword_create(keyword, __location__, name=
"SELECTED_STATES_ON_ATOM_LIST", &
878 description=
"Indexes of the atoms for selecting"// &
879 " the states to be used for the response calculations.", &
880 usage=
"SELECTED_STATES_ON_ATOM_LIST 1 2 10", &
881 n_var=-1, type_of_var=
integer_t, repeats=.true.)
885 CALL keyword_create(keyword, __location__, name=
"SELECTED_STATES_ATOM_RADIUS", &
886 description=
"Select all the states included in the given radius around each atoms "// &
887 "in SELECTED_STATES_ON_ATOM_LIST.", &
888 usage=
"SELECTED_STATES_ATOM_RADIUS 2.0", &
895 CALL keyword_create(keyword, __location__, name=
"RESTART_CURRENT", &
896 description=
"Restart the induced current density calculation"// &
897 " from a previous run (not working yet).", &
898 usage=
"RESTART_CURRENT", default_l_val=.false., &
899 lone_keyword_l_val=.true.)
905 description=
"print results of induced current density calculation", &
909 description=
"Controls the printing of the induced current density (not working yet).", &
912 description=
"The stride (X,Y,Z) used to write the cube file "// &
913 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
914 " 1 number valid for all components (not working yet).", &
915 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
919 description=
"append the cube files when they already exist", &
920 default_l_val=.false., lone_keyword_l_val=.true.)
928 description=
"Controls the printing of the response functions (not working yet).", &
931 description=
"The stride (X,Y,Z) used to write the cube file "// &
932 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
933 " 1 number valid for all components (not working yet).", &
934 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
938 CALL keyword_create(keyword, __location__, name=
"CUBES_LU_BOUNDS", &
939 variants=[
"CUBES_LU"], &
940 description=
"The lower and upper index of the states to be printed as cube (not working yet).", &
941 usage=
"CUBES_LU_BOUNDS integer integer", &
942 n_var=2, default_i_vals=[0, -2], type_of_var=
integer_t)
947 description=
"Indexes of the states to be printed as cube files "// &
948 "This keyword can be repeated several times "// &
949 "(useful if you have to specify many indexes) (not working yet).", &
950 usage=
"CUBES_LIST 1 2", &
951 n_var=-1, type_of_var=
integer_t, repeats=.true.)
955 description=
"append the cube files when they already exist", &
956 default_l_val=.false., lone_keyword_l_val=.true.)
971 END SUBROUTINE create_current_section
981 SUBROUTINE create_nmr_section(section)
987 NULLIFY (keyword, print_key, subsection)
989 cpassert(.NOT.
ASSOCIATED(section))
991 description=
"The chemical shift is calculated by DFPT.", &
992 n_keywords=5, n_subsections=1, repeats=.false., &
995 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
996 description=
"controls the activation of the nmr calculation", &
998 default_l_val=.false., &
999 lone_keyword_l_val=.true.)
1003 CALL keyword_create(keyword, __location__, name=
"INTERPOLATE_SHIFT", &
1004 description=
"Calculate the soft part of the chemical shift by interpolation ", &
1005 usage=
"INTERPOLATE_SHIFT T", &
1006 default_l_val=.false., lone_keyword_l_val=.true.)
1011 description=
"Calculate the chemical shift in a set of points"// &
1012 " given from an external file", usage=
"NICS", &
1013 default_l_val=.false., lone_keyword_l_val=.true.)
1017 CALL keyword_create(keyword, __location__, name=
"NICS_FILE_NAME", &
1018 description=
"Name of the file with the NICS points coordinates", &
1019 usage=
"NICS_FILE_NAME nics_file", &
1020 default_lc_val=
"nics_file")
1025 description=
"Restart the NMR calculation from a previous run (NOT WORKING YET)", &
1026 usage=
"RESTART_NMR", default_l_val=.false., &
1027 lone_keyword_l_val=.true.)
1031 CALL keyword_create(keyword, __location__, name=
"SHIFT_GAPW_RADIUS", &
1032 description=
"While computing the local part of the shift (GAPW), "// &
1033 "the integration is restricted to nuclei that are within this radius.", &
1034 usage=
"SHIFT_GAPW_RADIUS 20.0", &
1037 unit_str=
"angstrom")
1041 NULLIFY (subsection)
1043 description=
"print results of nmr calculation", &
1047 description=
"Controls the printing of the response functions ", &
1050 description=
"The stride (X,Y,Z) used to write the cube file "// &
1051 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1052 " 1 number valid for all components.", &
1053 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1057 CALL keyword_create(keyword, __location__, name=
"CUBES_LU_BOUNDS", &
1058 variants=[
"CUBES_LU"], &
1059 description=
"The lower and upper index of the states to be printed as cube", &
1060 usage=
"CUBES_LU_BOUNDS integer integer", &
1061 n_var=2, default_i_vals=[0, -2], type_of_var=
integer_t)
1066 description=
"Indexes of the states to be printed as cube files "// &
1067 "This keyword can be repeated several times "// &
1068 "(useful if you have to specify many indexes).", &
1069 usage=
"CUBES_LIST 1 2", &
1070 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1074 description=
"append the cube files when they already exist", &
1075 default_l_val=.false., lone_keyword_l_val=.true.)
1083 description=
"Controls the printing of susceptibility", &
1089 description=
"Controls the printing of the chemical shift", &
1092 CALL keyword_create(keyword, __location__, name=
"ATOMS_LU_BOUNDS", &
1093 variants=[
"ATOMS_LU"], &
1094 description=
"The lower and upper atomic index for which the tensor is printed", &
1095 usage=
"ATOMS_LU_BOUNDS integer integer", &
1096 n_var=2, default_i_vals=[0, -2], type_of_var=
integer_t)
1101 description=
"list of atoms for which the shift is printed into a file ", &
1102 usage=
"ATOMS_LIST 1 2", n_var=-1, &
1113 NULLIFY (subsection)
1118 END SUBROUTINE create_nmr_section
1127 SUBROUTINE create_spin_spin_section(section)
1133 NULLIFY (keyword, print_key, subsection)
1135 cpassert(.NOT.
ASSOCIATED(section))
1137 description=
"Compute indirect spin-spin coupling constants.", &
1138 n_keywords=5, n_subsections=1, repeats=.false.)
1140 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1141 description=
"controls the activation of the nmr calculation", &
1142 usage=
"&SPINSPIN T", &
1143 default_l_val=.false., &
1144 lone_keyword_l_val=.true.)
1148 CALL keyword_create(keyword, __location__, name=
"RESTART_SPINSPIN", &
1149 description=
"Restart the spin-spin calculation from a previous run (NOT WORKING YET)", &
1150 usage=
"RESTART_SPINSPIN", default_l_val=.false., &
1151 lone_keyword_l_val=.true.)
1155 CALL keyword_create(keyword, __location__, name=
"ISSC_ON_ATOM_LIST", &
1156 description=
"Atoms for which the issc is computed.", &
1157 usage=
"ISSC_ON_ATOM_LIST 1 2 10", &
1158 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1163 description=
"Compute the Fermi contact contribution", &
1165 default_l_val=.true., lone_keyword_l_val=.true.)
1170 description=
"Compute the spin-dipolar contribution", &
1172 default_l_val=.true., lone_keyword_l_val=.true.)
1177 description=
"Compute the paramagnetic spin-orbit contribution", &
1179 default_l_val=.true., lone_keyword_l_val=.true.)
1184 description=
"Compute the diamagnetic spin-orbit contribution (NOT YET IMPLEMENTED)", &
1186 default_l_val=.true., lone_keyword_l_val=.true.)
1190 NULLIFY (subsection)
1192 description=
"print results of the indirect spin-spin calculation", &
1196 description=
"Controls the printing of the indirect spin-spin matrix", &
1200 description=
"list of atoms for which the indirect spin-spin is printed into a file ", &
1201 usage=
"ATOMS_LIST 1 2", n_var=-1, &
1212 NULLIFY (subsection)
1217 END SUBROUTINE create_spin_spin_section
1227 SUBROUTINE create_epr_section(section)
1231 TYPE(
section_type),
POINTER :: print_key, subsection, subsubsection
1233 NULLIFY (keyword, print_key, subsection, subsubsection)
1235 cpassert(.NOT.
ASSOCIATED(section))
1237 description=
"The g tensor is calculated by DFPT ", &
1238 n_keywords=5, n_subsections=1, repeats=.false., &
1241 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1242 description=
"controls the activation of the epr calculation", &
1244 default_l_val=.false., &
1245 lone_keyword_l_val=.true.)
1250 description=
"Restart the EPR calculation from a previous run (NOT WORKING)", &
1251 usage=
"RESTART_EPR", default_l_val=.false., &
1252 lone_keyword_l_val=.true.)
1256 NULLIFY (subsection)
1258 description=
"print results of epr calculation", &
1262 description=
"Controls the printing of the components of nabla v_ks ", &
1265 description=
"The stride (X,Y,Z) used to write the cube file "// &
1266 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1267 " 1 number valid for all components.", &
1268 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1272 description=
"append the cube files when they already exist", &
1273 default_l_val=.false., lone_keyword_l_val=.true.)
1281 description=
"Controls the printing of the g tensor", &
1287 CALL keyword_create(keyword, __location__, name=
"GAPW_MAX_ALPHA", &
1288 description=
"Maximum alpha of GTH potentials allowed on the soft grids ", &
1289 usage=
"GAPW_MAX_ALPHA real", default_r_val=5.0_dp)
1293 CALL keyword_create(keyword, __location__, name=
"SOO_RHO_HARD", &
1294 description=
"Whether or not to include the atomic parts of the density "// &
1295 "in the SOO part of the g tensor", usage=
"SOO_RHO_HARD", &
1296 default_l_val=.false., lone_keyword_l_val=.true.)
1304 description=
"Controls the printing of the response functions ", &
1307 description=
"The stride (X,Y,Z) used to write the cube file "// &
1308 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1309 " 1 number valid for all components.", &
1310 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1314 CALL keyword_create(keyword, __location__, name=
"CUBES_LU_BOUNDS", &
1315 variants=[
"CUBES_LU"], &
1316 description=
"The lower and upper index of the states to be printed as cube", &
1317 usage=
"CUBES_LU_BOUNDS integer integer", &
1318 n_var=2, default_i_vals=[0, -2], type_of_var=
integer_t)
1323 description=
"Indexes of the states to be printed as cube files "// &
1324 "This keyword can be repeated several times "// &
1325 "(useful if you have to specify many indexes).", &
1326 usage=
"CUBES_LIST 1 2", &
1327 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1331 description=
"append the cube files when they already exist", &
1332 default_l_val=.false., lone_keyword_l_val=.true.)
1342 NULLIFY (subsection)
1347 END SUBROUTINE create_epr_section
1356 SUBROUTINE create_polarizability_section(section)
1363 NULLIFY (keyword, print_key, subsection)
1365 cpassert(.NOT.
ASSOCIATED(section))
1367 description=
"Compute polarizabilities.", &
1368 n_keywords=5, n_subsections=1, repeats=.false., &
1371 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1372 description=
"controls the activation of the polarizability calculation", &
1374 default_l_val=.false., &
1375 lone_keyword_l_val=.true.)
1380 description=
"Compute the electric-dipole--electric-dipole polarizability", &
1381 usage=
"DO_RAMAN F", &
1383 default_l_val=.true., lone_keyword_l_val=.true.)
1387 CALL keyword_create(keyword, __location__, name=
"PERIODIC_DIPOLE_OPERATOR", &
1388 description=
"Type of dipole operator: Berry phase(T) or Local(F)", &
1389 usage=
"PERIODIC_DIPOLE_OPERATOR T", &
1390 default_l_val=.true., lone_keyword_l_val=.true.)
1394 NULLIFY (subsection)
1396 description=
"print results of the polarizability calculation", &
1400 description=
"Controls the printing of the polarizabilities", &
1408 NULLIFY (subsection)
1413 END SUBROUTINE create_polarizability_section
1420 SUBROUTINE create_et_coupling_section(section)
1427 cpassert(.NOT.
ASSOCIATED(section))
1429 description=
"specifies the two constraints/restraints for extracting ET coupling elements", &
1432 NULLIFY (subsection)
1437 NULLIFY (subsection)
1442 NULLIFY (subsection)
1443 CALL create_projection(subsection,
"PROJECTION")
1447 CALL keyword_create(keyword, __location__, name=
"TYPE_OF_CONSTRAINT", &
1448 description=
"Specifies the type of constraint", &
1449 usage=
"TYPE_OF_CONSTRAINT DDAPC", &
1450 enum_c_vals=
s2a(
"NONE",
"DDAPC"), &
1452 enum_desc=
s2a(
"NONE",
"DDAPC Constraint"), &
1459 description=
"Controls the printing basic info about the method", &
1464 END SUBROUTINE create_et_coupling_section
1473 SUBROUTINE create_projection(section, section_name)
1477 CHARACTER(len=*),
INTENT(in) :: section_name
1480 TYPE(
section_type),
POINTER :: print_key, section_block, section_print
1485 cpassert(.NOT.
ASSOCIATED(section))
1490 NULLIFY (section_block)
1491 NULLIFY (section_print)
1494 CALL section_create(section, __location__, name=trim(adjustl(section_name)), &
1495 description=
"Projection-operator approach fo ET coupling calculation", &
1496 n_keywords=0, n_subsections=2, repeats=.false.)
1500 description=
"Controls printing of data and informations to log file", &
1507 description=
"Part of the system (donor, acceptor, bridge,...)", &
1508 n_keywords=2, n_subsections=1, repeats=.true.)
1513 description=
"Array of atom IDs in the system part", &
1514 usage=
"ATOMS {integer} {integer} .. {integer}", &
1515 n_var=-1, type_of_var=
integer_t, repeats=.false.)
1521 description=
"Number of electrons expected in the system part", &
1522 usage=
"NELECTRON {integer}", default_i_val=0)
1528 description=
"Possible printing options in ET system part", &
1529 n_keywords=0, n_subsections=0, repeats=.false.)
1533 CALL keyword_create(keyword, __location__, name=
'MO_COEFF_ATOM', &
1534 description=
"Print out MO coeffiecients on given atom", &
1535 usage=
"MO_COEFF_ATOM {integer} {integer} .. {integer}", &
1536 type_of_var=
integer_t, n_var=-1, repeats=.true.)
1541 CALL keyword_create(keyword, __location__, name=
'MO_COEFF_ATOM_STATE', &
1542 description=
"Print out MO coeffiecients of specific state", &
1543 usage=
"MO_COEFF_ATOM_STATE {integer} {integer} .. {integer}", &
1544 type_of_var=
integer_t, n_var=-1, repeats=.true.)
1550 description=
"Controls saving of MO cube files", &
1555 description=
"The stride (X,Y,Z) used to write the cube file", &
1556 usage=
"STRIDE {integer} {integer} {integer}", n_var=-1, &
1557 default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1563 description=
"Indices of molecular orbitals to save", &
1564 usage=
"MO_LIST {integer} {integer} .. {integer}", &
1565 type_of_var=
integer_t, n_var=-1, repeats=.true.)
1571 description=
"Number of unoccupied molecular orbitals to save", &
1572 usage=
"NLUMO {integer}", default_i_val=1)
1578 description=
"Number of occupied molecular orbitals to save", &
1579 usage=
"NHOMO {integer}", default_i_val=1)
1594 description=
"Possible printing options in ET", &
1595 n_keywords=0, n_subsections=0, repeats=.false.)
1600 description=
"Controls printing couplings onto file", &
1604 description=
"append the files when they already exist", &
1605 default_l_val=.false., lone_keyword_l_val=.true.)
1614 END SUBROUTINE create_projection
1623 SUBROUTINE create_tddfpt2_section(section)
1629 cpassert(.NOT.
ASSOCIATED(section))
1631 description=
"Controls time-dependent density functional perturbation theory "// &
1632 "(TDDFPT) calculations for electronic excitations and related properties.", &
1633 n_keywords=14, n_subsections=4, repeats=.false., &
1636 NULLIFY (keyword, print_key, subsection)
1639 name=
"_SECTION_PARAMETERS_", &
1640 description=
"Activates the TDDFPT procedure.", &
1641 default_l_val=.false., &
1642 lone_keyword_l_val=.true.)
1648 description=
"Number of excited states to converge.", &
1655 description=
"Maximal number of iterations to be performed.", &
1662 description=
"Maximal number of Krylov space vectors. "// &
1663 "Davidson iterations will be restarted upon reaching this limit.", &
1670 description=
"Number of unoccupied orbitals to consider. "// &
1671 "Default is to use all unoccupied orbitals (-1).", &
1678 description=
"Number of MPI processes to be used per excited state. "// &
1679 "Default is to use all MPI processes (0).", &
1687 description=
"Options to compute the kernel", &
1688 usage=
"KERNEL FULL", &
1689 enum_c_vals=
s2a(
"FULL",
"sTDA",
"NONE"), &
1697 description=
"Selects the type of spin-flip TDDFPT kernel", &
1698 usage=
"SPINFLIP NONCOLLINEAR", &
1699 enum_c_vals=
s2a(
"NONE",
"COLLINEAR",
"NONCOLLINEAR"), &
1701 enum_desc=
s2a(
"Only molecular orbital energy differences are considered", &
1702 "MO energy diferences and Fock exchange contributions are "// &
1704 "MO energy differences, Fock exchange and "// &
1705 "Noncollinear local exchange-correlation "// &
1706 "kernel are considered"), &
1712 description=
"Orbital energy correction potential.", &
1713 enum_c_vals=
s2a(
"NONE",
"LB94",
"GLLB",
"SAOP",
"SHIFT"), &
1715 enum_desc=
s2a(
"No orbital correction scheme is used", &
1716 "van Leeuwen and Baerends. PRA, 49:2421, 1994", &
1717 "Gritsenko, van Leeuwen, van Lenthe, Baerends. PRA, 51:1944, 1995", &
1718 "Gritsenko, Schipper, Baerends. Chem. Phys. Lett., 302:199, 1999", &
1719 "Constant shift of virtual and/or open-shell orbitals"), &
1726 variants=
s2a(
"VIRTUAL_SHIFT"), &
1727 description=
"Constant shift of virtual state eigenvalues.", &
1728 usage=
"EV_SHIFT 0.500", &
1729 n_var=1, type_of_var=
real_t, &
1731 default_r_val=0.0_dp)
1736 variants=
s2a(
"OPEN_SHELL_SHIFT"), &
1737 description=
"Constant shift of open shell eigenvalues.", &
1738 usage=
"EOS_SHIFT 0.200", &
1739 n_var=1, type_of_var=
real_t, &
1741 default_r_val=0.0_dp)
1747 description=
"Target accuracy for excited state energies.", &
1748 n_var=1, type_of_var=
real_t, unit_str=
"hartree", &
1749 default_r_val=1.0e-5_dp)
1753 CALL keyword_create(keyword, __location__, name=
"MIN_AMPLITUDE", &
1754 description=
"The smallest excitation amplitude to print.", &
1755 n_var=1, type_of_var=
real_t, &
1756 default_r_val=5.0e-2_dp)
1760 CALL keyword_create(keyword, __location__, name=
"ORTHOGONAL_EPS", &
1761 description=
"The largest possible overlap between the ground state and "// &
1762 "orthogonalised excited state wave-functions. Davidson iterations "// &
1763 "will be restarted when the overlap goes beyond this threshold in "// &
1764 "order to prevent numerical instability.", &
1765 n_var=1, type_of_var=
real_t, &
1766 default_r_val=1.0e-4_dp)
1772 description=
"Restart the TDDFPT calculation if a restart file exists", &
1774 default_l_val=.false., lone_keyword_l_val=.true.)
1778 CALL keyword_create(keyword, __location__, name=
"RKS_TRIPLETS", &
1779 description=
"Compute triplet excited states using spin-unpolarised molecular orbitals.", &
1781 default_l_val=.false.)
1785 CALL keyword_create(keyword, __location__, name=
"ADMM_KERNEL_XC_CORRECTION", &
1786 description=
"Use/Ignore ADMM correction xc functional for TD kernel. "// &
1787 "XC correction functional is defined in ground state XC section.", &
1789 default_l_val=.true., lone_keyword_l_val=.true.)
1793 CALL keyword_create(keyword, __location__, name=
"ADMM_KERNEL_CORRECTION_SYMMETRIC", &
1794 description=
"ADMM correction functional in kernel is applied symmetrically. "// &
1795 "Original implementation is using a non-symmetric formula.", &
1797 default_l_val=.true., lone_keyword_l_val=.true.)
1802 description=
"Local resolution of identity for Coulomb contribution.", &
1804 default_l_val=.false.)
1809 description=
"Specify type and size of automatically generated auxiliary "// &
1810 "(RI) basis sets. Exactly two arguments are required for this option. "// &
1811 "The first argument of basis type should be one of the following: "// &
1812 "`P_LRI_AUX`. The second argument of basis size should be one of the "// &
1813 "following: `SMALL`, `MEDIUM`, `LARGE`, or `HUGE`. The default is not "// &
1814 "using any of these basis sets, requested by `AUTO_BASIS X X` (exactly "// &
1815 "as written here).", &
1816 usage=
"AUTO_BASIS {basis_type} {basis_size}", &
1817 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=[
"X",
"X"])
1822 description=
"Implying smeared occupation. ", &
1824 default_l_val=.false., lone_keyword_l_val=.true.)
1828 CALL keyword_create(keyword, __location__, name=
"EXCITON_DESCRIPTORS", &
1829 description=
"Compute exciton descriptors. "// &
1830 "Details given in Manual section about Bethe Salpeter equation.", &
1832 default_l_val=.false.)
1836 CALL keyword_create(keyword, __location__, name=
"DIRECTIONAL_EXCITON_DESCRIPTORS", &
1837 description=
"Print cartesian components of exciton descriptors.", &
1839 default_l_val=.false.)
1843 CALL keyword_create(keyword, __location__, name=
"DIRECTIONAL_EXCITON_CROSSCORRELATION", &
1844 description=
"Print the electron-hole crosscorrelation matrix as part of the "// &
1845 "cartesian components of exciton descriptors. Only active together with "// &
1846 "DIRECTIONAL_EXCITON_DESCRIPTORS.", &
1848 default_l_val=.true.)
1853 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
1854 variants=[
"RESTART_FILE_NAME"], &
1855 description=
"Name of the wave function restart file, may include a path."// &
1856 " If no file is specified, the default is to open the file as generated by"// &
1857 " the wave function restart print key.", &
1858 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
1864 CALL section_create(subsection, __location__, name=
"DIPOLE_MOMENTS", &
1865 description=
"Parameters to compute oscillator strengths in the dipole approximation.", &
1866 n_keywords=3, n_subsections=0, repeats=.false.)
1869 description=
"Form of dipole transition integrals.", &
1870 enum_c_vals=
s2a(
"BERRY",
"LENGTH",
"VELOCITY",
"VELOCITY_OLD", &
1872 enum_desc=
s2a(
"Based on Berry phase formula (valid for fully periodic molecular systems only)", &
1873 "Length form ⟨ i | r | j ⟩ (valid for non-periodic molecular systems only)", &
1874 "Velocity form ⟨ i | d/dr | j ⟩", &
1875 "Old velocity form ⟨ i | d/dr | j ⟩", &
1876 "SCF molecular-orbital moment form for k-point TDDFPT"), &
1885 description=
"Reference point to calculate electric "// &
1886 "dipole moments using the dipole integrals in the length form.", &
1887 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1888 enum_desc=
s2a(
"Use Center of Mass", &
1889 "Use Center of Atomic Charges", &
1890 "Use User-defined Point", &
1891 "Use Origin of Coordinate System"), &
1900 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
1901 description=
"User-defined reference point.", &
1902 usage=
"REFERENCE_POINT x y z", &
1903 repeats=.false., n_var=3, type_of_var=
real_t, unit_str=
'bohr')
1913 description=
"Is jet to be implemented", &
1914 n_keywords=2, n_subsections=0, repeats=.false.)
1917 variants=
s2a(
"EPS_FILTER_MATRIX"), &
1918 description=
"The threshold used for sparse matrix operations", &
1919 usage=
"EPS_FILTER {real}", &
1921 default_r_val=1.0e-10_dp)
1926 variants=[
"ATOMIC_GRID"], &
1927 description=
"Specification of the atomic angular and radial grids for "// &
1928 "a atomic kind. This keyword must be repeated for all kinds! "// &
1929 "Usage: GRID < LEBEDEV_GRID > < RADIAL_GRID >", &
1930 usage=
"GRID {string} {integer} {integer}", &
1931 n_var=3, type_of_var=
char_t, repeats=.true.)
1949 CALL create_stda_section(subsection)
1954 CALL create_res_section(subsection)
1959 description=
"Choosing BSE kernel.", &
1960 usage=
"DO_BSE", default_l_val=.false., lone_keyword_l_val=.true.)
1964 CALL keyword_create(keyword, __location__, name=
"DO_BSE_W_ONLY", &
1965 description=
"Debug option for BSE kernel.", &
1966 usage=
"DO_BSE_W_ONLY", default_l_val=.false., lone_keyword_l_val=.true.)
1970 CALL keyword_create(keyword, __location__, name=
"DO_BSE_GW_ONLY", &
1971 description=
"Debug option for BSE kernel.", &
1972 usage=
"DO_BSE_GW_ONLY", default_l_val=.false., lone_keyword_l_val=.true.)
1982 CALL create_linres_section(subsection, create_subsections=.false., default_set_tdlr=.true.)
1988 description=
"Printing of information during the TDDFT run.", repeats=.false.)
1991 description=
"Controls the printing of the banner for TDDFPT program", &
1997 description=
"Controls the printing of initial guess vectors.", &
2003 description=
"Controls the printing of basic iteration information "// &
2004 "during the TDDFT run.", &
2010 description=
"Controls the printing of detailed energy information "// &
2011 "during the TDDFT run.", &
2017 description=
"Controls the printing of a file with all basis sets used.", &
2023 description=
"Controls the dumping of the MO restart file during TDDFPT. "// &
2024 "By default keeps a short history of three restarts.", &
2026 each_iter_names=
s2a(
"TDDFT_SCF"), each_iter_values=[10], &
2028 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
2029 description=
"Specifies the maximum number of backup copies.", &
2030 usage=
"BACKUP_COPIES {int}", &
2038 description=
"Perform a natural transition orbital analysis.", &
2041 description=
"Threshold for sum of NTO eigenvalues considered", &
2042 usage=
"Threshold 0.95", &
2045 default_r_val=0.975_dp)
2048 CALL keyword_create(keyword, __location__, name=
"INTENSITY_THRESHOLD", &
2049 description=
"Threshold for oscillator strength to screen states.", &
2050 usage=
"Intensity_threshold 0.01", &
2053 default_r_val=0.0_dp)
2057 description=
"Specifies a list of states for the NTO calculations.", &
2058 usage=
"STATE_LIST {integer} {integer} .. {integer}", &
2063 description=
"Print NTOs on Cube Files", &
2064 usage=
"CUBE_FILES {logical}", repeats=.false., n_var=1, &
2065 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
2069 description=
"The stride (X,Y,Z) used to write the cube file "// &
2070 "(larger values result in smaller cube files). Provide 3 numbers (for X,Y,Z) or"// &
2071 " 1 number valid for all components.", &
2072 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
2076 description=
"append the cube files when they already exist", &
2077 default_l_val=.false., lone_keyword_l_val=.true.)
2084 description=
"Write the NTO in Molden file format, for visualisation.", &
2087 description=
"Unit for coordinates and cell in the MOLDEN file.", &
2088 usage=
"UNIT ANGSTROM", &
2089 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
2090 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
2091 enum_i_vals=[1, 2], &
2096 description=
"Controls whether the [Cell] block is written to the MOLDEN file.", &
2097 usage=
"WRITE_CELL TRUE", &
2098 default_l_val=.false., lone_keyword_l_val=.true.)
2101 CALL keyword_create(keyword, __location__, name=
"WRITE_PSEUDO", &
2102 description=
"Controls whether the [Pseudo] block is written to the MOLDEN file.", &
2103 usage=
"WRITE_PSEUDO TRUE", &
2104 default_l_val=.false., lone_keyword_l_val=.true.)
2108 description=
"Controls whether ghost atoms are marked in the [Atoms] block by "// &
2109 "setting their atomic number to zero.", &
2110 usage=
"MARK_GHOST T", &
2111 default_l_val=.false., lone_keyword_l_val=.true.)
2115 description=
"Specifies the number of significant digits retained. 3 is OK for visualization.", &
2116 usage=
"NDIGITS {int}", &
2121 description=
"Representation of Gaussian-type orbitals", &
2123 enum_c_vals=
s2a(
"CARTESIAN",
"SPHERICAL"), &
2125 "Cartesian Gaussian orbitals. Use with caution", &
2126 "Spherical Gaussian orbitals. Incompatible with VMD"), &
2134 description=
"Controls the printout required for NAMD with NEWTONX.", &
2136 CALL keyword_create(keyword, __location__, name=
"PRINT_VIRTUALS", &
2137 description=
"Print occupied AND virtual molecular orbital coefficients", &
2138 default_l_val=.false., lone_keyword_l_val=.true.)
2141 CALL keyword_create(keyword, __location__, name=
"PRINT_PHASES", &
2142 description=
"Print phases of occupied and virtuals MOs.", &
2143 default_l_val=.false., lone_keyword_l_val=.true.)
2146 CALL keyword_create(keyword, __location__, name=
"SCALE_WITH_PHASES", &
2147 description=
"Scale ES eigenvectors with phases of occupied and virtuals MOs.", &
2148 default_l_val=.false., lone_keyword_l_val=.true.)
2156 description=
"Controls the printout of the tddfpt2_soc modul", &
2159 description=
"Will detrement if output in eVolt will be printef.", &
2160 default_l_val=.true., lone_keyword_l_val=.true.)
2164 description=
"Will detrement if output in wavenumbers will be printed.", &
2165 default_l_val=.false., lone_keyword_l_val=.true.)
2169 description=
"Will add the SOC-Splitting as additional output", &
2170 default_l_val=.false., lone_keyword_l_val=.true.)
2174 description=
"Will add the SOC-Matrix as additional output in a different file", &
2175 default_l_val=.false., lone_keyword_l_val=.true.)
2182 description=
"Controls the calculation and printing of excited state forces. "// &
2183 "This needs a RUN_TYPE that includes force evaluation, e.g. ENERGY_FORCE", &
2186 description=
"Specifies a list of states for the force calculations.", &
2187 usage=
"LIST {integer} {integer} .. {integer}", repeats=.true., &
2192 description=
"Threshold for oszillator strength to screen states.", &
2193 usage=
"Threshold 0.01", &
2196 default_r_val=0.0_dp)
2205 END SUBROUTINE create_tddfpt2_section
2211 SUBROUTINE create_stda_section(section)
2216 cpassert(.NOT.
ASSOCIATED(section))
2218 description=
"parameters needed and setup for sTDA calculations", &
2219 n_keywords=3, n_subsections=0, repeats=.false.)
2223 variants=[
"HFX_FRACTION"], &
2224 description=
"The fraction of TB Hartree-Fock exchange to use in the Kernel. "// &
2225 "0.0 implies no HFX part is used in the kernel. ", &
2226 usage=
"FRACTION 0.0", default_r_val=0.0_dp)
2233 description=
"Explicitly including or switching off sTDA exchange", &
2234 usage=
"DO_EXCHANGE", default_l_val=.true., lone_keyword_l_val=.true.)
2239 description=
"Use Ewald type method for Coulomb interaction", &
2240 usage=
"DO_EWALD", default_l_val=.false., lone_keyword_l_val=.true.)
2244 CALL keyword_create(keyword, __location__, name=
"EPS_TD_FILTER", &
2245 description=
"Threshold for filtering the transition density matrix", &
2246 usage=
"EPS_TD_FILTER epsf", default_r_val=1.e-10_dp)
2250 CALL keyword_create(keyword, __location__, name=
"MATAGA_NISHIMOTO_CEXP", &
2251 description=
"Exponent used in Mataga-Nishimoto formula for Coulomb (alpha). "// &
2252 "Default value is method dependent!", &
2253 usage=
"MATAGA_NISHIMOTO_CEXP cexp", default_r_val=-99.0_dp)
2257 CALL keyword_create(keyword, __location__, name=
"MATAGA_NISHIMOTO_XEXP", &
2258 description=
"Exponent used in Mataga-Nishimoto formula for Exchange (beta). "// &
2259 "Default value is method dependent!", &
2260 usage=
"MATAGA_NISHIMOTO_XEXP xexp", default_r_val=-99.0_dp)
2264 CALL keyword_create(keyword, __location__, name=
"COULOMB_SR_CUT", &
2265 description=
"Maximum range of short range part of Coulomb interaction.", &
2266 usage=
"COULOMB_SR_CUT rcut", default_r_val=20.0_dp)
2270 CALL keyword_create(keyword, __location__, name=
"COULOMB_SR_EPS", &
2271 description=
"Threshold for short range part of Coulomb interaction.", &
2272 usage=
"COULOMB_SR_EPS sreps", default_r_val=1.e-03_dp)
2276 END SUBROUTINE create_stda_section
2282 SUBROUTINE create_res_section(section)
2287 cpassert(.NOT.
ASSOCIATED(section))
2288 CALL section_create(section, __location__, name=
"REDUCED_EXCITATION_SPACE", &
2289 description=
"Sets up a restricted (reduced) excitation space for TDDFT", &
2290 n_keywords=3, n_subsections=0, repeats=.false.)
2294 name=
"_SECTION_PARAMETERS_", &
2295 description=
"Controls the activation of RES calculation.", &
2296 default_l_val=.false., &
2297 lone_keyword_l_val=.true.)
2301 CALL keyword_create(keyword, __location__, name=
"ENERGY_WINDOW", &
2302 description=
"Upper and lower cutoffs [eV] for orbitals to be included for excitations. ", &
2303 usage=
"ENERGY_WINDOW -5.0 0.0", default_r_vals=[-1.0e10_dp, 1.0e10_dp], &
2304 type_of_var=
real_t, unit_str=
"eV")
2308 CALL keyword_create(keyword, __location__, name=
"UPPER_ENERGY_CUTOFF", &
2309 description=
"Upper energy cutoff [eV] for orbitals to be included in excitations.", &
2310 usage=
"UPPER_ENERGY_CUTOFF -5.0", default_r_val=1.0e10_dp, &
2311 type_of_var=
real_t, unit_str=
"eV")
2315 CALL keyword_create(keyword, __location__, name=
"LOWER_ENERGY_CUTOFF", &
2316 description=
"Lower energy cutoff [eV] for orbitals to be included in excitations.", &
2317 usage=
"LOWER_ENERGY_CUTOFF -5.0", default_r_val=-1.0e10_dp, &
2318 type_of_var=
real_t, unit_str=
"eV")
2322 CALL keyword_create(keyword, __location__, name=
"MOLECULE_LIST", &
2323 description=
"Indices of molecules to be excited. "// &
2324 "This implies the calculation of molecular states through orbital location "// &
2325 "and subspace diagonalization.", &
2326 usage=
"MOLECULE_LIST {integer} {integer} .. {integer} ", &
2327 n_var=-1, type_of_var=
integer_t, repeats=.false.)
2331 END SUBROUTINE create_res_section
2339 SUBROUTINE create_bandstructure_section(section)
2345 cpassert(.NOT.
ASSOCIATED(section))
2346 CALL section_create(section, __location__, name=
"BANDSTRUCTURE", &
2347 description=
"Parameters needed to set up a calculation for "// &
2348 "electronic level energies of molecules and the electronic band "// &
2349 "structure of materials from post-SCF schemes (GW, perturbative "// &
2350 "spin-orbit coupling). Also, the density of states (DOS), "// &
2351 "projected density of states (PDOS), local density of states (LDOS), "// &
2352 "local valence band maximum (LVBM), local conduction band minimum "// &
2353 "(LCBM) and local band gap can be calculated. Please note that "// &
2354 "all methods in this section start from a Gamma-only DFT SCF. "// &
2355 "You need to make sure that the cell chosen in the DFT SCF is "// &
2356 "converged in the cell size. Band structures are computed "// &
2357 "for the primitive cell (i.e. the smallest possible unit cell of "// &
2358 "the input structure which is detected automatically). Moreover, "// &
2359 "spin-orbit coupling (SOC) on eigenvalues and band structures is "// &
2360 "available using Hartwigsen-Goedecker-Hutter "// &
2361 "pseudopotentials.", &
2362 n_keywords=1, n_subsections=1, repeats=.false.)
2364 NULLIFY (keyword, subsection)
2366 name=
"_SECTION_PARAMETERS_", &
2367 description=
"Controls the activation of the band structure calculation.", &
2368 default_l_val=.false., &
2369 lone_keyword_l_val=.true.)
2378 CALL create_gw_section(subsection)
2382 CALL create_soc_section(subsection)
2386 CALL create_dos_section(subsection)
2390 CALL create_floquet_section(subsection)
2394 END SUBROUTINE create_bandstructure_section
2402 SUBROUTINE create_gw_section(section)
2408 cpassert(.NOT.
ASSOCIATED(section))
2410 description=
"Parameters needed to set up a GW calculation for "// &
2411 "electronic level energies $\varepsilon_{n\mathbf{k}}^{G_0W_0}$ "// &
2412 "of molecules and the band structure of materials: "// &
2413 "$\varepsilon_{n\mathbf{k}}^{G_0W_0}= "// &
2414 "\varepsilon_{n\mathbf{k}}^\text{DFT}+\Sigma_{n\mathbf{k}} "// &
2415 "-v^\text{xc}_{n\mathbf{k}}$. "// &
2416 "For the GW algorithm for molecules, see "// &
2417 "<https://doi.org/10.1021/acs.jctc.0c01282>. "// &
2418 "For 2D materials, see <https://doi.org/10.1021/acs.jctc.3c01230>.", &
2419 n_keywords=1, n_subsections=4, repeats=.false.)
2423 name=
"_SECTION_PARAMETERS_", &
2424 description=
"Controls the activation of the GW calculation.", &
2425 default_l_val=.false., &
2426 lone_keyword_l_val=.true.)
2430 CALL keyword_create(keyword, __location__, name=
"NUM_TIME_FREQ_POINTS", &
2431 description=
"Number of discrete points for the imaginary-time "// &
2432 "grid and the imaginary-frequency grid. The more points, the more "// &
2433 "precise is the calculation. Typically, 10 points are good "// &
2434 "for 0.1 eV precision of band structures and molecular energy "// &
2435 "levels, 20 points for 0.03 eV precision, "// &
2436 "and 30 points for 0.01 eV precision, see Table I in "// &
2437 "<https://doi.org/10.1021/acs.jctc.0c01282>. GW computation time "// &
2438 "increases linearly with `NUM_TIME_FREQ_POINTS`.", &
2439 usage=
"NUM_TIME_FREQ_POINTS 30", &
2445 description=
"Determines a threshold for the DBCSR based sparse "// &
2446 "multiplications. Normally, `EPS_FILTER` determines accuracy "// &
2447 "and timing of low-scaling GW calculations. (Lower filter means "// &
2448 "higher numerical precision, but higher computational cost.)", &
2449 usage=
"EPS_FILTER 1.0E-6", &
2450 default_r_val=1.0e-8_dp)
2454 CALL keyword_create(keyword, __location__, name=
"REGULARIZATION_MINIMAX", &
2455 description=
"Parameter to regularize the Fourier transformation with minimax grids. "// &
2456 "In case the parameter 0.0 is chosen, no regularization is performed.", &
2457 usage=
"REGULARIZATION_MINIMAX 1.0E-4", &
2458 default_r_val=-1.0_dp)
2462 CALL keyword_create(keyword, __location__, name=
"REGULARIZATION_RI", &
2463 description=
"Regularization applied to the GW RI fitting matrix "// &
2464 "$M_{PQ}$. A negative value selects the context-dependent default: "// &
2465 "zero for molecules and 1.0E-2 for periodic systems.", &
2466 usage=
"REGULARIZATION_RI 1.0E-4", &
2467 default_r_val=-1.0_dp)
2471 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS_RI", &
2472 description=
"The cutoff radius (in Angstrom) for the truncated "// &
2473 "Coulomb operator. The larger the cutoff radius, the faster "// &
2474 "converges the resolution of the identity (RI) with respect to the "// &
2475 "RI basis set size. Larger cutoff radius means higher computational "// &
2477 usage=
"CUTOFF_RADIUS_RI 3.0", &
2479 type_of_var=
real_t, unit_str=
"angstrom")
2483 CALL keyword_create(keyword, __location__, name=
"MEMORY_PER_PROC", &
2484 description=
"Specify the available memory per MPI process (in GB). The "// &
2485 "default value -1 means that the available memory per MPI process is detected "// &
2486 "automatically from the free memory of the node divided by the number "// &
2487 "of MPI processes running on that node; this is the recommended setting. "// &
2488 "Note: This keyword is not used for GW calculations with RI-RS, "// &
2489 "where the available memory is always detected automatically.", &
2490 usage=
"MEMORY_PER_PROC 16", &
2491 default_r_val=-1.0_dp)
2495 CALL keyword_create(keyword, __location__, name=
"APPROX_KP_EXTRAPOL", &
2496 description=
"If true, use only a 4x4 kpoint mesh for frequency "// &
2497 "points $\omega_j, j \ge 2$ (instead of a 4x4 and 6x6 k-point mesh). "// &
2498 "The k-point extrapolation of $W_{PQ}(i\omega_j,\mathbf{q})$ "// &
2499 "is done approximately from $W_{PQ}(i\omega_1,\mathbf{q})$.", &
2500 usage=
"APPROX_KP_EXTRAPOL", &
2501 default_l_val=.false., lone_keyword_l_val=.true.)
2505 CALL keyword_create(keyword, __location__, name=
"SIZE_LATTICE_SUM", &
2506 description=
"Parameter determines how many neighbor cells $\mathbf{R}$ "// &
2507 "are used for computing "// &
2508 "$V_{PQ}(\mathbf{k}) = "// &
2509 "\sum_{\mathbf{R}} e^{i\mathbf{k}\cdot\mathbf{R}}\,\langle P, "// &
2510 "\text{cell}{=}\mathbf{0}|1/r|Q,\text{cell}{=}\mathbf{R}\rangle$. "// &
2511 "Normally, parameter does not need to be touched.", &
2512 usage=
"SIZE_LATTICE_SUM 4", &
2518 keyword, __location__, name=
"KPOINTS_W", &
2519 description=
"Monkhorst-Pack k-point mesh of size N_x, N_y, N_z for calculating "// &
2520 "$W_{PQ}^\mathbf{R}=\int_\text{BZ}\frac{d\mathbf{k}}{\Omega_\text{BZ}}\, "// &
2521 "e^{-i\mathbf{k}\cdot\mathbf{R}}\,W_{PQ}(\mathbf{k})$. "// &
2522 "For non-periodic directions α, choose N_α = 1. "// &
2523 "Automatic choice of the k-point mesh for negative "// &
2524 "values, i.e. KPOINTS_W -1 -1 -1. "// &
2525 "K-point extrapolation of W is automatically switched on.", &
2526 usage=
"KPOINTS_W N_x N_y N_z", &
2527 n_var=3, type_of_var=
integer_t, default_i_vals=[-1, -1, -1])
2532 description=
"If true, use Hedin's shift in G0W0, evGW and evGW0. "// &
2533 "Details see in Li et al. JCTC 18, 7570 "// &
2534 "(2022), Figure 1. G0W0 with Hedin's shift should give "// &
2535 "similar GW eigenvalues as evGW0; at a lower "// &
2536 "computational cost.", &
2537 usage=
"HEDIN_SHIFT", &
2538 default_l_val=.false., &
2539 lone_keyword_l_val=.true.)
2543 CALL keyword_create(keyword, __location__, name=
"FREQ_MAX_FIT", &
2544 description=
"For analytic continuation, a fit on Σ(iω) is performed. "// &
2545 "This fit is then evaluated at a real frequency, Σ(ω), which is used "// &
2546 "in the quasiparticle equation "// &
2547 "$\varepsilon_{n\mathbf{k}}^{G_0W_0}= "// &
2548 "\varepsilon_{n\mathbf{k}}^\text{DFT}+\Sigma_{n\mathbf{k}} "// &
2549 "-v^\text{xc}_{n\mathbf{k}}$. The keyword FREQ_MAX_FIT "// &
2550 "determines fitting range for the self-energy Σ(iω) on "// &
2551 "imaginary axis: i*[0, ω_max] for empty orbitals/bands, i*[-ω_max,0] "// &
2552 "for occ orbitals. A smaller ω_max might lead to better numerical "// &
2553 "stability (i.e., if you observe clearly wrong GW eigenvalues/bands "// &
2554 "around HOMO/LUMO, decreasing ω_max might fix this issue). "// &
2555 "A small benchmark of ω_max is contained in Fig. 5 of "// &
2556 "J. Wilhelm et al., JCTC 12, 3623-3635 (2016). "// &
2557 "Note that we used ω_max = 1 Ha = 27.211 eV in the benchmark "// &
2558 "M. Azizi et al., PRB 109, 245101 (2024).", &
2560 usage=
"FREQ_MAX_FIT 20.0", &
2565 NULLIFY (subsection, print_key)
2567 description=
"Printing of GW restarts.", &
2568 n_keywords=2, n_subsections=1, repeats=.false.)
2570 description=
"Controls the printing of restart files "// &
2573 common_iter_levels=3)
2580 NULLIFY (subsection)
2581 CALL create_ri_rs_section(subsection)
2585 NULLIFY (subsection)
2586 CALL create_auto_ri_section(subsection)
2590 NULLIFY (subsection)
2591 CALL create_evgw0_section(subsection)
2595 END SUBROUTINE create_gw_section
2601 SUBROUTINE create_auto_ri_section(section)
2606 cpassert(.NOT.
ASSOCIATED(section))
2608 description=
"Optimizes the RI basis for non-periodic RI-RS GW "// &
2609 "calculations. The fitting target combines occupied-empty "// &
2610 "transitions and exchange products. Atom-local (AA) functions are "// &
2611 "selected first. Neighbor-pair (AB) functions are also used to fit "// &
2612 "occupied-empty transitions and exchange products. Currently only "// &
2613 "non-periodic molecules are supported.", &
2614 n_keywords=3, n_subsections=0, repeats=.false.)
2617 description=
"Ratio between the numbers of optimized RI and AO basis "// &
2618 "functions. For example, RI_AO_RATIO 3 requires an RI basis with "// &
2619 "three times as many functions as the AO basis. Compare values such "// &
2620 "as 1, 1.5, 2, 3 and 4 until the GW energies are converged. "// &
2621 "Larger values increase time and memory, but also increase the "// &
2622 "numerical accuracy.", &
2623 default_r_val=2.0_dp, usage=
"RI_AO_RATIO 2")
2626 CALL keyword_create(keyword, __location__, name=
"OCC_EMPTY_FRONTIER_ORBITAL_WINDOW", &
2627 description=
"The exchange contribution to the RI optimization "// &
2628 "objective includes GW levels within the energy window "// &
2629 "$[\epsilon_{\mathrm{HOMO}}-w,\epsilon_{\mathrm{LUMO}}+w]$. "// &
2630 "The default of 5 eV is usually sufficient, for example for "// &
2631 "GW-BSE excitations up to 10 eV.", &
2633 unit_str=
"eV", usage=
"OCC_EMPTY_FRONTIER_ORBITAL_WINDOW [eV] 5.0")
2636 CALL keyword_create(keyword, __location__, name=
"NEIGHBOR_RADIUS", &
2637 description=
"The RI basis also contains contractions of Gaussian "// &
2638 "functions centered on different atoms. An atom pair A-B is "// &
2639 "included for these contractions when its distance is smaller than "// &
2640 "NEIGHBOR_RADIUS. Larger radii increase the computational cost. "// &
2641 "Three angstrom is a reasonable value and usually does not need to "// &
2644 unit_str=
"angstrom", usage=
"NEIGHBOR_RADIUS [angstrom] 3.0")
2648 END SUBROUTINE create_auto_ri_section
2655 SUBROUTINE create_ri_rs_section(section)
2661 cpassert(.NOT.
ASSOCIATED(section))
2663 description=
"Real-Space Resolution of Identity (RI-RS) method. This "// &
2664 "approximation replaces the conventional 3-center RI integrals "// &
2665 "$(\mu\nu|P)$ by a factorized representation on an atom-centered "// &
2666 "real-space grid with points $\mathbf{r}_\ell$: "// &
2667 "$(\mu\nu|P) \approx \sum_\ell \varphi_\mu(\mathbf{r}_\ell) "// &
2668 "\varphi_\nu(\mathbf{r}_\ell) Z_{\ell P}$. "// &
2669 "The coefficients $Z_{\ell P}$ combine the numerical integration "// &
2670 "weights and the Coulomb potential of the auxiliary basis function "// &
2671 "$P$ evaluated at grid point $\mathbf{r}_\ell$. To reduce the "// &
2672 "computational cost, only grid points within the sphere $B^P$ around "// &
2673 "atom $P$ are included, i.e. the points with "// &
2674 "$|\mathbf{r}_\ell - \mathbf{R}_P| < R_c + r_P$. "// &
2675 "Here, $r_P$ is the effective radius of the most diffuse RI "// &
2676 "auxiliary Gaussian on atom $P$, at which the basis function "// &
2677 "magnitude falls below a threshold $\delta$ "// &
2678 "(currently controlled through EPS_FILTER). "// &
2679 "This locality approximation yields a sparse representation of the "// &
2680 "3-center integrals and enables reduced computational cost. "// &
2681 "See details in https://doi.org/10.1063/1.5090605.", &
2682 n_keywords=11, n_subsections=1, repeats=.false.)
2686 name=
"_SECTION_PARAMETERS_", &
2687 description=
"Controls the activation of RI-RS in the GW calculation. "// &
2688 "An empty section, &RI_RS ... &END RI_RS, switches RI-RS on with "// &
2689 "default parameters.", &
2690 usage=
"&RI_RS .TRUE.", &
2691 default_l_val=.false., &
2692 lone_keyword_l_val=.true.)
2697 description=
"Regularization parameter $\alpha$ used to stabilize "// &
2698 "the inversion of the grid-overlap matrix "// &
2699 "$D$ in the RI-RS method. "// &
2700 "See Equation (9) in https://doi.org/10.1063/1.5090605.", &
2701 usage=
"TIKHONOV 1.0E-8", &
2702 default_r_val=1.0e-08_dp)
2707 description=
"Selection of the atom-centered grid type used "// &
2708 "in RI-RS optimized by Duchemin and Blase. "// &
2709 "(1) def2-TZVPP: Available for elements up to the fourth row "// &
2710 "of the periodic table (see https://doi.org/10.1021/acs.jctc.1c00101). "// &
2711 "(2) cc-pVTZ: Available for H, C, N, and O atoms "// &
2712 "(see https://doi.org/10.1063/1.5090605). "// &
2713 "(3) User-provided grids: per-element grid files supplied by the "// &
2714 "user, read as ri_rs_grid/<Element><suffix> in the same format as "// &
2715 "the built-in sets; the suffix is _rirs.ion by default and can be "// &
2716 "changed with GRID_FILE_SUFFIX.", &
2717 usage=
"GRID_SELECT 1", &
2722 CALL keyword_create(keyword, __location__, name=
"GRID_FILE_SUFFIX", &
2723 description=
"Overrides the per-element grid file suffix used by "// &
2724 "GRID_SELECT 3; grid files are read as ri_rs_grid/<Element><suffix>.", &
2725 usage=
"GRID_FILE_SUFFIX _my-grids.ion", &
2730 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS_RL_RI", &
2731 description=
"Real-space cutoff radius (in Angstrom) for evaluating "// &
2732 "the RI-RS integration domain $B^P$. Overrides the default "// &
2733 "$R_c + r_P$, where $R_c$ is the truncated-Coulomb cutoff of the "// &
2734 "RI metric and $r_P$ the radius of the most diffuse RI auxiliary "// &
2735 "Gaussian on atom $P$.", &
2736 usage=
"CUTOFF_RADIUS_RL_RI 15.0", &
2738 type_of_var=
real_t, unit_str=
"angstrom")
2742 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS_RL_AO", &
2743 description=
"Real-space cutoff radius (in Angstrom) for evaluating "// &
2744 "the AO basis functions on the RI-RS grid. Override the default radius "// &
2745 "derived automatically from the most diffuse AO Gaussian on each atom. ", &
2746 usage=
"CUTOFF_RADIUS_RL_AO 8.0", &
2748 type_of_var=
real_t, unit_str=
"angstrom")
2752 CALL keyword_create(keyword, __location__, name=
"N_PROCS_PER_ATOM_Z_LP", &
2753 description=
"Number of MPI ranks that cooperate on one atom's "// &
2754 "Cholesky factorisation in computation of $Z_{\ell P}$ in RI-RS. "// &
2755 "Default -1 = AUTO: "// &
2756 "each atom is solved single-rank (fast BLAS) unless its dense "// &
2757 "grid-overlap matrix would exceed the available memory per process, "// &
2758 "in which case it is distributed across a rank subgroup sized "// &
2759 "automatically (ScaLAPACK). Set to 1 to force single-rank for all "// &
2760 "atoms, or > 1 to force that fixed subgroup size for all atoms.", &
2761 usage=
"N_PROCS_PER_ATOM_Z_LP 2", &
2767 description=
"Number of grid panels (batches) the real-space grid is "// &
2768 "split into for the streaming chi/W/Sigma contractions in RI-RS. More "// &
2769 "panels means lower peak memory per step but more overhead. Default 1 = a "// &
2770 "single whole-grid panel. On large cells the number of panels is "// &
2771 "automatically increased beyond the request to keep per-rank DBCSR "// &
2772 "messages under the 32-bit length limit.", &
2773 usage=
"N_PANELS 4", &
2778 CALL keyword_create(keyword, __location__, name=
"KEEP_SPARSITY_RL", &
2779 description=
"If `.TRUE.` (default), the W/V matrices in the "// &
2780 "grid-basis contractions of RI-RSwill used the sparsity pattern of the "// &
2781 "corresponding G/D matrices. "// &
2782 "Set `.FALSE.` to build W/V fully dense.", &
2783 usage=
"KEEP_SPARSITY_RL .FALSE.", &
2784 default_l_val=.true.)
2788 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS_RL_W", &
2789 description=
"Real-space truncation radius (Angstrom) for the grid-basis "// &
2790 "G operators in the RI-RS GW self-energy. "// &
2791 "Default -1.0 disables the truncation (exact grid-basis operators).", &
2792 usage=
"CUTOFF_RADIUS_RL_W 20.0", &
2794 type_of_var=
real_t, unit_str=
"angstrom")
2798 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS_G_W", &
2799 description=
"Atom-pair distance truncation radius (Angstrom) applied to "// &
2800 "the AO/RI-space operator matrices G, D, V and W themselves in the RI-RS "// &
2801 "GW contractions: matrix blocks between atoms further apart than this "// &
2802 "radius are dropped. Physically consistent with CUTOFF_RADIUS_RL_W, "// &
2803 "which truncates the grid-basis products at the same kind of range. "// &
2804 "Default -1.0 disables the truncation (exact operators).", &
2805 usage=
"CUTOFF_RADIUS_G_W 20.0", &
2807 type_of_var=
real_t, unit_str=
"angstrom")
2811 NULLIFY (subsection)
2812 CALL create_ri_rs_grid_optimization_section(subsection)
2816 END SUBROUTINE create_ri_rs_section
2822 SUBROUTINE create_ri_rs_grid_optimization_section(section)
2827 cpassert(.NOT.
ASSOCIATED(section))
2829 section, __location__, name=
"GRID_OPTIMIZATION", repeats=.false., &
2830 description=
"Optimizes RI-RS grids using small local atomic environments. For every atom "// &
2831 "in the structure, a cluster is formed from all atoms whose distance from the centre atom "// &
2832 "is smaller than CUTOFF_ATOMIC_CLUSTER. All three-centre integrals within each cluster are "// &
2833 "computed analytically and serve as exact reference values. The grid points are optimized "// &
2834 "such that the corresponding RI-RS three-centre integrals reproduce these references. "// &
2835 "For a cluster $C_I$, the normalized squared RI-RS error is "// &
2836 "$E_I = \frac{1}{N_I} \sum_{P\mu\nu \in C_I} \left|(\mu\nu|P) - "// &
2837 "\sum_{\mathbf{r}_{A\ell} \in C_I} \varphi_\mu(\mathbf{r}_{A\ell}) "// &
2838 "\varphi_\nu(\mathbf{r}_{A\ell}) Z_{A\ell P}\right|^2$. The total objective is "// &
2839 "the average over all local clusters, "// &
2840 "$E_\mathrm{loc} = \frac{1}{N_\mathrm{at}} "// &
2841 "\sum_{I=1}^{N_\mathrm{at}} E_I$. Starting from pre-tabulated atom-specific grids, "// &
2842 "the optimization adapts the grid to the chemical environment and composition of the "// &
2843 "structure and can permit substantially smaller grids. Compact grids often work well for "// &
2844 "small basis sets, but the point count specified with GRID_SIZE or N_POINT_PERCENTAGE "// &
2845 "should be tuned and converged for the chosen basis sets and chemical system.")
2848 keyword, __location__, name=
"GRID_SIZE", &
2849 description=
"Specifies how many grid points are used per atom for a given element. "// &
2850 "Repeat this keyword once for every element in the structure.", &
2851 usage=
"GRID_SIZE Si 100", type_of_var=
char_t, repeats=.true., n_var=2)
2856 keyword, __location__, name=
"N_POINT_PERCENTAGE", &
2857 description=
"The element grids are read from the .ion files selected by GRID_SELECT; "// &
2858 "GRID_FILE_SUFFIX determines user-provided filenames. From these initial grids, only "// &
2859 "N_POINT_PERCENTAGE % of each element's grid points are taken in the actual GW calculation.", &
2860 usage=
"N_POINT_PERCENTAGE 20", type_of_var=
real_t, default_r_val=-1.0_dp)
2865 keyword, __location__, name=
"CUTOFF_ATOMIC_CLUSTER", &
2866 description=
"Radius of the atom-centred cluster used to construct the local three-centre "// &
2867 "integral fitting objective. Atoms within this distance of the centre atom are included.", &
2868 usage=
"CUTOFF_ATOMIC_CLUSTER [angstrom] 3.0", type_of_var=
real_t, &
2870 unit_str=
"angstrom")
2875 keyword, __location__, name=
"MAX_ITER", &
2876 description=
"Maximum number of objective-and-gradient evaluations in the single "// &
2877 "cooperative Cartesian grid optimization.", &
2878 usage=
"MAX_ITER 100", default_i_val=100)
2882 END SUBROUTINE create_ri_rs_grid_optimization_section
2888 SUBROUTINE create_evgw0_section(section)
2893 cpassert(.NOT.
ASSOCIATED(section))
2895 description=
"Eigenvalue self-consistent GW0. The quasiparticle "// &
2896 "energies replace the Kohn-Sham eigenvalues in the Green's function "// &
2897 "and the cycle is repeated, while the screened Coulomb interaction "// &
2898 "$W$ stays at its RPA@DFT value. Only the correlation self-energy "// &
2899 "and the quasiparticle equation are recomputed per cycle; $W$, the "// &
2900 "exchange self-energy and the RI-RS grid quantities are computed "// &
2901 "once. This implementation requires RI-RS. Without this section a "// &
2902 "single-shot G0W0 calculation is performed.", &
2903 n_keywords=3, n_subsections=0, repeats=.false.)
2907 name=
"_SECTION_PARAMETERS_", &
2908 description=
"Controls the activation of evGW0. An empty section, "// &
2909 "&EVGW0 ... &END EVGW0, switches evGW0 on with default parameters.", &
2910 usage=
"&EVGW0 .TRUE.", &
2911 default_l_val=.false., &
2912 lone_keyword_l_val=.true.)
2917 description=
"Maximum number of evGW0 cycles.", &
2918 usage=
"MAX_ITER 20", &
2924 description=
"Target accuracy of the eigenvalue self-consistency. "// &
2925 "The cycle stops once the quasiparticle HOMO, the quasiparticle "// &
2926 "LUMO and the HOMO-LUMO gap all change by less than this value "// &
2927 "between two successive cycles. Unit: Hartree.", &
2928 usage=
"EPS_ITER 0.00005", &
2929 default_r_val=5.0e-5_dp)
2933 END SUBROUTINE create_evgw0_section
2941 SUBROUTINE create_soc_section(section)
2946 cpassert(.NOT.
ASSOCIATED(section))
2948 description=
"Switch on or off spin-orbit coupling. Use SOC "// &
2949 "parameters from non-local pseudopotentials as given in "// &
2950 "Hartwigsen, Goedecker, Hutter, Eq.(18), (19), "// &
2951 "<https://doi.org/10.1103/PhysRevB.58.3641>, "// &
2952 "$V_{\mu\nu}^{\mathrm{SOC}, (\alpha)} = "// &
2953 "(\hbar/2) \langle \phi_\mu | \sum_l \Delta "// &
2954 "V_l^\mathrm{SO}(\mathbf{r},\mathbf{r}') "// &
2955 "L^{(\alpha)} | \phi_\nu \rangle, "// &
2956 "\alpha = x, y, z$.", &
2957 n_keywords=1, n_subsections=1, repeats=.false.)
2961 name=
"_SECTION_PARAMETERS_", &
2962 description=
"Controls the activation of the SOC calculation.", &
2963 default_l_val=.false., &
2964 lone_keyword_l_val=.true.)
2968 CALL keyword_create(keyword, __location__, name=
"SOC_WINDOW_OCC", &
2969 description=
"Apply SOC only for states with eigenvalues below VBM "// &
2970 "in the interval $[\varepsilon_\mathrm{VBM}-E_\mathrm{window\_occ}, \ "// &
2971 "\varepsilon_\mathrm{VBM}]$. "// &
2972 "to use for large systems to prevent numerical instabilities.", &
2973 usage=
"SOC_WINDOW_OCC 5.0", &
2974 default_r_val=-1.0_dp, &
2979 CALL keyword_create(keyword, __location__, name=
"SOC_WINDOW_VIRT", &
2980 description=
"Apply SOC only for states with eigenvalues above CBM "// &
2981 "in the interval $[\varepsilon_\mathrm{CBM},\ "// &
2982 "\varepsilon_\mathrm{CBM}+E_\mathrm{window\_virt}]$, "// &
2983 "to use for large systems to prevent numerical instabilities.", &
2984 usage=
"SOC_WINDOW_VIRT 5.0", &
2985 default_r_val=-1.0_dp, &
2990 CALL keyword_create(keyword, __location__, name=
"SOC_WINDOW_SMEARING", &
2991 description=
"Width of the Fermi-like smoothing at the SOC energy-window edge. "// &
2992 "Default reproduces the value of 1 eV. "// &
2993 "only effective when at least one SOC window is active.", &
2994 usage=
"SOC_WINDOW_SMEARING 1.0", &
3000 END SUBROUTINE create_soc_section
3008 SUBROUTINE create_dos_section(section)
3014 cpassert(.NOT.
ASSOCIATED(section))
3016 description=
"Parameters needed to calculate the density of states "// &
3017 "(DOS) and the projected density of states (PDOS).", &
3018 n_keywords=1, n_subsections=1, repeats=.false.)
3022 name=
"_SECTION_PARAMETERS_", &
3023 description=
"Controls the activation of the DOS calculation.", &
3024 default_l_val=.false., &
3025 lone_keyword_l_val=.true.)
3029 CALL keyword_create(keyword, __location__, name=
"ENERGY_WINDOW", &
3030 description=
"Print DOS and PDOS in the energy window "// &
3031 "$[\varepsilon_\mathrm{VBM}-E_\mathrm{window}/2, "// &
3032 "\varepsilon_\mathrm{CBM}+E_\mathrm{window}/2]$,"// &
3033 " where VBM is the valence "// &
3034 "band maximum (or highest occupied molecular orbital, HOMO, for "// &
3035 "molecules) and CBM the conduction band minimum (or lowest "// &
3036 "unoccupied molecular orbital, LUMO, for molecules).", &
3037 usage=
"ENERGY_WINDOW 5.0", &
3044 description=
"Resolution of the energy E when computing the $\rho(E)$.", &
3045 usage=
"ENERGY_STEP 0.01", &
3052 description=
"Broadening α in Gaussians used in the DOS; "// &
3053 "$\rho(E) = \sum_n \exp(((E-\varepsilon_n)/\alpha)^2)/("// &
3054 " \sqrt{2\pi} \alpha)$.", &
3055 usage=
"BROADENING 0.01", &
3062 keyword, __location__, name=
"KPOINTS", &
3063 description=
"Monkhorst-Pack k-point mesh of size N_x, N_y, N_z for calculating "// &
3064 "the density of states (DOS). In GW, the KPOINT_DOS mesh is thus used as k-point "// &
3065 "mesh for the self-energy. For non-periodic directions α, choose N_α = 1. "// &
3066 "Automatic choice of the k-point mesh for negative "// &
3067 "values, i.e. KPOINTS_DOS -1 -1 -1 (automatic choice: N_α = 1 in non-periodic "// &
3068 "direction, 8 k-points in periodic direction). If you like to compute a "// &
3069 "band structure along a k-path, you can specify the k-path in "// &
3071 usage=
"KPOINTS N_x N_y N_z", &
3072 n_var=3, type_of_var=
integer_t, default_i_vals=[-1, -1, -1])
3076 NULLIFY (subsection)
3077 CALL create_ldos_section(subsection)
3081 END SUBROUTINE create_dos_section
3087 SUBROUTINE create_ldos_section(section)
3092 cpassert(.NOT.
ASSOCIATED(section))
3094 description=
"Parameters needed to calculate the local density "// &
3095 "of states (LDOS). "// &
3096 "The LDOS is computed as $\rho(\mathbf{r},E) = "// &
3097 "\sum\limits_{n,\mathbf{k}}"// &
3098 " |\psi_{n\mathbf{k}}(r)|^2\, w_\mathbf{k}\, g(E-\varepsilon_{n\mathbf{k}})$ "// &
3099 "using the Gaussian weight function "// &
3100 "$g(x) = \exp(x^2/\alpha^2)/(\sqrt{2\pi}\alpha)$, $\alpha$ is the broadening "// &
3101 "from the &DOS section, and the k-point weight "// &
3102 "$w_\mathbf{k}$. The k-mesh is taken from the &DOS section.", &
3103 n_keywords=2, repeats=.false.)
3107 name=
"_SECTION_PARAMETERS_", &
3108 description=
"Activates the local VBM CBM gap calculation.", &
3109 default_l_val=.false., &
3110 lone_keyword_l_val=.true.)
3115 description=
"Defines whether the LDOS is integrated along a "// &
3116 "coordinate. As an example, for INTEGRATION Z, the LDOS "// &
3117 "$\rho(x,y,E) = \int dz\, \rho(x,y,z,E)$ is computed.", &
3118 usage=
"INTEGRATION Z", &
3119 enum_c_vals=
s2a(
"X",
"Y",
"Z",
"NONE"), &
3121 enum_desc=
s2a(
"Integrate over x coordinate (not yet implemented).", &
3122 "Integrate over y coordinate (not yet implemented).", &
3123 "Integrate over z coordinate.", &
3124 "No integration, print cube file as function "// &
3125 "of x,y,z (not yet implemented)."), &
3131 keyword, __location__, name=
"BIN_MESH", &
3132 description=
"Mesh of size n x m for binning the space coordinates x and y of "// &
3133 "the LDOS $\rho(x,y,E)$. If -1, no binning is performed and the "// &
3134 "fine x, y resolution of the electron density from SCF is used.", &
3135 usage=
"BIN_MESH n m", &
3136 n_var=2, type_of_var=
integer_t, default_i_vals=[10, 10])
3140 END SUBROUTINE create_ldos_section
3148 SUBROUTINE create_tipscan_section(section)
3153 cpassert(.NOT.
ASSOCIATED(section))
3155 description=
"Parameters needed to set up a Tip Scan. "// &
3156 "Needs external definition of tip induced field.", &
3157 n_keywords=1, n_subsections=1, repeats=.false.)
3162 name=
"_SECTION_PARAMETERS_", &
3163 description=
"Controls the activation of the Tip Scan procedure", &
3164 default_l_val=.false., &
3165 lone_keyword_l_val=.true.)
3169 CALL keyword_create(keyword, __location__, name=
"SCAN_DIRECTION", &
3170 description=
"Defines scan direction and scan type(line, plane).", &
3171 usage=
"SCAN_DIRECTION XY", &
3172 enum_c_vals=
s2a(
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ",
"XYZ"), &
3178 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
3179 description=
"The reference point to define the absolute position of the scan. ", &
3180 usage=
"REFERENCE_POINT 0.0 0.0 1.0", &
3181 n_var=3, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp], type_of_var=
real_t, &
3182 unit_str=
"angstrom")
3187 description=
"Number of points calculated for each scan direction.", &
3188 usage=
"SCAN_POINTS 20 20", &
3194 description=
"Step size for each scan direction.", &
3195 usage=
"SCAN_STEP 0.01 0.01", &
3196 n_var=-1, type_of_var=
real_t, unit_str=
"angstrom")
3200 CALL keyword_create(keyword, __location__, name=
"TIP_FILENAME", &
3201 description=
"Filename of tip potential defined in cube file format.", &
3202 usage=
"TIP_FILENAME <filename>", &
3207 END SUBROUTINE create_tipscan_section
3215 SUBROUTINE create_floquet_section(section)
3221 description=
"Parameters controlling the calculation of the "// &
3222 "Floquet band structure and Quasi-energies of a system driven "// &
3223 "by a periodic monochromatic electric field with any arbitrary "// &
3224 "polarisation state.", &
3225 n_keywords=1, n_subsections=0, repeats=.false.)
3229 description=
"Electric field amplitude of the monochromatic light.", &
3230 usage=
"AMPLITUDE [Vm-1] 1.0E9", n_var=1, type_of_var=
real_t, &
3231 unit_str=
"Vm-1", default_r_val=0.0_dp)
3236 description=
"Frequency of the electric field for Floquet calculations "// &
3237 "expressed in terms of the energy of a photon in eV.", &
3238 usage=
"FREQUENCY 1.5", unit_str=
"eV", n_var=1, type_of_var=
real_t, &
3243 CALL keyword_create(keyword, __location__, name=
"POLARISATION", &
3244 description=
"Polarisation vector of the input light. The "// &
3245 "amplitude in each direction is the product of the AMPLITUDE "// &
3246 "and the POLARISATION vector component. Eg. for light polarized "// &
3247 "in the x direction, use 1 0 0. For left-circularly polarized "// &
3248 "light travelling in the +z direction use 1 1 0 and set "// &
3249 "PHASE_OFFSET 0 0.5 0 for a +Ï€/2 offset", &
3250 usage=
"POLARISATION 0.0 0.0 1.0", &
3251 default_r_vals=[0.0_dp, 0.0_dp, 1.0_dp])
3255 CALL keyword_create(keyword, __location__, name=
"PHASE_OFFSETS", &
3256 description=
"Phase offset of the electric field in the "// &
3257 "x, y, and z directions given in multiples of π. For "// &
3258 "linearly polarized light, use 0 0 0 and for left-circularly "// &
3259 "polarized light travelling in the +z direction use "// &
3260 "PHASE_OFFSET 0.0 0.5 0 ", &
3261 usage=
"PHASE_OFFSETS 0.5 0 0", &
3262 default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp])
3266 CALL keyword_create(keyword, __location__, name=
"MAX_FLOQUET_INDEX", &
3267 description=
"Largest absolute Floquet index up to which "// &
3268 "Floquet Hamiltonian is truncated. Use a larger value to "// &
3269 "ensure convergence at higher computational cost and a "// &
3270 "smaller value for faster computation. EPS_FLOQUET checks "// &
3271 "to ensure that the error due to truncation is small.", &
3272 usage=
"MAX_FLOQUET_INDEX 50", &
3278 description=
"Threshold on the error due to truncation of "// &
3279 "the Floquet Hamiltonian. Used to verify that MAX_FLOQUET_INDEX "// &
3280 "is large enough that truncation errors are small. "// &
3281 "If negative, the check is removed (not recommended).", &
3282 usage=
"EPS_FLOQUET 1.e-10", default_r_val=1.0e-10_dp)
3286 CALL keyword_create(keyword, __location__, name=
"ENERGY_WINDOW", &
3287 description=
"Half-width of the energy range, in eV, centred "// &
3288 "on the Fermi level, over which the Floquet spectral "// &
3289 "function is evaluated.", &
3290 usage=
"ENERGY_WINDOW 5.0", &
3297 description=
"Resolution of the energy E used to compute the "// &
3298 "spectral function within the energy window.", &
3299 usage=
"ENERGY_STEP 0.01", &
3306 description=
"Lorentzian broadening applied to the peaks of the "// &
3307 "Floquet spectral function.", &
3308 usage=
"BROADENING 0.02", &
3315 description=
"Electronic temperature (in K) of the wide-band fermion "// &
3316 "bath used to weight the Floquet DOS by Fermi-Dirac occupations, adding "// &
3317 "an occupied spectral-weight column f(E)*A(E) to the DOS file. If "// &
3318 "negative (default), that column is not written.", &
3319 usage=
"TEMPERATURE 300.0", default_r_val=-1.0_dp)
3323 CALL keyword_create(keyword, __location__, name=
"FLOQUET_DOS_FILE_NAME", &
3324 description=
"File name used for the Floquet spectral function.", &
3325 usage=
"FLOQUET_DOS_FILE_NAME FLOQUET_DOS", &
3326 default_lc_val=
"FLOQUET_DOS")
3330 CALL keyword_create(keyword, __location__, name=
"QUASI_ENERGIES_FILE_NAME", &
3331 description=
"File name used for the Floquet quasi-energies.", &
3332 usage=
"QUASI_ENERGIES_FILE_NAME QUASI_ENERGIES", &
3333 default_lc_val=
"QUASI_ENERGIES")
3337 CALL keyword_create(keyword, __location__, name=
"FLOQUET_BS_FILE_NAME", &
3338 description=
"File name used for the Floquet m=0 (central-sector) "// &
3339 "band structure.", &
3340 usage=
"FLOQUET_BS_FILE_NAME FLOQUET_BANDSTRUCTURE", &
3341 default_lc_val=
"FLOQUET_BANDSTRUCTURE")
3345 CALL keyword_create(keyword, __location__, name=
"MEM_FILL_FRACTION", &
3346 description=
"Fraction of the computation memory that may be filled "// &
3347 "by Floquet Hamiltonian matrices. Reduce if process gets OOMP killed.", &
3348 usage=
"MEM_FILL_FRACTION 0.5", default_r_val=0.8_dp)
3352 END SUBROUTINE create_floquet_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 kuhneheskeprodan2020
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.