72#include "./base/base_uses.f90"
77 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
78 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_properties_dft'
95 cpassert(.NOT.
ASSOCIATED(section))
97 description=
"This section is used to set up the PROPERTIES calculation.", &
98 n_keywords=0, n_subsections=6, repeats=.false.)
100 NULLIFY (subsection, keyword)
102 CALL create_linres_section(subsection, create_subsections=.true.)
106 CALL create_et_coupling_section(subsection)
119 description=
"This section is used to print the density derived atomic point charges. "// &
120 "The fit of the charges is controlled through the DENSITY_FITTING section", &
122 CALL keyword_create(keyword, __location__, name=
"TYPE_OF_DENSITY", &
123 description=
"Specifies the type of density used for the fitting", &
124 usage=
"TYPE_OF_DENSITY (FULL|SPIN)", &
125 enum_c_vals=
s2a(
"FULL",
"SPIN"), &
127 enum_desc=
s2a(
"Full density",
"Spin density"), &
134 CALL create_tddfpt2_section(subsection)
138 CALL create_rixs_section(subsection)
142 CALL create_kubo_transport_section(subsection)
146 CALL create_bandstructure_section(subsection)
150 CALL create_tipscan_section(subsection)
160 SUBROUTINE create_kubo_transport_section(section)
164 cpassert(.NOT.
ASSOCIATED(section))
168 CALL section_create(section, __location__, name=
"KUBO_TRANSPORT", &
169 description=
"Finite-volume Kubo-Greenwood transport coefficients from the "// &
170 "converged Quickstep Hamiltonian, overlap matrix, and atomic geometry. "// &
171 "For one- and two-dimensional cells, transport is projected onto the "// &
172 "periodic subspace and normalized by the periodic length or area.", &
173 n_keywords=8, n_subsections=0, repeats=.false., &
176 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
177 description=
"Controls the activation of the Kubo transport calculation.", &
178 default_l_val=.false., &
179 lone_keyword_l_val=.true.)
184 description=
"Transport algorithm. DIAGONALIZATION evaluates the finite-volume "// &
185 "Kubo-Greenwood expression from the explicit spectrum. TD and CHEBYSHEV are "// &
186 "reserved for future diagonalization-free implementations.", &
187 usage=
"METHOD DIAGONALIZATION", &
188 n_var=1, type_of_var=
char_t, default_c_val=
"DIAGONALIZATION")
193 description=
"Electronic temperature used in the Fermi operator.", &
194 usage=
"TEMPERATURE 1.0", &
196 n_var=1, type_of_var=
real_t, unit_str=
"K")
201 description=
"Dissipation/broadening parameter in the finite-temperature "// &
203 usage=
"DISSIPATION 300.0", &
205 n_var=1, type_of_var=
real_t, unit_str=
"K")
210 description=
"Absolute chemical-potential range. The default 0 0 uses the "// &
211 "full eigenvalue range of the finite-volume Hamiltonian.", &
212 usage=
"ENERGY_RANGE -0.5 0.5", &
213 default_r_vals=[0.0_dp, 0.0_dp], n_var=2, type_of_var=
real_t, &
219 description=
"Optional fixed neutral chemical potential. If omitted, the "// &
220 "neutral point is found from the eigenvalue spectrum and total electron count.", &
221 usage=
"NEUTRAL_MU 0.245467619658419", &
222 n_var=1, type_of_var=
real_t, unit_str=
"hartree")
227 description=
"Number of chemical-potential grid points.", &
229 default_i_val=200, n_var=1, type_of_var=
integer_t)
234 description=
"Number of grid points used to locate the neutral chemical potential.", &
235 usage=
"NEUTRAL_GRID 10000", &
236 default_i_val=10000, n_var=1, type_of_var=
integer_t)
240 END SUBROUTINE create_kubo_transport_section
247 SUBROUTINE create_rixs_section(section)
252 cpassert(.NOT.
ASSOCIATED(section))
254 NULLIFY (keyword, subsection, print_key)
257 description=
"Resonant Inelastic Xray Scattering using XAS_TDP and TDDFPT.", &
258 n_keywords=1, n_subsections=3, repeats=.false., &
262 name=
"_SECTION_PARAMETERS_", &
263 description=
"Controls the activation of the RIXS procedure", &
264 default_l_val=.false., &
265 lone_keyword_l_val=.true.)
270 description=
"Number of core excited states to be used in the RIXS "// &
271 "calculation. Restricting this number reduces computational cost. "// &
272 "-1 means all available core states will be used.", &
273 n_var=1, type_of_var=
integer_t, default_i_val=-1)
277 CALL keyword_create(keyword, __location__, name=
"VALENCE_STATES", &
278 description=
"Number of valence excited states to be used in the RIXS "// &
279 "calculation. Restricting this number reduces computational cost, but "// &
280 "removes spectral features corresponding to higher excitations. Should be "// &
281 "used with care. -1 means all available valence states will be used.", &
282 n_var=1, type_of_var=
integer_t, default_i_val=-1)
286 CALL create_tddfpt2_section(subsection)
294 CALL section_create(subsection, __location__,
"PRINT",
"Controls the printing of information "// &
295 "during RIXS calculations", repeats=.false.)
298 description=
"Controles the printing of the RIXS spectrum "// &
301 common_iter_levels=3)
308 END SUBROUTINE create_rixs_section
319 SUBROUTINE create_linres_section(section, create_subsections, default_set_tdlr)
321 LOGICAL,
INTENT(in) :: create_subsections
322 LOGICAL,
INTENT(IN),
OPTIONAL :: default_set_tdlr
324 INTEGER :: def_max_iter, def_precond
325 REAL(kind=
dp) :: def_egap, def_eps, def_eps_filter
329 CHARACTER(len=256) :: desc
331 NULLIFY (keyword, print_key)
333 IF (
PRESENT(default_set_tdlr))
THEN
336 def_eps_filter = 1.0e-15_dp
339 desc =
"Controls the parameters of the LINRES force calculations for excited states."
343 def_eps_filter = 0.0_dp
346 desc =
"The linear response is used to calculate one of the following properties: nmr, epr, raman, ..."
349 cpassert(.NOT.
ASSOCIATED(section))
351 description=desc, n_keywords=5, n_subsections=2, repeats=.false., &
355 description=
"target accuracy for the convergence of the conjugate gradient.", &
356 usage=
"EPS 1.e-6", default_r_val=def_eps)
361 description=
"Filter threshold for response density matrix.", &
362 usage=
"EPS_FILTER 1.e-8", default_r_val=def_eps_filter)
367 description=
"Maximum number of conjugate gradient iteration to be performed for one optimization.", &
368 usage=
"MAX_ITER 200", default_i_val=def_max_iter)
372 CALL keyword_create(keyword, __location__, name=
"RESTART_EVERY", &
373 description=
"Restart the conjugate gradient after the specified number of iterations.", &
374 usage=
"RESTART_EVERY 200", default_i_val=50)
379 keyword, __location__, name=
"PRECONDITIONER", &
380 description=
"Type of preconditioner to be used with all minimization schemes. "// &
381 "They differ in effectiveness, cost of construction, cost of application. "// &
382 "Properly preconditioned minimization can be orders of magnitude faster than doing nothing.", &
383 usage=
"PRECONDITIONER FULL_ALL", &
384 default_i_val=def_precond, &
385 enum_c_vals=
s2a(
"FULL_ALL",
"FULL_SINGLE_INVERSE",
"FULL_SINGLE",
"FULL_KINETIC",
"FULL_S_INVERSE", &
387 enum_desc=
s2a(
"Most effective state selective preconditioner based on diagonalization, "// &
388 "requires the ENERGY_GAP parameter to be an underestimate of the HOMO-LUMO gap. "// &
389 "This preconditioner is recommended for almost all systems, except very large systems where "// &
390 "make_preconditioner would dominate the total computational cost.", &
391 "Based on H-eS cholesky inversion, similar to FULL_SINGLE in preconditioning efficiency "// &
392 "but cheaper to construct, "// &
393 "might be somewhat less robust. Recommended for large systems.", &
394 "Based on H-eS diagonalisation, not as good as FULL_ALL, but somewhat cheaper to apply. ", &
395 "Cholesky inversion of S and T, fast construction, robust, and relatively good, "// &
396 "use for very large systems.", &
397 "Cholesky inversion of S, not as good as FULL_KINETIC, yet equally expensive.", &
398 "skip preconditioning"), &
405 description=
"Energy gap estimate [a.u.] for preconditioning", &
406 usage=
"ENERGY_GAP 0.1", &
407 default_r_val=def_egap)
412 description=
"Perform a linear response calculation every N-th step for MD run", &
413 usage=
"EVERY_N_STEP 50", default_i_val=1)
418 description=
"Restart the response calculation if the restart file exists", &
420 default_l_val=.false., lone_keyword_l_val=.true.)
424 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
425 variants=[
"RESTART_FILE_NAME"], &
426 description=
"Root of the file names where to read the response functions from "// &
427 "which to restart the calculation of the linear response", &
428 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
433 IF (create_subsections)
THEN
440 CALL create_current_section(subsection)
444 CALL create_nmr_section(subsection)
448 CALL create_spin_spin_section(subsection)
452 CALL create_epr_section(subsection)
456 CALL create_polarizability_section(subsection)
460 CALL create_dcdr_section(subsection)
464 CALL create_vcd_section(subsection)
469 description=
"printing of information during the linear response calculation", &
473 print_key, __location__,
"program_run_info", &
474 description=
"Controls the printing of basic iteration information during the LINRES calculation", &
480 description=
"Controls the dumping of restart file of the response wavefunction. "// &
481 "For each set of response functions, i.e. for each perturbation, "// &
482 "one different restart file is dumped. These restart files should be "// &
483 "employed only to restart the same type of LINRES calculation, "// &
484 "i.e. with the same perturbation.", &
495 END SUBROUTINE create_linres_section
503 SUBROUTINE create_dcdr_section(section)
512 NULLIFY (keyword, print_key, subsection)
514 cpassert(.NOT.
ASSOCIATED(section))
516 IF (.NOT. failure)
THEN
518 description=
"Compute analytical gradients the dipole moments.", &
519 n_keywords=50, n_subsections=1, repeats=.false.)
521 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
522 description=
"controls the activation of the APT calculation", &
524 default_l_val=.false., &
525 lone_keyword_l_val=.true.)
529 CALL keyword_create(keyword, __location__, name=
"LIST_OF_ATOMS", &
530 description=
"Specifies a list of atoms.", &
531 usage=
"LIST_OF_ATOMS {integer} {integer} .. {integer}", repeats=.true., &
536 CALL keyword_create(keyword, __location__, name=
"DISTRIBUTED_ORIGIN", &
537 variants=[
"DO_GAUGE"], &
538 description=
"Use the distributed origin (DO) gauge?", &
539 usage=
"DISTRIBUTED_ORIGIN T", &
540 default_l_val=.false., lone_keyword_l_val=.true.)
544 CALL keyword_create(keyword, __location__, name=
"ORBITAL_CENTER", &
545 description=
"The orbital center.", &
546 usage=
"ORBITAL_CENTER WANNIER", &
548 enum_c_vals=
s2a(
"WANNIER",
"COMMON",
"ATOM",
"BOX"), &
549 enum_desc=
s2a(
"Use the Wannier centers.", &
550 "Use a common center (works only for an isolate molecule).", &
551 "Use the atoms as center.", &
559 description=
"Gauge origin of the velocity gauge factor.", &
560 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
561 enum_desc=
s2a(
"Use Center of Mass", &
562 "Use Center of Atomic Charges", &
563 "Use User-defined Point", &
564 "Use Origin of Coordinate System"), &
573 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
574 description=
"User-defined reference point of the velocity gauge factor.", &
575 usage=
"REFERENCE_POINT x y z", &
576 repeats=.false., n_var=3, type_of_var=
real_t, unit_str=
'bohr')
580 CALL keyword_create(keyword, __location__, name=
"Z_MATRIX_METHOD", &
581 description=
"Use Z_matrix method to solve the response equation", &
582 usage=
"Z_MATRIX_METHOD T", &
583 default_l_val=.false., lone_keyword_l_val=.true.)
588 description=
"Use numerical differentiation to compute the APT, "// &
589 "switches off the calculation of dcdr analytical derivatives. "// &
590 "Requires RUN_TYPE = ENERGY_FORCE or MD.", &
592 default_l_val=.false., lone_keyword_l_val=.true.)
597 description=
"Electric field strength (atomic units) to use for finite differences", &
601 default_r_val=0.0003_dp, &
602 usage=
"APT_FD_DE 1.0E-4")
606 CALL keyword_create(keyword, __location__, name=
"APT_FD_METHOD", &
607 description=
"Numerical differentiation method", &
608 usage=
"APT_FD_METHOD FD", &
611 enum_c_vals=
s2a(
"2PNT"), &
614 enum_desc=
s2a(
"Symmetric two-point differences."), &
622 description=
"print results of the magnetic dipole moment calculation", &
626 description=
"Controls the printing of the electric dipole gradient", &
641 END SUBROUTINE create_dcdr_section
649 SUBROUTINE create_vcd_section(section)
656 NULLIFY (keyword, print_key, subsection)
658 cpassert(.NOT.
ASSOCIATED(section))
661 description=
"Carry out a VCD calculation.", &
662 n_keywords=50, n_subsections=1, repeats=.false.)
664 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
665 description=
"controls the activation of the APT/AAT calculation", &
667 default_l_val=.false., &
668 lone_keyword_l_val=.true.)
672 CALL keyword_create(keyword, __location__, name=
"LIST_OF_ATOMS", &
673 description=
"Specifies a list of atoms.", &
674 usage=
"LIST_OF_ATOMS {integer} {integer} .. {integer}", repeats=.true., &
679 CALL keyword_create(keyword, __location__, name=
"DISTRIBUTED_ORIGIN", &
680 variants=[
"DO_GAUGE"], &
681 description=
"Use the distributed origin (DO) gauge?", &
682 usage=
"DISTRIBUTED_ORIGIN T", &
683 default_l_val=.false., lone_keyword_l_val=.true.)
687 CALL keyword_create(keyword, __location__, name=
"ORIGIN_DEPENDENT_MFP", &
688 description=
"Use the origin dependent MFP operator.", &
689 usage=
"ORIGIN_DEPENDENT_MFP T", &
690 default_l_val=.false., lone_keyword_l_val=.true.)
694 CALL keyword_create(keyword, __location__, name=
"ORBITAL_CENTER", &
695 description=
"The orbital center.", &
696 usage=
"ORBITAL_CENTER WANNIER", &
698 enum_c_vals=
s2a(
"WANNIER",
"COMMON",
"ATOM",
"BOX"), &
699 enum_desc=
s2a(
"Use the Wannier centers.", &
700 "Use a common center (works only for an isolate molecule).", &
701 "Use the atoms as center.", &
709 CALL keyword_create(keyword, __location__, name=
"MAGNETIC_ORIGIN", &
710 description=
"Gauge origin of the magnetic dipole operator.", &
711 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
712 enum_desc=
s2a(
"Use Center of Mass", &
713 "Use Center of Atomic Charges", &
714 "Use User-defined Point", &
715 "Use Origin of Coordinate System"), &
724 CALL keyword_create(keyword, __location__, name=
"MAGNETIC_ORIGIN_REFERENCE", &
725 description=
"User-defined reference point of the magnetic dipole operator.", &
726 usage=
"MAGNETIC_ORIGIN_REFERENCE x y z", &
727 repeats=.false., n_var=3, type_of_var=
real_t, unit_str=
'bohr')
732 CALL keyword_create(keyword, __location__, name=
"SPATIAL_ORIGIN", &
733 description=
"Gauge origin of the velocity gauge factor/spatial origin.", &
734 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
735 enum_desc=
s2a(
"Use Center of Mass", &
736 "Use Center of Atomic Charges", &
737 "Use User-defined Point", &
738 "Use Origin of Coordinate System"), &
747 CALL keyword_create(keyword, __location__, name=
"SPATIAL_ORIGIN_REFERENCE", &
748 description=
"User-defined reference point of the velocity gauge factor/spatial origin.", &
749 usage=
"SPATIAL_ORIGIN_REFERENCE x y z", &
750 repeats=.false., n_var=3, type_of_var=
real_t, unit_str=
'bohr')
756 description=
"print results of the magnetic dipole moment calculation", &
760 description=
"Controls the printing of the APTs and AATs", &
773 END SUBROUTINE create_vcd_section
782 SUBROUTINE create_current_section(section)
788 NULLIFY (keyword, print_key, subsection)
790 cpassert(.NOT.
ASSOCIATED(section))
792 description=
"The induced current density is calculated by DFPT.", &
793 n_keywords=4, n_subsections=1, repeats=.false., &
796 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
797 description=
"controls the activation of the induced current calculation", &
798 usage=
"&CURRENT T", &
799 default_l_val=.false., &
800 lone_keyword_l_val=.true.)
805 description=
"The gauge used to compute the induced current within GAPW.", &
808 enum_c_vals=
s2a(
"R",
"R_AND_STEP_FUNCTION",
"ATOM"), &
809 enum_desc=
s2a(
"Position gauge (doesnt work well).", &
810 "Position and step function for the soft and the local parts, respectively.", &
816 CALL keyword_create(keyword, __location__, name=
"GAUGE_ATOM_RADIUS", &
817 description=
"Build the gauge=atom using only the atoms within this radius.", &
818 usage=
"GAUGE_ATOM_RADIUS 10.0", &
825 CALL keyword_create(keyword, __location__, name=
"USE_OLD_GAUGE_ATOM", &
826 description=
"Use the old way to compute the gauge.", &
827 usage=
"USE_OLD_GAUGE_ATOM T", &
828 default_l_val=.true., lone_keyword_l_val=.true.)
832 CALL keyword_create(keyword, __location__, name=
"ORBITAL_CENTER", &
833 description=
"The orbital center.", &
834 usage=
"ORBITAL_CENTER WANNIER", &
836 enum_c_vals=
s2a(
"WANNIER",
"COMMON",
"ATOM",
"BOX"), &
837 enum_desc=
s2a(
"Use the Wannier centers.", &
838 "Use a common center (works only for an isolate molecule).", &
839 "Use the atoms as center.", &
846 CALL keyword_create(keyword, __location__, name=
"COMMON_CENTER", &
847 description=
"The common center ", usage=
"COMMON_CENTER 0.0 1.0 0.0", &
848 n_var=3, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp], type_of_var=
real_t, &
854 description=
"How many boxes along each directions ", usage=
"NBOX 6 6 5", &
855 n_var=3, default_i_vals=[4, 4, 4], type_of_var=
integer_t)
860 description=
"Calculate the succeptibility correction to the shift with PBC", &
862 default_l_val=.false., lone_keyword_l_val=.true.)
866 CALL keyword_create(keyword, __location__, name=
"FORCE_NO_FULL", &
867 description=
"Avoid the calculation of the state dependent perturbation term, "// &
868 "even if the orbital centers are set at Wannier centers or at Atom centers", &
869 usage=
"FORCE_NO_FULL T", &
870 default_l_val=.false., lone_keyword_l_val=.true.)
874 CALL keyword_create(keyword, __location__, name=
"SELECTED_STATES_ON_ATOM_LIST", &
875 description=
"Indexes of the atoms for selecting"// &
876 " the states to be used for the response calculations.", &
877 usage=
"SELECTED_STATES_ON_ATOM_LIST 1 2 10", &
878 n_var=-1, type_of_var=
integer_t, repeats=.true.)
882 CALL keyword_create(keyword, __location__, name=
"SELECTED_STATES_ATOM_RADIUS", &
883 description=
"Select all the states included in the given radius around each atoms "// &
884 "in SELECTED_STATES_ON_ATOM_LIST.", &
885 usage=
"SELECTED_STATES_ATOM_RADIUS 2.0", &
892 CALL keyword_create(keyword, __location__, name=
"RESTART_CURRENT", &
893 description=
"Restart the induced current density calculation"// &
894 " from a previous run (not working yet).", &
895 usage=
"RESTART_CURRENT", default_l_val=.false., &
896 lone_keyword_l_val=.true.)
902 description=
"print results of induced current density calculation", &
906 description=
"Controls the printing of the induced current density (not working yet).", &
909 description=
"The stride (X,Y,Z) used to write the cube file "// &
910 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
911 " 1 number valid for all components (not working yet).", &
912 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
916 description=
"append the cube files when they already exist", &
917 default_l_val=.false., lone_keyword_l_val=.true.)
925 description=
"Controls the printing of the response functions (not working yet).", &
928 description=
"The stride (X,Y,Z) used to write the cube file "// &
929 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
930 " 1 number valid for all components (not working yet).", &
931 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
935 CALL keyword_create(keyword, __location__, name=
"CUBES_LU_BOUNDS", &
936 variants=[
"CUBES_LU"], &
937 description=
"The lower and upper index of the states to be printed as cube (not working yet).", &
938 usage=
"CUBES_LU_BOUNDS integer integer", &
939 n_var=2, default_i_vals=[0, -2], type_of_var=
integer_t)
944 description=
"Indexes of the states to be printed as cube files "// &
945 "This keyword can be repeated several times "// &
946 "(useful if you have to specify many indexes) (not working yet).", &
947 usage=
"CUBES_LIST 1 2", &
948 n_var=-1, type_of_var=
integer_t, repeats=.true.)
952 description=
"append the cube files when they already exist", &
953 default_l_val=.false., lone_keyword_l_val=.true.)
968 END SUBROUTINE create_current_section
978 SUBROUTINE create_nmr_section(section)
984 NULLIFY (keyword, print_key, subsection)
986 cpassert(.NOT.
ASSOCIATED(section))
988 description=
"The chemical shift is calculated by DFPT.", &
989 n_keywords=5, n_subsections=1, repeats=.false., &
992 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
993 description=
"controls the activation of the nmr calculation", &
995 default_l_val=.false., &
996 lone_keyword_l_val=.true.)
1000 CALL keyword_create(keyword, __location__, name=
"INTERPOLATE_SHIFT", &
1001 description=
"Calculate the soft part of the chemical shift by interpolation ", &
1002 usage=
"INTERPOLATE_SHIFT T", &
1003 default_l_val=.false., lone_keyword_l_val=.true.)
1008 description=
"Calculate the chemical shift in a set of points"// &
1009 " given from an external file", usage=
"NICS", &
1010 default_l_val=.false., lone_keyword_l_val=.true.)
1014 CALL keyword_create(keyword, __location__, name=
"NICS_FILE_NAME", &
1015 description=
"Name of the file with the NICS points coordinates", &
1016 usage=
"NICS_FILE_NAME nics_file", &
1017 default_lc_val=
"nics_file")
1022 description=
"Restart the NMR calculation from a previous run (NOT WORKING YET)", &
1023 usage=
"RESTART_NMR", default_l_val=.false., &
1024 lone_keyword_l_val=.true.)
1028 CALL keyword_create(keyword, __location__, name=
"SHIFT_GAPW_RADIUS", &
1029 description=
"While computing the local part of the shift (GAPW), "// &
1030 "the integration is restricted to nuclei that are within this radius.", &
1031 usage=
"SHIFT_GAPW_RADIUS 20.0", &
1034 unit_str=
"angstrom")
1038 NULLIFY (subsection)
1040 description=
"print results of nmr calculation", &
1044 description=
"Controls the printing of the response functions ", &
1047 description=
"The stride (X,Y,Z) used to write the cube file "// &
1048 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1049 " 1 number valid for all components.", &
1050 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1054 CALL keyword_create(keyword, __location__, name=
"CUBES_LU_BOUNDS", &
1055 variants=[
"CUBES_LU"], &
1056 description=
"The lower and upper index of the states to be printed as cube", &
1057 usage=
"CUBES_LU_BOUNDS integer integer", &
1058 n_var=2, default_i_vals=[0, -2], type_of_var=
integer_t)
1063 description=
"Indexes of the states to be printed as cube files "// &
1064 "This keyword can be repeated several times "// &
1065 "(useful if you have to specify many indexes).", &
1066 usage=
"CUBES_LIST 1 2", &
1067 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1071 description=
"append the cube files when they already exist", &
1072 default_l_val=.false., lone_keyword_l_val=.true.)
1080 description=
"Controls the printing of susceptibility", &
1086 description=
"Controls the printing of the chemical shift", &
1089 CALL keyword_create(keyword, __location__, name=
"ATOMS_LU_BOUNDS", &
1090 variants=[
"ATOMS_LU"], &
1091 description=
"The lower and upper atomic index for which the tensor is printed", &
1092 usage=
"ATOMS_LU_BOUNDS integer integer", &
1093 n_var=2, default_i_vals=[0, -2], type_of_var=
integer_t)
1098 description=
"list of atoms for which the shift is printed into a file ", &
1099 usage=
"ATOMS_LIST 1 2", n_var=-1, &
1110 NULLIFY (subsection)
1115 END SUBROUTINE create_nmr_section
1124 SUBROUTINE create_spin_spin_section(section)
1130 NULLIFY (keyword, print_key, subsection)
1132 cpassert(.NOT.
ASSOCIATED(section))
1134 description=
"Compute indirect spin-spin coupling constants.", &
1135 n_keywords=5, n_subsections=1, repeats=.false.)
1137 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1138 description=
"controls the activation of the nmr calculation", &
1139 usage=
"&SPINSPIN T", &
1140 default_l_val=.false., &
1141 lone_keyword_l_val=.true.)
1145 CALL keyword_create(keyword, __location__, name=
"RESTART_SPINSPIN", &
1146 description=
"Restart the spin-spin calculation from a previous run (NOT WORKING YET)", &
1147 usage=
"RESTART_SPINSPIN", default_l_val=.false., &
1148 lone_keyword_l_val=.true.)
1152 CALL keyword_create(keyword, __location__, name=
"ISSC_ON_ATOM_LIST", &
1153 description=
"Atoms for which the issc is computed.", &
1154 usage=
"ISSC_ON_ATOM_LIST 1 2 10", &
1155 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1160 description=
"Compute the Fermi contact contribution", &
1162 default_l_val=.true., lone_keyword_l_val=.true.)
1167 description=
"Compute the spin-dipolar contribution", &
1169 default_l_val=.true., lone_keyword_l_val=.true.)
1174 description=
"Compute the paramagnetic spin-orbit contribution", &
1176 default_l_val=.true., lone_keyword_l_val=.true.)
1181 description=
"Compute the diamagnetic spin-orbit contribution (NOT YET IMPLEMENTED)", &
1183 default_l_val=.true., lone_keyword_l_val=.true.)
1187 NULLIFY (subsection)
1189 description=
"print results of the indirect spin-spin calculation", &
1193 description=
"Controls the printing of the indirect spin-spin matrix", &
1197 description=
"list of atoms for which the indirect spin-spin is printed into a file ", &
1198 usage=
"ATOMS_LIST 1 2", n_var=-1, &
1209 NULLIFY (subsection)
1214 END SUBROUTINE create_spin_spin_section
1224 SUBROUTINE create_epr_section(section)
1228 TYPE(
section_type),
POINTER :: print_key, subsection, subsubsection
1230 NULLIFY (keyword, print_key, subsection, subsubsection)
1232 cpassert(.NOT.
ASSOCIATED(section))
1234 description=
"The g tensor is calculated by DFPT ", &
1235 n_keywords=5, n_subsections=1, repeats=.false., &
1238 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1239 description=
"controls the activation of the epr calculation", &
1241 default_l_val=.false., &
1242 lone_keyword_l_val=.true.)
1247 description=
"Restart the EPR calculation from a previous run (NOT WORKING)", &
1248 usage=
"RESTART_EPR", default_l_val=.false., &
1249 lone_keyword_l_val=.true.)
1253 NULLIFY (subsection)
1255 description=
"print results of epr calculation", &
1259 description=
"Controls the printing of the components of nabla v_ks ", &
1262 description=
"The stride (X,Y,Z) used to write the cube file "// &
1263 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1264 " 1 number valid for all components.", &
1265 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1269 description=
"append the cube files when they already exist", &
1270 default_l_val=.false., lone_keyword_l_val=.true.)
1278 description=
"Controls the printing of the g tensor", &
1284 CALL keyword_create(keyword, __location__, name=
"GAPW_MAX_ALPHA", &
1285 description=
"Maximum alpha of GTH potentials allowed on the soft grids ", &
1286 usage=
"GAPW_MAX_ALPHA real", default_r_val=5.0_dp)
1290 CALL keyword_create(keyword, __location__, name=
"SOO_RHO_HARD", &
1291 description=
"Whether or not to include the atomic parts of the density "// &
1292 "in the SOO part of the g tensor", usage=
"SOO_RHO_HARD", &
1293 default_l_val=.false., lone_keyword_l_val=.true.)
1301 description=
"Controls the printing of the response functions ", &
1304 description=
"The stride (X,Y,Z) used to write the cube file "// &
1305 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1306 " 1 number valid for all components.", &
1307 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1311 CALL keyword_create(keyword, __location__, name=
"CUBES_LU_BOUNDS", &
1312 variants=[
"CUBES_LU"], &
1313 description=
"The lower and upper index of the states to be printed as cube", &
1314 usage=
"CUBES_LU_BOUNDS integer integer", &
1315 n_var=2, default_i_vals=[0, -2], type_of_var=
integer_t)
1320 description=
"Indexes of the states to be printed as cube files "// &
1321 "This keyword can be repeated several times "// &
1322 "(useful if you have to specify many indexes).", &
1323 usage=
"CUBES_LIST 1 2", &
1324 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1328 description=
"append the cube files when they already exist", &
1329 default_l_val=.false., lone_keyword_l_val=.true.)
1339 NULLIFY (subsection)
1344 END SUBROUTINE create_epr_section
1353 SUBROUTINE create_polarizability_section(section)
1360 NULLIFY (keyword, print_key, subsection)
1362 cpassert(.NOT.
ASSOCIATED(section))
1364 description=
"Compute polarizabilities.", &
1365 n_keywords=5, n_subsections=1, repeats=.false., &
1368 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1369 description=
"controls the activation of the polarizability calculation", &
1371 default_l_val=.false., &
1372 lone_keyword_l_val=.true.)
1377 description=
"Compute the electric-dipole--electric-dipole polarizability", &
1378 usage=
"DO_RAMAN F", &
1380 default_l_val=.true., lone_keyword_l_val=.true.)
1384 CALL keyword_create(keyword, __location__, name=
"PERIODIC_DIPOLE_OPERATOR", &
1385 description=
"Type of dipole operator: Berry phase(T) or Local(F)", &
1386 usage=
"PERIODIC_DIPOLE_OPERATOR T", &
1387 default_l_val=.true., lone_keyword_l_val=.true.)
1391 NULLIFY (subsection)
1393 description=
"print results of the polarizability calculation", &
1397 description=
"Controls the printing of the polarizabilities", &
1405 NULLIFY (subsection)
1410 END SUBROUTINE create_polarizability_section
1417 SUBROUTINE create_et_coupling_section(section)
1424 cpassert(.NOT.
ASSOCIATED(section))
1426 description=
"specifies the two constraints/restraints for extracting ET coupling elements", &
1429 NULLIFY (subsection)
1434 NULLIFY (subsection)
1439 NULLIFY (subsection)
1440 CALL create_projection(subsection,
"PROJECTION")
1444 CALL keyword_create(keyword, __location__, name=
"TYPE_OF_CONSTRAINT", &
1445 description=
"Specifies the type of constraint", &
1446 usage=
"TYPE_OF_CONSTRAINT DDAPC", &
1447 enum_c_vals=
s2a(
"NONE",
"DDAPC"), &
1449 enum_desc=
s2a(
"NONE",
"DDAPC Constraint"), &
1456 description=
"Controls the printing basic info about the method", &
1461 END SUBROUTINE create_et_coupling_section
1470 SUBROUTINE create_projection(section, section_name)
1474 CHARACTER(len=*),
INTENT(in) :: section_name
1477 TYPE(
section_type),
POINTER :: print_key, section_block, section_print
1482 cpassert(.NOT.
ASSOCIATED(section))
1487 NULLIFY (section_block)
1488 NULLIFY (section_print)
1491 CALL section_create(section, __location__, name=trim(adjustl(section_name)), &
1492 description=
"Projection-operator approach fo ET coupling calculation", &
1493 n_keywords=0, n_subsections=2, repeats=.false.)
1497 description=
"Controls printing of data and informations to log file", &
1504 description=
"Part of the system (donor, acceptor, bridge,...)", &
1505 n_keywords=2, n_subsections=1, repeats=.true.)
1510 description=
"Array of atom IDs in the system part", &
1511 usage=
"ATOMS {integer} {integer} .. {integer}", &
1512 n_var=-1, type_of_var=
integer_t, repeats=.false.)
1518 description=
"Number of electrons expected in the system part", &
1519 usage=
"NELECTRON {integer}", default_i_val=0)
1525 description=
"Possible printing options in ET system part", &
1526 n_keywords=0, n_subsections=0, repeats=.false.)
1530 CALL keyword_create(keyword, __location__, name=
'MO_COEFF_ATOM', &
1531 description=
"Print out MO coeffiecients on given atom", &
1532 usage=
"MO_COEFF_ATOM {integer} {integer} .. {integer}", &
1533 type_of_var=
integer_t, n_var=-1, repeats=.true.)
1538 CALL keyword_create(keyword, __location__, name=
'MO_COEFF_ATOM_STATE', &
1539 description=
"Print out MO coeffiecients of specific state", &
1540 usage=
"MO_COEFF_ATOM_STATE {integer} {integer} .. {integer}", &
1541 type_of_var=
integer_t, n_var=-1, repeats=.true.)
1547 description=
"Controls saving of MO cube files", &
1552 description=
"The stride (X,Y,Z) used to write the cube file", &
1553 usage=
"STRIDE {integer} {integer} {integer}", n_var=-1, &
1554 default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1560 description=
"Indices of molecular orbitals to save", &
1561 usage=
"MO_LIST {integer} {integer} .. {integer}", &
1562 type_of_var=
integer_t, n_var=-1, repeats=.true.)
1568 description=
"Number of unoccupied molecular orbitals to save", &
1569 usage=
"NLUMO {integer}", default_i_val=1)
1575 description=
"Number of occupied molecular orbitals to save", &
1576 usage=
"NHOMO {integer}", default_i_val=1)
1591 description=
"Possible printing options in ET", &
1592 n_keywords=0, n_subsections=0, repeats=.false.)
1597 description=
"Controls printing couplings onto file", &
1601 description=
"append the files when they already exist", &
1602 default_l_val=.false., lone_keyword_l_val=.true.)
1611 END SUBROUTINE create_projection
1620 SUBROUTINE create_tddfpt2_section(section)
1626 cpassert(.NOT.
ASSOCIATED(section))
1628 description=
"Controls time-dependent density functional perturbation theory "// &
1629 "(TDDFPT) calculations for electronic excitations and related properties.", &
1630 n_keywords=14, n_subsections=4, repeats=.false., &
1633 NULLIFY (keyword, print_key, subsection)
1636 name=
"_SECTION_PARAMETERS_", &
1637 description=
"Activates the TDDFPT procedure.", &
1638 default_l_val=.false., &
1639 lone_keyword_l_val=.true.)
1645 description=
"Number of excited states to converge.", &
1652 description=
"Maximal number of iterations to be performed.", &
1659 description=
"Maximal number of Krylov space vectors. "// &
1660 "Davidson iterations will be restarted upon reaching this limit.", &
1667 description=
"Number of unoccupied orbitals to consider. "// &
1668 "Default is to use all unoccupied orbitals (-1).", &
1675 description=
"Number of MPI processes to be used per excited state. "// &
1676 "Default is to use all MPI processes (0).", &
1684 description=
"Options to compute the kernel", &
1685 usage=
"KERNEL FULL", &
1686 enum_c_vals=
s2a(
"FULL",
"sTDA",
"NONE"), &
1694 description=
"Selects the type of spin-flip TDDFPT kernel", &
1695 usage=
"SPINFLIP NONCOLLINEAR", &
1696 enum_c_vals=
s2a(
"NONE",
"COLLINEAR",
"NONCOLLINEAR"), &
1698 enum_desc=
s2a(
"Only molecular orbital energy differences are considered", &
1699 "MO energy diferences and Fock exchange contributions are "// &
1701 "MO energy differences, Fock exchange and "// &
1702 "Noncollinear local exchange-correlation "// &
1703 "kernel are considered"), &
1709 description=
"Orbital energy correction potential.", &
1710 enum_c_vals=
s2a(
"NONE",
"LB94",
"GLLB",
"SAOP",
"SHIFT"), &
1712 enum_desc=
s2a(
"No orbital correction scheme is used", &
1713 "van Leeuwen and Baerends. PRA, 49:2421, 1994", &
1714 "Gritsenko, van Leeuwen, van Lenthe, Baerends. PRA, 51:1944, 1995", &
1715 "Gritsenko, Schipper, Baerends. Chem. Phys. Lett., 302:199, 1999", &
1716 "Constant shift of virtual and/or open-shell orbitals"), &
1723 variants=
s2a(
"VIRTUAL_SHIFT"), &
1724 description=
"Constant shift of virtual state eigenvalues.", &
1725 usage=
"EV_SHIFT 0.500", &
1726 n_var=1, type_of_var=
real_t, &
1728 default_r_val=0.0_dp)
1733 variants=
s2a(
"OPEN_SHELL_SHIFT"), &
1734 description=
"Constant shift of open shell eigenvalues.", &
1735 usage=
"EOS_SHIFT 0.200", &
1736 n_var=1, type_of_var=
real_t, &
1738 default_r_val=0.0_dp)
1744 description=
"Target accuracy for excited state energies.", &
1745 n_var=1, type_of_var=
real_t, unit_str=
"hartree", &
1746 default_r_val=1.0e-5_dp)
1750 CALL keyword_create(keyword, __location__, name=
"MIN_AMPLITUDE", &
1751 description=
"The smallest excitation amplitude to print.", &
1752 n_var=1, type_of_var=
real_t, &
1753 default_r_val=5.0e-2_dp)
1757 CALL keyword_create(keyword, __location__, name=
"ORTHOGONAL_EPS", &
1758 description=
"The largest possible overlap between the ground state and "// &
1759 "orthogonalised excited state wave-functions. Davidson iterations "// &
1760 "will be restarted when the overlap goes beyond this threshold in "// &
1761 "order to prevent numerical instability.", &
1762 n_var=1, type_of_var=
real_t, &
1763 default_r_val=1.0e-4_dp)
1769 description=
"Restart the TDDFPT calculation if a restart file exists", &
1771 default_l_val=.false., lone_keyword_l_val=.true.)
1775 CALL keyword_create(keyword, __location__, name=
"RKS_TRIPLETS", &
1776 description=
"Compute triplet excited states using spin-unpolarised molecular orbitals.", &
1778 default_l_val=.false.)
1782 CALL keyword_create(keyword, __location__, name=
"ADMM_KERNEL_XC_CORRECTION", &
1783 description=
"Use/Ignore ADMM correction xc functional for TD kernel. "// &
1784 "XC correction functional is defined in ground state XC section.", &
1786 default_l_val=.true., lone_keyword_l_val=.true.)
1790 CALL keyword_create(keyword, __location__, name=
"ADMM_KERNEL_CORRECTION_SYMMETRIC", &
1791 description=
"ADMM correction functional in kernel is applied symmetrically. "// &
1792 "Original implementation is using a non-symmetric formula.", &
1794 default_l_val=.true., lone_keyword_l_val=.true.)
1799 description=
"Local resolution of identity for Coulomb contribution.", &
1801 default_l_val=.false.)
1806 description=
"Specify size of automatically generated auxiliary basis sets: "// &
1807 "Options={small,medium,large,huge}", &
1808 usage=
"AUTO_BASIS {basis_type} {basis_size}", &
1809 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=[
"X",
"X"])
1814 description=
"Implying smeared occupation. ", &
1816 default_l_val=.false., lone_keyword_l_val=.true.)
1820 CALL keyword_create(keyword, __location__, name=
"EXCITON_DESCRIPTORS", &
1821 description=
"Compute exciton descriptors. "// &
1822 "Details given in Manual section about Bethe Salpeter equation.", &
1824 default_l_val=.false.)
1828 CALL keyword_create(keyword, __location__, name=
"DIRECTIONAL_EXCITON_DESCRIPTORS", &
1829 description=
"Print cartesian components of exciton descriptors.", &
1831 default_l_val=.false.)
1836 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
1837 variants=[
"RESTART_FILE_NAME"], &
1838 description=
"Name of the wave function restart file, may include a path."// &
1839 " If no file is specified, the default is to open the file as generated by"// &
1840 " the wave function restart print key.", &
1841 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
1847 CALL section_create(subsection, __location__, name=
"DIPOLE_MOMENTS", &
1848 description=
"Parameters to compute oscillator strengths in the dipole approximation.", &
1849 n_keywords=3, n_subsections=0, repeats=.false.)
1852 description=
"Form of dipole transition integrals.", &
1853 enum_c_vals=
s2a(
"BERRY",
"LENGTH",
"VELOCITY",
"VELOCITY_OLD", &
1855 enum_desc=
s2a(
"Based on Berry phase formula (valid for fully periodic molecular systems only)", &
1856 "Length form ⟨ i | r | j ⟩ (valid for non-periodic molecular systems only)", &
1857 "Velocity form ⟨ i | d/dr | j ⟩", &
1858 "Old velocity form ⟨ i | d/dr | j ⟩", &
1859 "SCF molecular-orbital moment form for k-point TDDFPT"), &
1868 description=
"Reference point to calculate electric "// &
1869 "dipole moments using the dipole integrals in the length form.", &
1870 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1871 enum_desc=
s2a(
"Use Center of Mass", &
1872 "Use Center of Atomic Charges", &
1873 "Use User-defined Point", &
1874 "Use Origin of Coordinate System"), &
1883 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
1884 description=
"User-defined reference point.", &
1885 usage=
"REFERENCE_POINT x y z", &
1886 repeats=.false., n_var=3, type_of_var=
real_t, unit_str=
'bohr')
1896 description=
"Is jet to be implemented", &
1897 n_keywords=2, n_subsections=0, repeats=.false.)
1900 variants=
s2a(
"EPS_FILTER_MATRIX"), &
1901 description=
"The threshold used for sparse matrix operations", &
1902 usage=
"EPS_FILTER {real}", &
1904 default_r_val=1.0e-10_dp)
1909 variants=[
"ATOMIC_GRID"], &
1910 description=
"Specification of the atomic angular and radial grids for "// &
1911 "a atomic kind. This keyword must be repeated for all kinds! "// &
1912 "Usage: GRID < LEBEDEV_GRID > < RADIAL_GRID >", &
1913 usage=
"GRID {string} {integer} {integer}", &
1914 n_var=3, type_of_var=
char_t, repeats=.true.)
1932 CALL create_stda_section(subsection)
1937 CALL create_res_section(subsection)
1942 description=
"Choosing BSE kernel.", &
1943 usage=
"DO_BSE", default_l_val=.false., lone_keyword_l_val=.true.)
1947 CALL keyword_create(keyword, __location__, name=
"DO_BSE_W_ONLY", &
1948 description=
"Debug option for BSE kernel.", &
1949 usage=
"DO_BSE_W_ONLY", default_l_val=.false., lone_keyword_l_val=.true.)
1953 CALL keyword_create(keyword, __location__, name=
"DO_BSE_GW_ONLY", &
1954 description=
"Debug option for BSE kernel.", &
1955 usage=
"DO_BSE_GW_ONLY", default_l_val=.false., lone_keyword_l_val=.true.)
1965 CALL create_linres_section(subsection, create_subsections=.false., default_set_tdlr=.true.)
1971 description=
"Printing of information during the TDDFT run.", repeats=.false.)
1974 description=
"Controls the printing of the banner for TDDFPT program", &
1980 description=
"Controls the printing of initial guess vectors.", &
1986 description=
"Controls the printing of basic iteration information "// &
1987 "during the TDDFT run.", &
1993 description=
"Controls the printing of detailed energy information "// &
1994 "during the TDDFT run.", &
2000 description=
"Controls the printing of a file with all basis sets used.", &
2006 description=
"Controls the dumping of the MO restart file during TDDFPT. "// &
2007 "By default keeps a short history of three restarts.", &
2009 each_iter_names=
s2a(
"TDDFT_SCF"), each_iter_values=[10], &
2011 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
2012 description=
"Specifies the maximum number of backup copies.", &
2013 usage=
"BACKUP_COPIES {int}", &
2021 description=
"Perform a natural transition orbital analysis.", &
2024 description=
"Threshold for sum of NTO eigenvalues considered", &
2025 usage=
"Threshold 0.95", &
2028 default_r_val=0.975_dp)
2031 CALL keyword_create(keyword, __location__, name=
"INTENSITY_THRESHOLD", &
2032 description=
"Threshold for oscillator strength to screen states.", &
2033 usage=
"Intensity_threshold 0.01", &
2036 default_r_val=0.0_dp)
2040 description=
"Specifies a list of states for the NTO calculations.", &
2041 usage=
"STATE_LIST {integer} {integer} .. {integer}", &
2046 description=
"Print NTOs on Cube Files", &
2047 usage=
"CUBE_FILES {logical}", repeats=.false., n_var=1, &
2048 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
2052 description=
"The stride (X,Y,Z) used to write the cube file "// &
2053 "(larger values result in smaller cube files). Provide 3 numbers (for X,Y,Z) or"// &
2054 " 1 number valid for all components.", &
2055 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
2059 description=
"append the cube files when they already exist", &
2060 default_l_val=.false., lone_keyword_l_val=.true.)
2067 description=
"Write the NTO in Molden file format, for visualisation.", &
2070 description=
"Unit for coordinates and cell in the MOLDEN file.", &
2071 usage=
"UNIT ANGSTROM", &
2072 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
2073 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
2074 enum_i_vals=[1, 2], &
2079 description=
"Controls whether the [Cell] block is written to the MOLDEN file.", &
2080 usage=
"WRITE_CELL TRUE", &
2081 default_l_val=.false., lone_keyword_l_val=.true.)
2084 CALL keyword_create(keyword, __location__, name=
"WRITE_PSEUDO", &
2085 description=
"Controls whether the [Pseudo] block is written to the MOLDEN file.", &
2086 usage=
"WRITE_PSEUDO TRUE", &
2087 default_l_val=.false., lone_keyword_l_val=.true.)
2091 description=
"Controls whether ghost atoms are marked in the [Atoms] block by "// &
2092 "setting their atomic number to zero.", &
2093 usage=
"MARK_GHOST T", &
2094 default_l_val=.false., lone_keyword_l_val=.true.)
2098 description=
"Specifies the number of significant digits retained. 3 is OK for visualization.", &
2099 usage=
"NDIGITS {int}", &
2104 description=
"Representation of Gaussian-type orbitals", &
2106 enum_c_vals=
s2a(
"CARTESIAN",
"SPHERICAL"), &
2108 "Cartesian Gaussian orbitals. Use with caution", &
2109 "Spherical Gaussian orbitals. Incompatible with VMD"), &
2117 description=
"Controls the printout required for NAMD with NEWTONX.", &
2119 CALL keyword_create(keyword, __location__, name=
"PRINT_VIRTUALS", &
2120 description=
"Print occupied AND virtual molecular orbital coefficients", &
2121 default_l_val=.false., lone_keyword_l_val=.true.)
2124 CALL keyword_create(keyword, __location__, name=
"PRINT_PHASES", &
2125 description=
"Print phases of occupied and virtuals MOs.", &
2126 default_l_val=.false., lone_keyword_l_val=.true.)
2129 CALL keyword_create(keyword, __location__, name=
"SCALE_WITH_PHASES", &
2130 description=
"Scale ES eigenvectors with phases of occupied and virtuals MOs.", &
2131 default_l_val=.false., lone_keyword_l_val=.true.)
2139 description=
"Controls the printout of the tddfpt2_soc modul", &
2142 description=
"Will detrement if output in eVolt will be printef.", &
2143 default_l_val=.true., lone_keyword_l_val=.true.)
2147 description=
"Will detrement if output in wavenumbers will be printed.", &
2148 default_l_val=.false., lone_keyword_l_val=.true.)
2152 description=
"Will add the SOC-Splitting as additional output", &
2153 default_l_val=.false., lone_keyword_l_val=.true.)
2157 description=
"Will add the SOC-Matrix as additional output in a different file", &
2158 default_l_val=.false., lone_keyword_l_val=.true.)
2165 description=
"Controls the calculation and printing of excited state forces. "// &
2166 "This needs a RUN_TYPE that includes force evaluation, e.g. ENERGY_FORCE", &
2169 description=
"Specifies a list of states for the force calculations.", &
2170 usage=
"LIST {integer} {integer} .. {integer}", repeats=.true., &
2175 description=
"Threshold for oszillator strength to screen states.", &
2176 usage=
"Threshold 0.01", &
2179 default_r_val=0.0_dp)
2188 END SUBROUTINE create_tddfpt2_section
2194 SUBROUTINE create_stda_section(section)
2199 cpassert(.NOT.
ASSOCIATED(section))
2201 description=
"parameters needed and setup for sTDA calculations", &
2202 n_keywords=3, n_subsections=0, repeats=.false.)
2206 variants=[
"HFX_FRACTION"], &
2207 description=
"The fraction of TB Hartree-Fock exchange to use in the Kernel. "// &
2208 "0.0 implies no HFX part is used in the kernel. ", &
2209 usage=
"FRACTION 0.0", default_r_val=0.0_dp)
2216 description=
"Explicitly including or switching off sTDA exchange", &
2217 usage=
"DO_EXCHANGE", default_l_val=.true., lone_keyword_l_val=.true.)
2222 description=
"Use Ewald type method for Coulomb interaction", &
2223 usage=
"DO_EWALD", default_l_val=.false., lone_keyword_l_val=.true.)
2227 CALL keyword_create(keyword, __location__, name=
"EPS_TD_FILTER", &
2228 description=
"Threshold for filtering the transition density matrix", &
2229 usage=
"EPS_TD_FILTER epsf", default_r_val=1.e-10_dp)
2233 CALL keyword_create(keyword, __location__, name=
"MATAGA_NISHIMOTO_CEXP", &
2234 description=
"Exponent used in Mataga-Nishimoto formula for Coulomb (alpha). "// &
2235 "Default value is method dependent!", &
2236 usage=
"MATAGA_NISHIMOTO_CEXP cexp", default_r_val=-99.0_dp)
2240 CALL keyword_create(keyword, __location__, name=
"MATAGA_NISHIMOTO_XEXP", &
2241 description=
"Exponent used in Mataga-Nishimoto formula for Exchange (beta). "// &
2242 "Default value is method dependent!", &
2243 usage=
"MATAGA_NISHIMOTO_XEXP xexp", default_r_val=-99.0_dp)
2247 CALL keyword_create(keyword, __location__, name=
"COULOMB_SR_CUT", &
2248 description=
"Maximum range of short range part of Coulomb interaction.", &
2249 usage=
"COULOMB_SR_CUT rcut", default_r_val=20.0_dp)
2253 CALL keyword_create(keyword, __location__, name=
"COULOMB_SR_EPS", &
2254 description=
"Threshold for short range part of Coulomb interaction.", &
2255 usage=
"COULOMB_SR_EPS sreps", default_r_val=1.e-03_dp)
2259 END SUBROUTINE create_stda_section
2265 SUBROUTINE create_res_section(section)
2270 cpassert(.NOT.
ASSOCIATED(section))
2271 CALL section_create(section, __location__, name=
"REDUCED_EXCITATION_SPACE", &
2272 description=
"Sets up a restricted (reduced) excitation space for TDDFT", &
2273 n_keywords=3, n_subsections=0, repeats=.false.)
2277 name=
"_SECTION_PARAMETERS_", &
2278 description=
"Controls the activation of RES calculation.", &
2279 default_l_val=.false., &
2280 lone_keyword_l_val=.true.)
2284 CALL keyword_create(keyword, __location__, name=
"ENERGY_WINDOW", &
2285 description=
"Upper and lower cutoffs [eV] for orbitals to be included for excitations. ", &
2286 usage=
"ENERGY_WINDOW -5.0 0.0", default_r_vals=[-1.0e10_dp, 1.0e10_dp], &
2287 type_of_var=
real_t, unit_str=
"eV")
2291 CALL keyword_create(keyword, __location__, name=
"UPPER_ENERGY_CUTOFF", &
2292 description=
"Upper energy cutoff [eV] for orbitals to be included in excitations.", &
2293 usage=
"UPPER_ENERGY_CUTOFF -5.0", default_r_val=1.0e10_dp, &
2294 type_of_var=
real_t, unit_str=
"eV")
2298 CALL keyword_create(keyword, __location__, name=
"LOWER_ENERGY_CUTOFF", &
2299 description=
"Lower energy cutoff [eV] for orbitals to be included in excitations.", &
2300 usage=
"LOWER_ENERGY_CUTOFF -5.0", default_r_val=-1.0e10_dp, &
2301 type_of_var=
real_t, unit_str=
"eV")
2305 CALL keyword_create(keyword, __location__, name=
"MOLECULE_LIST", &
2306 description=
"Indices of molecules to be excited. "// &
2307 "This implies the calculation of molecular states through orbital location "// &
2308 "and subspace diagonalization.", &
2309 usage=
"MOLECULE_LIST {integer} {integer} .. {integer} ", &
2310 n_var=-1, type_of_var=
integer_t, repeats=.false.)
2314 END SUBROUTINE create_res_section
2322 SUBROUTINE create_bandstructure_section(section)
2328 cpassert(.NOT.
ASSOCIATED(section))
2329 CALL section_create(section, __location__, name=
"BANDSTRUCTURE", &
2330 description=
"Parameters needed to set up a calculation for "// &
2331 "electronic level energies of molecules and the electronic band "// &
2332 "structure of materials from post-SCF schemes (GW, perturbative "// &
2333 "spin-orbit coupling). Also, the density of states (DOS), "// &
2334 "projected density of states (PDOS), local density of states (LDOS), "// &
2335 "local valence band maximum (LVBM), local conduction band minimum "// &
2336 "(LCBM) and local band gap can be calculated. Please note that "// &
2337 "all methods in this section start from a Gamma-only DFT SCF. "// &
2338 "You need to make sure that the cell chosen in the DFT SCF is "// &
2339 "converged in the cell size. Band structures are computed "// &
2340 "for the primitive cell (i.e. the smallest possible unit cell of "// &
2341 "the input structure which is detected automatically). Moreover, "// &
2342 "spin-orbit coupling (SOC) on eigenvalues and band structures is "// &
2343 "available using Hartwigsen-Goedecker-Hutter "// &
2344 "pseudopotentials.", &
2345 n_keywords=1, n_subsections=1, repeats=.false.)
2347 NULLIFY (keyword, subsection)
2349 name=
"_SECTION_PARAMETERS_", &
2350 description=
"Controls the activation of the band structure calculation.", &
2351 default_l_val=.false., &
2352 lone_keyword_l_val=.true.)
2361 CALL create_gw_section(subsection)
2365 CALL create_soc_section(subsection)
2369 CALL create_dos_section(subsection)
2373 CALL create_floquet_section(subsection)
2377 END SUBROUTINE create_bandstructure_section
2385 SUBROUTINE create_gw_section(section)
2391 cpassert(.NOT.
ASSOCIATED(section))
2393 description=
"Parameters needed to set up a GW calculation for "// &
2394 "electronic level energies $\varepsilon_{n\mathbf{k}}^{G_0W_0}$ "// &
2395 "of molecules and the band structure of materials: "// &
2396 "$\varepsilon_{n\mathbf{k}}^{G_0W_0}= "// &
2397 "\varepsilon_{n\mathbf{k}}^\text{DFT}+\Sigma_{n\mathbf{k}} "// &
2398 "-v^\text{xc}_{n\mathbf{k}}$. "// &
2399 "For the GW algorithm for molecules, see "// &
2400 "<https://doi.org/10.1021/acs.jctc.0c01282>. "// &
2401 "For 2D materials, see <https://doi.org/10.1021/acs.jctc.3c01230>.", &
2402 n_keywords=1, n_subsections=1, repeats=.false.)
2406 name=
"_SECTION_PARAMETERS_", &
2407 description=
"Controls the activation of the GW calculation.", &
2408 default_l_val=.false., &
2409 lone_keyword_l_val=.true.)
2413 CALL keyword_create(keyword, __location__, name=
"NUM_TIME_FREQ_POINTS", &
2414 description=
"Number of discrete points for the imaginary-time "// &
2415 "grid and the imaginary-frequency grid. The more points, the more "// &
2416 "precise is the calculation. Typically, 10 points are good "// &
2417 "for 0.1 eV precision of band structures and molecular energy "// &
2418 "levels, 20 points for 0.03 eV precision, "// &
2419 "and 30 points for 0.01 eV precision, see Table I in "// &
2420 "<https://doi.org/10.1021/acs.jctc.0c01282>. GW computation time "// &
2421 "increases linearly with `NUM_TIME_FREQ_POINTS`.", &
2422 usage=
"NUM_TIME_FREQ_POINTS 30", &
2428 description=
"Determines a threshold for the DBCSR based sparse "// &
2429 "multiplications. Normally, `EPS_FILTER` determines accuracy "// &
2430 "and timing of low-scaling GW calculations. (Lower filter means "// &
2431 "higher numerical precision, but higher computational cost.)", &
2432 usage=
"EPS_FILTER 1.0E-6", &
2433 default_r_val=1.0e-8_dp)
2437 CALL keyword_create(keyword, __location__, name=
"REGULARIZATION_MINIMAX", &
2438 description=
"Parameter to regularize the Fourier transformation with minimax grids. "// &
2439 "In case the parameter 0.0 is chosen, no regularization is performed.", &
2440 usage=
"REGULARIZATION_MINIMAX 1.0E-4", &
2441 default_r_val=-1.0_dp)
2445 CALL keyword_create(keyword, __location__, name=
"REGULARIZATION_RI", &
2446 description=
"Parameter for RI regularization, setting a negative "// &
2447 "value triggers the default value. Affects RI basis set convergence "// &
2448 "but in any case large RI basis will give RI basis set convergence.", &
2449 usage=
"REGULARIZATION_RI 1.0E-4", &
2450 default_r_val=-1.0_dp)
2454 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS_RI", &
2455 description=
"The cutoff radius (in Angstrom) for the truncated "// &
2456 "Coulomb operator. The larger the cutoff radius, the faster "// &
2457 "converges the resolution of the identity (RI) with respect to the "// &
2458 "RI basis set size. Larger cutoff radius means higher computational "// &
2460 usage=
"CUTOFF_RADIUS_RI 3.0", &
2462 type_of_var=
real_t, unit_str=
"angstrom")
2466 CALL keyword_create(keyword, __location__, name=
"MEMORY_PER_PROC", &
2467 description=
"Specify the available memory per MPI process. Set "// &
2468 "`MEMORY_PER_PROC` as accurately as possible for good performance. If "// &
2469 "`MEMORY_PER_PROC` is set lower as the actually available "// &
2470 "memory per MPI process, the performance will be "// &
2471 "bad; if `MEMORY_PER_PROC` is set higher as the actually "// &
2472 "available memory per MPI process, the program might run out of "// &
2473 "memory. You can calculate `MEMORY_PER_PROC` as follows: "// &
2474 "Get the memory per node on your machine, mem_per_node "// &
2475 "(for example, from a supercomputer website, typically between "// &
2476 "100 GB and 2 TB), get the number of "// &
2477 "MPI processes per node, n_MPI_proc_per_node"// &
2478 " (for example from your run-script; if you "// &
2479 "use slurm, the number behind '--ntasks-per-node' is the number "// &
2480 "of MPI processes per node). Then calculate "// &
2481 "`MEMORY_PER_PROC` = mem_per_node / n_MPI_proc_per_node "// &
2482 "(typically between 2 GB and 50 GB). Unit of keyword: Gigabyte (GB).", &
2483 usage=
"MEMORY_PER_PROC 16", &
2484 default_r_val=2.0_dp)
2488 CALL keyword_create(keyword, __location__, name=
"APPROX_KP_EXTRAPOL", &
2489 description=
"If true, use only a 4x4 kpoint mesh for frequency "// &
2490 "points $\omega_j, j \ge 2$ (instead of a 4x4 and 6x6 k-point mesh). "// &
2491 "The k-point extrapolation of $W_{PQ}(i\omega_j,\mathbf{q})$ "// &
2492 "is done approximately from $W_{PQ}(i\omega_1,\mathbf{q})$.", &
2493 usage=
"APPROX_KP_EXTRAPOL", &
2494 default_l_val=.false., lone_keyword_l_val=.true.)
2498 CALL keyword_create(keyword, __location__, name=
"SIZE_LATTICE_SUM", &
2499 description=
"Parameter determines how many neighbor cells $\mathbf{R}$ "// &
2500 "are used for computing "// &
2501 "$V_{PQ}(\mathbf{k}) = "// &
2502 "\sum_{\mathbf{R}} e^{i\mathbf{k}\cdot\mathbf{R}}\,\langle P, "// &
2503 "\text{cell}{=}\mathbf{0}|1/r|Q,\text{cell}{=}\mathbf{R}\rangle$. "// &
2504 "Normally, parameter does not need to be touched.", &
2505 usage=
"SIZE_LATTICE_SUM 4", &
2511 keyword, __location__, name=
"KPOINTS_W", &
2512 description=
"Monkhorst-Pack k-point mesh of size N_x, N_y, N_z for calculating "// &
2513 "$W_{PQ}^\mathbf{R}=\int_\text{BZ}\frac{d\mathbf{k}}{\Omega_\text{BZ}}\, "// &
2514 "e^{-i\mathbf{k}\cdot\mathbf{R}}\,W_{PQ}(\mathbf{k})$. "// &
2515 αα
"For non-periodic directions , choose N_ = 1. "// &
2516 "Automatic choice of the k-point mesh for negative "// &
2517 "values, i.e. KPOINTS_W -1 -1 -1. "// &
2518 "K-point extrapolation of W is automatically switched on.", &
2519 usage=
"KPOINTS_W N_x N_y N_z", &
2520 n_var=3, type_of_var=
integer_t, default_i_vals=[-1, -1, -1])
2525 description=
"If true, use Hedin's shift in G0W0, evGW and evGW0. "// &
2526 "Details see in Li et al. JCTC 18, 7570 "// &
2527 "(2022), Figure 1. G0W0 with Hedin's shift should give "// &
2528 "similar GW eigenvalues as evGW0; at a lower "// &
2529 "computational cost.", &
2530 usage=
"HEDIN_SHIFT", &
2531 default_l_val=.false., &
2532 lone_keyword_l_val=.true.)
2536 CALL keyword_create(keyword, __location__, name=
"FREQ_MAX_FIT", &
2537 description=Σω
"For analytic continuation, a fit on (i) is performed. "// &
2538 Σω
"This fit is then evaluated at a real frequency, (), which is used "// &
2539 "in the quasiparticle equation "// &
2540 "$\varepsilon_{n\mathbf{k}}^{G_0W_0}= "// &
2541 "\varepsilon_{n\mathbf{k}}^\text{DFT}+\Sigma_{n\mathbf{k}} "// &
2542 "-v^\text{xc}_{n\mathbf{k}}$. The keyword FREQ_MAX_FIT "// &
2543 Σω
"determines fitting range for the self-energy (i) on "// &
2544 ωω
"imaginary axis: i*[0, _max] for empty orbitals/bands, i*[-_max,0] "// &
2545 ω
"for occ orbitals. A smaller _max might lead to better numerical "// &
2546 "stability (i.e., if you observe clearly wrong GW eigenvalues/bands "// &
2547 ω
"around HOMO/LUMO, decreasing _max might fix this issue). "// &
2548 ω
"A small benchmark of _max is contained in Fig. 5 of "// &
2549 "J. Wilhelm et al., JCTC 12, 3623-3635 (2016). "// &
2550 ω
"Note that we used _max = 1 Ha = 27.211 eV in the benchmark "// &
2551 "M. Azizi et al., PRB 109, 245101 (2024).", &
2553 usage=
"FREQ_MAX_FIT 20.0", &
2558 NULLIFY (subsection, print_key)
2560 description=
"Printing of GW restarts.", &
2561 n_keywords=2, n_subsections=1, repeats=.false.)
2563 description=
"Controls the printing of restart files "// &
2566 common_iter_levels=3)
2570 CALL keyword_create(keyword, __location__, name=
"PRINT_DBT_CONTRACT", &
2571 description=
"Prints information of contraction routines.", &
2572 usage=
"PRINT_DBT_CONTRACT", &
2573 default_l_val=.false., &
2574 lone_keyword_l_val=.true.)
2578 CALL keyword_create(keyword, __location__, name=
"PRINT_DBT_CONTRACT_VERBOSE", &
2579 description=
"Prints verbose information of contraction routines.", &
2580 usage=
"PRINT_DBT_CONTRACT_VERBOSE", &
2581 default_l_val=.false., &
2582 lone_keyword_l_val=.true.)
2587 description=
"Real-Space Resolution of Identity (RI-RS) method. This "// &
2588 μν
"approximation replaces the conventional 3-center RI integrals (|P) "// &
2589 "by a factorized representation on an atom-centered real-space grid "// &
2590 ℓμν≈∑ℓφμℓφνℓℓ
"{r_}: (|P) _ _(r_) _(r_) Z_P. "// &
2591 â„“
"The coefficients Z_P combine the numerical integration weights and "// &
2592 "the Coulomb potential of the auxiliary basis function P evaluated "// &
2593 â„“
"at grid point r_. To reduce the computational cost, only grid points "// &
2594 "within the sphere B^P are included, where "// &
2595 "B^P = {r : |r - R_P| < Rc + r_P}. "// &
2596 "Here, r_P is the effective Gaussian basis radius for atom P at which "// &
2597 δ
"the basis function magnitude falls below a threshold "// &
2598 "(currently controlled through EPS_FILTER). "// &
2599 "This locality approximation yields a sparse representation of the "// &
2600 "3-center integrals enables reduced computational cost. "// &
2601 "See details in https://doi.org/10.1063/1.5090605.", &
2603 default_l_val=.false., &
2604 lone_keyword_l_val=.true.)
2609 description=α
"Regularization parameter () used to stabilize "// &
2610 "the inversion of the grid-overlap matrix "// &
2611 "D in the Real-Space RI (RI-RS) method. See Equation (9) in https://doi.org/10.1063/1.5090605.", &
2612 usage=
"TIKHONOV 1.0E-8", &
2613 default_r_val=1.0e-08_dp)
2618 description=
"Selection of the atom-centeredgrid type used "// &
2619 "in RI-RS optimized by Duchemin and Blase. "// &
2620 "(1) def2-TZVPP: Grid optimized by Duchemin and Blase, "// &
2621 "available for elements up to the fourth row "// &
2622 "of the periodic table (see https://doi.org/10.1021/acs.jctc.1c00101). "// &
2623 "(2) cc-pVTZ: Optimized grids available for H, C, N, and O atoms "// &
2624 "(see https://doi.org/10.1063/1.5090605).", &
2625 usage=
"GRID_SELECT 1", &
2630 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS_RI_RS", &
2631 description=
"Override (in Angstrom) of the truncated-Coulomb cutoff radius Rc used "// &
2632 "to size the per-atom RI-RS integration domain "// &
2633 "B^P = {r : |r - R_P| < Rc + r_AO(P)}, where r_AO(P) is the spatial extent of the "// &
2634 "most diffuse AO Gaussian on atom P. By default (-1.0) Rc falls back to "// &
2635 "CUTOFF_RADIUS_RI from the GW section (the same Rc used to build the RI metric "// &
2636 "integrals). Useful for convergence sweeps.", &
2637 usage=
"CUTOFF_RADIUS_RI_RS 15.0", &
2639 type_of_var=
real_t, unit_str=
"angstrom")
2643 CALL keyword_create(keyword, __location__, name=
"N_PROCS_PER_ATOM_Z_LP", &
2644 description=
"Number of MPI ranks that cooperate on one atom's "// &
2645 "Cholesky factorisation in compute_coeff_Z_lP. Default 1 keeps "// &
2646 "the single-rank LAPACK dpotrf path (BLAS, fastest when "// &
2647 "D_local fits per rank). Setting > 1 enables a ScaLAPACK "// &
2648 "pdpotrf path: ranks are split into atom-groups of this size, "// &
2649 "D_local is block-cyclic distributed across each group (per-rank "// &
2650 "memory ~1/G), the compute_d_lp build is also distributed across "// &
2651 "the subgroup, and multiple groups process different atoms in "// &
2652 "parallel. Use for systems where n_local_grid is large enough "// &
2653 "that the dense (n_local_grid)^2 D_local does not fit in a "// &
2654 "single rank's memory.", &
2655 usage=
"N_PROCS_PER_ATOM_Z_LP 16", &
2663 END SUBROUTINE create_gw_section
2671 SUBROUTINE create_soc_section(section)
2676 cpassert(.NOT.
ASSOCIATED(section))
2678 description=
"Switch on or off spin-orbit coupling. Use SOC "// &
2679 "parameters from non-local pseudopotentials as given in "// &
2680 "Hartwigsen, Goedecker, Hutter, Eq.(18), (19), "// &
2681 "<https://doi.org/10.1103/PhysRevB.58.3641>, "// &
2682 "$V_{\mu\nu}^{\mathrm{SOC}, (\alpha)} = "// &
2683 "(\hbar/2) \langle \phi_\mu | \sum_l \Delta "// &
2684 "V_l^\mathrm{SO}(\mathbf{r},\mathbf{r}') "// &
2685 "L^{(\alpha)} | \phi_\nu \rangle, "// &
2686 "\alpha = x, y, z$.", &
2687 n_keywords=1, n_subsections=1, repeats=.false.)
2691 name=
"_SECTION_PARAMETERS_", &
2692 description=
"Controls the activation of the SOC calculation.", &
2693 default_l_val=.false., &
2694 lone_keyword_l_val=.true.)
2698 CALL keyword_create(keyword, __location__, name=
"ENERGY_WINDOW", &
2699 description=
"Apply SOC only for states with eigenvalues in the "// &
2700 "interval $[\varepsilon_\mathrm{VBM}-E_\mathrm{window}/2, "// &
2701 "\varepsilon_\mathrm{CBM}+E_\mathrm{window}/2]$. Might be necessary "// &
2702 "to use for large systems to prevent numerical instabilities.", &
2703 usage=
"ENERGY_WINDOW 5.0", &
2709 END SUBROUTINE create_soc_section
2717 SUBROUTINE create_dos_section(section)
2723 cpassert(.NOT.
ASSOCIATED(section))
2725 description=
"Parameters needed to calculate the density of states "// &
2726 "(DOS) and the projected density of states (PDOS).", &
2727 n_keywords=1, n_subsections=1, repeats=.false.)
2731 name=
"_SECTION_PARAMETERS_", &
2732 description=
"Controls the activation of the DOS calculation.", &
2733 default_l_val=.false., &
2734 lone_keyword_l_val=.true.)
2738 CALL keyword_create(keyword, __location__, name=
"ENERGY_WINDOW", &
2739 description=
"Print DOS and PDOS in the energy window "// &
2740 "$[\varepsilon_\mathrm{VBM}-E_\mathrm{window}/2, "// &
2741 "\varepsilon_\mathrm{CBM}+E_\mathrm{window}/2]$,"// &
2742 " where VBM is the valence "// &
2743 "band maximum (or highest occupied molecular orbital, HOMO, for "// &
2744 "molecules) and CBM the conduction band minimum (or lowest "// &
2745 "unoccupied molecular orbital, LUMO, for molecules).", &
2746 usage=
"ENERGY_WINDOW 5.0", &
2753 description=
"Resolution of the energy E when computing the $\rho(E)$.", &
2754 usage=
"ENERGY_STEP 0.01", &
2761 description=α
"Broadening in Gaussians used in the DOS; "// &
2762 "$\rho(E) = \sum_n \exp(((E-\varepsilon_n)/\alpha)^2)/("// &
2763 " \sqrt{2\pi} \alpha)$.", &
2764 usage=
"BROADENING 0.01", &
2771 keyword, __location__, name=
"KPOINTS", &
2772 description=
"Monkhorst-Pack k-point mesh of size N_x, N_y, N_z for calculating "// &
2773 "the density of states (DOS). In GW, the KPOINT_DOS mesh is thus used as k-point "// &
2774 αα
"mesh for the self-energy. For non-periodic directions , choose N_ = 1. "// &
2775 "Automatic choice of the k-point mesh for negative "// &
2776 α
"values, i.e. KPOINTS_DOS -1 -1 -1 (automatic choice: N_ = 1 in non-periodic "// &
2777 "direction, 8 k-points in periodic direction). If you like to compute a "// &
2778 "band structure along a k-path, you can specify the k-path in "// &
2780 usage=
"KPOINTS N_x N_y N_z", &
2781 n_var=3, type_of_var=
integer_t, default_i_vals=[-1, -1, -1])
2785 NULLIFY (subsection)
2786 CALL create_ldos_section(subsection)
2790 END SUBROUTINE create_dos_section
2796 SUBROUTINE create_ldos_section(section)
2801 cpassert(.NOT.
ASSOCIATED(section))
2803 description=
"Parameters needed to calculate the local density "// &
2804 "of states (LDOS). "// &
2805 "The LDOS is computed as $\rho(\mathbf{r},E) = "// &
2806 "\sum\limits_{n,\mathbf{k}}"// &
2807 " |\psi_{n\mathbf{k}}(r)|^2\, w_\mathbf{k}\, g(E-\varepsilon_{n\mathbf{k}})$ "// &
2808 "using the Gaussian weight function "// &
2809 "$g(x) = \exp(x^2/\alpha^2)/(\sqrt{2\pi}\alpha)$, $\alpha$ is the broadening "// &
2810 "from the &DOS section, and the k-point weight "// &
2811 "$w_\mathbf{k}$. The k-mesh is taken from the &DOS section.", &
2812 n_keywords=2, repeats=.false.)
2816 name=
"_SECTION_PARAMETERS_", &
2817 description=
"Activates the local VBM CBM gap calculation.", &
2818 default_l_val=.false., &
2819 lone_keyword_l_val=.true.)
2824 description=
"Defines whether the LDOS is integrated along a "// &
2825 "coordinate. As an example, for INTEGRATION Z, the LDOS "// &
2826 "$\rho(x,y,E) = \int dz\, \rho(x,y,z,E)$ is computed.", &
2827 usage=
"INTEGRATION Z", &
2828 enum_c_vals=
s2a(
"X",
"Y",
"Z",
"NONE"), &
2830 enum_desc=
s2a(
"Integrate over x coordinate (not yet implemented).", &
2831 "Integrate over y coordinate (not yet implemented).", &
2832 "Integrate over z coordinate.", &
2833 "No integration, print cube file as function "// &
2834 "of x,y,z (not yet implemented)."), &
2840 keyword, __location__, name=
"BIN_MESH", &
2841 description=
"Mesh of size n x m for binning the space coordinates x and y of "// &
2842 "the LDOS $\rho(x,y,E)$. If -1, no binning is performed and the "// &
2843 "fine x, y resolution of the electron density from SCF is used.", &
2844 usage=
"BIN_MESH n m", &
2845 n_var=2, type_of_var=
integer_t, default_i_vals=[10, 10])
2849 END SUBROUTINE create_ldos_section
2857 SUBROUTINE create_tipscan_section(section)
2862 cpassert(.NOT.
ASSOCIATED(section))
2864 description=
"Parameters needed to set up a Tip Scan. "// &
2865 "Needs external definition of tip induced field.", &
2866 n_keywords=1, n_subsections=1, repeats=.false.)
2871 name=
"_SECTION_PARAMETERS_", &
2872 description=
"Controls the activation of the Tip Scan procedure", &
2873 default_l_val=.false., &
2874 lone_keyword_l_val=.true.)
2878 CALL keyword_create(keyword, __location__, name=
"SCAN_DIRECTION", &
2879 description=
"Defines scan direction and scan type(line, plane).", &
2880 usage=
"SCAN_DIRECTION XY", &
2881 enum_c_vals=
s2a(
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ",
"XYZ"), &
2887 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
2888 description=
"The reference point to define the absolute position of the scan. ", &
2889 usage=
"REFERENCE_POINT 0.0 0.0 1.0", &
2890 n_var=3, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp], type_of_var=
real_t, &
2891 unit_str=
"angstrom")
2896 description=
"Number of points calculated for each scan direction.", &
2897 usage=
"SCAN_POINTS 20 20", &
2903 description=
"Step size for each scan direction.", &
2904 usage=
"SCAN_STEP 0.01 0.01", &
2905 n_var=-1, type_of_var=
real_t, unit_str=
"angstrom")
2909 CALL keyword_create(keyword, __location__, name=
"TIP_FILENAME", &
2910 description=
"Filename of tip potential defined in cube file format.", &
2911 usage=
"TIP_FILENAME <filename>", &
2916 END SUBROUTINE create_tipscan_section
2924 SUBROUTINE create_floquet_section(section)
2930 description=
"Parameters controlling the calculation of the "// &
2931 "Floquet band structure and Quasi-energies of a system driven "// &
2932 "by a periodic monochromatic electric field with any arbitrary "// &
2933 "polarisation state.", &
2934 n_keywords=1, n_subsections=0, repeats=.false.)
2938 description=
"Electric field amplitude of the monochromatic light.", &
2939 usage=
"AMPLITUDE [Vm-1] 1.0E9", n_var=1, type_of_var=
real_t, &
2940 unit_str=
"Vm-1", default_r_val=0.0_dp)
2945 description=
"Frequency of the electric field for Floquet calculations "// &
2946 "expressed in terms of the energy of a photon in eV.", &
2947 usage=
"FREQUENCY 1.5", unit_str=
"eV", n_var=1, type_of_var=
real_t, &
2952 CALL keyword_create(keyword, __location__, name=
"POLARISATION", &
2953 description=
"Polarisation vector of the input light. The "// &
2954 "amplitude in each direction is the product of the AMPLITUDE "// &
2955 "and the POLARISATION vector component. Eg. for light polarized "// &
2956 "in the x direction, use 1 0 0. For left-circularly polarized "// &
2957 "light travelling in the +z direction use 1 1 0 and set "// &
2958 π
"PHASE_OFFSET 0 0.5 0 for a +/2 offset", &
2959 usage=
"POLARISATION 0.0 0.0 1.0", &
2960 default_r_vals=[0.0_dp, 0.0_dp, 1.0_dp])
2964 CALL keyword_create(keyword, __location__, name=
"PHASE_OFFSETS", &
2965 description=
"Phase offset of the electric field in the "// &
2966 π
"x, y, and z directions given in multiples of . For "// &
2967 "linearly polarized light, use 0 0 0 and for left-circularly "// &
2968 "polarized light travelling in the +z direction use "// &
2969 "PHASE_OFFSET 0.0 0.5 0 ", &
2970 usage=
"PHASE_OFFSETS 0.5 0 0", &
2971 default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp])
2975 CALL keyword_create(keyword, __location__, name=
"MAX_FLOQUET_INDEX", &
2976 description=
"Largest absolute Floquet index up to which "// &
2977 "Floquet Hamiltonian is truncated. Use a larger value to "// &
2978 "ensure convergence at higher computational cost and a "// &
2979 "smaller value for faster computation. EPS_FLOQUET checks "// &
2980 "to ensure that the error due to truncation is small.", &
2981 usage=
"MAX_FLOQUET_INDEX 50", &
2987 description=
"Threshold on the error due to truncation of "// &
2988 "the Floquet Hamiltonian. Used to verify that MAX_FLOQUET_INDEX "// &
2989 "is large enough that truncation errors are small. "// &
2990 "If negative, the check is removed (not recommended).", &
2991 usage=
"EPS_FLOQUET 1.e-10", default_r_val=1.0e-10_dp)
2995 CALL keyword_create(keyword, __location__, name=
"ENERGY_WINDOW", &
2996 description=
"Half-width of the energy range, in eV, centred "// &
2997 "on the Fermi level, over which the Floquet spectral "// &
2998 "function is evaluated.", &
2999 usage=
"ENERGY_WINDOW 5.0", &
3006 description=
"Resolution of the energy E used to compute the "// &
3007 "spectral function within the energy window.", &
3008 usage=
"ENERGY_STEP 0.01", &
3015 description=
"Lorentzian broadening applied to the peaks of the "// &
3016 "Floquet spectral function.", &
3017 usage=
"BROADENING 0.02", &
3023 CALL keyword_create(keyword, __location__, name=
"FLOQUET_DOS_FILE_NAME", &
3024 description=
"File name used for the Floquet spectral function.", &
3025 usage=
"FLOQUET_DOS_FILE_NAME FLOQUET_DOS", &
3026 default_lc_val=
"FLOQUET_DOS")
3030 CALL keyword_create(keyword, __location__, name=
"QUASI_ENERGIES_FILE_NAME", &
3031 description=
"File name used for the Floquet quasi-energies.", &
3032 usage=
"QUASI_ENERGIES_FILE_NAME QUASI_ENERGIES", &
3033 default_lc_val=
"QUASI_ENERGIES")
3037 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.