102#include "./base/base_uses.f90"
107 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_dft'
127 cpassert(.NOT.
ASSOCIATED(section))
129 description=
"Parameter needed by LCAO DFT programs", &
130 n_keywords=3, n_subsections=4, repeats=.false.)
133 CALL keyword_create(keyword, __location__, name=
"BASIS_SET_FILE_NAME", &
134 description=
"Name of the basis set file, may include a path", &
135 usage=
"BASIS_SET_FILE_NAME <FILENAME>", &
136 type_of_var=
lchar_t, repeats=.true., &
137 default_lc_val=
"BASIS_SET", n_var=1)
141 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_FILE_NAME", &
142 description=
"Name of the pseudo potential file, may include a path", &
143 usage=
"POTENTIAL_FILE_NAME <FILENAME>", &
144 default_lc_val=
"POTENTIAL")
148 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
149 variants=[
"RESTART_FILE_NAME"], &
150 description=
"Name of the wavefunction restart file, may include a path."// &
151 " If no file is specified, the default is to open the file as generated by the wfn restart print key.", &
152 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
159 variants=
s2a(
"UNRESTRICTED_KOHN_SHAM", &
162 description=
"Requests a spin-polarized calculation using alpha "// &
163 "and beta orbitals, i.e. no spin restriction is applied", &
165 default_l_val=.false., &
166 lone_keyword_l_val=.true.)
171 variants=[
"RESTRICTED_OPEN_KOHN_SHAM"], &
172 description=
"Requests a restricted open Kohn-Sham calculation", &
174 default_l_val=.false., &
175 lone_keyword_l_val=.true.)
179 name=
"MULTIPLICITY", &
180 variants=[
"MULTIP"], &
181 description=
"Two times the total spin plus one. "// &
182 "Specify 3 for a triplet, 4 for a quartet, "// &
183 "and so on. Default is 1 (singlet) for an "// &
184 "even number and 2 (doublet) for an odd number "// &
186 usage=
"MULTIPLICITY 3", &
191 description=
"The total charge of the system", &
198 name=
"PLUS_U_METHOD", &
199 description=
"Method employed for the calculation of the DFT+U contribution", &
201 enum_c_vals=
s2a(
"LOWDIN",
"MULLIKEN",
"MULLIKEN_CHARGES"), &
203 enum_desc=
s2a(
"Method based on Lowdin population analysis "// &
204 "(computationally expensive, since the diagonalization of the "// &
205 "overlap matrix is required, but possibly more robust than Mulliken)", &
206 "Method based on Mulliken population analysis using the net AO and "// &
207 "overlap populations (computationally cheap method)", &
208 "Method based on Mulliken gross orbital populations (GOP)"), &
211 usage=
"PLUS_U_METHOD Lowdin")
216 name=
"RELAX_MULTIPLICITY", &
217 variants=[
"RELAX_MULTIP"], &
218 description=
"Tolerance in Hartrees. Do not enforce the occupation "// &
219 "of alpha and beta MOs due to the initially "// &
220 "defined multiplicity, but rather follow the Aufbau principle. "// &
221 "A value greater than zero activates this option. "// &
222 "If alpha/beta MOs differ in energy less than this tolerance, "// &
223 "then alpha-MO occupation is preferred even if it is higher "// &
224 "in energy (within the tolerance). "// &
225 "Such spin-symmetry broken (spin-polarized) occupation is used "// &
226 "as SCF input, which (is assumed to) bias the SCF "// &
227 "towards a spin-polarized solution. "// &
228 "Thus, larger tolerance increases chances of ending up "// &
229 "with spin-polarization. "// &
230 "This option is only valid for unrestricted (i.e. spin polarised) "// &
231 "Kohn-Sham (UKS) calculations. It also needs non-zero "// &
232 "[ADDED_MOS](#CP2K_INPUT.FORCE_EVAL.DFT.SCF.ADDED_MOS) to actually affect the calculations, "// &
233 "which is why it is not expected to work with [OT](#CP2K_INPUT.FORCE_EVAL.DFT.SCF.OT) "// &
234 "and may raise errors when used with OT. "// &
235 "For more details see [this discussion](https://github.com/cp2k/cp2k/issues/4389).", &
236 usage=
"RELAX_MULTIPLICITY 0.00001", &
238 default_r_val=0.0_dp)
243 description=
"Read the grid size for subcell generation in the construction of "// &
244 "neighbor lists.", usage=
"SUBCELLS 1.5", &
245 n_var=1, default_r_val=2.0_dp)
250 description=
"Specify size of automatically generated auxiliary (RI) basis sets: "// &
251 "Options={small,medium,large,huge}", &
252 usage=
"AUTO_BASIS {basis_type} {basis_size}", &
253 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=[
"X",
"X"])
258 name=
"SURFACE_DIPOLE_CORRECTION", &
259 variants=
s2a(
"SURFACE_DIPOLE", &
261 description=
"For slab calculations with asymmetric geometries, activate the correction of "// &
262 "the electrostatic potential with "// &
263 "by compensating for the surface dipole. Implemented only for slabs with normal "// &
264 "parallel to one Cartesian axis. The normal direction is given by the keyword SURF_DIP_DIR", &
266 default_l_val=.false., &
267 lone_keyword_l_val=.true., &
273 name=
"SURF_DIP_DIR", &
274 description=
"Cartesian axis parallel to surface normal.", &
275 enum_c_vals=
s2a(
"X",
"Y",
"Z"), &
276 enum_i_vals=[1, 2, 3], &
277 enum_desc=
s2a(
"Along x",
"Along y",
"Along z"), &
280 usage=
"SURF_DIP_DIR Z")
285 name=
"SURF_DIP_POS", &
286 description=
"This keyword assigns an user defined position in Angstroms "// &
287 "in the direction normal to the surface (given by SURF_DIP_DIR). "// &
288 "The default value is -1.0_dp which appplies the correction at a position "// &
289 "that has minimum electron density on the grid.", &
290 usage=
"SURF_DIP_POS -1.0_dp", &
291 default_r_val=-1.0_dp)
296 name=
"SURF_DIP_SWITCH", &
297 description=
"WARNING: Experimental feature under development that will help the "// &
298 "user to switch parameters to facilitate SCF convergence. In its current form the "// &
299 "surface dipole correction is switched off if the calculation does not converge in "// &
300 "(0.5*MAX_SCF + 1) outer_scf steps. "// &
301 "The default value is .FALSE.", &
302 usage=
"SURF_DIP_SWITCH .TRUE.", &
303 default_l_val=.false., &
304 lone_keyword_l_val=.true.)
309 name=
"CORE_CORR_DIP", &
310 description=
"If the total CORE_CORRECTION is non-zero and surface dipole "// &
311 "correction is switched on, presence of this keyword will adjust electron "// &
312 "density via MO occupation to reflect the total CORE_CORRECTION. "// &
313 "The default value is .FALSE.", &
314 usage=
"CORE_CORR_DIP .TRUE.", &
315 default_l_val=.false., &
316 lone_keyword_l_val=.true.)
322 description=
"Sort basis sets according to a certain criterion. ", &
323 enum_c_vals=
s2a(
"DEFAULT",
"EXP"), &
325 enum_desc=
s2a(
"don't sort",
"sort w.r.t. exponent"), &
327 usage=
"SORT_BASIS EXP")
344 CALL create_kg_section(subsection)
360 CALL create_admm_section(subsection)
376 CALL create_relativistic_section(subsection)
380 CALL create_sic_section(subsection)
384 CALL create_low_spin_roks_section(subsection)
425 CALL create_implicit_solv_section(subsection)
429 CALL create_density_fitting_section(subsection)
445 CALL create_rtp_section(subsection)
453 CALL create_sccs_section(subsection)
465 CALL create_hairy_probes_section(subsection)
477 SUBROUTINE create_hairy_probes_section(section)
483 cpassert(.NOT.
ASSOCIATED(section))
485 name=
"HAIRY_PROBES", &
486 description=
"Sets up a Hairy Probe calculation. ", &
487 n_keywords=0, n_subsections=0, repeats=.true.)
490 name=
"_SECTION_PARAMETERS_", &
491 description=
"Controls the activation of hairy probe", &
492 usage=
"&HAIRY_PROBES ON", &
493 default_l_val=.false., &
494 lone_keyword_l_val=.true.)
499 description=
"Indexes of the atoms to which the probes are attached.", &
500 usage=
"ATOM_IDS <INTEGER> .. <INTEGER>", &
506 description=
"Electronic temperature [K]", &
514 description=
"Chemical potential of the electrons in the probes [eV] ", &
522 description=
"Parameter for solution probes ", &
523 usage=
"ALPHA <REAL>", &
524 default_r_val=1.0_dp)
529 description=
" Tolerance for accuracy checks on occupation numbers "// &
530 "calculated using hair-probes. ", &
531 usage=
"EPS_HP <REAL>", &
532 default_r_val=1.0e-5_dp)
535 END SUBROUTINE create_hairy_probes_section
543 SUBROUTINE create_implicit_solv_section(section)
549 NULLIFY (keyword, subsection, print_key)
550 cpassert(.NOT.
ASSOCIATED(section))
552 description=
"Adds an implicit solvation model to the DFT calculation."// &
553 " Know also as Self Consistent Reaction Field.", &
554 n_keywords=0, n_subsections=0, repeats=.false.)
557 description=
"Value of the dielectric constant outside the sphere", &
558 usage=
"EPS_OUT <REAL>", &
559 default_r_val=1.0_dp)
564 description=
"Maximum value of L used in the multipole expansion", &
565 usage=
"LMAX <INTEGER>", &
570 CALL create_sphere_section(subsection)
575 description=
"Controls the printing basic info about the method", &
580 END SUBROUTINE create_implicit_solv_section
587 SUBROUTINE create_sphere_section(section)
593 NULLIFY (keyword, subsection)
594 cpassert(.NOT.
ASSOCIATED(section))
596 description=
"Treats the implicit solvent environment like a sphere", &
597 n_keywords=0, n_subsections=0, repeats=.false.)
600 description=
"Value of the spherical cavity in the dielectric medium", &
601 usage=
"RADIUS <REAL>", &
602 unit_str=
"angstrom", &
607 CALL create_center_section(subsection)
611 END SUBROUTINE create_sphere_section
618 SUBROUTINE create_center_section(section)
624 cpassert(.NOT.
ASSOCIATED(section))
626 description=
"Defines the center of the sphere.", &
627 n_keywords=0, n_subsections=0, repeats=.false.)
629 description=
"Coordinates of the center of the sphere", &
630 usage=
"XYZ <REAL> <REAL> <REAL>", &
631 unit_str=
"angstrom", &
632 type_of_var=
real_t, n_var=3)
637 description=
"Defines a list of atoms to define the center of the sphere", &
638 usage=
"ATOM_LIST <INTEGER> .. <INTEGER>", &
644 description=
"Defines the weight used to define the center of the sphere"// &
645 " (if ATOM_LIST is provided)", &
646 usage=
"WEIGHT_TYPE (UNIT|MASS)", &
647 enum_c_vals=[
"UNIT",
"MASS"], &
654 description=
"Specify if the center of the sphere should be fixed or"// &
655 " allowed to move", &
656 usage=
"FIXED <LOGICAL>", &
657 default_l_val=.true.)
661 END SUBROUTINE create_center_section
667 SUBROUTINE create_admm_section(section)
673 cpassert(.NOT.
ASSOCIATED(section))
674 CALL section_create(section, __location__, name=
"AUXILIARY_DENSITY_MATRIX_METHOD", &
675 description=
"Parameters needed for the ADMM method.", &
676 n_keywords=1, n_subsections=1, repeats=.false., &
680 keyword, __location__, &
682 description=
"Type of ADMM (sort name) as refered in literature. "// &
683 "This sets values for METHOD, ADMM_PURIFICATION_METHOD, and EXCH_SCALING_MODEL", &
684 enum_c_vals=
s2a(
"NONE",
"ADMM1",
"ADMM2",
"ADMMS",
"ADMMP",
"ADMMQ"), &
685 enum_desc=
s2a(
"No short name is used, use specific definitions (default)", &
686 "ADMM1 method from Guidon2010", &
687 "ADMM2 method from Guidon2010", &
688 "ADMMS method from Merlot2014", &
689 "ADMMP method from Merlot2014", &
690 "ADMMQ method from Merlot2014"), &
698 keyword, __location__, &
699 name=
"ADMM_PURIFICATION_METHOD", &
700 description=
"Method that shall be used for wavefunction fitting. Use MO_DIAG for MD.", &
701 enum_c_vals=
s2a(
"NONE",
"CAUCHY",
"CAUCHY_SUBSPACE",
"MO_DIAG",
"MO_NO_DIAG",
"MCWEENY",
"NONE_DM"), &
705 enum_desc=
s2a(
"Do not apply any purification", &
706 "Perform purification via general Cauchy representation", &
707 "Perform purification via Cauchy representation in occupied subspace", &
708 "Calculate MO derivatives via Cauchy representation by diagonalization", &
709 "Calculate MO derivatives via Cauchy representation by inversion", &
710 "Perform original McWeeny purification via matrix multiplications", &
711 "Do not apply any purification, works directly with density matrix"), &
717 keyword, __location__, &
719 description=
"Method that shall be used for wavefunction fitting. Use BASIS_PROJECTION for MD.", &
720 enum_c_vals=
s2a(
"BASIS_PROJECTION",
"BLOCKED_PROJECTION_PURIFY_FULL",
"BLOCKED_PROJECTION", &
721 "CHARGE_CONSTRAINED_PROJECTION"), &
724 enum_desc=
s2a(
"Construct auxiliary density matrix from auxiliary basis.", &
725 "Construct auxiliary density from a blocked Fock matrix,"// &
726 " but use the original matrix for purification.", &
727 "Construct auxiliary density from a blocked Fock matrix.", &
728 "Construct auxiliary density from auxiliary basis enforcing charge constrain."), &
734 keyword, __location__, &
735 name=
"EXCH_SCALING_MODEL", &
736 description=
"Scaling of the exchange correction calculated by the auxiliary density matrix.", &
737 enum_c_vals=
s2a(
"NONE",
"MERLOT"), &
739 enum_desc=
s2a(
"No scaling is enabled, refers to methods ADMM1, ADMM2 or ADMMQ.", &
740 "Exchange scaling according to Merlot (2014)"), &
746 keyword, __location__, &
747 name=
"EXCH_CORRECTION_FUNC", &
748 description=
"Exchange functional which is used for the ADMM correction. "// &
749 "LibXC implementations require linking with LibXC", &
750 enum_c_vals=
s2a(
"DEFAULT",
"PBEX",
"NONE",
"OPTX",
"BECKE88X", &
751 "PBEX_LIBXC",
"BECKE88X_LIBXC",
"OPTX_LIBXC",
"DEFAULT_LIBXC",
"LDA_X_LIBXC"), &
757 enum_desc=
s2a(
"Use PBE-based corrections according to the chosen interaction operator.", &
758 "Use PBEX functional for exchange correction.", &
759 "No correction: X(D)-x(d)-> 0.", &
760 "Use OPTX functional for exchange correction.", &
761 "Use Becke88X functional for exchange correction.", &
762 "Use PBEX functional (LibXC implementation) for exchange correction.", &
763 "Use Becke88X functional (LibXC implementation) for exchange correction.", &
764 "Use OPTX functional (LibXC implementation) for exchange correction.", &
765 "Use PBE-based corrections (LibXC where possible) to the chosen interaction operator.", &
766 "Use Slater X functional (LibXC where possible) for exchange correction."), &
772 description=
"OPTX a1 coefficient", &
773 default_r_val=1.05151_dp)
777 description=
"OPTX a2 coefficient", &
778 default_r_val=1.43169_dp)
782 description=
"OPTX gamma coefficient", &
783 default_r_val=0.006_dp)
788 description=
"Specifies a list of atoms.", &
789 usage=
"BLOCK_LIST {integer} {integer} .. {integer}", &
790 n_var=-1, type_of_var=
integer_t, repeats=.true.)
795 description=
"Define accuracy of DBCSR operations", &
796 usage=
"EPS_FILTER", default_r_val=0.0_dp)
800 END SUBROUTINE create_admm_section
806 SUBROUTINE create_density_fitting_section(section)
812 NULLIFY (keyword, print_key)
813 cpassert(.NOT.
ASSOCIATED(section))
814 CALL section_create(section, __location__, name=
"DENSITY_FITTING", &
815 description=
"Setup parameters for density fitting (Bloechl charges or density derived "// &
816 "atomic point charges (DDAPC) charges)", &
817 n_keywords=7, n_subsections=0, repeats=.false., &
821 description=
"Specifies the numbers of gaussian used to fit the QM density for each atomic site.", &
822 usage=
"NUM_GAUSS {integer}", &
823 n_var=1, type_of_var=
integer_t, default_i_val=3)
828 description=
"Specifies the progression factor for the gaussian exponent for each atomic site.", &
829 usage=
"PFACTOR {real}", &
830 n_var=1, type_of_var=
real_t, default_r_val=1.5_dp)
835 description=
"Specifies the smallest radius of the gaussian used in the fit. All other radius are"// &
836 " obtained with the progression factor.", &
837 usage=
"MIN_RADIUS {real}", &
838 unit_str=
"angstrom", n_var=1, type_of_var=
real_t, default_r_val=0.5_dp)
843 description=
"Specifies all the radius of the gaussian used in the fit for each atomic site. The use"// &
844 " of this keyword disables all other keywords of this section.", &
845 usage=
"RADII {real} {real} .. {real}", &
846 unit_str=
"angstrom", n_var=-1, type_of_var=
real_t)
851 description=
"Cutoff for charge fit in G-space.", &
852 usage=
"GCUT {real}", &
853 n_var=1, type_of_var=
real_t, default_r_val=sqrt(6.0_dp))
858 description=
"Controls the printing of basic information during the run", &
861 CALL keyword_create(keyword, __location__, name=
"CONDITION_NUMBER", &
862 description=
"Prints information regarding the condition numbers of the A matrix (to be inverted)", &
863 usage=
"CONDITION_NUMBER <LOGICAL>", &
864 default_l_val=.false., lone_keyword_l_val=.true.)
871 END SUBROUTINE create_density_fitting_section
878 SUBROUTINE create_relativistic_section(section)
883 cpassert(.NOT.
ASSOCIATED(section))
885 description=
"parameters needed and setup for relativistic calculations", &
886 n_keywords=5, n_subsections=0, repeats=.false.)
891 description=
"type of relativistic correction used", &
892 usage=
"method (NONE|DKH|ZORA)", default_i_val=
rel_none, &
893 enum_c_vals=
s2a(
"NONE",
"DKH",
"ZORA"), &
895 enum_desc=
s2a(
"Use no relativistic correction", &
896 "Use Douglas-Kroll-Hess method", &
902 description=
"The order of the DKH transformation ", &
903 usage=
"DKH_order 2", default_i_val=2)
908 description=
"Type of ZORA method to be used", &
910 enum_c_vals=
s2a(
"FULL",
"MP",
"scMP"), &
911 enum_desc=
s2a(
"Full ZORA method (not implemented)", &
912 "ZORA with atomic model potential", &
913 "Scaled ZORA with atomic model potential"), &
918 CALL keyword_create(keyword, __location__, name=
"transformation", &
919 description=
"Type of DKH transformation", &
920 usage=
"transformation (FULL|MOLECULE|ATOM)", default_i_val=
rel_trans_atom, &
921 enum_c_vals=
s2a(
"FULL",
"MOLECULE",
"ATOM"), &
923 enum_desc=
s2a(
"Use full matrix transformation", &
924 "Use transformation blocked by molecule", &
925 "Use atomic blocks"))
930 description=
"The minimal atomic number considered for atom transformation", &
931 usage=
"z_cutoff 50", default_i_val=1)
936 description=
"External potential used in DKH transformation, full 1/r or erfc(r)/r", &
937 usage=
"POTENTIAL {FULL,ERFC}", default_i_val=
rel_pot_erfc, &
938 enum_c_vals=
s2a(
"FULL",
"ERFC"), &
943 END SUBROUTINE create_relativistic_section
950 SUBROUTINE create_kg_section(section)
956 cpassert(.NOT.
ASSOCIATED(section))
958 description=
"Specifies the parameters for a Kim-Gordon-like partitioning"// &
959 " into molecular subunits", &
960 n_keywords=0, n_subsections=1, repeats=.false., &
963 NULLIFY (keyword, subsection, print_key)
975 CALL keyword_create(keyword, __location__, name=
"COLORING_METHOD", &
976 description=
"Which algorithm to use for coloring.", &
977 usage=
"COLORING_METHOD GREEDY", &
979 enum_c_vals=
s2a(
"DSATUR",
"GREEDY"), &
980 enum_desc=
s2a(
"Maximum degree of saturation, relatively accurate", &
981 "Greedy, fast coloring, less accurate"), &
987 description=
"Algorithm to use for the calculation of the nonadditive kinetic energy.", &
988 usage=
"TNADD_METHOD ATOMIC", &
990 enum_c_vals=
s2a(
"EMBEDDING",
"RI_EMBEDDING",
"ATOMIC",
"NONE"), &
991 enum_desc=
s2a(
"Use full embedding potential (see Iannuzzi et al)", &
992 "Use full embedding potential with RI density fitting", &
993 "Use sum of atomic model potentials", &
994 "Do not use kinetic energy embedding"), &
999 CALL keyword_create(keyword, __location__, name=
"INTEGRATION_GRID", &
1000 description=
"Grid [small,medium,large,huge]to be used for the TNADD integration.", &
1001 usage=
"INTEGRATION_GRID MEDIUM", &
1002 default_c_val=
"MEDIUM")
1007 description=
"Print section", &
1008 n_keywords=0, n_subsections=1, repeats=.false.)
1011 description=
"Controls the printing of the neighbor lists.", &
1012 print_level=
low_print_level, filename=
"__STD_OUT__", unit_str=
"angstrom")
1015 name=
"SAB_ORB_FULL", &
1016 description=
"Activates the printing of the full orbital "// &
1017 "orbital neighbor lists.", &
1018 default_l_val=.false., &
1019 lone_keyword_l_val=.true.)
1024 name=
"SAB_ORB_MOLECULAR", &
1025 description=
"Activates the printing of the orbital "// &
1026 "orbital neighbor lists for molecular subsets.", &
1027 default_l_val=.false., &
1028 lone_keyword_l_val=.true.)
1034 description=
"Activates the printing of the orbital "// &
1035 "atomic potential neighbor list.", &
1036 default_l_val=.false., &
1037 lone_keyword_l_val=.true.)
1047 END SUBROUTINE create_kg_section
1060 cpassert(.NOT.
ASSOCIATED(section))
1062 description=
"This section is used to set up the BSSE calculation. "// &
1063 "It also requires that for each atomic kind X a kind X_ghost is present, "// &
1064 "with the GHOST keyword specified, in addition to the other required fields.", &
1065 n_keywords=3, n_subsections=1, repeats=.false.)
1067 NULLIFY (keyword, subsection)
1070 description=
"Specify the atom number belonging to this fragment.", &
1071 n_keywords=2, n_subsections=0, repeats=.true.)
1074 description=
"Specifies a list of atoms.", &
1075 usage=
"LIST {integer} {integer} .. {integer}", &
1076 repeats=.true., n_var=-1, type_of_var=
integer_t)
1084 CALL section_create(subsection, __location__, name=
"CONFIGURATION", &
1085 description=
"Specify additional parameters for the combinatorial configurations. "// &
1086 "Use this section to manually specify charge and multiplicity of the fragments "// &
1087 "and their combinations.", &
1088 n_keywords=2, n_subsections=0, repeats=.true.)
1091 description=
"Specifies the global configuration using 1 or 0 for each fragment. "// &
1092 "1 specifies the respective fragment as used, 0 as unused.", &
1093 usage=
"GLB_CONF {integer} {integer} .. {integer}", &
1099 description=
"Specifies the subconfiguration using 1 or 0 belonging to the global configuration. "// &
1100 "1 specifies the respective fragment as real, 0 as ghost.", &
1101 usage=
"SUB_CONF {integer} {integer} .. {integer}", &
1107 name=
"MULTIPLICITY", &
1108 variants=[
"MULTIP"], &
1109 description=
"Specify for each fragment the multiplicity. Two times the total spin plus one. "// &
1110 "Specify 3 for a triplet, 4 for a quartet,and so on. Default is 1 (singlet) for an "// &
1111 "even number and 2 (doublet) for an odd number of electrons.", &
1112 usage=
"MULTIPLICITY 3", &
1118 description=
"The total charge for each fragment.", &
1119 usage=
"CHARGE -1", &
1126 CALL section_create(subsection, __location__, name=
"FRAGMENT_ENERGIES", &
1127 description=
"This section contains the energies of the fragments already"// &
1128 " computed. It is useful as a summary and specifically for restarting BSSE runs.", &
1129 n_keywords=2, n_subsections=0, repeats=.true.)
1130 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1131 description=
"The energy computed for each fragment", repeats=.true., &
1132 usage=
"{REAL}", type_of_var=
real_t)
1138 CALL create_print_bsse_section(subsection)
1149 SUBROUTINE create_print_bsse_section(section)
1154 cpassert(.NOT.
ASSOCIATED(section))
1156 description=
"Section of possible print options in BSSE code.", &
1157 n_keywords=0, n_subsections=1, repeats=.false.)
1161 description=
"Controls the printing of information regarding the run.", &
1167 description=
"Controls the dumping of the restart file during BSSE runs. "// &
1168 "By default the restart is updated after each configuration calculation is "// &
1175 END SUBROUTINE create_print_bsse_section
1182 SUBROUTINE create_rigpw_section(section)
1185 cpassert(.NOT.
ASSOCIATED(section))
1187 description=
"This section specifies optional parameters for RIGPW.", &
1188 n_keywords=1, n_subsections=0, repeats=.false.)
1215 END SUBROUTINE create_rigpw_section
1226 LOGICAL,
INTENT(in) :: create_subsections
1231 cpassert(.NOT.
ASSOCIATED(section))
1233 description=
"multigrid information", &
1234 n_keywords=5, n_subsections=1, repeats=.false.)
1237 description=
"The number of multigrids to use", &
1238 usage=
"ngrids 1", default_i_val=4)
1243 description=
"The cutoff of the finest grid level. Default value for "// &
1244 "SE or DFTB calculation is 1.0 [Ry].", &
1246 unit_str=
"Ry"), n_var=1, unit_str=
"Ry")
1250 CALL keyword_create(keyword, __location__, name=
"progression_factor", &
1251 description=
"Factor used to find the cutoff of the multigrids that"// &
1252 " where not given explicitly", &
1253 usage=
"progression_factor <integer>", default_r_val=3._dp)
1257 CALL keyword_create(keyword, __location__, name=
"commensurate", &
1258 description=
"If the grids should be commensurate. If true overrides "// &
1259 "the progression factor and the cutoffs of the sub grids", &
1260 usage=
"commensurate", default_l_val=.false., &
1261 lone_keyword_l_val=.true.)
1266 description=
"If both rho and rho_gspace are needed ", &
1267 usage=
"realspace", default_l_val=.false., &
1268 lone_keyword_l_val=.true.)
1273 variants=[
"RELATIVE_CUTOFF"], &
1274 description=
"Determines the grid at which a Gaussian is mapped,"// &
1275 " giving the cutoff used for a gaussian with alpha=1."// &
1276 " A value 50+-10Ry might be required for highly accurate results,"// &
1277 " Or for simulations with a variable cell."// &
1278 " Versions prior to 2.3 used a default of 30Ry.", &
1279 usage=
"RELATIVE_CUTOFF real", default_r_val=20.0_dp, &
1284 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_SET", &
1285 description=
"Activate a manual setting of the multigrids", &
1286 usage=
"MULTIGRID_SET", default_l_val=.false.)
1291 name=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1292 description=
"Skips load balancing on distributed multigrids. "// &
1293 "Memory usage is O(p) so may be used "// &
1294 "for all but the very largest runs.", &
1295 usage=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1296 default_l_val=.false., &
1297 lone_keyword_l_val=.true.)
1306 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_CUTOFF", &
1307 variants=[
"CUTOFF_LIST"], &
1308 description=
"List of cutoff values to set up multigrids manually", &
1309 usage=
"MULTIGRID_CUTOFF 200.0 100.0 ", &
1316 IF (create_subsections)
THEN
1317 NULLIFY (subsection)
1322 NULLIFY (subsection)
1340 cpassert(.NOT.
ASSOCIATED(section))
1341 CALL section_create(section, __location__, name=
"interpolator", &
1342 description=
"kind of interpolation used between the multigrids", &
1343 n_keywords=5, n_subsections=0, repeats=.false.)
1345 NULLIFY (keyword, print_key)
1348 description=
"the interpolator to use", &
1349 usage=
"kind spline3", &
1351 enum_c_vals=
s2a(
"pw",
"spline3_nopbc",
"spline3"), &
1357 CALL keyword_create(keyword, __location__, name=
"safe_computation", &
1358 description=
"if a non unrolled calculation is to be performed in parallel", &
1359 usage=
"safe_computation OFF", &
1360 default_l_val=.false., &
1361 lone_keyword_l_val=.true.)
1365 CALL keyword_create(keyword, __location__, name=
"aint_precond", &
1366 description=
"the approximate inverse to use to get the starting point"// &
1367 " for the linear solver of the spline3 methods", &
1368 usage=
"aint_precond copy", &
1370 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1371 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1378 description=
"The preconditioner used"// &
1379 " for the linear solver of the spline3 methods", &
1380 usage=
"PRECOND copy", &
1382 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1383 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1390 description=
"accuracy on the solution for spline3 the interpolators", &
1391 usage=
"eps_x 1.e-15", default_r_val=1.e-10_dp)
1396 description=
"accuracy on the residual for spline3 the interpolators", &
1397 usage=
"eps_r 1.e-15", default_r_val=1.e-10_dp)
1402 variants=[
'maxiter'], &
1403 description=
"the maximum number of iterations", &
1404 usage=
"max_iter 200", default_i_val=100)
1410 description=
"if convergence information about the linear solver"// &
1411 " of the spline methods should be printed", &
1413 each_iter_values=[10], filename=
"__STD_OUT__", &
1425 SUBROUTINE create_sic_section(section)
1430 cpassert(.NOT.
ASSOCIATED(section))
1432 description=
"parameters for the self interaction correction", &
1433 n_keywords=6, n_subsections=0, repeats=.false., &
1438 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_A", &
1439 description=
"Scaling of the coulomb term in sic [experimental]", &
1440 usage=
"SIC_SCALING_A 0.5", &
1442 default_r_val=1.0_dp)
1446 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_B", &
1447 description=
"Scaling of the xc term in sic [experimental]", &
1448 usage=
"SIC_SCALING_B 0.5", &
1450 default_r_val=1.0_dp)
1455 description=
"Method used to remove the self interaction", &
1456 usage=
"SIC_METHOD MAURI_US", &
1458 enum_c_vals=
s2a(
"NONE",
"MAURI_US",
"MAURI_SPZ",
"AD",
"EXPLICIT_ORBITALS"), &
1460 enum_desc=
s2a(
"Do not apply a sic correction", &
1461 "Employ a (scaled) correction proposed by Mauri and co-workers"// &
1462 " on the spin density / doublet unpaired orbital", &
1463 "Employ a (scaled) Perdew-Zunger expression"// &
1464 " on the spin density / doublet unpaired orbital", &
1465 "The average density correction", &
1466 "(scaled) Perdew-Zunger correction explicitly on a set of orbitals."), &
1472 description=
"Type of orbitals treated with the SIC", &
1473 usage=
"ORBITAL_SET ALL", &
1475 enum_c_vals=
s2a(
"UNPAIRED",
"ALL"), &
1476 enum_desc=
s2a(
"correction for the unpaired orbitals only, requires a restricted open shell calculation", &
1477 "correction for all orbitals, requires a LSD or ROKS calculation"), &
1482 END SUBROUTINE create_sic_section
1489 SUBROUTINE create_low_spin_roks_section(section)
1494 cpassert(.NOT.
ASSOCIATED(section))
1495 CALL section_create(section, __location__, name=
"LOW_SPIN_ROKS", &
1496 description=
"Specify the details of the low spin ROKS method. "// &
1497 "In particular, one can specify various terms added to the energy of the high spin roks configuration"// &
1498 " with a energy scaling factor, and a prescription of the spin state.", &
1499 n_keywords=6, n_subsections=0, repeats=.false.)
1502 CALL keyword_create(keyword, __location__, name=
"ENERGY_SCALING", &
1503 description=
"The scaling factors for each term added to the total energy. "// &
1504 "This list should contain one number for each term added to the total energy.", &
1505 usage=
"ENERGY_SCALING 1.0 -1.0 ", &
1506 n_var=-1, type_of_var=
real_t, repeats=.false.)
1510 keyword, __location__, name=
"SPIN_CONFIGURATION", &
1511 description=
"For each singly occupied orbital, specify if this should be an alpha (=1) or a beta (=2) orbital. "// &
1512 "This keyword should be repeated, each repetition corresponding to an additional term.", &
1513 usage=
"SPIN_CONFIGURATION 1 2", &
1514 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1518 END SUBROUTINE create_low_spin_roks_section
1524 SUBROUTINE create_rtp_section(section)
1528 TYPE(
section_type),
POINTER :: print_key, print_section, subsection
1531 cpassert(.NOT.
ASSOCIATED(section))
1532 CALL section_create(section, __location__, name=
"REAL_TIME_PROPAGATION", &
1533 description=
"Parameters needed to set up the real time propagation"// &
1534 " for the electron dynamics. This currently works only in the NVE ensemble.", &
1535 n_keywords=4, n_subsections=4, repeats=.false., &
1539 description=
"Maximal number of iterations for the self consistent propagator loop.", &
1540 usage=
"MAX_ITER 10", &
1546 description=
"Convergence criterion for the self consistent propagator loop.", &
1547 usage=
"EPS_ITER 1.0E-5", &
1548 default_r_val=1.0e-7_dp)
1553 description=
"Speciefies how many steps will be used for extrapolation. "// &
1554 "One will be always used which is means X(t+dt)=X(t)", &
1555 usage=
"ASPC_ORDER 3", &
1561 description=
"Which method should be used to calculate the exponential"// &
1562 " in the propagator. It is recommended to use BCH when employing density_propagation "// &
1563 "and ARNOLDI otherwise.", &
1564 usage=
"MAT_EXP TAYLOR", default_i_val=
do_arnoldi, &
1565 enum_c_vals=
s2a(
"TAYLOR",
"PADE",
"ARNOLDI",
"BCH",
"EXACT"), &
1567 enum_desc=
s2a(
"exponential is evaluated using scaling and squaring in combination"// &
1568 " with a taylor expansion of the exponential.", &
1569 "uses scaling and squaring together with the pade approximation", &
1570 "uses arnoldi subspace algorithm to compute exp(H)*MO directly, can't be used in "// &
1571 "combination with Crank Nicholson or density propagation", &
1572 "Uses a Baker-Campbell-Hausdorff expansion to propagate the density matrix,"// &
1573 " only works for density propagation", &
1574 "Uses diagonalisation of the exponent matrices to determine the "// &
1575 "matrix exponential exactly. Only implemented for GWBSE."))
1579 CALL keyword_create(keyword, __location__, name=
"DENSITY_PROPAGATION", &
1580 description=
"The density matrix is propagated instead of the molecular orbitals. "// &
1581 "This can allow a linear scaling simulation. The density matrix is filtered with "// &
1582 "the threshold based on the EPS_FILTER keyword from the LS_SCF section", &
1583 usage=
"DENSITY_PROPAGATION .TRUE.", &
1584 default_l_val=.false., lone_keyword_l_val=.true.)
1588 CALL keyword_create(keyword, __location__, name=
"SC_CHECK_START", &
1589 description=
"Speciefies how many iteration steps will be done without "// &
1590 "a check for self consistency. Can save some time in big calculations.", &
1591 usage=
"SC_CHECK_START 3", &
1596 CALL keyword_create(keyword, __location__, name=
"EXP_ACCURACY", &
1597 description=
"Accuracy for the taylor and pade approximation. "// &
1598 "This is only an upper bound bound since the norm used for the guess "// &
1599 "is an upper bound for the needed one.", &
1600 usage=
"EXP_ACCURACY 1.0E-6", &
1601 default_r_val=1.0e-9_dp)
1606 description=
"Which propagator should be used for the orbitals", &
1607 usage=
"PROPAGATOR ETRS", default_i_val=
do_etrs, &
1608 enum_c_vals=
s2a(
"ETRS",
"CN",
"EM"), &
1610 enum_desc=
s2a(
"enforced time reversible symmetry", &
1611 "Crank Nicholson propagator", &
1612 "Exponential midpoint propagator"))
1617 description=
"Controls the initial WFN used for propagation. "// &
1618 "Note that some energy contributions may not be "// &
1619 "initialized in the restart cases, for instance "// &
1620 "electronic entropy energy in the case of smearing.", &
1621 usage=
"INITIAL_WFN SCF_WFN", default_i_val=
use_scf_wfn, &
1622 enum_c_vals=
s2a(
"SCF_WFN",
"RESTART_WFN",
"RT_RESTART"), &
1624 enum_desc=
s2a(
"An SCF run is performed to get the initial state.", &
1625 "A wavefunction from a previous SCF is propagated. Especially useful,"// &
1626 " if electronic constraints or restraints are used in the previous calculation, "// &
1627 "since these do not work in the rtp scheme.", &
1628 "use the wavefunction of a real time propagation/ehrenfest run"))
1632 CALL keyword_create(keyword, __location__, name=
"APPLY_WFN_MIX_INIT_RESTART", &
1633 description=
"If set to True and in the case of INITIAL_WFN=RESTART_WFN, call the "// &
1634 "DFT%PRINT%WFN_MIX section to mix the read initial wfn. The starting wave-function of the "// &
1635 "RTP will be the mixed one. Setting this to True without a defined WFN_MIX section will "// &
1636 "not do anything as defining a WFN_MIX section without this keyword for RTP run with "// &
1637 "INITIAL_WFN=RESTART_WFN. Note that if INITIAL_WFN=SCF_WFN, this keyword is not needed to "// &
1638 "apply the mixing defined in the WFN_MIX section. Default is False.", &
1639 usage=
"APPLY_WFN_MIX_INIT_RESTART", &
1640 default_l_val=.false., lone_keyword_l_val=.true.)
1644 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE", &
1645 description=
"Applies a delta kick to the initial wfn (only RTP for now - the EMD"// &
1646 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1647 usage=
"APPLY_DELTA_PULSE", &
1648 default_l_val=.false., lone_keyword_l_val=.true.)
1652 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE_MAG", &
1653 description=
"Applies a magnetic delta kick to the initial wfn (only RTP for now - the EMD"// &
1654 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1655 usage=
"APPLY_DELTA_PULSE_MAG", &
1656 default_l_val=.false., lone_keyword_l_val=.true.)
1660 CALL keyword_create(keyword, __location__, name=
"VELOCITY_GAUGE", &
1661 description=
"Perform propagation in the velocity gauge using the explicit vector potential"// &
1662 " only a constant vector potential as of now (corresonding to a delta-pulse)."// &
1663 " uses DELTA_PULSE_SCALE and DELTA_PULSE_DIRECTION to define the vector potential", &
1664 usage=
"VELOCITY_GAUGE T", &
1665 default_l_val=.false., lone_keyword_l_val=.true.)
1670 description=
"Define gauge origin for magnetic perturbation", &
1671 usage=
"GAUGE_ORIG COM", &
1672 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1673 enum_desc=
s2a(
"Use Center of Mass", &
1674 "Use Center of Atomic Charges", &
1675 "Use User Defined Point (Keyword:REF_POINT)", &
1676 "Use Origin of Coordinate System"), &
1685 CALL keyword_create(keyword, __location__, name=
"GAUGE_ORIG_MANUAL", &
1686 description=
"Manually defined gauge origin for magnetic perturbation [in Bohr!]", &
1687 usage=
"GAUGE_ORIG_MANUAL x y z", &
1689 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1696 description=
"apply gauge transformed non-local potential term"// &
1697 " only affects VELOCITY_GAUGE=.TRUE.", &
1698 usage=
"VG_COM_NL T", &
1699 default_l_val=.true., lone_keyword_l_val=.true.)
1704 description=
"Include non-local commutator for periodic delta pulse."// &
1705 " only affects PERIODIC=.TRUE.", &
1707 default_l_val=.true., lone_keyword_l_val=.true.)
1712 description=
"Use length representation delta pulse (in conjunction with PERIODIC T)."// &
1713 " This corresponds to a 1st order perturbation in the length gauge."// &
1714 " Note that this is NOT compatible with a periodic calculation!"// &
1715 " Uses the reference point defined in DFT%PRINT%MOMENTS ", &
1716 usage=
"LEN_REP T", &
1717 default_l_val=.false., lone_keyword_l_val=.true.)
1722 description=
"Apply a delta-kick that is compatible with periodic boundary conditions"// &
1723 " for any value of DELTA_PULSE_SCALE. Uses perturbation theory for the preparation of"// &
1724 " the initial wfn with the velocity operator as perturbation."// &
1725 " If LEN_REP is .FALSE. this corresponds to a first order velocity gauge."// &
1726 " Note that the pulse is only applied when INITIAL_WFN is set to SCF_WFN,"// &
1727 " and not for restarts (RT_RESTART).", &
1729 default_l_val=.true., lone_keyword_l_val=.true.)
1733 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_DIRECTION", &
1734 description=
"Direction of the applied electric field. The k vector is given as"// &
1735 " 2*Pi*[i,j,k]*inv(h_mat), which for PERIODIC .FALSE. yields exp(ikr) periodic with"// &
1736 " the unit cell, only if DELTA_PULSE_SCALE is set to unity. For an orthorhombic cell"// &
1737 " [1,0,0] yields [2*Pi/L_x,0,0]. For small cells, this results in a very large kick.", &
1738 usage=
"DELTA_PULSE_DIRECTION 1 1 1", n_var=3, default_i_vals=[1, 0, 0], &
1743 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_SCALE", &
1744 description=
"Scale the k vector, which for PERIODIC .FALSE. results in exp(ikr) no"// &
1745 " longer being periodic with the unit cell. The norm of k is the strength of the"// &
1746 " applied electric field in atomic units.", &
1747 usage=
"DELTA_PULSE_SCALE 0.01 ", n_var=1, default_r_val=0.001_dp)
1751 CALL keyword_create(keyword, __location__, name=
"HFX_BALANCE_IN_CORE", &
1752 description=
"If HFX is used, this keyword forces a redistribution/recalculation"// &
1753 " of the integrals, balanced with respect to the in core steps.", &
1754 usage=
"HFX_BALANCE_IN_CORE", &
1755 default_l_val=.false., lone_keyword_l_val=.true.)
1759 CALL keyword_create(keyword, __location__, name=
"MCWEENY_MAX_ITER", &
1760 description=
"Determines the maximum amount of McWeeny steps used after each converged"// &
1761 " step in density propagation", &
1762 usage=
"MCWEENY_MAX_ITER 2", default_i_val=1)
1767 keyword, __location__, name=
"ACCURACY_REFINEMENT", &
1768 description=
"If using density propagation some parts should be calculated with a higher accuracy than the rest"// &
1769 " to reduce numerical noise. This factor determines by how much the filtering threshold is"// &
1770 " reduced for these calculations.", &
1771 usage=
"ACCURACY_REFINEMENT", default_i_val=100)
1776 description=
"Threshold after which McWeeny is terminated", &
1777 usage=
"MCWEENY_EPS 0.00001", &
1778 default_r_val=0.0_dp)
1782 NULLIFY (print_section)
1784 description=
"Section of possible print options for an RTP runs", &
1789 description=
"Controls the printing within real time propagation and Eherenfest dynamics", &
1795 description=
"Controls the dumping of the MO restart file during rtp. "// &
1796 "By default keeps a short history of three restarts. "// &
1797 "See also RESTART_HISTORY. In density propagation this controls the printing of "// &
1798 "density matrix.", &
1800 each_iter_names=
s2a(
"MD"), each_iter_values=[20], &
1802 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1803 description=
"Specifies the maximum number of backup copies.", &
1804 usage=
"BACKUP_COPIES {int}", &
1812 description=
"Dumps unique MO restart files during the run keeping all of them. "// &
1813 "In density propagation it dumps the density matrix instead", &
1815 each_iter_names=
s2a(
"MD"), &
1816 each_iter_values=[500], &
1818 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1819 description=
"Specifies the maximum number of backup copies.", &
1820 usage=
"BACKUP_COPIES {int}", &
1828 description=
"Print the time-dependent field applied during an EMD simulation in "// &
1831 each_iter_names=
s2a(
"MD"), &
1832 each_iter_values=[1], &
1833 filename=
"applied_field")
1842 description=
"Print the integral of the current density (only if the"// &
1843 " imaginary part of the density is NOT zero.", &
1845 each_iter_names=
s2a(
"MD"), &
1846 each_iter_values=[1], &
1847 filename=
"rtp_j_int")
1852 description=
"Print the current during an EMD simulation to cube files.", &
1854 each_iter_names=
s2a(
"MD"), &
1855 each_iter_values=[20], &
1857 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1858 description=
"Specifies the maximum number of backup copies.", &
1859 usage=
"BACKUP_COPIES {int}", &
1864 description=
"The stride (X,Y,Z) used to write the cube file "// &
1865 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1866 " 1 number valid for all components.", &
1867 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1876 description=
"Prints the density matrix at iterations in clear text to a file", &
1878 each_iter_names=
s2a(
"MD"), &
1879 each_iter_values=[1], &
1885 description=
"Prints the time-dependent electronic moments at "// &
1886 "iterations in clear text to a file.", &
1888 each_iter_names=
s2a(
"MD"), &
1889 each_iter_values=[1], &
1890 filename=
"__STD_OUT__")
1892 variants=
s2a(
"REF"), &
1893 description=
"Define the reference point for the calculation of the electrostatic moment.", &
1894 usage=
"REFERENCE COM", &
1895 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1896 enum_desc=
s2a(
"Use Center of Mass", &
1897 "Use Center of Atomic Charges", &
1898 "Use User Defined Point (Keyword:REFERENCE_POINT)", &
1899 "Use Origin of Coordinate System"), &
1908 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
1909 variants=
s2a(
"REF_POINT"), &
1910 description=
"Fixed reference point for the calculations of the electrostatic moment.", &
1911 usage=
"REFERENCE_POINT x y z", &
1913 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1915 unit_str=
'angstrom')
1922 description=
"Prints the calculated Fourier transform of "// &
1923 "time-dependent moments. For calculations with real time pulse (not delta kick) "// &
1924 "can be supplied with starting time.", &
1926 each_iter_names=
s2a(
"MD"), &
1927 each_iter_values=[1], &
1928 filename=
"MOMENTS_FT")
1933 description=
"Prints the chosen element of the energy dependent polarizability tensor "// &
1934 "to a specified file. The tensor is calculated as ratio of "// &
1935 "Fourier transform of the dipole "// &
1936 "moment trace and Fourier transform of the applied field "// &
1937 "(for delta kick, constant real field is applied.", &
1939 each_iter_names=
s2a(
"MD"), &
1940 each_iter_values=[1], &
1941 filename=
"POLARIZABILITY")
1943 description=
"Specifies the element of polarizability which is to be printed out "// &
1944 "(indexing starts at 1). If not explicitly provided, RTBSE code tries to guess "// &
1945 "the optimal values - for applied electric field (both delta pulse and RT field) "// &
1946 "with only a single non-zero cartesian component, prints the 3 trivially available elements.", &
1947 type_of_var=
integer_t, default_i_vals=[1, 1], n_var=2, usage=
"ELEMENT 1 1", repeats=.true.)
1954 description=
"Print the energy constituents (relevant to RTP) which make up "// &
1955 "the Total Energy", &
1957 each_iter_names=
s2a(
"MD"), &
1958 each_iter_values=[1], &
1967 NULLIFY (subsection)
1968 CALL create_rtbse_section(subsection)
1972 CALL create_ft_section(subsection)
1976 END SUBROUTINE create_rtp_section
1982 SUBROUTINE create_rtbse_section(section)
1988 cpassert(.NOT.
ASSOCIATED(section))
1991 description=
"Controls options for the real-time Bethe-Salpeter (RTBSE) propagation. "// &
1992 "Note that running RTBSE requires previous low-scaling "// &
1993 "[GW](#CP2K_INPUT.FORCE_EVAL.PROPERTIES.BANDSTRUCTURE.GW) calculation. Also note that "// &
1994 "designating this section as RTBSE run but choosing run type ENERGY leads to potential "// &
1995 "deallocation errors.", &
1999 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2000 description=
"Which method is used for the time propagation of electronic structure. "// &
2001 "By default, use the TDDFT method. Can also choose RT-BSE method, which propagates the lesser "// &
2002 "Green's function instead of density matrix/molecular orbitals.", &
2003 usage=
"&RTBSE TDDFT", &
2006 enum_c_vals=
s2a(
"TDDFT",
"RTBSE"), &
2008 enum_desc=
s2a(
"Use TDDFT for density matrix/MO propagation.", &
2009 "Use RT-BSE for Green's function propagation"))
2014 CALL keyword_create(keyword, __location__, name=
"RTBSE_HAMILTONIAN", &
2015 description=
"Which Hamiltonian to use as the single-particle Hamiltonian"// &
2016 " in the Green's propagator.", &
2017 usage=
"RTBSE_HAMILTONIAN G0W0", &
2019 enum_c_vals=
s2a(
"KS",
"G0W0"), &
2021 enum_desc=
s2a(
"Use Kohn-Sham Hamiltonian for Green's propagation.", &
2022 "Use G0W0 Hamiltonian for Green's function propagation"))
2026 END SUBROUTINE create_rtbse_section
2033 SUBROUTINE create_ft_section(ft_section)
2039 cpassert(.NOT.
ASSOCIATED(ft_section))
2044 description=
"Define parameters for Fourier transforms used in RTP outputs.", &
2050 description=
"The starting time from which damping is applied and from which on the trace is "// &
2051 "considered for the Fourier transform (Fourier transform is used for the calculation of "// &
2052 "MOMENTS_FT and POLARIZABILITY). Useful for real-time pulse - "// &
2053 "one can specify the center of the pulse as the starting point.", &
2056 default_r_val=0.0_dp)
2062 description=
"Numerical Fourier transform (required for calculation of "// &
2063 "MOMENTS_FT and POLARIZABILITY) can oscillate "// &
2064 "when the final time trace values are far away from zero. "// &
2065 "This keyword controls the exponential damping added to the Fourier transform "// &
2066 "(Fourier transform is used for calculation of MOMENTS_FT and POLARIZABILITY). "// &
2067 "For negative values (the default), calculates the damping at the run time so that the last point "// &
2068 "in the time trace is reduced by factor e^(-4). When set manually, determines the time in which "// &
2069 "the moments trace is reduced by factor of e^(-1), except when set to zero, in which case "// &
2070 "the damping is not applied.", &
2078 NULLIFY (subsection)
2080 description=é
"Defines the parameters for the Pad interpolation of the "// &
2081 "Fourier transforms used in the output of RTP. Only available with the GreenX library linked to CP2K.", &
2085 CALL keyword_create(keyword, __location__,
"_SECTION_PARAMETERS_", &
2086 description=é
"Turns on the Pad interpolation", &
2088 default_l_val=.false., &
2089 lone_keyword_l_val=.true.)
2095 description=é
"The minimum energy of the Pad interpolation output.", &
2098 default_r_val=0.0_dp)
2104 description=é
"The maximum energy of the Pad interpolation output.", &
2107 default_r_val=100.0_dp)
2113 description=é
"The energy resolution of the Pad interpolation output.", &
2116 default_r_val=0.02_dp/
evolt)
2122 description=
"The lower boundary in energy for the points "// &
2123 é
"used in the fitting of Pad parameters. If negative, uses "// &
2124 "value of E_MIN (default).", &
2127 default_r_val=-1.0_dp)
2133 description=
"The upper boundary in energy for the points "// &
2134 é
"used in the fitting of Pad parameters. If negative, uses "// &
2135 "the value of E_MAX (default).", &
2138 default_r_val=-1.0_dp)
2145 END SUBROUTINE create_ft_section
2155 SUBROUTINE create_sccs_section(section)
2162 cpassert(.NOT.
ASSOCIATED(section))
2166 description=
"Define the parameters for self-consistent continuum solvation (SCCS) model", &
2175 name=
"_SECTION_PARAMETERS_", &
2176 description=
"Controls the activation of the SCCS section", &
2178 default_l_val=.false., &
2179 lone_keyword_l_val=.true.)
2185 description=
"Solvent specific tunable parameter for the calculation of "// &
2186 "the repulsion term $G^\text{rep} = \alpha S$ "// &
2187 "where $S$ is the (quantum) surface of the cavity", &
2191 default_r_val=0.0_dp, &
2198 description=
"Solvent specific tunable parameter for the calculation of "// &
2199 "the dispersion term $G^\text{dis} = \beta V$ "// &
2200 "where $V$ is the (quantum) volume of the cavity", &
2204 default_r_val=0.0_dp, &
2211 description=
"Numerical increment for the calculation of the (quantum) "// &
2212 "surface of the solute cavity", &
2216 default_r_val=2.0e-5_dp)
2221 name=
"DERIVATIVE_METHOD", &
2222 description=
"Method for the calculation of the numerical derivatives on the real-space grids", &
2223 usage=
"DERIVATIVE_METHOD cd5", &
2227 enum_c_vals=
s2a(
"FFT",
"CD3",
"CD5",
"CD7"), &
2232 enum_desc=
s2a(
"Fast Fourier transformation", &
2233 "3-point stencil central differences", &
2234 "5-point stencil central differences", &
2235 "7-point stencil central differences"))
2240 name=
"RELATIVE_PERMITTIVITY", &
2241 variants=
s2a(
"DIELECTRIC_CONSTANT",
"EPSILON_RELATIVE",
"EPSILON_SOLVENT"), &
2242 description=
"Relative permittivity (dielectric constant) of the solvent (medium)", &
2246 default_r_val=80.0_dp, &
2247 usage=
"RELATIVE_PERMITTIVITY 78.36")
2253 variants=
s2a(
"EPS_ITER",
"TAU_POL"), &
2254 description=
"Tolerance for the convergence of the polarisation density, "// &
2255 "i.e. requested accuracy for the SCCS iteration cycle", &
2259 default_r_val=1.0e-6_dp, &
2260 usage=
"EPS_ITER 1.0E-7")
2266 description=
"The SCCS iteration cycle is activated only if the SCF iteration cycle "// &
2267 "is converged to this threshold value", &
2271 default_r_val=0.5_dp, &
2272 usage=
"EPS_SCF 1.0E-2")
2278 variants=
s2a(
"SURFACE_TENSION"), &
2279 description=
"Surface tension of the solvent used for the calculation of "// &
2280 "the cavitation term $G^\text{cav} = \gamma S$ "// &
2281 "where $S$ is the (quantum) surface of the cavity", &
2285 default_r_val=0.0_dp, &
2292 description=
"Maximum number of SCCS iteration steps performed to converge "// &
2293 "within the given tolerance", &
2297 default_i_val=100, &
2298 usage=
"MAX_ITER 50")
2304 description=
"Method used for the smoothing of the dielectric function", &
2305 usage=
"METHOD Fattebert-Gygi", &
2307 enum_c_vals=
s2a(
"ANDREUSSI",
"FATTEBERT-GYGI"), &
2309 enum_desc=
s2a(
"Smoothing function proposed by Andreussi et al.", &
2310 "Smoothing function proposed by Fattebert and Gygi"))
2317 description=
"Mixing parameter (Hartree damping) employed during the iteration procedure", &
2321 default_r_val=0.6_dp, &
2326 NULLIFY (subsection)
2330 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2331 "Andreussi et al.", &
2339 description=
"Maximum density value used for the smoothing of the dielectric function", &
2343 default_r_val=0.0035_dp, &
2344 usage=
"RHO_MAX 0.01")
2350 description=
"Minimum density value used for the smoothing of the dielectric function", &
2354 default_r_val=0.0001_dp, &
2355 usage=
"RHO_MIN 0.0003")
2363 name=
"FATTEBERT-GYGI", &
2364 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2365 "Fattebert and Gygi", &
2373 description=
"Parameter β changes the width of the interface solute-solvent", &
2377 default_r_val=1.7_dp, &
2384 variants=[
"RHO0"], &
2385 description=
"Parameter $\rho_0$ defines the critical density in the middle "// &
2386 "of the interface solute-solvent", &
2390 default_r_val=0.0006_dp, &
2391 usage=
"RHO_ZERO 0.0004")
2398 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.