52#include "./base/base_uses.f90"
57 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
58 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_subsys'
76 INTEGER,
INTENT(IN),
OPTIONAL :: periodic
80 cpassert(.NOT.
ASSOCIATED(section))
82 description=
"Input parameters needed to set up the simulation cell. "// &
83 "Simple products and fractions combined with functions of a single "// &
84 "number can be used like 2/3, 0.3*COS(60) or -SQRT(3)/2. The functions "// &
85 "COS, EXP, LOG, LOG10, SIN, SQRT, and TAN are available."//
newline//
newline// &
86 "Cell settings are parsed in the following precedence order:"//
newline// &
87 "1. The external file set by CELL_FILE_NAME with a CELL_FILE_FORMAT;"//
newline// &
88 "2. The lengths and angles of cell vectors set by ABC and ALPHA_BETA_GAMMA;"//
newline// &
89 "3. The vectors set by A, B, C together;"//
newline// &
90 "4. If none above exist, the external file set by TOPOLOGY/COORD_FILE_NAME with "// &
91 "suitable TOPOLOGY/COORD_FILE_FORMAT may also be parsed for FORCE_EVAL/SUBSYS/CELL "// &
92 "but not for FORCE_EVAL/QMMM/CELL.")
93 CALL create_cell_section_low(section, periodic)
97 description=
"Input parameters needed to set up the reference cell for "// &
98 "FORCE_EVAL/SUBSYS/CELL. This option can be used to keep the FFT grid "// &
99 "fixed while running a cell optimization or NpT molecular dynamics. "// &
100 "Check the &CELL section for further details.")
101 CALL create_cell_section_low(subsection, periodic)
113 SUBROUTINE create_cell_section_low(section, periodic)
115 INTEGER,
INTENT(IN),
OPTIONAL :: periodic
117 INTEGER :: my_periodic
121 IF (
PRESENT(periodic)) my_periodic = periodic
125 description=
"Specify the Cartesian components for the cell vector A. "// &
126 "This defines the first column of the h matrix. "// &
127 "Ignored if the keywords ABC or CELL_FILE_NAME are used.", &
128 usage=
"A 10.000 0.000 0.000", unit_str=
"angstrom", &
129 n_var=3, type_of_var=
real_t, repeats=.false.)
134 description=
"Specify the Cartesian components for the cell vector B. "// &
135 "This defines the second column of the h matrix. "// &
136 "Ignored if the keywords ABC or CELL_FILE_NAME are used.", &
137 usage=
"B 0.000 10.000 0.000", unit_str=
"angstrom", &
138 n_var=3, type_of_var=
real_t, repeats=.false.)
143 description=
"Specify the Cartesian components for the cell vector C. "// &
144 "This defines the third column of the h matrix. "// &
145 "Ignored if the keywords ABC or CELL_FILE_NAME are used.", &
146 usage=
"C 0.000 0.000 10.000", unit_str=
"angstrom", &
147 n_var=3, type_of_var=
real_t, repeats=.false.)
152 description=
"Specify the lengths of the cell vectors A, B, and C, which"// &
153 " defines the diagonal elements of h matrix for an orthorhombic cell."// &
154 " For non-orthorhombic cells it is possible either to specify the angles "// &
155 "ALPHA, BETA, GAMMA via ALPHA_BETA_GAMMA keyword or alternatively use the keywords "// &
156 "A, B, and C. The convention is that A lies along the X-axis, B is in the XY plane. "// &
157 "Ignored if CELL_FILE_NAME is used.", &
158 usage=
"ABC 10.000 10.000 10.000", unit_str=
"angstrom", &
159 n_var=3, type_of_var=
real_t, repeats=.false.)
163 CALL keyword_create(keyword, __location__, name=
"ALPHA_BETA_GAMMA", &
164 variants=[
"ANGLES"], &
165 description=
"Specify the angles between the vectors A, B and C when using the ABC keyword. "// &
166 "The convention is that A lies along the X-axis, B is in the XY plane. "// &
167 "ALPHA is the angle between B and C, BETA is the angle between A and C and "// &
168 "GAMMA is the angle between A and B.", &
169 usage=
"ALPHA_BETA_GAMMA [deg] 90.0 90.0 120.0", unit_str=
"deg", &
170 n_var=3, default_r_vals=[
cp_unit_to_cp2k(
value=90.0_dp, unit_str=
"deg"), &
177 CALL keyword_create(keyword, __location__, name=
"CELL_FILE_NAME", &
178 description=
"The external file from which cell is parsed ", &
179 repeats=.false., usage=
"CELL_FILE_NAME <CHARACTER>", &
184 CALL keyword_create(keyword, __location__, name=
"CELL_FILE_FORMAT", &
185 description=
"Format of the external file from which "// &
186 "cell is parsed. If the format specifies a cell by "// &
187 "lengths and angles of three vectors, then a cell "// &
188 "matrix is constructed with the convention that A "// &
189 "lies along the X-axis, B is in the XY plane. ALPHA "// &
190 "is the angle between B and C, BETA is the angle "// &
191 "between A and C, and GAMMA is the angle between A and B.", &
192 usage=
"CELL_FILE_FORMAT (CP2K|CIF|XSC|EXTXYZ|XYZ|PDB)", &
193 enum_c_vals=
s2a(
"CP2K",
"CIF",
"XSC",
"EXTXYZ",
"XYZ",
"PDB"), &
195 enum_desc=
s2a(
"Cell info in the CP2K native format", &
196 "Cell info from CIF file (from fields `_cell_length_a` or `_cell.length_a`, etc)", &
197 "Cell info in the XSC format (NAMD)", &
198 "Cell info as `lattice=...` field in the comment line of Extended XYZ format", &
199 "Alias for Extended XYZ", &
200 "Cell info in the `CRYST1` record of PDB format"), &
206 description=
"Policy for transforming a general input cell to CP2K's internal "// &
207 "convention that A lies along the X-axis and B is in the XY plane. AUTO preserves "// &
208 "an orientation supplied through explicit cell vectors or a cell file. Cells "// &
209 "specified only through lengths and angles are canonical by construction because "// &
210 "they do not define an orientation. TRUE explicitly requests canonicalization and "// &
211 "transforms supported cell-dependent input. FALSE explicitly preserves a supplied "// &
212 "orientation. During CELL_OPT, this setting controls the physical cell orientation; "// &
213 "the six independent cell-deformation variables use a separate canonical frame.", &
214 usage=
"CANONICALIZE AUTO", &
215 enum_c_vals=
s2a(
"AUTO",
"TRUE",
"FALSE",
"T",
"F",
".TRUE.",
".FALSE."), &
219 enum_desc=
s2a(
"Preserve an explicitly supplied cell orientation", &
220 "Explicitly canonicalize the input cell", &
221 "Explicitly preserve a supplied cell orientation", &
225 "Alias for FALSE"), &
231 description=
"Specify the directions for which periodic boundary conditions (PBC) will be applied. "// &
232 "Important notice: This applies to the generation of the pair lists as well as to the "// &
233 "application of the PBCs to positions. "// &
234 "See the POISSON section to specify the periodicity used for the electrostatics. "// &
235 "Typically the settings should be the same.", &
236 usage=
"PERIODIC (x|y|z|xy|xz|yz|xyz|none)", &
237 enum_c_vals=
s2a(
"x",
"y",
"z",
"xy",
"xz",
"yz",
"xyz",
"none"), &
241 default_i_val=my_periodic)
245 CALL keyword_create(keyword, __location__, name=
"MULTIPLE_UNIT_CELL", &
246 description=
"Specifies the numbers of repetition in space (X, Y, Z) of the defined cell, "// &
247 "assuming it as a unit cell. This keyword affects only the CELL specification. The same keyword "// &
248 "in SUBSYS%TOPOLOGY%MULTIPLE_UNIT_CELL should be modified in order to affect the coordinates "// &
249 "specification.", usage=
"MULTIPLE_UNIT_CELL 1 1 1", &
250 n_var=3, default_i_vals=[1, 1, 1], repeats=.false.)
255 keyword, __location__, name=
"SYMMETRY", &
256 description=
"Imposes an initial cell symmetry, according to the convention "// &
257 "that A lies along the X-axis, B is in the XY plane. After the "// &
258 "input cell information is parsed, the symmetry is enforced by "// &
259 "reconstructing the cell matrix from lengths and angles of the "// &
260 "cell vectors, taking averages if necessary. This process does "// &
261 "not affect input atomic coordinates; in case a space group is "// &
262 "to be detected and preserved for an optimization task, atomic "// &
263 "coordinates should correspond to cell vectors already obeying "// &
264 "the convention mentioned above.", &
265 usage=
"SYMMETRY monoclinic", &
266 enum_desc=
s2a(
"No cell symmetry", &
267 "Triclinic (a ≠ b ≠ c ≠ a, α ≠ β ≠ γ ≠ α ≠ 90°)", &
268 "Monoclinic (a ≠ b ≠ c, α = γ = 90°, β ≠ 90°)", &
269 "Monoclinic (a = b ≠ c, α = β = 90°, γ ≠ 90°)", &
270 "Orthorhombic (a ≠ b ≠ c, α = β = γ = 90°)", &
271 "Tetragonal (a = b ≠ c, α = β = γ = 90°)", &
272 "Tetragonal (a = c ≠ b, α = β = γ = 90°)", &
273 "Tetragonal (a ≠ b = c, α = β = γ = 90°)", &
274 "Tetragonal (alias for TETRAGONAL_AB)", &
275 "Rhombohedral (a = b = c, α = β = γ ≠ 90°)", &
276 "Hexagonal (alias for HEXAGONAL_GAMMA_60)", &
277 "Hexagonal (a = b ≠ c, α = β = 90°, γ = 60°)", &
278 "Hexagonal (a = b ≠ c, α = β = 90°, γ = 120°)", &
279 "Cubic (a = b = c, α = β = γ = 90°)"), &
280 enum_c_vals=
s2a(
"NONE",
"TRICLINIC",
"MONOCLINIC",
"MONOCLINIC_GAMMA_AB",
"ORTHORHOMBIC", &
281 "TETRAGONAL_AB",
"TETRAGONAL_AC",
"TETRAGONAL_BC",
"TETRAGONAL",
"RHOMBOHEDRAL", &
282 "HEXAGONAL",
"HEXAGONAL_GAMMA_60",
"HEXAGONAL_GAMMA_120",
"CUBIC"), &
291 END SUBROUTINE create_cell_section_low
303 cpassert(.NOT.
ASSOCIATED(section))
305 description=
"Information to initialize the parallel random number generator streams", &
306 n_keywords=1, n_subsections=0, repeats=.false.)
309 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
310 description=
"Specify an initial RNG stream record", repeats=.true., &
311 usage=
"{RNG record string}", type_of_var=
lchar_t)
329 cpassert(.NOT.
ASSOCIATED(section))
331 description=
"a subsystem: coordinates, topology, molecules and cell", &
332 n_keywords=1, n_subsections=9, repeats=.false.)
336 description=
"Initial seed for the (pseudo)random number generator for the "// &
337 "Wiener process employed by the Langevin dynamics. Exactly 1 or 6 positive "// &
338 "integer values are expected. A single value is replicated to fill up the "// &
339 "full seed array with 6 numbers.", &
342 usage=
"SEED {INTEGER} .. {INTEGER}", &
343 default_i_vals=[12345])
357 CALL create_coord_section(subsection)
361 CALL create_velocity_section(subsection)
365 CALL create_kind_section(subsection)
369 CALL create_topology_section(subsection)
377 CALL create_multipole_section(subsection)
381 CALL create_shell_coord_section(subsection)
385 CALL create_shell_vel_section(subsection)
388 CALL create_core_coord_section(subsection)
392 CALL create_core_vel_section(subsection)
396 CALL create_subsys_print_section(subsection)
407 SUBROUTINE create_subsys_print_section(section)
413 NULLIFY (print_key, keyword)
414 cpassert(.NOT.
ASSOCIATED(section))
416 description=
"Controls printings related to the subsys", &
417 n_keywords=0, n_subsections=9, repeats=.false.)
420 description=
"controls the output of the atomic coordinates when setting up the"// &
421 " force environment. For printing coordinates during MD or GEO refer to the keyword"// &
422 " trajectory.", unit_str=
"angstrom", &
432 description=
"Controls the printout of the interatomic distances when setting up the "// &
433 "force environment", unit_str=
"angstrom", &
435 CALL keyword_create(keyword, __location__, name=
"CHECK_INTERATOMIC_DISTANCES", &
436 description=
"Minimum allowed distance between two atoms. "// &
437 "A warning is printed, if a smaller interatomic distance is encountered. "// &
438 "The check is disabled for the threshold value 0 which is the default "// &
439 "for systems with more than 2000 atoms (otherwise 0.5 A). "// &
440 "The run is aborted, if an interatomic distance is smaller than the absolute "// &
441 "value of a negative threshold value.", &
442 default_r_val=0.5_dp*
bohr, unit_str=
"angstrom")
449 "controls the printing of information in the topology settings", &
452 description=
"Prints information when parsing XTL files.", &
453 default_l_val=.false., lone_keyword_l_val=.true.)
457 description=
"Prints information when parsing CIF files.", &
458 default_l_val=.false., lone_keyword_l_val=.true.)
462 description=
"Prints information when parsing PDB files.", &
463 default_l_val=.false., lone_keyword_l_val=.true.)
467 description=
"Prints information when parsing XYZ files.", &
468 default_l_val=.false., lone_keyword_l_val=.true.)
472 description=
"Prints information when parsing PSF files.", &
473 default_l_val=.false., lone_keyword_l_val=.true.)
477 description=
"Prints information when parsing ABER topology files.", &
478 default_l_val=.false., lone_keyword_l_val=.true.)
482 description=
"Prints information when parsing G96 files.", &
483 default_l_val=.false., lone_keyword_l_val=.true.)
487 description=
"Prints information when parsing CRD files.", &
488 default_l_val=.false., lone_keyword_l_val=.true.)
492 description=
"Prints information when parsing GROMOS topology files.", &
493 default_l_val=.false., lone_keyword_l_val=.true.)
497 description=
"Prints information regarding topology utilities", &
498 default_l_val=.false., lone_keyword_l_val=.true.)
501 CALL keyword_create(keyword, __location__, name=
"generate_info", &
502 description=
"Prints information regarding topology generation", &
503 default_l_val=.false., lone_keyword_l_val=.true.)
510 description=
"controls the output of the cell parameters", &
517 description=
"controls the output of information on the kinds", &
520 description=
"If the printkey is activated controls the printing of the"// &
521 " fist_potential, gth_potential, sgp_potential or all electron"// &
522 " potential information", &
523 default_l_val=.false., lone_keyword_l_val=.true.)
527 description=
"If the printkey is activated controls the printing of basis set information", &
528 default_l_val=.false., lone_keyword_l_val=.true.)
531 CALL keyword_create(keyword, __location__, name=
"se_parameters", &
532 description=
"If the printkey is activated controls the printing of the semi-empirical parameters.", &
533 default_l_val=.false., lone_keyword_l_val=.true.)
540 description=
"controls the output of symmetry information", &
543 description=
"Assume the system is an isolated molecule", &
544 default_l_val=.false., lone_keyword_l_val=.true.)
548 description=
"Accuracy required for symmetry detection", &
549 default_r_val=1.0e-4_dp)
552 CALL keyword_create(keyword, __location__, name=
"STANDARD_ORIENTATION", &
553 description=
"Print molecular coordinates in standard orientation", &
554 default_l_val=.false., lone_keyword_l_val=.true.)
558 description=
"Print molecular inertia tensor", &
559 default_l_val=.false., lone_keyword_l_val=.true.)
562 CALL keyword_create(keyword, __location__, name=
"SYMMETRY_ELEMENTS", &
563 description=
"Print symmetry elements", &
564 default_l_val=.false., lone_keyword_l_val=.true.)
568 description=
"Print all symmetry information", &
569 default_l_val=.false., lone_keyword_l_val=.true.)
572 CALL keyword_create(keyword, __location__, name=
"ROTATION_MATRICES", &
573 description=
"All the rotation matrices of the point group", &
574 default_l_val=.false.)
577 CALL keyword_create(keyword, __location__, name=
"CHECK_SYMMETRY", &
578 description=
"Check if calculated symmetry has expected value."// &
579 " Use either Schoenfliess or Hermann-Maugin symbols", &
580 default_c_val=
"NONE")
587 description=
"controls the output of information on the molecules", &
593 description=
"controls the output of radii information", unit_str=
"angstrom", &
596 CALL keyword_create(keyword, __location__, name=
"core_charges_radii", &
597 description=
"If the printkey is activated controls the printing of the radii of the core charges", &
598 default_l_val=.true., lone_keyword_l_val=.true.)
603 description=
"If the printkey is activated controls the printing of the core gaussian radii", &
604 default_l_val=.true., lone_keyword_l_val=.true.)
609 description=
"If the printkey is activated controls the printing of the set_radii", &
610 default_l_val=.true., lone_keyword_l_val=.true.)
615 description=
"If the printkey is activated controls the printing of the kind_radii", &
616 default_l_val=.true., lone_keyword_l_val=.true.)
620 CALL keyword_create(keyword, __location__, name=
"core_charge_radii", &
621 description=
"If the printkey is activated controls the printing of the core_charge_radii", &
622 default_l_val=.true., lone_keyword_l_val=.true.)
627 description=
"If the printkey is activated controls the printing of the "// &
628 "pseudo potential local radii", &
629 default_l_val=.true., lone_keyword_l_val=.true.)
634 description=
"If the printkey is activated controls the printing of the "// &
635 "pseudo potential non local radii", &
636 default_l_val=.true., lone_keyword_l_val=.true.)
640 CALL keyword_create(keyword, __location__, name=
"gapw_prj_radii", &
641 description=
"If the printkey is activated controls the printing of the gapw projector radii", &
642 default_l_val=.true., lone_keyword_l_val=.true.)
649 END SUBROUTINE create_subsys_print_section
656 SUBROUTINE create_multipole_section(section)
662 cpassert(.NOT.
ASSOCIATED(section))
664 description=
"Specifies the dipoles and quadrupoles for particles.", &
665 n_keywords=1, n_subsections=0, repeats=.false.)
667 NULLIFY (keyword, subsection)
669 description=
"Specifies the dipoles of the particles.", &
670 n_keywords=1, n_subsections=0, repeats=.false.)
671 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
672 description=
"The dipole components for each atom in the format: "// &
673 "$D_x \ D_y \ D_z$", &
674 repeats=.true., usage=
"{Real} {Real} {Real}", &
675 type_of_var=
real_t, n_var=3)
681 CALL section_create(subsection, __location__, name=
"quadrupoles", &
682 description=
"Specifies the quadrupoles of the particles.", &
683 n_keywords=1, n_subsections=0, repeats=.false.)
684 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
685 description=
"The quadrupole components for each atom in the format: "// &
686 "$Q_{xx} \ Q_{xy} \ Q_{xz} \ Q_{yy} \ Q_{yz} \ Q_{zz}$", &
687 repeats=.true., usage=
"{Real} {Real} {Real} {Real} {Real} {Real}", &
688 type_of_var=
real_t, n_var=6)
694 END SUBROUTINE create_multipole_section
706 cpassert(.NOT.
ASSOCIATED(print_key))
711 description=
"Request the printing of special structure data during a structure "// &
712 "optimization (in MOTION%PRINT) or when setting up a subsys (in SUBSYS%PRINT).", &
715 CALL keyword_create(keyword, __location__, name=
"POSITION", variants=[
"POS"], &
716 description=
"Print the position vectors in Cartesian coordinates of the atoms specified "// &
717 "by a list of their indices", &
718 usage=
"POSITION {integer} {integer} {integer}..{integer}", n_var=-1, repeats=.true., &
723 CALL keyword_create(keyword, __location__, name=
"POSITION_SCALED", variants=[
"POS_SCALED"], &
724 description=
"Print the position vectors in scaled coordinates of the atoms specified "// &
725 "by a list of their indices", &
726 usage=
"POSITION_SCALED {integer} {integer} {integer}..{integer}", n_var=-1, repeats=.true., &
731 CALL keyword_create(keyword, __location__, name=
"DISTANCE", variants=[
"DIS"], &
732 description=
"Print the distance between the atoms a and b specified by their indices", &
733 usage=
"DISTANCE {integer} {integer}", n_var=2, repeats=.true., &
738 CALL keyword_create(keyword, __location__, name=
"ANGLE", variants=[
"ANG"], &
739 description=
"Print the angle formed by the atoms specified by their indices", &
740 usage=
"ANGLE {integer} {integer} {integer}", n_var=3, repeats=.true., &
745 CALL keyword_create(keyword, __location__, name=
"DIHEDRAL_ANGLE", variants=
s2a(
"DIHEDRAL",
"DIH"), &
746 description=
"Print the dihedral angle between the planes defined by the atoms (a,b,c) and "// &
747 "the atoms (b,c,d) specified by their indices", &
748 usage=
"DIHEDRAL_ANGLE {integer} {integer} {integer} {integer}", n_var=4, &
760 SUBROUTINE create_velocity_section(section)
765 cpassert(.NOT.
ASSOCIATED(section))
767 description=
"The velocities for simple systems or "// &
768 "the centroid mode in PI runs, xyz format by default", &
769 n_keywords=1, n_subsections=0, repeats=.false.)
772 description=
"Specify the units of measurement for the velocities "// &
773 "(currently works only for the path integral code). "// &
774 "All available CP2K units can be used.", &
775 usage=
"PINT_UNIT angstrom*au_t^-1", &
776 default_c_val=
"bohr*au_t^-1")
780 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
781 description=
"The atomic velocities in the format: "// &
782 "$ v_x \ v_y \ v_z$ "// &
783 "The same order as for the atomic coordinates is assumed.", &
784 repeats=.true., usage=
"{Real} {Real} {Real}", &
785 type_of_var=
real_t, n_var=3)
789 END SUBROUTINE create_velocity_section
796 SUBROUTINE create_shell_vel_section(section)
801 cpassert(.NOT.
ASSOCIATED(section))
802 CALL section_create(section, __location__, name=
"shell_velocity", &
803 description=
"The velocities of shells for shell-model potentials, "// &
805 n_keywords=1, n_subsections=0, repeats=.false.)
808 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
809 description=
"The shell particle velocities in the format: "// &
810 "$v_x \ v_y \ v_z$ "// &
811 "The same order as for the shell particle coordinates is assumed.", &
812 repeats=.true., usage=
"{Real} {Real} {Real}", &
813 type_of_var=
real_t, n_var=3)
817 END SUBROUTINE create_shell_vel_section
824 SUBROUTINE create_core_vel_section(section)
829 cpassert(.NOT.
ASSOCIATED(section))
830 CALL section_create(section, __location__, name=
"core_velocity", &
831 description=
"The velocities of cores for shell-model potentials, "// &
833 n_keywords=1, n_subsections=0, repeats=.false.)
836 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
837 description=
"The core particle velocities in the format: "// &
838 "$v_x \ v_y \ v_z$ "// &
839 "The same order as for the core particle coordinates is assumed.", &
840 repeats=.true., usage=
"{Real} {Real} {Real}", &
841 type_of_var=
real_t, n_var=3)
845 END SUBROUTINE create_core_vel_section
852 SUBROUTINE create_potential_section(section)
858 description=
"Section used to specify Potentials.", &
859 n_keywords=1, n_subsections=0, repeats=.false.)
861 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
862 description=
"CP2K Pseudo Potential Standard Format (GTH, ALL)", &
863 repeats=.true., type_of_var=
lchar_t)
867 END SUBROUTINE create_potential_section
874 SUBROUTINE create_kgpot_section(section)
880 description=
"Section used to specify KG Potentials.", &
881 n_keywords=1, n_subsections=0, repeats=.false.)
883 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
884 description=
"CP2K KG TNADD Potential Standard Format (TNADD)", &
885 repeats=.true., type_of_var=
lchar_t)
889 END SUBROUTINE create_kgpot_section
902 description=
"Section used to specify a general basis set for QM calculations.", &
903 n_keywords=1, n_subsections=0, repeats=.true.)
907 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
908 description=
"The type of basis set defined in this section.", &
909 lone_keyword_c_val=
"Orbital", &
910 usage=
"Orbital", default_c_val=
"Orbital")
915 keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
916 repeats=.true., type_of_var=
lchar_t, &
917 description=
"CP2K Basis Set Standard Format:"//
newline//
newline// &
919 "Element symbol Name of the basis set Alias names"//
newline// &
920 "nset (repeat the following block of lines nset times)"//
newline// &
921 "n lmin lmax nexp nshell(lmin) nshell(lmin+1) ... nshell(lmax-1) nshell(lmax)"//
newline// &
922 "a(1) c(1,l,1) c(1,l,2) ... c(1,l,nshell(l)-1) c(1,l,nshell(l)), l=lmin,lmax"//
newline// &
923 "a(2) c(2,l,1) c(2,l,2) ... c(2,l,nshell(l)-1) c(2,l,nshell(l)), l=lmin,lmax"//
newline// &
927 "a(nexp-1) c(nexp-1,l,1) c(nexp-1,l,2) ... c(nexp-1,l,nshell(l)-1) c(nexp-1,l,nshell(l)), l=lmin,lmax"//
newline// &
928 "a(nexp) c(nexp,l,1) c(nexp,l,2) ... c(nexp,l,nshell(l)-1) c(nexp,l,nshell(l)), l=lmin,lmax"//
newline// &
931 "nset : Number of exponent sets"//
newline// &
932 "n : Principle quantum number (only for orbital label printing)"//
newline// &
933 "lmax : Maximum angular momentum quantum number l"//
newline// &
934 "lmin : Minimum angular momentum quantum number l"//
newline// &
935 "nshell(l): Number of shells for angular momentum quantum number l"//
newline// &
937 "c : Contraction coefficient"//
newline// &
949 SUBROUTINE create_coord_section(section)
954 cpassert(.NOT.
ASSOCIATED(section))
956 description=
"The coordinates for simple systems (like small QM cells) "// &
957 "are specified here by default using explicit XYZ coordinates. "// &
958 "Simple products and fractions combined with functions of a single "// &
959 "number can be used like 2/3, 0.3*COS(60) or -SQRT(3)/2. "// &
960 "More complex systems should be given via an external coordinate "// &
961 "file in the SUBSYS%TOPOLOGY section.", &
962 n_keywords=1, n_subsections=0, repeats=.false.)
965 description=
'Specify the unit of measurement for the coordinates in input'// &
966 "All available CP2K units can be used.", &
967 usage=
"UNIT angstrom", default_c_val=
"angstrom")
972 description=
'Specify if the coordinates in input are scaled. '// &
973 'When true, the coordinates are given in multiples of the lattice vectors.', &
974 usage=
"SCALED F", default_l_val=.false., &
975 lone_keyword_l_val=.true.)
979 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
980 description=
"The atomic coordinates in the format:"//
newline//
newline// &
982 "The `MOLNAME` is optional. If not provided the molecule name "// &
983 "is internally created. All other fields after `MOLNAME` are simply ignored.", &
984 repeats=.true., usage=
"{{String} {Real} {Real} {Real} {String}}", &
988 END SUBROUTINE create_coord_section
995 SUBROUTINE create_shell_coord_section(section)
1000 cpassert(.NOT.
ASSOCIATED(section))
1002 description=
"The shell coordinates for the shell-model potentials"// &
1003 " xyz format with an additional column for the index of the corresponding particle", &
1004 n_keywords=1, n_subsections=0, repeats=.false.)
1007 description=
'Specify the unit of measurement for the coordinates in input'// &
1008 "All available CP2K units can be used.", &
1009 usage=
"UNIT angstrom", default_c_val=
"angstrom")
1014 description=
'Specify if the coordinates in input are scaled. '// &
1015 'When true, the coordinates are given in multiples of the lattice vectors.', &
1016 usage=
"SCALED F", default_l_val=.false., &
1017 lone_keyword_l_val=.true.)
1021 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1022 description=
"The shell particle coordinates in the format:"//
newline//
newline// &
1024 "The `ATOMIC_INDEX` refers to the atom the shell particle belongs to.", &
1025 repeats=.true., usage=
"{{String} {Real} {Real} {Real} {Integer}}", &
1030 END SUBROUTINE create_shell_coord_section
1037 SUBROUTINE create_core_coord_section(section)
1042 cpassert(.NOT.
ASSOCIATED(section))
1044 description=
"The core coordinates for the shell-model potentials"// &
1045 " xyz format with an additional column for the index of the corresponding particle", &
1046 n_keywords=1, n_subsections=0, repeats=.false.)
1049 description=
'Specify the unit of measurement for the coordinates in input'// &
1050 "All available CP2K units can be used.", &
1051 usage=
"UNIT angstrom", default_c_val=
"angstrom")
1056 description=
'Specify if the coordinates in input are scaled. '// &
1057 'When true, the coordinates are given in multiples of the lattice vectors.', &
1058 usage=
"SCALED F", default_l_val=.false., &
1059 lone_keyword_l_val=.true.)
1063 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1064 description=
"The core particle coordinates in the format:"//
newline//
newline// &
1066 "The `ATOMIC_INDEX` refers to the atom the core particle belongs to.", &
1067 repeats=.true., usage=
"{{String} {Real} {Real} {Real} {Integer}}", &
1072 END SUBROUTINE create_core_coord_section
1079 SUBROUTINE create_kind_section(section)
1085 cpassert(.NOT.
ASSOCIATED(section))
1088 description=
"Defines settings shared by atoms of the same kind, such as basis sets, "// &
1089 "pseudopotentials, all-electron treatment, and atom-centered grids.", &
1090 n_keywords=20, n_subsections=1, repeats=.true.)
1094 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1095 description=
"The name of the kind described in this section.", &
1096 usage=
"H", default_c_val=
"DEFAULT")
1101 description=
"Selects a Gaussian basis set for this kind. The default type is ORB and the default "// &
1102 "form is GTO; NONE implies no basis and is meaningful for ghost atoms. Possible values for TYPE are "// &
1103 "{ORB, AUX, MIN, RI_AUX, LRI, ...}. Possible values for "// &
1104 "FORM are {GTO, STO}. Where STO results in a GTO expansion of a Slater type basis. "// &
1105 "If a value for FORM is given, also TYPE has to be set explicitly.", &
1106 usage=
"BASIS_SET [type] [form] DZVP", type_of_var=
char_t, default_c_vals=[
" ",
" ",
" "], &
1108 repeats=.true., n_var=-1)
1115 keyword, __location__, name=
"AUX_BASIS_SET", &
1116 variants=
s2a(
"AUXILIARY_BASIS_SET",
"AUX_BASIS"), &
1117 description=
"The auxiliary basis set (GTO type)", &
1118 usage=
"AUX_BASIS_SET DZVP", default_c_val=
" ", &
1120 deprecation_notice=
"use 'BASIS_SET AUX ...' instead", &
1126 keyword, __location__, name=
"RI_AUX_BASIS_SET", &
1127 variants=
s2a(
"RI_MP2_BASIS_SET",
"RI_RPA_BASIS_SET",
"RI_AUX_BASIS"), &
1128 description=
"The RI auxiliary basis set used in WF_CORRELATION (GTO type)", &
1129 usage=
"RI_AUX_BASIS_SET DZVP", default_c_val=
" ", &
1131 deprecation_notice=
"Use 'BASIS_SET RI_AUX ...' instead.", &
1137 keyword, __location__, name=
"LRI_BASIS_SET", &
1138 variants=
s2a(
"LRI_BASIS"), &
1139 description=
"The local resolution of identity basis set (GTO type)", &
1140 usage=
"LRI_BASIS_SET", default_c_val=
" ", &
1142 deprecation_notice=
"Use 'BASIS_SET LRI ...' instead.", &
1148 keyword, __location__, name=
"AUX_FIT_BASIS_SET", &
1149 variants=
s2a(
"AUXILIARY_FIT_BASIS_SET",
"AUX_FIT_BASIS"), &
1150 description=
"The auxiliary basis set (GTO type) for auxiliary density matrix method", &
1151 usage=
"AUX_FIT_BASIS_SET DZVP", default_c_val=
" ", &
1154 deprecation_notice=
"Use 'BASIS_SET AUX_FIT ...' instead.", &
1161 description=
"Specifies the electronic configuration used in construction the "// &
1162 "atomic initial guess (see the pseudo potential file for the default values).", &
1163 usage=
"ELEC_CONF n_elec(s) n_elec(p) n_elec(d) ... ", &
1168 CALL keyword_create(keyword, __location__, name=
"CORE_CORRECTION", &
1169 description=
"Corrects the effective nuclear charge", &
1170 usage=
"CORE_CORRECTION 1.0", n_var=1, &
1171 default_r_val=0.0_dp)
1175 CALL keyword_create(keyword, __location__, name=
"MAGNETIZATION", &
1176 description=
"The magnetization used in the atomic initial guess. "// &
1177 "Adds magnetization/2 spin-alpha electrons and removes magnetization/2 spin-beta electrons.", &
1178 usage=
"MAGNETIZATION 0.5", n_var=1, &
1179 default_r_val=0.0_dp)
1184 variants=[
"ELEMENT_SYMBOL"], &
1185 description=
"The element of the actual kind "// &
1186 "(if not given it is inferred from the kind name)", &
1187 usage=
"ELEMENT O", type_of_var=
char_t, n_var=1)
1192 variants=
s2a(
"ATOMIC_MASS",
"ATOMIC_WEIGHT",
"WEIGHT"), &
1193 description=
"The mass of the atom "// &
1194 "(if negative or non present it is inferred from the element symbol)", &
1195 usage=
"MASS 2.0", type_of_var=
real_t, n_var=1)
1199 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_FILE_NAME", &
1200 description=
"The name of the file where to find this kinds pseudopotential."// &
1201 " Default file is specified in DFT section.", &
1202 usage=
"POTENTIAL_FILE_NAME <PSEUDO-POTENTIAL-FILE-NAME>", default_c_val=
"-", n_var=1)
1206 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_TYPE", &
1207 description=
"The type of this kinds pseudopotential (ECP, ALL, GTH, UPS).", &
1208 deprecation_notice=
"Use 'POTENTIAL <TYPE> ...' instead.", &
1209 usage=
"POTENTIAL_TYPE <TYPE>", default_c_val=
"", n_var=1)
1216 "The type (ECP, ALL, GTH, UPS) and name of the "// &
1217 "pseudopotential for the defined kind. Use GTH potentials "// &
1218 "for most GPW calculations, ECP for Gaussian-integral effective core "// &
1219 "potentials, and ALL for all-electron calculations.", &
1220 usage=
"POTENTIAL [type] <POTENTIAL-NAME>", type_of_var=
char_t, &
1221 default_c_vals=[
" ",
" "], &
1226 CALL keyword_create(keyword, __location__, name=
"KG_POTENTIAL_FILE_NAME", &
1227 description=
"The name of the file where to find this kinds KG potential."// &
1228 " Default file is specified in DFT section.", &
1229 usage=
"KG_POTENTIAL_FILE_NAME <POTENTIAL-FILE-NAME>", default_c_val=
"-", n_var=1)
1233 CALL keyword_create(keyword, __location__, name=
"KG_POTENTIAL", &
1234 variants=[
"KG_POT"], &
1235 description=
"The name of the non-additive atomic kinetic energy potential.", &
1236 usage=
"KG_POTENTIAL <TNADD-POTENTIAL-NAME>", default_c_val=
"NONE", n_var=1)
1240 CALL keyword_create(keyword, __location__, name=
"ECP_SEMI_LOCAL", &
1241 description=
"Use ECPs in the original semi-local form."// &
1242 " This requires the availability of the corresponding integral library."// &
1243 " If set to False, a fully nonlocal one-center expansion of the ECP is constructed.", &
1244 usage=
"ECP_SEMI_LOCAL {T,F}", default_l_val=.true., lone_keyword_l_val=.true.)
1248 CALL keyword_create(keyword, __location__, name=
"COVALENT_RADIUS", &
1249 description=
"Use this covalent radius (in Angstrom) for all atoms of "// &
1250 "the atomic kind instead of the internally tabulated default value", &
1251 usage=
"COVALENT_RADIUS 1.24", n_var=1, default_r_val=0.0_dp, &
1252 unit_str=
"angstrom")
1257 description=
"Use this van der Waals radius (in Angstrom) for all atoms of "// &
1258 "the atomic kind instead of the internally tabulated default value", &
1259 usage=
"VDW_RADIUS 1.85", n_var=1, default_r_val=0.0_dp, unit_str=
"angstrom")
1263 CALL keyword_create(keyword, __location__, name=
"HARD_EXP_RADIUS", &
1264 description=
"The region where the hard density is supposed to be confined"// &
1265 " (GAPW) (in Bohr, default is 1.2 for H and 1.512 otherwise)", &
1266 usage=
"HARD_EXP_RADIUS 0.9", type_of_var=
real_t, n_var=1)
1270 CALL keyword_create(keyword, __location__, name=
"MAX_RAD_LOCAL", &
1271 description=
"Max radius for the basis functions used to"// &
1272 " generate the local projectors in GAPW [Bohr]", &
1273 usage=
"MAX_RAD_LOCAL 15.0", default_r_val=13.0_dp*
bohr)
1277 CALL keyword_create(keyword, __location__, name=
"RHO0_EXP_RADIUS", &
1278 description=
"the radius which defines the atomic region where "// &
1279 "the hard compensation density is confined. "// &
1280 "should be less than HARD_EXP_RADIUS (GAPW) (Bohr, default equals HARD_EXP_RADIUS)", &
1281 usage=
"RHO0_EXP_RADIUS 0.9", type_of_var=
real_t, n_var=1)
1285 CALL keyword_create(keyword, __location__, name=
"LEBEDEV_GRID", &
1286 description=
"GAPW: size of the angular Lebedev grid used for "// &
1287 "atom-centered integrations for this kind.", &
1288 usage=
"LEBEDEV_GRID 40", default_i_val=50)
1293 description=
"GAPW: number of radial grid points used for atom-centered "// &
1294 "integrations for this kind.", &
1295 usage=
"RADIAL_GRID 70", default_i_val=50)
1300 description=
"Defines the radius of the electrostatic multipole "// &
1301 "of the atom in Fist. This radius applies to the charge, the "// &
1302 "dipole and the quadrupole. When zero, the atom is treated as "// &
1303 "a point multipole, otherwise it is treated as a Gaussian "// &
1304 "charge distribution with the given radius: "// &
1305 "p(x,y,z)*N*exp(-(x**2+y**2+z**2)/(2*MM_RADIUS**2)), where N is "// &
1306 "a normalization constant. In the core-shell model, only the "// &
1307 "shell is treated as a Gaussian and the core is always a point "// &
1309 usage=
"MM_RADIUS {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
1310 unit_str=
"angstrom", n_var=1)
1315 description=
"The third order parameter (derivative of hardness) used in "// &
1316 "diagonal DFTB3 correction.", &
1317 usage=
"DFTB3_PARAM 0.2", default_r_val=0.0_dp)
1322 description=
"The maximum l-quantum number of the DFTB basis for this kind.", &
1323 usage=
"LMAX_DFTB 1", default_i_val=-1)
1328 description=
"The number of MAOs (Modified Atomic Orbitals) for this kind.", &
1329 usage=
"MAO 4", default_i_val=-1)
1334 CALL keyword_create(keyword, __location__, name=
"SE_P_ORBITALS_ON_H", &
1335 description=
"Forces the usage of p-orbitals on H for SEMI-EMPIRICAL calculations."// &
1336 " This keyword applies only when the KIND is specifying an Hydrogen element."// &
1337 " It is ignored in all other cases. ", &
1338 usage=
"SE_P_ORBITALS_ON_H", default_l_val=.false., lone_keyword_l_val=.true.)
1343 description=
"Force one type to be treated by the GPW scheme,"// &
1344 " whatever are its primitives, even if the GAPW method is used", &
1345 usage=
"GPW_TYPE", default_l_val=.false., lone_keyword_l_val=.true.)
1351 description=
"This keyword makes all atoms of this kind "// &
1352 "ghost atoms, i.e. without pseudo or nuclear charge. "// &
1353 "Useful to just have the basis set at that position (e.g. BSSE calculations), "// &
1354 "or to have a non-interacting particle with BASIS_SET NONE", &
1356 default_l_val=.false., &
1357 lone_keyword_l_val=.true.)
1362 name=
"MONOVALENT", &
1363 description=
"This keyword makes all atoms of this kind monovalent, i.e. with "// &
1364 "a single electron and nuclear charge set to 1.0. Used to saturate dangling bonds, "// &
1365 "ideally in conjunction with a monovalent pseudopotential. Currently GTH only.", &
1366 usage=
"MONOVALENT", &
1367 default_l_val=.false., &
1368 lone_keyword_l_val=.true.)
1373 name=
"FLOATING_BASIS_CENTER", &
1374 description=
"This keyword makes all atoms of this kind "// &
1375 "floating functions, i.e. without pseudo or nuclear charge"// &
1376 " which are subject to a geometry optimization in the outer SCF.", &
1377 usage=
"FLOATING_BASIS_CENTER", &
1378 default_l_val=.false., &
1379 lone_keyword_l_val=.true.)
1384 name=
"NO_OPTIMIZE", &
1385 description=
"Skip optimization of this type (used in specific basis set or"// &
1386 " potential optimization schemes)", &
1387 usage=
"NO_OPTIMIZE", &
1388 default_l_val=.false., &
1389 lone_keyword_l_val=.true.)
1393 CALL keyword_create(keyword, __location__, name=
"PAO_BASIS_SIZE", &
1394 description=
"The block size used for the polarized atomic orbital basis. "// &
1395 "Setting PAO_BASIS_SIZE to the size of the primary basis or to a value "// &
1396 "below one will disables the PAO method for the given atomic kind. "// &
1397 "By default PAO is disbabled.", default_i_val=0)
1402 description=
"The filename of the PyTorch model for predicting PAO basis sets.")
1406 NULLIFY (subsection)
1407 CALL create_pao_potential_section(subsection)
1411 CALL create_pao_descriptor_section(subsection)
1419 CALL create_potential_section(subsection)
1423 CALL create_kgpot_section(subsection)
1427 CALL create_dft_plus_u_section(subsection)
1431 CALL create_bs_section(subsection)
1435 END SUBROUTINE create_kind_section
1442 SUBROUTINE create_pao_potential_section(section)
1447 cpassert(.NOT.
ASSOCIATED(section))
1450 CALL section_create(section, __location__, name=
"PAO_POTENTIAL", repeats=.true., &
1451 description=
"Settings of the PAO potentials, which are atomic kind specific.")
1454 description=
"Maximum angular moment of the potential "// &
1455 "(must be an even number).", default_i_val=0)
1460 description=
"Exponent of the Gaussian potential term.", &
1461 default_r_val=1.0_dp)
1466 description=
"Weight of Gaussian potential term.", &
1467 default_r_val=1.0_dp)
1471 CALL keyword_create(keyword, __location__, name=
"MAX_PROJECTOR", &
1472 description=
"Maximum angular moment of the potential's projectors. "// &
1473 "Used only by the GTH parametrization", default_i_val=2)
1477 END SUBROUTINE create_pao_potential_section
1484 SUBROUTINE create_pao_descriptor_section(section)
1489 cpassert(.NOT.
ASSOCIATED(section))
1492 CALL section_create(section, __location__, name=
"PAO_DESCRIPTOR", repeats=.true., &
1493 description=
"Settings of the PAO descriptor, which are atomic kind specific.")
1496 description=
"Exponent of the Gaussian potential term.", &
1497 default_r_val=1.0_dp)
1502 description=
"Exponent of the Gaussian screening.", &
1503 default_r_val=0.2_dp)
1508 description=
"Weight of Gaussian potential term.", &
1509 default_r_val=1.0_dp)
1513 END SUBROUTINE create_pao_descriptor_section
1524 SUBROUTINE create_bs_section(section)
1531 cpassert(.NOT.
ASSOCIATED(section))
1535 description=
"Define the required atomic orbital occupation "// &
1536 "assigned in initialization of the density matrix, by adding or "// &
1537 "subtracting electrons from specific angular momentum channels. "// &
1538 "It works only with GUESS ATOMIC.", &
1543 NULLIFY (keyword, subsection)
1546 name=
"_SECTION_PARAMETERS_", &
1547 description=
"controls the activation of the BS section", &
1549 default_l_val=.false., &
1550 lone_keyword_l_val=.true.)
1554 CALL section_create(subsection, __location__, name=
"ALPHA", description=
"alpha spin", &
1561 description=
"Orbital ccupation change per angular momentum quantum number. "// &
1562 "In unrestricted calculations applied to spin alpha.", &
1573 description=
"Angular momentum quantum number of the "// &
1574 "orbitals whose occupation is changed", &
1585 description=
"Principal quantum number of the "// &
1586 "orbitals whose occupation is changed. "// &
1587 "Default is the first not occupied", &
1597 CALL section_create(subsection, __location__, name=
"BETA", description=
"beta spin", &
1604 description=
"Orbital ccupation change per angular momentum quantum number. "// &
1605 "Applied to spin beta and active only in unrestricted calculations.", &
1615 description=
"Angular momentum quantum number of the "// &
1616 "orbitals of beta spin whose occupation is changed. "// &
1617 "Active only for unrestricted calculations", &
1627 description=
"Principal quantum number of the "// &
1628 "orbitals of beta spin whose occupation is changed. "// &
1629 "Default is the first not occupied. "// &
1630 "Active only for unrestricted calculations", &
1641 END SUBROUTINE create_bs_section
1649 SUBROUTINE create_topology_section(section)
1655 cpassert(.NOT.
ASSOCIATED(section))
1657 description=
"Section specifying information regarding how to handle the topology"// &
1658 " for classical runs.", &
1659 n_keywords=5, n_subsections=0, repeats=.false.)
1661 NULLIFY (keyword, print_key)
1663 CALL keyword_create(keyword, __location__, name=
"USE_ELEMENT_AS_KIND", &
1664 description=
"Kinds are generated according to the element name."// &
1665 " Default=True for SE and TB methods.", &
1666 usage=
"USE_ELEMENT_AS_KIND logical", &
1667 default_l_val=.false., lone_keyword_l_val=.true.)
1671 CALL keyword_create(keyword, __location__, name=
"CHARGE_OCCUP", &
1672 variants=[
"CHARGE_O"], &
1673 description=
"Read MM charges from the OCCUP field of PDB file.", &
1674 usage=
"CHARGE_OCCUP logical", &
1675 default_l_val=.false., lone_keyword_l_val=.true.)
1680 variants=[
"CHARGE_B"], &
1681 description=
"Read MM charges from the BETA field of PDB file.", &
1682 usage=
"CHARGE_BETA logical", &
1683 default_l_val=.false., lone_keyword_l_val=.true.)
1687 CALL keyword_create(keyword, __location__, name=
"CHARGE_EXTENDED", &
1688 description=
"Read MM charges from the very last field of PDB file (starting from column 81)."// &
1689 " No limitations of number of digits.", &
1690 usage=
"CHARGE_EXTENDED logical", &
1691 default_l_val=.false., lone_keyword_l_val=.true.)
1696 description=
"For a protein, each residue is now considered a molecule", &
1697 usage=
"PARA_RES logical", &
1698 default_l_val=.true., lone_keyword_l_val=.true.)
1703 description=
"Check molecules have the same number of atom and names.", &
1704 usage=
"MOL_CHECK logical", &
1705 default_l_val=.true., lone_keyword_l_val=.true.)
1709 CALL keyword_create(keyword, __location__, name=
"USE_G96_VELOCITY", &
1710 description=
"Use the velocities in the G96 coordinate files as the starting velocity", &
1711 usage=
"USE_G96_VELOCITY logical", &
1712 default_l_val=.false., lone_keyword_l_val=.true.)
1717 CALL keyword_create(keyword, __location__, name=
"COORD_FILE_NAME", &
1718 variants=
s2a(
"COORD_FILE"), &
1719 description=
"Specifies the filename that contains coordinates. "// &
1720 "In case the CELL section is not set explicitly but this file "// &
1721 "contains cell information, including CIF, PDB and (Extended) XYZ "// &
1722 "formats, this file is also parsed for setting up the simulation cell.", &
1723 usage=
"COORD_FILE_NAME <FILENAME>", type_of_var=
lchar_t)
1727 CALL keyword_create(keyword, __location__, name=
"COORD_FILE_FORMAT", &
1728 variants=
s2a(
"COORDINATE"), &
1729 description=
"Set up the way in which coordinates will be read.", &
1730 usage=
"COORD_FILE_FORMAT (OFF|PDB|XYZ|G96|CRD|CIF|XTL|CP2K)", &
1731 enum_c_vals=
s2a(
"OFF",
"PDB",
"XYZ",
"G96",
"CRD",
"CIF",
"XTL",
"CP2K"), &
1735 "Coordinates read in the &COORD section of the input file", &
1736 "Coordinates provided through a PDB file format", &
1737 "Coordinates provided through an XYZ file format", &
1738 "Coordinates provided through a GROMOS96 file format", &
1739 "Coordinates provided through an AMBER file format", &
1740 "Coordinates provided through a CIF (Crystallographic Information File) file format", &
1741 "Coordinates provided through a XTL (MSI native) file format", &
1742 "Read the coordinates in CP2K &COORD section format from an external file. "// &
1743 "NOTE: This file will be overwritten with the latest coordinates."), &
1748 CALL keyword_create(keyword, __location__, name=
"NUMBER_OF_ATOMS", &
1749 variants=
s2a(
"NATOMS",
"NATOM"), &
1750 description=
"Optionally define the number of atoms read from an external file "// &
1751 "(see COORD_FILE_NAME) if the COORD_FILE_FORMAT CP2K is used", &
1756 usage=
"NATOMS 768000")
1762 CALL keyword_create(keyword, __location__, name=
"DISABLE_EXCLUSION_LISTS", &
1763 description=
"Do not build any exclusion lists.", &
1764 usage=
"DISABLE_EXCLUSION_LISTS", &
1765 default_l_val=.false., lone_keyword_l_val=.true.)
1770 description=
"Specifies which kind of Van der Waals interaction to skip.", &
1771 usage=
"EXCLUDE_VDW (1-1||1-2||1-3||1-4)", &
1772 enum_c_vals=
s2a(
"1-1",
"1-2",
"1-3",
"1-4"), &
1779 description=
"Specifies which kind of Electrostatic interaction to skip.", &
1780 usage=
"EXCLUDE_EI (1-1||1-2||1-3||1-4)", &
1781 enum_c_vals=
s2a(
"1-1",
"1-2",
"1-3",
"1-4"), &
1787 CALL keyword_create(keyword, __location__, name=
"AUTOGEN_EXCLUDE_LISTS", &
1788 description=
"When True, the exclude lists are solely based on"// &
1789 " the bond data in the topology. The (minimal)"// &
1790 " number of bonds between two atoms is used to"// &
1791 " determine if the atom pair is added to an"// &
1792 " exclusion list. When False, 1-2 exclusion is based"// &
1793 " on bonds in the topology, 1-3 exclusion is based"// &
1794 " on bonds and bends in the topology, 1-4 exclusion"// &
1795 " is based on bonds, bends and dihedrals in the"// &
1796 " topology. This implies that a missing dihedral in"// &
1797 " the topology will cause the corresponding 1-4 pair"// &
1798 " not to be in the exclusion list, in case 1-4"// &
1799 " exclusion is requested for VDW or EI interactions.", &
1800 usage=
"AUTOGEN_EXCLUDE_LISTS logical", &
1801 default_l_val=.false., lone_keyword_l_val=.true.)
1806 keyword, __location__, name=
"MULTIPLE_UNIT_CELL", &
1807 description=
"Specifies the numbers of repetition in space (X, Y, Z) of the defined cell, "// &
1808 "assuming it as a unit cell. This keyword affects only the coordinates specification. The same keyword "// &
1809 "in SUBSYS%CELL%MULTIPLE_UNIT_CELL should be modified in order to affect the cell "// &
1810 "specification.", usage=
"MULTIPLE_UNIT_CELL 1 1 1", &
1811 n_var=3, default_i_vals=[1, 1, 1], repeats=.false.)
1815 CALL keyword_create(keyword, __location__, name=
"MEMORY_PROGRESSION_FACTOR", &
1816 description=
"This keyword is quite technical and should normally not be changed by the user. It "// &
1817 "affects the memory allocation during the construction of the topology. It does NOT affect the "// &
1818 "memory used once the topology is built.", &
1819 n_var=1, default_r_val=1.2_dp, repeats=.false.)
1824 description=
"controls the dumping of the PDB at the starting geometry", &
1828 CALL keyword_create(keyword, __location__, name=
"CHARGE_OCCUP", &
1829 variants=[
"CHARGE_O"], &
1830 description=
"Write the MM charges to the OCCUP field of the PDB file", &
1831 usage=
"CHARGE_OCCUP logical", &
1832 default_l_val=.false., lone_keyword_l_val=.true.)
1837 variants=[
"CHARGE_B"], &
1838 description=
"Write the MM charges to the BETA field of the PDB file", &
1839 usage=
"CHARGE_BETA logical", &
1840 default_l_val=.false., lone_keyword_l_val=.true.)
1844 CALL keyword_create(keyword, __location__, name=
"CHARGE_EXTENDED", &
1845 description=
"Write the MM charges to the very last field of the PDB file (starting from column 81)", &
1846 usage=
"CHARGE_EXTENDED logical", &
1847 default_l_val=.false., lone_keyword_l_val=.true.)
1854 description=
"controls the dumping of the PSF connectivity", &
1859 NULLIFY (subsection)
1860 CALL create_exclude_list_section(subsection,
"EXCLUDE_VDW_LIST")
1864 CALL create_exclude_list_section(subsection,
"EXCLUDE_EI_LIST")
1868 CALL create_center_section(subsection)
1872 CALL create_generate_section(subsection)
1876 CALL create_molset_section(subsection)
1880 CALL create_fragments_section(subsection)
1884 END SUBROUTINE create_topology_section
1892 SUBROUTINE create_exclude_list_section(section, header)
1894 CHARACTER(LEN=*),
INTENT(IN) ::
header
1898 cpassert(.NOT.
ASSOCIATED(section))
1901 description=
"Speficy bonds (via atom kinds) for fine tuning of 1-2 "// &
1902 "exclusion lists. If this section is not present the 1-2 exclusion is "// &
1903 "applied to all bond kinds. When this section is present the 1-2 exclusion "// &
1904 "is applied ONLY to the bonds defined herein. This section allows ONLY fine tuning of 1-2 "// &
1906 n_keywords=1, n_subsections=0, repeats=.false.)
1909 description=
"Specify the atom kinds involved in the bond for which 1-2 exclusion holds.", &
1910 usage=
"BOND {KIND1} {KIND2}", type_of_var=
char_t, &
1914 END SUBROUTINE create_exclude_list_section
1921 SUBROUTINE create_center_section(section)
1926 cpassert(.NOT.
ASSOCIATED(section))
1928 CALL section_create(section, __location__,
"CENTER_COORDINATES", &
1929 description=
"Allows centering the coordinates of the system in the box. "// &
1930 "The centering point can be defined by the user.", &
1931 n_keywords=1, n_subsections=0, repeats=.false.)
1933 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1934 description=
"Controls the activation of the centering method", &
1935 usage=
"&CENTER_COORDINATES T", &
1936 default_l_val=.false., &
1937 lone_keyword_l_val=.true.)
1941 CALL keyword_create(keyword, __location__, name=
"CENTER_POINT", &
1942 description=
"Specify the point used for centering the coordinates. Default is to "// &
1943 "center the system in cell/2. ", type_of_var=
real_t, n_var=3, &
1947 END SUBROUTINE create_center_section
1953 SUBROUTINE create_fragments_section(section)
1957 TYPE(
section_type),
POINTER :: subsection, subsubsection
1959 cpassert(.NOT.
ASSOCIATED(section))
1960 NULLIFY (keyword, subsection, subsubsection)
1962 description=
"Specify the fragments of a full system.", &
1963 n_keywords=1, n_subsections=0, repeats=.false.)
1966 description=
"Specify information about the fragments.", &
1967 n_keywords=1, n_subsections=0, repeats=.true.)
1970 name=
"FRAG_RANGE", &
1971 variants=
s2a(
"RANGE"), &
1972 description=
"Defines fragments. This keyword can be repeated.", &
1976 usage=
"FRAG_RANGE 1 5")
1983 END SUBROUTINE create_fragments_section
1990 SUBROUTINE create_molset_section(section)
1994 TYPE(
section_type),
POINTER :: subsection, subsubsection
1996 cpassert(.NOT.
ASSOCIATED(section))
1997 NULLIFY (keyword, subsection, subsubsection)
1999 description=
"Specify the connectivity of a full system specifying the connectivity"// &
2000 " of the fragments of the system.", &
2001 n_keywords=2, n_subsections=0, repeats=.false.)
2005 description=
"Specify information about the connectivity of single molecules", &
2006 n_keywords=2, n_subsections=0, repeats=.true.)
2009 description=
"number of molecules ", &
2010 usage=
"NMOL {integer}", default_i_val=1)
2014 CALL connectivity_framework(subsection,
do_conn_psf)
2019 CALL section_create(subsection, __location__, name=
"MERGE_MOLECULES", &
2020 description=
"Enables the creation of connecting bridges (bonds, angles, torsions, impropers)"// &
2021 " between the two or more molecules defined with independent connectivity.", &
2022 n_keywords=2, n_subsections=0, repeats=.false.)
2025 description=
"Defines new bonds", n_keywords=2, n_subsections=0, repeats=.false.)
2026 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2027 description=
"Two integer indexes per line defining the new bond."// &
2028 " Indexes must be relative to the full system and not to the single molecules", &
2030 usage=
"{Integer} {Integer}", type_of_var=
integer_t, n_var=2)
2036 CALL section_create(subsubsection, __location__, name=
"angles", &
2037 description=
"Defines new angles", n_keywords=2, n_subsections=0, &
2039 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2040 description=
"Three integer indexes per line defining the new angle"// &
2041 " Indexes must be relative to the full system and not to the single molecules", repeats=.true., &
2042 usage=
"{Integer} {Integer} {Integer}", type_of_var=
integer_t, n_var=3)
2048 CALL section_create(subsubsection, __location__, name=
"torsions", &
2049 description=
"Defines new torsions", n_keywords=2, n_subsections=0, &
2051 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2052 description=
"Four integer indexes per line defining the new torsion"// &
2053 " Indexes must be relative to the full system and not to the single molecules", repeats=.true., &
2054 usage=
"{Integer} {Integer} {Integer} {Integer}", type_of_var=
integer_t, n_var=4)
2060 CALL section_create(subsubsection, __location__, name=
"impropers", &
2061 description=
"Defines new impropers", n_keywords=2, n_subsections=0, &
2063 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2064 description=
"Four integer indexes per line defining the new improper"// &
2065 " Indexes must be relative to the full system and not to the single molecules", repeats=.true., &
2066 usage=
"{Integer} {Integer} {Integer} {Integer}", type_of_var=
integer_t, n_var=4)
2075 END SUBROUTINE create_molset_section
2082 SUBROUTINE create_generate_section(section)
2088 cpassert(.NOT.
ASSOCIATED(section))
2089 NULLIFY (keyword, subsection)
2091 description=
"Setup of keywords controlling the generation of the connectivity", &
2092 n_keywords=2, n_subsections=0, repeats=.true.)
2095 description=
"Reorder a list of atomic coordinates into order so it can be packed correctly.", &
2096 usage=
"REORDER <LOGICAL>", &
2097 default_l_val=.false., lone_keyword_l_val=.true.)
2101 CALL keyword_create(keyword, __location__, name=
"CREATE_MOLECULES", &
2102 description=
"Create molecules names and definition. Can be used to override the"// &
2103 " molecules specifications of a possible input connectivity or to create molecules"// &
2104 " specifications for file types as XYZ, missing of molecules definitions.", &
2105 usage=
"CREATE_MOLECULES <LOGICAL>", &
2106 default_l_val=.false., lone_keyword_l_val=.true.)
2111 description=
"Used in conjunction with BONDPARM_FACTOR to "// &
2112 "help determine wheather there is bonding "// &
2113 "between two atoms based on a distance criteria. "// &
2114 "Can use covalent radii information or VDW radii information", &
2115 usage=
"BONDPARM (COVALENT||VDW)", &
2116 enum_c_vals=
s2a(
"COVALENT",
"VDW"), &
2122 CALL keyword_create(keyword, __location__, name=
"BONDPARM_FACTOR", &
2123 description=
"Used in conjunction with BONDPARM to help "// &
2124 "determine wheather there is bonding between "// &
2125 "two atoms based on a distance criteria.", &
2126 usage=
"bondparm_factor {real}", default_r_val=1.1_dp)
2130 CALL keyword_create(keyword, __location__, name=
"BONDLENGTH_MAX", &
2131 description=
"Maximum distance to generate neighbor lists to build connectivity", &
2132 usage=
"BONDLENGTH_MAX <real>", &
2134 unit_str=
"angstrom")
2138 CALL keyword_create(keyword, __location__, name=
"BONDLENGTH_MIN", &
2139 description=
"Minimum distance to generate neighbor lists to build connectivity", &
2140 usage=
"BONDLENGTH_MIN <real>", &
2142 unit_str=
"angstrom")
2148 description=
"Section used to add/remove bonds in the connectivity."// &
2149 " Useful for systems with a complex connectivity, difficult to find out automatically.", &
2150 n_keywords=1, n_subsections=0, repeats=.true.)
2152 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2153 description=
"controls the activation of the bond", &
2154 usage=
"&BOND (ADD|REMOVE)", &
2155 enum_c_vals=
s2a(
"ADD",
"REMOVE"), &
2162 description=
"Specifies two atomic index united by a covalent bond", &
2163 usage=
"ATOMS {integer} {integer}", type_of_var=
integer_t, n_var=2, &
2173 description=
"Section used to add/remove angles in the connectivity."// &
2174 " Useful for systems with a complex connectivity, difficult to find out automatically.", &
2175 n_keywords=1, n_subsections=0, repeats=.true.)
2177 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2178 description=
"controls the activation of the bond", &
2179 usage=
"&ANGLE (ADD|REMOVE)", &
2180 enum_c_vals=
s2a(
"ADD",
"REMOVE"), &
2187 description=
"Specifies two atomic index united by a covalent bond", &
2188 usage=
"ATOMS {integer} {integer} {integer} ", type_of_var=
integer_t, n_var=3, &
2198 description=
"Section used to add/remove torsion in the connectivity."// &
2199 " Useful for systems with a complex connectivity, difficult to find out automatically.", &
2200 n_keywords=1, n_subsections=0, repeats=.true.)
2202 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2203 description=
"controls the activation of the bond", &
2204 usage=
"&TORSION (ADD|REMOVE)", &
2205 enum_c_vals=
s2a(
"ADD",
"REMOVE"), &
2212 description=
"Specifies two atomic index united by a covalent bond", &
2213 usage=
"ATOMS {integer} {integer} {integer} {integer} ", type_of_var=
integer_t, n_var=4, &
2223 description=
"Section used to add/remove improper in the connectivity."// &
2224 " Useful for systems with a complex connectivity, difficult to find out automatically.", &
2225 n_keywords=1, n_subsections=0, repeats=.true.)
2227 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2228 description=
"controls the activation of the bond", &
2229 usage=
"&IMPROPER (ADD|REMOVE)", &
2230 enum_c_vals=
s2a(
"ADD",
"REMOVE"), &
2237 description=
"Specifies two atomic index united by a covalent bond", &
2238 usage=
"ATOMS {integer} {integer} {integer} {integer} ", type_of_var=
integer_t, n_var=4, &
2247 CALL section_create(subsection, __location__, name=
"ISOLATED_ATOMS", &
2248 description=
" This section specifies the atoms that one considers isolated. Useful when present "// &
2249 "ions in solution.", n_keywords=1, n_subsections=0, repeats=.false.)
2251 description=
"Specifies a list of atomic indexes of the isolated ion", &
2252 usage=
"LIST {integer}", type_of_var=
integer_t, n_var=-1, &
2265 CALL create_gen_print_section(subsection)
2269 END SUBROUTINE create_generate_section
2276 SUBROUTINE create_gen_print_section(section)
2281 cpassert(.NOT.
ASSOCIATED(section))
2283 description=
"Section of possible print options in GENERATE code.", &
2284 n_keywords=0, n_subsections=1, repeats=.false.)
2288 description=
"Activates the printing of the neighbor lists used"// &
2290 filename=
"", unit_str=
"angstrom")
2295 description=
"Activates the printing of the subcells used for the "// &
2296 "generation of neighbor lists for connectivity.", &
2301 END SUBROUTINE create_gen_print_section
2309 SUBROUTINE connectivity_framework(section, default)
2311 INTEGER,
INTENT(IN) :: default
2315 cpassert(
ASSOCIATED(section))
2317 CALL keyword_create(keyword, __location__, name=
"CONN_FILE_NAME", &
2318 variants=[
"CONN_FILE"], &
2319 description=
"Specifies the filename that contains the molecular connectivity.", &
2320 usage=
"CONN_FILE_NAME <FILENAME>", type_of_var=
lchar_t)
2324 CALL keyword_create(keyword, __location__, name=
"CONN_FILE_FORMAT", &
2325 variants=[
"CONNECTIVITY"], &
2326 description=
"Ways to determine and generate a molecules. "// &
2327 "Default is to use GENERATE", &
2328 usage=
"CONN_FILE_FORMAT (PSF|UPSF|MOL_SET|GENERATE|OFF|G87|G96|AMBER|USER)", &
2329 enum_c_vals=
s2a(
"PSF",
"UPSF",
"MOL_SET",
"GENERATE",
"OFF",
"G87",
"G96",
"AMBER",
"USER"), &
2339 enum_desc=
s2a(
"Use a PSF file to determine the connectivity."// &
2340 " (support standard CHARMM/XPLOR and EXT CHARMM)", &
2341 "Read a PSF file in an unformatted way (useful for not so standard PSF).", &
2342 "Use multiple PSF (for now...) files to generate the whole system.", &
2343 "Use a simple distance criteria. (Look at keyword BONDPARM)", &
2344 "Do not generate molecules. (e.g. for QS or ill defined systems)", &
2345 "Use GROMOS G87 topology file.", &
2346 "Use GROMOS G96 topology file.", &
2347 "Use AMBER topology file for reading connectivity (compatible starting from AMBER V.7)", &
2348 "Allows the definition of molecules and residues based on the 5th and 6th column of "// &
2349 "the COORD section. This option can be handy for the definition of molecules with QS "// &
2350 "or to save memory in the case of very large systems (use PARA_RES off)."), &
2351 default_i_val=default)
2354 END SUBROUTINE connectivity_framework
2363 SUBROUTINE create_dft_plus_u_section(section)
2370 cpassert(.NOT.
ASSOCIATED(section))
2373 name=
"DFT_PLUS_U", &
2374 description=
"Define the parameters for a DFT+U run", &
2381 name=
"_SECTION_PARAMETERS_", &
2382 description=
"Controls the activation of the DFT+U section", &
2383 usage=
"&DFT_PLUS_U ON", &
2384 default_l_val=.false., &
2385 lone_keyword_l_val=.true.)
2391 description=
"Angular momentum quantum number of the "// &
2392 "orbitals to which the correction is applied", &
2403 variants=[
"U_EFF"], &
2404 description=
"Effective parameter U(eff) = U - J", &
2408 default_r_val=0.0_dp, &
2410 usage=
"U_MINUS_J [eV] 1.4")
2416 description=
"principal quantum number of the "// &
2417 "orbitals to which the correction is applied. Ignored unless pwdft is used for the calculations", &
2428 description=
"U parameter in the theory of Dudarev et al. Ignored unless pwdft is used", &
2432 default_r_val=0.0_dp, &
2440 description=
"J parameter in the theory of Dudarev et al. Ignored unless pwdft is used", &
2444 default_r_val=0.0_dp, &
2452 description=
"alpha parameter in the theory of Dudarev et al. Ignored unless pwdft is used", &
2456 default_r_val=0.0_dp, &
2458 usage=
"alpha [eV] 1.4")
2464 description=
"beta parameter in the theory of Dudarev et al. Ignored unless pwdft is used", &
2468 default_r_val=0.0_dp, &
2470 usage=
"beta [eV] 1.4")
2476 description=
"J0 parameter in the theory of Dudarev et al. Ignored unless pwdft is used", &
2480 default_r_val=0.0_dp, &
2482 usage=
"J0 [eV] 1.4")
2487 name=
"occupation", &
2488 description=
"number of electrons in the hubbard shell. Ignored unless pwdft is used", &
2492 default_r_val=0.0_dp, &
2493 usage=
"occupation 6")
2499 description=
"Increase the effective U parameter stepwise using the specified "// &
2500 "increment until the target value given by U_MINUS_J is reached.", &
2504 default_r_val=0.0_dp, &
2506 usage=
"U_RAMPING [eV] 0.1")
2511 name=
"EPS_U_RAMPING", &
2512 description=
"Threshold value (SCF convergence) for incrementing the effective "// &
2513 "U value when U ramping is active.", &
2517 default_r_val=1.0e-5_dp, &
2518 usage=
"EPS_U_RAMPING 1.0E-6")
2523 name=
"INIT_U_RAMPING_EACH_SCF", &
2524 description=
"Set the initial U ramping value to zero before each wavefunction optimisation. "// &
2525 "The default is to apply U ramping only for the initial wavefunction optimisation.", &
2527 default_l_val=.false., &
2528 lone_keyword_l_val=.true., &
2529 usage=
"INIT_U_RAMPING_EACH_SCF on")
2533 NULLIFY (subsection)
2536 name=
"ENFORCE_OCCUPATION", &
2537 description=
"Enforce and control a special (initial) orbital occupation. "// &
2538 "Note, this feature works only for the methods MULLIKEN and LOWDIN. "// &
2539 "It should only be used to prepare an initial configuration. An "// &
2540 "inadequate parameter choice can easily inhibit SCF convergence.", &
2546 name=
"_SECTION_PARAMETERS_", &
2547 description=
"Controls the activation of the ENFORCE_OCCUPATION section", &
2548 usage=
"&ENFORCE_OCCUPATION ON", &
2549 default_l_val=.false., &
2550 lone_keyword_l_val=.true.)
2555 variants=[
"N_ELECTRONS"], &
2556 description=
"Number of alpha and beta electrons. An occupation (per spin) smaller than 0.5 is ignored.", &
2560 default_r_val=0.0_dp, &
2561 usage=
"NELEC 5.0 4.0")
2568 description=
"Select orbitals and occupation order. An input of 1 to 2*L+1 integer values in "// &
2569 "the range -L to L defining the M values of the spherical orbitals is expected.", &
2574 usage=
"ORBITALS 0 +1 -1")
2580 description=
"The occupation constraint is enforced until this threshold value "// &
2581 "for the SCF convergence criterion is reached", &
2585 default_r_val=1.0e30_dp, &
2586 usage=
"EPS_SCF 0.001")
2592 description=
"The occupation constraint is applied for this number of initial SCF iterations", &
2603 description=
"The occupation constraint is applied with smearing", &
2605 default_l_val=.false., &
2606 lone_keyword_l_val=.true., &
2614 NULLIFY (subsection)
2617 name=
"ATOMIC_PROJECTOR_TENSORIAL", &
2618 description=
"Specifies shell occupations used to generate atomic projector "// &
2619 "functions for tensorial DFT+U.", &
2625 name=
"_SECTION_PARAMETERS_", &
2626 description=
"Controls the activation of the ATOMIC_PROJECTOR_TENSORIAL section", &
2627 usage=
"&ATOMIC_PROJECTOR_TENSORIAL ON", &
2628 default_l_val=.false., &
2629 lone_keyword_l_val=.true.)
2634 name=
"SHELL_CHARGE", &
2635 description=
"Specifies shell-resolved charge offsets used to "// &
2636 "define the reference atomic state for constructing the "// &
2637 "tensorial DFT+U+J projector. The four values correspond to "// &
2638 "the s, p, d, and f shells, respectively. A value of 0.0 "// &
2639 "means that the corresponding shell retains its neutral-atom "// &
2640 "occupation. Positive values remove electrons from a shell, "// &
2641 "whereas negative values add electrons. Fractional values are "// &
2646 default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp], &
2647 usage=
"SHELL_CHARGE 0.0 0.0 1.0 0.0")
2654 NULLIFY (subsection)
2657 name=
"MINIMUM_TRACKING_LINEAR_RESPONSE", &
2658 description=
"Controls the minimum tracking linear response "// &
2659 "procedure used to compute Hubbard U and Hund's J parameters. "// &
2660 "In this approach, a localized perturbation is applied to a "// &
2661 "selected +U +J subspace located on the specific atom "// &
2662 "and the response of the subspace averaged Hartree+XC interactions "// &
2663 "with respect to the perturbation is calculated as the U and J values.", &
2669 name=
"_SECTION_PARAMETERS_", &
2670 description=
"Enables or disables the MINIMUM_TRACKING_LINEAR_RESPONSE "// &
2672 usage=
"&MINIMUM_TRACKING_LINEAR_RESPONSE ON", &
2673 default_l_val=.false., &
2674 lone_keyword_l_val=.true.)
2679 name=
"INDEX_PERTURBED_ATOM", &
2680 description=
"Index of the atom to which the perturbing potential "// &
2681 "is applied in the minimum-tracking linear-response "// &
2682 "calculation. The index is the order of atoms in "// &
2683 "the full structure.", &
2688 usage=
"INDEX_PERTURBED_ATOM 5")
2693 name=
"PERTURBATION_STRENGTH", &
2694 description=
"Specifies the list of perturbation strengths used "// &
2695 "in the minimum tracking linear response calculation of U and J "// &
2696 "parameters. Each value defines the magnitude of an applied "// &
2697 "constraining potential in a separate perturbation calculation. "// &
2698 "If no unit is given, values are interpreted in hartree "// &
2699 "(atomic units). Explicit units such as [eV] may be provided "// &
2700 "in the input. At least 3 and at most 9 values must be given.", &
2704 unit_str=
"hartree", &
2711 usage=
"PERTURBATION_STRENGTH [eV] -0.20 -0.10 0.00 0.10 0.20")
2718 END SUBROUTINE create_dft_plus_u_section
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public guidon2010
integer, save, public goedecker1996
integer, save, public vandevondele2005a
integer, save, public vandevondele2007
integer, save, public hartwigsen1998
integer, save, public krack2005
Handles all functions related to the CELL.
integer, parameter, public use_perd_xyz
integer, parameter, public cell_sym_monoclinic
integer, parameter, public use_perd_y
integer, parameter, public cell_sym_triclinic
integer, parameter, public cell_sym_tetragonal_ab
integer, parameter, public use_perd_xz
integer, parameter, public cell_sym_rhombohedral
integer, parameter, public use_perd_x
integer, parameter, public cell_sym_tetragonal_ac
integer, parameter, public use_perd_z
integer, parameter, public use_perd_yz
integer, parameter, public use_perd_none
integer, parameter, public cell_sym_hexagonal_gamma_60
integer, parameter, public cell_sym_orthorhombic
integer, parameter, public cell_sym_none
integer, parameter, public cell_sym_hexagonal_gamma_120
integer, parameter, public cell_sym_monoclinic_gamma_ab
integer, parameter, public cell_sym_cubic
integer, parameter, public use_perd_xy
integer, parameter, public cell_sym_tetragonal_bc
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer, parameter, public debug_print_level
integer, parameter, public medium_print_level
integer, parameter, public high_print_level
subroutine, public cp_print_key_section_create(print_key_section, location, name, description, print_level, each_iter_names, each_iter_values, add_last, filename, common_iter_levels, citations, unit_str)
creates a print_key section
real(kind=dp) function, public cp_unit_to_cp2k(value, unit_str, defaults, power)
converts to the internal cp2k units to the given unit
Defines the basic variable types.
integer, parameter, public dp
Definition of physical constants:
real(kind=dp), parameter, public bohr
Utilities for string manipulations.
character(len=1), parameter, public newline