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 "Larger tolerance values increase the probability for a spin flip. "// &
221 "This option is only valid for unrestricted (i.e. spin polarised) "// &
222 "Kohn-Sham (UKS) calculations.", &
223 usage=
"RELAX_MULTIPLICITY 0.00001", &
225 default_r_val=0.0_dp)
230 description=
"Read the grid size for subcell generation in the construction of "// &
231 "neighbor lists.", usage=
"SUBCELLS 1.5", &
232 n_var=1, default_r_val=2.0_dp)
237 description=
"Specify size of automatically generated auxiliary (RI) basis sets: "// &
238 "Options={small,medium,large,huge}", &
239 usage=
"AUTO_BASIS {basis_type} {basis_size}", &
240 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=(/
"X",
"X"/))
245 name=
"SURFACE_DIPOLE_CORRECTION", &
246 variants=
s2a(
"SURFACE_DIPOLE", &
248 description=
"For slab calculations with asymmetric geometries, activate the correction of "// &
249 "the electrostatic potential with "// &
250 "by compensating for the surface dipole. Implemented only for slabs with normal "// &
251 "parallel to one Cartesian axis. The normal direction is given by the keyword SURF_DIP_DIR", &
253 default_l_val=.false., &
254 lone_keyword_l_val=.true., &
260 name=
"SURF_DIP_DIR", &
261 description=
"Cartesian axis parallel to surface normal.", &
262 enum_c_vals=
s2a(
"X",
"Y",
"Z"), &
263 enum_i_vals=(/1, 2, 3/), &
264 enum_desc=
s2a(
"Along x",
"Along y",
"Along z"), &
267 usage=
"SURF_DIP_DIR Z")
272 name=
"SURF_DIP_POS", &
273 description=
"This keyword assigns an user defined position in Angstroms "// &
274 "in the direction normal to the surface (given by SURF_DIP_DIR). "// &
275 "The default value is -1.0_dp which appplies the correction at a position "// &
276 "that has minimum electron density on the grid.", &
277 usage=
"SURF_DIP_POS -1.0_dp", &
278 default_r_val=-1.0_dp)
283 name=
"SURF_DIP_SWITCH", &
284 description=
"WARNING: Experimental feature under development that will help the "// &
285 "user to switch parameters to facilitate SCF convergence. In its current form the "// &
286 "surface dipole correction is switched off if the calculation does not converge in "// &
287 "(0.5*MAX_SCF + 1) outer_scf steps. "// &
288 "The default value is .FALSE.", &
289 usage=
"SURF_DIP_SWITCH .TRUE.", &
290 default_l_val=.false., &
291 lone_keyword_l_val=.true.)
296 name=
"CORE_CORR_DIP", &
297 description=
"If the total CORE_CORRECTION is non-zero and surface dipole "// &
298 "correction is switched on, presence of this keyword will adjust electron "// &
299 "density via MO occupation to reflect the total CORE_CORRECTION. "// &
300 "The default value is .FALSE.", &
301 usage=
"CORE_CORR_DIP .TRUE.", &
302 default_l_val=.false., &
303 lone_keyword_l_val=.true.)
309 description=
"Sort basis sets according to a certain criterion. ", &
310 enum_c_vals=
s2a(
"DEFAULT",
"EXP"), &
312 enum_desc=
s2a(
"don't sort",
"sort w.r.t. exponent"), &
314 usage=
"SORT_BASIS EXP")
331 CALL create_kg_section(subsection)
347 CALL create_admm_section(subsection)
363 CALL create_relativistic_section(subsection)
367 CALL create_sic_section(subsection)
371 CALL create_low_spin_roks_section(subsection)
408 CALL create_implicit_solv_section(subsection)
412 CALL create_density_fitting_section(subsection)
428 CALL create_rtp_section(subsection)
436 CALL create_sccs_section(subsection)
448 CALL create_hairy_probes_section(subsection)
460 SUBROUTINE create_hairy_probes_section(section)
466 cpassert(.NOT.
ASSOCIATED(section))
468 name=
"HAIRY_PROBES", &
469 description=
"Sets up a Hairy Probe calculation. ", &
470 n_keywords=0, n_subsections=0, repeats=.true.)
473 name=
"_SECTION_PARAMETERS_", &
474 description=
"Controls the activation of hairy probe", &
475 usage=
"&HAIRY_PROBES ON", &
476 default_l_val=.false., &
477 lone_keyword_l_val=.true.)
482 description=
"Indexes of the atoms to which the probes are attached.", &
483 usage=
"ATOM_IDS <INTEGER> .. <INTEGER>", &
489 description=
"Electronic temperature [K]", &
497 description=
"Chemical potential of the electrons in the probes [eV] ", &
505 description=
"Parameter for solution probes ", &
506 usage=
"ALPHA <REAL>", &
507 default_r_val=1.0_dp)
512 description=
" Tolerance for accuracy checks on occupation numbers "// &
513 "calculated using hair-probes. ", &
514 usage=
"EPS_HP <REAL>", &
515 default_r_val=1.0e-5_dp)
518 END SUBROUTINE create_hairy_probes_section
526 SUBROUTINE create_implicit_solv_section(section)
532 NULLIFY (keyword, subsection, print_key)
533 cpassert(.NOT.
ASSOCIATED(section))
535 description=
"Adds an implicit solvation model to the DFT calculation."// &
536 " Know also as Self Consistent Reaction Field.", &
537 n_keywords=0, n_subsections=0, repeats=.false.)
540 description=
"Value of the dielectric constant outside the sphere", &
541 usage=
"EPS_OUT <REAL>", &
542 default_r_val=1.0_dp)
547 description=
"Maximum value of L used in the multipole expansion", &
548 usage=
"LMAX <INTEGER>", &
553 CALL create_sphere_section(subsection)
558 description=
"Controls the printing basic info about the method", &
563 END SUBROUTINE create_implicit_solv_section
570 SUBROUTINE create_sphere_section(section)
576 NULLIFY (keyword, subsection)
577 cpassert(.NOT.
ASSOCIATED(section))
579 description=
"Treats the implicit solvent environment like a sphere", &
580 n_keywords=0, n_subsections=0, repeats=.false.)
583 description=
"Value of the spherical cavity in the dielectric medium", &
584 usage=
"RADIUS <REAL>", &
585 unit_str=
"angstrom", &
590 CALL create_center_section(subsection)
594 END SUBROUTINE create_sphere_section
601 SUBROUTINE create_center_section(section)
607 cpassert(.NOT.
ASSOCIATED(section))
609 description=
"Defines the center of the sphere.", &
610 n_keywords=0, n_subsections=0, repeats=.false.)
612 description=
"Coordinates of the center of the sphere", &
613 usage=
"XYZ <REAL> <REAL> <REAL>", &
614 unit_str=
"angstrom", &
615 type_of_var=
real_t, n_var=3)
620 description=
"Defines a list of atoms to define the center of the sphere", &
621 usage=
"ATOM_LIST <INTEGER> .. <INTEGER>", &
627 description=
"Defines the weight used to define the center of the sphere"// &
628 " (if ATOM_LIST is provided)", &
629 usage=
"WEIGHT_TYPE (UNIT|MASS)", &
630 enum_c_vals=(/
"UNIT",
"MASS"/), &
637 description=
"Specify if the center of the sphere should be fixed or"// &
638 " allowed to move", &
639 usage=
"FIXED <LOGICAL>", &
640 default_l_val=.true.)
644 END SUBROUTINE create_center_section
650 SUBROUTINE create_admm_section(section)
656 cpassert(.NOT.
ASSOCIATED(section))
657 CALL section_create(section, __location__, name=
"AUXILIARY_DENSITY_MATRIX_METHOD", &
658 description=
"Parameters needed for the ADMM method.", &
659 n_keywords=1, n_subsections=1, repeats=.false., &
663 keyword, __location__, &
665 description=
"Type of ADMM (sort name) as refered in literature. "// &
666 "This sets values for METHOD, ADMM_PURIFICATION_METHOD, and EXCH_SCALING_MODEL", &
667 enum_c_vals=
s2a(
"NONE",
"ADMM1",
"ADMM2",
"ADMMS",
"ADMMP",
"ADMMQ"), &
668 enum_desc=
s2a(
"No short name is used, use specific definitions (default)", &
669 "ADMM1 method from Guidon2010", &
670 "ADMM2 method from Guidon2010", &
671 "ADMMS method from Merlot2014", &
672 "ADMMP method from Merlot2014", &
673 "ADMMQ method from Merlot2014"), &
681 keyword, __location__, &
682 name=
"ADMM_PURIFICATION_METHOD", &
683 description=
"Method that shall be used for wavefunction fitting. Use MO_DIAG for MD.", &
684 enum_c_vals=
s2a(
"NONE",
"CAUCHY",
"CAUCHY_SUBSPACE",
"MO_DIAG",
"MO_NO_DIAG",
"MCWEENY",
"NONE_DM"), &
688 enum_desc=
s2a(
"Do not apply any purification", &
689 "Perform purification via general Cauchy representation", &
690 "Perform purification via Cauchy representation in occupied subspace", &
691 "Calculate MO derivatives via Cauchy representation by diagonalization", &
692 "Calculate MO derivatives via Cauchy representation by inversion", &
693 "Perform original McWeeny purification via matrix multiplications", &
694 "Do not apply any purification, works directly with density matrix"), &
700 keyword, __location__, &
702 description=
"Method that shall be used for wavefunction fitting. Use BASIS_PROJECTION for MD.", &
703 enum_c_vals=
s2a(
"BASIS_PROJECTION",
"BLOCKED_PROJECTION_PURIFY_FULL",
"BLOCKED_PROJECTION", &
704 "CHARGE_CONSTRAINED_PROJECTION"), &
707 enum_desc=
s2a(
"Construct auxiliary density matrix from auxiliary basis.", &
708 "Construct auxiliary density from a blocked Fock matrix,"// &
709 " but use the original matrix for purification.", &
710 "Construct auxiliary density from a blocked Fock matrix.", &
711 "Construct auxiliary density from auxiliary basis enforcing charge constrain."), &
717 keyword, __location__, &
718 name=
"EXCH_SCALING_MODEL", &
719 description=
"Scaling of the exchange correction calculated by the auxiliary density matrix.", &
720 enum_c_vals=
s2a(
"NONE",
"MERLOT"), &
722 enum_desc=
s2a(
"No scaling is enabled, refers to methods ADMM1, ADMM2 or ADMMQ.", &
723 "Exchange scaling according to Merlot (2014)"), &
729 keyword, __location__, &
730 name=
"EXCH_CORRECTION_FUNC", &
731 description=
"Exchange functional which is used for the ADMM correction. "// &
732 "LibXC implementations require linking with LibXC", &
733 enum_c_vals=
s2a(
"DEFAULT",
"PBEX",
"NONE",
"OPTX",
"BECKE88X", &
734 "PBEX_LIBXC",
"BECKE88X_LIBXC",
"OPTX_LIBXC",
"DEFAULT_LIBXC",
"LDA_X_LIBXC"), &
740 enum_desc=
s2a(
"Use PBE-based corrections according to the chosen interaction operator.", &
741 "Use PBEX functional for exchange correction.", &
742 "No correction: X(D)-x(d)-> 0.", &
743 "Use OPTX functional for exchange correction.", &
744 "Use Becke88X functional for exchange correction.", &
745 "Use PBEX functional (LibXC implementation) for exchange correction.", &
746 "Use Becke88X functional (LibXC implementation) for exchange correction.", &
747 "Use OPTX functional (LibXC implementation) for exchange correction.", &
748 "Use PBE-based corrections (LibXC where possible) to the chosen interaction operator.", &
749 "Use Slater X functional (LibXC where possible) for exchange correction."), &
755 description=
"OPTX a1 coefficient", &
756 default_r_val=1.05151_dp)
760 description=
"OPTX a2 coefficient", &
761 default_r_val=1.43169_dp)
765 description=
"OPTX gamma coefficient", &
766 default_r_val=0.006_dp)
771 description=
"Specifies a list of atoms.", &
772 usage=
"BLOCK_LIST {integer} {integer} .. {integer}", &
773 n_var=-1, type_of_var=
integer_t, repeats=.true.)
778 description=
"Define accuracy of DBCSR operations", &
779 usage=
"EPS_FILTER", default_r_val=0.0_dp)
783 END SUBROUTINE create_admm_section
789 SUBROUTINE create_density_fitting_section(section)
795 NULLIFY (keyword, print_key)
796 cpassert(.NOT.
ASSOCIATED(section))
797 CALL section_create(section, __location__, name=
"DENSITY_FITTING", &
798 description=
"Setup parameters for density fitting (Bloechl charges or density derived "// &
799 "atomic point charges (DDAPC) charges)", &
800 n_keywords=7, n_subsections=0, repeats=.false., &
804 description=
"Specifies the numbers of gaussian used to fit the QM density for each atomic site.", &
805 usage=
"NUM_GAUSS {integer}", &
806 n_var=1, type_of_var=
integer_t, default_i_val=3)
811 description=
"Specifies the progression factor for the gaussian exponent for each atomic site.", &
812 usage=
"PFACTOR {real}", &
813 n_var=1, type_of_var=
real_t, default_r_val=1.5_dp)
818 description=
"Specifies the smallest radius of the gaussian used in the fit. All other radius are"// &
819 " obtained with the progression factor.", &
820 usage=
"MIN_RADIUS {real}", &
821 unit_str=
"angstrom", n_var=1, type_of_var=
real_t, default_r_val=0.5_dp)
826 description=
"Specifies all the radius of the gaussian used in the fit for each atomic site. The use"// &
827 " of this keyword disables all other keywords of this section.", &
828 usage=
"RADII {real} {real} .. {real}", &
829 unit_str=
"angstrom", n_var=-1, type_of_var=
real_t)
834 description=
"Cutoff for charge fit in G-space.", &
835 usage=
"GCUT {real}", &
836 n_var=1, type_of_var=
real_t, default_r_val=sqrt(6.0_dp))
841 description=
"Controls the printing of basic information during the run", &
844 CALL keyword_create(keyword, __location__, name=
"CONDITION_NUMBER", &
845 description=
"Prints information regarding the condition numbers of the A matrix (to be inverted)", &
846 usage=
"CONDITION_NUMBER <LOGICAL>", &
847 default_l_val=.false., lone_keyword_l_val=.true.)
854 END SUBROUTINE create_density_fitting_section
861 SUBROUTINE create_relativistic_section(section)
866 cpassert(.NOT.
ASSOCIATED(section))
868 description=
"parameters needed and setup for relativistic calculations", &
869 n_keywords=5, n_subsections=0, repeats=.false.)
874 description=
"type of relativistic correction used", &
875 usage=
"method (NONE|DKH|ZORA)", default_i_val=
rel_none, &
876 enum_c_vals=
s2a(
"NONE",
"DKH",
"ZORA"), &
878 enum_desc=
s2a(
"Use no relativistic correction", &
879 "Use Douglas-Kroll-Hess method", &
885 description=
"The order of the DKH transformation ", &
886 usage=
"DKH_order 2", default_i_val=2)
891 description=
"Type of ZORA method to be used", &
893 enum_c_vals=
s2a(
"FULL",
"MP",
"scMP"), &
894 enum_desc=
s2a(
"Full ZORA method (not implemented)", &
895 "ZORA with atomic model potential", &
896 "Scaled ZORA with atomic model potential"), &
901 CALL keyword_create(keyword, __location__, name=
"transformation", &
902 description=
"Type of DKH transformation", &
903 usage=
"transformation (FULL|MOLECULE|ATOM)", default_i_val=
rel_trans_atom, &
904 enum_c_vals=
s2a(
"FULL",
"MOLECULE",
"ATOM"), &
906 enum_desc=
s2a(
"Use full matrix transformation", &
907 "Use transformation blocked by molecule", &
908 "Use atomic blocks"))
913 description=
"The minimal atomic number considered for atom transformation", &
914 usage=
"z_cutoff 50", default_i_val=1)
919 description=
"External potential used in DKH transformation, full 1/r or erfc(r)/r", &
920 usage=
"POTENTIAL {FULL,ERFC}", default_i_val=
rel_pot_erfc, &
921 enum_c_vals=
s2a(
"FULL",
"ERFC"), &
926 END SUBROUTINE create_relativistic_section
933 SUBROUTINE create_kg_section(section)
939 cpassert(.NOT.
ASSOCIATED(section))
941 description=
"Specifies the parameters for a Kim-Gordon-like partitioning"// &
942 " into molecular subunits", &
943 n_keywords=0, n_subsections=1, repeats=.false., &
946 NULLIFY (keyword, subsection, print_key)
958 CALL keyword_create(keyword, __location__, name=
"COLORING_METHOD", &
959 description=
"Which algorithm to use for coloring.", &
960 usage=
"COLORING_METHOD GREEDY", &
962 enum_c_vals=
s2a(
"DSATUR",
"GREEDY"), &
963 enum_desc=
s2a(
"Maximum degree of saturation, relatively accurate", &
964 "Greedy, fast coloring, less accurate"), &
970 description=
"Algorithm to use for the calculation of the nonadditive kinetic energy.", &
971 usage=
"TNADD_METHOD ATOMIC", &
973 enum_c_vals=
s2a(
"EMBEDDING",
"RI_EMBEDDING",
"ATOMIC",
"NONE"), &
974 enum_desc=
s2a(
"Use full embedding potential (see Iannuzzi et al)", &
975 "Use full embedding potential with RI density fitting", &
976 "Use sum of atomic model potentials", &
977 "Do not use kinetic energy embedding"), &
982 CALL keyword_create(keyword, __location__, name=
"INTEGRATION_GRID", &
983 description=
"Grid [small,medium,large,huge]to be used for the TNADD integration.", &
984 usage=
"INTEGRATION_GRID MEDIUM", &
985 default_c_val=
"MEDIUM")
990 description=
"Print section", &
991 n_keywords=0, n_subsections=1, repeats=.false.)
994 description=
"Controls the printing of the neighbor lists.", &
995 print_level=
low_print_level, filename=
"__STD_OUT__", unit_str=
"angstrom")
998 name=
"SAB_ORB_FULL", &
999 description=
"Activates the printing of the full orbital "// &
1000 "orbital neighbor lists.", &
1001 default_l_val=.false., &
1002 lone_keyword_l_val=.true.)
1007 name=
"SAB_ORB_MOLECULAR", &
1008 description=
"Activates the printing of the orbital "// &
1009 "orbital neighbor lists for molecular subsets.", &
1010 default_l_val=.false., &
1011 lone_keyword_l_val=.true.)
1017 description=
"Activates the printing of the orbital "// &
1018 "atomic potential neighbor list.", &
1019 default_l_val=.false., &
1020 lone_keyword_l_val=.true.)
1030 END SUBROUTINE create_kg_section
1043 cpassert(.NOT.
ASSOCIATED(section))
1045 description=
"This section is used to set up the BSSE calculation. "// &
1046 "It also requires that for each atomic kind X a kind X_ghost is present, "// &
1047 "with the GHOST keyword specified, in addition to the other required fields.", &
1048 n_keywords=3, n_subsections=1, repeats=.false.)
1050 NULLIFY (keyword, subsection)
1053 description=
"Specify the atom number belonging to this fragment.", &
1054 n_keywords=2, n_subsections=0, repeats=.true.)
1057 description=
"Specifies a list of atoms.", &
1058 usage=
"LIST {integer} {integer} .. {integer}", &
1059 repeats=.true., n_var=-1, type_of_var=
integer_t)
1067 CALL section_create(subsection, __location__, name=
"CONFIGURATION", &
1068 description=
"Specify additional parameters for the combinatorial configurations. "// &
1069 "Use this section to manually specify charge and multiplicity of the fragments "// &
1070 "and their combinations.", &
1071 n_keywords=2, n_subsections=0, repeats=.true.)
1074 description=
"Specifies the global configuration using 1 or 0 for each fragment. "// &
1075 "1 specifies the respective fragment as used, 0 as unused.", &
1076 usage=
"GLB_CONF {integer} {integer} .. {integer}", &
1082 description=
"Specifies the subconfiguration using 1 or 0 belonging to the global configuration. "// &
1083 "1 specifies the respective fragment as real, 0 as ghost.", &
1084 usage=
"SUB_CONF {integer} {integer} .. {integer}", &
1090 name=
"MULTIPLICITY", &
1091 variants=(/
"MULTIP"/), &
1092 description=
"Specify for each fragment the multiplicity. Two times the total spin plus one. "// &
1093 "Specify 3 for a triplet, 4 for a quartet,and so on. Default is 1 (singlet) for an "// &
1094 "even number and 2 (doublet) for an odd number of electrons.", &
1095 usage=
"MULTIPLICITY 3", &
1101 description=
"The total charge for each fragment.", &
1102 usage=
"CHARGE -1", &
1109 CALL section_create(subsection, __location__, name=
"FRAGMENT_ENERGIES", &
1110 description=
"This section contains the energies of the fragments already"// &
1111 " computed. It is useful as a summary and specifically for restarting BSSE runs.", &
1112 n_keywords=2, n_subsections=0, repeats=.true.)
1113 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1114 description=
"The energy computed for each fragment", repeats=.true., &
1115 usage=
"{REAL}", type_of_var=
real_t)
1121 CALL create_print_bsse_section(subsection)
1132 SUBROUTINE create_print_bsse_section(section)
1137 cpassert(.NOT.
ASSOCIATED(section))
1139 description=
"Section of possible print options in BSSE code.", &
1140 n_keywords=0, n_subsections=1, repeats=.false.)
1144 description=
"Controls the printing of information regarding the run.", &
1150 description=
"Controls the dumping of the restart file during BSSE runs. "// &
1151 "By default the restart is updated after each configuration calculation is "// &
1158 END SUBROUTINE create_print_bsse_section
1165 SUBROUTINE create_rigpw_section(section)
1168 cpassert(.NOT.
ASSOCIATED(section))
1170 description=
"This section specifies optional parameters for RIGPW.", &
1171 n_keywords=1, n_subsections=0, repeats=.false.)
1198 END SUBROUTINE create_rigpw_section
1209 LOGICAL,
INTENT(in) :: create_subsections
1214 cpassert(.NOT.
ASSOCIATED(section))
1216 description=
"multigrid information", &
1217 n_keywords=5, n_subsections=1, repeats=.false.)
1220 description=
"The number of multigrids to use", &
1221 usage=
"ngrids 1", default_i_val=4)
1226 description=
"The cutoff of the finest grid level. Default value for "// &
1227 "SE or DFTB calculation is 1.0 [Ry].", &
1229 unit_str=
"Ry"), n_var=1, unit_str=
"Ry")
1233 CALL keyword_create(keyword, __location__, name=
"progression_factor", &
1234 description=
"Factor used to find the cutoff of the multigrids that"// &
1235 " where not given explicitly", &
1236 usage=
"progression_factor <integer>", default_r_val=3._dp)
1240 CALL keyword_create(keyword, __location__, name=
"commensurate", &
1241 description=
"If the grids should be commensurate. If true overrides "// &
1242 "the progression factor and the cutoffs of the sub grids", &
1243 usage=
"commensurate", default_l_val=.false., &
1244 lone_keyword_l_val=.true.)
1249 description=
"If both rho and rho_gspace are needed ", &
1250 usage=
"realspace", default_l_val=.false., &
1251 lone_keyword_l_val=.true.)
1256 variants=(/
"RELATIVE_CUTOFF"/), &
1257 description=
"Determines the grid at which a Gaussian is mapped,"// &
1258 " giving the cutoff used for a gaussian with alpha=1."// &
1259 " A value 50+-10Ry might be required for highly accurate results,"// &
1260 " Or for simulations with a variable cell."// &
1261 " Versions prior to 2.3 used a default of 30Ry.", &
1262 usage=
"RELATIVE_CUTOFF real", default_r_val=20.0_dp, &
1267 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_SET", &
1268 description=
"Activate a manual setting of the multigrids", &
1269 usage=
"MULTIGRID_SET", default_l_val=.false.)
1274 name=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1275 description=
"Skips load balancing on distributed multigrids. "// &
1276 "Memory usage is O(p) so may be used "// &
1277 "for all but the very largest runs.", &
1278 usage=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1279 default_l_val=.false., &
1280 lone_keyword_l_val=.true.)
1289 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_CUTOFF", &
1290 variants=(/
"CUTOFF_LIST"/), &
1291 description=
"List of cutoff values to set up multigrids manually", &
1292 usage=
"MULTIGRID_CUTOFF 200.0 100.0 ", &
1299 IF (create_subsections)
THEN
1300 NULLIFY (subsection)
1305 NULLIFY (subsection)
1323 cpassert(.NOT.
ASSOCIATED(section))
1324 CALL section_create(section, __location__, name=
"interpolator", &
1325 description=
"kind of interpolation used between the multigrids", &
1326 n_keywords=5, n_subsections=0, repeats=.false.)
1328 NULLIFY (keyword, print_key)
1331 description=
"the interpolator to use", &
1332 usage=
"kind spline3", &
1334 enum_c_vals=
s2a(
"pw",
"spline3_nopbc",
"spline3"), &
1340 CALL keyword_create(keyword, __location__, name=
"safe_computation", &
1341 description=
"if a non unrolled calculation is to be performed in parallel", &
1342 usage=
"safe_computation OFF", &
1343 default_l_val=.false., &
1344 lone_keyword_l_val=.true.)
1348 CALL keyword_create(keyword, __location__, name=
"aint_precond", &
1349 description=
"the approximate inverse to use to get the starting point"// &
1350 " for the linear solver of the spline3 methods", &
1351 usage=
"aint_precond copy", &
1353 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1354 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1361 description=
"The preconditioner used"// &
1362 " for the linear solver of the spline3 methods", &
1363 usage=
"PRECOND copy", &
1365 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1366 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1373 description=
"accuracy on the solution for spline3 the interpolators", &
1374 usage=
"eps_x 1.e-15", default_r_val=1.e-10_dp)
1379 description=
"accuracy on the residual for spline3 the interpolators", &
1380 usage=
"eps_r 1.e-15", default_r_val=1.e-10_dp)
1385 variants=(/
'maxiter'/), &
1386 description=
"the maximum number of iterations", &
1387 usage=
"max_iter 200", default_i_val=100)
1393 description=
"if convergence information about the linear solver"// &
1394 " of the spline methods should be printed", &
1396 each_iter_values=(/10/), filename=
"__STD_OUT__", &
1408 SUBROUTINE create_sic_section(section)
1413 cpassert(.NOT.
ASSOCIATED(section))
1415 description=
"parameters for the self interaction correction", &
1416 n_keywords=6, n_subsections=0, repeats=.false., &
1421 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_A", &
1422 description=
"Scaling of the coulomb term in sic [experimental]", &
1423 usage=
"SIC_SCALING_A 0.5", &
1425 default_r_val=1.0_dp)
1429 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_B", &
1430 description=
"Scaling of the xc term in sic [experimental]", &
1431 usage=
"SIC_SCALING_B 0.5", &
1433 default_r_val=1.0_dp)
1438 description=
"Method used to remove the self interaction", &
1439 usage=
"SIC_METHOD MAURI_US", &
1441 enum_c_vals=
s2a(
"NONE",
"MAURI_US",
"MAURI_SPZ",
"AD",
"EXPLICIT_ORBITALS"), &
1443 enum_desc=
s2a(
"Do not apply a sic correction", &
1444 "Employ a (scaled) correction proposed by Mauri and co-workers"// &
1445 " on the spin density / doublet unpaired orbital", &
1446 "Employ a (scaled) Perdew-Zunger expression"// &
1447 " on the spin density / doublet unpaired orbital", &
1448 "The average density correction", &
1449 "(scaled) Perdew-Zunger correction explicitly on a set of orbitals."), &
1455 description=
"Type of orbitals treated with the SIC", &
1456 usage=
"ORBITAL_SET ALL", &
1458 enum_c_vals=
s2a(
"UNPAIRED",
"ALL"), &
1459 enum_desc=
s2a(
"correction for the unpaired orbitals only, requires a restricted open shell calculation", &
1460 "correction for all orbitals, requires a LSD or ROKS calculation"), &
1465 END SUBROUTINE create_sic_section
1472 SUBROUTINE create_low_spin_roks_section(section)
1477 cpassert(.NOT.
ASSOCIATED(section))
1478 CALL section_create(section, __location__, name=
"LOW_SPIN_ROKS", &
1479 description=
"Specify the details of the low spin ROKS method. "// &
1480 "In particular, one can specify various terms added to the energy of the high spin roks configuration"// &
1481 " with a energy scaling factor, and a prescription of the spin state.", &
1482 n_keywords=6, n_subsections=0, repeats=.false.)
1485 CALL keyword_create(keyword, __location__, name=
"ENERGY_SCALING", &
1486 description=
"The scaling factors for each term added to the total energy. "// &
1487 "This list should contain one number for each term added to the total energy.", &
1488 usage=
"ENERGY_SCALING 1.0 -1.0 ", &
1489 n_var=-1, type_of_var=
real_t, repeats=.false.)
1493 keyword, __location__, name=
"SPIN_CONFIGURATION", &
1494 description=
"For each singly occupied orbital, specify if this should be an alpha (=1) or a beta (=2) orbital. "// &
1495 "This keyword should be repeated, each repetition corresponding to an additional term.", &
1496 usage=
"SPIN_CONFIGURATION 1 2", &
1497 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1501 END SUBROUTINE create_low_spin_roks_section
1507 SUBROUTINE create_rtp_section(section)
1511 TYPE(
section_type),
POINTER :: print_key, print_section, subsection
1514 cpassert(.NOT.
ASSOCIATED(section))
1515 CALL section_create(section, __location__, name=
"REAL_TIME_PROPAGATION", &
1516 description=
"Parameters needed to set up the real time propagation"// &
1517 " for the electron dynamics. This currently works only in the NVE ensemble.", &
1518 n_keywords=4, n_subsections=4, repeats=.false., &
1522 description=
"Maximal number of iterations for the self consistent propagator loop.", &
1523 usage=
"MAX_ITER 10", &
1529 description=
"Convergence criterion for the self consistent propagator loop.", &
1530 usage=
"EPS_ITER 1.0E-5", &
1531 default_r_val=1.0e-7_dp)
1536 description=
"Speciefies how many steps will be used for extrapolation. "// &
1537 "One will be always used which is means X(t+dt)=X(t)", &
1538 usage=
"ASPC_ORDER 3", &
1544 description=
"Which method should be used to calculate the exponential"// &
1545 " in the propagator. It is recommended to use BCH when employing density_propagation "// &
1546 "and ARNOLDI otherwise.", &
1547 usage=
"MAT_EXP TAYLOR", default_i_val=
do_arnoldi, &
1548 enum_c_vals=
s2a(
"TAYLOR",
"PADE",
"ARNOLDI",
"BCH",
"EXACT"), &
1550 enum_desc=
s2a(
"exponential is evaluated using scaling and squaring in combination"// &
1551 " with a taylor expansion of the exponential.", &
1552 "uses scaling and squaring together with the pade approximation", &
1553 "uses arnoldi subspace algorithm to compute exp(H)*MO directly, can't be used in "// &
1554 "combination with Crank Nicholson or density propagation", &
1555 "Uses a Baker-Campbell-Hausdorff expansion to propagate the density matrix,"// &
1556 " only works for density propagation", &
1557 "Uses diagonalisation of the exponent matrices to determine the "// &
1558 "matrix exponential exactly. Only implemented for GWBSE."))
1562 CALL keyword_create(keyword, __location__, name=
"DENSITY_PROPAGATION", &
1563 description=
"The density matrix is propagated instead of the molecular orbitals. "// &
1564 "This can allow a linear scaling simulation. The density matrix is filtered with "// &
1565 "the threshold based on the EPS_FILTER keyword from the LS_SCF section", &
1566 usage=
"DENSITY_PROPAGATION .TRUE.", &
1567 default_l_val=.false., lone_keyword_l_val=.true.)
1571 CALL keyword_create(keyword, __location__, name=
"SC_CHECK_START", &
1572 description=
"Speciefies how many iteration steps will be done without "// &
1573 "a check for self consistency. Can save some time in big calculations.", &
1574 usage=
"SC_CHECK_START 3", &
1579 CALL keyword_create(keyword, __location__, name=
"EXP_ACCURACY", &
1580 description=
"Accuracy for the taylor and pade approximation. "// &
1581 "This is only an upper bound bound since the norm used for the guess "// &
1582 "is an upper bound for the needed one.", &
1583 usage=
"EXP_ACCURACY 1.0E-6", &
1584 default_r_val=1.0e-9_dp)
1589 description=
"Which propagator should be used for the orbitals", &
1590 usage=
"PROPAGATOR ETRS", default_i_val=
do_etrs, &
1591 enum_c_vals=
s2a(
"ETRS",
"CN",
"EM"), &
1593 enum_desc=
s2a(
"enforced time reversible symmetry", &
1594 "Crank Nicholson propagator", &
1595 "Exponential midpoint propagator"))
1600 description=
"Controls the initial WFN used for propagation. "// &
1601 "Note that some energy contributions may not be "// &
1602 "initialized in the restart cases, for instance "// &
1603 "electronic entropy energy in the case of smearing.", &
1604 usage=
"INITIAL_WFN SCF_WFN", default_i_val=
use_scf_wfn, &
1605 enum_c_vals=
s2a(
"SCF_WFN",
"RESTART_WFN",
"RT_RESTART"), &
1607 enum_desc=
s2a(
"An SCF run is performed to get the initial state.", &
1608 "A wavefunction from a previous SCF is propagated. Especially useful,"// &
1609 " if electronic constraints or restraints are used in the previous calculation, "// &
1610 "since these do not work in the rtp scheme.", &
1611 "use the wavefunction of a real time propagation/ehrenfest run"))
1615 CALL keyword_create(keyword, __location__, name=
"APPLY_WFN_MIX_INIT_RESTART", &
1616 description=
"If set to True and in the case of INITIAL_WFN=RESTART_WFN, call the "// &
1617 "DFT%PRINT%WFN_MIX section to mix the read initial wfn. The starting wave-function of the "// &
1618 "RTP will be the mixed one. Setting this to True without a defined WFN_MIX section will "// &
1619 "not do anything as defining a WFN_MIX section without this keyword for RTP run with "// &
1620 "INITIAL_WFN=RESTART_WFN. Note that if INITIAL_WFN=SCF_WFN, this keyword is not needed to "// &
1621 "apply the mixing defined in the WFN_MIX section. Default is False.", &
1622 usage=
"APPLY_WFN_MIX_INIT_RESTART", &
1623 default_l_val=.false., lone_keyword_l_val=.true.)
1627 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE", &
1628 description=
"Applies a delta kick to the initial wfn (only RTP for now - the EMD"// &
1629 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1630 usage=
"APPLY_DELTA_PULSE", &
1631 default_l_val=.false., lone_keyword_l_val=.true.)
1635 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE_MAG", &
1636 description=
"Applies a magnetic delta kick to the initial wfn (only RTP for now - the EMD"// &
1637 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1638 usage=
"APPLY_DELTA_PULSE_MAG", &
1639 default_l_val=.false., lone_keyword_l_val=.true.)
1643 CALL keyword_create(keyword, __location__, name=
"VELOCITY_GAUGE", &
1644 description=
"Perform propagation in the velocity gauge using the explicit vector potential"// &
1645 " only a constant vector potential as of now (corresonding to a delta-pulse)."// &
1646 " uses DELTA_PULSE_SCALE and DELTA_PULSE_DIRECTION to define the vector potential", &
1647 usage=
"VELOCITY_GAUGE T", &
1648 default_l_val=.false., lone_keyword_l_val=.true.)
1653 description=
"Define gauge origin for magnetic perturbation", &
1654 usage=
"GAUGE_ORIG COM", &
1655 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1656 enum_desc=
s2a(
"Use Center of Mass", &
1657 "Use Center of Atomic Charges", &
1658 "Use User Defined Point (Keyword:REF_POINT)", &
1659 "Use Origin of Coordinate System"), &
1668 CALL keyword_create(keyword, __location__, name=
"GAUGE_ORIG_MANUAL", &
1669 description=
"Manually defined gauge origin for magnetic perturbation [in Bohr!]", &
1670 usage=
"GAUGE_ORIG_MANUAL x y z", &
1672 n_var=3, default_r_vals=(/0._dp, 0._dp, 0._dp/), &
1679 description=
"apply gauge transformed non-local potential term"// &
1680 " only affects VELOCITY_GAUGE=.TRUE.", &
1681 usage=
"VG_COM_NL T", &
1682 default_l_val=.true., lone_keyword_l_val=.true.)
1687 description=
"Include non-local commutator for periodic delta pulse."// &
1688 " only affects PERIODIC=.TRUE.", &
1690 default_l_val=.true., lone_keyword_l_val=.true.)
1695 description=
"Use length representation delta pulse (in conjunction with PERIODIC T)."// &
1696 " This corresponds to a 1st order perturbation in the length gauge."// &
1697 " Note that this is NOT compatible with a periodic calculation!"// &
1698 " Uses the reference point defined in DFT%PRINT%MOMENTS ", &
1699 usage=
"LEN_REP T", &
1700 default_l_val=.false., lone_keyword_l_val=.true.)
1705 description=
"Apply a delta-kick that is compatible with periodic boundary conditions"// &
1706 " for any value of DELTA_PULSE_SCALE. Uses perturbation theory for the preparation of"// &
1707 " the initial wfn with the velocity operator as perturbation."// &
1708 " If LEN_REP is .FALSE. this corresponds to a first order velocity gauge."// &
1709 " Note that the pulse is only applied when INITIAL_WFN is set to SCF_WFN,"// &
1710 " and not for restarts (RT_RESTART).", &
1712 default_l_val=.true., lone_keyword_l_val=.true.)
1716 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_DIRECTION", &
1717 description=
"Direction of the applied electric field. The k vector is given as"// &
1718 " 2*Pi*[i,j,k]*inv(h_mat), which for PERIODIC .FALSE. yields exp(ikr) periodic with"// &
1719 " the unit cell, only if DELTA_PULSE_SCALE is set to unity. For an orthorhombic cell"// &
1720 " [1,0,0] yields [2*Pi/L_x,0,0]. For small cells, this results in a very large kick.", &
1721 usage=
"DELTA_PULSE_DIRECTION 1 1 1", n_var=3, default_i_vals=(/1, 0, 0/), &
1726 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_SCALE", &
1727 description=
"Scale the k vector, which for PERIODIC .FALSE. results in exp(ikr) no"// &
1728 " longer being periodic with the unit cell. The norm of k is the strength of the"// &
1729 " applied electric field in atomic units.", &
1730 usage=
"DELTA_PULSE_SCALE 0.01 ", n_var=1, default_r_val=0.001_dp)
1734 CALL keyword_create(keyword, __location__, name=
"HFX_BALANCE_IN_CORE", &
1735 description=
"If HFX is used, this keyword forces a redistribution/recalculation"// &
1736 " of the integrals, balanced with respect to the in core steps.", &
1737 usage=
"HFX_BALANCE_IN_CORE", &
1738 default_l_val=.false., lone_keyword_l_val=.true.)
1742 CALL keyword_create(keyword, __location__, name=
"MCWEENY_MAX_ITER", &
1743 description=
"Determines the maximum amount of McWeeny steps used after each converged"// &
1744 " step in density propagation", &
1745 usage=
"MCWEENY_MAX_ITER 2", default_i_val=1)
1750 keyword, __location__, name=
"ACCURACY_REFINEMENT", &
1751 description=
"If using density propagation some parts should be calculated with a higher accuracy than the rest"// &
1752 " to reduce numerical noise. This factor determines by how much the filtering threshold is"// &
1753 " reduced for these calculations.", &
1754 usage=
"ACCURACY_REFINEMENT", default_i_val=100)
1759 description=
"Threshold after which McWeeny is terminated", &
1760 usage=
"MCWEENY_EPS 0.00001", &
1761 default_r_val=0.0_dp)
1765 NULLIFY (print_section)
1767 description=
"Section of possible print options for an RTP runs", &
1772 description=
"Controls the printing within real time propagation and Eherenfest dynamics", &
1778 description=
"Controls the dumping of the MO restart file during rtp. "// &
1779 "By default keeps a short history of three restarts. "// &
1780 "See also RESTART_HISTORY. In density propagation this controls the printing of "// &
1781 "density matrix.", &
1783 each_iter_names=
s2a(
"MD"), each_iter_values=(/20/), &
1785 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1786 description=
"Specifies the maximum number of backup copies.", &
1787 usage=
"BACKUP_COPIES {int}", &
1795 description=
"Dumps unique MO restart files during the run keeping all of them. "// &
1796 "In density propagation it dumps the density matrix instead", &
1798 each_iter_names=
s2a(
"MD"), &
1799 each_iter_values=(/500/), &
1801 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1802 description=
"Specifies the maximum number of backup copies.", &
1803 usage=
"BACKUP_COPIES {int}", &
1811 description=
"Print the time-dependent field applied during an EMD simulation in "// &
1814 each_iter_names=
s2a(
"MD"), &
1815 each_iter_values=(/1/), &
1816 filename=
"applied_field")
1825 description=
"Print the integral of the current density (only if the"// &
1826 " imaginary part of the density is NOT zero.", &
1828 each_iter_names=
s2a(
"MD"), &
1829 each_iter_values=(/1/), &
1830 filename=
"rtp_j_int")
1835 description=
"Print the current during an EMD simulation to cube files.", &
1837 each_iter_names=
s2a(
"MD"), &
1838 each_iter_values=(/20/), &
1840 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1841 description=
"Specifies the maximum number of backup copies.", &
1842 usage=
"BACKUP_COPIES {int}", &
1847 description=
"The stride (X,Y,Z) used to write the cube file "// &
1848 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1849 " 1 number valid for all components.", &
1850 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=(/2, 2, 2/), type_of_var=
integer_t)
1859 description=
"Prints the density matrix at iterations in clear text to a file", &
1861 each_iter_names=
s2a(
"MD"), &
1862 each_iter_values=(/1/), &
1868 description=
"Prints the time-dependent electronic moments at "// &
1869 "iterations in clear text to a file.", &
1871 each_iter_names=
s2a(
"MD"), &
1872 each_iter_values=(/1/), &
1873 filename=
"__STD_OUT__")
1878 description=
"Prints the calculated Fourier transform of "// &
1879 "time-dependent moments. For calculations with real time pulse (not delta kick) "// &
1880 "can be supplied with starting time.", &
1882 each_iter_names=
s2a(
"MD"), &
1883 each_iter_values=(/1/), &
1884 filename=
"MOMENTS_FT")
1889 description=
"Prints the chosen element of the energy dependent polarizability tensor "// &
1890 "to a specified file. The tensor is calculated as ratio of "// &
1891 "Fourier transform of the dipole "// &
1892 "moment trace and Fourier transform of the applied field "// &
1893 "(for delta kick, constant real field is applied.", &
1895 each_iter_names=
s2a(
"MD"), &
1896 each_iter_values=(/1/), &
1897 filename=
"POLARIZABILITY")
1899 description=
"Specifies the element of polarizability which is to be printed out "// &
1900 "(indexing starts at 1). If not explicitly provided, RTBSE code tries to guess "// &
1901 "the optimal values - for applied electric field (both delta pulse and RT field) "// &
1902 "with only a single non-zero cartesian component, prints the 3 trivially available elements.", &
1903 type_of_var=
integer_t, default_i_vals=(/1, 1/), n_var=2, usage=
"ELEMENT 1 1", repeats=.true.)
1910 description=
"Print the energy constituents (relevant to RTP) which make up "// &
1911 "the Total Energy", &
1913 each_iter_names=
s2a(
"MD"), &
1914 each_iter_values=(/1/), &
1922 NULLIFY (subsection)
1923 CALL create_rtbse_section(subsection)
1927 END SUBROUTINE create_rtp_section
1933 SUBROUTINE create_rtbse_section(section)
1940 NULLIFY (subsection)
1941 cpassert(.NOT.
ASSOCIATED(section))
1944 description=
"Controls options for the real-time Bethe-Salpeter (RTBSE) propagation. "// &
1945 "Note that running RTBSE requires previous low-scaling "// &
1946 "[GW](#CP2K_INPUT.FORCE_EVAL.PROPERTIES.BANDSTRUCTURE.GW) calculation. Also note that "// &
1947 "designating this section as RTBSE run but choosing run type ENERGY leads to potential "// &
1948 "deallocation errors.", &
1952 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1953 description=
"Which method is used for the time propagation of electronic structure. "// &
1954 "By default, use the TDDFT method. Can also choose RT-BSE method, which propagates the lesser "// &
1955 "Green's function instead of density matrix/molecular orbitals.", &
1956 usage=
"&RTBSE TDDFT", &
1959 enum_c_vals=
s2a(
"TDDFT",
"RTBSE"), &
1961 enum_desc=
s2a(
"Use TDDFT for density matrix/MO propagation.", &
1962 "Use RT-BSE for Green's function propagation"))
1967 CALL keyword_create(keyword, __location__, name=
"RTBSE_HAMILTONIAN", &
1968 description=
"Which Hamiltonian to use as the single-particle Hamiltonian"// &
1969 " in the Green's propagator.", &
1970 usage=
"RTBSE_HAMILTONIAN G0W0", &
1972 enum_c_vals=
s2a(
"KS",
"G0W0"), &
1974 enum_desc=
s2a(
"Use Kohn-Sham Hamiltonian for Green's propagation.", &
1975 "Use G0W0 Hamiltonian for Green's function propagation"))
1980 description=
"Numerical Fourier transform (required for calculation of "// &
1981 "MOMENTS_FT and POLARIZABILITY) can oscillate "// &
1982 "when the final values are far away from zero. "// &
1983 "This keyword controls the exponential damping in the Fourier transform "// &
1984 "(Fourier transform is used for calculation of MOMENTS_FT and POLARIZABILITY). "// &
1985 "For negative values (the default), calculates the damping at the run time so that the last point "// &
1986 "in the time trace is reduced by factor e^(-4). When set manually, determines the time in which "// &
1987 "the moments trace is reduced by factor of e^(-1), except when set to zero, in which case "// &
1988 "the damping is not applied.", &
1995 description=
"The starting time from which damping is applied and from which on the trace is "// &
1996 "considered for the Fourier transform (Fourier transform is used for the calculation of "// &
1997 "MOMENTS_FT and POLARIZABILITY). Useful for real-time pulse - "// &
1998 "one can specify the center of the pulse as the starting point.", &
2001 default_r_val=0.0_dp)
2008 description=é
"Options for the Pad approximant refinement of the Fourier transform. Uses GreenX "// &
2009 "library to perform the analytic continuation and interpolation of the Fourier transform of "// &
2010 "dipole moments. The resulting moments are printed into the MOMENTS_FT file.", &
2014 description=
"Minimal energy of the interpolated values.", &
2017 default_r_val=0.0_dp)
2022 description=
"Maximal energy of the interpolated values.", &
2025 default_r_val=100.0_dp/
evolt)
2030 description=
"Energy resolution of the interpolated values.", &
2033 default_r_val=0.02_dp/
evolt)
2038 description=é
"Minimum energy to be used in the fitting of Pad approximants. "// &
2039 é
"Can be used to restrict the number of Pad parameters. "// &
2040 "When not present, takes the value of E_MIN.", &
2043 default_r_val=0.0_dp)
2048 description=é
"Maximum energy to be used in the fitting of Pad approximants. "// &
2049 é
"Can be used to restrict the number of Pad parameters. Negative energy is interpreted "// &
2050 "as maximum available energy from the original Fourier transform. "// &
2051 "When not present, takes the value of E_MAX.", &
2054 default_r_val=-1.0_dp/
evolt)
2061 END SUBROUTINE create_rtbse_section
2071 SUBROUTINE create_sccs_section(section)
2078 cpassert(.NOT.
ASSOCIATED(section))
2082 description=
"Define the parameters for self-consistent continuum solvation (SCCS) model", &
2091 name=
"_SECTION_PARAMETERS_", &
2092 description=
"Controls the activation of the SCCS section", &
2094 default_l_val=.false., &
2095 lone_keyword_l_val=.true.)
2101 description=
"Solvent specific tunable parameter for the calculation of "// &
2102 "the repulsion term $G^\text{rep} = \alpha S$ "// &
2103 "where $S$ is the (quantum) surface of the cavity", &
2107 default_r_val=0.0_dp, &
2114 description=
"Solvent specific tunable parameter for the calculation of "// &
2115 "the dispersion term $G^\text{dis} = \beta V$ "// &
2116 "where $V$ is the (quantum) volume of the cavity", &
2120 default_r_val=0.0_dp, &
2127 description=
"Numerical increment for the calculation of the (quantum) "// &
2128 "surface of the solute cavity", &
2132 default_r_val=2.0e-5_dp)
2137 name=
"DERIVATIVE_METHOD", &
2138 description=
"Method for the calculation of the numerical derivatives on the real-space grids", &
2139 usage=
"DERIVATIVE_METHOD cd5", &
2143 enum_c_vals=
s2a(
"FFT",
"CD3",
"CD5",
"CD7"), &
2148 enum_desc=
s2a(
"Fast Fourier transformation", &
2149 "3-point stencil central differences", &
2150 "5-point stencil central differences", &
2151 "7-point stencil central differences"))
2156 name=
"RELATIVE_PERMITTIVITY", &
2157 variants=
s2a(
"DIELECTRIC_CONSTANT",
"EPSILON_RELATIVE",
"EPSILON_SOLVENT"), &
2158 description=
"Relative permittivity (dielectric constant) of the solvent (medium)", &
2162 default_r_val=80.0_dp, &
2163 usage=
"RELATIVE_PERMITTIVITY 78.36")
2169 variants=
s2a(
"EPS_ITER",
"TAU_POL"), &
2170 description=
"Tolerance for the convergence of the polarisation density, "// &
2171 "i.e. requested accuracy for the SCCS iteration cycle", &
2175 default_r_val=1.0e-6_dp, &
2176 usage=
"EPS_ITER 1.0E-7")
2182 description=
"The SCCS iteration cycle is activated only if the SCF iteration cycle "// &
2183 "is converged to this threshold value", &
2187 default_r_val=0.5_dp, &
2188 usage=
"EPS_SCF 1.0E-2")
2194 variants=
s2a(
"SURFACE_TENSION"), &
2195 description=
"Surface tension of the solvent used for the calculation of "// &
2196 "the cavitation term $G^\text{cav} = \gamma S$ "// &
2197 "where $S$ is the (quantum) surface of the cavity", &
2201 default_r_val=0.0_dp, &
2208 description=
"Maximum number of SCCS iteration steps performed to converge "// &
2209 "within the given tolerance", &
2213 default_i_val=100, &
2214 usage=
"MAX_ITER 50")
2220 description=
"Method used for the smoothing of the dielectric function", &
2221 usage=
"METHOD Fattebert-Gygi", &
2223 enum_c_vals=
s2a(
"ANDREUSSI",
"FATTEBERT-GYGI"), &
2225 enum_desc=
s2a(
"Smoothing function proposed by Andreussi et al.", &
2226 "Smoothing function proposed by Fattebert and Gygi"))
2232 variants=(/
"ETA"/), &
2233 description=
"Mixing parameter (Hartree damping) employed during the iteration procedure", &
2237 default_r_val=0.6_dp, &
2242 NULLIFY (subsection)
2246 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2247 "Andreussi et al.", &
2255 description=
"Maximum density value used for the smoothing of the dielectric function", &
2259 default_r_val=0.0035_dp, &
2260 usage=
"RHO_MAX 0.01")
2266 description=
"Minimum density value used for the smoothing of the dielectric function", &
2270 default_r_val=0.0001_dp, &
2271 usage=
"RHO_MIN 0.0003")
2279 name=
"FATTEBERT-GYGI", &
2280 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2281 "Fattebert and Gygi", &
2289 description=
"Parameter β changes the width of the interface solute-solvent", &
2293 default_r_val=1.7_dp, &
2300 variants=(/
"RHO0"/), &
2301 description=
"Parameter $\rho_0$ defines the critical density in the middle "// &
2302 "of the interface solute-solvent", &
2306 default_r_val=0.0006_dp, &
2307 usage=
"RHO_ZERO 0.0004")
2314 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.