101#include "./base/base_uses.f90"
106 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_dft'
126 cpassert(.NOT.
ASSOCIATED(section))
128 description=
"Parameter needed by LCAO DFT programs", &
129 n_keywords=3, n_subsections=4, repeats=.false.)
132 CALL keyword_create(keyword, __location__, name=
"BASIS_SET_FILE_NAME", &
133 description=
"Name of the basis set file, may include a path", &
134 usage=
"BASIS_SET_FILE_NAME <FILENAME>", &
135 type_of_var=
lchar_t, repeats=.true., &
136 default_lc_val=
"BASIS_SET", n_var=1)
140 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_FILE_NAME", &
141 description=
"Name of the pseudo potential file, may include a path", &
142 usage=
"POTENTIAL_FILE_NAME <FILENAME>", &
143 default_lc_val=
"POTENTIAL")
147 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
148 variants=[
"RESTART_FILE_NAME"], &
149 description=
"Name of the wavefunction restart file, may include a path."// &
150 " If no file is specified, the default is to open the file as generated by the wfn restart print key.", &
151 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
158 variants=
s2a(
"UNRESTRICTED_KOHN_SHAM", &
161 description=
"Requests a spin-polarized calculation using alpha "// &
162 "and beta orbitals, i.e. no spin restriction is applied", &
164 default_l_val=.false., &
165 lone_keyword_l_val=.true.)
170 variants=[
"RESTRICTED_OPEN_KOHN_SHAM"], &
171 description=
"Requests a restricted open Kohn-Sham calculation", &
173 default_l_val=.false., &
174 lone_keyword_l_val=.true.)
178 name=
"MULTIPLICITY", &
179 variants=[
"MULTIP"], &
180 description=
"Two times the total spin plus one. "// &
181 "Specify 3 for a triplet, 4 for a quartet, "// &
182 "and so on. Default is 1 (singlet) for an "// &
183 "even number and 2 (doublet) for an odd number "// &
185 usage=
"MULTIPLICITY 3", &
190 description=
"The total charge of the system", &
197 name=
"PLUS_U_METHOD", &
198 description=
"Method employed for the calculation of the DFT+U contribution", &
200 enum_c_vals=
s2a(
"LOWDIN",
"MULLIKEN",
"MULLIKEN_CHARGES"), &
202 enum_desc=
s2a(
"Method based on Lowdin population analysis "// &
203 "(computationally expensive, since the diagonalization of the "// &
204 "overlap matrix is required, but possibly more robust than Mulliken)", &
205 "Method based on Mulliken population analysis using the net AO and "// &
206 "overlap populations (computationally cheap method)", &
207 "Method based on Mulliken gross orbital populations (GOP)"), &
210 usage=
"PLUS_U_METHOD Lowdin")
215 name=
"RELAX_MULTIPLICITY", &
216 variants=[
"RELAX_MULTIP"], &
217 description=
"Tolerance in Hartrees. Do not enforce the occupation "// &
218 "of alpha and beta MOs due to the initially "// &
219 "defined multiplicity, but rather follow the Aufbau principle. "// &
220 "A value greater than zero activates this option. "// &
221 "If alpha/beta MOs differ in energy less than this tolerance, "// &
222 "then alpha-MO occupation is preferred even if it is higher "// &
223 "in energy (within the tolerance). "// &
224 "Such spin-symmetry broken (spin-polarized) occupation is used "// &
225 "as SCF input, which (is assumed to) bias the SCF "// &
226 "towards a spin-polarized solution. "// &
227 "Thus, larger tolerance increases chances of ending up "// &
228 "with spin-polarization. "// &
229 "This option is only valid for unrestricted (i.e. spin polarised) "// &
230 "Kohn-Sham (UKS) calculations. It also needs non-zero "// &
231 "[ADDED_MOS](#CP2K_INPUT.FORCE_EVAL.DFT.SCF.ADDED_MOS) to actually affect the calculations, "// &
232 "which is why it is not expected to work with [OT](#CP2K_INPUT.FORCE_EVAL.DFT.SCF.OT) "// &
233 "and may raise errors when used with OT. "// &
234 "For more details see [this discussion](https://github.com/cp2k/cp2k/issues/4389).", &
235 usage=
"RELAX_MULTIPLICITY 0.00001", &
237 default_r_val=0.0_dp)
242 description=
"Read the grid size for subcell generation in the construction of "// &
243 "neighbor lists.", usage=
"SUBCELLS 1.5", &
244 n_var=1, default_r_val=2.0_dp)
249 description=
"Specify size of automatically generated auxiliary (RI) basis sets: "// &
250 "Options={small,medium,large,huge}", &
251 usage=
"AUTO_BASIS {basis_type} {basis_size}", &
252 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=[
"X",
"X"])
257 name=
"SURFACE_DIPOLE_CORRECTION", &
258 variants=
s2a(
"SURFACE_DIPOLE", &
260 description=
"For slab calculations with asymmetric geometries, activate the correction of "// &
261 "the electrostatic potential with "// &
262 "by compensating for the surface dipole. Implemented only for slabs with normal "// &
263 "parallel to one Cartesian axis. The normal direction is given by the keyword SURF_DIP_DIR", &
265 default_l_val=.false., &
266 lone_keyword_l_val=.true., &
272 name=
"SURF_DIP_DIR", &
273 description=
"Cartesian axis parallel to surface normal.", &
274 enum_c_vals=
s2a(
"X",
"Y",
"Z"), &
275 enum_i_vals=[1, 2, 3], &
276 enum_desc=
s2a(
"Along x",
"Along y",
"Along z"), &
279 usage=
"SURF_DIP_DIR Z")
284 name=
"SURF_DIP_POS", &
285 description=
"This keyword assigns an user defined position in Angstroms "// &
286 "in the direction normal to the surface (given by SURF_DIP_DIR). "// &
287 "The default value is -1.0_dp which appplies the correction at a position "// &
288 "that has minimum electron density on the grid.", &
289 usage=
"SURF_DIP_POS -1.0_dp", &
290 default_r_val=-1.0_dp)
295 name=
"SURF_DIP_SWITCH", &
296 description=
"WARNING: Experimental feature under development that will help the "// &
297 "user to switch parameters to facilitate SCF convergence. In its current form the "// &
298 "surface dipole correction is switched off if the calculation does not converge in "// &
299 "(0.5*MAX_SCF + 1) outer_scf steps. "// &
300 "The default value is .FALSE.", &
301 usage=
"SURF_DIP_SWITCH .TRUE.", &
302 default_l_val=.false., &
303 lone_keyword_l_val=.true.)
308 name=
"CORE_CORR_DIP", &
309 description=
"If the total CORE_CORRECTION is non-zero and surface dipole "// &
310 "correction is switched on, presence of this keyword will adjust electron "// &
311 "density via MO occupation to reflect the total CORE_CORRECTION. "// &
312 "The default value is .FALSE.", &
313 usage=
"CORE_CORR_DIP .TRUE.", &
314 default_l_val=.false., &
315 lone_keyword_l_val=.true.)
321 description=
"Sort basis sets according to a certain criterion. ", &
322 enum_c_vals=
s2a(
"DEFAULT",
"EXP"), &
324 enum_desc=
s2a(
"don't sort",
"sort w.r.t. exponent"), &
326 usage=
"SORT_BASIS EXP")
343 CALL create_kg_section(subsection)
359 CALL create_admm_section(subsection)
375 CALL create_relativistic_section(subsection)
379 CALL create_sic_section(subsection)
383 CALL create_low_spin_roks_section(subsection)
420 CALL create_implicit_solv_section(subsection)
424 CALL create_density_fitting_section(subsection)
440 CALL create_rtp_section(subsection)
448 CALL create_sccs_section(subsection)
460 CALL create_hairy_probes_section(subsection)
472 SUBROUTINE create_hairy_probes_section(section)
478 cpassert(.NOT.
ASSOCIATED(section))
480 name=
"HAIRY_PROBES", &
481 description=
"Sets up a Hairy Probe calculation. ", &
482 n_keywords=0, n_subsections=0, repeats=.true.)
485 name=
"_SECTION_PARAMETERS_", &
486 description=
"Controls the activation of hairy probe", &
487 usage=
"&HAIRY_PROBES ON", &
488 default_l_val=.false., &
489 lone_keyword_l_val=.true.)
494 description=
"Indexes of the atoms to which the probes are attached.", &
495 usage=
"ATOM_IDS <INTEGER> .. <INTEGER>", &
501 description=
"Electronic temperature [K]", &
509 description=
"Chemical potential of the electrons in the probes [eV] ", &
517 description=
"Parameter for solution probes ", &
518 usage=
"ALPHA <REAL>", &
519 default_r_val=1.0_dp)
524 description=
" Tolerance for accuracy checks on occupation numbers "// &
525 "calculated using hair-probes. ", &
526 usage=
"EPS_HP <REAL>", &
527 default_r_val=1.0e-5_dp)
530 END SUBROUTINE create_hairy_probes_section
538 SUBROUTINE create_implicit_solv_section(section)
544 NULLIFY (keyword, subsection, print_key)
545 cpassert(.NOT.
ASSOCIATED(section))
547 description=
"Adds an implicit solvation model to the DFT calculation."// &
548 " Know also as Self Consistent Reaction Field.", &
549 n_keywords=0, n_subsections=0, repeats=.false.)
552 description=
"Value of the dielectric constant outside the sphere", &
553 usage=
"EPS_OUT <REAL>", &
554 default_r_val=1.0_dp)
559 description=
"Maximum value of L used in the multipole expansion", &
560 usage=
"LMAX <INTEGER>", &
565 CALL create_sphere_section(subsection)
570 description=
"Controls the printing basic info about the method", &
575 END SUBROUTINE create_implicit_solv_section
582 SUBROUTINE create_sphere_section(section)
588 NULLIFY (keyword, subsection)
589 cpassert(.NOT.
ASSOCIATED(section))
591 description=
"Treats the implicit solvent environment like a sphere", &
592 n_keywords=0, n_subsections=0, repeats=.false.)
595 description=
"Value of the spherical cavity in the dielectric medium", &
596 usage=
"RADIUS <REAL>", &
597 unit_str=
"angstrom", &
602 CALL create_center_section(subsection)
606 END SUBROUTINE create_sphere_section
613 SUBROUTINE create_center_section(section)
619 cpassert(.NOT.
ASSOCIATED(section))
621 description=
"Defines the center of the sphere.", &
622 n_keywords=0, n_subsections=0, repeats=.false.)
624 description=
"Coordinates of the center of the sphere", &
625 usage=
"XYZ <REAL> <REAL> <REAL>", &
626 unit_str=
"angstrom", &
627 type_of_var=
real_t, n_var=3)
632 description=
"Defines a list of atoms to define the center of the sphere", &
633 usage=
"ATOM_LIST <INTEGER> .. <INTEGER>", &
639 description=
"Defines the weight used to define the center of the sphere"// &
640 " (if ATOM_LIST is provided)", &
641 usage=
"WEIGHT_TYPE (UNIT|MASS)", &
642 enum_c_vals=[
"UNIT",
"MASS"], &
649 description=
"Specify if the center of the sphere should be fixed or"// &
650 " allowed to move", &
651 usage=
"FIXED <LOGICAL>", &
652 default_l_val=.true.)
656 END SUBROUTINE create_center_section
662 SUBROUTINE create_admm_section(section)
668 cpassert(.NOT.
ASSOCIATED(section))
669 CALL section_create(section, __location__, name=
"AUXILIARY_DENSITY_MATRIX_METHOD", &
670 description=
"Parameters needed for the ADMM method.", &
671 n_keywords=1, n_subsections=1, repeats=.false., &
675 keyword, __location__, &
677 description=
"Type of ADMM (sort name) as refered in literature. "// &
678 "This sets values for METHOD, ADMM_PURIFICATION_METHOD, and EXCH_SCALING_MODEL", &
679 enum_c_vals=
s2a(
"NONE",
"ADMM1",
"ADMM2",
"ADMMS",
"ADMMP",
"ADMMQ"), &
680 enum_desc=
s2a(
"No short name is used, use specific definitions (default)", &
681 "ADMM1 method from Guidon2010", &
682 "ADMM2 method from Guidon2010", &
683 "ADMMS method from Merlot2014", &
684 "ADMMP method from Merlot2014", &
685 "ADMMQ method from Merlot2014"), &
693 keyword, __location__, &
694 name=
"ADMM_PURIFICATION_METHOD", &
695 description=
"Method that shall be used for wavefunction fitting. Use MO_DIAG for MD.", &
696 enum_c_vals=
s2a(
"NONE",
"CAUCHY",
"CAUCHY_SUBSPACE",
"MO_DIAG",
"MO_NO_DIAG",
"MCWEENY",
"NONE_DM"), &
700 enum_desc=
s2a(
"Do not apply any purification", &
701 "Perform purification via general Cauchy representation", &
702 "Perform purification via Cauchy representation in occupied subspace", &
703 "Calculate MO derivatives via Cauchy representation by diagonalization", &
704 "Calculate MO derivatives via Cauchy representation by inversion", &
705 "Perform original McWeeny purification via matrix multiplications", &
706 "Do not apply any purification, works directly with density matrix"), &
712 keyword, __location__, &
714 description=
"Method that shall be used for wavefunction fitting. Use BASIS_PROJECTION for MD.", &
715 enum_c_vals=
s2a(
"BASIS_PROJECTION",
"BLOCKED_PROJECTION_PURIFY_FULL",
"BLOCKED_PROJECTION", &
716 "CHARGE_CONSTRAINED_PROJECTION"), &
719 enum_desc=
s2a(
"Construct auxiliary density matrix from auxiliary basis.", &
720 "Construct auxiliary density from a blocked Fock matrix,"// &
721 " but use the original matrix for purification.", &
722 "Construct auxiliary density from a blocked Fock matrix.", &
723 "Construct auxiliary density from auxiliary basis enforcing charge constrain."), &
729 keyword, __location__, &
730 name=
"EXCH_SCALING_MODEL", &
731 description=
"Scaling of the exchange correction calculated by the auxiliary density matrix.", &
732 enum_c_vals=
s2a(
"NONE",
"MERLOT"), &
734 enum_desc=
s2a(
"No scaling is enabled, refers to methods ADMM1, ADMM2 or ADMMQ.", &
735 "Exchange scaling according to Merlot (2014)"), &
741 keyword, __location__, &
742 name=
"EXCH_CORRECTION_FUNC", &
743 description=
"Exchange functional which is used for the ADMM correction. "// &
744 "LibXC implementations require linking with LibXC", &
745 enum_c_vals=
s2a(
"DEFAULT",
"PBEX",
"NONE",
"OPTX",
"BECKE88X", &
746 "PBEX_LIBXC",
"BECKE88X_LIBXC",
"OPTX_LIBXC",
"DEFAULT_LIBXC",
"LDA_X_LIBXC"), &
752 enum_desc=
s2a(
"Use PBE-based corrections according to the chosen interaction operator.", &
753 "Use PBEX functional for exchange correction.", &
754 "No correction: X(D)-x(d)-> 0.", &
755 "Use OPTX functional for exchange correction.", &
756 "Use Becke88X functional for exchange correction.", &
757 "Use PBEX functional (LibXC implementation) for exchange correction.", &
758 "Use Becke88X functional (LibXC implementation) for exchange correction.", &
759 "Use OPTX functional (LibXC implementation) for exchange correction.", &
760 "Use PBE-based corrections (LibXC where possible) to the chosen interaction operator.", &
761 "Use Slater X functional (LibXC where possible) for exchange correction."), &
767 description=
"OPTX a1 coefficient", &
768 default_r_val=1.05151_dp)
772 description=
"OPTX a2 coefficient", &
773 default_r_val=1.43169_dp)
777 description=
"OPTX gamma coefficient", &
778 default_r_val=0.006_dp)
783 description=
"Specifies a list of atoms.", &
784 usage=
"BLOCK_LIST {integer} {integer} .. {integer}", &
785 n_var=-1, type_of_var=
integer_t, repeats=.true.)
790 description=
"Define accuracy of DBCSR operations", &
791 usage=
"EPS_FILTER", default_r_val=0.0_dp)
795 END SUBROUTINE create_admm_section
801 SUBROUTINE create_density_fitting_section(section)
807 NULLIFY (keyword, print_key)
808 cpassert(.NOT.
ASSOCIATED(section))
809 CALL section_create(section, __location__, name=
"DENSITY_FITTING", &
810 description=
"Setup parameters for density fitting (Bloechl charges or density derived "// &
811 "atomic point charges (DDAPC) charges)", &
812 n_keywords=7, n_subsections=0, repeats=.false., &
816 description=
"Specifies the numbers of gaussian used to fit the QM density for each atomic site.", &
817 usage=
"NUM_GAUSS {integer}", &
818 n_var=1, type_of_var=
integer_t, default_i_val=3)
823 description=
"Specifies the progression factor for the gaussian exponent for each atomic site.", &
824 usage=
"PFACTOR {real}", &
825 n_var=1, type_of_var=
real_t, default_r_val=1.5_dp)
830 description=
"Specifies the smallest radius of the gaussian used in the fit. All other radius are"// &
831 " obtained with the progression factor.", &
832 usage=
"MIN_RADIUS {real}", &
833 unit_str=
"angstrom", n_var=1, type_of_var=
real_t, default_r_val=0.5_dp)
838 description=
"Specifies all the radius of the gaussian used in the fit for each atomic site. The use"// &
839 " of this keyword disables all other keywords of this section.", &
840 usage=
"RADII {real} {real} .. {real}", &
841 unit_str=
"angstrom", n_var=-1, type_of_var=
real_t)
846 description=
"Cutoff for charge fit in G-space.", &
847 usage=
"GCUT {real}", &
848 n_var=1, type_of_var=
real_t, default_r_val=sqrt(6.0_dp))
853 description=
"Controls the printing of basic information during the run", &
856 CALL keyword_create(keyword, __location__, name=
"CONDITION_NUMBER", &
857 description=
"Prints information regarding the condition numbers of the A matrix (to be inverted)", &
858 usage=
"CONDITION_NUMBER <LOGICAL>", &
859 default_l_val=.false., lone_keyword_l_val=.true.)
866 END SUBROUTINE create_density_fitting_section
873 SUBROUTINE create_relativistic_section(section)
878 cpassert(.NOT.
ASSOCIATED(section))
880 description=
"parameters needed and setup for relativistic calculations", &
881 n_keywords=5, n_subsections=0, repeats=.false.)
886 description=
"type of relativistic correction used", &
887 usage=
"method (NONE|DKH|ZORA)", default_i_val=
rel_none, &
888 enum_c_vals=
s2a(
"NONE",
"DKH",
"ZORA"), &
890 enum_desc=
s2a(
"Use no relativistic correction", &
891 "Use Douglas-Kroll-Hess method", &
897 description=
"The order of the DKH transformation ", &
898 usage=
"DKH_order 2", default_i_val=2)
903 description=
"Type of ZORA method to be used", &
905 enum_c_vals=
s2a(
"FULL",
"MP",
"scMP"), &
906 enum_desc=
s2a(
"Full ZORA method (not implemented)", &
907 "ZORA with atomic model potential", &
908 "Scaled ZORA with atomic model potential"), &
913 CALL keyword_create(keyword, __location__, name=
"transformation", &
914 description=
"Type of DKH transformation", &
915 usage=
"transformation (FULL|MOLECULE|ATOM)", default_i_val=
rel_trans_atom, &
916 enum_c_vals=
s2a(
"FULL",
"MOLECULE",
"ATOM"), &
918 enum_desc=
s2a(
"Use full matrix transformation", &
919 "Use transformation blocked by molecule", &
920 "Use atomic blocks"))
925 description=
"The minimal atomic number considered for atom transformation", &
926 usage=
"z_cutoff 50", default_i_val=1)
931 description=
"External potential used in DKH transformation, full 1/r or erfc(r)/r", &
932 usage=
"POTENTIAL {FULL,ERFC}", default_i_val=
rel_pot_erfc, &
933 enum_c_vals=
s2a(
"FULL",
"ERFC"), &
938 END SUBROUTINE create_relativistic_section
945 SUBROUTINE create_kg_section(section)
951 cpassert(.NOT.
ASSOCIATED(section))
953 description=
"Specifies the parameters for a Kim-Gordon-like partitioning"// &
954 " into molecular subunits", &
955 n_keywords=0, n_subsections=1, repeats=.false., &
958 NULLIFY (keyword, subsection, print_key)
970 CALL keyword_create(keyword, __location__, name=
"COLORING_METHOD", &
971 description=
"Which algorithm to use for coloring.", &
972 usage=
"COLORING_METHOD GREEDY", &
974 enum_c_vals=
s2a(
"DSATUR",
"GREEDY"), &
975 enum_desc=
s2a(
"Maximum degree of saturation, relatively accurate", &
976 "Greedy, fast coloring, less accurate"), &
982 description=
"Algorithm to use for the calculation of the nonadditive kinetic energy.", &
983 usage=
"TNADD_METHOD ATOMIC", &
985 enum_c_vals=
s2a(
"EMBEDDING",
"RI_EMBEDDING",
"ATOMIC",
"NONE"), &
986 enum_desc=
s2a(
"Use full embedding potential (see Iannuzzi et al)", &
987 "Use full embedding potential with RI density fitting", &
988 "Use sum of atomic model potentials", &
989 "Do not use kinetic energy embedding"), &
994 CALL keyword_create(keyword, __location__, name=
"INTEGRATION_GRID", &
995 description=
"Grid [small,medium,large,huge]to be used for the TNADD integration.", &
996 usage=
"INTEGRATION_GRID MEDIUM", &
997 default_c_val=
"MEDIUM")
1002 description=
"Print section", &
1003 n_keywords=0, n_subsections=1, repeats=.false.)
1006 description=
"Controls the printing of the neighbor lists.", &
1007 print_level=
low_print_level, filename=
"__STD_OUT__", unit_str=
"angstrom")
1010 name=
"SAB_ORB_FULL", &
1011 description=
"Activates the printing of the full orbital "// &
1012 "orbital neighbor lists.", &
1013 default_l_val=.false., &
1014 lone_keyword_l_val=.true.)
1019 name=
"SAB_ORB_MOLECULAR", &
1020 description=
"Activates the printing of the orbital "// &
1021 "orbital neighbor lists for molecular subsets.", &
1022 default_l_val=.false., &
1023 lone_keyword_l_val=.true.)
1029 description=
"Activates the printing of the orbital "// &
1030 "atomic potential neighbor list.", &
1031 default_l_val=.false., &
1032 lone_keyword_l_val=.true.)
1042 END SUBROUTINE create_kg_section
1055 cpassert(.NOT.
ASSOCIATED(section))
1057 description=
"This section is used to set up the BSSE calculation. "// &
1058 "It also requires that for each atomic kind X a kind X_ghost is present, "// &
1059 "with the GHOST keyword specified, in addition to the other required fields.", &
1060 n_keywords=3, n_subsections=1, repeats=.false.)
1062 NULLIFY (keyword, subsection)
1065 description=
"Specify the atom number belonging to this fragment.", &
1066 n_keywords=2, n_subsections=0, repeats=.true.)
1069 description=
"Specifies a list of atoms.", &
1070 usage=
"LIST {integer} {integer} .. {integer}", &
1071 repeats=.true., n_var=-1, type_of_var=
integer_t)
1079 CALL section_create(subsection, __location__, name=
"CONFIGURATION", &
1080 description=
"Specify additional parameters for the combinatorial configurations. "// &
1081 "Use this section to manually specify charge and multiplicity of the fragments "// &
1082 "and their combinations.", &
1083 n_keywords=2, n_subsections=0, repeats=.true.)
1086 description=
"Specifies the global configuration using 1 or 0 for each fragment. "// &
1087 "1 specifies the respective fragment as used, 0 as unused.", &
1088 usage=
"GLB_CONF {integer} {integer} .. {integer}", &
1094 description=
"Specifies the subconfiguration using 1 or 0 belonging to the global configuration. "// &
1095 "1 specifies the respective fragment as real, 0 as ghost.", &
1096 usage=
"SUB_CONF {integer} {integer} .. {integer}", &
1102 name=
"MULTIPLICITY", &
1103 variants=[
"MULTIP"], &
1104 description=
"Specify for each fragment the multiplicity. Two times the total spin plus one. "// &
1105 "Specify 3 for a triplet, 4 for a quartet,and so on. Default is 1 (singlet) for an "// &
1106 "even number and 2 (doublet) for an odd number of electrons.", &
1107 usage=
"MULTIPLICITY 3", &
1113 description=
"The total charge for each fragment.", &
1114 usage=
"CHARGE -1", &
1121 CALL section_create(subsection, __location__, name=
"FRAGMENT_ENERGIES", &
1122 description=
"This section contains the energies of the fragments already"// &
1123 " computed. It is useful as a summary and specifically for restarting BSSE runs.", &
1124 n_keywords=2, n_subsections=0, repeats=.true.)
1125 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1126 description=
"The energy computed for each fragment", repeats=.true., &
1127 usage=
"{REAL}", type_of_var=
real_t)
1133 CALL create_print_bsse_section(subsection)
1144 SUBROUTINE create_print_bsse_section(section)
1149 cpassert(.NOT.
ASSOCIATED(section))
1151 description=
"Section of possible print options in BSSE code.", &
1152 n_keywords=0, n_subsections=1, repeats=.false.)
1156 description=
"Controls the printing of information regarding the run.", &
1162 description=
"Controls the dumping of the restart file during BSSE runs. "// &
1163 "By default the restart is updated after each configuration calculation is "// &
1170 END SUBROUTINE create_print_bsse_section
1177 SUBROUTINE create_rigpw_section(section)
1180 cpassert(.NOT.
ASSOCIATED(section))
1182 description=
"This section specifies optional parameters for RIGPW.", &
1183 n_keywords=1, n_subsections=0, repeats=.false.)
1210 END SUBROUTINE create_rigpw_section
1221 LOGICAL,
INTENT(in) :: create_subsections
1226 cpassert(.NOT.
ASSOCIATED(section))
1228 description=
"multigrid information", &
1229 n_keywords=5, n_subsections=1, repeats=.false.)
1232 description=
"The number of multigrids to use", &
1233 usage=
"ngrids 1", default_i_val=4)
1238 description=
"The cutoff of the finest grid level. Default value for "// &
1239 "SE or DFTB calculation is 1.0 [Ry].", &
1241 unit_str=
"Ry"), n_var=1, unit_str=
"Ry")
1245 CALL keyword_create(keyword, __location__, name=
"progression_factor", &
1246 description=
"Factor used to find the cutoff of the multigrids that"// &
1247 " where not given explicitly", &
1248 usage=
"progression_factor <integer>", default_r_val=3._dp)
1252 CALL keyword_create(keyword, __location__, name=
"commensurate", &
1253 description=
"If the grids should be commensurate. If true overrides "// &
1254 "the progression factor and the cutoffs of the sub grids", &
1255 usage=
"commensurate", default_l_val=.false., &
1256 lone_keyword_l_val=.true.)
1261 description=
"If both rho and rho_gspace are needed ", &
1262 usage=
"realspace", default_l_val=.false., &
1263 lone_keyword_l_val=.true.)
1268 variants=[
"RELATIVE_CUTOFF"], &
1269 description=
"Determines the grid at which a Gaussian is mapped,"// &
1270 " giving the cutoff used for a gaussian with alpha=1."// &
1271 " A value 50+-10Ry might be required for highly accurate results,"// &
1272 " Or for simulations with a variable cell."// &
1273 " Versions prior to 2.3 used a default of 30Ry.", &
1274 usage=
"RELATIVE_CUTOFF real", default_r_val=20.0_dp, &
1279 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_SET", &
1280 description=
"Activate a manual setting of the multigrids", &
1281 usage=
"MULTIGRID_SET", default_l_val=.false.)
1286 name=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1287 description=
"Skips load balancing on distributed multigrids. "// &
1288 "Memory usage is O(p) so may be used "// &
1289 "for all but the very largest runs.", &
1290 usage=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1291 default_l_val=.false., &
1292 lone_keyword_l_val=.true.)
1301 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_CUTOFF", &
1302 variants=[
"CUTOFF_LIST"], &
1303 description=
"List of cutoff values to set up multigrids manually", &
1304 usage=
"MULTIGRID_CUTOFF 200.0 100.0 ", &
1311 IF (create_subsections)
THEN
1312 NULLIFY (subsection)
1317 NULLIFY (subsection)
1335 cpassert(.NOT.
ASSOCIATED(section))
1336 CALL section_create(section, __location__, name=
"interpolator", &
1337 description=
"kind of interpolation used between the multigrids", &
1338 n_keywords=5, n_subsections=0, repeats=.false.)
1340 NULLIFY (keyword, print_key)
1343 description=
"the interpolator to use", &
1344 usage=
"kind spline3", &
1346 enum_c_vals=
s2a(
"pw",
"spline3_nopbc",
"spline3"), &
1352 CALL keyword_create(keyword, __location__, name=
"safe_computation", &
1353 description=
"if a non unrolled calculation is to be performed in parallel", &
1354 usage=
"safe_computation OFF", &
1355 default_l_val=.false., &
1356 lone_keyword_l_val=.true.)
1360 CALL keyword_create(keyword, __location__, name=
"aint_precond", &
1361 description=
"the approximate inverse to use to get the starting point"// &
1362 " for the linear solver of the spline3 methods", &
1363 usage=
"aint_precond copy", &
1365 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1366 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1373 description=
"The preconditioner used"// &
1374 " for the linear solver of the spline3 methods", &
1375 usage=
"PRECOND copy", &
1377 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1378 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1385 description=
"accuracy on the solution for spline3 the interpolators", &
1386 usage=
"eps_x 1.e-15", default_r_val=1.e-10_dp)
1391 description=
"accuracy on the residual for spline3 the interpolators", &
1392 usage=
"eps_r 1.e-15", default_r_val=1.e-10_dp)
1397 variants=[
'maxiter'], &
1398 description=
"the maximum number of iterations", &
1399 usage=
"max_iter 200", default_i_val=100)
1405 description=
"if convergence information about the linear solver"// &
1406 " of the spline methods should be printed", &
1408 each_iter_values=[10], filename=
"__STD_OUT__", &
1420 SUBROUTINE create_sic_section(section)
1425 cpassert(.NOT.
ASSOCIATED(section))
1427 description=
"parameters for the self interaction correction", &
1428 n_keywords=6, n_subsections=0, repeats=.false., &
1433 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_A", &
1434 description=
"Scaling of the coulomb term in sic [experimental]", &
1435 usage=
"SIC_SCALING_A 0.5", &
1437 default_r_val=1.0_dp)
1441 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_B", &
1442 description=
"Scaling of the xc term in sic [experimental]", &
1443 usage=
"SIC_SCALING_B 0.5", &
1445 default_r_val=1.0_dp)
1450 description=
"Method used to remove the self interaction", &
1451 usage=
"SIC_METHOD MAURI_US", &
1453 enum_c_vals=
s2a(
"NONE",
"MAURI_US",
"MAURI_SPZ",
"AD",
"EXPLICIT_ORBITALS"), &
1455 enum_desc=
s2a(
"Do not apply a sic correction", &
1456 "Employ a (scaled) correction proposed by Mauri and co-workers"// &
1457 " on the spin density / doublet unpaired orbital", &
1458 "Employ a (scaled) Perdew-Zunger expression"// &
1459 " on the spin density / doublet unpaired orbital", &
1460 "The average density correction", &
1461 "(scaled) Perdew-Zunger correction explicitly on a set of orbitals."), &
1467 description=
"Type of orbitals treated with the SIC", &
1468 usage=
"ORBITAL_SET ALL", &
1470 enum_c_vals=
s2a(
"UNPAIRED",
"ALL"), &
1471 enum_desc=
s2a(
"correction for the unpaired orbitals only, requires a restricted open shell calculation", &
1472 "correction for all orbitals, requires a LSD or ROKS calculation"), &
1477 END SUBROUTINE create_sic_section
1484 SUBROUTINE create_low_spin_roks_section(section)
1489 cpassert(.NOT.
ASSOCIATED(section))
1490 CALL section_create(section, __location__, name=
"LOW_SPIN_ROKS", &
1491 description=
"Specify the details of the low spin ROKS method. "// &
1492 "In particular, one can specify various terms added to the energy of the high spin roks configuration"// &
1493 " with a energy scaling factor, and a prescription of the spin state.", &
1494 n_keywords=6, n_subsections=0, repeats=.false.)
1497 CALL keyword_create(keyword, __location__, name=
"ENERGY_SCALING", &
1498 description=
"The scaling factors for each term added to the total energy. "// &
1499 "This list should contain one number for each term added to the total energy.", &
1500 usage=
"ENERGY_SCALING 1.0 -1.0 ", &
1501 n_var=-1, type_of_var=
real_t, repeats=.false.)
1505 keyword, __location__, name=
"SPIN_CONFIGURATION", &
1506 description=
"For each singly occupied orbital, specify if this should be an alpha (=1) or a beta (=2) orbital. "// &
1507 "This keyword should be repeated, each repetition corresponding to an additional term.", &
1508 usage=
"SPIN_CONFIGURATION 1 2", &
1509 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1513 END SUBROUTINE create_low_spin_roks_section
1519 SUBROUTINE create_rtp_section(section)
1523 TYPE(
section_type),
POINTER :: print_key, print_section, subsection
1526 cpassert(.NOT.
ASSOCIATED(section))
1527 CALL section_create(section, __location__, name=
"REAL_TIME_PROPAGATION", &
1528 description=
"Parameters needed to set up the real time propagation"// &
1529 " for the electron dynamics. This currently works only in the NVE ensemble.", &
1530 n_keywords=4, n_subsections=4, repeats=.false., &
1534 description=
"Maximal number of iterations for the self consistent propagator loop.", &
1535 usage=
"MAX_ITER 10", &
1541 description=
"Convergence criterion for the self consistent propagator loop.", &
1542 usage=
"EPS_ITER 1.0E-5", &
1543 default_r_val=1.0e-7_dp)
1548 description=
"Speciefies how many steps will be used for extrapolation. "// &
1549 "One will be always used which is means X(t+dt)=X(t)", &
1550 usage=
"ASPC_ORDER 3", &
1556 description=
"Which method should be used to calculate the exponential"// &
1557 " in the propagator. It is recommended to use BCH when employing density_propagation "// &
1558 "and ARNOLDI otherwise.", &
1559 usage=
"MAT_EXP TAYLOR", default_i_val=
do_arnoldi, &
1560 enum_c_vals=
s2a(
"TAYLOR",
"PADE",
"ARNOLDI",
"BCH",
"EXACT"), &
1562 enum_desc=
s2a(
"exponential is evaluated using scaling and squaring in combination"// &
1563 " with a taylor expansion of the exponential.", &
1564 "uses scaling and squaring together with the pade approximation", &
1565 "uses arnoldi subspace algorithm to compute exp(H)*MO directly, can't be used in "// &
1566 "combination with Crank Nicholson or density propagation", &
1567 "Uses a Baker-Campbell-Hausdorff expansion to propagate the density matrix,"// &
1568 " only works for density propagation", &
1569 "Uses diagonalisation of the exponent matrices to determine the "// &
1570 "matrix exponential exactly. Only implemented for GWBSE."))
1574 CALL keyword_create(keyword, __location__, name=
"DENSITY_PROPAGATION", &
1575 description=
"The density matrix is propagated instead of the molecular orbitals. "// &
1576 "This can allow a linear scaling simulation. The density matrix is filtered with "// &
1577 "the threshold based on the EPS_FILTER keyword from the LS_SCF section", &
1578 usage=
"DENSITY_PROPAGATION .TRUE.", &
1579 default_l_val=.false., lone_keyword_l_val=.true.)
1583 CALL keyword_create(keyword, __location__, name=
"SC_CHECK_START", &
1584 description=
"Speciefies how many iteration steps will be done without "// &
1585 "a check for self consistency. Can save some time in big calculations.", &
1586 usage=
"SC_CHECK_START 3", &
1591 CALL keyword_create(keyword, __location__, name=
"EXP_ACCURACY", &
1592 description=
"Accuracy for the taylor and pade approximation. "// &
1593 "This is only an upper bound bound since the norm used for the guess "// &
1594 "is an upper bound for the needed one.", &
1595 usage=
"EXP_ACCURACY 1.0E-6", &
1596 default_r_val=1.0e-9_dp)
1601 description=
"Which propagator should be used for the orbitals", &
1602 usage=
"PROPAGATOR ETRS", default_i_val=
do_etrs, &
1603 enum_c_vals=
s2a(
"ETRS",
"CN",
"EM"), &
1605 enum_desc=
s2a(
"enforced time reversible symmetry", &
1606 "Crank Nicholson propagator", &
1607 "Exponential midpoint propagator"))
1612 description=
"Controls the initial WFN used for propagation. "// &
1613 "Note that some energy contributions may not be "// &
1614 "initialized in the restart cases, for instance "// &
1615 "electronic entropy energy in the case of smearing.", &
1616 usage=
"INITIAL_WFN SCF_WFN", default_i_val=
use_scf_wfn, &
1617 enum_c_vals=
s2a(
"SCF_WFN",
"RESTART_WFN",
"RT_RESTART"), &
1619 enum_desc=
s2a(
"An SCF run is performed to get the initial state.", &
1620 "A wavefunction from a previous SCF is propagated. Especially useful,"// &
1621 " if electronic constraints or restraints are used in the previous calculation, "// &
1622 "since these do not work in the rtp scheme.", &
1623 "use the wavefunction of a real time propagation/ehrenfest run"))
1627 CALL keyword_create(keyword, __location__, name=
"APPLY_WFN_MIX_INIT_RESTART", &
1628 description=
"If set to True and in the case of INITIAL_WFN=RESTART_WFN, call the "// &
1629 "DFT%PRINT%WFN_MIX section to mix the read initial wfn. The starting wave-function of the "// &
1630 "RTP will be the mixed one. Setting this to True without a defined WFN_MIX section will "// &
1631 "not do anything as defining a WFN_MIX section without this keyword for RTP run with "// &
1632 "INITIAL_WFN=RESTART_WFN. Note that if INITIAL_WFN=SCF_WFN, this keyword is not needed to "// &
1633 "apply the mixing defined in the WFN_MIX section. Default is False.", &
1634 usage=
"APPLY_WFN_MIX_INIT_RESTART", &
1635 default_l_val=.false., lone_keyword_l_val=.true.)
1639 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE", &
1640 description=
"Applies a delta kick to the initial wfn (only RTP for now - the EMD"// &
1641 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1642 usage=
"APPLY_DELTA_PULSE", &
1643 default_l_val=.false., lone_keyword_l_val=.true.)
1647 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE_MAG", &
1648 description=
"Applies a magnetic delta kick to the initial wfn (only RTP for now - the EMD"// &
1649 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1650 usage=
"APPLY_DELTA_PULSE_MAG", &
1651 default_l_val=.false., lone_keyword_l_val=.true.)
1655 CALL keyword_create(keyword, __location__, name=
"VELOCITY_GAUGE", &
1656 description=
"Perform propagation in the velocity gauge using the explicit vector potential"// &
1657 " only a constant vector potential as of now (corresonding to a delta-pulse)."// &
1658 " uses DELTA_PULSE_SCALE and DELTA_PULSE_DIRECTION to define the vector potential", &
1659 usage=
"VELOCITY_GAUGE T", &
1660 default_l_val=.false., lone_keyword_l_val=.true.)
1665 description=
"Define gauge origin for magnetic perturbation", &
1666 usage=
"GAUGE_ORIG COM", &
1667 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1668 enum_desc=
s2a(
"Use Center of Mass", &
1669 "Use Center of Atomic Charges", &
1670 "Use User Defined Point (Keyword:REF_POINT)", &
1671 "Use Origin of Coordinate System"), &
1680 CALL keyword_create(keyword, __location__, name=
"GAUGE_ORIG_MANUAL", &
1681 description=
"Manually defined gauge origin for magnetic perturbation [in Bohr!]", &
1682 usage=
"GAUGE_ORIG_MANUAL x y z", &
1684 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1691 description=
"apply gauge transformed non-local potential term"// &
1692 " only affects VELOCITY_GAUGE=.TRUE.", &
1693 usage=
"VG_COM_NL T", &
1694 default_l_val=.true., lone_keyword_l_val=.true.)
1699 description=
"Include non-local commutator for periodic delta pulse."// &
1700 " only affects PERIODIC=.TRUE.", &
1702 default_l_val=.true., lone_keyword_l_val=.true.)
1707 description=
"Use length representation delta pulse (in conjunction with PERIODIC T)."// &
1708 " This corresponds to a 1st order perturbation in the length gauge."// &
1709 " Note that this is NOT compatible with a periodic calculation!"// &
1710 " Uses the reference point defined in DFT%PRINT%MOMENTS ", &
1711 usage=
"LEN_REP T", &
1712 default_l_val=.false., lone_keyword_l_val=.true.)
1717 description=
"Apply a delta-kick that is compatible with periodic boundary conditions"// &
1718 " for any value of DELTA_PULSE_SCALE. Uses perturbation theory for the preparation of"// &
1719 " the initial wfn with the velocity operator as perturbation."// &
1720 " If LEN_REP is .FALSE. this corresponds to a first order velocity gauge."// &
1721 " Note that the pulse is only applied when INITIAL_WFN is set to SCF_WFN,"// &
1722 " and not for restarts (RT_RESTART).", &
1724 default_l_val=.true., lone_keyword_l_val=.true.)
1728 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_DIRECTION", &
1729 description=
"Direction of the applied electric field. The k vector is given as"// &
1730 " 2*Pi*[i,j,k]*inv(h_mat), which for PERIODIC .FALSE. yields exp(ikr) periodic with"// &
1731 " the unit cell, only if DELTA_PULSE_SCALE is set to unity. For an orthorhombic cell"// &
1732 " [1,0,0] yields [2*Pi/L_x,0,0]. For small cells, this results in a very large kick.", &
1733 usage=
"DELTA_PULSE_DIRECTION 1 1 1", n_var=3, default_i_vals=[1, 0, 0], &
1738 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_SCALE", &
1739 description=
"Scale the k vector, which for PERIODIC .FALSE. results in exp(ikr) no"// &
1740 " longer being periodic with the unit cell. The norm of k is the strength of the"// &
1741 " applied electric field in atomic units.", &
1742 usage=
"DELTA_PULSE_SCALE 0.01 ", n_var=1, default_r_val=0.001_dp)
1746 CALL keyword_create(keyword, __location__, name=
"HFX_BALANCE_IN_CORE", &
1747 description=
"If HFX is used, this keyword forces a redistribution/recalculation"// &
1748 " of the integrals, balanced with respect to the in core steps.", &
1749 usage=
"HFX_BALANCE_IN_CORE", &
1750 default_l_val=.false., lone_keyword_l_val=.true.)
1754 CALL keyword_create(keyword, __location__, name=
"MCWEENY_MAX_ITER", &
1755 description=
"Determines the maximum amount of McWeeny steps used after each converged"// &
1756 " step in density propagation", &
1757 usage=
"MCWEENY_MAX_ITER 2", default_i_val=1)
1762 keyword, __location__, name=
"ACCURACY_REFINEMENT", &
1763 description=
"If using density propagation some parts should be calculated with a higher accuracy than the rest"// &
1764 " to reduce numerical noise. This factor determines by how much the filtering threshold is"// &
1765 " reduced for these calculations.", &
1766 usage=
"ACCURACY_REFINEMENT", default_i_val=100)
1771 description=
"Threshold after which McWeeny is terminated", &
1772 usage=
"MCWEENY_EPS 0.00001", &
1773 default_r_val=0.0_dp)
1777 NULLIFY (print_section)
1779 description=
"Section of possible print options for an RTP runs", &
1784 description=
"Controls the printing within real time propagation and Eherenfest dynamics", &
1790 description=
"Controls the dumping of the MO restart file during rtp. "// &
1791 "By default keeps a short history of three restarts. "// &
1792 "See also RESTART_HISTORY. In density propagation this controls the printing of "// &
1793 "density matrix.", &
1795 each_iter_names=
s2a(
"MD"), each_iter_values=[20], &
1797 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1798 description=
"Specifies the maximum number of backup copies.", &
1799 usage=
"BACKUP_COPIES {int}", &
1807 description=
"Dumps unique MO restart files during the run keeping all of them. "// &
1808 "In density propagation it dumps the density matrix instead", &
1810 each_iter_names=
s2a(
"MD"), &
1811 each_iter_values=[500], &
1813 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1814 description=
"Specifies the maximum number of backup copies.", &
1815 usage=
"BACKUP_COPIES {int}", &
1823 description=
"Print the time-dependent field applied during an EMD simulation in "// &
1826 each_iter_names=
s2a(
"MD"), &
1827 each_iter_values=[1], &
1828 filename=
"applied_field")
1837 description=
"Print the integral of the current density (only if the"// &
1838 " imaginary part of the density is NOT zero.", &
1840 each_iter_names=
s2a(
"MD"), &
1841 each_iter_values=[1], &
1842 filename=
"rtp_j_int")
1847 description=
"Print the current during an EMD simulation to cube files.", &
1849 each_iter_names=
s2a(
"MD"), &
1850 each_iter_values=[20], &
1852 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1853 description=
"Specifies the maximum number of backup copies.", &
1854 usage=
"BACKUP_COPIES {int}", &
1859 description=
"The stride (X,Y,Z) used to write the cube file "// &
1860 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1861 " 1 number valid for all components.", &
1862 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1871 description=
"Prints the density matrix at iterations in clear text to a file", &
1873 each_iter_names=
s2a(
"MD"), &
1874 each_iter_values=[1], &
1880 description=
"Prints the time-dependent electronic moments at "// &
1881 "iterations in clear text to a file.", &
1883 each_iter_names=
s2a(
"MD"), &
1884 each_iter_values=[1], &
1885 filename=
"__STD_OUT__")
1887 variants=
s2a(
"REF"), &
1888 description=
"Define the reference point for the calculation of the electrostatic moment.", &
1889 usage=
"REFERENCE COM", &
1890 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1891 enum_desc=
s2a(
"Use Center of Mass", &
1892 "Use Center of Atomic Charges", &
1893 "Use User Defined Point (Keyword:REFERENCE_POINT)", &
1894 "Use Origin of Coordinate System"), &
1903 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
1904 variants=
s2a(
"REF_POINT"), &
1905 description=
"Fixed reference point for the calculations of the electrostatic moment.", &
1906 usage=
"REFERENCE_POINT x y z", &
1908 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1910 unit_str=
'angstrom')
1917 description=
"Prints the calculated Fourier transform of "// &
1918 "time-dependent moments. For calculations with real time pulse (not delta kick) "// &
1919 "can be supplied with starting time.", &
1921 each_iter_names=
s2a(
"MD"), &
1922 each_iter_values=[1], &
1923 filename=
"MOMENTS_FT")
1928 description=
"Prints the chosen element of the energy dependent polarizability tensor "// &
1929 "to a specified file. The tensor is calculated as ratio of "// &
1930 "Fourier transform of the dipole "// &
1931 "moment trace and Fourier transform of the applied field "// &
1932 "(for delta kick, constant real field is applied.", &
1934 each_iter_names=
s2a(
"MD"), &
1935 each_iter_values=[1], &
1936 filename=
"POLARIZABILITY")
1938 description=
"Specifies the element of polarizability which is to be printed out "// &
1939 "(indexing starts at 1). If not explicitly provided, RTBSE code tries to guess "// &
1940 "the optimal values - for applied electric field (both delta pulse and RT field) "// &
1941 "with only a single non-zero cartesian component, prints the 3 trivially available elements.", &
1942 type_of_var=
integer_t, default_i_vals=[1, 1], n_var=2, usage=
"ELEMENT 1 1", repeats=.true.)
1949 description=
"Print the energy constituents (relevant to RTP) which make up "// &
1950 "the Total Energy", &
1952 each_iter_names=
s2a(
"MD"), &
1953 each_iter_values=[1], &
1962 NULLIFY (subsection)
1963 CALL create_rtbse_section(subsection)
1967 CALL create_ft_section(subsection)
1971 END SUBROUTINE create_rtp_section
1977 SUBROUTINE create_rtbse_section(section)
1983 cpassert(.NOT.
ASSOCIATED(section))
1986 description=
"Controls options for the real-time Bethe-Salpeter (RTBSE) propagation. "// &
1987 "Note that running RTBSE requires previous low-scaling "// &
1988 "[GW](#CP2K_INPUT.FORCE_EVAL.PROPERTIES.BANDSTRUCTURE.GW) calculation. Also note that "// &
1989 "designating this section as RTBSE run but choosing run type ENERGY leads to potential "// &
1990 "deallocation errors.", &
1994 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1995 description=
"Which method is used for the time propagation of electronic structure. "// &
1996 "By default, use the TDDFT method. Can also choose RT-BSE method, which propagates the lesser "// &
1997 "Green's function instead of density matrix/molecular orbitals.", &
1998 usage=
"&RTBSE TDDFT", &
2001 enum_c_vals=
s2a(
"TDDFT",
"RTBSE"), &
2003 enum_desc=
s2a(
"Use TDDFT for density matrix/MO propagation.", &
2004 "Use RT-BSE for Green's function propagation"))
2009 CALL keyword_create(keyword, __location__, name=
"RTBSE_HAMILTONIAN", &
2010 description=
"Which Hamiltonian to use as the single-particle Hamiltonian"// &
2011 " in the Green's propagator.", &
2012 usage=
"RTBSE_HAMILTONIAN G0W0", &
2014 enum_c_vals=
s2a(
"KS",
"G0W0"), &
2016 enum_desc=
s2a(
"Use Kohn-Sham Hamiltonian for Green's propagation.", &
2017 "Use G0W0 Hamiltonian for Green's function propagation"))
2021 END SUBROUTINE create_rtbse_section
2028 SUBROUTINE create_ft_section(ft_section)
2034 cpassert(.NOT.
ASSOCIATED(ft_section))
2039 description=
"Define parameters for Fourier transforms used in RTP outputs.", &
2045 description=
"The starting time from which damping is applied and from which on the trace is "// &
2046 "considered for the Fourier transform (Fourier transform is used for the calculation of "// &
2047 "MOMENTS_FT and POLARIZABILITY). Useful for real-time pulse - "// &
2048 "one can specify the center of the pulse as the starting point.", &
2051 default_r_val=0.0_dp)
2057 description=
"Numerical Fourier transform (required for calculation of "// &
2058 "MOMENTS_FT and POLARIZABILITY) can oscillate "// &
2059 "when the final time trace values are far away from zero. "// &
2060 "This keyword controls the exponential damping added to the Fourier transform "// &
2061 "(Fourier transform is used for calculation of MOMENTS_FT and POLARIZABILITY). "// &
2062 "For negative values (the default), calculates the damping at the run time so that the last point "// &
2063 "in the time trace is reduced by factor e^(-4). When set manually, determines the time in which "// &
2064 "the moments trace is reduced by factor of e^(-1), except when set to zero, in which case "// &
2065 "the damping is not applied.", &
2073 NULLIFY (subsection)
2075 description=é
"Defines the parameters for the Pad interpolation of the "// &
2076 "Fourier transforms used in the output of RTP. Only available with the GreenX library linked to CP2K.", &
2080 CALL keyword_create(keyword, __location__,
"_SECTION_PARAMETERS_", &
2081 description=é
"Turns on the Pad interpolation", &
2083 default_l_val=.false., &
2084 lone_keyword_l_val=.true.)
2090 description=é
"The minimum energy of the Pad interpolation output.", &
2093 default_r_val=0.0_dp)
2099 description=é
"The maximum energy of the Pad interpolation output.", &
2102 default_r_val=100.0_dp)
2108 description=é
"The energy resolution of the Pad interpolation output.", &
2111 default_r_val=0.02_dp/
evolt)
2117 description=
"The lower boundary in energy for the points "// &
2118 é
"used in the fitting of Pad parameters. If negative, uses "// &
2119 "value of E_MIN (default).", &
2122 default_r_val=-1.0_dp)
2128 description=
"The upper boundary in energy for the points "// &
2129 é
"used in the fitting of Pad parameters. If negative, uses "// &
2130 "the value of E_MAX (default).", &
2133 default_r_val=-1.0_dp)
2140 END SUBROUTINE create_ft_section
2150 SUBROUTINE create_sccs_section(section)
2157 cpassert(.NOT.
ASSOCIATED(section))
2161 description=
"Define the parameters for self-consistent continuum solvation (SCCS) model", &
2170 name=
"_SECTION_PARAMETERS_", &
2171 description=
"Controls the activation of the SCCS section", &
2173 default_l_val=.false., &
2174 lone_keyword_l_val=.true.)
2180 description=
"Solvent specific tunable parameter for the calculation of "// &
2181 "the repulsion term $G^\text{rep} = \alpha S$ "// &
2182 "where $S$ is the (quantum) surface of the cavity", &
2186 default_r_val=0.0_dp, &
2193 description=
"Solvent specific tunable parameter for the calculation of "// &
2194 "the dispersion term $G^\text{dis} = \beta V$ "// &
2195 "where $V$ is the (quantum) volume of the cavity", &
2199 default_r_val=0.0_dp, &
2206 description=
"Numerical increment for the calculation of the (quantum) "// &
2207 "surface of the solute cavity", &
2211 default_r_val=2.0e-5_dp)
2216 name=
"DERIVATIVE_METHOD", &
2217 description=
"Method for the calculation of the numerical derivatives on the real-space grids", &
2218 usage=
"DERIVATIVE_METHOD cd5", &
2222 enum_c_vals=
s2a(
"FFT",
"CD3",
"CD5",
"CD7"), &
2227 enum_desc=
s2a(
"Fast Fourier transformation", &
2228 "3-point stencil central differences", &
2229 "5-point stencil central differences", &
2230 "7-point stencil central differences"))
2235 name=
"RELATIVE_PERMITTIVITY", &
2236 variants=
s2a(
"DIELECTRIC_CONSTANT",
"EPSILON_RELATIVE",
"EPSILON_SOLVENT"), &
2237 description=
"Relative permittivity (dielectric constant) of the solvent (medium)", &
2241 default_r_val=80.0_dp, &
2242 usage=
"RELATIVE_PERMITTIVITY 78.36")
2248 variants=
s2a(
"EPS_ITER",
"TAU_POL"), &
2249 description=
"Tolerance for the convergence of the polarisation density, "// &
2250 "i.e. requested accuracy for the SCCS iteration cycle", &
2254 default_r_val=1.0e-6_dp, &
2255 usage=
"EPS_ITER 1.0E-7")
2261 description=
"The SCCS iteration cycle is activated only if the SCF iteration cycle "// &
2262 "is converged to this threshold value", &
2266 default_r_val=0.5_dp, &
2267 usage=
"EPS_SCF 1.0E-2")
2273 variants=
s2a(
"SURFACE_TENSION"), &
2274 description=
"Surface tension of the solvent used for the calculation of "// &
2275 "the cavitation term $G^\text{cav} = \gamma S$ "// &
2276 "where $S$ is the (quantum) surface of the cavity", &
2280 default_r_val=0.0_dp, &
2287 description=
"Maximum number of SCCS iteration steps performed to converge "// &
2288 "within the given tolerance", &
2292 default_i_val=100, &
2293 usage=
"MAX_ITER 50")
2299 description=
"Method used for the smoothing of the dielectric function", &
2300 usage=
"METHOD Fattebert-Gygi", &
2302 enum_c_vals=
s2a(
"ANDREUSSI",
"FATTEBERT-GYGI"), &
2304 enum_desc=
s2a(
"Smoothing function proposed by Andreussi et al.", &
2305 "Smoothing function proposed by Fattebert and Gygi"))
2312 description=
"Mixing parameter (Hartree damping) employed during the iteration procedure", &
2316 default_r_val=0.6_dp, &
2321 NULLIFY (subsection)
2325 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2326 "Andreussi et al.", &
2334 description=
"Maximum density value used for the smoothing of the dielectric function", &
2338 default_r_val=0.0035_dp, &
2339 usage=
"RHO_MAX 0.01")
2345 description=
"Minimum density value used for the smoothing of the dielectric function", &
2349 default_r_val=0.0001_dp, &
2350 usage=
"RHO_MIN 0.0003")
2358 name=
"FATTEBERT-GYGI", &
2359 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2360 "Fattebert and Gygi", &
2368 description=
"Parameter β changes the width of the interface solute-solvent", &
2372 default_r_val=1.7_dp, &
2379 variants=[
"RHO0"], &
2380 description=
"Parameter $\rho_0$ defines the critical density in the middle "// &
2381 "of the interface solute-solvent", &
2385 default_r_val=0.0006_dp, &
2386 usage=
"RHO_ZERO 0.0004")
2393 END SUBROUTINE create_sccs_section
integer, parameter, public basis_sort_zet
integer, parameter, public basis_sort_default
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public vandevondele2005b
integer, save, public blochl1995
integer, save, public guidon2010
integer, save, public bengtsson1999
integer, save, public kunert2003
integer, save, public yin2017
integer, save, public avezac2005
integer, save, public andreussi2012
integer, save, public iannuzzi2006
integer, save, public fattebert2002
integer, save, public andermatt2016
integer, save, public merlot2014
integer, save, public perdew1981
integer, save, public marek2025
integer, save, public brelaz1979
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
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
utils to manipulate splines on the regular grid of a pw
integer, parameter, public pw_interp
integer, parameter, public spline3_nopbc_interp
integer, parameter, public spline3_pbc_interp
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
Definition of physical constants:
real(kind=dp), parameter, public femtoseconds
real(kind=dp), parameter, public evolt
different utils that are useful to manipulate splines on the regular grid of a pw
integer, parameter, public precond_spl3_3
integer, parameter, public precond_spl3_aint
integer, parameter, public no_precond
integer, parameter, public precond_spl3_2
integer, parameter, public precond_spl3_aint2
integer, parameter, public precond_spl3_1
Utilities for string manipulations.