54 create_velocity_section
72#include "../base/base_uses.f90"
77 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
78 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_motion'
94 cpassert(.NOT.
ASSOCIATED(section))
96 description=
"This section defines a set of tool connected with the motion of the nuclei.", &
97 n_keywords=1, n_subsections=1, repeats=.false.)
101 CALL create_geoopt_section(subsection, __location__, label=
"GEO_OPT", &
102 description=
"This section sets the environment of the geometry optimizer.", &
103 just_optimizers=.false., &
104 use_model_hessian=.true.)
108 CALL create_cell_opt_section(subsection)
112 CALL create_shellcore_opt_section(subsection)
120 CALL create_driver_section(subsection)
132 CALL create_fp_section(subsection)
136 CALL create_mc_section(subsection)
144 CALL create_pint_section(subsection)
163 SUBROUTINE create_mc_section(section)
169 cpassert(.NOT.
ASSOCIATED(section))
171 description=
"This section sets parameters to set up a MonteCarlo calculation.", &
172 n_keywords=10, n_subsections=2, repeats=.false.)
174 NULLIFY (keyword, subsection)
177 description=
"Specifies the number of MC cycles.", &
178 usage=
"NSTEP {integer}", &
184 description=
"Prints coordinate/cell/etc information every IPRINT steps.", &
185 usage=
"IPRINT {integer}", &
191 description=
"Specifies the number of classical moves between energy evaluations. ", &
192 usage=
"NMOVES {integer}", &
198 description=
"How many insertions to try per swap move.", &
199 usage=
"NSWAPMOVES {integer}", &
205 description=
"Dictates if we presample moves with a different potential.", &
206 usage=
"LBIAS {logical}", &
207 default_l_val=.false.)
212 description=
"Makes nstep in terms of steps, instead of cycles.", &
213 usage=
"LSTOP {logical}", &
214 default_l_val=.false.)
219 description=
"Changes the volume of the box in discrete steps, one side at a time.", &
220 usage=
"LDISCRETE {logical}", &
221 default_l_val=.false.)
226 description=
"The cluster cut off radius in angstroms.", &
227 usage=
"RCLUS {real}", &
228 default_r_val=1.0e0_dp)
233 description=
"Read initial configuration from restart file.", &
234 usage=
"RESTART {logical}", &
235 default_l_val=.false.)
240 keyword, __location__, name=
"NVIRIAL", &
241 description=
"Use this many random orientations to compute the second virial coefficient (ENSEMBLE=VIRIAL)", &
242 usage=
"NVIRIAL {integer}", &
248 description=
"Specify the type of simulation", &
249 usage=
"ENSEMBLE (TRADITIONAL|GEMC_NVT|GEMC_NPT|VIRIAL)", &
250 enum_c_vals=
s2a(
"TRADITIONAL",
"GEMC_NVT",
"GEMC_NPT",
"VIRIAL"), &
256 CALL keyword_create(keyword, __location__, name=
"RESTART_FILE_NAME", &
257 description=
"Name of the restart file for MC information.", &
258 usage=
"RESTART_FILE_NAME {filename}", &
263 CALL keyword_create(keyword, __location__, name=
"MOVES_FILE_NAME", &
264 description=
"The file to print the move statistics to.", &
265 usage=
"MOVES_FILE_NAME {filename}", &
270 CALL keyword_create(keyword, __location__, name=
"MOLECULES_FILE_NAME", &
271 description=
"The file to print the number of molecules to.", &
272 usage=
"MOLECULES_FILE_NAME {filename}", &
277 CALL keyword_create(keyword, __location__, name=
"COORDINATE_FILE_NAME", &
278 description=
"The file to print the current coordinates to.", &
279 usage=
"COORDINATE_FILE_NAME {filename}", &
284 CALL keyword_create(keyword, __location__, name=
"ENERGY_FILE_NAME", &
285 description=
"The file to print current energies to.", &
286 usage=
"ENERGY_FILE_NAME {filename}", &
291 CALL keyword_create(keyword, __location__, name=
"DATA_FILE_NAME", &
292 description=
"The file to print current configurational info to.", &
293 usage=
"DATA_FILE_NAME {filename}", &
298 CALL keyword_create(keyword, __location__, name=
"CELL_FILE_NAME", &
299 description=
"The file to print current cell length info to.", &
300 usage=
"CELL_FILE_NAME {filename}", &
305 CALL keyword_create(keyword, __location__, name=
"MAX_DISP_FILE_NAME", &
306 description=
"The file to print current maximum displacement info to.", &
307 usage=
"MAX_DISP_FILE_NAME {filename}", &
312 CALL keyword_create(keyword, __location__, name=
"BOX2_FILE_NAME", &
313 description=
"For GEMC, the name of the input file for the other box.", &
314 usage=
"BOX2_FILE_NAME {filename}", &
320 description=
"The pressure for NpT simulations, in bar.", &
321 usage=
"PRESSURE {real}", &
327 description=
"The temperature of the simulation, in Kelvin.", &
328 usage=
"TEMPERATURE {real}", &
334 keyword, __location__, name=
"VIRIAL_TEMPS", &
335 description=
"The temperatures you wish to compute the virial coefficient for. Only used if ensemble=VIRIAL.", &
336 usage=
"VIRIAL_TEMPS {real} {real} ... ", &
337 n_var=-1, type_of_var=
real_t)
341 CALL keyword_create(keyword, __location__, name=
"DISCRETE_STEP", &
342 description=
"The size of the discrete volume move step, in angstroms.", &
343 usage=
"DISCRETE_STEP {real}", &
344 default_r_val=1.0e0_dp)
349 description=
"The free energy bias (in Kelvin) for swapping a molecule of each type into this box.", &
350 usage=
"ETA {real} {real} ... ", &
351 n_var=-1, type_of_var=
real_t)
356 description=
"Number of random numbers from the acceptance/rejection stream to skip", &
357 usage=
"RANDOMTOSKIP {integer}", &
362 CALL create_avbmc_section(subsection)
366 CALL create_move_prob_section(subsection)
370 CALL create_update_section(subsection)
374 CALL create_max_disp_section(subsection)
378 END SUBROUTINE create_mc_section
385 SUBROUTINE create_avbmc_section(section)
390 cpassert(.NOT.
ASSOCIATED(section))
393 description=
"Parameters for Aggregation Volume Bias Monte Carlo (AVBMC) "// &
394 "which explores cluster formation and destruction. "// &
395 "Chen and Siepmann, J. Phys. Chem. B 105, 11275-11282 (2001).", &
396 n_keywords=5, n_subsections=0, repeats=.false.)
401 keyword, __location__, name=
"PBIAS", &
402 description=
"The probability of swapping to an inner region in an AVBMC swap move for each molecule type.", &
403 usage=
"PBIAS {real} {real} ... ", &
404 n_var=-1, type_of_var=
real_t)
409 description=
"The target atom for an AVBMC swap move for each molecule type.", &
410 usage=
"AVBMC_ATOM {integer} {integer} ... ", &
416 description=
"The inner radius for an AVBMC swap move, in angstroms for every molecule type.", &
417 usage=
"AVBMC_RMIN {real} {real} ... ", &
418 n_var=-1, type_of_var=
real_t)
423 description=
"The outer radius for an AVBMC swap move, in angstroms, for every molecule type.", &
424 usage=
"AVBMC_RMAX {real} {real} ... ", &
425 n_var=-1, type_of_var=
real_t)
429 END SUBROUTINE create_avbmc_section
437 SUBROUTINE create_move_prob_section(section)
443 cpassert(.NOT.
ASSOCIATED(section))
445 CALL section_create(section, __location__, name=
"move_probabilities", &
446 description=
"Parameters for fraction of moves performed for each move type.", &
447 n_keywords=5, n_subsections=2, repeats=.false.)
449 NULLIFY (keyword, subsection)
452 description=
"The probability of attempting a hybrid MC move.", &
453 usage=
"PMHMC {real}", &
454 type_of_var=
real_t, default_r_val=0.0e0_dp)
459 description=
"The probability of attempting a molecule translation.", &
460 usage=
"PMTRANS {real}", &
466 description=
"The probability of attempting a cluster translation.", &
467 usage=
"PMCLTRANS {real}", &
468 type_of_var=
real_t, default_r_val=0.0e0_dp)
473 description=
"The probability of attempting an AVBMC swap move.", &
474 usage=
"PMAVBMC {real}", &
475 default_r_val=0.0e0_dp)
480 description=
"The probability of attempting a conformational change.", &
481 usage=
"PMTRAION {real}", &
487 description=
"The probability of attempting a swap move.", &
488 usage=
"PMSWAP {real}", &
489 type_of_var=
real_t, default_r_val=0.0e0_dp)
494 description=
"The probability of attempting a volume move.", &
495 usage=
"PMVOLUME {real}", &
496 type_of_var=
real_t, default_r_val=0.0e0_dp)
500 CALL create_mol_prob_section(subsection)
504 CALL create_box_prob_section(subsection)
508 END SUBROUTINE create_move_prob_section
516 SUBROUTINE create_mol_prob_section(section)
521 cpassert(.NOT.
ASSOCIATED(section))
523 CALL section_create(section, __location__, name=
"mol_probabilities", &
524 description=
"Probabilities of attempting various moves types on "// &
525 "the various molecular types present in the simulation.", &
526 n_keywords=5, n_subsections=0, repeats=.false.)
531 description=
"The probability of attempting an AVBMC swap move on each molecule type.", &
532 usage=
"PMAVBMC_MOL {real} {real} ... ", &
533 n_var=-1, type_of_var=
real_t)
538 description=
"The probability of attempting a molecule swap of a given molecule type.", &
539 usage=
"PMSWAP_MOL {real} {real} ... ", &
540 n_var=-1, type_of_var=
real_t)
545 description=
"The probability of attempting a molecule rotation of a given molecule type.", &
546 usage=
"PMROT_MOL {real} {real} ... ", &
547 n_var=-1, type_of_var=
real_t)
552 description=
"The probability of attempting a conformational change of a given molecule type.", &
553 usage=
"PMTRAION_MOL {real} {real} ... ", &
554 n_var=-1, type_of_var=
real_t)
559 description=
"The probability of attempting a molecule translation of a given molecule type.", &
560 usage=
"PMTRANS_MOL {real} {real} ... ", &
561 n_var=-1, type_of_var=
real_t)
565 END SUBROUTINE create_mol_prob_section
573 SUBROUTINE create_box_prob_section(section)
578 cpassert(.NOT.
ASSOCIATED(section))
580 CALL section_create(section, __location__, name=
"BOX_PROBABILITIES", &
581 description=
"Probabilities of attempting various moves types on "// &
583 n_keywords=2, n_subsections=0, repeats=.false.)
588 description=
"The probability of attempting a HMC move on this box.", &
589 usage=
"PMHMC_BOX {real}", &
590 type_of_var=
real_t, default_r_val=1.0e0_dp)
595 description=
"The probability of attempting a volume move on this box (GEMC_NpT).", &
596 usage=
"PMVOL_BOX {real}", &
597 type_of_var=
real_t, default_r_val=1.0e0_dp)
602 description=
"The probability of attempting a cluster move in this box", &
603 usage=
"PMCLUS_BOX {real}", &
604 type_of_var=
real_t, default_r_val=1.0e0_dp)
608 END SUBROUTINE create_box_prob_section
616 SUBROUTINE create_update_section(section)
621 cpassert(.NOT.
ASSOCIATED(section))
624 description=
"Frequency for updating move maximum displacements.", &
625 n_keywords=2, n_subsections=0, repeats=.false.)
630 description=
"Every iupvolume steps update maximum volume displacement.", &
631 usage=
"IUPVOLUME {integer}", &
637 description=
"Every iuptrans steps update maximum "// &
638 "translation/rotation/configurational changes.", &
639 usage=
"IUPTRANS {integer}", &
645 description=
"Every iupcltrans steps update maximum cluster translation.", &
646 usage=
"IUPCLTRANS {integer}", &
651 END SUBROUTINE create_update_section
658 SUBROUTINE create_max_disp_section(section)
663 cpassert(.NOT.
ASSOCIATED(section))
665 CALL section_create(section, __location__, name=
"max_displacements", &
666 description=
"The maximum displacements for all attempted moves.", &
667 n_keywords=1, n_subsections=2, repeats=.false.)
671 CALL create_mol_disp_section(subsection)
675 CALL create_box_disp_section(subsection)
679 END SUBROUTINE create_max_disp_section
687 SUBROUTINE create_mol_disp_section(section)
692 cpassert(.NOT.
ASSOCIATED(section))
694 CALL section_create(section, __location__, name=
"mol_displacements", &
695 description=
"Maximum displacements for every move type that requires "// &
696 "a value for each molecular type in the simulation.", &
697 n_keywords=5, n_subsections=0, repeats=.false.)
702 description=
"Maximum bond length displacement, in angstroms, for each molecule type.", &
703 usage=
"RMBOND {real} {real} ... ", &
704 n_var=-1, type_of_var=
real_t)
709 description=
"Maximum bond angle displacement, in degrees, for each molecule type.", &
710 usage=
"RMANGLE {real} {real} ...", &
711 n_var=-1, type_of_var=
real_t)
716 description=
"Maximum dihedral angle distplacement, in degrees, for each molecule type.", &
717 usage=
"RMDIHEDRAL {real} {real} ... ", &
718 n_var=-1, type_of_var=
real_t)
723 description=
"Maximum rotational displacement, in degrees, for each molecule type.", &
724 usage=
"RMROT {real} {real} ... ", &
725 n_var=-1, type_of_var=
real_t)
730 description=
"Maximum translational displacement, in angstroms, for each molecule type.", &
731 usage=
"RMTRANS {real} {real} ...", &
732 n_var=-1, type_of_var=
real_t)
736 END SUBROUTINE create_mol_disp_section
744 SUBROUTINE create_box_disp_section(section)
749 cpassert(.NOT.
ASSOCIATED(section))
751 CALL section_create(section, __location__, name=
"BOX_DISPLACEMENTS", &
752 description=
"Maximum displacements for any move that is performed on each"// &
753 " simulation box.", &
754 n_keywords=1, n_subsections=0, repeats=.false.)
759 description=
"Maximum volume displacement, in angstrom**3.", &
760 usage=
"RMVOLUME {real}", &
766 description=
"Maximum translational displacement, in angstroms, for each cluster.", &
767 usage=
"RMCLTRANS {real}", &
768 default_r_val=1.0e0_dp)
772 END SUBROUTINE create_box_disp_section
786 RECURSIVE SUBROUTINE create_geoopt_section(section, location, label, description, just_optimizers, use_model_hessian)
788 CHARACTER(LEN=*),
INTENT(IN) :: location, label, description
789 LOGICAL,
INTENT(IN) :: just_optimizers, use_model_hessian
794 cpassert(.NOT.
ASSOCIATED(section))
795 CALL section_create(section, location=location, name=label, description=description, &
796 n_keywords=1, n_subsections=1, repeats=.false.)
799 IF (.NOT. just_optimizers)
THEN
801 description=
"Specify which kind of geometry optimization to perform", &
802 usage=
"TYPE (MINIMIZATION|TRANSITION_STATE)", &
803 enum_c_vals=
s2a(
"MINIMIZATION",
"TRANSITION_STATE"), &
804 enum_desc=
s2a(
"Performs a geometry minimization.", &
805 "Performs a transition state optimization."), &
813 keyword, __location__, name=
"OPTIMIZER", &
814 variants=[
"MINIMIZER"], &
816 description=
"Specify which method to use to perform a geometry optimization.", &
817 usage=
"OPTIMIZER {BFGS|LBFGS|CG}", &
818 enum_c_vals=
s2a(
"BFGS",
"LBFGS",
"CG"), &
819 enum_desc=
s2a(
"Most efficient minimizer, but only for 'small' systems, "// &
820 "as it relies on diagonalization of a full Hessian matrix", &
821 "Limited-memory variant of BFGS suitable for large systems. "// &
822 "Not as well fine-tuned but can be more robust.", &
823 "conjugate gradients, robust minimizer (depending on the line search) also OK for large systems"), &
830 description=
"Specifies the maximum number of geometry optimization steps. "// &
831 "One step might imply several force evaluations for the CG and LBFGS optimizers.", &
832 usage=
"MAX_ITER {integer}", &
838 description=
"Convergence criterion for the maximum geometry change "// &
839 "between the current and the last optimizer iteration.", &
840 usage=
"MAX_DR {real}", &
841 default_r_val=0.0030_dp, unit_str=
"bohr")
846 description=
"Convergence criterion for the maximum force component of the current configuration.", &
847 usage=
"MAX_FORCE {real}", &
848 default_r_val=0.00045_dp, unit_str=
"hartree/bohr")
853 description=
"Convergence criterion for the root mean square (RMS) geometry"// &
854 " change between the current and the last optimizer iteration.", &
855 usage=
"RMS_DR {real}", unit_str=
"bohr", &
856 default_r_val=0.0015_dp)
861 description=
"Convergence criterion for the root mean square (RMS) force of the current configuration.", &
862 usage=
"RMS_FORCE {real}", unit_str=
"hartree/bohr", &
863 default_r_val=0.00030_dp)
867 CALL keyword_create(keyword, __location__, name=
"step_start_val", &
868 description=
"The starting step value for the "//trim(label)//
" module.", &
869 usage=
"step_start_val <integer>", default_i_val=0)
875 keyword, __location__, name=
"KEEP_SPACE_GROUP", &
876 description=
"Detect space group of the system and preserve it during optimization. "// &
877 "The space group symmetry is applied to coordinates, forces, and the stress tensor. "// &
878 "It works for supercell. It does not affect/reduce computational cost. "// &
879 "Use EPS_SYMMETRY to adjust the detection threshold.", &
880 usage=
"KEEP_SPACE_GROUP .TRUE.", &
881 default_l_val=.false., lone_keyword_l_val=.true., repeats=.false.)
887 keyword, __location__, name=
"SHOW_SPACE_GROUP", &
888 description=
"Detect and show space group of the system after optimization. "// &
889 "It works for supercell. It does not affect/reduce computational cost. "// &
890 "Use EPS_SYMMETRY to adjust the detection threshold.", &
891 usage=
"SHOW_SPACE_GROUP .TRUE.", &
892 default_l_val=.false., lone_keyword_l_val=.true., repeats=.false.)
898 keyword, __location__, name=
"EPS_SYMMETRY", &
899 description=
"Accuracy for space group determination. EPS_SYMMETRY is dimensionless. "// &
900 "Roughly speaking, two scaled (fractional) atomic positions v1, v2 are considered identical if |v1 - v2| < EPS_SYMMETRY. ", &
901 usage=
"EPS_SYMMETRY {REAL}", &
902 default_r_val=1.e-4_dp, repeats=.false.)
908 keyword, __location__, name=
"SYMM_REDUCTION", &
909 description=
"Direction of the external static electric field. "// &
910 "Some symmetry operations are not compatible with the direction of an electric field. "// &
911 "These operations are used when enforcing the space group.", &
912 usage=
"SYMM_REDUCTION 0.0 0.0 0.0", &
913 repeats=.false., n_var=3, &
914 type_of_var=
real_t, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp])
920 keyword, __location__, name=
"SYMM_EXCLUDE_RANGE", &
921 description=
"Range of atoms to exclude from space group symmetry. "// &
922 "These atoms are excluded from both identification and enforcement. "// &
923 "This keyword can be repeated.", &
924 repeats=.true., usage=
"SYMM_EXCLUDE_RANGE {Int} {Int}", type_of_var=
integer_t, n_var=2)
929 keyword, __location__, name=
"SPGR_PRINT_ATOMS", &
930 description=
"Print equivalent atoms list for each space group symmetry operation.", &
931 default_l_val=.false., lone_keyword_l_val=.true.)
935 CALL create_lbfgs_section(subsection)
939 CALL create_cg_section(subsection)
943 CALL create_bfgs_section(subsection, use_model_hessian)
947 IF (.NOT. just_optimizers)
THEN
949 CALL create_ts_section(subsection)
956 description=
"Controls the printing properties during a geometry optimization run", &
957 n_keywords=0, n_subsections=1, repeats=.true.)
960 print_key, __location__,
"program_run_info", &
961 description=
"Controls the printing of basic information during the Geometry Optimization", &
969 END SUBROUTINE create_geoopt_section
976 SUBROUTINE create_shellcore_opt_section(section)
981 CALL create_geoopt_section( &
982 section, __location__, label=
"SHELL_OPT", &
983 description=
"This section sets the environment for the optimization of the shell-core distances"// &
984 " that might turn to be necessary along a MD run using a shell-model potential."// &
985 " The optimization procedure is activated when at least one of the shell-core"// &
986 " pairs becomes too elongated, i.e. when the assumption of point dipole is not longer valid.", &
987 just_optimizers=.true., &
988 use_model_hessian=.false.)
990 NULLIFY (print_key, subsection)
995 description=
"Controls the printing properties during a shell-core optimization procedure", &
996 n_keywords=0, n_subsections=1, repeats=.true.)
999 description=
"Controls the printing of basic information during the Optimization", &
1006 END SUBROUTINE create_shellcore_opt_section
1013 SUBROUTINE create_cell_opt_section(section)
1019 CALL create_geoopt_section(section, __location__, label=
"CELL_OPT", &
1020 description=
"This section sets the environment for the optimization "// &
1021 "of the simulation cell. As is noted in FORCE_EVAL/SUBSYS/CELL, the "// &
1022 "program convention is that the first cell vector A lies along the "// &
1023 "X-axis and the second cell vector B is in the XY plane, such that "// &
1024 "the cell vector matrix is a lower triangle. There is no complete, "// &
1025 "official algorithm support and/or tests for updating the three "// &
1026 "upper triangular components during a cell optimization; please "// &
1027 "prepare input accordingly with these three components precisely 0 "// &
1028 "even for cases like the primitive rhombohedral cell of the FCC lattice.", &
1029 just_optimizers=.true., use_model_hessian=.false.)
1031 NULLIFY (keyword, print_key, subsection)
1033 keyword, __location__, name=
"TYPE", removed=.true., description=
"", &
1034 deprecation_notice=
"The keyword MOTION/CELL_OPT/TYPE has been removed because "// &
1035 "cell optimizations now always use DIRECT_CELL_OPT.", &
1036 enum_c_vals=
s2a(
"DIRECT_CELL_OPT",
"GEO_OPT",
"MD"), &
1037 enum_i_vals=[1, 2, 3], default_i_val=1)
1042 keyword, __location__, name=
"EXTERNAL_PRESSURE", &
1043 description=
"Specifies the external pressure (1 value or the full 9 components of the pressure tensor) "// &
1044 "applied during the cell optimization.", &
1045 usage=
"EXTERNAL_PRESSURE {REAL} .. {REAL}", unit_str=
"bar", &
1053 description=
"Keep the volume of the cell constant during cell optimization. "// &
1054 "This is implemented by comparing the cell volumes and scaling the new "// &
1055 "cell vectors just before updating the cell information, and can be "// &
1056 "used together with KEEP_ANGLES or KEEP_SYMMETRY.", &
1057 usage=
"KEEP_VOLUME TRUE", default_l_val=.false., lone_keyword_l_val=.true.)
1062 description=
"Keep angles between the cell vectors constant, but "// &
1063 "allow the lengths of the cell vectors to change independently "// &
1064 "during cell optimization. This is implemented by projecting out "// &
1065 "the components of angles in the cell gradient before the cell "// &
1066 "is updated. Albeit general, this is most useful for triclinic "// &
1067 "cells; to enforce higher symmetry, see KEEP_SYMMETRY.", &
1068 usage=
"KEEP_ANGLES TRUE", default_l_val=.false., lone_keyword_l_val=.true.)
1072 CALL keyword_create(keyword, __location__, name=
"KEEP_SYMMETRY", &
1073 description=
"Keep the requested initial cell symmetry as specified "// &
1074 "in the FORCE_EVAL/SUBSYS/CELL section during cell optimization. "// &
1075 "This is implemented by removing symmetry-breaking components and "// &
1076 "taking averages of components if necessary in the cell gradient "// &
1077 "before the cell is updated. To enforce the space group (which "// &
1078 "requires spglib package), see KEEP_SPACE_GROUP.", &
1079 usage=
"KEEP_SYMMETRY TRUE", default_l_val=.false., lone_keyword_l_val=.true.)
1084 keyword, __location__, name=
"CONSTRAINT", &
1085 description=
"Imposes a constraint on the pressure tensor by fixing the specified cell components.", &
1086 usage=
"CONSTRAINT (none|x|y|z|xy|xz|yz)", &
1087 enum_desc=
s2a(
"Fix nothing", &
1088 "Fix only x component", &
1089 "Fix only y component", &
1090 "Fix only z component", &
1091 "Fix x and y component", &
1092 "Fix x and z component", &
1093 "Fix y and z component"), &
1094 enum_c_vals=
s2a(
"NONE",
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ"), &
1100 CALL keyword_create(keyword, __location__, name=
"PRESSURE_TOLERANCE", &
1101 description=
"Specifies the Pressure tolerance (compared to the external pressure) to achieve "// &
1102 "during the cell optimization.", &
1103 usage=
"PRESSURE_TOLERANCE {REAL}", unit_str=
"bar", &
1109 NULLIFY (subsection)
1111 description=
"Controls the printing properties during a geometry optimization run", &
1112 n_keywords=0, n_subsections=1, repeats=.true.)
1115 description=
"Controls the printing of basic information during the Geometry Optimization", &
1120 description=
"Controls the printing of the cell eveytime a calculation using a new cell is started.", &
1122 unit_str=
"angstrom")
1128 END SUBROUTINE create_cell_opt_section
1135 SUBROUTINE create_ts_section(section)
1139 TYPE(
section_type),
POINTER :: print_key, subsection, subsection2, &
1144 NULLIFY (section, keyword, subsection, subsection2)
1145 CALL section_create(section, __location__, name=
"TRANSITION_STATE", &
1146 description=
"Specifies parameters to perform a transition state search", &
1147 n_keywords=0, n_subsections=1, repeats=.false.)
1150 description=
"Specify which kind of method to use for locating transition states", &
1152 usage=
"METHOD (DIMER)", &
1153 enum_c_vals=
s2a(
"DIMER"), &
1154 enum_desc=
s2a(
"Uses the dimer method to optimize transition states."), &
1161 description=
"Specifies parameters for Dimer Method", &
1162 n_keywords=0, n_subsections=1, repeats=.false.)
1165 description=
"This keyword sets the value for the DR parameter.", &
1166 usage=
"DR {real}", unit_str=
'angstrom', &
1171 CALL keyword_create(keyword, __location__, name=
"INITIALIZATION_METHOD", &
1172 description=
"Specify the initialization method of the dimer vector, "// &
1173 "which is crucial for converging to the desired transition state. "// &
1174 "If the DIMER_VECTOR section is defined explicitly, it will always "// &
1175 "be parsed directly (e.g. in restart files); INITIALIZATION_METHOD "// &
1176 "is only effective if the DIMER_VECTOR section is not explicit.", &
1177 usage=
"INITIALIZATION_METHOD (RANDOM|MOLDEN)", &
1178 enum_desc=
s2a(
"Generate the initial dimer vector randomly. This is "// &
1179 "the default for backwards compatibility; in practice "// &
1180 "it may distort the structure and slow down convergence.", &
1181 "Generate the initial dimer vector from one or more "// &
1182 "vibrational normal modes as read from a MOLDEN file "// &
1183 "produced by `VIBRATIONAL_ANALYSIS%PRINT%MOLDEN_VIB` "// &
1184 "in a vibrational analysis task. Requires setting up "// &
1185 "keywords `VIB_MOLDEN_NAME`, `VIB_INDEX` and `VIB_WEIGHT`."), &
1186 enum_c_vals=
s2a(
"RANDOM",
"MOLDEN"), &
1192 CALL keyword_create(keyword, __location__, name=
"VIB_MOLDEN_NAME", &
1193 description=
"The external molden file containing vibrational "// &
1194 "normal modes for `INITIALIZATION_METHOD MOLDEN`.", &
1195 usage=
"VIB_MOLDEN_NAME <CHARACTER>", type_of_var=
lchar_t)
1200 description=
"The index of one or more vibrational normal modes "// &
1201 "from the file whose linear combination will form the initial "// &
1203 usage=
"VIB_INDEX {integer} {integer} .. {integer}", repeats=.true., &
1204 n_var=-1, default_i_vals=[1], type_of_var=
integer_t)
1209 description=
"The weight of one or more vibrational normal modes "// &
1210 "from the file whose linear combination will form the initial "// &
1212 usage=
"VIB_WEIGHT {real} {real} .. {real}", repeats=.true., &
1213 n_var=-1, default_r_vals=[1.0_dp], type_of_var=
real_t)
1217 CALL keyword_create(keyword, __location__, name=
"INTERPOLATE_GRADIENT", &
1218 description=
"This keyword controls the interpolation of the gradient whenever possible"// &
1219 " during the optimization of the Dimer. The use of this keywords saves 1 evaluation"// &
1220 " of energy/forces.", usage=
"INTERPOLATE_GRADIENT {logical}", default_l_val=.true., &
1221 lone_keyword_l_val=.true.)
1225 CALL keyword_create(keyword, __location__, name=
"ANGLE_TOLERANCE", &
1226 description=
"This keyword sets the value of the tolerance angle for the line search"// &
1227 " performed to optimize the orientation of the dimer.", &
1228 usage=
"ANGLE_TOLERANCE {real}", unit_str=
'rad', &
1234 description=
"This keyword activates the constrained k-dimer translation"// &
1235 " J. Chem. Phys. 141, 164111 (2014).", &
1237 usage=
"K-DIMER {logica}", &
1238 default_l_val=.false., &
1239 lone_keyword_l_val=.false.)
1244 description=
"Exponential factor for the switching function used in K-DIMER", &
1245 usage=
"BETA {real}", &
1246 default_r_val=5.0_dp, &
1247 lone_keyword_r_val=5.0_dp)
1251 CALL create_geoopt_section( &
1252 subsection2, __location__, label=
"ROT_OPT", &
1253 description=
"This section sets the environment for the optimization of the rotation of the Dimer.", &
1254 just_optimizers=.true., &
1255 use_model_hessian=.false.)
1256 NULLIFY (subsection3)
1258 description=
"Controls the printing properties during the dimer rotation optimization run", &
1259 n_keywords=0, n_subsections=1, repeats=.true.)
1263 description=
"Controls the printing of basic information during the Geometry Optimization", &
1269 description=
"Controls the printing basic info during the cleaning of the "// &
1273 description=
"Prints atomic coordinates after rotation", &
1274 default_l_val=.false., lone_keyword_l_val=.true.)
1285 CALL section_create(subsection2, __location__, name=
"DIMER_VECTOR", &
1286 description=
"Specifies the initial dimer vector. This "// &
1287 "section overrides INITIALIZATION_METHOD, and will be "// &
1288 "updated on each step for producing the restart files.", &
1289 n_keywords=0, n_subsections=1, repeats=.false.)
1290 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1291 description=
"Specify on each line the components of the dimer vector.", repeats=.true., &
1292 usage=
"{Real} {Real} {Real}", type_of_var=
real_t, n_var=-1)
1301 END SUBROUTINE create_ts_section
1309 SUBROUTINE create_bfgs_section(section, use_model_hessian)
1311 LOGICAL,
INTENT(IN) :: use_model_hessian
1318 NULLIFY (section, keyword, print_key)
1320 description=
"Provides parameters to tune the BFGS optimization", &
1321 n_keywords=0, n_subsections=1, repeats=.false.)
1323 CALL keyword_create(keyword, __location__, name=
"TRUST_RADIUS", &
1324 description=
"Trust radius used in BFGS. Previously set to 0.1. "// &
1325 "Large values can lead to instabilities", &
1326 usage=
"TRUST_RADIUS {real}", unit_str=
'angstrom', &
1331 CALL keyword_create(keyword, __location__, name=
"USE_MODEL_HESSIAN", &
1332 description=
"Uses a model Hessian as initial guess instead of a unit matrix."// &
1333 " Should lead in general to improved convergence might be switched off for exotic cases", &
1334 usage=
"USE_MODEL_HESSIAN", &
1336 default_l_val=use_model_hessian, lone_keyword_l_val=.true.)
1340 CALL keyword_create(keyword, __location__, name=
"USE_RAT_FUN_OPT", &
1341 description=
"Includes a rational function optimization to determine the step."// &
1342 " Previously default but did not improve convergence in many cases", &
1343 usage=
"USE_RAT_FUN_OPT", &
1344 default_l_val=.false., lone_keyword_l_val=.true.)
1348 CALL keyword_create(keyword, __location__, name=
"RESTART_HESSIAN", &
1349 description=
"Controls the reading of the initial Hessian from file.", &
1350 usage=
"RESTART_HESSIAN", &
1351 default_l_val=.false., lone_keyword_l_val=.true.)
1355 CALL keyword_create(keyword, __location__, name=
"RESTART_FILE_NAME", &
1356 description=
"Specifies the name of the file used to read the initial Hessian.", &
1357 usage=
"RESTART_FILE_NAME {filename}", &
1363 description=
"Controls the printing of Hessian Restart file", &
1365 common_iter_levels=2)
1369 END SUBROUTINE create_bfgs_section
1376 SUBROUTINE create_cg_section(section)
1380 TYPE(
section_type),
POINTER :: subsection, subsubsection
1384 NULLIFY (section, subsection, subsubsection, keyword)
1386 description=
"Provides parameters to tune the conjugate gradient optimization", &
1387 n_keywords=0, n_subsections=1, repeats=.false.)
1389 CALL keyword_create(keyword, __location__, name=
"MAX_STEEP_STEPS", &
1390 description=
"Maximum number of steepest descent steps before starting the"// &
1391 " conjugate gradients optimization.", &
1392 usage=
"MAX_STEEP_STEPS {integer}", &
1397 CALL keyword_create(keyword, __location__, name=
"RESTART_LIMIT", &
1398 description=
"Cosine of the angle between two consecutive searching directions."// &
1399 " If the angle during a CG optimization is less than the one corresponding to"// &
1400 " to the RESTART_LIMIT the CG is reset and one step of steepest descent is"// &
1402 usage=
"RESTART_LIMIT {real}", &
1403 default_r_val=0.9_dp)
1407 CALL keyword_create(keyword, __location__, name=
"FLETCHER_REEVES", &
1408 description=
"Uses FLETCHER-REEVES instead of POLAK-RIBIERE when using Conjugate Gradients", &
1409 usage=
"FLETCHER_REEVES", &
1410 default_l_val=.false., lone_keyword_l_val=.true.)
1415 CALL section_create(subsection, __location__, name=
"LINE_SEARCH", &
1416 description=
"Provides parameters to tune the line search during the conjugate gradient optimization", &
1417 n_keywords=0, n_subsections=1, repeats=.false.)
1420 description=
"1D line search algorithm to be used with the CG optimizer,"// &
1421 " in increasing order of robustness and cost. ", &
1422 usage=
"TYPE GOLD", &
1424 enum_c_vals=
s2a(
"2PNT",
"GOLD",
"FIT"), &
1425 enum_desc=
s2a(
"extrapolate based on 2 points", &
1426 "perform 1D golden section search of the minimum (very expensive)", &
1427 "perform 1D fit of a parabola on several evaluation of energy "// &
1428 "(very expensive and more robust vs numerical noise)"), &
1434 NULLIFY (subsubsection)
1436 description=
"Provides parameters to tune the line search for the two point based line search.", &
1437 n_keywords=0, n_subsections=1, repeats=.false.)
1439 CALL keyword_create(keyword, __location__, name=
"MAX_ALLOWED_STEP", &
1440 description=
"Max allowed value for the line search step.", &
1441 usage=
"MAX_ALLOWED_STEP {real}", unit_str=
"internal_cp2k", &
1442 default_r_val=0.25_dp)
1447 keyword, __location__, name=
"LINMIN_GRAD_ONLY", &
1448 description=
"Use only the gradient, not the energy for line minimizations (e.g. in conjugate gradients).", &
1449 usage=
"LINMIN_GRAD_ONLY T", &
1450 default_l_val=.false., lone_keyword_l_val=.true.)
1458 NULLIFY (subsubsection)
1460 description=
"Provides parameters to tune the line search for the gold search.", &
1461 n_keywords=0, n_subsections=1, repeats=.false.)
1463 CALL keyword_create(keyword, __location__, name=
"INITIAL_STEP", &
1464 description=
"Initial step size used, e.g. for bracketing or minimizers. "// &
1465 "Might need to be reduced for systems with close contacts", &
1466 usage=
"INITIAL_STEP {real}", unit_str=
"internal_cp2k", &
1467 default_r_val=0.2_dp)
1472 description=
"Limit in 1D bracketing during line search in Conjugate Gradients Optimization.", &
1473 usage=
"BRACK_LIMIT {real}", unit_str=
"internal_cp2k", &
1474 default_r_val=100.0_dp)
1479 description=
"Tolerance requested during Brent line search in Conjugate Gradients Optimization.", &
1480 usage=
"BRENT_TOL {real}", unit_str=
"internal_cp2k", &
1481 default_r_val=0.01_dp)
1485 CALL keyword_create(keyword, __location__, name=
"BRENT_MAX_ITER", &
1486 description=
"Maximum number of iterations in brent algorithm "// &
1487 "(used for the line search in Conjugated Gradients Optimization)", &
1488 usage=
"BRENT_MAX_ITER {integer}", &
1497 END SUBROUTINE create_cg_section
1504 SUBROUTINE create_lbfgs_section(section)
1511 NULLIFY (section, keyword)
1513 description=
"Provides parameters to tune the limited memory BFGS (LBFGS) optimization", &
1514 n_keywords=0, n_subsections=1, repeats=.false., &
1518 description=
"Maximum rank (and consequently size) of the "// &
1519 "approximate Hessian matrix used by the LBFGS optimizer. "// &
1520 "Larger values (e.g. 30) will accelerate the convergence behaviour "// &
1521 "at the cost of a larger memory consumption.", &
1522 usage=
"MAX_H_RANK {integer}", &
1527 CALL keyword_create(keyword, __location__, name=
"MAX_F_PER_ITER", &
1528 description=
"Maximum number of force evaluations per iteration"// &
1529 " (used for the line search)", &
1530 usage=
"MAX_F_PER_ITER {integer}", &
1536 description=
"How much output is written out by the LBFGS algorithm. "// &
1537 "Currently this is independent of the &GLOBAL/PRINT_LEVEL setting.", &
1538 usage=
"PRINT_LEVEL MEDIUM", &
1539 enum_c_vals=
s2a(
"SILENT",
"LOW",
"MEDIUM",
"HIGH",
"DEBUG"), &
1540 enum_desc=
s2a(
"Almost no output", &
1541 "Little output about f and |proj g| every iteration", &
1542 "Quite some output about details every iteration", &
1543 "Lots of output about changes of active set and final x", &
1544 "Everything is written out, useful for debugging purposes only"), &
1551 CALL keyword_create(keyword, __location__, name=
"WANTED_PROJ_GRADIENT", &
1552 description=
"Convergence criterion (overrides the general ones):"// &
1553 " Requested norm threshold of the gradient multiplied"// &
1554 " by the approximate Hessian.", &
1555 usage=
"WANTED_PROJ_GRADIENT {real}", unit_str=
"internal_cp2k", &
1556 default_r_val=1.0e-16_dp)
1560 CALL keyword_create(keyword, __location__, name=
"WANTED_REL_F_ERROR", &
1561 description=
"Convergence criterion (overrides the general ones):"// &
1562 " Requested relative error on the objective function"// &
1563 " of the optimizer (the energy)", &
1564 usage=
"WANTED_REL_F_ERROR {real}", unit_str=
"internal_cp2k", &
1565 default_r_val=1.0e-16_dp)
1570 keyword, __location__, name=
"TRUST_RADIUS", &
1571 description=
"Trust radius used in LBFGS. Not completely in depth tested. Negativ values means no trust radius is used.", &
1572 usage=
"TRUST_RADIUS {real}", unit_str=
'angstrom', &
1573 default_r_val=-1.0_dp)
1577 CALL keyword_create(keyword, __location__, name=
"__CONTROL_VAL", &
1578 description=
"Hidden parameter that controls the printing behavior "// &
1579 "of the LBFGS optimizer for advanced debug purposes. This option "// &
1580 "overrides PRINT_LEVEL setting if explicit.", &
1585 END SUBROUTINE create_lbfgs_section
1592 SUBROUTINE create_fp_section(section)
1598 cpassert(.NOT.
ASSOCIATED(section))
1599 CALL section_create(section, __location__, name=
"FLEXIBLE_PARTITIONING", &
1600 description=
"This section sets up flexible_partitioning", &
1601 n_keywords=1, n_subsections=1, repeats=.false.)
1603 NULLIFY (keyword, print_key)
1605 CALL keyword_create(keyword, __location__, name=
"CENTRAL_ATOM", &
1606 description=
"Specifies the central atom.", &
1607 usage=
"CENTRAL_ATOM {integer}", &
1613 description=
"Specifies the list of atoms that should remain close to the central atom.", &
1614 usage=
"INNER_ATOMS {integer} {integer} .. {integer}", &
1620 description=
"Specifies the list of atoms that should remain far from the central atom.", &
1621 usage=
"OUTER_ATOMS {integer} {integer} .. {integer}", &
1626 CALL keyword_create(keyword, __location__, name=
"INNER_RADIUS", &
1627 description=
"radius of the inner wall", &
1628 usage=
"INNER_RADIUS {real} ", type_of_var=
real_t, &
1629 n_var=1, unit_str=
"angstrom")
1633 CALL keyword_create(keyword, __location__, name=
"OUTER_RADIUS", &
1634 description=
"radius of the outer wall", &
1635 usage=
"OUTER_RADIUS {real} ", type_of_var=
real_t, &
1636 n_var=1, unit_str=
"angstrom")
1641 description=
"Sets the force constant of the repulsive harmonic potential", &
1642 usage=
"STRENGTH 1.0", default_r_val=1.0_dp)
1647 description=
"If a bias potential counter-acting the weight term should be applied (recommended).", &
1648 usage=
"BIAS F", default_l_val=.true., lone_keyword_l_val=.true.)
1653 description=
"Sets the temperature parameter that is used in the baising potential."// &
1654 " It is recommended to use the actual simulation temperature", &
1655 usage=
"TEMPERATURE 300", default_r_val=300.0_dp, unit_str=
'K')
1659 CALL keyword_create(keyword, __location__, name=
"SMOOTH_WIDTH", &
1660 description=
"Sets the width of the smooth counting function.", &
1661 usage=
"SMOOTH_WIDTH 0.2", default_r_val=0.02_dp, unit_str=
'angstrom')
1666 description=
"Controls the printing of FP info during flexible partitioning simulations.", &
1668 filename=
"FLEXIBLE_PARTIONING")
1673 description=
"Controls the printing of FP info at startup", &
1675 filename=
"__STD_OUT__")
1679 END SUBROUTINE create_fp_section
1686 SUBROUTINE create_driver_section(section)
1691 cpassert(.NOT.
ASSOCIATED(section))
1693 description=
"This section defines the parameters needed to run in i-PI driver mode.", &
1695 n_keywords=3, n_subsections=0, repeats=.false.)
1699 description=
"Use a UNIX socket rather than an INET socket.", &
1700 usage=
"unix LOGICAL", &
1701 default_l_val=.false., lone_keyword_l_val=.true.)
1706 description=
"Port number for the i-PI server.", &
1707 usage=
"port <INTEGER>", &
1708 default_i_val=12345)
1713 description=
"Host name for the i-PI server.", &
1714 usage=
"host <HOSTNAME>", &
1715 default_c_val=
"localhost")
1720 description=
"Sleeping time while waiting for for driver commands [s].", &
1721 usage=
"SLEEP_TIME 0.1", &
1722 default_r_val=0.01_dp)
1726 END SUBROUTINE create_driver_section
1733 SUBROUTINE create_pint_section(section)
1737 TYPE(
section_type),
POINTER :: print_key, subsection, subsubsection
1739 cpassert(.NOT.
ASSOCIATED(section))
1741 description=
"The section that controls a path integral run", &
1742 n_keywords=13, n_subsections=9, repeats=.false.)
1746 description=
"Specify number beads to use", repeats=.false., &
1750 CALL keyword_create(keyword, __location__, name=
"proc_per_replica", &
1751 description=
"Specify number of processors to use for each replica", &
1752 repeats=.false., default_i_val=0)
1756 description=
"Number of steps (if MAX_STEP is not explicitly given"// &
1757 " the program will perform this number of steps)", repeats=.false., &
1762 description=
"Maximum step number (the program will stop if"// &
1763 " ITERATION >= MAX_STEP even if NUM_STEPS has not been reached)", &
1764 repeats=.false., default_i_val=10)
1768 description=
"Specify the iteration number from which it should be "// &
1769 "counted", default_i_val=0)
1773 description=
"The temperature you want to simulate", &
1778 CALL keyword_create(keyword, __location__, name=
"kT_CORRECTION", &
1779 description=
"Corrects for the loss of temperature due to constrained "// &
1780 "degrees of freedom for Nose-Hover chains and numeric integration", &
1781 repeats=.false., default_l_val=.false.)
1784 CALL keyword_create(keyword, __location__, name=
"T_tol", variants=[
"temp_to"], &
1785 description=
"threshold for the oscillations of the temperature "// &
1786 "excedeed which the temperature is rescaled. 0 means no rescaling.", &
1787 default_r_val=0._dp, unit_str=
"K")
1791 description=
"timestep (might be subdivised in nrespa subtimesteps", &
1794 usage=
"dt 1.0", unit_str=
"fs")
1798 description=
"integrator scheme for integrating the harmonic bead springs.", &
1799 usage=
"HARM_INT (NUMERIC|EXACT)", &
1801 enum_c_vals=
s2a(
"NUMERIC",
"EXACT"), &
1806 description=
"number of respa steps for the bead for each md step", &
1807 repeats=.false., default_i_val=5)
1811 CALL keyword_create(keyword, __location__, name=
"transformation", &
1812 description=
"Specifies the coordinate transformation to use", &
1813 usage=
"TRANSFORMATION (NORMAL|STAGE)", &
1815 enum_c_vals=
s2a(
"NORMAL",
"STAGE"), &
1821 description=
"Specifies the real time propagator to use", &
1822 usage=
"PROPAGATOR (PIMD|RPMD|CMD|BCMD)", &
1824 enum_c_vals=
s2a(
"PIMD",
"RPMD",
"CMD",
"BCMD"), &
1828 CALL keyword_create(keyword, __location__, name=
"FIX_CENTROID_POS", &
1829 description=
"Propagate all DOF but the centroid - "// &
1830 "useful for equilibration of the non-centroid modes "// &
1831 "(activated only if TRANSFORMATION==NORMAL)", &
1832 repeats=.false., default_l_val=.false., &
1833 lone_keyword_l_val=.true.)
1837 NULLIFY (subsection, subsubsection)
1838 CALL section_create(subsection, __location__, name=
"NORMALMODE", &
1839 description=
"Controls the normal mode transformation", &
1840 n_keywords=3, n_subsections=0, repeats=.false.)
1842 description=
"Value of the thermostat mass of centroid degree of freedom", &
1843 repeats=.false., default_r_val=-1.0_dp)
1847 description=
"Value of the thermostat mass of non-centroid degrees of freedom", &
1848 repeats=.false., default_r_val=-1.0_dp)
1852 description=
"mass scale factor for non-centroid degrees of freedom", &
1853 repeats=.false., default_r_val=1.0_dp)
1857 description=
"mass scale factor for non-centroid degrees of freedom, &
1858& naming convention according to Witt, 2008, <https://doi.org/10.1063/1.3125009>.", &
1859 repeats=.false., default_r_val=8.0_dp)
1867 description=
"The section that controls the staging transformation", &
1868 n_keywords=2, n_subsections=0, repeats=.false.)
1870 description=
"Value of the j parameter for the staging transformation", &
1871 repeats=.false., default_i_val=2)
1875 description=
"Value of the nose-hoover mass for the endbead (Q_end)", &
1876 repeats=.false., default_i_val=2)
1883 description=
"Sets positions and velocities of the beads", &
1884 n_keywords=0, n_subsections=2, &
1886 CALL create_coord_section(subsubsection,
"BEADS")
1889 CALL create_velocity_section(subsubsection,
"BEADS")
1896 description=
"Controls the Nose-Hoover thermostats", &
1897 n_keywords=1, n_subsections=2, &
1900 description=
"length of nose-hoover chain. 0 means no thermostat", &
1901 repeats=.false., default_i_val=2)
1904 CALL create_coord_section(subsubsection,
"NOSE")
1907 CALL create_velocity_section(subsubsection,
"NOSE")
1918 description=
"Controls the PI Langevin Equation thermostat."// &
1919 " Needs the exact harmonic integrator."// &
1920 " May lead to unphysical motions if constraint e.g. FIXED_ATOMS, is applied."// &
1921 " RESTART_HELIUM section has to be .FALSE. when restarting the PIGLET job.", &
1923 n_keywords=3, n_subsections=1, &
1929 description=
"Time constant for centroid motion. "// &
1930 "If zero or negative the centroid is not thermostated.", &
1931 usage=
"TAU {real}", type_of_var=
real_t, &
1932 unit_str=
"fs", n_var=1, default_r_val=1000.0_dp)
1936 description=
"Scaling of friction to mode coupling", &
1937 usage=
"LAMBDA {real}", type_of_var=
real_t, &
1938 n_var=1, default_r_val=0.5_dp)
1941 CALL keyword_create(keyword, __location__, name=
"THERMOSTAT_ENERGY", &
1942 description=
"Thermostat energy for conserved quantity. "// &
1943 "Only useful in restart files.", &
1944 usage=
"THERMOSTAT_ENERGY {real}", type_of_var=
real_t, &
1945 n_var=1, default_r_val=0.0_dp)
1952 description=
"Controls the PI Generalized Langevin Equation thermostat."// &
1953 " Needs the exact harmonic integrator", &
1955 n_keywords=4, n_subsections=2, &
1960 CALL section_create(subsubsection, __location__, name=
"EXTRA_DOF", &
1961 description=
"Additional degrees of freedom to ensure Markovian Dynamics.", &
1962 n_keywords=1, n_subsections=0, repeats=.false.)
1963 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1964 description=
"Restart values for additional degrees of freedom" &
1965 //
" (only for restarts, do not set explicitly)", &
1967 type_of_var=
real_t, n_var=-1)
1973 description=
"Number of extra degrees of freedom to ensure markovian dynamics", &
1974 repeats=.false., default_i_val=8)
1977 CALL keyword_create(keyword, __location__, name=
"MATRICES_FILE_NAME", &
1978 description=
"Filename containig the raw matrices from "// &
1979 "<https://gle4md.org/index.html?page=matrix>.", &
1980 repeats=.false., default_lc_val=
"PIGLET.MAT")
1983 CALL keyword_create(keyword, __location__, name=
"SMATRIX_INIT", &
1984 description=
"Select algorithm to initialize piglet S-matrices", &
1985 usage=
"SMATRIX_INIT (CHOLESKY|DIAGONAL)", &
1987 enum_c_vals=
s2a(
"CHOLESKY",
"DIAGONAL"), &
1991 CALL keyword_create(keyword, __location__, name=
"THERMOSTAT_ENERGY", &
1992 description=
"Thermostat energy for conserved quantity. "// &
1993 "Only useful in restart files.", &
1994 usage=
"THERMOSTAT_ENERGY {real}", type_of_var=
real_t, &
1995 n_var=1, default_r_val=0.0_dp)
2002 description=
"Controls the QTB-PILE thermostat."// &
2003 " Needs the exact harmonic integrator", &
2005 n_keywords=7, n_subsections=1, &
2011 description=
"Time constant for centroid motion. ", &
2012 usage=
"TAU {real}", type_of_var=
real_t, &
2013 unit_str=
"fs", n_var=1, default_r_val=1000.0_dp)
2017 description=
"Scaling of friction to ring polymer NM freq.", &
2018 usage=
"LAMBDA {real}", type_of_var=
real_t, &
2019 n_var=1, default_r_val=0.5_dp)
2023 description=
"Defines which version to use "// &
2024 "0: f_P^(0), 1: f_P^(1)", &
2025 usage=
"FP {integer}", type_of_var=
integer_t, &
2026 n_var=1, default_i_val=1)
2030 description=
"Inverse of cutoff freq. for the centroid mode", &
2031 usage=
"TAUCUT {real}", type_of_var=
real_t, &
2032 unit_str=
"fs", n_var=1, default_r_val=0.5_dp)
2036 description=
"Scaling of cutoff freq. to ring polymer NM freq.", &
2037 usage=
"LAMBCUT {real}", type_of_var=
real_t, &
2038 n_var=1, default_r_val=2.0_dp)
2042 description=
"Number of points used for the convolution product.", &
2043 usage=
"NF {integer}", type_of_var=
integer_t, &
2044 n_var=1, default_i_val=128)
2047 CALL keyword_create(keyword, __location__, name=
"THERMOSTAT_ENERGY", &
2048 description=
"Thermostat energy for conserved quantity. "// &
2049 "Only useful in restart files.", &
2050 usage=
"THERMOSTAT_ENERGY {real}", type_of_var=
real_t, &
2051 n_var=1, default_r_val=0.0_dp)
2058 description=
"Controls the initialization if the beads are not present", &
2061 CALL keyword_create(keyword, __location__, name=
"LEVY_POS_SAMPLE", &
2062 description=
"Sample bead positions assuming free particle "// &
2063 "behavior (performs a Levy random walk of length P around "// &
2064 "the classical position of each atom at the physical "// &
2065 "temperature defined in PINT%TEMP)", &
2066 repeats=.false., default_l_val=.false., &
2067 lone_keyword_l_val=.true.)
2070 CALL keyword_create(keyword, __location__, name=
"LEVY_CORRELATED", &
2071 description=
"Use the same Levy path for all atoms, though "// &
2072 "with mass-dependent variances (might help at very low T)", &
2073 repeats=.false., default_l_val=.false., &
2074 lone_keyword_l_val=.true.)
2077 CALL keyword_create(keyword, __location__, name=
"LEVY_TEMP_FACTOR", &
2078 description=
"Multiplicative correction factor for the "// &
2079 "temperature at which the Levy walk is performed "// &
2080 "(correction is due to the interactions that modify "// &
2081 "the spread of a free particle)", &
2082 repeats=.false., default_r_val=1.0_dp)
2086 description=
"Initial seed for the (pseudo)random number "// &
2087 "generator that controls Levy walk for bead positions.", &
2088 usage=
"LEVY_SEED <INTEGER>", default_i_val=1234, &
2092 CALL keyword_create(keyword, __location__, name=
"THERMOSTAT_SEED", &
2093 description=
"Initial seed for the (pseudo)random number "// &
2094 "generator that controls the PILE and PIGLET thermostats.", &
2095 usage=
"THERMOSTAT_SEED <INTEGER>", default_i_val=12345, &
2099 CALL keyword_create(keyword, __location__, name=
"RANDOMIZE_POS", &
2100 description=
"add gaussian noise to the positions of the beads", &
2101 repeats=.false., default_l_val=.false., lone_keyword_l_val=.true.)
2105 CALL keyword_create(keyword, __location__, name=
"CENTROID_SPEED", &
2106 description=
"adds random velocity component to the centroid modes "// &
2107 "(useful to correct for the averaging out of the speed of various beads)", &
2108 repeats=.false., default_l_val=.false., lone_keyword_l_val=.true.)
2112 CALL keyword_create(keyword, __location__, name=
"VELOCITY_QUENCH", &
2113 description=
"set the initial velocities to zero", &
2114 repeats=.false., default_l_val=.false., lone_keyword_l_val=.true.)
2117 CALL keyword_create(keyword, __location__, name=
"VELOCITY_SCALE", &
2118 description=
"scale initial velocities to the temperature given in MOTION%PINT%TEMP", &
2119 repeats=.false., default_l_val=.false., lone_keyword_l_val=.true.)
2126 CALL create_helium_section(subsection)
2131 description=
"Controls the path integral-specific output", &
2132 n_keywords=2, n_subsections=0, repeats=.false.)
2137 description=
"Controls the output of the path integral energies", &
2143 description=
"Controls the output of the path integral action", &
2149 description=
"Controls the output of the centroid's position", &
2150 unit_str=
"angstrom", &
2153 description=
"Output file format for the positions of centroid")
2158 description=
"Controls the output of the centroid's velocity", &
2159 unit_str=
"bohr*au_t^-1", &
2162 description=
"Output file format for the velocity of centroid")
2167 description=
"Controls the output of the centroid's radii of gyration", &
2168 unit_str=
"angstrom", &
2174 description=
"Controls the output of the center of mass", &
2179 CALL keyword_create(keyword, __location__, name=
"IMAGINARY_TIME_STRIDE", &
2180 description=
"Prints only every nth bead trajectory", &
2181 repeats=.false., default_i_val=1)
2188 END SUBROUTINE create_pint_section
2198 SUBROUTINE create_helium_section(section)
2202 TYPE(
section_type),
POINTER :: print_key, subsection, subsubsection
2204 cpassert(.NOT.
ASSOCIATED(section))
2207 description=
"The section that controls optional helium solvent"// &
2208 " environment (highly experimental, not for general use yet)", &
2209 n_keywords=31, n_subsections=11, repeats=.false.)
2212 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2213 description=
"Whether or not to actually use this section", &
2214 usage=
"silent", default_l_val=.false., lone_keyword_l_val=.true.)
2219 description=
"Simulate helium solvent only, "// &
2220 "disregard solute entirely", &
2221 repeats=.false., default_l_val=.false., &
2222 lone_keyword_l_val=.true.)
2226 CALL keyword_create(keyword, __location__, name=
"INTERACTION_POT_SCAN", &
2227 description=
"Scan solute-helium interaction potential, "// &
2228 "cubefile parameters set in subsection RHO", &
2229 repeats=.false., default_l_val=.false., &
2230 lone_keyword_l_val=.true.)
2235 description=
"Number of independent helium environments", &
2236 repeats=.false., default_i_val=1)
2240 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_FILE_NAME", &
2241 description=
"Name of the Helium interaction potential file", &
2242 repeats=.false., default_lc_val=
"HELIUM.POT")
2247 description=
"Get average MC forces or last MC forces to propagate MD", &
2248 usage=
"GET_FORCES (AVERAGE|LAST)", &
2250 enum_c_vals=
s2a(
"AVERAGE",
"LAST"), &
2255 CALL keyword_create(keyword, __location__, name=
"SOLUTE_INTERACTION", &
2256 description=
"Interaction potential between helium and the solute", &
2257 usage=
"SOLUTE_INTERACTION (NONE | MWATER | NNP)", &
2259 enum_c_vals=
s2a(
"NONE",
"MWATER",
"NNP"), &
2265 "No interaction with solute", &
2266 "Test interaction with wrong Water", &
2267 "Interaction with NNP"))
2272 description=
"Number of helium atoms", &
2273 repeats=.false., default_i_val=64)
2278 description=
"Number of helium path integral beads", &
2279 repeats=.false., default_i_val=25)
2284 description=
"Initial seed for the (pseudo)random number "// &
2285 "generator that controls helium coordinate generation and propagation.", &
2286 usage=
"RNG_SEED <INTEGER>", default_i_val=12345, &
2292 variants=
s2a(
"INOROT"), &
2293 description=
"Number of MC iterations at the same time slice(s) "// &
2294 "(number of inner MC loop iterations)", &
2295 repeats=.false., default_i_val=6600)
2300 variants=
s2a(
"IROT"), &
2301 description=
"how often to reselect the time slice(s) to work on "// &
2302 "(number of outer MC loop iterations)", &
2303 repeats=.false., default_i_val=300)
2307 CALL keyword_create(keyword, __location__, name=
"SAMPLING_METHOD", &
2308 description=
"Choose between Ceperley or the worm algorithm", &
2309 usage=
"SAMPLING_METHOD (CEPERLEY|WORM)", &
2311 enum_c_vals=
s2a(
"CEPERLEY",
"WORM"), &
2316 CALL keyword_create(keyword, __location__, name=
"COORD_INIT_TEMP", &
2317 description=
"Temperature for thermal gaussian initialization of the helium."// &
2318 " Negative values correspond to a hot start.", &
2324 CALL keyword_create(keyword, __location__, name=
"SOLUTE_RADIUS", &
2325 description=
"Radius of the solute molecule for prevention of"// &
2326 " coordinate collision during initialization", &
2328 repeats=.false., type_of_var=
real_t, unit_str=
"angstrom")
2333 NULLIFY (subsection)
2335 description=
"This section contains all information to run an helium-solute "// &
2336 "interaction Neural Network Potential (NNP) calculation.", &
2337 n_keywords=2, n_subsections=3, repeats=.false.)
2339 CALL keyword_create(keyword, __location__, name=
"NNP_INPUT_FILE_NAME", &
2340 description=
"File containing the input information for the setup "// &
2341 "of the NNP (n2p2/RuNNer format). ", &
2342 repeats=.false., default_lc_val=
"input.nn")
2346 CALL keyword_create(keyword, __location__, name=
"SCALE_FILE_NAME", &
2347 description=
"File containing the scaling information for the symmetry "// &
2348 "functions of the NNP. ", &
2349 repeats=.false., default_lc_val=
"scaling.data")
2353 NULLIFY (subsubsection)
2354 CALL section_create(subsubsection, __location__, name=
"SR_CUTOFF", &
2355 description=
"Section for failsafe short range cutoffs for the NNPs, "// &
2356 "if the distance between solvent and specified solute element becomes "// &
2357 "smaller than the given cutoff, an artifical repulsive potential is "// &
2358 "introduced. Note this is only meant to prevent such configurations, "// &
2359 "not to physically sample them.", &
2360 n_keywords=2, n_subsections=0, repeats=.true.)
2363 description=
"Solute element for which the short range cutoff is in effect", &
2364 repeats=.false., default_c_val=
"none")
2369 description=
"Short range cutoff in Angstrom, below this cutoff, the energy "// &
2370 "is replaced by a sizable positive value plus a 1/r**2 term to guide particles "// &
2371 "away from each other.", &
2373 repeats=.false., type_of_var=
real_t, unit_str=
"angstrom")
2379 NULLIFY (subsubsection)
2381 description=
"Section for a single NNP model. If this section is repeated, "// &
2382 "a committee model (C-NNP)is used where the NNP members share the same "// &
2383 "symmetry functions. ", &
2384 n_keywords=1, n_subsections=0, repeats=.true.)
2387 description=
"File containing the weights for the artificial neural "// &
2388 "networks of the NNP. The specified name is extended by .XXX.data ", &
2389 repeats=.false., default_lc_val=
"weights")
2396 NULLIFY (subsubsection)
2398 description=
"Section of possible print options in NNP code.", &
2399 n_keywords=0, n_subsections=3, repeats=.false.)
2400 NULLIFY (print_key, keyword)
2403 description=
"Controls the printing of the NNP energies.", &
2409 description=
"Controls the printing of the STD per atom of the NNP forces.", &
2415 description=
"If activated, output structures with extrapolation "// &
2416 "warning in xyz-format", &
2427 NULLIFY (subsection)
2429 description=
"Enables sampling with Ceperley's algorithm", &
2430 n_keywords=2, n_subsections=1, repeats=.false.)
2433 description=
"how many time slices to change at once (+1). "// &
2434 "Must be a power of 2 currently", &
2435 repeats=.false., default_i_val=8)
2439 CALL keyword_create(keyword, __location__, name=
"MAX_PERM_CYCLE", &
2440 description=
"how large cyclic permutations to try", &
2441 repeats=.false., default_i_val=6)
2445 NULLIFY (subsubsection)
2446 CALL section_create(subsubsection, __location__, name=
"M-SAMPLING", &
2447 description=
"Permutation cycle length sampling settings", &
2448 n_keywords=3, n_subsections=0, repeats=.false.)
2449 CALL keyword_create(keyword, __location__, name=
"DISTRIBUTION-TYPE", &
2450 description=
"Distribution from which the cycle length m is sampled", &
2451 usage=
"DISTRIBUTION-TYPE (SINGLEV|UNIFORM|LINEAR|QUADRATIC|EXPONENTIAL|GAUSSIAN)", &
2470 description=
"Value of m treated in a special way "// &
2471 "(specific behavior depends on the distribution type chosen)", &
2477 description=
"Probability ratio betw M-VALUE and other cycle lengths", &
2479 default_r_val=1.0_dp)
2488 NULLIFY (subsection)
2490 description=
"Enables sampling via the canonical worm algorithm adapted from Bonisegni", &
2491 n_keywords=12, n_subsections=0, repeats=.false.)
2493 CALL keyword_create(keyword, __location__, name=
"CENTROID_DRMAX", &
2494 description=
"Maximum displacement allowed for the centroid moves", &
2495 repeats=.false., default_r_val=0.5_dp)
2500 description=
"From 2 up to max. L-1 beads will be moved", &
2501 repeats=.false., default_i_val=5)
2505 CALL keyword_create(keyword, __location__, name=
"OPEN_CLOSE_SCALE", &
2506 description=
"Open/Close acceptance adjustment parameter", &
2507 repeats=.false., default_r_val=0.01_dp)
2512 description=
"Enable bosonic exchange sampling", &
2513 repeats=.false., default_l_val=.true.)
2517 CALL keyword_create(keyword, __location__, name=
"MAX_OPEN_CYCLES", &
2518 description=
"If > 0 then reset positions and permutations to the previous closed &
2519 & state if staying more than this amount of MC cycles in open state to avoid staying &
2520 & trapped in open state for too long. Use with caution as it can potentially introduce &
2521 & a bias in the sampling.", &
2522 repeats=.false., default_i_val=0)
2526 CALL keyword_create(keyword, __location__, name=
"SHOW_STATISTICS", &
2527 description=
"Show sampling statistics in output", &
2528 repeats=.false., default_l_val=.true.)
2532 CALL keyword_create(keyword, __location__, name=
"CENTROID_WEIGHT", &
2533 description=
"Absolute weight of the centroid move", &
2534 repeats=.false., default_i_val=10)
2538 CALL keyword_create(keyword, __location__, name=
"STAGING_WEIGHT", &
2539 description=
"Absolute weight of the staging move", &
2540 repeats=.false., default_i_val=30)
2544 CALL keyword_create(keyword, __location__, name=
"OPEN_CLOSE_WEIGHT", &
2545 description=
"Absolute weight of the open/close move", &
2546 repeats=.false., default_i_val=10)
2550 CALL keyword_create(keyword, __location__, name=
"HEAD_TAIL_WEIGHT", &
2551 description=
"Absolute weight of the head/tail moves (both)", &
2552 repeats=.false., default_i_val=10)
2556 CALL keyword_create(keyword, __location__, name=
"CRAWL_WEIGHT", &
2557 description=
"Absolute weight of the crawl bwd/fwd moves (both)", &
2558 repeats=.false., default_i_val=10)
2562 CALL keyword_create(keyword, __location__, name=
"CRAWL_REPETITION", &
2563 description=
"Number of repeated crawl moves", &
2564 repeats=.false., default_i_val=4)
2569 description=
"Absolute weight of the crawl move", &
2570 repeats=.false., default_i_val=10)
2580 description=
"Use periodic boundary conditions for helium", &
2581 repeats=.false., default_l_val=.false.)
2586 description=
"PBC unit cell size (NOTE 1: density, number of atoms"// &
2587 " and volume are interdependent - give only two of them; "// &
2588 "NOTE 2: for small cell sizes specify NATOMS instead)", &
2589 repeats=.false., type_of_var=
real_t, unit_str=
"angstrom")
2594 description=
"PBC unit cell shape for helium", &
2595 usage=
"CELL_SHAPE (CUBE|OCTAHEDRON)", &
2597 enum_c_vals=
s2a(
"CUBE",
"OCTAHEDRON"), &
2602 CALL keyword_create(keyword, __location__, name=
"DROPLET_RADIUS", &
2603 description=
"Reject a move if any of the new positions does not lie within"// &
2604 " this range from the center of gravity", &
2605 repeats=.false., type_of_var=
real_t, default_r_val=huge(1.0_dp), &
2606 unit_str=
"angstrom")
2611 description=
"trial density of helium for determining the helium "// &
2615 unit_str=
"angstrom^-3")
2620 description=
"Presample He coordinates before first PIMD step", &
2621 repeats=.false., default_l_val=.false.)
2626 description=
"Radial distribution settings", &
2627 n_keywords=5, n_subsections=0, repeats=.false.)
2629 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2630 description=
"Whether or not to actually calculate this property", &
2631 default_l_val=.false., lone_keyword_l_val=.true.)
2636 description=
"Maximum RDF range, defaults to unit cell size", &
2637 repeats=.false., type_of_var=
real_t, &
2638 unit_str=
"angstrom")
2643 description=
"Number of bins", &
2650 description=
"Whether or not to calculate solute-He RDFs (if solute is present)", &
2651 default_l_val=.true., lone_keyword_l_val=.true.)
2656 description=
"Whether or not to calculate He-He RDFs", &
2657 default_l_val=.false., lone_keyword_l_val=.true.)
2664 NULLIFY (subsection)
2666 description=
"Spatial distribution settings", &
2667 n_keywords=10, n_subsections=0, repeats=.false.)
2668 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2669 description=
"Whether or not to actually calculate densities "// &
2670 "(requires significant amount of memory, depending on the value of NBIN)", &
2671 default_l_val=.false., lone_keyword_l_val=.true.)
2675 description=
"Number of grid points in each direction for density binning", &
2681 CALL keyword_create(keyword, __location__, name=
"MIN_CYCLE_LENGTHS_WDG", &
2682 description=
"Density of winding paths "// &
2683 "not shorter than the given length", &
2684 repeats=.false., usage=
"MIN_CYCLE_LENGTHS_WDG <INT> <INT> .. <INT>", &
2689 CALL keyword_create(keyword, __location__, name=
"MIN_CYCLE_LENGTHS_NON", &
2690 description=
"Density of non-winding paths "// &
2691 "not shorter than the given length", &
2692 repeats=.false., usage=
"MIN_CYCLE_LENGTHS_NON <INT> <INT> .. <INT>", &
2697 CALL keyword_create(keyword, __location__, name=
"MIN_CYCLE_LENGTHS_ALL", &
2698 description=
"Density of all paths "// &
2699 "not shorter than the given length", &
2700 repeats=.false., usage=
"MIN_CYCLE_LENGTHS_ALL <INT> <INT> .. <INT>", &
2706 description=
"Atom number density", &
2709 default_l_val=.true., &
2710 lone_keyword_l_val=.true.)
2714 CALL keyword_create(keyword, __location__, name=
"PROJECTED_AREA_2", &
2715 description=
"Projected area squared density, A*A(r)", &
2718 default_l_val=.false., &
2719 lone_keyword_l_val=.true.)
2723 CALL keyword_create(keyword, __location__, name=
"WINDING_NUMBER_2", &
2724 description=
"Winding number squared density, W*W(r)", &
2727 default_l_val=.false., &
2728 lone_keyword_l_val=.true.)
2732 CALL keyword_create(keyword, __location__, name=
"WINDING_CYCLE_2", &
2733 description=
"Winding number squared density, W^2(r)", &
2736 default_l_val=.false., &
2737 lone_keyword_l_val=.true.)
2741 CALL keyword_create(keyword, __location__, name=
"MOMENT_OF_INERTIA", &
2742 description=
"Moment of inertia density", &
2745 default_l_val=.false., &
2746 lone_keyword_l_val=.true.)
2754 CALL create_coord_section(subsection,
"HELIUM")
2759 description=
"Permutation state used for restart", &
2760 n_keywords=1, n_subsections=0, repeats=.false.)
2761 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2762 description=
"Specify particle index permutation for every "// &
2763 "helium atom", repeats=.true., usage=
"<INT> <INT> .. <INT>", &
2771 description=
"Average properties (used for restarts)", &
2772 n_keywords=7, n_subsections=0, repeats=.false.)
2773 CALL keyword_create(keyword, __location__, name=
"PROJECTED_AREA", &
2774 description=
"Projected area vector for all environments", &
2775 repeats=.true., usage=
"PROJECTED_AREA <REAL> <REAL> .. <REAL>", &
2776 type_of_var=
real_t, n_var=-1)
2779 CALL keyword_create(keyword, __location__, name=
"PROJECTED_AREA_2", &
2780 description=
"Projected area vector squared for all environments", &
2781 repeats=.true., usage=
"PROJECTED_AREA_2 <REAL> <REAL> .. <REAL>", &
2782 type_of_var=
real_t, n_var=-1)
2785 CALL keyword_create(keyword, __location__, name=
"WINDING_NUMBER_2", &
2786 description=
"Winding number vector squared for all environments", &
2787 repeats=.true., usage=
"WINDING_NUMBER_2 <REAL> <REAL> .. <REAL>", &
2788 type_of_var=
real_t, n_var=-1)
2791 CALL keyword_create(keyword, __location__, name=
"MOMENT_OF_INERTIA", &
2792 description=
"Moment of inertia vector for all environments", &
2793 repeats=.true., usage=
"MOMENT_OF_INERTIA <REAL> <REAL> .. <REAL>", &
2794 type_of_var=
real_t, n_var=-1)
2798 description=
"Radial distributions averaged over all environments", &
2799 repeats=.true., usage=
"RDF <REAL> <REAL> .. <REAL>", &
2800 type_of_var=
real_t, n_var=-1)
2804 description=
"Spatial distributions averaged over all environments", &
2805 repeats=.true., usage=
"RHO <REAL> <REAL> .. <REAL>", &
2806 type_of_var=
real_t, n_var=-1)
2810 description=
"Weight for the restarted quantities "// &
2811 "(number of MC steps used to calculate the accumulated averages)", &
2820 description=
"Forces exerted by the helium on the solute system"// &
2821 " (used for restarts)", &
2822 n_keywords=1, n_subsections=0, repeats=.false.)
2823 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2824 description=
"Number of real values should be 3 * "// &
2825 "<num_solute_atoms> * <num_solute_beads>", repeats=.true., &
2826 usage=
"<REAL> <REAL> .. <REAL>", type_of_var=
real_t, &
2833 CALL section_create(subsection, __location__, name=
"RNG_STATE", &
2834 description=
"Random number generator state for all processors", &
2835 n_keywords=1, n_subsections=0, repeats=.false.)
2836 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2837 description=
"Three real arrays of DIMENSION(3,2) times two RNG "// &
2838 "streams - 36 real values per processor", &
2839 repeats=.true., usage=
"automatically filled, do not edit by hand", &
2840 type_of_var=
real_t, n_var=-1)
2847 description=
"The section that controls the output of the helium code", &
2848 n_keywords=16, n_subsections=0, repeats=.false.)
2861 description=
"Controls the output of helium energies"// &
2862 " (averaged over MC step)", &
2868 description=
"Controls the output of the average projected area squared vector", &
2874 description=
"Controls the output of the average winding number vector squared", &
2880 description=
"Controls the output of the average moment of inertia vector", &
2888 description=
"Controls the output of helium radial distribution functions", &
2894 description=
"Controls the output of the helium density "// &
2895 "(Gaussian cube file format)", &
2896 each_iter_names=
s2a(
"PINT"), each_iter_values=[100], &
2899 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
2900 description=
"Specifies the maximum number of backup copies.", &
2901 usage=
"BACKUP_COPIES {int}", &
2909 description=
"Controls the output of the projected area vector", &
2915 description=
"Controls the output of the winding number vector", &
2921 description=
"Controls the output of the moment of inertia vector", &
2927 description=
"Controls the output of the helium permutation length", &
2933 description=
"Controls the output of the total helium action", &
2941 description=
"Controls the output of helium coordinates", &
2944 description=
"Output file format for the coordinates", &
2945 usage=
"FORMAT (PDB|XYZ)", &
2947 enum_c_vals=
s2a(
"PDB",
"XYZ"), &
2949 enum_desc=
s2a(
"Bead coordinates and connectivity is written in PDB format", &
2950 "Only bead coordinates are written in XYZ format"))
2957 description=
"Controls the output of the helium permutation state", &
2960 description=
"Output format for the permutation", &
2961 usage=
"FORMAT (CYCLE|PLAIN)", &
2963 enum_c_vals=
s2a(
"CYCLE",
"PLAIN"), &
2966 "Cycle notation with winding cycles enclosed"// &
2967 " in '[...]' and non-winding ones enclosed in '(...)'", &
2968 "Plain permutation output, i.e. P(1) ... P(N)"))
2975 description=
"Controls the output of the helium forces on the solute", &
2983 description=
"Controls the output of the helium acceptance data", &
2989 description=
"Controls the output of the instantaneous helium forces on the solute", &
2998 END SUBROUTINE create_helium_section
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public kapil2016
integer, save, public ceriotti2012
integer, save, public lindh1995
integer, save, public henkelman1999
integer, save, public ceriotti2010
integer, save, public henkelman2014
integer, save, public byrd1995
integer, save, public brieuc2016
integer, save, public ceriotti2014
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 low_print_level
integer, parameter, public medium_print_level
integer, parameter, public high_print_level
integer, parameter, public add_last_numeric
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
Utilities for string manipulations.
character(len=1), parameter, public newline