100#include "./base/base_uses.f90"
105 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_dft'
125 cpassert(.NOT.
ASSOCIATED(section))
127 description=
"Parameter needed by LCAO DFT programs", &
128 n_keywords=3, n_subsections=4, repeats=.false.)
131 CALL keyword_create(keyword, __location__, name=
"BASIS_SET_FILE_NAME", &
132 description=
"Name of the basis set file, may include a path", &
133 usage=
"BASIS_SET_FILE_NAME <FILENAME>", &
134 type_of_var=
lchar_t, repeats=.true., &
135 default_lc_val=
"BASIS_SET", n_var=1)
139 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_FILE_NAME", &
140 description=
"Name of the pseudo potential file, may include a path", &
141 usage=
"POTENTIAL_FILE_NAME <FILENAME>", &
142 default_lc_val=
"POTENTIAL")
146 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
147 variants=(/
"RESTART_FILE_NAME"/), &
148 description=
"Name of the wavefunction restart file, may include a path."// &
149 " If no file is specified, the default is to open the file as generated by the wfn restart print key.", &
150 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
157 variants=
s2a(
"UNRESTRICTED_KOHN_SHAM", &
160 description=
"Requests a spin-polarized calculation using alpha "// &
161 "and beta orbitals, i.e. no spin restriction is applied", &
163 default_l_val=.false., &
164 lone_keyword_l_val=.true.)
169 variants=(/
"RESTRICTED_OPEN_KOHN_SHAM"/), &
170 description=
"Requests a restricted open Kohn-Sham calculation", &
172 default_l_val=.false., &
173 lone_keyword_l_val=.true.)
177 name=
"MULTIPLICITY", &
178 variants=(/
"MULTIP"/), &
179 description=
"Two times the total spin plus one. "// &
180 "Specify 3 for a triplet, 4 for a quartet, "// &
181 "and so on. Default is 1 (singlet) for an "// &
182 "even number and 2 (doublet) for an odd number "// &
184 usage=
"MULTIPLICITY 3", &
189 description=
"The total charge of the system", &
196 name=
"PLUS_U_METHOD", &
197 description=
"Method employed for the calculation of the DFT+U contribution", &
199 enum_c_vals=
s2a(
"LOWDIN",
"MULLIKEN",
"MULLIKEN_CHARGES"), &
201 enum_desc=
s2a(
"Method based on Lowdin population analysis "// &
202 "(computationally expensive, since the diagonalization of the "// &
203 "overlap matrix is required, but possibly more robust than Mulliken)", &
204 "Method based on Mulliken population analysis using the net AO and "// &
205 "overlap populations (computationally cheap method)", &
206 "Method based on Mulliken gross orbital populations (GOP)"), &
209 usage=
"PLUS_U_METHOD Lowdin")
214 name=
"RELAX_MULTIPLICITY", &
215 variants=(/
"RELAX_MULTIP"/), &
216 description=
"Tolerance in Hartrees. Do not enforce the occupation "// &
217 "of alpha and beta MOs due to the initially "// &
218 "defined multiplicity, but rather follow the Aufbau principle. "// &
219 "A value greater than zero activates this option. "// &
220 "If alpha/beta MOs differ in energy less than this tolerance, "// &
221 "then alpha-MO occupation is preferred even if it is higher "// &
222 "in energy (within the tolerance). "// &
223 "Such spin-symmetry broken (spin-polarized) occupation is used "// &
224 "as SCF input, which (is assumed to) bias the SCF "// &
225 "towards a spin-polarized solution. "// &
226 "Thus, larger tolerance increases chances of ending up "// &
227 "with spin-polarization. "// &
228 "This option is only valid for unrestricted (i.e. spin polarised) "// &
229 "Kohn-Sham (UKS) calculations. It also needs non-zero "// &
230 "[ADDED_MOS](#CP2K_INPUT.FORCE_EVAL.DFT.SCF.ADDED_MOS) to actually affect the calculations, "// &
231 "which is why it is not expected to work with [OT](#CP2K_INPUT.FORCE_EVAL.DFT.SCF.OT) "// &
232 "and may raise errors when used with OT. "// &
233 "For more details see [this discussion](https://github.com/cp2k/cp2k/issues/4389).", &
234 usage=
"RELAX_MULTIPLICITY 0.00001", &
236 default_r_val=0.0_dp)
241 description=
"Read the grid size for subcell generation in the construction of "// &
242 "neighbor lists.", usage=
"SUBCELLS 1.5", &
243 n_var=1, default_r_val=2.0_dp)
248 description=
"Specify size of automatically generated auxiliary (RI) basis sets: "// &
249 "Options={small,medium,large,huge}", &
250 usage=
"AUTO_BASIS {basis_type} {basis_size}", &
251 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=(/
"X",
"X"/))
256 name=
"SURFACE_DIPOLE_CORRECTION", &
257 variants=
s2a(
"SURFACE_DIPOLE", &
259 description=
"For slab calculations with asymmetric geometries, activate the correction of "// &
260 "the electrostatic potential with "// &
261 "by compensating for the surface dipole. Implemented only for slabs with normal "// &
262 "parallel to one Cartesian axis. The normal direction is given by the keyword SURF_DIP_DIR", &
264 default_l_val=.false., &
265 lone_keyword_l_val=.true., &
271 name=
"SURF_DIP_DIR", &
272 description=
"Cartesian axis parallel to surface normal.", &
273 enum_c_vals=
s2a(
"X",
"Y",
"Z"), &
274 enum_i_vals=(/1, 2, 3/), &
275 enum_desc=
s2a(
"Along x",
"Along y",
"Along z"), &
278 usage=
"SURF_DIP_DIR Z")
283 name=
"SURF_DIP_POS", &
284 description=
"This keyword assigns an user defined position in Angstroms "// &
285 "in the direction normal to the surface (given by SURF_DIP_DIR). "// &
286 "The default value is -1.0_dp which appplies the correction at a position "// &
287 "that has minimum electron density on the grid.", &
288 usage=
"SURF_DIP_POS -1.0_dp", &
289 default_r_val=-1.0_dp)
294 name=
"SURF_DIP_SWITCH", &
295 description=
"WARNING: Experimental feature under development that will help the "// &
296 "user to switch parameters to facilitate SCF convergence. In its current form the "// &
297 "surface dipole correction is switched off if the calculation does not converge in "// &
298 "(0.5*MAX_SCF + 1) outer_scf steps. "// &
299 "The default value is .FALSE.", &
300 usage=
"SURF_DIP_SWITCH .TRUE.", &
301 default_l_val=.false., &
302 lone_keyword_l_val=.true.)
307 name=
"CORE_CORR_DIP", &
308 description=
"If the total CORE_CORRECTION is non-zero and surface dipole "// &
309 "correction is switched on, presence of this keyword will adjust electron "// &
310 "density via MO occupation to reflect the total CORE_CORRECTION. "// &
311 "The default value is .FALSE.", &
312 usage=
"CORE_CORR_DIP .TRUE.", &
313 default_l_val=.false., &
314 lone_keyword_l_val=.true.)
320 description=
"Sort basis sets according to a certain criterion. ", &
321 enum_c_vals=
s2a(
"DEFAULT",
"EXP"), &
323 enum_desc=
s2a(
"don't sort",
"sort w.r.t. exponent"), &
325 usage=
"SORT_BASIS EXP")
342 CALL create_kg_section(subsection)
358 CALL create_admm_section(subsection)
374 CALL create_relativistic_section(subsection)
378 CALL create_sic_section(subsection)
382 CALL create_low_spin_roks_section(subsection)
419 CALL create_implicit_solv_section(subsection)
423 CALL create_density_fitting_section(subsection)
439 CALL create_rtp_section(subsection)
447 CALL create_sccs_section(subsection)
459 CALL create_hairy_probes_section(subsection)
471 SUBROUTINE create_hairy_probes_section(section)
477 cpassert(.NOT.
ASSOCIATED(section))
479 name=
"HAIRY_PROBES", &
480 description=
"Sets up a Hairy Probe calculation. ", &
481 n_keywords=0, n_subsections=0, repeats=.true.)
484 name=
"_SECTION_PARAMETERS_", &
485 description=
"Controls the activation of hairy probe", &
486 usage=
"&HAIRY_PROBES ON", &
487 default_l_val=.false., &
488 lone_keyword_l_val=.true.)
493 description=
"Indexes of the atoms to which the probes are attached.", &
494 usage=
"ATOM_IDS <INTEGER> .. <INTEGER>", &
500 description=
"Electronic temperature [K]", &
508 description=
"Chemical potential of the electrons in the probes [eV] ", &
516 description=
"Parameter for solution probes ", &
517 usage=
"ALPHA <REAL>", &
518 default_r_val=1.0_dp)
523 description=
" Tolerance for accuracy checks on occupation numbers "// &
524 "calculated using hair-probes. ", &
525 usage=
"EPS_HP <REAL>", &
526 default_r_val=1.0e-5_dp)
529 END SUBROUTINE create_hairy_probes_section
537 SUBROUTINE create_implicit_solv_section(section)
543 NULLIFY (keyword, subsection, print_key)
544 cpassert(.NOT.
ASSOCIATED(section))
546 description=
"Adds an implicit solvation model to the DFT calculation."// &
547 " Know also as Self Consistent Reaction Field.", &
548 n_keywords=0, n_subsections=0, repeats=.false.)
551 description=
"Value of the dielectric constant outside the sphere", &
552 usage=
"EPS_OUT <REAL>", &
553 default_r_val=1.0_dp)
558 description=
"Maximum value of L used in the multipole expansion", &
559 usage=
"LMAX <INTEGER>", &
564 CALL create_sphere_section(subsection)
569 description=
"Controls the printing basic info about the method", &
574 END SUBROUTINE create_implicit_solv_section
581 SUBROUTINE create_sphere_section(section)
587 NULLIFY (keyword, subsection)
588 cpassert(.NOT.
ASSOCIATED(section))
590 description=
"Treats the implicit solvent environment like a sphere", &
591 n_keywords=0, n_subsections=0, repeats=.false.)
594 description=
"Value of the spherical cavity in the dielectric medium", &
595 usage=
"RADIUS <REAL>", &
596 unit_str=
"angstrom", &
601 CALL create_center_section(subsection)
605 END SUBROUTINE create_sphere_section
612 SUBROUTINE create_center_section(section)
618 cpassert(.NOT.
ASSOCIATED(section))
620 description=
"Defines the center of the sphere.", &
621 n_keywords=0, n_subsections=0, repeats=.false.)
623 description=
"Coordinates of the center of the sphere", &
624 usage=
"XYZ <REAL> <REAL> <REAL>", &
625 unit_str=
"angstrom", &
626 type_of_var=
real_t, n_var=3)
631 description=
"Defines a list of atoms to define the center of the sphere", &
632 usage=
"ATOM_LIST <INTEGER> .. <INTEGER>", &
638 description=
"Defines the weight used to define the center of the sphere"// &
639 " (if ATOM_LIST is provided)", &
640 usage=
"WEIGHT_TYPE (UNIT|MASS)", &
641 enum_c_vals=(/
"UNIT",
"MASS"/), &
648 description=
"Specify if the center of the sphere should be fixed or"// &
649 " allowed to move", &
650 usage=
"FIXED <LOGICAL>", &
651 default_l_val=.true.)
655 END SUBROUTINE create_center_section
661 SUBROUTINE create_admm_section(section)
667 cpassert(.NOT.
ASSOCIATED(section))
668 CALL section_create(section, __location__, name=
"AUXILIARY_DENSITY_MATRIX_METHOD", &
669 description=
"Parameters needed for the ADMM method.", &
670 n_keywords=1, n_subsections=1, repeats=.false., &
674 keyword, __location__, &
676 description=
"Type of ADMM (sort name) as refered in literature. "// &
677 "This sets values for METHOD, ADMM_PURIFICATION_METHOD, and EXCH_SCALING_MODEL", &
678 enum_c_vals=
s2a(
"NONE",
"ADMM1",
"ADMM2",
"ADMMS",
"ADMMP",
"ADMMQ"), &
679 enum_desc=
s2a(
"No short name is used, use specific definitions (default)", &
680 "ADMM1 method from Guidon2010", &
681 "ADMM2 method from Guidon2010", &
682 "ADMMS method from Merlot2014", &
683 "ADMMP method from Merlot2014", &
684 "ADMMQ method from Merlot2014"), &
692 keyword, __location__, &
693 name=
"ADMM_PURIFICATION_METHOD", &
694 description=
"Method that shall be used for wavefunction fitting. Use MO_DIAG for MD.", &
695 enum_c_vals=
s2a(
"NONE",
"CAUCHY",
"CAUCHY_SUBSPACE",
"MO_DIAG",
"MO_NO_DIAG",
"MCWEENY",
"NONE_DM"), &
699 enum_desc=
s2a(
"Do not apply any purification", &
700 "Perform purification via general Cauchy representation", &
701 "Perform purification via Cauchy representation in occupied subspace", &
702 "Calculate MO derivatives via Cauchy representation by diagonalization", &
703 "Calculate MO derivatives via Cauchy representation by inversion", &
704 "Perform original McWeeny purification via matrix multiplications", &
705 "Do not apply any purification, works directly with density matrix"), &
711 keyword, __location__, &
713 description=
"Method that shall be used for wavefunction fitting. Use BASIS_PROJECTION for MD.", &
714 enum_c_vals=
s2a(
"BASIS_PROJECTION",
"BLOCKED_PROJECTION_PURIFY_FULL",
"BLOCKED_PROJECTION", &
715 "CHARGE_CONSTRAINED_PROJECTION"), &
718 enum_desc=
s2a(
"Construct auxiliary density matrix from auxiliary basis.", &
719 "Construct auxiliary density from a blocked Fock matrix,"// &
720 " but use the original matrix for purification.", &
721 "Construct auxiliary density from a blocked Fock matrix.", &
722 "Construct auxiliary density from auxiliary basis enforcing charge constrain."), &
728 keyword, __location__, &
729 name=
"EXCH_SCALING_MODEL", &
730 description=
"Scaling of the exchange correction calculated by the auxiliary density matrix.", &
731 enum_c_vals=
s2a(
"NONE",
"MERLOT"), &
733 enum_desc=
s2a(
"No scaling is enabled, refers to methods ADMM1, ADMM2 or ADMMQ.", &
734 "Exchange scaling according to Merlot (2014)"), &
740 keyword, __location__, &
741 name=
"EXCH_CORRECTION_FUNC", &
742 description=
"Exchange functional which is used for the ADMM correction. "// &
743 "LibXC implementations require linking with LibXC", &
744 enum_c_vals=
s2a(
"DEFAULT",
"PBEX",
"NONE",
"OPTX",
"BECKE88X", &
745 "PBEX_LIBXC",
"BECKE88X_LIBXC",
"OPTX_LIBXC",
"DEFAULT_LIBXC",
"LDA_X_LIBXC"), &
751 enum_desc=
s2a(
"Use PBE-based corrections according to the chosen interaction operator.", &
752 "Use PBEX functional for exchange correction.", &
753 "No correction: X(D)-x(d)-> 0.", &
754 "Use OPTX functional for exchange correction.", &
755 "Use Becke88X functional for exchange correction.", &
756 "Use PBEX functional (LibXC implementation) for exchange correction.", &
757 "Use Becke88X functional (LibXC implementation) for exchange correction.", &
758 "Use OPTX functional (LibXC implementation) for exchange correction.", &
759 "Use PBE-based corrections (LibXC where possible) to the chosen interaction operator.", &
760 "Use Slater X functional (LibXC where possible) for exchange correction."), &
766 description=
"OPTX a1 coefficient", &
767 default_r_val=1.05151_dp)
771 description=
"OPTX a2 coefficient", &
772 default_r_val=1.43169_dp)
776 description=
"OPTX gamma coefficient", &
777 default_r_val=0.006_dp)
782 description=
"Specifies a list of atoms.", &
783 usage=
"BLOCK_LIST {integer} {integer} .. {integer}", &
784 n_var=-1, type_of_var=
integer_t, repeats=.true.)
789 description=
"Define accuracy of DBCSR operations", &
790 usage=
"EPS_FILTER", default_r_val=0.0_dp)
794 END SUBROUTINE create_admm_section
800 SUBROUTINE create_density_fitting_section(section)
806 NULLIFY (keyword, print_key)
807 cpassert(.NOT.
ASSOCIATED(section))
808 CALL section_create(section, __location__, name=
"DENSITY_FITTING", &
809 description=
"Setup parameters for density fitting (Bloechl charges or density derived "// &
810 "atomic point charges (DDAPC) charges)", &
811 n_keywords=7, n_subsections=0, repeats=.false., &
815 description=
"Specifies the numbers of gaussian used to fit the QM density for each atomic site.", &
816 usage=
"NUM_GAUSS {integer}", &
817 n_var=1, type_of_var=
integer_t, default_i_val=3)
822 description=
"Specifies the progression factor for the gaussian exponent for each atomic site.", &
823 usage=
"PFACTOR {real}", &
824 n_var=1, type_of_var=
real_t, default_r_val=1.5_dp)
829 description=
"Specifies the smallest radius of the gaussian used in the fit. All other radius are"// &
830 " obtained with the progression factor.", &
831 usage=
"MIN_RADIUS {real}", &
832 unit_str=
"angstrom", n_var=1, type_of_var=
real_t, default_r_val=0.5_dp)
837 description=
"Specifies all the radius of the gaussian used in the fit for each atomic site. The use"// &
838 " of this keyword disables all other keywords of this section.", &
839 usage=
"RADII {real} {real} .. {real}", &
840 unit_str=
"angstrom", n_var=-1, type_of_var=
real_t)
845 description=
"Cutoff for charge fit in G-space.", &
846 usage=
"GCUT {real}", &
847 n_var=1, type_of_var=
real_t, default_r_val=sqrt(6.0_dp))
852 description=
"Controls the printing of basic information during the run", &
855 CALL keyword_create(keyword, __location__, name=
"CONDITION_NUMBER", &
856 description=
"Prints information regarding the condition numbers of the A matrix (to be inverted)", &
857 usage=
"CONDITION_NUMBER <LOGICAL>", &
858 default_l_val=.false., lone_keyword_l_val=.true.)
865 END SUBROUTINE create_density_fitting_section
872 SUBROUTINE create_relativistic_section(section)
877 cpassert(.NOT.
ASSOCIATED(section))
879 description=
"parameters needed and setup for relativistic calculations", &
880 n_keywords=5, n_subsections=0, repeats=.false.)
885 description=
"type of relativistic correction used", &
886 usage=
"method (NONE|DKH|ZORA)", default_i_val=
rel_none, &
887 enum_c_vals=
s2a(
"NONE",
"DKH",
"ZORA"), &
889 enum_desc=
s2a(
"Use no relativistic correction", &
890 "Use Douglas-Kroll-Hess method", &
896 description=
"The order of the DKH transformation ", &
897 usage=
"DKH_order 2", default_i_val=2)
902 description=
"Type of ZORA method to be used", &
904 enum_c_vals=
s2a(
"FULL",
"MP",
"scMP"), &
905 enum_desc=
s2a(
"Full ZORA method (not implemented)", &
906 "ZORA with atomic model potential", &
907 "Scaled ZORA with atomic model potential"), &
912 CALL keyword_create(keyword, __location__, name=
"transformation", &
913 description=
"Type of DKH transformation", &
914 usage=
"transformation (FULL|MOLECULE|ATOM)", default_i_val=
rel_trans_atom, &
915 enum_c_vals=
s2a(
"FULL",
"MOLECULE",
"ATOM"), &
917 enum_desc=
s2a(
"Use full matrix transformation", &
918 "Use transformation blocked by molecule", &
919 "Use atomic blocks"))
924 description=
"The minimal atomic number considered for atom transformation", &
925 usage=
"z_cutoff 50", default_i_val=1)
930 description=
"External potential used in DKH transformation, full 1/r or erfc(r)/r", &
931 usage=
"POTENTIAL {FULL,ERFC}", default_i_val=
rel_pot_erfc, &
932 enum_c_vals=
s2a(
"FULL",
"ERFC"), &
937 END SUBROUTINE create_relativistic_section
944 SUBROUTINE create_kg_section(section)
950 cpassert(.NOT.
ASSOCIATED(section))
952 description=
"Specifies the parameters for a Kim-Gordon-like partitioning"// &
953 " into molecular subunits", &
954 n_keywords=0, n_subsections=1, repeats=.false., &
957 NULLIFY (keyword, subsection, print_key)
969 CALL keyword_create(keyword, __location__, name=
"COLORING_METHOD", &
970 description=
"Which algorithm to use for coloring.", &
971 usage=
"COLORING_METHOD GREEDY", &
973 enum_c_vals=
s2a(
"DSATUR",
"GREEDY"), &
974 enum_desc=
s2a(
"Maximum degree of saturation, relatively accurate", &
975 "Greedy, fast coloring, less accurate"), &
981 description=
"Algorithm to use for the calculation of the nonadditive kinetic energy.", &
982 usage=
"TNADD_METHOD ATOMIC", &
984 enum_c_vals=
s2a(
"EMBEDDING",
"RI_EMBEDDING",
"ATOMIC",
"NONE"), &
985 enum_desc=
s2a(
"Use full embedding potential (see Iannuzzi et al)", &
986 "Use full embedding potential with RI density fitting", &
987 "Use sum of atomic model potentials", &
988 "Do not use kinetic energy embedding"), &
993 CALL keyword_create(keyword, __location__, name=
"INTEGRATION_GRID", &
994 description=
"Grid [small,medium,large,huge]to be used for the TNADD integration.", &
995 usage=
"INTEGRATION_GRID MEDIUM", &
996 default_c_val=
"MEDIUM")
1001 description=
"Print section", &
1002 n_keywords=0, n_subsections=1, repeats=.false.)
1005 description=
"Controls the printing of the neighbor lists.", &
1006 print_level=
low_print_level, filename=
"__STD_OUT__", unit_str=
"angstrom")
1009 name=
"SAB_ORB_FULL", &
1010 description=
"Activates the printing of the full orbital "// &
1011 "orbital neighbor lists.", &
1012 default_l_val=.false., &
1013 lone_keyword_l_val=.true.)
1018 name=
"SAB_ORB_MOLECULAR", &
1019 description=
"Activates the printing of the orbital "// &
1020 "orbital neighbor lists for molecular subsets.", &
1021 default_l_val=.false., &
1022 lone_keyword_l_val=.true.)
1028 description=
"Activates the printing of the orbital "// &
1029 "atomic potential neighbor list.", &
1030 default_l_val=.false., &
1031 lone_keyword_l_val=.true.)
1041 END SUBROUTINE create_kg_section
1054 cpassert(.NOT.
ASSOCIATED(section))
1056 description=
"This section is used to set up the BSSE calculation. "// &
1057 "It also requires that for each atomic kind X a kind X_ghost is present, "// &
1058 "with the GHOST keyword specified, in addition to the other required fields.", &
1059 n_keywords=3, n_subsections=1, repeats=.false.)
1061 NULLIFY (keyword, subsection)
1064 description=
"Specify the atom number belonging to this fragment.", &
1065 n_keywords=2, n_subsections=0, repeats=.true.)
1068 description=
"Specifies a list of atoms.", &
1069 usage=
"LIST {integer} {integer} .. {integer}", &
1070 repeats=.true., n_var=-1, type_of_var=
integer_t)
1078 CALL section_create(subsection, __location__, name=
"CONFIGURATION", &
1079 description=
"Specify additional parameters for the combinatorial configurations. "// &
1080 "Use this section to manually specify charge and multiplicity of the fragments "// &
1081 "and their combinations.", &
1082 n_keywords=2, n_subsections=0, repeats=.true.)
1085 description=
"Specifies the global configuration using 1 or 0 for each fragment. "// &
1086 "1 specifies the respective fragment as used, 0 as unused.", &
1087 usage=
"GLB_CONF {integer} {integer} .. {integer}", &
1093 description=
"Specifies the subconfiguration using 1 or 0 belonging to the global configuration. "// &
1094 "1 specifies the respective fragment as real, 0 as ghost.", &
1095 usage=
"SUB_CONF {integer} {integer} .. {integer}", &
1101 name=
"MULTIPLICITY", &
1102 variants=(/
"MULTIP"/), &
1103 description=
"Specify for each fragment the multiplicity. Two times the total spin plus one. "// &
1104 "Specify 3 for a triplet, 4 for a quartet,and so on. Default is 1 (singlet) for an "// &
1105 "even number and 2 (doublet) for an odd number of electrons.", &
1106 usage=
"MULTIPLICITY 3", &
1112 description=
"The total charge for each fragment.", &
1113 usage=
"CHARGE -1", &
1120 CALL section_create(subsection, __location__, name=
"FRAGMENT_ENERGIES", &
1121 description=
"This section contains the energies of the fragments already"// &
1122 " computed. It is useful as a summary and specifically for restarting BSSE runs.", &
1123 n_keywords=2, n_subsections=0, repeats=.true.)
1124 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1125 description=
"The energy computed for each fragment", repeats=.true., &
1126 usage=
"{REAL}", type_of_var=
real_t)
1132 CALL create_print_bsse_section(subsection)
1143 SUBROUTINE create_print_bsse_section(section)
1148 cpassert(.NOT.
ASSOCIATED(section))
1150 description=
"Section of possible print options in BSSE code.", &
1151 n_keywords=0, n_subsections=1, repeats=.false.)
1155 description=
"Controls the printing of information regarding the run.", &
1161 description=
"Controls the dumping of the restart file during BSSE runs. "// &
1162 "By default the restart is updated after each configuration calculation is "// &
1169 END SUBROUTINE create_print_bsse_section
1176 SUBROUTINE create_rigpw_section(section)
1179 cpassert(.NOT.
ASSOCIATED(section))
1181 description=
"This section specifies optional parameters for RIGPW.", &
1182 n_keywords=1, n_subsections=0, repeats=.false.)
1209 END SUBROUTINE create_rigpw_section
1220 LOGICAL,
INTENT(in) :: create_subsections
1225 cpassert(.NOT.
ASSOCIATED(section))
1227 description=
"multigrid information", &
1228 n_keywords=5, n_subsections=1, repeats=.false.)
1231 description=
"The number of multigrids to use", &
1232 usage=
"ngrids 1", default_i_val=4)
1237 description=
"The cutoff of the finest grid level. Default value for "// &
1238 "SE or DFTB calculation is 1.0 [Ry].", &
1240 unit_str=
"Ry"), n_var=1, unit_str=
"Ry")
1244 CALL keyword_create(keyword, __location__, name=
"progression_factor", &
1245 description=
"Factor used to find the cutoff of the multigrids that"// &
1246 " where not given explicitly", &
1247 usage=
"progression_factor <integer>", default_r_val=3._dp)
1251 CALL keyword_create(keyword, __location__, name=
"commensurate", &
1252 description=
"If the grids should be commensurate. If true overrides "// &
1253 "the progression factor and the cutoffs of the sub grids", &
1254 usage=
"commensurate", default_l_val=.false., &
1255 lone_keyword_l_val=.true.)
1260 description=
"If both rho and rho_gspace are needed ", &
1261 usage=
"realspace", default_l_val=.false., &
1262 lone_keyword_l_val=.true.)
1267 variants=(/
"RELATIVE_CUTOFF"/), &
1268 description=
"Determines the grid at which a Gaussian is mapped,"// &
1269 " giving the cutoff used for a gaussian with alpha=1."// &
1270 " A value 50+-10Ry might be required for highly accurate results,"// &
1271 " Or for simulations with a variable cell."// &
1272 " Versions prior to 2.3 used a default of 30Ry.", &
1273 usage=
"RELATIVE_CUTOFF real", default_r_val=20.0_dp, &
1278 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_SET", &
1279 description=
"Activate a manual setting of the multigrids", &
1280 usage=
"MULTIGRID_SET", default_l_val=.false.)
1285 name=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1286 description=
"Skips load balancing on distributed multigrids. "// &
1287 "Memory usage is O(p) so may be used "// &
1288 "for all but the very largest runs.", &
1289 usage=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1290 default_l_val=.false., &
1291 lone_keyword_l_val=.true.)
1300 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_CUTOFF", &
1301 variants=(/
"CUTOFF_LIST"/), &
1302 description=
"List of cutoff values to set up multigrids manually", &
1303 usage=
"MULTIGRID_CUTOFF 200.0 100.0 ", &
1310 IF (create_subsections)
THEN
1311 NULLIFY (subsection)
1316 NULLIFY (subsection)
1334 cpassert(.NOT.
ASSOCIATED(section))
1335 CALL section_create(section, __location__, name=
"interpolator", &
1336 description=
"kind of interpolation used between the multigrids", &
1337 n_keywords=5, n_subsections=0, repeats=.false.)
1339 NULLIFY (keyword, print_key)
1342 description=
"the interpolator to use", &
1343 usage=
"kind spline3", &
1345 enum_c_vals=
s2a(
"pw",
"spline3_nopbc",
"spline3"), &
1351 CALL keyword_create(keyword, __location__, name=
"safe_computation", &
1352 description=
"if a non unrolled calculation is to be performed in parallel", &
1353 usage=
"safe_computation OFF", &
1354 default_l_val=.false., &
1355 lone_keyword_l_val=.true.)
1359 CALL keyword_create(keyword, __location__, name=
"aint_precond", &
1360 description=
"the approximate inverse to use to get the starting point"// &
1361 " for the linear solver of the spline3 methods", &
1362 usage=
"aint_precond copy", &
1364 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1365 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1372 description=
"The preconditioner used"// &
1373 " for the linear solver of the spline3 methods", &
1374 usage=
"PRECOND copy", &
1376 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1377 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1384 description=
"accuracy on the solution for spline3 the interpolators", &
1385 usage=
"eps_x 1.e-15", default_r_val=1.e-10_dp)
1390 description=
"accuracy on the residual for spline3 the interpolators", &
1391 usage=
"eps_r 1.e-15", default_r_val=1.e-10_dp)
1396 variants=(/
'maxiter'/), &
1397 description=
"the maximum number of iterations", &
1398 usage=
"max_iter 200", default_i_val=100)
1404 description=
"if convergence information about the linear solver"// &
1405 " of the spline methods should be printed", &
1407 each_iter_values=(/10/), filename=
"__STD_OUT__", &
1419 SUBROUTINE create_sic_section(section)
1424 cpassert(.NOT.
ASSOCIATED(section))
1426 description=
"parameters for the self interaction correction", &
1427 n_keywords=6, n_subsections=0, repeats=.false., &
1432 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_A", &
1433 description=
"Scaling of the coulomb term in sic [experimental]", &
1434 usage=
"SIC_SCALING_A 0.5", &
1436 default_r_val=1.0_dp)
1440 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_B", &
1441 description=
"Scaling of the xc term in sic [experimental]", &
1442 usage=
"SIC_SCALING_B 0.5", &
1444 default_r_val=1.0_dp)
1449 description=
"Method used to remove the self interaction", &
1450 usage=
"SIC_METHOD MAURI_US", &
1452 enum_c_vals=
s2a(
"NONE",
"MAURI_US",
"MAURI_SPZ",
"AD",
"EXPLICIT_ORBITALS"), &
1454 enum_desc=
s2a(
"Do not apply a sic correction", &
1455 "Employ a (scaled) correction proposed by Mauri and co-workers"// &
1456 " on the spin density / doublet unpaired orbital", &
1457 "Employ a (scaled) Perdew-Zunger expression"// &
1458 " on the spin density / doublet unpaired orbital", &
1459 "The average density correction", &
1460 "(scaled) Perdew-Zunger correction explicitly on a set of orbitals."), &
1466 description=
"Type of orbitals treated with the SIC", &
1467 usage=
"ORBITAL_SET ALL", &
1469 enum_c_vals=
s2a(
"UNPAIRED",
"ALL"), &
1470 enum_desc=
s2a(
"correction for the unpaired orbitals only, requires a restricted open shell calculation", &
1471 "correction for all orbitals, requires a LSD or ROKS calculation"), &
1476 END SUBROUTINE create_sic_section
1483 SUBROUTINE create_low_spin_roks_section(section)
1488 cpassert(.NOT.
ASSOCIATED(section))
1489 CALL section_create(section, __location__, name=
"LOW_SPIN_ROKS", &
1490 description=
"Specify the details of the low spin ROKS method. "// &
1491 "In particular, one can specify various terms added to the energy of the high spin roks configuration"// &
1492 " with a energy scaling factor, and a prescription of the spin state.", &
1493 n_keywords=6, n_subsections=0, repeats=.false.)
1496 CALL keyword_create(keyword, __location__, name=
"ENERGY_SCALING", &
1497 description=
"The scaling factors for each term added to the total energy. "// &
1498 "This list should contain one number for each term added to the total energy.", &
1499 usage=
"ENERGY_SCALING 1.0 -1.0 ", &
1500 n_var=-1, type_of_var=
real_t, repeats=.false.)
1504 keyword, __location__, name=
"SPIN_CONFIGURATION", &
1505 description=
"For each singly occupied orbital, specify if this should be an alpha (=1) or a beta (=2) orbital. "// &
1506 "This keyword should be repeated, each repetition corresponding to an additional term.", &
1507 usage=
"SPIN_CONFIGURATION 1 2", &
1508 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1512 END SUBROUTINE create_low_spin_roks_section
1518 SUBROUTINE create_rtp_section(section)
1522 TYPE(
section_type),
POINTER :: print_key, print_section, subsection
1525 cpassert(.NOT.
ASSOCIATED(section))
1526 CALL section_create(section, __location__, name=
"REAL_TIME_PROPAGATION", &
1527 description=
"Parameters needed to set up the real time propagation"// &
1528 " for the electron dynamics. This currently works only in the NVE ensemble.", &
1529 n_keywords=4, n_subsections=4, repeats=.false., &
1533 description=
"Maximal number of iterations for the self consistent propagator loop.", &
1534 usage=
"MAX_ITER 10", &
1540 description=
"Convergence criterion for the self consistent propagator loop.", &
1541 usage=
"EPS_ITER 1.0E-5", &
1542 default_r_val=1.0e-7_dp)
1547 description=
"Speciefies how many steps will be used for extrapolation. "// &
1548 "One will be always used which is means X(t+dt)=X(t)", &
1549 usage=
"ASPC_ORDER 3", &
1555 description=
"Which method should be used to calculate the exponential"// &
1556 " in the propagator. It is recommended to use BCH when employing density_propagation "// &
1557 "and ARNOLDI otherwise.", &
1558 usage=
"MAT_EXP TAYLOR", default_i_val=
do_arnoldi, &
1559 enum_c_vals=
s2a(
"TAYLOR",
"PADE",
"ARNOLDI",
"BCH",
"EXACT"), &
1561 enum_desc=
s2a(
"exponential is evaluated using scaling and squaring in combination"// &
1562 " with a taylor expansion of the exponential.", &
1563 "uses scaling and squaring together with the pade approximation", &
1564 "uses arnoldi subspace algorithm to compute exp(H)*MO directly, can't be used in "// &
1565 "combination with Crank Nicholson or density propagation", &
1566 "Uses a Baker-Campbell-Hausdorff expansion to propagate the density matrix,"// &
1567 " only works for density propagation", &
1568 "Uses diagonalisation of the exponent matrices to determine the "// &
1569 "matrix exponential exactly. Only implemented for GWBSE."))
1573 CALL keyword_create(keyword, __location__, name=
"DENSITY_PROPAGATION", &
1574 description=
"The density matrix is propagated instead of the molecular orbitals. "// &
1575 "This can allow a linear scaling simulation. The density matrix is filtered with "// &
1576 "the threshold based on the EPS_FILTER keyword from the LS_SCF section", &
1577 usage=
"DENSITY_PROPAGATION .TRUE.", &
1578 default_l_val=.false., lone_keyword_l_val=.true.)
1582 CALL keyword_create(keyword, __location__, name=
"SC_CHECK_START", &
1583 description=
"Speciefies how many iteration steps will be done without "// &
1584 "a check for self consistency. Can save some time in big calculations.", &
1585 usage=
"SC_CHECK_START 3", &
1590 CALL keyword_create(keyword, __location__, name=
"EXP_ACCURACY", &
1591 description=
"Accuracy for the taylor and pade approximation. "// &
1592 "This is only an upper bound bound since the norm used for the guess "// &
1593 "is an upper bound for the needed one.", &
1594 usage=
"EXP_ACCURACY 1.0E-6", &
1595 default_r_val=1.0e-9_dp)
1600 description=
"Which propagator should be used for the orbitals", &
1601 usage=
"PROPAGATOR ETRS", default_i_val=
do_etrs, &
1602 enum_c_vals=
s2a(
"ETRS",
"CN",
"EM"), &
1604 enum_desc=
s2a(
"enforced time reversible symmetry", &
1605 "Crank Nicholson propagator", &
1606 "Exponential midpoint propagator"))
1611 description=
"Controls the initial WFN used for propagation. "// &
1612 "Note that some energy contributions may not be "// &
1613 "initialized in the restart cases, for instance "// &
1614 "electronic entropy energy in the case of smearing.", &
1615 usage=
"INITIAL_WFN SCF_WFN", default_i_val=
use_scf_wfn, &
1616 enum_c_vals=
s2a(
"SCF_WFN",
"RESTART_WFN",
"RT_RESTART"), &
1618 enum_desc=
s2a(
"An SCF run is performed to get the initial state.", &
1619 "A wavefunction from a previous SCF is propagated. Especially useful,"// &
1620 " if electronic constraints or restraints are used in the previous calculation, "// &
1621 "since these do not work in the rtp scheme.", &
1622 "use the wavefunction of a real time propagation/ehrenfest run"))
1626 CALL keyword_create(keyword, __location__, name=
"APPLY_WFN_MIX_INIT_RESTART", &
1627 description=
"If set to True and in the case of INITIAL_WFN=RESTART_WFN, call the "// &
1628 "DFT%PRINT%WFN_MIX section to mix the read initial wfn. The starting wave-function of the "// &
1629 "RTP will be the mixed one. Setting this to True without a defined WFN_MIX section will "// &
1630 "not do anything as defining a WFN_MIX section without this keyword for RTP run with "// &
1631 "INITIAL_WFN=RESTART_WFN. Note that if INITIAL_WFN=SCF_WFN, this keyword is not needed to "// &
1632 "apply the mixing defined in the WFN_MIX section. Default is False.", &
1633 usage=
"APPLY_WFN_MIX_INIT_RESTART", &
1634 default_l_val=.false., lone_keyword_l_val=.true.)
1638 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE", &
1639 description=
"Applies a delta kick to the initial wfn (only RTP for now - the EMD"// &
1640 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1641 usage=
"APPLY_DELTA_PULSE", &
1642 default_l_val=.false., lone_keyword_l_val=.true.)
1646 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE_MAG", &
1647 description=
"Applies a magnetic delta kick to the initial wfn (only RTP for now - the EMD"// &
1648 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1649 usage=
"APPLY_DELTA_PULSE_MAG", &
1650 default_l_val=.false., lone_keyword_l_val=.true.)
1654 CALL keyword_create(keyword, __location__, name=
"VELOCITY_GAUGE", &
1655 description=
"Perform propagation in the velocity gauge using the explicit vector potential"// &
1656 " only a constant vector potential as of now (corresonding to a delta-pulse)."// &
1657 " uses DELTA_PULSE_SCALE and DELTA_PULSE_DIRECTION to define the vector potential", &
1658 usage=
"VELOCITY_GAUGE T", &
1659 default_l_val=.false., lone_keyword_l_val=.true.)
1664 description=
"Define gauge origin for magnetic perturbation", &
1665 usage=
"GAUGE_ORIG COM", &
1666 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1667 enum_desc=
s2a(
"Use Center of Mass", &
1668 "Use Center of Atomic Charges", &
1669 "Use User Defined Point (Keyword:REF_POINT)", &
1670 "Use Origin of Coordinate System"), &
1679 CALL keyword_create(keyword, __location__, name=
"GAUGE_ORIG_MANUAL", &
1680 description=
"Manually defined gauge origin for magnetic perturbation [in Bohr!]", &
1681 usage=
"GAUGE_ORIG_MANUAL x y z", &
1683 n_var=3, default_r_vals=(/0._dp, 0._dp, 0._dp/), &
1690 description=
"apply gauge transformed non-local potential term"// &
1691 " only affects VELOCITY_GAUGE=.TRUE.", &
1692 usage=
"VG_COM_NL T", &
1693 default_l_val=.true., lone_keyword_l_val=.true.)
1698 description=
"Include non-local commutator for periodic delta pulse."// &
1699 " only affects PERIODIC=.TRUE.", &
1701 default_l_val=.true., lone_keyword_l_val=.true.)
1706 description=
"Use length representation delta pulse (in conjunction with PERIODIC T)."// &
1707 " This corresponds to a 1st order perturbation in the length gauge."// &
1708 " Note that this is NOT compatible with a periodic calculation!"// &
1709 " Uses the reference point defined in DFT%PRINT%MOMENTS ", &
1710 usage=
"LEN_REP T", &
1711 default_l_val=.false., lone_keyword_l_val=.true.)
1716 description=
"Apply a delta-kick that is compatible with periodic boundary conditions"// &
1717 " for any value of DELTA_PULSE_SCALE. Uses perturbation theory for the preparation of"// &
1718 " the initial wfn with the velocity operator as perturbation."// &
1719 " If LEN_REP is .FALSE. this corresponds to a first order velocity gauge."// &
1720 " Note that the pulse is only applied when INITIAL_WFN is set to SCF_WFN,"// &
1721 " and not for restarts (RT_RESTART).", &
1723 default_l_val=.true., lone_keyword_l_val=.true.)
1727 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_DIRECTION", &
1728 description=
"Direction of the applied electric field. The k vector is given as"// &
1729 " 2*Pi*[i,j,k]*inv(h_mat), which for PERIODIC .FALSE. yields exp(ikr) periodic with"// &
1730 " the unit cell, only if DELTA_PULSE_SCALE is set to unity. For an orthorhombic cell"// &
1731 " [1,0,0] yields [2*Pi/L_x,0,0]. For small cells, this results in a very large kick.", &
1732 usage=
"DELTA_PULSE_DIRECTION 1 1 1", n_var=3, default_i_vals=(/1, 0, 0/), &
1737 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_SCALE", &
1738 description=
"Scale the k vector, which for PERIODIC .FALSE. results in exp(ikr) no"// &
1739 " longer being periodic with the unit cell. The norm of k is the strength of the"// &
1740 " applied electric field in atomic units.", &
1741 usage=
"DELTA_PULSE_SCALE 0.01 ", n_var=1, default_r_val=0.001_dp)
1745 CALL keyword_create(keyword, __location__, name=
"HFX_BALANCE_IN_CORE", &
1746 description=
"If HFX is used, this keyword forces a redistribution/recalculation"// &
1747 " of the integrals, balanced with respect to the in core steps.", &
1748 usage=
"HFX_BALANCE_IN_CORE", &
1749 default_l_val=.false., lone_keyword_l_val=.true.)
1753 CALL keyword_create(keyword, __location__, name=
"MCWEENY_MAX_ITER", &
1754 description=
"Determines the maximum amount of McWeeny steps used after each converged"// &
1755 " step in density propagation", &
1756 usage=
"MCWEENY_MAX_ITER 2", default_i_val=1)
1761 keyword, __location__, name=
"ACCURACY_REFINEMENT", &
1762 description=
"If using density propagation some parts should be calculated with a higher accuracy than the rest"// &
1763 " to reduce numerical noise. This factor determines by how much the filtering threshold is"// &
1764 " reduced for these calculations.", &
1765 usage=
"ACCURACY_REFINEMENT", default_i_val=100)
1770 description=
"Threshold after which McWeeny is terminated", &
1771 usage=
"MCWEENY_EPS 0.00001", &
1772 default_r_val=0.0_dp)
1776 NULLIFY (print_section)
1778 description=
"Section of possible print options for an RTP runs", &
1783 description=
"Controls the printing within real time propagation and Eherenfest dynamics", &
1789 description=
"Controls the dumping of the MO restart file during rtp. "// &
1790 "By default keeps a short history of three restarts. "// &
1791 "See also RESTART_HISTORY. In density propagation this controls the printing of "// &
1792 "density matrix.", &
1794 each_iter_names=
s2a(
"MD"), each_iter_values=(/20/), &
1796 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1797 description=
"Specifies the maximum number of backup copies.", &
1798 usage=
"BACKUP_COPIES {int}", &
1806 description=
"Dumps unique MO restart files during the run keeping all of them. "// &
1807 "In density propagation it dumps the density matrix instead", &
1809 each_iter_names=
s2a(
"MD"), &
1810 each_iter_values=(/500/), &
1812 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1813 description=
"Specifies the maximum number of backup copies.", &
1814 usage=
"BACKUP_COPIES {int}", &
1822 description=
"Print the time-dependent field applied during an EMD simulation in "// &
1825 each_iter_names=
s2a(
"MD"), &
1826 each_iter_values=(/1/), &
1827 filename=
"applied_field")
1836 description=
"Print the integral of the current density (only if the"// &
1837 " imaginary part of the density is NOT zero.", &
1839 each_iter_names=
s2a(
"MD"), &
1840 each_iter_values=(/1/), &
1841 filename=
"rtp_j_int")
1846 description=
"Print the current during an EMD simulation to cube files.", &
1848 each_iter_names=
s2a(
"MD"), &
1849 each_iter_values=(/20/), &
1851 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1852 description=
"Specifies the maximum number of backup copies.", &
1853 usage=
"BACKUP_COPIES {int}", &
1858 description=
"The stride (X,Y,Z) used to write the cube file "// &
1859 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1860 " 1 number valid for all components.", &
1861 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=(/2, 2, 2/), type_of_var=
integer_t)
1870 description=
"Prints the density matrix at iterations in clear text to a file", &
1872 each_iter_names=
s2a(
"MD"), &
1873 each_iter_values=(/1/), &
1879 description=
"Prints the time-dependent electronic moments at "// &
1880 "iterations in clear text to a file.", &
1882 each_iter_names=
s2a(
"MD"), &
1883 each_iter_values=(/1/), &
1884 filename=
"__STD_OUT__")
1889 description=
"Prints the calculated Fourier transform of "// &
1890 "time-dependent moments. For calculations with real time pulse (not delta kick) "// &
1891 "can be supplied with starting time.", &
1893 each_iter_names=
s2a(
"MD"), &
1894 each_iter_values=(/1/), &
1895 filename=
"MOMENTS_FT")
1900 description=
"Prints the chosen element of the energy dependent polarizability tensor "// &
1901 "to a specified file. The tensor is calculated as ratio of "// &
1902 "Fourier transform of the dipole "// &
1903 "moment trace and Fourier transform of the applied field "// &
1904 "(for delta kick, constant real field is applied.", &
1906 each_iter_names=
s2a(
"MD"), &
1907 each_iter_values=(/1/), &
1908 filename=
"POLARIZABILITY")
1910 description=
"Specifies the element of polarizability which is to be printed out "// &
1911 "(indexing starts at 1). If not explicitly provided, RTBSE code tries to guess "// &
1912 "the optimal values - for applied electric field (both delta pulse and RT field) "// &
1913 "with only a single non-zero cartesian component, prints the 3 trivially available elements.", &
1914 type_of_var=
integer_t, default_i_vals=(/1, 1/), n_var=2, usage=
"ELEMENT 1 1", repeats=.true.)
1921 description=
"Print the energy constituents (relevant to RTP) which make up "// &
1922 "the Total Energy", &
1924 each_iter_names=
s2a(
"MD"), &
1925 each_iter_values=(/1/), &
1933 NULLIFY (subsection)
1934 CALL create_rtbse_section(subsection)
1938 END SUBROUTINE create_rtp_section
1944 SUBROUTINE create_rtbse_section(section)
1951 NULLIFY (subsection)
1952 cpassert(.NOT.
ASSOCIATED(section))
1955 description=
"Controls options for the real-time Bethe-Salpeter (RTBSE) propagation. "// &
1956 "Note that running RTBSE requires previous low-scaling "// &
1957 "[GW](#CP2K_INPUT.FORCE_EVAL.PROPERTIES.BANDSTRUCTURE.GW) calculation. Also note that "// &
1958 "designating this section as RTBSE run but choosing run type ENERGY leads to potential "// &
1959 "deallocation errors.", &
1963 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1964 description=
"Which method is used for the time propagation of electronic structure. "// &
1965 "By default, use the TDDFT method. Can also choose RT-BSE method, which propagates the lesser "// &
1966 "Green's function instead of density matrix/molecular orbitals.", &
1967 usage=
"&RTBSE TDDFT", &
1970 enum_c_vals=
s2a(
"TDDFT",
"RTBSE"), &
1972 enum_desc=
s2a(
"Use TDDFT for density matrix/MO propagation.", &
1973 "Use RT-BSE for Green's function propagation"))
1978 CALL keyword_create(keyword, __location__, name=
"RTBSE_HAMILTONIAN", &
1979 description=
"Which Hamiltonian to use as the single-particle Hamiltonian"// &
1980 " in the Green's propagator.", &
1981 usage=
"RTBSE_HAMILTONIAN G0W0", &
1983 enum_c_vals=
s2a(
"KS",
"G0W0"), &
1985 enum_desc=
s2a(
"Use Kohn-Sham Hamiltonian for Green's propagation.", &
1986 "Use G0W0 Hamiltonian for Green's function propagation"))
1991 description=
"Numerical Fourier transform (required for calculation of "// &
1992 "MOMENTS_FT and POLARIZABILITY) can oscillate "// &
1993 "when the final values are far away from zero. "// &
1994 "This keyword controls the exponential damping in the Fourier transform "// &
1995 "(Fourier transform is used for calculation of MOMENTS_FT and POLARIZABILITY). "// &
1996 "For negative values (the default), calculates the damping at the run time so that the last point "// &
1997 "in the time trace is reduced by factor e^(-4). When set manually, determines the time in which "// &
1998 "the moments trace is reduced by factor of e^(-1), except when set to zero, in which case "// &
1999 "the damping is not applied.", &
2006 description=
"The starting time from which damping is applied and from which on the trace is "// &
2007 "considered for the Fourier transform (Fourier transform is used for the calculation of "// &
2008 "MOMENTS_FT and POLARIZABILITY). Useful for real-time pulse - "// &
2009 "one can specify the center of the pulse as the starting point.", &
2012 default_r_val=0.0_dp)
2019 description=é
"Options for the Pad approximant refinement of the Fourier transform. Uses GreenX "// &
2020 "library to perform the analytic continuation and interpolation of the Fourier transform of "// &
2021 "dipole moments. The resulting moments are printed into the MOMENTS_FT file.", &
2025 description=
"Minimal energy of the interpolated values.", &
2028 default_r_val=0.0_dp)
2033 description=
"Maximal energy of the interpolated values.", &
2036 default_r_val=100.0_dp/
evolt)
2041 description=
"Energy resolution of the interpolated values.", &
2044 default_r_val=0.02_dp/
evolt)
2049 description=é
"Minimum energy to be used in the fitting of Pad approximants. "// &
2050 é
"Can be used to restrict the number of Pad parameters. "// &
2051 "When not present, takes the value of E_MIN.", &
2054 default_r_val=0.0_dp)
2059 description=é
"Maximum energy to be used in the fitting of Pad approximants. "// &
2060 é
"Can be used to restrict the number of Pad parameters. Negative energy is interpreted "// &
2061 "as maximum available energy from the original Fourier transform. "// &
2062 "When not present, takes the value of E_MAX.", &
2065 default_r_val=-1.0_dp/
evolt)
2072 END SUBROUTINE create_rtbse_section
2082 SUBROUTINE create_sccs_section(section)
2089 cpassert(.NOT.
ASSOCIATED(section))
2093 description=
"Define the parameters for self-consistent continuum solvation (SCCS) model", &
2102 name=
"_SECTION_PARAMETERS_", &
2103 description=
"Controls the activation of the SCCS section", &
2105 default_l_val=.false., &
2106 lone_keyword_l_val=.true.)
2112 description=
"Solvent specific tunable parameter for the calculation of "// &
2113 "the repulsion term $G^\text{rep} = \alpha S$ "// &
2114 "where $S$ is the (quantum) surface of the cavity", &
2118 default_r_val=0.0_dp, &
2125 description=
"Solvent specific tunable parameter for the calculation of "// &
2126 "the dispersion term $G^\text{dis} = \beta V$ "// &
2127 "where $V$ is the (quantum) volume of the cavity", &
2131 default_r_val=0.0_dp, &
2138 description=
"Numerical increment for the calculation of the (quantum) "// &
2139 "surface of the solute cavity", &
2143 default_r_val=2.0e-5_dp)
2148 name=
"DERIVATIVE_METHOD", &
2149 description=
"Method for the calculation of the numerical derivatives on the real-space grids", &
2150 usage=
"DERIVATIVE_METHOD cd5", &
2154 enum_c_vals=
s2a(
"FFT",
"CD3",
"CD5",
"CD7"), &
2159 enum_desc=
s2a(
"Fast Fourier transformation", &
2160 "3-point stencil central differences", &
2161 "5-point stencil central differences", &
2162 "7-point stencil central differences"))
2167 name=
"RELATIVE_PERMITTIVITY", &
2168 variants=
s2a(
"DIELECTRIC_CONSTANT",
"EPSILON_RELATIVE",
"EPSILON_SOLVENT"), &
2169 description=
"Relative permittivity (dielectric constant) of the solvent (medium)", &
2173 default_r_val=80.0_dp, &
2174 usage=
"RELATIVE_PERMITTIVITY 78.36")
2180 variants=
s2a(
"EPS_ITER",
"TAU_POL"), &
2181 description=
"Tolerance for the convergence of the polarisation density, "// &
2182 "i.e. requested accuracy for the SCCS iteration cycle", &
2186 default_r_val=1.0e-6_dp, &
2187 usage=
"EPS_ITER 1.0E-7")
2193 description=
"The SCCS iteration cycle is activated only if the SCF iteration cycle "// &
2194 "is converged to this threshold value", &
2198 default_r_val=0.5_dp, &
2199 usage=
"EPS_SCF 1.0E-2")
2205 variants=
s2a(
"SURFACE_TENSION"), &
2206 description=
"Surface tension of the solvent used for the calculation of "// &
2207 "the cavitation term $G^\text{cav} = \gamma S$ "// &
2208 "where $S$ is the (quantum) surface of the cavity", &
2212 default_r_val=0.0_dp, &
2219 description=
"Maximum number of SCCS iteration steps performed to converge "// &
2220 "within the given tolerance", &
2224 default_i_val=100, &
2225 usage=
"MAX_ITER 50")
2231 description=
"Method used for the smoothing of the dielectric function", &
2232 usage=
"METHOD Fattebert-Gygi", &
2234 enum_c_vals=
s2a(
"ANDREUSSI",
"FATTEBERT-GYGI"), &
2236 enum_desc=
s2a(
"Smoothing function proposed by Andreussi et al.", &
2237 "Smoothing function proposed by Fattebert and Gygi"))
2243 variants=(/
"ETA"/), &
2244 description=
"Mixing parameter (Hartree damping) employed during the iteration procedure", &
2248 default_r_val=0.6_dp, &
2253 NULLIFY (subsection)
2257 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2258 "Andreussi et al.", &
2266 description=
"Maximum density value used for the smoothing of the dielectric function", &
2270 default_r_val=0.0035_dp, &
2271 usage=
"RHO_MAX 0.01")
2277 description=
"Minimum density value used for the smoothing of the dielectric function", &
2281 default_r_val=0.0001_dp, &
2282 usage=
"RHO_MIN 0.0003")
2290 name=
"FATTEBERT-GYGI", &
2291 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2292 "Fattebert and Gygi", &
2300 description=
"Parameter β changes the width of the interface solute-solvent", &
2304 default_r_val=1.7_dp, &
2311 variants=(/
"RHO0"/), &
2312 description=
"Parameter $\rho_0$ defines the critical density in the middle "// &
2313 "of the interface solute-solvent", &
2317 default_r_val=0.0006_dp, &
2318 usage=
"RHO_ZERO 0.0004")
2325 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 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.