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, the stress tensor, and "// &
878 "the CELL_OPT cell metric. "// &
879 "It works for supercell. It does not affect/reduce computational cost. "// &
880 "Use EPS_SYMMETRY to adjust the detection threshold.", &
881 usage=
"KEEP_SPACE_GROUP .TRUE.", &
882 default_l_val=.false., lone_keyword_l_val=.true., repeats=.false.)
888 keyword, __location__, name=
"SHOW_SPACE_GROUP", &
889 description=
"Detect and show space group of the system after optimization. "// &
890 "It works for supercell. It does not affect/reduce computational cost. "// &
891 "Use EPS_SYMMETRY to adjust the detection threshold.", &
892 usage=
"SHOW_SPACE_GROUP .TRUE.", &
893 default_l_val=.false., lone_keyword_l_val=.true., repeats=.false.)
899 keyword, __location__, name=
"EPS_SYMMETRY", &
900 description=
"Accuracy for space group determination. EPS_SYMMETRY is dimensionless. "// &
901 "Roughly speaking, two scaled (fractional) atomic positions v1, v2 are considered identical if |v1 - v2| < EPS_SYMMETRY. ", &
902 usage=
"EPS_SYMMETRY {REAL}", &
903 default_r_val=1.e-4_dp, repeats=.false.)
909 keyword, __location__, name=
"SYMM_REDUCTION", &
910 description=
"Direction of the external static electric field. "// &
911 "Some symmetry operations are not compatible with the direction of an electric field. "// &
912 "These operations are used when enforcing the space group.", &
913 usage=
"SYMM_REDUCTION 0.0 0.0 0.0", &
914 repeats=.false., n_var=3, &
915 type_of_var=
real_t, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp])
921 keyword, __location__, name=
"SYMM_EXCLUDE_RANGE", &
922 description=
"Range of atoms to exclude from space group symmetry. "// &
923 "These atoms are excluded from both identification and enforcement. "// &
924 "This keyword can be repeated.", &
925 repeats=.true., usage=
"SYMM_EXCLUDE_RANGE {Int} {Int}", type_of_var=
integer_t, n_var=2)
930 keyword, __location__, name=
"SPGR_PRINT_ATOMS", &
931 description=
"Print equivalent atoms list for each space group symmetry operation.", &
932 default_l_val=.false., lone_keyword_l_val=.true.)
936 CALL create_lbfgs_section(subsection)
940 CALL create_cg_section(subsection)
944 CALL create_bfgs_section(subsection, use_model_hessian)
948 IF (.NOT. just_optimizers)
THEN
950 CALL create_ts_section(subsection)
957 description=
"Controls the printing properties during a geometry optimization run", &
958 n_keywords=0, n_subsections=1, repeats=.true.)
961 print_key, __location__,
"program_run_info", &
962 description=
"Controls the printing of basic information during the Geometry Optimization", &
970 END SUBROUTINE create_geoopt_section
977 SUBROUTINE create_shellcore_opt_section(section)
982 CALL create_geoopt_section( &
983 section, __location__, label=
"SHELL_OPT", &
984 description=
"This section sets the environment for the optimization of the shell-core distances"// &
985 " that might turn to be necessary along a MD run using a shell-model potential."// &
986 " The optimization procedure is activated when at least one of the shell-core"// &
987 " pairs becomes too elongated, i.e. when the assumption of point dipole is not longer valid.", &
988 just_optimizers=.true., &
989 use_model_hessian=.false.)
991 NULLIFY (print_key, subsection)
996 description=
"Controls the printing properties during a shell-core optimization procedure", &
997 n_keywords=0, n_subsections=1, repeats=.true.)
1000 description=
"Controls the printing of basic information during the Optimization", &
1007 END SUBROUTINE create_shellcore_opt_section
1014 SUBROUTINE create_cell_opt_section(section)
1020 CALL create_geoopt_section(section, __location__, label=
"CELL_OPT", &
1021 description=
"This section sets the environment for the optimization "// &
1022 "of the simulation cell. As is noted in FORCE_EVAL/SUBSYS/CELL, the "// &
1023 "program convention is that the first cell vector A lies along the "// &
1024 "X-axis and the second cell vector B is in the XY plane, such that "// &
1025 "the cell vector matrix is a lower triangle. There is no complete, "// &
1026 "official algorithm support and/or tests for updating the three "// &
1027 "upper triangular components during a cell optimization; please "// &
1028 "prepare input accordingly with these three components precisely 0 "// &
1029 "even for cases like the primitive rhombohedral cell of the FCC lattice.", &
1030 just_optimizers=.true., use_model_hessian=.false.)
1032 NULLIFY (keyword, print_key, subsection)
1034 keyword, __location__, name=
"TYPE", removed=.true., description=
"", &
1035 deprecation_notice=
"The keyword MOTION/CELL_OPT/TYPE has been removed because "// &
1036 "cell optimizations now always use DIRECT_CELL_OPT.", &
1037 enum_c_vals=
s2a(
"DIRECT_CELL_OPT",
"GEO_OPT",
"MD"), &
1038 enum_i_vals=[1, 2, 3], default_i_val=1)
1043 keyword, __location__, name=
"EXTERNAL_PRESSURE", &
1044 description=
"Specifies the external pressure (1 value or the full 9 components of the pressure tensor) "// &
1045 "applied during the cell optimization.", &
1046 usage=
"EXTERNAL_PRESSURE {REAL} .. {REAL}", unit_str=
"bar", &
1054 description=
"Keep the volume of the cell constant during cell optimization. "// &
1055 "This is implemented by comparing the cell volumes and scaling the new "// &
1056 "cell vectors just before updating the cell information, and can be "// &
1057 "used together with KEEP_ANGLES or KEEP_SYMMETRY.", &
1058 usage=
"KEEP_VOLUME TRUE", default_l_val=.false., lone_keyword_l_val=.true.)
1063 description=
"Keep angles between the cell vectors constant, but "// &
1064 "allow the lengths of the cell vectors to change independently "// &
1065 "during cell optimization. This is implemented by projecting out "// &
1066 "the components of angles in the cell gradient before the cell "// &
1067 "is updated. Albeit general, this is most useful for triclinic "// &
1068 "cells; to enforce higher symmetry, see KEEP_SYMMETRY.", &
1069 usage=
"KEEP_ANGLES TRUE", default_l_val=.false., lone_keyword_l_val=.true.)
1073 CALL keyword_create(keyword, __location__, name=
"KEEP_SYMMETRY", &
1074 description=
"Keep the requested initial cell symmetry as specified "// &
1075 "in the FORCE_EVAL/SUBSYS/CELL section during cell optimization. "// &
1076 "This is implemented by removing symmetry-breaking components and "// &
1077 "taking averages of components if necessary in the cell gradient "// &
1078 "before the cell is updated. To enforce the space group (which "// &
1079 "requires spglib package), see KEEP_SPACE_GROUP.", &
1080 usage=
"KEEP_SYMMETRY TRUE", default_l_val=.false., lone_keyword_l_val=.true.)
1085 keyword, __location__, name=
"CONSTRAINT", &
1086 description=
"Imposes a constraint on the pressure tensor by fixing the specified cell components.", &
1087 usage=
"CONSTRAINT (none|x|y|z|xy|xz|yz)", &
1088 enum_desc=
s2a(
"Fix nothing", &
1089 "Fix only x component", &
1090 "Fix only y component", &
1091 "Fix only z component", &
1092 "Fix x and y component", &
1093 "Fix x and z component", &
1094 "Fix y and z component"), &
1095 enum_c_vals=
s2a(
"NONE",
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ"), &
1101 CALL keyword_create(keyword, __location__, name=
"PRESSURE_TOLERANCE", &
1102 description=
"Specifies the Pressure tolerance (compared to the external pressure) to achieve "// &
1103 "during the cell optimization.", &
1104 usage=
"PRESSURE_TOLERANCE {REAL}", unit_str=
"bar", &
1110 NULLIFY (subsection)
1112 description=
"Controls the printing properties during a geometry optimization run", &
1113 n_keywords=0, n_subsections=1, repeats=.true.)
1116 description=
"Controls the printing of basic information during the Geometry Optimization", &
1121 description=
"Controls the printing of the cell eveytime a calculation using a new cell is started.", &
1123 unit_str=
"angstrom")
1129 END SUBROUTINE create_cell_opt_section
1136 SUBROUTINE create_ts_section(section)
1140 TYPE(
section_type),
POINTER :: print_key, subsection, subsection2, &
1145 NULLIFY (section, keyword, subsection, subsection2)
1146 CALL section_create(section, __location__, name=
"TRANSITION_STATE", &
1147 description=
"Specifies parameters to perform a transition state search", &
1148 n_keywords=0, n_subsections=1, repeats=.false.)
1151 description=
"Specify which kind of method to use for locating transition states", &
1153 usage=
"METHOD (DIMER)", &
1154 enum_c_vals=
s2a(
"DIMER"), &
1155 enum_desc=
s2a(
"Uses the dimer method to optimize transition states."), &
1162 description=
"Specifies parameters for Dimer Method", &
1163 n_keywords=0, n_subsections=1, repeats=.false.)
1166 description=
"This keyword sets the value for the DR parameter.", &
1167 usage=
"DR {real}", unit_str=
'angstrom', &
1172 CALL keyword_create(keyword, __location__, name=
"INITIALIZATION_METHOD", &
1173 description=
"Specify the initialization method of the dimer vector, "// &
1174 "which is crucial for converging to the desired transition state. "// &
1175 "If the DIMER_VECTOR section is defined explicitly, it will always "// &
1176 "be parsed directly (e.g. in restart files); INITIALIZATION_METHOD "// &
1177 "is only effective if the DIMER_VECTOR section is not explicit.", &
1178 usage=
"INITIALIZATION_METHOD (RANDOM|MOLDEN)", &
1179 enum_desc=
s2a(
"Generate the initial dimer vector randomly. This is "// &
1180 "the default for backwards compatibility; in practice "// &
1181 "it may distort the structure and slow down convergence.", &
1182 "Generate the initial dimer vector from one or more "// &
1183 "vibrational normal modes as read from a MOLDEN file "// &
1184 "produced by `VIBRATIONAL_ANALYSIS%PRINT%MOLDEN_VIB` "// &
1185 "in a vibrational analysis task. Requires setting up "// &
1186 "keywords `VIB_MOLDEN_NAME`, `VIB_INDEX` and `VIB_WEIGHT`."), &
1187 enum_c_vals=
s2a(
"RANDOM",
"MOLDEN"), &
1193 CALL keyword_create(keyword, __location__, name=
"VIB_MOLDEN_NAME", &
1194 description=
"The external molden file containing vibrational "// &
1195 "normal modes for `INITIALIZATION_METHOD MOLDEN`.", &
1196 usage=
"VIB_MOLDEN_NAME <CHARACTER>", type_of_var=
lchar_t)
1201 description=
"The index of one or more vibrational normal modes "// &
1202 "from the file whose linear combination will form the initial "// &
1204 usage=
"VIB_INDEX {integer} {integer} .. {integer}", repeats=.true., &
1205 n_var=-1, default_i_vals=[1], type_of_var=
integer_t)
1210 description=
"The weight of one or more vibrational normal modes "// &
1211 "from the file whose linear combination will form the initial "// &
1213 usage=
"VIB_WEIGHT {real} {real} .. {real}", repeats=.true., &
1214 n_var=-1, default_r_vals=[1.0_dp], type_of_var=
real_t)
1218 CALL keyword_create(keyword, __location__, name=
"INTERPOLATE_GRADIENT", &
1219 description=
"This keyword controls the interpolation of the gradient whenever possible"// &
1220 " during the optimization of the Dimer. The use of this keywords saves 1 evaluation"// &
1221 " of energy/forces.", usage=
"INTERPOLATE_GRADIENT {logical}", default_l_val=.true., &
1222 lone_keyword_l_val=.true.)
1226 CALL keyword_create(keyword, __location__, name=
"ANGLE_TOLERANCE", &
1227 description=
"This keyword sets the value of the tolerance angle for the line search"// &
1228 " performed to optimize the orientation of the dimer.", &
1229 usage=
"ANGLE_TOLERANCE {real}", unit_str=
'rad', &
1235 description=
"This keyword activates the constrained k-dimer translation"// &
1236 " J. Chem. Phys. 141, 164111 (2014).", &
1238 usage=
"K-DIMER {logica}", &
1239 default_l_val=.false., &
1240 lone_keyword_l_val=.false.)
1245 description=
"Exponential factor for the switching function used in K-DIMER", &
1246 usage=
"BETA {real}", &
1247 default_r_val=5.0_dp, &
1248 lone_keyword_r_val=5.0_dp)
1252 CALL create_geoopt_section( &
1253 subsection2, __location__, label=
"ROT_OPT", &
1254 description=
"This section sets the environment for the optimization of the rotation of the Dimer.", &
1255 just_optimizers=.true., &
1256 use_model_hessian=.false.)
1257 NULLIFY (subsection3)
1259 description=
"Controls the printing properties during the dimer rotation optimization run", &
1260 n_keywords=0, n_subsections=1, repeats=.true.)
1264 description=
"Controls the printing of basic information during the Geometry Optimization", &
1270 description=
"Controls the printing basic info during the cleaning of the "// &
1274 description=
"Prints atomic coordinates after rotation", &
1275 default_l_val=.false., lone_keyword_l_val=.true.)
1286 CALL section_create(subsection2, __location__, name=
"DIMER_VECTOR", &
1287 description=
"Specifies the initial dimer vector. This "// &
1288 "section overrides INITIALIZATION_METHOD, and will be "// &
1289 "updated on each step for producing the restart files.", &
1290 n_keywords=0, n_subsections=1, repeats=.false.)
1291 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1292 description=
"Specify on each line the components of the dimer vector.", repeats=.true., &
1293 usage=
"{Real} {Real} {Real}", type_of_var=
real_t, n_var=-1)
1302 END SUBROUTINE create_ts_section
1310 SUBROUTINE create_bfgs_section(section, use_model_hessian)
1312 LOGICAL,
INTENT(IN) :: use_model_hessian
1319 NULLIFY (section, keyword, print_key)
1321 description=
"Provides parameters to tune the BFGS optimization", &
1322 n_keywords=0, n_subsections=1, repeats=.false.)
1324 CALL keyword_create(keyword, __location__, name=
"TRUST_RADIUS", &
1325 description=
"Trust radius used in BFGS. Previously set to 0.1. "// &
1326 "Large values can lead to instabilities", &
1327 usage=
"TRUST_RADIUS {real}", unit_str=
'angstrom', &
1332 CALL keyword_create(keyword, __location__, name=
"USE_MODEL_HESSIAN", &
1333 description=
"Uses a model Hessian as initial guess instead of a unit matrix."// &
1334 " Should lead in general to improved convergence might be switched off for exotic cases", &
1335 usage=
"USE_MODEL_HESSIAN", &
1337 default_l_val=use_model_hessian, lone_keyword_l_val=.true.)
1341 CALL keyword_create(keyword, __location__, name=
"USE_RAT_FUN_OPT", &
1342 description=
"Includes a rational function optimization to determine the step."// &
1343 " Previously default but did not improve convergence in many cases", &
1344 usage=
"USE_RAT_FUN_OPT", &
1345 default_l_val=.false., lone_keyword_l_val=.true.)
1349 CALL keyword_create(keyword, __location__, name=
"RESTART_HESSIAN", &
1350 description=
"Controls the reading of the initial Hessian from file.", &
1351 usage=
"RESTART_HESSIAN", &
1352 default_l_val=.false., lone_keyword_l_val=.true.)
1356 CALL keyword_create(keyword, __location__, name=
"RESTART_FILE_NAME", &
1357 description=
"Specifies the name of the file used to read the initial Hessian.", &
1358 usage=
"RESTART_FILE_NAME {filename}", &
1364 description=
"Controls the printing of Hessian Restart file", &
1366 common_iter_levels=2)
1370 END SUBROUTINE create_bfgs_section
1377 SUBROUTINE create_cg_section(section)
1381 TYPE(
section_type),
POINTER :: subsection, subsubsection
1385 NULLIFY (section, subsection, subsubsection, keyword)
1387 description=
"Provides parameters to tune the conjugate gradient optimization", &
1388 n_keywords=0, n_subsections=1, repeats=.false.)
1390 CALL keyword_create(keyword, __location__, name=
"MAX_STEEP_STEPS", &
1391 description=
"Maximum number of steepest descent steps before starting the"// &
1392 " conjugate gradients optimization.", &
1393 usage=
"MAX_STEEP_STEPS {integer}", &
1398 CALL keyword_create(keyword, __location__, name=
"RESTART_LIMIT", &
1399 description=
"Cosine of the angle between two consecutive searching directions."// &
1400 " If the angle during a CG optimization is less than the one corresponding to"// &
1401 " to the RESTART_LIMIT the CG is reset and one step of steepest descent is"// &
1403 usage=
"RESTART_LIMIT {real}", &
1404 default_r_val=0.9_dp)
1408 CALL keyword_create(keyword, __location__, name=
"FLETCHER_REEVES", &
1409 description=
"Uses FLETCHER-REEVES instead of POLAK-RIBIERE when using Conjugate Gradients", &
1410 usage=
"FLETCHER_REEVES", &
1411 default_l_val=.false., lone_keyword_l_val=.true.)
1416 CALL section_create(subsection, __location__, name=
"LINE_SEARCH", &
1417 description=
"Provides parameters to tune the line search during the conjugate gradient optimization", &
1418 n_keywords=0, n_subsections=1, repeats=.false.)
1421 description=
"1D line search algorithm to be used with the CG optimizer,"// &
1422 " in increasing order of robustness and cost. ", &
1423 usage=
"TYPE GOLD", &
1425 enum_c_vals=
s2a(
"2PNT",
"GOLD",
"FIT"), &
1426 enum_desc=
s2a(
"extrapolate based on 2 points", &
1427 "perform 1D golden section search of the minimum (very expensive)", &
1428 "perform 1D fit of a parabola on several evaluation of energy "// &
1429 "(very expensive and more robust vs numerical noise)"), &
1435 NULLIFY (subsubsection)
1437 description=
"Provides parameters to tune the line search for the two point based line search.", &
1438 n_keywords=0, n_subsections=1, repeats=.false.)
1440 CALL keyword_create(keyword, __location__, name=
"MAX_ALLOWED_STEP", &
1441 description=
"Max allowed value for the line search step.", &
1442 usage=
"MAX_ALLOWED_STEP {real}", unit_str=
"internal_cp2k", &
1443 default_r_val=0.25_dp)
1448 keyword, __location__, name=
"LINMIN_GRAD_ONLY", &
1449 description=
"Use only the gradient, not the energy for line minimizations (e.g. in conjugate gradients).", &
1450 usage=
"LINMIN_GRAD_ONLY T", &
1451 default_l_val=.false., lone_keyword_l_val=.true.)
1459 NULLIFY (subsubsection)
1461 description=
"Provides parameters to tune the line search for the gold search.", &
1462 n_keywords=0, n_subsections=1, repeats=.false.)
1464 CALL keyword_create(keyword, __location__, name=
"INITIAL_STEP", &
1465 description=
"Initial step size used, e.g. for bracketing or minimizers. "// &
1466 "Might need to be reduced for systems with close contacts", &
1467 usage=
"INITIAL_STEP {real}", unit_str=
"internal_cp2k", &
1468 default_r_val=0.2_dp)
1473 description=
"Limit in 1D bracketing during line search in Conjugate Gradients Optimization.", &
1474 usage=
"BRACK_LIMIT {real}", unit_str=
"internal_cp2k", &
1475 default_r_val=100.0_dp)
1480 description=
"Tolerance requested during Brent line search in Conjugate Gradients Optimization.", &
1481 usage=
"BRENT_TOL {real}", unit_str=
"internal_cp2k", &
1482 default_r_val=0.01_dp)
1486 CALL keyword_create(keyword, __location__, name=
"BRENT_MAX_ITER", &
1487 description=
"Maximum number of iterations in brent algorithm "// &
1488 "(used for the line search in Conjugated Gradients Optimization)", &
1489 usage=
"BRENT_MAX_ITER {integer}", &
1498 END SUBROUTINE create_cg_section
1505 SUBROUTINE create_lbfgs_section(section)
1512 NULLIFY (section, keyword)
1514 description=
"Provides parameters to tune the limited memory BFGS (LBFGS) optimization", &
1515 n_keywords=0, n_subsections=1, repeats=.false., &
1519 description=
"Maximum rank (and consequently size) of the "// &
1520 "approximate Hessian matrix used by the LBFGS optimizer. "// &
1521 "Larger values (e.g. 30) will accelerate the convergence behaviour "// &
1522 "at the cost of a larger memory consumption.", &
1523 usage=
"MAX_H_RANK {integer}", &
1528 CALL keyword_create(keyword, __location__, name=
"MAX_F_PER_ITER", &
1529 description=
"Maximum number of force evaluations per iteration"// &
1530 " (used for the line search)", &
1531 usage=
"MAX_F_PER_ITER {integer}", &
1537 description=
"How much output is written out by the LBFGS algorithm. "// &
1538 "Currently this is independent of the &GLOBAL/PRINT_LEVEL setting.", &
1539 usage=
"PRINT_LEVEL MEDIUM", &
1540 enum_c_vals=
s2a(
"SILENT",
"LOW",
"MEDIUM",
"HIGH",
"DEBUG"), &
1541 enum_desc=
s2a(
"Almost no output", &
1542 "Little output about f and |proj g| every iteration", &
1543 "Quite some output about details every iteration", &
1544 "Lots of output about changes of active set and final x", &
1545 "Everything is written out, useful for debugging purposes only"), &
1552 CALL keyword_create(keyword, __location__, name=
"WANTED_PROJ_GRADIENT", &
1553 description=
"Convergence criterion (overrides the general ones):"// &
1554 " Requested norm threshold of the gradient multiplied"// &
1555 " by the approximate Hessian.", &
1556 usage=
"WANTED_PROJ_GRADIENT {real}", unit_str=
"internal_cp2k", &
1557 default_r_val=1.0e-16_dp)
1561 CALL keyword_create(keyword, __location__, name=
"WANTED_REL_F_ERROR", &
1562 description=
"Convergence criterion (overrides the general ones):"// &
1563 " Requested relative error on the objective function"// &
1564 " of the optimizer (the energy)", &
1565 usage=
"WANTED_REL_F_ERROR {real}", unit_str=
"internal_cp2k", &
1566 default_r_val=1.0e-16_dp)
1571 keyword, __location__, name=
"TRUST_RADIUS", &
1572 description=
"Trust radius used in LBFGS. Not completely in depth tested. Negativ values means no trust radius is used.", &
1573 usage=
"TRUST_RADIUS {real}", unit_str=
'angstrom', &
1574 default_r_val=-1.0_dp)
1578 CALL keyword_create(keyword, __location__, name=
"__CONTROL_VAL", &
1579 description=
"Hidden parameter that controls the printing behavior "// &
1580 "of the LBFGS optimizer for advanced debug purposes. This option "// &
1581 "overrides PRINT_LEVEL setting if explicit.", &
1586 END SUBROUTINE create_lbfgs_section
1593 SUBROUTINE create_fp_section(section)
1599 cpassert(.NOT.
ASSOCIATED(section))
1600 CALL section_create(section, __location__, name=
"FLEXIBLE_PARTITIONING", &
1601 description=
"This section sets up flexible_partitioning", &
1602 n_keywords=1, n_subsections=1, repeats=.false.)
1604 NULLIFY (keyword, print_key)
1606 CALL keyword_create(keyword, __location__, name=
"CENTRAL_ATOM", &
1607 description=
"Specifies the central atom.", &
1608 usage=
"CENTRAL_ATOM {integer}", &
1614 description=
"Specifies the list of atoms that should remain close to the central atom.", &
1615 usage=
"INNER_ATOMS {integer} {integer} .. {integer}", &
1621 description=
"Specifies the list of atoms that should remain far from the central atom.", &
1622 usage=
"OUTER_ATOMS {integer} {integer} .. {integer}", &
1627 CALL keyword_create(keyword, __location__, name=
"INNER_RADIUS", &
1628 description=
"radius of the inner wall", &
1629 usage=
"INNER_RADIUS {real} ", type_of_var=
real_t, &
1630 n_var=1, unit_str=
"angstrom")
1634 CALL keyword_create(keyword, __location__, name=
"OUTER_RADIUS", &
1635 description=
"radius of the outer wall", &
1636 usage=
"OUTER_RADIUS {real} ", type_of_var=
real_t, &
1637 n_var=1, unit_str=
"angstrom")
1642 description=
"Sets the force constant of the repulsive harmonic potential", &
1643 usage=
"STRENGTH 1.0", default_r_val=1.0_dp)
1648 description=
"If a bias potential counter-acting the weight term should be applied (recommended).", &
1649 usage=
"BIAS F", default_l_val=.true., lone_keyword_l_val=.true.)
1654 description=
"Sets the temperature parameter that is used in the baising potential."// &
1655 " It is recommended to use the actual simulation temperature", &
1656 usage=
"TEMPERATURE 300", default_r_val=300.0_dp, unit_str=
'K')
1660 CALL keyword_create(keyword, __location__, name=
"SMOOTH_WIDTH", &
1661 description=
"Sets the width of the smooth counting function.", &
1662 usage=
"SMOOTH_WIDTH 0.2", default_r_val=0.02_dp, unit_str=
'angstrom')
1667 description=
"Controls the printing of FP info during flexible partitioning simulations.", &
1669 filename=
"FLEXIBLE_PARTIONING")
1674 description=
"Controls the printing of FP info at startup", &
1676 filename=
"__STD_OUT__")
1680 END SUBROUTINE create_fp_section
1687 SUBROUTINE create_driver_section(section)
1692 cpassert(.NOT.
ASSOCIATED(section))
1694 description=
"This section defines the parameters needed to run in i-PI driver mode.", &
1696 n_keywords=4, n_subsections=0, repeats=.false.)
1700 description=
"Use a UNIX socket rather than an INET socket.", &
1701 usage=
"unix LOGICAL", &
1702 default_l_val=.false., lone_keyword_l_val=.true.)
1707 description=
"Port number for the i-PI server.", &
1708 usage=
"port <INTEGER>", &
1709 default_i_val=12345)
1714 description=
"Host name for the i-PI server.", &
1715 usage=
"host <HOSTNAME>", &
1716 default_c_val=
"localhost")
1721 description=
"Prefix used to build the path of the UNIX socket file, "// &
1722 "as /tmp/<PREFIX>_<HOST>. Only relevant if UNIX is set to true.", &
1723 usage=
"PREFIX ipi", &
1724 default_c_val=
"ipi")
1729 description=
"Sleeping time while waiting for for driver commands [s].", &
1730 usage=
"SLEEP_TIME 0.1", &
1731 default_r_val=0.01_dp)
1735 END SUBROUTINE create_driver_section
1742 SUBROUTINE create_pint_section(section)
1746 TYPE(
section_type),
POINTER :: print_key, subsection, subsubsection
1748 cpassert(.NOT.
ASSOCIATED(section))
1750 description=
"The section that controls a path integral run", &
1751 n_keywords=13, n_subsections=9, repeats=.false.)
1755 description=
"Specify number beads to use", repeats=.false., &
1759 CALL keyword_create(keyword, __location__, name=
"proc_per_replica", &
1760 description=
"Specify number of processors to use for each replica", &
1761 repeats=.false., default_i_val=0)
1765 description=
"Number of steps (if MAX_STEP is not explicitly given"// &
1766 " the program will perform this number of steps)", repeats=.false., &
1771 description=
"Maximum step number (the program will stop if"// &
1772 " ITERATION >= MAX_STEP even if NUM_STEPS has not been reached)", &
1773 repeats=.false., default_i_val=10)
1777 description=
"Specify the iteration number from which it should be "// &
1778 "counted", default_i_val=0)
1782 description=
"The temperature you want to simulate", &
1787 CALL keyword_create(keyword, __location__, name=
"kT_CORRECTION", &
1788 description=
"Corrects for the loss of temperature due to constrained "// &
1789 "degrees of freedom for Nose-Hover chains and numeric integration", &
1790 repeats=.false., default_l_val=.false.)
1793 CALL keyword_create(keyword, __location__, name=
"T_tol", variants=[
"temp_to"], &
1794 description=
"threshold for the oscillations of the temperature "// &
1795 "excedeed which the temperature is rescaled. 0 means no rescaling.", &
1796 default_r_val=0._dp, unit_str=
"K")
1800 description=
"timestep (might be subdivised in nrespa subtimesteps", &
1803 usage=
"dt 1.0", unit_str=
"fs")
1807 description=
"integrator scheme for integrating the harmonic bead springs.", &
1808 usage=
"HARM_INT (NUMERIC|EXACT)", &
1810 enum_c_vals=
s2a(
"NUMERIC",
"EXACT"), &
1815 description=
"number of respa steps for the bead for each md step", &
1816 repeats=.false., default_i_val=5)
1820 CALL keyword_create(keyword, __location__, name=
"transformation", &
1821 description=
"Specifies the coordinate transformation to use", &
1822 usage=
"TRANSFORMATION (NORMAL|STAGE)", &
1824 enum_c_vals=
s2a(
"NORMAL",
"STAGE"), &
1830 description=
"Specifies the real time propagator to use", &
1831 usage=
"PROPAGATOR (PIMD|RPMD|CMD|BCMD)", &
1833 enum_c_vals=
s2a(
"PIMD",
"RPMD",
"CMD",
"BCMD"), &
1837 CALL keyword_create(keyword, __location__, name=
"FIX_CENTROID_POS", &
1838 description=
"Propagate all DOF but the centroid - "// &
1839 "useful for equilibration of the non-centroid modes "// &
1840 "(activated only if TRANSFORMATION==NORMAL)", &
1841 repeats=.false., default_l_val=.false., &
1842 lone_keyword_l_val=.true.)
1846 NULLIFY (subsection, subsubsection)
1847 CALL section_create(subsection, __location__, name=
"NORMALMODE", &
1848 description=
"Controls the normal mode transformation", &
1849 n_keywords=3, n_subsections=0, repeats=.false.)
1851 description=
"Value of the thermostat mass of centroid degree of freedom", &
1852 repeats=.false., default_r_val=-1.0_dp)
1856 description=
"Value of the thermostat mass of non-centroid degrees of freedom", &
1857 repeats=.false., default_r_val=-1.0_dp)
1861 description=
"mass scale factor for non-centroid degrees of freedom", &
1862 repeats=.false., default_r_val=1.0_dp)
1866 description=
"mass scale factor for non-centroid degrees of freedom, &
1867& naming convention according to Witt, 2008, <https://doi.org/10.1063/1.3125009>.", &
1868 repeats=.false., default_r_val=8.0_dp)
1876 description=
"The section that controls the staging transformation", &
1877 n_keywords=2, n_subsections=0, repeats=.false.)
1879 description=
"Value of the j parameter for the staging transformation", &
1880 repeats=.false., default_i_val=2)
1884 description=
"Value of the nose-hoover mass for the endbead (Q_end)", &
1885 repeats=.false., default_i_val=2)
1892 description=
"Sets positions and velocities of the beads", &
1893 n_keywords=0, n_subsections=2, &
1895 CALL create_coord_section(subsubsection,
"BEADS")
1898 CALL create_velocity_section(subsubsection,
"BEADS")
1905 description=
"Controls the Nose-Hoover thermostats", &
1906 n_keywords=1, n_subsections=2, &
1909 description=
"length of nose-hoover chain. 0 means no thermostat", &
1910 repeats=.false., default_i_val=2)
1913 CALL create_coord_section(subsubsection,
"NOSE")
1916 CALL create_velocity_section(subsubsection,
"NOSE")
1927 description=
"Controls the PI Langevin Equation thermostat."// &
1928 " Needs the exact harmonic integrator."// &
1929 " May lead to unphysical motions if constraint e.g. FIXED_ATOMS, is applied."// &
1930 " RESTART_HELIUM section has to be .FALSE. when restarting the PIGLET job.", &
1932 n_keywords=3, n_subsections=1, &
1938 description=
"Time constant for centroid motion. "// &
1939 "If zero or negative the centroid is not thermostated.", &
1940 usage=
"TAU {real}", type_of_var=
real_t, &
1941 unit_str=
"fs", n_var=1, default_r_val=1000.0_dp)
1945 description=
"Scaling of friction to mode coupling", &
1946 usage=
"LAMBDA {real}", type_of_var=
real_t, &
1947 n_var=1, default_r_val=0.5_dp)
1950 CALL keyword_create(keyword, __location__, name=
"THERMOSTAT_ENERGY", &
1951 description=
"Thermostat energy for conserved quantity. "// &
1952 "Only useful in restart files.", &
1953 usage=
"THERMOSTAT_ENERGY {real}", type_of_var=
real_t, &
1954 n_var=1, default_r_val=0.0_dp)
1961 description=
"Controls the PI Generalized Langevin Equation thermostat."// &
1962 " Needs the exact harmonic integrator", &
1964 n_keywords=4, n_subsections=2, &
1969 CALL section_create(subsubsection, __location__, name=
"EXTRA_DOF", &
1970 description=
"Additional degrees of freedom to ensure Markovian Dynamics.", &
1971 n_keywords=1, n_subsections=0, repeats=.false.)
1972 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1973 description=
"Restart values for additional degrees of freedom" &
1974 //
" (only for restarts, do not set explicitly)", &
1976 type_of_var=
real_t, n_var=-1)
1982 description=
"Number of extra degrees of freedom to ensure markovian dynamics", &
1983 repeats=.false., default_i_val=8)
1986 CALL keyword_create(keyword, __location__, name=
"MATRICES_FILE_NAME", &
1987 description=
"Filename containig the raw matrices from "// &
1988 "<https://gle4md.org/index.html?page=matrix>.", &
1989 repeats=.false., default_lc_val=
"PIGLET.MAT")
1992 CALL keyword_create(keyword, __location__, name=
"SMATRIX_INIT", &
1993 description=
"Select algorithm to initialize piglet S-matrices", &
1994 usage=
"SMATRIX_INIT (CHOLESKY|DIAGONAL)", &
1996 enum_c_vals=
s2a(
"CHOLESKY",
"DIAGONAL"), &
2000 CALL keyword_create(keyword, __location__, name=
"THERMOSTAT_ENERGY", &
2001 description=
"Thermostat energy for conserved quantity. "// &
2002 "Only useful in restart files.", &
2003 usage=
"THERMOSTAT_ENERGY {real}", type_of_var=
real_t, &
2004 n_var=1, default_r_val=0.0_dp)
2011 description=
"Controls the QTB-PILE thermostat."// &
2012 " Needs the exact harmonic integrator", &
2014 n_keywords=7, n_subsections=1, &
2020 description=
"Time constant for centroid motion. ", &
2021 usage=
"TAU {real}", type_of_var=
real_t, &
2022 unit_str=
"fs", n_var=1, default_r_val=1000.0_dp)
2026 description=
"Scaling of friction to ring polymer NM freq.", &
2027 usage=
"LAMBDA {real}", type_of_var=
real_t, &
2028 n_var=1, default_r_val=0.5_dp)
2032 description=
"Defines which version to use "// &
2033 "0: f_P^(0), 1: f_P^(1)", &
2034 usage=
"FP {integer}", type_of_var=
integer_t, &
2035 n_var=1, default_i_val=1)
2039 description=
"Inverse of cutoff freq. for the centroid mode", &
2040 usage=
"TAUCUT {real}", type_of_var=
real_t, &
2041 unit_str=
"fs", n_var=1, default_r_val=0.5_dp)
2045 description=
"Scaling of cutoff freq. to ring polymer NM freq.", &
2046 usage=
"LAMBCUT {real}", type_of_var=
real_t, &
2047 n_var=1, default_r_val=2.0_dp)
2051 description=
"Number of points used for the convolution product.", &
2052 usage=
"NF {integer}", type_of_var=
integer_t, &
2053 n_var=1, default_i_val=128)
2056 CALL keyword_create(keyword, __location__, name=
"THERMOSTAT_ENERGY", &
2057 description=
"Thermostat energy for conserved quantity. "// &
2058 "Only useful in restart files.", &
2059 usage=
"THERMOSTAT_ENERGY {real}", type_of_var=
real_t, &
2060 n_var=1, default_r_val=0.0_dp)
2067 description=
"Controls the initialization if the beads are not present", &
2070 CALL keyword_create(keyword, __location__, name=
"LEVY_POS_SAMPLE", &
2071 description=
"Sample bead positions assuming free particle "// &
2072 "behavior (performs a Levy random walk of length P around "// &
2073 "the classical position of each atom at the physical "// &
2074 "temperature defined in PINT%TEMP)", &
2075 repeats=.false., default_l_val=.false., &
2076 lone_keyword_l_val=.true.)
2079 CALL keyword_create(keyword, __location__, name=
"LEVY_CORRELATED", &
2080 description=
"Use the same Levy path for all atoms, though "// &
2081 "with mass-dependent variances (might help at very low T)", &
2082 repeats=.false., default_l_val=.false., &
2083 lone_keyword_l_val=.true.)
2086 CALL keyword_create(keyword, __location__, name=
"LEVY_TEMP_FACTOR", &
2087 description=
"Multiplicative correction factor for the "// &
2088 "temperature at which the Levy walk is performed "// &
2089 "(correction is due to the interactions that modify "// &
2090 "the spread of a free particle)", &
2091 repeats=.false., default_r_val=1.0_dp)
2095 description=
"Initial seed for the (pseudo)random number "// &
2096 "generator that controls Levy walk for bead positions.", &
2097 usage=
"LEVY_SEED <INTEGER>", default_i_val=1234, &
2101 CALL keyword_create(keyword, __location__, name=
"THERMOSTAT_SEED", &
2102 description=
"Initial seed for the (pseudo)random number "// &
2103 "generator that controls the PILE and PIGLET thermostats.", &
2104 usage=
"THERMOSTAT_SEED <INTEGER>", default_i_val=12345, &
2108 CALL keyword_create(keyword, __location__, name=
"RANDOMIZE_POS", &
2109 description=
"add gaussian noise to the positions of the beads", &
2110 repeats=.false., default_l_val=.false., lone_keyword_l_val=.true.)
2114 CALL keyword_create(keyword, __location__, name=
"CENTROID_SPEED", &
2115 description=
"adds random velocity component to the centroid modes "// &
2116 "(useful to correct for the averaging out of the speed of various beads)", &
2117 repeats=.false., default_l_val=.false., lone_keyword_l_val=.true.)
2121 CALL keyword_create(keyword, __location__, name=
"VELOCITY_QUENCH", &
2122 description=
"set the initial velocities to zero", &
2123 repeats=.false., default_l_val=.false., lone_keyword_l_val=.true.)
2126 CALL keyword_create(keyword, __location__, name=
"VELOCITY_SCALE", &
2127 description=
"scale initial velocities to the temperature given in MOTION%PINT%TEMP", &
2128 repeats=.false., default_l_val=.false., lone_keyword_l_val=.true.)
2135 CALL create_helium_section(subsection)
2140 description=
"Controls the path integral-specific output", &
2141 n_keywords=2, n_subsections=0, repeats=.false.)
2146 description=
"Controls the output of the path integral energies", &
2152 description=
"Controls the output of the path integral action", &
2158 description=
"Controls the output of the centroid's position", &
2159 unit_str=
"angstrom", &
2162 description=
"Output file format for the positions of centroid")
2167 description=
"Controls the output of the centroid's velocity", &
2168 unit_str=
"bohr*au_t^-1", &
2171 description=
"Output file format for the velocity of centroid")
2176 description=
"Controls the output of the centroid's radii of gyration", &
2177 unit_str=
"angstrom", &
2183 description=
"Controls the output of the center of mass", &
2188 CALL keyword_create(keyword, __location__, name=
"IMAGINARY_TIME_STRIDE", &
2189 description=
"Prints only every nth bead trajectory", &
2190 repeats=.false., default_i_val=1)
2197 END SUBROUTINE create_pint_section
2207 SUBROUTINE create_helium_section(section)
2211 TYPE(
section_type),
POINTER :: print_key, subsection, subsubsection
2213 cpassert(.NOT.
ASSOCIATED(section))
2216 description=
"The section that controls optional helium solvent"// &
2217 " environment (highly experimental, not for general use yet)", &
2218 n_keywords=31, n_subsections=11, repeats=.false.)
2221 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2222 description=
"Whether or not to actually use this section", &
2223 usage=
"silent", default_l_val=.false., lone_keyword_l_val=.true.)
2228 description=
"Simulate helium solvent only, "// &
2229 "disregard solute entirely", &
2230 repeats=.false., default_l_val=.false., &
2231 lone_keyword_l_val=.true.)
2235 CALL keyword_create(keyword, __location__, name=
"INTERACTION_POT_SCAN", &
2236 description=
"Scan solute-helium interaction potential, "// &
2237 "cubefile parameters set in subsection RHO", &
2238 repeats=.false., default_l_val=.false., &
2239 lone_keyword_l_val=.true.)
2244 description=
"Number of independent helium environments", &
2245 repeats=.false., default_i_val=1)
2249 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_FILE_NAME", &
2250 description=
"Name of the Helium interaction potential file", &
2251 repeats=.false., default_lc_val=
"HELIUM.POT")
2256 description=
"Get average MC forces or last MC forces to propagate MD", &
2257 usage=
"GET_FORCES (AVERAGE|LAST)", &
2259 enum_c_vals=
s2a(
"AVERAGE",
"LAST"), &
2264 CALL keyword_create(keyword, __location__, name=
"SOLUTE_INTERACTION", &
2265 description=
"Interaction potential between helium and the solute", &
2266 usage=
"SOLUTE_INTERACTION (NONE | MWATER | NNP)", &
2268 enum_c_vals=
s2a(
"NONE",
"MWATER",
"NNP"), &
2274 "No interaction with solute", &
2275 "Test interaction with wrong Water", &
2276 "Interaction with NNP"))
2281 description=
"Number of helium atoms", &
2282 repeats=.false., default_i_val=64)
2287 description=
"Number of helium path integral beads", &
2288 repeats=.false., default_i_val=25)
2293 description=
"Initial seed for the (pseudo)random number "// &
2294 "generator that controls helium coordinate generation and propagation.", &
2295 usage=
"RNG_SEED <INTEGER>", default_i_val=12345, &
2301 variants=
s2a(
"INOROT"), &
2302 description=
"Number of MC iterations at the same time slice(s) "// &
2303 "(number of inner MC loop iterations)", &
2304 repeats=.false., default_i_val=6600)
2309 variants=
s2a(
"IROT"), &
2310 description=
"how often to reselect the time slice(s) to work on "// &
2311 "(number of outer MC loop iterations)", &
2312 repeats=.false., default_i_val=300)
2316 CALL keyword_create(keyword, __location__, name=
"SAMPLING_METHOD", &
2317 description=
"Choose between Ceperley or the worm algorithm", &
2318 usage=
"SAMPLING_METHOD (CEPERLEY|WORM)", &
2320 enum_c_vals=
s2a(
"CEPERLEY",
"WORM"), &
2325 CALL keyword_create(keyword, __location__, name=
"COORD_INIT_TEMP", &
2326 description=
"Temperature for thermal gaussian initialization of the helium."// &
2327 " Negative values correspond to a hot start.", &
2333 CALL keyword_create(keyword, __location__, name=
"SOLUTE_RADIUS", &
2334 description=
"Radius of the solute molecule for prevention of"// &
2335 " coordinate collision during initialization", &
2337 repeats=.false., type_of_var=
real_t, unit_str=
"angstrom")
2342 NULLIFY (subsection)
2344 description=
"This section contains all information to run an helium-solute "// &
2345 "interaction Neural Network Potential (NNP) calculation.", &
2346 n_keywords=4, n_subsections=3, repeats=.false.)
2348 CALL keyword_create(keyword, __location__, name=
"NNP_INPUT_FILE_NAME", &
2349 description=
"File containing the input information for the setup "// &
2350 "of the NNP (n2p2/RuNNer format). ", &
2351 repeats=.false., default_lc_val=
"input.nn")
2355 CALL keyword_create(keyword, __location__, name=
"SCALE_FILE_NAME", &
2356 description=
"File containing the scaling information for the symmetry "// &
2357 "functions of the NNP. ", &
2358 repeats=.false., default_lc_val=
"scaling.data")
2362 CALL keyword_create(keyword, __location__, name=
"RAD_SPLINE_N", &
2363 description=
"Number of knots per radial group in the cubic-Hermite "// &
2364 "spline tables that tabulate the radial symmetry-function product "// &
2365 "y(r) = exp(-eta*(r-rs)^2) * fcut(r). Cubic-Hermite per-evaluation "// &
2366 "error scales as O(1/n^4); the default keeps the spline residual "// &
2367 "inside the NNP regression tolerance for a radial cutoff of "// &
2368 "~12 bohr. Models with larger cutoffs or stricter tolerances may "// &
2369 "need a larger n. Memory cost scales linearly in n per radial group.", &
2373 default_i_val=8192, &
2374 usage=
"RAD_SPLINE_N 8192")
2379 description=
"Verlet skin distance for the NNP descriptor neighbour "// &
2380 "cell-list. The neighbour-list cutoff is (symmetry-function cutoff "// &
2381 "+ skin); the cell-list chain is rebuilt only when an atom drifts "// &
2382 "more than skin/2 from its rebuild-time position, analogous to the "// &
2383 "LAMMPS 'neighbor <skin> bin' command. Larger skin reduces the "// &
2384 "rebuild rate but enlarges the per-atom neighbour list. A negative "// &
2385 "value (default) selects the automatic heuristic "// &
2386 "MIN(0.5 bohr, 0.1*cutoff). Useful upper bound is half the smallest "// &
2387 "perpendicular cell width.", &
2391 default_r_val=-1.0_dp, &
2393 usage=
"VERLET_SKIN [bohr] 0.5")
2397 NULLIFY (subsubsection)
2398 CALL section_create(subsubsection, __location__, name=
"SR_CUTOFF", &
2399 description=
"Section for failsafe short range cutoffs for the NNPs, "// &
2400 "if the distance between solvent and specified solute element becomes "// &
2401 "smaller than the given cutoff, an artifical repulsive potential is "// &
2402 "introduced. Note this is only meant to prevent such configurations, "// &
2403 "not to physically sample them.", &
2404 n_keywords=2, n_subsections=0, repeats=.true.)
2407 description=
"Solute element for which the short range cutoff is in effect", &
2408 repeats=.false., default_c_val=
"none")
2413 description=
"Short range cutoff in Angstrom, below this cutoff, the energy "// &
2414 "is replaced by a sizable positive value plus a 1/r**2 term to guide particles "// &
2415 "away from each other.", &
2417 repeats=.false., type_of_var=
real_t, unit_str=
"angstrom")
2423 NULLIFY (subsubsection)
2425 description=
"Section for a single NNP model. If this section is repeated, "// &
2426 "a committee model (C-NNP)is used where the NNP members share the same "// &
2427 "symmetry functions. ", &
2428 n_keywords=1, n_subsections=0, repeats=.true.)
2431 description=
"File containing the weights for the artificial neural "// &
2432 "networks of the NNP. The specified name is extended by .XXX.data ", &
2433 repeats=.false., default_lc_val=
"weights")
2440 NULLIFY (subsubsection)
2442 description=
"Section of possible print options in NNP code.", &
2443 n_keywords=0, n_subsections=3, repeats=.false.)
2444 NULLIFY (print_key, keyword)
2447 description=
"Controls the printing of the NNP energies.", &
2453 description=
"Controls the printing of the STD per atom of the NNP forces.", &
2459 description=
"If activated, output structures with extrapolation "// &
2460 "warning in xyz-format", &
2471 NULLIFY (subsection)
2473 description=
"Enables sampling with Ceperley's algorithm", &
2474 n_keywords=2, n_subsections=1, repeats=.false.)
2477 description=
"how many time slices to change at once (+1). "// &
2478 "Must be a power of 2 currently", &
2479 repeats=.false., default_i_val=8)
2483 CALL keyword_create(keyword, __location__, name=
"MAX_PERM_CYCLE", &
2484 description=
"how large cyclic permutations to try", &
2485 repeats=.false., default_i_val=6)
2489 NULLIFY (subsubsection)
2490 CALL section_create(subsubsection, __location__, name=
"M-SAMPLING", &
2491 description=
"Permutation cycle length sampling settings", &
2492 n_keywords=3, n_subsections=0, repeats=.false.)
2493 CALL keyword_create(keyword, __location__, name=
"DISTRIBUTION-TYPE", &
2494 description=
"Distribution from which the cycle length m is sampled", &
2495 usage=
"DISTRIBUTION-TYPE (SINGLEV|UNIFORM|LINEAR|QUADRATIC|EXPONENTIAL|GAUSSIAN)", &
2514 description=
"Value of m treated in a special way "// &
2515 "(specific behavior depends on the distribution type chosen)", &
2521 description=
"Probability ratio betw M-VALUE and other cycle lengths", &
2523 default_r_val=1.0_dp)
2532 NULLIFY (subsection)
2534 description=
"Enables sampling via the canonical worm algorithm adapted from Bonisegni", &
2535 n_keywords=12, n_subsections=0, repeats=.false.)
2537 CALL keyword_create(keyword, __location__, name=
"CENTROID_DRMAX", &
2538 description=
"Maximum displacement allowed for the centroid moves", &
2539 repeats=.false., default_r_val=0.5_dp)
2544 description=
"From 2 up to max. L-1 beads will be moved", &
2545 repeats=.false., default_i_val=5)
2549 CALL keyword_create(keyword, __location__, name=
"OPEN_CLOSE_SCALE", &
2550 description=
"Open/Close acceptance adjustment parameter", &
2551 repeats=.false., default_r_val=0.01_dp)
2556 description=
"Enable bosonic exchange sampling", &
2557 repeats=.false., default_l_val=.true.)
2561 CALL keyword_create(keyword, __location__, name=
"MAX_OPEN_CYCLES", &
2562 description=
"If > 0 then reset positions and permutations to the previous closed &
2563 & state if staying more than this amount of MC cycles in open state to avoid staying &
2564 & trapped in open state for too long. Use with caution as it can potentially introduce &
2565 & a bias in the sampling.", &
2566 repeats=.false., default_i_val=0)
2570 CALL keyword_create(keyword, __location__, name=
"SHOW_STATISTICS", &
2571 description=
"Show sampling statistics in output", &
2572 repeats=.false., default_l_val=.true.)
2576 CALL keyword_create(keyword, __location__, name=
"CENTROID_WEIGHT", &
2577 description=
"Absolute weight of the centroid move", &
2578 repeats=.false., default_i_val=10)
2582 CALL keyword_create(keyword, __location__, name=
"STAGING_WEIGHT", &
2583 description=
"Absolute weight of the staging move", &
2584 repeats=.false., default_i_val=30)
2588 CALL keyword_create(keyword, __location__, name=
"OPEN_CLOSE_WEIGHT", &
2589 description=
"Absolute weight of the open/close move", &
2590 repeats=.false., default_i_val=10)
2594 CALL keyword_create(keyword, __location__, name=
"HEAD_TAIL_WEIGHT", &
2595 description=
"Absolute weight of the head/tail moves (both)", &
2596 repeats=.false., default_i_val=10)
2600 CALL keyword_create(keyword, __location__, name=
"CRAWL_WEIGHT", &
2601 description=
"Absolute weight of the crawl bwd/fwd moves (both)", &
2602 repeats=.false., default_i_val=10)
2606 CALL keyword_create(keyword, __location__, name=
"CRAWL_REPETITION", &
2607 description=
"Number of repeated crawl moves", &
2608 repeats=.false., default_i_val=4)
2613 description=
"Absolute weight of the crawl move", &
2614 repeats=.false., default_i_val=10)
2624 description=
"Use periodic boundary conditions for helium", &
2625 repeats=.false., default_l_val=.false.)
2630 description=
"PBC unit cell size (NOTE 1: density, number of atoms"// &
2631 " and volume are interdependent - give only two of them; "// &
2632 "NOTE 2: for small cell sizes specify NATOMS instead)", &
2633 repeats=.false., type_of_var=
real_t, unit_str=
"angstrom")
2638 description=
"PBC unit cell shape for helium", &
2639 usage=
"CELL_SHAPE (CUBE|OCTAHEDRON)", &
2641 enum_c_vals=
s2a(
"CUBE",
"OCTAHEDRON"), &
2646 CALL keyword_create(keyword, __location__, name=
"DROPLET_RADIUS", &
2647 description=
"Reject a move if any of the new positions does not lie within"// &
2648 " this range from the center of gravity", &
2649 repeats=.false., type_of_var=
real_t, default_r_val=huge(1.0_dp), &
2650 unit_str=
"angstrom")
2655 description=
"trial density of helium for determining the helium "// &
2659 unit_str=
"angstrom^-3")
2664 description=
"Presample He coordinates before first PIMD step", &
2665 repeats=.false., default_l_val=.false.)
2670 description=
"Radial distribution settings", &
2671 n_keywords=5, n_subsections=0, repeats=.false.)
2673 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2674 description=
"Whether or not to actually calculate this property", &
2675 default_l_val=.false., lone_keyword_l_val=.true.)
2680 description=
"Maximum RDF range, defaults to unit cell size", &
2681 repeats=.false., type_of_var=
real_t, &
2682 unit_str=
"angstrom")
2687 description=
"Number of bins", &
2694 description=
"Whether or not to calculate solute-He RDFs (if solute is present)", &
2695 default_l_val=.true., lone_keyword_l_val=.true.)
2700 description=
"Whether or not to calculate He-He RDFs", &
2701 default_l_val=.false., lone_keyword_l_val=.true.)
2708 NULLIFY (subsection)
2710 description=
"Spatial distribution settings", &
2711 n_keywords=10, n_subsections=0, repeats=.false.)
2712 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2713 description=
"Whether or not to actually calculate densities "// &
2714 "(requires significant amount of memory, depending on the value of NBIN)", &
2715 default_l_val=.false., lone_keyword_l_val=.true.)
2719 description=
"Number of grid points in each direction for density binning", &
2725 CALL keyword_create(keyword, __location__, name=
"MIN_CYCLE_LENGTHS_WDG", &
2726 description=
"Density of winding paths "// &
2727 "not shorter than the given length", &
2728 repeats=.false., usage=
"MIN_CYCLE_LENGTHS_WDG <INT> <INT> .. <INT>", &
2733 CALL keyword_create(keyword, __location__, name=
"MIN_CYCLE_LENGTHS_NON", &
2734 description=
"Density of non-winding paths "// &
2735 "not shorter than the given length", &
2736 repeats=.false., usage=
"MIN_CYCLE_LENGTHS_NON <INT> <INT> .. <INT>", &
2741 CALL keyword_create(keyword, __location__, name=
"MIN_CYCLE_LENGTHS_ALL", &
2742 description=
"Density of all paths "// &
2743 "not shorter than the given length", &
2744 repeats=.false., usage=
"MIN_CYCLE_LENGTHS_ALL <INT> <INT> .. <INT>", &
2750 description=
"Atom number density", &
2753 default_l_val=.true., &
2754 lone_keyword_l_val=.true.)
2758 CALL keyword_create(keyword, __location__, name=
"PROJECTED_AREA_2", &
2759 description=
"Projected area squared density, A*A(r)", &
2762 default_l_val=.false., &
2763 lone_keyword_l_val=.true.)
2767 CALL keyword_create(keyword, __location__, name=
"WINDING_NUMBER_2", &
2768 description=
"Winding number squared density, W*W(r)", &
2771 default_l_val=.false., &
2772 lone_keyword_l_val=.true.)
2776 CALL keyword_create(keyword, __location__, name=
"WINDING_CYCLE_2", &
2777 description=
"Winding number squared density, W^2(r)", &
2780 default_l_val=.false., &
2781 lone_keyword_l_val=.true.)
2785 CALL keyword_create(keyword, __location__, name=
"MOMENT_OF_INERTIA", &
2786 description=
"Moment of inertia density", &
2789 default_l_val=.false., &
2790 lone_keyword_l_val=.true.)
2798 CALL create_coord_section(subsection,
"HELIUM")
2803 description=
"Permutation state used for restart", &
2804 n_keywords=1, n_subsections=0, repeats=.false.)
2805 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2806 description=
"Specify particle index permutation for every "// &
2807 "helium atom", repeats=.true., usage=
"<INT> <INT> .. <INT>", &
2815 description=
"Average properties (used for restarts)", &
2816 n_keywords=7, n_subsections=0, repeats=.false.)
2817 CALL keyword_create(keyword, __location__, name=
"PROJECTED_AREA", &
2818 description=
"Projected area vector for all environments", &
2819 repeats=.true., usage=
"PROJECTED_AREA <REAL> <REAL> .. <REAL>", &
2820 type_of_var=
real_t, n_var=-1)
2823 CALL keyword_create(keyword, __location__, name=
"PROJECTED_AREA_2", &
2824 description=
"Projected area vector squared for all environments", &
2825 repeats=.true., usage=
"PROJECTED_AREA_2 <REAL> <REAL> .. <REAL>", &
2826 type_of_var=
real_t, n_var=-1)
2829 CALL keyword_create(keyword, __location__, name=
"WINDING_NUMBER_2", &
2830 description=
"Winding number vector squared for all environments", &
2831 repeats=.true., usage=
"WINDING_NUMBER_2 <REAL> <REAL> .. <REAL>", &
2832 type_of_var=
real_t, n_var=-1)
2835 CALL keyword_create(keyword, __location__, name=
"MOMENT_OF_INERTIA", &
2836 description=
"Moment of inertia vector for all environments", &
2837 repeats=.true., usage=
"MOMENT_OF_INERTIA <REAL> <REAL> .. <REAL>", &
2838 type_of_var=
real_t, n_var=-1)
2842 description=
"Radial distributions averaged over all environments", &
2843 repeats=.true., usage=
"RDF <REAL> <REAL> .. <REAL>", &
2844 type_of_var=
real_t, n_var=-1)
2848 description=
"Spatial distributions averaged over all environments", &
2849 repeats=.true., usage=
"RHO <REAL> <REAL> .. <REAL>", &
2850 type_of_var=
real_t, n_var=-1)
2854 description=
"Weight for the restarted quantities "// &
2855 "(number of MC steps used to calculate the accumulated averages)", &
2864 description=
"Forces exerted by the helium on the solute system"// &
2865 " (used for restarts)", &
2866 n_keywords=1, n_subsections=0, repeats=.false.)
2867 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2868 description=
"Number of real values should be 3 * "// &
2869 "<num_solute_atoms> * <num_solute_beads>", repeats=.true., &
2870 usage=
"<REAL> <REAL> .. <REAL>", type_of_var=
real_t, &
2877 CALL section_create(subsection, __location__, name=
"RNG_STATE", &
2878 description=
"Random number generator state for all processors", &
2879 n_keywords=1, n_subsections=0, repeats=.false.)
2880 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2881 description=
"Three real arrays of DIMENSION(3,2) times two RNG "// &
2882 "streams - 36 real values per processor", &
2883 repeats=.true., usage=
"automatically filled, do not edit by hand", &
2884 type_of_var=
real_t, n_var=-1)
2891 description=
"The section that controls the output of the helium code", &
2892 n_keywords=16, n_subsections=0, repeats=.false.)
2905 description=
"Controls the output of helium energies"// &
2906 " (averaged over MC step)", &
2912 description=
"Controls the output of the average projected area squared vector", &
2918 description=
"Controls the output of the average winding number vector squared", &
2924 description=
"Controls the output of the average moment of inertia vector", &
2932 description=
"Controls the output of helium radial distribution functions", &
2938 description=
"Controls the output of the helium density "// &
2939 "(Gaussian cube file format)", &
2940 each_iter_names=
s2a(
"PINT"), each_iter_values=[100], &
2943 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
2944 description=
"Specifies the maximum number of backup copies.", &
2945 usage=
"BACKUP_COPIES {int}", &
2953 description=
"Controls the output of the projected area vector", &
2959 description=
"Controls the output of the winding number vector", &
2965 description=
"Controls the output of the moment of inertia vector", &
2971 description=
"Controls the output of the helium permutation length", &
2977 description=
"Controls the output of the total helium action", &
2985 description=
"Controls the output of helium coordinates", &
2988 description=
"Output file format for the coordinates", &
2989 usage=
"FORMAT (PDB|XYZ)", &
2991 enum_c_vals=
s2a(
"PDB",
"XYZ"), &
2993 enum_desc=
s2a(
"Bead coordinates and connectivity is written in PDB format", &
2994 "Only bead coordinates are written in XYZ format"))
3001 description=
"Controls the output of the helium permutation state", &
3004 description=
"Output format for the permutation", &
3005 usage=
"FORMAT (CYCLE|PLAIN)", &
3007 enum_c_vals=
s2a(
"CYCLE",
"PLAIN"), &
3010 "Cycle notation with winding cycles enclosed"// &
3011 " in '[...]' and non-winding ones enclosed in '(...)'", &
3012 "Plain permutation output, i.e. P(1) ... P(N)"))
3019 description=
"Controls the output of the helium forces on the solute", &
3027 description=
"Controls the output of the helium acceptance data", &
3033 description=
"Controls the output of the instantaneous helium forces on the solute", &
3042 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