(git:d3d49ac)
Loading...
Searching...
No Matches
input_cp2k_motion.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2026 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8! **************************************************************************************************
9!> \par History
10!> 10.2005 split input_cp2k into smaller modules [fawzi]
11!> 01.2020 add keywords related to Space Groups [pcazade]
12!> \author teo & fawzi
13! **************************************************************************************************
15 USE bibliography, ONLY: brieuc2016, &
16 byrd1995, &
22 kapil2016, &
30 USE cp_units, ONLY: cp_unit_to_cp2k
31 USE input_constants, ONLY: &
52 USE input_cp2k_thermostats, ONLY: create_coord_section, &
54 create_velocity_section
64 USE input_val_types, ONLY: integer_t, &
65 lchar_t, &
66 logical_t, &
67 real_t, &
68 char_t
69 USE kinds, ONLY: dp
70 USE string_utilities, ONLY: newline, &
71 s2a
72#include "../base/base_uses.f90"
73
74 IMPLICIT NONE
75 PRIVATE
76
77 LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .true.
78 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_motion'
79
80 PUBLIC :: create_motion_section
81
82CONTAINS
83
84! **************************************************************************************************
85!> \brief creates the motion section
86!> \param section the section to be created
87!> \author teo
88! **************************************************************************************************
89 SUBROUTINE create_motion_section(section)
90 TYPE(section_type), POINTER :: section
91
92 TYPE(section_type), POINTER :: subsection
93
94 cpassert(.NOT. ASSOCIATED(section))
95 CALL section_create(section, __location__, name="motion", &
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.)
98
99 NULLIFY (subsection)
100
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.)
105 CALL section_add_subsection(section, subsection)
106 CALL section_release(subsection)
107
108 CALL create_cell_opt_section(subsection)
109 CALL section_add_subsection(section, subsection)
110 CALL section_release(subsection)
111
112 CALL create_shellcore_opt_section(subsection)
113 CALL section_add_subsection(section, subsection)
114 CALL section_release(subsection)
115
116 CALL create_md_section(subsection)
117 CALL section_add_subsection(section, subsection)
118 CALL section_release(subsection)
119
120 CALL create_driver_section(subsection)
121 CALL section_add_subsection(section, subsection)
122 CALL section_release(subsection)
123
124 CALL create_fe_section(subsection)
125 CALL section_add_subsection(section, subsection)
126 CALL section_release(subsection)
127
128 CALL create_constraint_section(subsection)
129 CALL section_add_subsection(section, subsection)
130 CALL section_release(subsection)
131
132 CALL create_fp_section(subsection)
133 CALL section_add_subsection(section, subsection)
134 CALL section_release(subsection)
135
136 CALL create_mc_section(subsection)
137 CALL section_add_subsection(section, subsection)
138 CALL section_release(subsection)
139
140 CALL create_tmc_section(subsection)
141 CALL section_add_subsection(section, subsection)
142 CALL section_release(subsection)
143
144 CALL create_pint_section(subsection)
145 CALL section_add_subsection(section, subsection)
146 CALL section_release(subsection)
147
148 CALL create_band_section(subsection)
149 CALL section_add_subsection(section, subsection)
150 CALL section_release(subsection)
151
152 CALL create_motion_print_section(subsection)
153 CALL section_add_subsection(section, subsection)
154 CALL section_release(subsection)
155
156 END SUBROUTINE create_motion_section
157
158! **************************************************************************************************
159!> \brief creates the Monte Carlo section
160!> \param section the section to be created
161!> \author matt
162! **************************************************************************************************
163 SUBROUTINE create_mc_section(section)
164 TYPE(section_type), POINTER :: section
165
166 TYPE(keyword_type), POINTER :: keyword
167 TYPE(section_type), POINTER :: subsection
168
169 cpassert(.NOT. ASSOCIATED(section))
170 CALL section_create(section, __location__, name="mc", &
171 description="This section sets parameters to set up a MonteCarlo calculation.", &
172 n_keywords=10, n_subsections=2, repeats=.false.)
173
174 NULLIFY (keyword, subsection)
175
176 CALL keyword_create(keyword, __location__, name="NSTEP", &
177 description="Specifies the number of MC cycles.", &
178 usage="NSTEP {integer}", &
179 default_i_val=100)
180 CALL section_add_keyword(section, keyword)
181 CALL keyword_release(keyword)
182
183 CALL keyword_create(keyword, __location__, name="IPRINT", &
184 description="Prints coordinate/cell/etc information every IPRINT steps.", &
185 usage="IPRINT {integer}", &
186 default_i_val=1)
187 CALL section_add_keyword(section, keyword)
188 CALL keyword_release(keyword)
189
190 CALL keyword_create(keyword, __location__, name="NMOVES", &
191 description="Specifies the number of classical moves between energy evaluations. ", &
192 usage="NMOVES {integer}", &
193 default_i_val=4)
194 CALL section_add_keyword(section, keyword)
195 CALL keyword_release(keyword)
196
197 CALL keyword_create(keyword, __location__, name="NSWAPMOVES", &
198 description="How many insertions to try per swap move.", &
199 usage="NSWAPMOVES {integer}", &
200 default_i_val=16)
201 CALL section_add_keyword(section, keyword)
202 CALL keyword_release(keyword)
203
204 CALL keyword_create(keyword, __location__, name="LBIAS", &
205 description="Dictates if we presample moves with a different potential.", &
206 usage="LBIAS {logical}", &
207 default_l_val=.false.)
208 CALL section_add_keyword(section, keyword)
209 CALL keyword_release(keyword)
210
211 CALL keyword_create(keyword, __location__, name="LSTOP", &
212 description="Makes nstep in terms of steps, instead of cycles.", &
213 usage="LSTOP {logical}", &
214 default_l_val=.false.)
215 CALL section_add_keyword(section, keyword)
216 CALL keyword_release(keyword)
217
218 CALL keyword_create(keyword, __location__, name="LDISCRETE", &
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.)
222 CALL section_add_keyword(section, keyword)
223 CALL keyword_release(keyword)
224
225 CALL keyword_create(keyword, __location__, name="RCLUS", &
226 description="The cluster cut off radius in angstroms.", &
227 usage="RCLUS {real}", &
228 default_r_val=1.0e0_dp)
229 CALL section_add_keyword(section, keyword)
230 CALL keyword_release(keyword)
231
232 CALL keyword_create(keyword, __location__, name="RESTART", &
233 description="Read initial configuration from restart file.", &
234 usage="RESTART {logical}", &
235 default_l_val=.false.)
236 CALL section_add_keyword(section, keyword)
237 CALL keyword_release(keyword)
238
239 CALL keyword_create( &
240 keyword, __location__, name="NVIRIAL", &
241 description="Use this many random orientations to compute the second virial coefficient (ENSEMBLE=VIRIAL)", &
242 usage="NVIRIAL {integer}", &
243 default_i_val=1000)
244 CALL section_add_keyword(section, keyword)
245 CALL keyword_release(keyword)
246
247 CALL keyword_create(keyword, __location__, name="ENSEMBLE", &
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"), &
252 default_i_val=do_mc_traditional)
253 CALL section_add_keyword(section, keyword)
254 CALL keyword_release(keyword)
255
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}", &
259 default_lc_val="")
260 CALL section_add_keyword(section, keyword)
261 CALL keyword_release(keyword)
262
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}", &
266 default_lc_val="")
267 CALL section_add_keyword(section, keyword)
268 CALL keyword_release(keyword)
269
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}", &
273 default_lc_val="")
274 CALL section_add_keyword(section, keyword)
275 CALL keyword_release(keyword)
276
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}", &
280 default_lc_val="")
281 CALL section_add_keyword(section, keyword)
282 CALL keyword_release(keyword)
283
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}", &
287 default_lc_val="")
288 CALL section_add_keyword(section, keyword)
289 CALL keyword_release(keyword)
290
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}", &
294 default_lc_val="")
295 CALL section_add_keyword(section, keyword)
296 CALL keyword_release(keyword)
297
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}", &
301 default_lc_val="")
302 CALL section_add_keyword(section, keyword)
303 CALL keyword_release(keyword)
304
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}", &
308 default_lc_val="")
309 CALL section_add_keyword(section, keyword)
310 CALL keyword_release(keyword)
311
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}", &
315 default_lc_val="")
316 CALL section_add_keyword(section, keyword)
317 CALL keyword_release(keyword)
318
319 CALL keyword_create(keyword, __location__, name="PRESSURE", &
320 description="The pressure for NpT simulations, in bar.", &
321 usage="PRESSURE {real}", &
322 type_of_var=real_t)
323 CALL section_add_keyword(section, keyword)
324 CALL keyword_release(keyword)
325
326 CALL keyword_create(keyword, __location__, name="TEMPERATURE", &
327 description="The temperature of the simulation, in Kelvin.", &
328 usage="TEMPERATURE {real}", &
329 type_of_var=real_t)
330 CALL section_add_keyword(section, keyword)
331 CALL keyword_release(keyword)
332
333 CALL keyword_create( &
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)
338 CALL section_add_keyword(section, keyword)
339 CALL keyword_release(keyword)
340
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)
345 CALL section_add_keyword(section, keyword)
346 CALL keyword_release(keyword)
347
348 CALL keyword_create(keyword, __location__, name="ETA", &
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)
352 CALL section_add_keyword(section, keyword)
353 CALL keyword_release(keyword)
354
355 CALL keyword_create(keyword, __location__, name="RANDOMTOSKIP", &
356 description="Number of random numbers from the acceptance/rejection stream to skip", &
357 usage="RANDOMTOSKIP {integer}", &
358 default_i_val=0)
359 CALL section_add_keyword(section, keyword)
360 CALL keyword_release(keyword)
361
362 CALL create_avbmc_section(subsection)
363 CALL section_add_subsection(section, subsection)
364 CALL section_release(subsection)
365
366 CALL create_move_prob_section(subsection)
367 CALL section_add_subsection(section, subsection)
368 CALL section_release(subsection)
369
370 CALL create_update_section(subsection)
371 CALL section_add_subsection(section, subsection)
372 CALL section_release(subsection)
373
374 CALL create_max_disp_section(subsection)
375 CALL section_add_subsection(section, subsection)
376 CALL section_release(subsection)
377
378 END SUBROUTINE create_mc_section
379
380! **************************************************************************************************
381!> \brief ...
382!> \param section will contain the AVBMC parameters for MC
383!> \author matt
384! **************************************************************************************************
385 SUBROUTINE create_avbmc_section(section)
386 TYPE(section_type), POINTER :: section
387
388 TYPE(keyword_type), POINTER :: keyword
389
390 cpassert(.NOT. ASSOCIATED(section))
391
392 CALL section_create(section, __location__, name="avbmc", &
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.)
397
398 NULLIFY (keyword)
399
400 CALL keyword_create( &
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)
405 CALL section_add_keyword(section, keyword)
406 CALL keyword_release(keyword)
407
408 CALL keyword_create(keyword, __location__, name="AVBMC_ATOM", &
409 description="The target atom for an AVBMC swap move for each molecule type.", &
410 usage="AVBMC_ATOM {integer} {integer} ... ", &
411 n_var=-1, type_of_var=integer_t)
412 CALL section_add_keyword(section, keyword)
413 CALL keyword_release(keyword)
414
415 CALL keyword_create(keyword, __location__, name="AVBMC_RMIN", &
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)
419 CALL section_add_keyword(section, keyword)
420 CALL keyword_release(keyword)
421
422 CALL keyword_create(keyword, __location__, name="AVBMC_RMAX", &
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)
426 CALL section_add_keyword(section, keyword)
427 CALL keyword_release(keyword)
428
429 END SUBROUTINE create_avbmc_section
430
431! **************************************************************************************************
432!> \brief ...
433!> \param section will contain the probabilities for attempting each move
434!> type in Monte Carlo
435!> \author matt
436! **************************************************************************************************
437 SUBROUTINE create_move_prob_section(section)
438 TYPE(section_type), POINTER :: section
439
440 TYPE(keyword_type), POINTER :: keyword
441 TYPE(section_type), POINTER :: subsection
442
443 cpassert(.NOT. ASSOCIATED(section))
444
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.)
448
449 NULLIFY (keyword, subsection)
450
451 CALL keyword_create(keyword, __location__, name="PMHMC", &
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)
455 CALL section_add_keyword(section, keyword)
456 CALL keyword_release(keyword)
457
458 CALL keyword_create(keyword, __location__, name="PMTRANS", &
459 description="The probability of attempting a molecule translation.", &
460 usage="PMTRANS {real}", &
461 type_of_var=real_t)
462 CALL section_add_keyword(section, keyword)
463 CALL keyword_release(keyword)
464
465 CALL keyword_create(keyword, __location__, name="PMCLTRANS", &
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)
469 CALL section_add_keyword(section, keyword)
470 CALL keyword_release(keyword)
471
472 CALL keyword_create(keyword, __location__, name="PMAVBMC", &
473 description="The probability of attempting an AVBMC swap move.", &
474 usage="PMAVBMC {real}", &
475 default_r_val=0.0e0_dp)
476 CALL section_add_keyword(section, keyword)
477 CALL keyword_release(keyword)
478
479 CALL keyword_create(keyword, __location__, name="PMTRAION", &
480 description="The probability of attempting a conformational change.", &
481 usage="PMTRAION {real}", &
482 type_of_var=real_t)
483 CALL section_add_keyword(section, keyword)
484 CALL keyword_release(keyword)
485
486 CALL keyword_create(keyword, __location__, name="PMSWAP", &
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)
490 CALL section_add_keyword(section, keyword)
491 CALL keyword_release(keyword)
492
493 CALL keyword_create(keyword, __location__, name="PMVOLUME", &
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)
497 CALL section_add_keyword(section, keyword)
498 CALL keyword_release(keyword)
499
500 CALL create_mol_prob_section(subsection)
501 CALL section_add_subsection(section, subsection)
502 CALL section_release(subsection)
503
504 CALL create_box_prob_section(subsection)
505 CALL section_add_subsection(section, subsection)
506 CALL section_release(subsection)
507
508 END SUBROUTINE create_move_prob_section
509
510! **************************************************************************************************
511!> \brief ...
512!> \param section will contain the probabilities for attempting various moves
513!> on the various molecule types present in the system
514!> \author matt
515! **************************************************************************************************
516 SUBROUTINE create_mol_prob_section(section)
517 TYPE(section_type), POINTER :: section
518
519 TYPE(keyword_type), POINTER :: keyword
520
521 cpassert(.NOT. ASSOCIATED(section))
522
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.)
527
528 NULLIFY (keyword)
529
530 CALL keyword_create(keyword, __location__, name="PMAVBMC_MOL", &
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)
534 CALL section_add_keyword(section, keyword)
535 CALL keyword_release(keyword)
536
537 CALL keyword_create(keyword, __location__, name="PMSWAP_MOL", &
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)
541 CALL section_add_keyword(section, keyword)
542 CALL keyword_release(keyword)
543
544 CALL keyword_create(keyword, __location__, name="PMROT_MOL", &
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)
548 CALL section_add_keyword(section, keyword)
549 CALL keyword_release(keyword)
550
551 CALL keyword_create(keyword, __location__, name="PMTRAION_MOL", &
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)
555 CALL section_add_keyword(section, keyword)
556 CALL keyword_release(keyword)
557
558 CALL keyword_create(keyword, __location__, name="PMTRANS_MOL", &
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)
562 CALL section_add_keyword(section, keyword)
563 CALL keyword_release(keyword)
564
565 END SUBROUTINE create_mol_prob_section
566
567! **************************************************************************************************
568!> \brief ...
569!> \param section will contain the probabilities for attempting various moves
570!> on the box where the variable is present
571!> \author matt
572! **************************************************************************************************
573 SUBROUTINE create_box_prob_section(section)
574 TYPE(section_type), POINTER :: section
575
576 TYPE(keyword_type), POINTER :: keyword
577
578 cpassert(.NOT. ASSOCIATED(section))
579
580 CALL section_create(section, __location__, name="BOX_PROBABILITIES", &
581 description="Probabilities of attempting various moves types on "// &
582 "the box.", &
583 n_keywords=2, n_subsections=0, repeats=.false.)
584
585 NULLIFY (keyword)
586
587 CALL keyword_create(keyword, __location__, name="PMHMC_BOX", &
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)
591 CALL section_add_keyword(section, keyword)
592 CALL keyword_release(keyword)
593
594 CALL keyword_create(keyword, __location__, name="PMVOL_BOX", &
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)
598 CALL section_add_keyword(section, keyword)
599 CALL keyword_release(keyword)
600
601 CALL keyword_create(keyword, __location__, name="PMCLUS_BOX", &
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)
605 CALL section_add_keyword(section, keyword)
606 CALL keyword_release(keyword)
607
608 END SUBROUTINE create_box_prob_section
609
610! **************************************************************************************************
611!> \brief ...
612!> \param section will contain the frequency for updating maximum
613!> displacements for various moves
614!> \author matt
615! **************************************************************************************************
616 SUBROUTINE create_update_section(section)
617 TYPE(section_type), POINTER :: section
618
619 TYPE(keyword_type), POINTER :: keyword
620
621 cpassert(.NOT. ASSOCIATED(section))
622
623 CALL section_create(section, __location__, name="MOVE_UPDATES", &
624 description="Frequency for updating move maximum displacements.", &
625 n_keywords=2, n_subsections=0, repeats=.false.)
626
627 NULLIFY (keyword)
628
629 CALL keyword_create(keyword, __location__, name="IUPVOLUME", &
630 description="Every iupvolume steps update maximum volume displacement.", &
631 usage="IUPVOLUME {integer}", &
632 default_i_val=10000)
633 CALL section_add_keyword(section, keyword)
634 CALL keyword_release(keyword)
635
636 CALL keyword_create(keyword, __location__, name="IUPTRANS", &
637 description="Every iuptrans steps update maximum "// &
638 "translation/rotation/configurational changes.", &
639 usage="IUPTRANS {integer}", &
640 default_i_val=10000)
641 CALL section_add_keyword(section, keyword)
642 CALL keyword_release(keyword)
643
644 CALL keyword_create(keyword, __location__, name="IUPCLTRANS", &
645 description="Every iupcltrans steps update maximum cluster translation.", &
646 usage="IUPCLTRANS {integer}", &
647 default_i_val=10000)
648 CALL section_add_keyword(section, keyword)
649 CALL keyword_release(keyword)
650
651 END SUBROUTINE create_update_section
652
653! **************************************************************************************************
654!> \brief ...
655!> \param section will contain the maximum displacements for various moves
656!> \author matt
657! **************************************************************************************************
658 SUBROUTINE create_max_disp_section(section)
659 TYPE(section_type), POINTER :: section
660
661 TYPE(section_type), POINTER :: subsection
662
663 cpassert(.NOT. ASSOCIATED(section))
664
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.)
668
669 NULLIFY (subsection)
670
671 CALL create_mol_disp_section(subsection)
672 CALL section_add_subsection(section, subsection)
673 CALL section_release(subsection)
674
675 CALL create_box_disp_section(subsection)
676 CALL section_add_subsection(section, subsection)
677 CALL section_release(subsection)
678
679 END SUBROUTINE create_max_disp_section
680
681! **************************************************************************************************
682!> \brief ...
683!> \param section will contain the maximum displacements for all moves which
684!> require a value for each molecule type
685!> \author matt
686! **************************************************************************************************
687 SUBROUTINE create_mol_disp_section(section)
688 TYPE(section_type), POINTER :: section
689
690 TYPE(keyword_type), POINTER :: keyword
691
692 cpassert(.NOT. ASSOCIATED(section))
693
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.)
698
699 NULLIFY (keyword)
700
701 CALL keyword_create(keyword, __location__, name="RMBOND", &
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)
705 CALL section_add_keyword(section, keyword)
706 CALL keyword_release(keyword)
707
708 CALL keyword_create(keyword, __location__, name="RMANGLE", &
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)
712 CALL section_add_keyword(section, keyword)
713 CALL keyword_release(keyword)
714
715 CALL keyword_create(keyword, __location__, name="RMDIHEDRAL", &
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)
719 CALL section_add_keyword(section, keyword)
720 CALL keyword_release(keyword)
721
722 CALL keyword_create(keyword, __location__, name="RMROT", &
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)
726 CALL section_add_keyword(section, keyword)
727 CALL keyword_release(keyword)
728
729 CALL keyword_create(keyword, __location__, name="RMTRANS", &
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)
733 CALL section_add_keyword(section, keyword)
734 CALL keyword_release(keyword)
735
736 END SUBROUTINE create_mol_disp_section
737
738! **************************************************************************************************
739!> \brief ...
740!> \param section will contain the maximum displacements for any move that
741!> is done on each simulation box
742!> \author matt
743! **************************************************************************************************
744 SUBROUTINE create_box_disp_section(section)
745 TYPE(section_type), POINTER :: section
746
747 TYPE(keyword_type), POINTER :: keyword
748
749 cpassert(.NOT. ASSOCIATED(section))
750
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.)
755
756 NULLIFY (keyword)
757
758 CALL keyword_create(keyword, __location__, name="RMVOLUME", &
759 description="Maximum volume displacement, in angstrom**3.", &
760 usage="RMVOLUME {real}", &
761 type_of_var=real_t)
762 CALL section_add_keyword(section, keyword)
763 CALL keyword_release(keyword)
764
765 CALL keyword_create(keyword, __location__, name="RMCLTRANS", &
766 description="Maximum translational displacement, in angstroms, for each cluster.", &
767 usage="RMCLTRANS {real}", &
768 default_r_val=1.0e0_dp)
769 CALL section_add_keyword(section, keyword)
770 CALL keyword_release(keyword)
771
772 END SUBROUTINE create_box_disp_section
773
774! **************************************************************************************************
775!> \brief creates the geometry optimization section
776!> \param section the section to be created
777!> \param location ...
778!> \param label ...
779!> \param description ...
780!> \param just_optimizers ...
781!> \param use_model_hessian ...
782!> \par History
783!> 01.2020 keywords related to Space Group Symmetry added [pcazade]
784!> \author teo
785! **************************************************************************************************
786 RECURSIVE SUBROUTINE create_geoopt_section(section, location, label, description, just_optimizers, use_model_hessian)
787 TYPE(section_type), POINTER :: section
788 CHARACTER(LEN=*), INTENT(IN) :: location, label, description
789 LOGICAL, INTENT(IN) :: just_optimizers, use_model_hessian
790
791 TYPE(keyword_type), POINTER :: keyword
792 TYPE(section_type), POINTER :: print_key, subsection
793
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.)
797
798 NULLIFY (keyword)
799 IF (.NOT. just_optimizers) THEN
800 CALL keyword_create(keyword, __location__, name="TYPE", &
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."), &
807 default_i_val=default_minimization_method_id)
808 CALL section_add_keyword(section, keyword)
809 CALL keyword_release(keyword)
810 END IF
811
812 CALL keyword_create( &
813 keyword, __location__, name="OPTIMIZER", &
814 variants=["MINIMIZER"], &
815 citations=[byrd1995], &
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"), &
825 default_i_val=default_bfgs_method_id)
826 CALL section_add_keyword(section, keyword)
827 CALL keyword_release(keyword)
828
829 CALL keyword_create(keyword, __location__, name="MAX_ITER", &
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}", &
833 default_i_val=200)
834 CALL section_add_keyword(section, keyword)
835 CALL keyword_release(keyword)
836
837 CALL keyword_create(keyword, __location__, name="MAX_DR", &
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")
842 CALL section_add_keyword(section, keyword)
843 CALL keyword_release(keyword)
844
845 CALL keyword_create(keyword, __location__, name="MAX_FORCE", &
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")
849 CALL section_add_keyword(section, keyword)
850 CALL keyword_release(keyword)
851
852 CALL keyword_create(keyword, __location__, name="RMS_DR", &
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)
857 CALL section_add_keyword(section, keyword)
858 CALL keyword_release(keyword)
859
860 CALL keyword_create(keyword, __location__, name="RMS_FORCE", &
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)
864 CALL section_add_keyword(section, keyword)
865 CALL keyword_release(keyword)
866
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)
870 CALL section_add_keyword(section, keyword)
871 CALL keyword_release(keyword)
872
873 ! collects keywords related to Space Group Symmetry
874 CALL keyword_create( &
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.)
883 CALL section_add_keyword(section, keyword)
884 CALL keyword_release(keyword)
885
886 ! collects keywords related to Space Group Symmetry analysis
887 CALL keyword_create( &
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.)
894 CALL section_add_keyword(section, keyword)
895 CALL keyword_release(keyword)
896
897 ! collects keywords related to precision for finding the space group
898 CALL keyword_create( &
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.)
904 CALL section_add_keyword(section, keyword)
905 CALL keyword_release(keyword)
906
907 ! collects keywords related to reduction of symmetry due to an external field
908 CALL keyword_create( &
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])
916 CALL section_add_keyword(section, keyword)
917 CALL keyword_release(keyword)
918
919 ! collects keywords related to ranges of atoms to symmetrize
920 CALL keyword_create( &
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)
926 CALL section_add_keyword(section, keyword)
927 CALL keyword_release(keyword)
928
929 CALL keyword_create( &
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.)
933 CALL section_add_keyword(section, keyword)
934 CALL keyword_release(keyword)
935
936 CALL create_lbfgs_section(subsection)
937 CALL section_add_subsection(section, subsection)
938 CALL section_release(subsection)
939
940 CALL create_cg_section(subsection)
941 CALL section_add_subsection(section, subsection)
942 CALL section_release(subsection)
943
944 CALL create_bfgs_section(subsection, use_model_hessian)
945 CALL section_add_subsection(section, subsection)
946 CALL section_release(subsection)
947
948 IF (.NOT. just_optimizers) THEN
949 ! Transition states section
950 CALL create_ts_section(subsection)
951 CALL section_add_subsection(section, subsection)
952 CALL section_release(subsection)
953
954 ! Create the PRINT subsection
955 NULLIFY (subsection)
956 CALL section_create(subsection, __location__, name="PRINT", &
957 description="Controls the printing properties during a geometry optimization run", &
958 n_keywords=0, n_subsections=1, repeats=.true.)
959 NULLIFY (print_key)
961 print_key, __location__, "program_run_info", &
962 description="Controls the printing of basic information during the Geometry Optimization", &
963 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
964 CALL section_add_subsection(subsection, print_key)
965 CALL section_release(print_key)
966 CALL section_add_subsection(section, subsection)
967 CALL section_release(subsection)
968 END IF
969
970 END SUBROUTINE create_geoopt_section
971
972! **************************************************************************************************
973!> \brief creates the section for the shell-core optimization
974!> \param section the section to be created
975!> \author Caino
976! **************************************************************************************************
977 SUBROUTINE create_shellcore_opt_section(section)
978 TYPE(section_type), POINTER :: section
979
980 TYPE(section_type), POINTER :: print_key, subsection
981
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.)
990
991 NULLIFY (print_key, subsection)
992
993 ! Create the PRINT subsection
994 NULLIFY (subsection)
995 CALL section_create(subsection, __location__, name="PRINT", &
996 description="Controls the printing properties during a shell-core optimization procedure", &
997 n_keywords=0, n_subsections=1, repeats=.true.)
998 NULLIFY (print_key)
999 CALL cp_print_key_section_create(print_key, __location__, "program_run_info", &
1000 description="Controls the printing of basic information during the Optimization", &
1001 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
1002 CALL section_add_subsection(subsection, print_key)
1003 CALL section_release(print_key)
1004 CALL section_add_subsection(section, subsection)
1005 CALL section_release(subsection)
1006
1007 END SUBROUTINE create_shellcore_opt_section
1008
1009! **************************************************************************************************
1010!> \brief creates the section for the cell optimization
1011!> \param section the section to be created
1012!> \author Teodoro Laino [tlaino] - University of Zurich - 03.2008
1013! **************************************************************************************************
1014 SUBROUTINE create_cell_opt_section(section)
1015 TYPE(section_type), POINTER :: section
1016
1017 TYPE(keyword_type), POINTER :: keyword
1018 TYPE(section_type), POINTER :: print_key, subsection
1019
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.)
1031
1032 NULLIFY (keyword, print_key, subsection)
1033 CALL keyword_create( &
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)
1039 CALL section_add_keyword(section, keyword)
1040 CALL keyword_release(keyword)
1041
1042 CALL keyword_create( &
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", &
1047 default_r_vals=[cp_unit_to_cp2k(100.0_dp, "bar"), 0.0_dp, 0.0_dp, &
1048 0.0_dp, cp_unit_to_cp2k(100.0_dp, "bar"), 0.0_dp, &
1049 0.0_dp, 0.0_dp, cp_unit_to_cp2k(100.0_dp, "bar")], n_var=-1)
1050 CALL section_add_keyword(section, keyword)
1051 CALL keyword_release(keyword)
1052
1053 CALL keyword_create(keyword, __location__, name="KEEP_VOLUME", &
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.)
1059 CALL section_add_keyword(section, keyword)
1060 CALL keyword_release(keyword)
1061
1062 CALL keyword_create(keyword, __location__, name="KEEP_ANGLES", &
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.)
1070 CALL section_add_keyword(section, keyword)
1071 CALL keyword_release(keyword)
1072
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.)
1081 CALL section_add_keyword(section, keyword)
1082 CALL keyword_release(keyword)
1083
1084 CALL keyword_create( &
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"), &
1096 enum_i_vals=[fix_none, fix_x, fix_y, fix_z, fix_xy, fix_xz, fix_yz], &
1097 default_i_val=fix_none)
1098 CALL section_add_keyword(section, keyword)
1099 CALL keyword_release(keyword)
1100
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", &
1105 default_r_val=cp_unit_to_cp2k(100.0_dp, "bar"))
1106 CALL section_add_keyword(section, keyword)
1107 CALL keyword_release(keyword)
1108
1109 ! Create the PRINT subsection
1110 NULLIFY (subsection)
1111 CALL section_create(subsection, __location__, name="PRINT", &
1112 description="Controls the printing properties during a geometry optimization run", &
1113 n_keywords=0, n_subsections=1, repeats=.true.)
1114 NULLIFY (print_key)
1115 CALL cp_print_key_section_create(print_key, __location__, "program_run_info", &
1116 description="Controls the printing of basic information during the Geometry Optimization", &
1117 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
1118 CALL section_add_subsection(subsection, print_key)
1119 CALL section_release(print_key)
1120 CALL cp_print_key_section_create(print_key, __location__, "cell", &
1121 description="Controls the printing of the cell eveytime a calculation using a new cell is started.", &
1122 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__", &
1123 unit_str="angstrom")
1124 CALL section_add_subsection(subsection, print_key)
1125 CALL section_release(print_key)
1126 CALL section_add_subsection(section, subsection)
1127 CALL section_release(subsection)
1128
1129 END SUBROUTINE create_cell_opt_section
1130
1131! **************************************************************************************************
1132!> \brief creates the section for tuning transition states search
1133!> \param section the section to be created
1134!> \author Teodoro Laino [tlaino] - University of Zurich - 01.2008
1135! **************************************************************************************************
1136 SUBROUTINE create_ts_section(section)
1137 TYPE(section_type), POINTER :: section
1138
1139 TYPE(keyword_type), POINTER :: keyword
1140 TYPE(section_type), POINTER :: print_key, subsection, subsection2, &
1141 subsection3
1142
1143! Create the Transition State subsection
1144
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.)
1149
1150 CALL keyword_create(keyword, __location__, name="METHOD", &
1151 description="Specify which kind of method to use for locating transition states", &
1152 citations=[henkelman1999], &
1153 usage="METHOD (DIMER)", &
1154 enum_c_vals=s2a("DIMER"), &
1155 enum_desc=s2a("Uses the dimer method to optimize transition states."), &
1156 enum_i_vals=[default_dimer_method_id], &
1157 default_i_val=default_dimer_method_id)
1158 CALL section_add_keyword(section, keyword)
1159 CALL keyword_release(keyword)
1160
1161 CALL section_create(subsection, __location__, name="DIMER", &
1162 description="Specifies parameters for Dimer Method", &
1163 n_keywords=0, n_subsections=1, repeats=.false.)
1164
1165 CALL keyword_create(keyword, __location__, name="DR", &
1166 description="This keyword sets the value for the DR parameter.", &
1167 usage="DR {real}", unit_str='angstrom', &
1168 default_r_val=cp_unit_to_cp2k(0.01_dp, "angstrom"))
1169 CALL section_add_keyword(subsection, keyword)
1170 CALL keyword_release(keyword)
1171
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"), &
1188 enum_i_vals=[dimer_init_random, dimer_init_molden], &
1189 default_i_val=dimer_init_random)
1190 CALL section_add_keyword(subsection, keyword)
1191 CALL keyword_release(keyword)
1192
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)
1197 CALL section_add_keyword(subsection, keyword)
1198 CALL keyword_release(keyword)
1199
1200 CALL keyword_create(keyword, __location__, name="VIB_INDEX", &
1201 description="The index of one or more vibrational normal modes "// &
1202 "from the file whose linear combination will form the initial "// &
1203 "dimer vector.", &
1204 usage="VIB_INDEX {integer} {integer} .. {integer}", repeats=.true., &
1205 n_var=-1, default_i_vals=[1], type_of_var=integer_t)
1206 CALL section_add_keyword(subsection, keyword)
1207 CALL keyword_release(keyword)
1208
1209 CALL keyword_create(keyword, __location__, name="VIB_WEIGHT", &
1210 description="The weight of one or more vibrational normal modes "// &
1211 "from the file whose linear combination will form the initial "// &
1212 "dimer vector.", &
1213 usage="VIB_WEIGHT {real} {real} .. {real}", repeats=.true., &
1214 n_var=-1, default_r_vals=[1.0_dp], type_of_var=real_t)
1215 CALL section_add_keyword(subsection, keyword)
1216 CALL keyword_release(keyword)
1217
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.)
1223 CALL section_add_keyword(subsection, keyword)
1224 CALL keyword_release(keyword)
1225
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', &
1230 default_r_val=cp_unit_to_cp2k(5.0_dp, "deg"))
1231 CALL section_add_keyword(subsection, keyword)
1232 CALL keyword_release(keyword)
1233
1234 CALL keyword_create(keyword, __location__, name="K-DIMER", &
1235 description="This keyword activates the constrained k-dimer translation"// &
1236 " J. Chem. Phys. 141, 164111 (2014).", &
1237 citations=[henkelman2014], &
1238 usage="K-DIMER {logica}", &
1239 default_l_val=.false., &
1240 lone_keyword_l_val=.false.)
1241 CALL section_add_keyword(subsection, keyword)
1242 CALL keyword_release(keyword)
1243
1244 CALL keyword_create(keyword, __location__, name="BETA", &
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)
1249 CALL section_add_keyword(subsection, keyword)
1250 CALL keyword_release(keyword)
1251
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)
1258 CALL section_create(subsection3, __location__, name="PRINT", &
1259 description="Controls the printing properties during the dimer rotation optimization run", &
1260 n_keywords=0, n_subsections=1, repeats=.true.)
1261 NULLIFY (print_key)
1262
1263 CALL cp_print_key_section_create(print_key, __location__, "PROGRAM_RUN_INFO", &
1264 description="Controls the printing of basic information during the Geometry Optimization", &
1265 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
1266 CALL section_add_subsection(subsection3, print_key)
1267 CALL section_release(print_key)
1268
1269 CALL cp_print_key_section_create(print_key, __location__, "ROTATIONAL_INFO", &
1270 description="Controls the printing basic info during the cleaning of the "// &
1271 "rotational degrees of freedom.", print_level=low_print_level, &
1272 add_last=add_last_numeric, filename="__STD_OUT__")
1273 CALL keyword_create(keyword, __location__, name="COORDINATES", &
1274 description="Prints atomic coordinates after rotation", &
1275 default_l_val=.false., lone_keyword_l_val=.true.)
1276 CALL section_add_keyword(print_key, keyword)
1277 CALL keyword_release(keyword)
1278 CALL section_add_subsection(subsection3, print_key)
1279 CALL section_release(print_key)
1280
1281 CALL section_add_subsection(subsection2, subsection3)
1282 CALL section_release(subsection3)
1283 CALL section_add_subsection(subsection, subsection2)
1284 CALL section_release(subsection2)
1285
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)
1294 CALL section_add_keyword(subsection2, keyword)
1295 CALL keyword_release(keyword)
1296 CALL section_add_subsection(subsection, subsection2)
1297 CALL section_release(subsection2)
1298
1299 CALL section_add_subsection(section, subsection)
1300 CALL section_release(subsection)
1301
1302 END SUBROUTINE create_ts_section
1303
1304! **************************************************************************************************
1305!> \brief creates the BFGS section
1306!> \param section the section to be created
1307!> \param use_model_hessian ...
1308!> \author Teodoro Laino [tlaino] - University of Zurich - 01.2008
1309! **************************************************************************************************
1310 SUBROUTINE create_bfgs_section(section, use_model_hessian)
1311 TYPE(section_type), POINTER :: section
1312 LOGICAL, INTENT(IN) :: use_model_hessian
1313
1314 TYPE(keyword_type), POINTER :: keyword
1315 TYPE(section_type), POINTER :: print_key
1316
1317! create the BFGS subsection
1318
1319 NULLIFY (section, keyword, print_key)
1320 CALL section_create(section, __location__, name="BFGS", &
1321 description="Provides parameters to tune the BFGS optimization", &
1322 n_keywords=0, n_subsections=1, repeats=.false.)
1323
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', &
1328 default_r_val=cp_unit_to_cp2k(0.25_dp, "angstrom"))
1329 CALL section_add_keyword(section, keyword)
1330 CALL keyword_release(keyword)
1331
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", &
1336 citations=[lindh1995], &
1337 default_l_val=use_model_hessian, lone_keyword_l_val=.true.)
1338 CALL section_add_keyword(section, keyword)
1339 CALL keyword_release(keyword)
1340
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.)
1346 CALL section_add_keyword(section, keyword)
1347 CALL keyword_release(keyword)
1348
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.)
1353 CALL section_add_keyword(section, keyword)
1354 CALL keyword_release(keyword)
1355
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}", &
1359 default_lc_val="")
1360 CALL section_add_keyword(section, keyword)
1361 CALL keyword_release(keyword)
1362
1363 CALL cp_print_key_section_create(print_key, __location__, "RESTART", &
1364 description="Controls the printing of Hessian Restart file", &
1365 print_level=low_print_level, add_last=add_last_numeric, filename="BFGS", &
1366 common_iter_levels=2)
1367 CALL section_add_subsection(section, print_key)
1368 CALL section_release(print_key)
1369
1370 END SUBROUTINE create_bfgs_section
1371
1372! **************************************************************************************************
1373!> \brief creates the CG section
1374!> \param section the section to be created
1375!> \author Teodoro Laino [tlaino] - University of Zurich - 01.2008
1376! **************************************************************************************************
1377 SUBROUTINE create_cg_section(section)
1378 TYPE(section_type), POINTER :: section
1379
1380 TYPE(keyword_type), POINTER :: keyword
1381 TYPE(section_type), POINTER :: subsection, subsubsection
1382
1383! create the CG subsection
1384
1385 NULLIFY (section, subsection, subsubsection, keyword)
1386 CALL section_create(section, __location__, name="CG", &
1387 description="Provides parameters to tune the conjugate gradient optimization", &
1388 n_keywords=0, n_subsections=1, repeats=.false.)
1389
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}", &
1394 default_i_val=0)
1395 CALL section_add_keyword(section, keyword)
1396 CALL keyword_release(keyword)
1397
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"// &
1402 " performed.", &
1403 usage="RESTART_LIMIT {real}", &
1404 default_r_val=0.9_dp)
1405 CALL section_add_keyword(section, keyword)
1406 CALL keyword_release(keyword)
1407
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.)
1412 CALL section_add_keyword(section, keyword)
1413 CALL keyword_release(keyword)
1414
1415 ! Line Search section
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.)
1419
1420 CALL keyword_create(keyword, __location__, name="TYPE", &
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", &
1424 default_i_val=ls_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)"), &
1430 enum_i_vals=[ls_2pnt, ls_gold, ls_fit])
1431 CALL section_add_keyword(subsection, keyword)
1432 CALL keyword_release(keyword)
1433
1434 ! 2PNT
1435 NULLIFY (subsubsection)
1436 CALL section_create(subsubsection, __location__, name="2PNT", &
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.)
1439
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)
1444 CALL section_add_keyword(subsubsection, keyword)
1445 CALL keyword_release(keyword)
1446
1447 CALL keyword_create( &
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.)
1452 CALL section_add_keyword(subsubsection, keyword)
1453 CALL keyword_release(keyword)
1454
1455 CALL section_add_subsection(subsection, subsubsection)
1456 CALL section_release(subsubsection)
1457
1458 ! GOLD
1459 NULLIFY (subsubsection)
1460 CALL section_create(subsubsection, __location__, name="GOLD", &
1461 description="Provides parameters to tune the line search for the gold search.", &
1462 n_keywords=0, n_subsections=1, repeats=.false.)
1463
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)
1469 CALL section_add_keyword(subsubsection, keyword)
1470 CALL keyword_release(keyword)
1471
1472 CALL keyword_create(keyword, __location__, name="BRACK_LIMIT", &
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)
1476 CALL section_add_keyword(subsubsection, keyword)
1477 CALL keyword_release(keyword)
1478
1479 CALL keyword_create(keyword, __location__, name="BRENT_TOL", &
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)
1483 CALL section_add_keyword(subsubsection, keyword)
1484 CALL keyword_release(keyword)
1485
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}", &
1490 default_i_val=100)
1491 CALL section_add_keyword(subsubsection, keyword)
1492 CALL keyword_release(keyword)
1493 CALL section_add_subsection(subsection, subsubsection)
1494 CALL section_release(subsubsection)
1495
1496 CALL section_add_subsection(section, subsection)
1497 CALL section_release(subsection)
1498 END SUBROUTINE create_cg_section
1499
1500! **************************************************************************************************
1501!> \brief creates the LBFGS section
1502!> \param section the section to be created
1503!> \author Teodoro Laino [tlaino] - University of Zurich - 01.2008
1504! **************************************************************************************************
1505 SUBROUTINE create_lbfgs_section(section)
1506 TYPE(section_type), POINTER :: section
1507
1508 TYPE(keyword_type), POINTER :: keyword
1509
1510! create the LBFGS section
1511
1512 NULLIFY (section, keyword)
1513 CALL section_create(section, __location__, name="LBFGS", &
1514 description="Provides parameters to tune the limited memory BFGS (LBFGS) optimization", &
1515 n_keywords=0, n_subsections=1, repeats=.false., &
1516 citations=[byrd1995])
1517
1518 CALL keyword_create(keyword, __location__, name="MAX_H_RANK", &
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}", &
1524 default_i_val=5)
1525 CALL section_add_keyword(section, keyword)
1526 CALL keyword_release(keyword)
1527
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}", &
1532 default_i_val=20)
1533 CALL section_add_keyword(section, keyword)
1534 CALL keyword_release(keyword)
1535
1536 CALL keyword_create(keyword, __location__, name="PRINT_LEVEL", &
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"), &
1546 enum_i_vals=[silent_lbfgs, low_lbfgs, medium_lbfgs, &
1548 default_i_val=low_print_level)
1549 CALL section_add_keyword(section, keyword)
1550 CALL keyword_release(keyword)
1551
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)
1558 CALL section_add_keyword(section, keyword)
1559 CALL keyword_release(keyword)
1560
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)
1567 CALL section_add_keyword(section, keyword)
1568 CALL keyword_release(keyword)
1569
1570 CALL keyword_create( &
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)
1575 CALL section_add_keyword(section, keyword)
1576 CALL keyword_release(keyword)
1577
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.", &
1582 default_i_val=-1)
1583 CALL section_add_keyword(section, keyword)
1584 CALL keyword_release(keyword)
1585
1586 END SUBROUTINE create_lbfgs_section
1587
1588! **************************************************************************************************
1589!> \brief creates the flexible_partitioning section
1590!> \param section the section to be created
1591!> \author Joost VandeVondele [04.2006]
1592! **************************************************************************************************
1593 SUBROUTINE create_fp_section(section)
1594 TYPE(section_type), POINTER :: section
1595
1596 TYPE(keyword_type), POINTER :: keyword
1597 TYPE(section_type), POINTER :: print_key
1598
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.)
1603
1604 NULLIFY (keyword, print_key)
1605
1606 CALL keyword_create(keyword, __location__, name="CENTRAL_ATOM", &
1607 description="Specifies the central atom.", &
1608 usage="CENTRAL_ATOM {integer}", &
1609 n_var=1, type_of_var=integer_t)
1610 CALL section_add_keyword(section, keyword)
1611 CALL keyword_release(keyword)
1612
1613 CALL keyword_create(keyword, __location__, name="INNER_ATOMS", &
1614 description="Specifies the list of atoms that should remain close to the central atom.", &
1615 usage="INNER_ATOMS {integer} {integer} .. {integer}", &
1616 n_var=-1, type_of_var=integer_t)
1617 CALL section_add_keyword(section, keyword)
1618 CALL keyword_release(keyword)
1619
1620 CALL keyword_create(keyword, __location__, name="OUTER_ATOMS", &
1621 description="Specifies the list of atoms that should remain far from the central atom.", &
1622 usage="OUTER_ATOMS {integer} {integer} .. {integer}", &
1623 n_var=-1, type_of_var=integer_t)
1624 CALL section_add_keyword(section, keyword)
1625 CALL keyword_release(keyword)
1626
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")
1631 CALL section_add_keyword(section, keyword)
1632 CALL keyword_release(keyword)
1633
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")
1638 CALL section_add_keyword(section, keyword)
1639 CALL keyword_release(keyword)
1640
1641 CALL keyword_create(keyword, __location__, name="STRENGTH", &
1642 description="Sets the force constant of the repulsive harmonic potential", &
1643 usage="STRENGTH 1.0", default_r_val=1.0_dp)
1644 CALL section_add_keyword(section, keyword)
1645 CALL keyword_release(keyword)
1646
1647 CALL keyword_create(keyword, __location__, name="BIAS", &
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.)
1650 CALL section_add_keyword(section, keyword)
1651 CALL keyword_release(keyword)
1652
1653 CALL keyword_create(keyword, __location__, name="TEMPERATURE", &
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')
1657 CALL section_add_keyword(section, keyword)
1658 CALL keyword_release(keyword)
1659
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')
1663 CALL section_add_keyword(section, keyword)
1664 CALL keyword_release(keyword)
1665
1666 CALL cp_print_key_section_create(print_key, __location__, "WEIGHTS", &
1667 description="Controls the printing of FP info during flexible partitioning simulations.", &
1668 print_level=low_print_level, common_iter_levels=1, &
1669 filename="FLEXIBLE_PARTIONING")
1670 CALL section_add_subsection(section, print_key)
1671 CALL section_release(print_key)
1672
1673 CALL cp_print_key_section_create(print_key, __location__, "CONTROL", &
1674 description="Controls the printing of FP info at startup", &
1675 print_level=low_print_level, common_iter_levels=1, &
1676 filename="__STD_OUT__")
1677 CALL section_add_subsection(section, print_key)
1678 CALL section_release(print_key)
1679
1680 END SUBROUTINE create_fp_section
1681
1682! **************************************************************************************************
1683!> \brief ...
1684!> \param section will contain the driver section
1685!> \author mceriotti
1686! **************************************************************************************************
1687 SUBROUTINE create_driver_section(section)
1688 TYPE(section_type), POINTER :: section
1689
1690 TYPE(keyword_type), POINTER :: keyword
1691
1692 cpassert(.NOT. ASSOCIATED(section))
1693 CALL section_create(section, __location__, name="DRIVER", &
1694 description="This section defines the parameters needed to run in i-PI driver mode.", &
1695 citations=[ceriotti2014, kapil2016], &
1696 n_keywords=4, n_subsections=0, repeats=.false.)
1697
1698 NULLIFY (keyword)
1699 CALL keyword_create(keyword, __location__, name="unix", &
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.)
1703 CALL section_add_keyword(section, keyword)
1704 CALL keyword_release(keyword)
1705
1706 CALL keyword_create(keyword, __location__, name="port", &
1707 description="Port number for the i-PI server.", &
1708 usage="port <INTEGER>", &
1709 default_i_val=12345)
1710 CALL section_add_keyword(section, keyword)
1711 CALL keyword_release(keyword)
1712
1713 CALL keyword_create(keyword, __location__, name="host", &
1714 description="Host name for the i-PI server.", &
1715 usage="host <HOSTNAME>", &
1716 default_c_val="localhost")
1717 CALL section_add_keyword(section, keyword)
1718 CALL keyword_release(keyword)
1719
1720 CALL keyword_create(keyword, __location__, name="PREFIX", &
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")
1725 CALL section_add_keyword(section, keyword)
1726 CALL keyword_release(keyword)
1727
1728 CALL keyword_create(keyword, __location__, name="SLEEP_TIME", &
1729 description="Sleeping time while waiting for for driver commands [s].", &
1730 usage="SLEEP_TIME 0.1", &
1731 default_r_val=0.01_dp)
1732 CALL section_add_keyword(section, keyword)
1733 CALL keyword_release(keyword)
1734
1735 END SUBROUTINE create_driver_section
1736
1737! **************************************************************************************************
1738!> \brief creates the section for a path integral run
1739!> \param section will contain the pint section
1740!> \author fawzi
1741! **************************************************************************************************
1742 SUBROUTINE create_pint_section(section)
1743 TYPE(section_type), POINTER :: section
1744
1745 TYPE(keyword_type), POINTER :: keyword
1746 TYPE(section_type), POINTER :: print_key, subsection, subsubsection
1747
1748 cpassert(.NOT. ASSOCIATED(section))
1749 CALL section_create(section, __location__, name="PINT", &
1750 description="The section that controls a path integral run", &
1751 n_keywords=13, n_subsections=9, repeats=.false.)
1752 NULLIFY (keyword)
1753
1754 CALL keyword_create(keyword, __location__, name="p", &
1755 description="Specify number beads to use", repeats=.false., &
1756 default_i_val=3)
1757 CALL section_add_keyword(section, keyword)
1758 CALL keyword_release(keyword)
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)
1762 CALL section_add_keyword(section, keyword)
1763 CALL keyword_release(keyword)
1764 CALL keyword_create(keyword, __location__, name="num_steps", &
1765 description="Number of steps (if MAX_STEP is not explicitly given"// &
1766 " the program will perform this number of steps)", repeats=.false., &
1767 default_i_val=3)
1768 CALL section_add_keyword(section, keyword)
1769 CALL keyword_release(keyword)
1770 CALL keyword_create(keyword, __location__, name="MAX_STEP", &
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)
1774 CALL section_add_keyword(section, keyword)
1775 CALL keyword_release(keyword)
1776 CALL keyword_create(keyword, __location__, name="iteration", &
1777 description="Specify the iteration number from which it should be "// &
1778 "counted", default_i_val=0)
1779 CALL section_add_keyword(section, keyword)
1780 CALL keyword_release(keyword)
1781 CALL keyword_create(keyword, __location__, name="Temp", &
1782 description="The temperature you want to simulate", &
1783 default_r_val=cp_unit_to_cp2k(300._dp, "K"), &
1784 unit_str="K")
1785 CALL section_add_keyword(section, keyword)
1786 CALL keyword_release(keyword)
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.)
1791 CALL section_add_keyword(section, keyword)
1792 CALL keyword_release(keyword)
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")
1797 CALL section_add_keyword(section, keyword)
1798 CALL keyword_release(keyword)
1799 CALL keyword_create(keyword, __location__, name="dt", &
1800 description="timestep (might be subdivised in nrespa subtimesteps", &
1801 repeats=.false., &
1802 default_r_val=cp_unit_to_cp2k(1.0_dp, "fs"), &
1803 usage="dt 1.0", unit_str="fs")
1804 CALL section_add_keyword(section, keyword)
1805 CALL keyword_release(keyword)
1806 CALL keyword_create(keyword, __location__, name="HARM_INT", &
1807 description="integrator scheme for integrating the harmonic bead springs.", &
1808 usage="HARM_INT (NUMERIC|EXACT)", &
1809 default_i_val=integrate_numeric, &
1810 enum_c_vals=s2a("NUMERIC", "EXACT"), &
1811 enum_i_vals=[integrate_numeric, integrate_exact])
1812 CALL section_add_keyword(section, keyword)
1813 CALL keyword_release(keyword)
1814 CALL keyword_create(keyword, __location__, name="nrespa", &
1815 description="number of respa steps for the bead for each md step", &
1816 repeats=.false., default_i_val=5)
1817 CALL section_add_keyword(section, keyword)
1818 CALL keyword_release(keyword)
1819
1820 CALL keyword_create(keyword, __location__, name="transformation", &
1821 description="Specifies the coordinate transformation to use", &
1822 usage="TRANSFORMATION (NORMAL|STAGE)", &
1823 default_i_val=transformation_normal, &
1824 enum_c_vals=s2a("NORMAL", "STAGE"), &
1826
1827 CALL section_add_keyword(section, keyword)
1828 CALL keyword_release(keyword)
1829 CALL keyword_create(keyword, __location__, name="propagator", &
1830 description="Specifies the real time propagator to use", &
1831 usage="PROPAGATOR (PIMD|RPMD|CMD|BCMD)", &
1832 default_i_val=propagator_pimd, &
1833 enum_c_vals=s2a("PIMD", "RPMD", "CMD", "BCMD"), &
1835 CALL section_add_keyword(section, keyword)
1836 CALL keyword_release(keyword)
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.)
1843 CALL section_add_keyword(section, keyword)
1844 CALL keyword_release(keyword)
1845
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.)
1850 CALL keyword_create(keyword, __location__, name="Q_CENTROID", &
1851 description="Value of the thermostat mass of centroid degree of freedom", &
1852 repeats=.false., default_r_val=-1.0_dp)
1853 CALL section_add_keyword(subsection, keyword)
1854 CALL keyword_release(keyword)
1855 CALL keyword_create(keyword, __location__, name="Q_BEAD", &
1856 description="Value of the thermostat mass of non-centroid degrees of freedom", &
1857 repeats=.false., default_r_val=-1.0_dp)
1858 CALL section_add_keyword(subsection, keyword)
1859 CALL keyword_release(keyword)
1860 CALL keyword_create(keyword, __location__, name="MODEFACTOR", &
1861 description="mass scale factor for non-centroid degrees of freedom", &
1862 repeats=.false., default_r_val=1.0_dp)
1863 CALL section_add_keyword(subsection, keyword)
1864 CALL keyword_release(keyword)
1865 CALL keyword_create(keyword, __location__, name="GAMMA", &
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)
1869 CALL section_add_keyword(subsection, keyword)
1870 CALL keyword_release(keyword)
1871
1872 CALL section_add_subsection(section, subsection)
1873 CALL section_release(subsection)
1874
1875 CALL section_create(subsection, __location__, name="staging", &
1876 description="The section that controls the staging transformation", &
1877 n_keywords=2, n_subsections=0, repeats=.false.)
1878 CALL keyword_create(keyword, __location__, name="j", &
1879 description="Value of the j parameter for the staging transformation", &
1880 repeats=.false., default_i_val=2)
1881 CALL section_add_keyword(subsection, keyword)
1882 CALL keyword_release(keyword)
1883 CALL keyword_create(keyword, __location__, name="Q_END", &
1884 description="Value of the nose-hoover mass for the endbead (Q_end)", &
1885 repeats=.false., default_i_val=2)
1886 CALL section_add_keyword(subsection, keyword)
1887 CALL keyword_release(keyword)
1888 CALL section_add_subsection(section, subsection)
1889 CALL section_release(subsection)
1890
1891 CALL section_create(subsection, __location__, name="BEADS", &
1892 description="Sets positions and velocities of the beads", &
1893 n_keywords=0, n_subsections=2, &
1894 repeats=.false.)
1895 CALL create_coord_section(subsubsection, "BEADS")
1896 CALL section_add_subsection(subsection, subsubsection)
1897 CALL section_release(subsubsection)
1898 CALL create_velocity_section(subsubsection, "BEADS")
1899 CALL section_add_subsection(subsection, subsubsection)
1900 CALL section_release(subsubsection)
1901 CALL section_add_subsection(section, subsection)
1902 CALL section_release(subsection)
1903
1904 CALL section_create(subsection, __location__, name="NOSE", &
1905 description="Controls the Nose-Hoover thermostats", &
1906 n_keywords=1, n_subsections=2, &
1907 repeats=.false.)
1908 CALL keyword_create(keyword, __location__, name="nnos", &
1909 description="length of nose-hoover chain. 0 means no thermostat", &
1910 repeats=.false., default_i_val=2)
1911 CALL section_add_keyword(subsection, keyword)
1912 CALL keyword_release(keyword)
1913 CALL create_coord_section(subsubsection, "NOSE")
1914 CALL section_add_subsection(subsection, subsubsection)
1915 CALL section_release(subsubsection)
1916 CALL create_velocity_section(subsubsection, "NOSE")
1917 CALL section_add_subsection(subsection, subsubsection)
1918 CALL section_release(subsubsection)
1919 CALL section_add_subsection(section, subsection)
1920 CALL section_release(subsection)
1921
1922 CALL create_gle_section(subsection)
1923 CALL section_add_subsection(section, subsection)
1924 CALL section_release(subsection)
1925
1926 CALL section_create(subsection, __location__, name="PILE", &
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.", &
1931 citations=[ceriotti2010], &
1932 n_keywords=3, n_subsections=1, &
1933 repeats=.false.)
1934 CALL create_rng_section(subsubsection)
1935 CALL section_add_subsection(subsection, subsubsection)
1936 CALL section_release(subsubsection)
1937 CALL keyword_create(keyword, __location__, name="TAU", &
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)
1942 CALL section_add_keyword(subsection, keyword)
1943 CALL keyword_release(keyword)
1944 CALL keyword_create(keyword, __location__, name="LAMBDA", &
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)
1948 CALL section_add_keyword(subsection, keyword)
1949 CALL keyword_release(keyword)
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)
1955 CALL section_add_keyword(subsection, keyword)
1956 CALL keyword_release(keyword)
1957 CALL section_add_subsection(section, subsection)
1958 CALL section_release(subsection)
1959
1960 CALL section_create(subsection, __location__, name="PIGLET", &
1961 description="Controls the PI Generalized Langevin Equation thermostat."// &
1962 " Needs the exact harmonic integrator", &
1963 citations=[ceriotti2012], &
1964 n_keywords=4, n_subsections=2, &
1965 repeats=.false.)
1966 CALL create_rng_section(subsubsection)
1967 CALL section_add_subsection(subsection, subsubsection)
1968 CALL section_release(subsubsection)
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)", &
1975 repeats=.false., &
1976 type_of_var=real_t, n_var=-1)
1977 CALL section_add_keyword(subsubsection, keyword)
1978 CALL keyword_release(keyword)
1979 CALL section_add_subsection(subsection, subsubsection)
1980 CALL section_release(subsubsection)
1981 CALL keyword_create(keyword, __location__, name="NEXTRA_DOF", &
1982 description="Number of extra degrees of freedom to ensure markovian dynamics", &
1983 repeats=.false., default_i_val=8)
1984 CALL section_add_keyword(subsection, keyword)
1985 CALL keyword_release(keyword)
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")
1990 CALL section_add_keyword(subsection, keyword)
1991 CALL keyword_release(keyword)
1992 CALL keyword_create(keyword, __location__, name="SMATRIX_INIT", &
1993 description="Select algorithm to initialize piglet S-matrices", &
1994 usage="SMATRIX_INIT (CHOLESKY|DIAGONAL)", &
1995 default_i_val=matrix_init_cholesky, &
1996 enum_c_vals=s2a("CHOLESKY", "DIAGONAL"), &
1998 CALL section_add_keyword(subsection, keyword)
1999 CALL keyword_release(keyword)
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)
2005 CALL section_add_keyword(subsection, keyword)
2006 CALL keyword_release(keyword)
2007 CALL section_add_subsection(section, subsection)
2008 CALL section_release(subsection)
2009
2010 CALL section_create(subsection, __location__, name="QTB", &
2011 description="Controls the QTB-PILE thermostat."// &
2012 " Needs the exact harmonic integrator", &
2013 citations=[brieuc2016], &
2014 n_keywords=7, n_subsections=1, &
2015 repeats=.false.)
2016 CALL create_rng_section(subsubsection)
2017 CALL section_add_subsection(subsection, subsubsection)
2018 CALL section_release(subsubsection)
2019 CALL keyword_create(keyword, __location__, name="TAU", &
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)
2023 CALL section_add_keyword(subsection, keyword)
2024 CALL keyword_release(keyword)
2025 CALL keyword_create(keyword, __location__, name="LAMBDA", &
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)
2029 CALL section_add_keyword(subsection, keyword)
2030 CALL keyword_release(keyword)
2031 CALL keyword_create(keyword, __location__, name="FP", &
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)
2036 CALL section_add_keyword(subsection, keyword)
2037 CALL keyword_release(keyword)
2038 CALL keyword_create(keyword, __location__, name="TAUCUT", &
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)
2042 CALL section_add_keyword(subsection, keyword)
2043 CALL keyword_release(keyword)
2044 CALL keyword_create(keyword, __location__, name="LAMBCUT", &
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)
2048 CALL section_add_keyword(subsection, keyword)
2049 CALL keyword_release(keyword)
2050 CALL keyword_create(keyword, __location__, name="NF", &
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)
2054 CALL section_add_keyword(subsection, keyword)
2055 CALL keyword_release(keyword)
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)
2061 CALL section_add_keyword(subsection, keyword)
2062 CALL keyword_release(keyword)
2063 CALL section_add_subsection(section, subsection)
2064 CALL section_release(subsection)
2065
2066 CALL section_create(subsection, __location__, name="INIT", &
2067 description="Controls the initialization if the beads are not present", &
2068 repeats=.false.)
2069
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.)
2077 CALL section_add_keyword(subsection, keyword)
2078 CALL keyword_release(keyword)
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.)
2084 CALL section_add_keyword(subsection, keyword)
2085 CALL keyword_release(keyword)
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)
2092 CALL section_add_keyword(subsection, keyword)
2093 CALL keyword_release(keyword)
2094 CALL keyword_create(keyword, __location__, name="LEVY_SEED", &
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, &
2098 repeats=.false.)
2099 CALL section_add_keyword(subsection, keyword)
2100 CALL keyword_release(keyword)
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, &
2105 repeats=.false.)
2106 CALL section_add_keyword(subsection, keyword)
2107 CALL keyword_release(keyword)
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.)
2111 CALL section_add_keyword(subsection, keyword)
2112 CALL keyword_release(keyword)
2113
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.)
2118 CALL section_add_keyword(subsection, keyword)
2119 CALL keyword_release(keyword)
2120
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.)
2124 CALL section_add_keyword(subsection, keyword)
2125 CALL keyword_release(keyword)
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.)
2129 CALL section_add_keyword(subsection, keyword)
2130 CALL keyword_release(keyword)
2131
2132 CALL section_add_subsection(section, subsection)
2133 CALL section_release(subsection)
2134
2135 CALL create_helium_section(subsection)
2136 CALL section_add_subsection(section, subsection)
2137 CALL section_release(subsection)
2138
2139 CALL section_create(subsection, __location__, name="PRINT", &
2140 description="Controls the path integral-specific output", &
2141 n_keywords=2, n_subsections=0, repeats=.false.)
2142
2143 NULLIFY (print_key)
2144
2145 CALL cp_print_key_section_create(print_key, __location__, "ENERGY", &
2146 description="Controls the output of the path integral energies", &
2147 print_level=low_print_level, common_iter_levels=1)
2148 CALL section_add_subsection(subsection, print_key)
2149 CALL section_release(print_key)
2150
2151 CALL cp_print_key_section_create(print_key, __location__, "ACTION", &
2152 description="Controls the output of the path integral action", &
2153 print_level=medium_print_level, common_iter_levels=1)
2154 CALL section_add_subsection(subsection, print_key)
2155 CALL section_release(print_key)
2156
2157 CALL cp_print_key_section_create(print_key, __location__, "CENTROID_POS", &
2158 description="Controls the output of the centroid's position", &
2159 unit_str="angstrom", &
2160 print_level=low_print_level, common_iter_levels=1)
2161 CALL add_format_keyword(keyword, print_key, pos=.true., &
2162 description="Output file format for the positions of centroid")
2163 CALL section_add_subsection(subsection, print_key)
2164 CALL section_release(print_key)
2165
2166 CALL cp_print_key_section_create(print_key, __location__, "CENTROID_VEL", &
2167 description="Controls the output of the centroid's velocity", &
2168 unit_str="bohr*au_t^-1", &
2169 print_level=low_print_level, common_iter_levels=1)
2170 CALL add_format_keyword(keyword, print_key, pos=.false., &
2171 description="Output file format for the velocity of centroid")
2172 CALL section_add_subsection(subsection, print_key)
2173 CALL section_release(print_key)
2174
2175 CALL cp_print_key_section_create(print_key, __location__, "CENTROID_GYR", &
2176 description="Controls the output of the centroid's radii of gyration", &
2177 unit_str="angstrom", &
2178 print_level=low_print_level, common_iter_levels=1)
2179 CALL section_add_subsection(subsection, print_key)
2180 CALL section_release(print_key)
2181
2182 CALL cp_print_key_section_create(print_key, __location__, "COM", &
2183 description="Controls the output of the center of mass", &
2184 print_level=high_print_level, common_iter_levels=1)
2185 CALL section_add_subsection(subsection, print_key)
2186 CALL section_release(print_key)
2187
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)
2191 CALL section_add_keyword(subsection, keyword)
2192 CALL keyword_release(keyword)
2193
2194 CALL section_add_subsection(section, subsection)
2195 CALL section_release(subsection)
2196
2197 END SUBROUTINE create_pint_section
2198
2199 ! ***************************************************************************
2200 !> \brief Create the input section for superfluid helium solvent.
2201 !> \author Lukasz Walewski
2202 ! ***************************************************************************
2203! **************************************************************************************************
2204!> \brief ...
2205!> \param section ...
2206! **************************************************************************************************
2207 SUBROUTINE create_helium_section(section)
2208 TYPE(section_type), POINTER :: section
2209
2210 TYPE(keyword_type), POINTER :: keyword
2211 TYPE(section_type), POINTER :: print_key, subsection, subsubsection
2212
2213 cpassert(.NOT. ASSOCIATED(section))
2214
2215 CALL section_create(section, __location__, name="HELIUM", &
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.)
2219
2220 NULLIFY (keyword)
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.)
2224 CALL section_add_keyword(section, keyword)
2225 CALL keyword_release(keyword)
2226
2227 CALL keyword_create(keyword, __location__, name="HELIUM_ONLY", &
2228 description="Simulate helium solvent only, "// &
2229 "disregard solute entirely", &
2230 repeats=.false., default_l_val=.false., &
2231 lone_keyword_l_val=.true.)
2232 CALL section_add_keyword(section, keyword)
2233 CALL keyword_release(keyword)
2234
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.)
2240 CALL section_add_keyword(section, keyword)
2241 CALL keyword_release(keyword)
2242
2243 CALL keyword_create(keyword, __location__, name="NUM_ENV", &
2244 description="Number of independent helium environments", &
2245 repeats=.false., default_i_val=1)
2246 CALL section_add_keyword(section, keyword)
2247 CALL keyword_release(keyword)
2248
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")
2252 CALL section_add_keyword(section, keyword)
2253 CALL keyword_release(keyword)
2254
2255 CALL keyword_create(keyword, __location__, name="GET_FORCES", &
2256 description="Get average MC forces or last MC forces to propagate MD", &
2257 usage="GET_FORCES (AVERAGE|LAST)", &
2258 default_i_val=helium_forces_average, &
2259 enum_c_vals=s2a("AVERAGE", "LAST"), &
2261 CALL section_add_keyword(section, keyword)
2262 CALL keyword_release(keyword)
2263
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)", &
2267 default_i_val=helium_solute_intpot_none, &
2268 enum_c_vals=s2a("NONE", "MWATER", "NNP"), &
2269 enum_i_vals=[ &
2273 enum_desc=s2a( &
2274 "No interaction with solute", &
2275 "Test interaction with wrong Water", &
2276 "Interaction with NNP"))
2277 CALL section_add_keyword(section, keyword)
2278 CALL keyword_release(keyword)
2279
2280 CALL keyword_create(keyword, __location__, name="NATOMS", &
2281 description="Number of helium atoms", &
2282 repeats=.false., default_i_val=64)
2283 CALL section_add_keyword(section, keyword)
2284 CALL keyword_release(keyword)
2285
2286 CALL keyword_create(keyword, __location__, name="NBEADS", &
2287 description="Number of helium path integral beads", &
2288 repeats=.false., default_i_val=25)
2289 CALL section_add_keyword(section, keyword)
2290 CALL keyword_release(keyword)
2291
2292 CALL keyword_create(keyword, __location__, name="RNG_SEED", &
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, &
2296 repeats=.false.)
2297 CALL section_add_keyword(section, keyword)
2298 CALL keyword_release(keyword)
2299
2300 CALL keyword_create(keyword, __location__, name="N_INNER", &
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)
2305 CALL section_add_keyword(section, keyword)
2306 CALL keyword_release(keyword)
2307
2308 CALL keyword_create(keyword, __location__, name="N_OUTER", &
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)
2313 CALL section_add_keyword(section, keyword)
2314 CALL keyword_release(keyword)
2315
2316 CALL keyword_create(keyword, __location__, name="SAMPLING_METHOD", &
2317 description="Choose between Ceperley or the worm algorithm", &
2318 usage="SAMPLING_METHOD (CEPERLEY|WORM)", &
2319 default_i_val=helium_sampling_ceperley, &
2320 enum_c_vals=s2a("CEPERLEY", "WORM"), &
2322 CALL section_add_keyword(section, keyword)
2323 CALL keyword_release(keyword)
2324
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.", &
2328 default_r_val=cp_unit_to_cp2k(300._dp, "K"), &
2329 unit_str="K")
2330 CALL section_add_keyword(section, keyword)
2331 CALL keyword_release(keyword)
2332
2333 CALL keyword_create(keyword, __location__, name="SOLUTE_RADIUS", &
2334 description="Radius of the solute molecule for prevention of"// &
2335 " coordinate collision during initialization", &
2336 default_r_val=cp_unit_to_cp2k(0.0_dp, "angstrom"), &
2337 repeats=.false., type_of_var=real_t, unit_str="angstrom")
2338 CALL section_add_keyword(section, keyword)
2339 CALL keyword_release(keyword)
2340
2341 ! Helium-solute interaction NNP
2342 NULLIFY (subsection)
2343 CALL section_create(subsection, __location__, name="NNP", &
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.)
2347
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")
2352 CALL section_add_keyword(subsection, keyword)
2353 CALL keyword_release(keyword)
2354
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")
2359 CALL section_add_keyword(subsection, keyword)
2360 CALL keyword_release(keyword)
2361
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.", &
2370 repeats=.false., &
2371 n_var=1, &
2372 type_of_var=integer_t, &
2373 default_i_val=8192, &
2374 usage="RAD_SPLINE_N 8192")
2375 CALL section_add_keyword(subsection, keyword)
2376 CALL keyword_release(keyword)
2377
2378 CALL keyword_create(keyword, __location__, name="VERLET_SKIN", &
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.", &
2388 repeats=.false., &
2389 n_var=1, &
2390 type_of_var=real_t, &
2391 default_r_val=-1.0_dp, &
2392 unit_str="bohr", &
2393 usage="VERLET_SKIN [bohr] 0.5")
2394 CALL section_add_keyword(subsection, keyword)
2395 CALL keyword_release(keyword)
2396
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.)
2405
2406 CALL keyword_create(keyword, __location__, name="ELEMENT", &
2407 description="Solute element for which the short range cutoff is in effect", &
2408 repeats=.false., default_c_val="none")
2409 CALL section_add_keyword(subsubsection, keyword)
2410 CALL keyword_release(keyword)
2411
2412 CALL keyword_create(keyword, __location__, name="RADIUS", &
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.", &
2416 default_r_val=cp_unit_to_cp2k(0.0_dp, "angstrom"), &
2417 repeats=.false., type_of_var=real_t, unit_str="angstrom")
2418 CALL section_add_keyword(subsubsection, keyword)
2419 CALL keyword_release(keyword)
2420 CALL section_add_subsection(subsection, subsubsection)
2421 CALL section_release(subsubsection)
2422
2423 NULLIFY (subsubsection)
2424 CALL section_create(subsubsection, __location__, name="MODEL", &
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.)
2429
2430 CALL keyword_create(keyword, __location__, name="WEIGHTS", &
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")
2434 CALL section_add_keyword(subsubsection, keyword)
2435 CALL keyword_release(keyword)
2436 CALL section_add_subsection(subsection, subsubsection)
2437 CALL section_release(subsubsection)
2438
2439 ! Create the PRINT subsection
2440 NULLIFY (subsubsection)
2441 CALL section_create(subsubsection, __location__, name="PRINT", &
2442 description="Section of possible print options in NNP code.", &
2443 n_keywords=0, n_subsections=3, repeats=.false.)
2444 NULLIFY (print_key, keyword)
2445
2446 CALL cp_print_key_section_create(print_key, __location__, "ENERGIES", &
2447 description="Controls the printing of the NNP energies.", &
2448 print_level=medium_print_level, common_iter_levels=1)
2449 CALL section_add_subsection(subsubsection, print_key)
2450 CALL section_release(print_key)
2451
2452 CALL cp_print_key_section_create(print_key, __location__, "FORCES_SIGMA", &
2453 description="Controls the printing of the STD per atom of the NNP forces.", &
2454 print_level=medium_print_level, common_iter_levels=1)
2455 CALL section_add_subsection(subsubsection, print_key)
2456 CALL section_release(print_key)
2457
2458 CALL cp_print_key_section_create(print_key, __location__, "EXTRAPOLATION", &
2459 description="If activated, output structures with extrapolation "// &
2460 "warning in xyz-format", &
2461 print_level=medium_print_level, common_iter_levels=1)
2462 CALL section_add_subsection(subsubsection, print_key)
2463 CALL section_release(print_key)
2464 CALL section_add_subsection(subsection, subsubsection)
2465 CALL section_release(subsubsection)
2466
2467 CALL section_add_subsection(section, subsection)
2468 CALL section_release(subsection) ! release NNP subsection
2469
2470 ! Ceperley's sampling algorithm
2471 NULLIFY (subsection)
2472 CALL section_create(subsection, __location__, name="CEPERLEY", &
2473 description="Enables sampling with Ceperley's algorithm", &
2474 n_keywords=2, n_subsections=1, repeats=.false.)
2475
2476 CALL keyword_create(keyword, __location__, name="BISECTION", &
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)
2480 CALL section_add_keyword(subsection, keyword)
2481 CALL keyword_release(keyword)
2482
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)
2486 CALL section_add_keyword(subsection, keyword)
2487 CALL keyword_release(keyword)
2488
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)", &
2496 default_i_val=helium_mdist_uniform, &
2497 enum_c_vals=s2a( &
2498 "SINGLEV", &
2499 "UNIFORM", &
2500 "LINEAR", &
2501 "QUADRATIC", &
2502 "EXPONENTIAL", &
2503 "GAUSSIAN"), &
2504 enum_i_vals=[ &
2511 CALL section_add_keyword(subsubsection, keyword)
2512 CALL keyword_release(keyword)
2513 CALL keyword_create(keyword, __location__, name="M-VALUE", &
2514 description="Value of m treated in a special way "// &
2515 "(specific behavior depends on the distribution type chosen)", &
2516 repeats=.false., &
2517 default_i_val=1)
2518 CALL section_add_keyword(subsubsection, keyword)
2519 CALL keyword_release(keyword)
2520 CALL keyword_create(keyword, __location__, name="M-RATIO", &
2521 description="Probability ratio betw M-VALUE and other cycle lengths", &
2522 repeats=.false., &
2523 default_r_val=1.0_dp)
2524 CALL section_add_keyword(subsubsection, keyword)
2525 CALL keyword_release(keyword)
2526 CALL section_add_subsection(subsection, subsubsection)
2527 CALL section_release(subsubsection)
2528 CALL section_add_subsection(section, subsection)
2529 CALL section_release(subsection) ! release CEPERLEY subsection
2530
2531! worm algorithm parameters:
2532 NULLIFY (subsection)
2533 CALL section_create(subsection, __location__, name="WORM", &
2534 description="Enables sampling via the canonical worm algorithm adapted from Bonisegni", &
2535 n_keywords=12, n_subsections=0, repeats=.false.)
2536
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)
2540 CALL section_add_keyword(subsection, keyword)
2541 CALL keyword_release(keyword)
2542
2543 CALL keyword_create(keyword, __location__, name="STAGING_L", &
2544 description="From 2 up to max. L-1 beads will be moved", &
2545 repeats=.false., default_i_val=5)
2546 CALL section_add_keyword(subsection, keyword)
2547 CALL keyword_release(keyword)
2548
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)
2552 CALL section_add_keyword(subsection, keyword)
2553 CALL keyword_release(keyword)
2554
2555 CALL keyword_create(keyword, __location__, name="ALLOW_OPEN", &
2556 description="Enable bosonic exchange sampling", &
2557 repeats=.false., default_l_val=.true.)
2558 CALL section_add_keyword(subsection, keyword)
2559 CALL keyword_release(keyword)
2560
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)
2567 CALL section_add_keyword(subsection, keyword)
2568 CALL keyword_release(keyword)
2569
2570 CALL keyword_create(keyword, __location__, name="SHOW_STATISTICS", &
2571 description="Show sampling statistics in output", &
2572 repeats=.false., default_l_val=.true.)
2573 CALL section_add_keyword(subsection, keyword)
2574 CALL keyword_release(keyword)
2575
2576 CALL keyword_create(keyword, __location__, name="CENTROID_WEIGHT", &
2577 description="Absolute weight of the centroid move", &
2578 repeats=.false., default_i_val=10)
2579 CALL section_add_keyword(subsection, keyword)
2580 CALL keyword_release(keyword)
2581
2582 CALL keyword_create(keyword, __location__, name="STAGING_WEIGHT", &
2583 description="Absolute weight of the staging move", &
2584 repeats=.false., default_i_val=30)
2585 CALL section_add_keyword(subsection, keyword)
2586 CALL keyword_release(keyword)
2587
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)
2591 CALL section_add_keyword(subsection, keyword)
2592 CALL keyword_release(keyword)
2593
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)
2597 CALL section_add_keyword(subsection, keyword)
2598 CALL keyword_release(keyword)
2599
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)
2603 CALL section_add_keyword(subsection, keyword)
2604 CALL keyword_release(keyword)
2605
2606 CALL keyword_create(keyword, __location__, name="CRAWL_REPETITION", &
2607 description="Number of repeated crawl moves", &
2608 repeats=.false., default_i_val=4)
2609 CALL section_add_keyword(subsection, keyword)
2610 CALL keyword_release(keyword)
2611
2612 CALL keyword_create(keyword, __location__, name="SWAP_WEIGHT", &
2613 description="Absolute weight of the crawl move", &
2614 repeats=.false., default_i_val=10)
2615 CALL section_add_keyword(subsection, keyword)
2616 CALL keyword_release(keyword)
2617
2618 CALL section_add_subsection(section, subsection)
2619 CALL section_release(subsection) ! release WORM subsection
2620
2621! end of worm parameters
2622
2623 CALL keyword_create(keyword, __location__, name="PERIODIC", &
2624 description="Use periodic boundary conditions for helium", &
2625 repeats=.false., default_l_val=.false.)
2626 CALL section_add_keyword(section, keyword)
2627 CALL keyword_release(keyword)
2628
2629 CALL keyword_create(keyword, __location__, name="CELL_SIZE", &
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")
2634 CALL section_add_keyword(section, keyword)
2635 CALL keyword_release(keyword)
2636
2637 CALL keyword_create(keyword, __location__, name="CELL_SHAPE", &
2638 description="PBC unit cell shape for helium", &
2639 usage="CELL_SHAPE (CUBE|OCTAHEDRON)", &
2640 default_i_val=helium_cell_shape_cube, &
2641 enum_c_vals=s2a("CUBE", "OCTAHEDRON"), &
2643 CALL section_add_keyword(section, keyword)
2644 CALL keyword_release(keyword)
2645
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")
2651 CALL section_add_keyword(section, keyword)
2652 CALL keyword_release(keyword)
2653
2654 CALL keyword_create(keyword, __location__, name="DENSITY", &
2655 description="trial density of helium for determining the helium "// &
2656 "box size", &
2657 repeats=.false., &
2658 default_r_val=cp_unit_to_cp2k(0.02186_dp, "angstrom^-3"), &
2659 unit_str="angstrom^-3")
2660 CALL section_add_keyword(section, keyword)
2661 CALL keyword_release(keyword)
2662
2663 CALL keyword_create(keyword, __location__, name="PRESAMPLE", &
2664 description="Presample He coordinates before first PIMD step", &
2665 repeats=.false., default_l_val=.false.)
2666 CALL section_add_keyword(section, keyword)
2667 CALL keyword_release(keyword)
2668
2669 CALL section_create(subsection, __location__, name="RDF", &
2670 description="Radial distribution settings", &
2671 n_keywords=5, n_subsections=0, repeats=.false.)
2672
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.)
2676 CALL section_add_keyword(subsection, keyword)
2677 CALL keyword_release(keyword)
2678
2679 CALL keyword_create(keyword, __location__, name="MAXR", &
2680 description="Maximum RDF range, defaults to unit cell size", &
2681 repeats=.false., type_of_var=real_t, &
2682 unit_str="angstrom")
2683 CALL section_add_keyword(subsection, keyword)
2684 CALL keyword_release(keyword)
2685
2686 CALL keyword_create(keyword, __location__, name="NBIN", &
2687 description="Number of bins", &
2688 repeats=.false., &
2689 default_i_val=250)
2690 CALL section_add_keyword(subsection, keyword)
2691 CALL keyword_release(keyword)
2692
2693 CALL keyword_create(keyword, __location__, name="SOLUTE_HE", &
2694 description="Whether or not to calculate solute-He RDFs (if solute is present)", &
2695 default_l_val=.true., lone_keyword_l_val=.true.)
2696 CALL section_add_keyword(subsection, keyword)
2697 CALL keyword_release(keyword)
2698
2699 CALL keyword_create(keyword, __location__, name="HE_HE", &
2700 description="Whether or not to calculate He-He RDFs", &
2701 default_l_val=.false., lone_keyword_l_val=.true.)
2702 CALL section_add_keyword(subsection, keyword)
2703 CALL keyword_release(keyword)
2704
2705 CALL section_add_subsection(section, subsection)
2706 CALL section_release(subsection)
2707
2708 NULLIFY (subsection)
2709 CALL section_create(subsection, __location__, name="RHO", &
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.)
2716 CALL section_add_keyword(subsection, keyword)
2717 CALL keyword_release(keyword)
2718 CALL keyword_create(keyword, __location__, name="NBIN", &
2719 description="Number of grid points in each direction for density binning", &
2720 repeats=.false., &
2721 default_i_val=100)
2722 CALL section_add_keyword(subsection, keyword)
2723 CALL keyword_release(keyword)
2724 !
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>", &
2729 type_of_var=integer_t, n_var=-1)
2730 CALL section_add_keyword(subsection, keyword)
2731 CALL keyword_release(keyword)
2732 !
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>", &
2737 type_of_var=integer_t, n_var=-1)
2738 CALL section_add_keyword(subsection, keyword)
2739 CALL keyword_release(keyword)
2740 !
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>", &
2745 type_of_var=integer_t, n_var=-1)
2746 CALL section_add_keyword(subsection, keyword)
2747 CALL keyword_release(keyword)
2748 !
2749 CALL keyword_create(keyword, __location__, name="ATOM_NUMBER", &
2750 description="Atom number density", &
2751 repeats=.false., &
2752 type_of_var=logical_t, &
2753 default_l_val=.true., &
2754 lone_keyword_l_val=.true.)
2755 CALL section_add_keyword(subsection, keyword)
2756 CALL keyword_release(keyword)
2757 !
2758 CALL keyword_create(keyword, __location__, name="PROJECTED_AREA_2", &
2759 description="Projected area squared density, A*A(r)", &
2760 repeats=.false., &
2761 type_of_var=logical_t, &
2762 default_l_val=.false., &
2763 lone_keyword_l_val=.true.)
2764 CALL section_add_keyword(subsection, keyword)
2765 CALL keyword_release(keyword)
2766 !
2767 CALL keyword_create(keyword, __location__, name="WINDING_NUMBER_2", &
2768 description="Winding number squared density, W*W(r)", &
2769 repeats=.false., &
2770 type_of_var=logical_t, &
2771 default_l_val=.false., &
2772 lone_keyword_l_val=.true.)
2773 CALL section_add_keyword(subsection, keyword)
2774 CALL keyword_release(keyword)
2775 !
2776 CALL keyword_create(keyword, __location__, name="WINDING_CYCLE_2", &
2777 description="Winding number squared density, W^2(r)", &
2778 repeats=.false., &
2779 type_of_var=logical_t, &
2780 default_l_val=.false., &
2781 lone_keyword_l_val=.true.)
2782 CALL section_add_keyword(subsection, keyword)
2783 CALL keyword_release(keyword)
2784 !
2785 CALL keyword_create(keyword, __location__, name="MOMENT_OF_INERTIA", &
2786 description="Moment of inertia density", &
2787 repeats=.false., &
2788 type_of_var=logical_t, &
2789 default_l_val=.false., &
2790 lone_keyword_l_val=.true.)
2791 CALL section_add_keyword(subsection, keyword)
2792 CALL keyword_release(keyword)
2793
2794 CALL section_add_subsection(section, subsection)
2795 CALL section_release(subsection)
2796 ! end of subsection RHO
2797
2798 CALL create_coord_section(subsection, "HELIUM")
2799 CALL section_add_subsection(section, subsection)
2800 CALL section_release(subsection)
2801
2802 CALL section_create(subsection, __location__, name="PERM", &
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>", &
2808 type_of_var=integer_t, n_var=-1)
2809 CALL section_add_keyword(subsection, keyword)
2810 CALL keyword_release(keyword)
2811 CALL section_add_subsection(section, subsection)
2812 CALL section_release(subsection)
2813
2814 CALL section_create(subsection, __location__, name="AVERAGES", &
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)
2821 CALL section_add_keyword(subsection, keyword)
2822 CALL keyword_release(keyword)
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)
2827 CALL section_add_keyword(subsection, keyword)
2828 CALL keyword_release(keyword)
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)
2833 CALL section_add_keyword(subsection, keyword)
2834 CALL keyword_release(keyword)
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)
2839 CALL section_add_keyword(subsection, keyword)
2840 CALL keyword_release(keyword)
2841 CALL keyword_create(keyword, __location__, name="RDF", &
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)
2845 CALL section_add_keyword(subsection, keyword)
2846 CALL keyword_release(keyword)
2847 CALL keyword_create(keyword, __location__, name="RHO", &
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)
2851 CALL section_add_keyword(subsection, keyword)
2852 CALL keyword_release(keyword)
2853 CALL keyword_create(keyword, __location__, name="IWEIGHT", &
2854 description="Weight for the restarted quantities "// &
2855 "(number of MC steps used to calculate the accumulated averages)", &
2856 repeats=.false., &
2857 default_i_val=0)
2858 CALL section_add_keyword(subsection, keyword)
2859 CALL keyword_release(keyword)
2860 CALL section_add_subsection(section, subsection)
2861 CALL section_release(subsection)
2862
2863 CALL section_create(subsection, __location__, name="FORCE", &
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, &
2871 n_var=-1)
2872 CALL section_add_keyword(subsection, keyword)
2873 CALL keyword_release(keyword)
2874 CALL section_add_subsection(section, subsection)
2875 CALL section_release(subsection)
2876
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)
2885 CALL section_add_keyword(subsection, keyword)
2886 CALL keyword_release(keyword)
2887 CALL section_add_subsection(section, subsection)
2888 CALL section_release(subsection)
2889
2890 CALL section_create(subsection, __location__, name="PRINT", &
2891 description="The section that controls the output of the helium code", &
2892 n_keywords=16, n_subsections=0, repeats=.false.)
2893
2894 ! *************************************************************************
2895 !> Printkeys for properties output
2896 ! *************************************************************************
2897 NULLIFY (print_key)
2898
2899 ! Properties printed at SILENT print level
2900 !
2901
2902 ! Properties printed at LOW print level
2903 !
2904 CALL cp_print_key_section_create(print_key, __location__, "ENERGY", &
2905 description="Controls the output of helium energies"// &
2906 " (averaged over MC step)", &
2907 print_level=low_print_level, common_iter_levels=1)
2908 CALL section_add_subsection(subsection, print_key)
2909 CALL section_release(print_key)
2910 !
2911 CALL cp_print_key_section_create(print_key, __location__, "PROJECTED_AREA_2_AVG", &
2912 description="Controls the output of the average projected area squared vector", &
2913 print_level=low_print_level, common_iter_levels=1)
2914 CALL section_add_subsection(subsection, print_key)
2915 CALL section_release(print_key)
2916 !
2917 CALL cp_print_key_section_create(print_key, __location__, "WINDING_NUMBER_2_AVG", &
2918 description="Controls the output of the average winding number vector squared", &
2919 print_level=low_print_level, common_iter_levels=1)
2920 CALL section_add_subsection(subsection, print_key)
2921 CALL section_release(print_key)
2922 !
2923 CALL cp_print_key_section_create(print_key, __location__, "MOMENT_OF_INERTIA_AVG", &
2924 description="Controls the output of the average moment of inertia vector", &
2925 print_level=low_print_level, common_iter_levels=1)
2926 CALL section_add_subsection(subsection, print_key)
2927 CALL section_release(print_key)
2928
2929 ! Properties printed at MEDIUM print level
2930 !
2931 CALL cp_print_key_section_create(print_key, __location__, "RDF", &
2932 description="Controls the output of helium radial distribution functions", &
2933 print_level=medium_print_level, common_iter_levels=1)
2934 CALL section_add_subsection(subsection, print_key)
2935 CALL section_release(print_key)
2936
2937 CALL cp_print_key_section_create(print_key, __location__, "RHO", &
2938 description="Controls the output of the helium density "// &
2939 "(Gaussian cube file format)", &
2940 each_iter_names=s2a("PINT"), each_iter_values=[100], &
2941 print_level=medium_print_level, common_iter_levels=1, &
2942 add_last=add_last_numeric)
2943 CALL keyword_create(keyword, __location__, name="BACKUP_COPIES", &
2944 description="Specifies the maximum number of backup copies.", &
2945 usage="BACKUP_COPIES {int}", &
2946 default_i_val=1)
2947 CALL section_add_keyword(print_key, keyword)
2948 CALL keyword_release(keyword)
2949 CALL section_add_subsection(subsection, print_key)
2950 CALL section_release(print_key)
2951 !
2952 CALL cp_print_key_section_create(print_key, __location__, "PROJECTED_AREA", &
2953 description="Controls the output of the projected area vector", &
2954 print_level=medium_print_level, common_iter_levels=1)
2955 CALL section_add_subsection(subsection, print_key)
2956 CALL section_release(print_key)
2957 !
2958 CALL cp_print_key_section_create(print_key, __location__, "WINDING_NUMBER", &
2959 description="Controls the output of the winding number vector", &
2960 print_level=medium_print_level, common_iter_levels=1)
2961 CALL section_add_subsection(subsection, print_key)
2962 CALL section_release(print_key)
2963 !
2964 CALL cp_print_key_section_create(print_key, __location__, "MOMENT_OF_INERTIA", &
2965 description="Controls the output of the moment of inertia vector", &
2966 print_level=medium_print_level, common_iter_levels=1)
2967 CALL section_add_subsection(subsection, print_key)
2968 CALL section_release(print_key)
2969 !
2970 CALL cp_print_key_section_create(print_key, __location__, "PLENGTH", &
2971 description="Controls the output of the helium permutation length", &
2972 print_level=medium_print_level, common_iter_levels=1)
2973 CALL section_add_subsection(subsection, print_key)
2974 CALL section_release(print_key)
2975
2976 CALL cp_print_key_section_create(print_key, __location__, "ACTION", &
2977 description="Controls the output of the total helium action", &
2978 print_level=medium_print_level, common_iter_levels=1)
2979 CALL section_add_subsection(subsection, print_key)
2980 CALL section_release(print_key)
2981
2982 ! Properties printed at HIGH print level
2983 !
2984 CALL cp_print_key_section_create(print_key, __location__, "COORDINATES", &
2985 description="Controls the output of helium coordinates", &
2986 print_level=high_print_level, common_iter_levels=1)
2987 CALL keyword_create(keyword, __location__, name="FORMAT", &
2988 description="Output file format for the coordinates", &
2989 usage="FORMAT (PDB|XYZ)", &
2990 default_i_val=fmt_id_pdb, &
2991 enum_c_vals=s2a("PDB", "XYZ"), &
2992 enum_i_vals=[fmt_id_pdb, fmt_id_xyz], &
2993 enum_desc=s2a("Bead coordinates and connectivity is written in PDB format", &
2994 "Only bead coordinates are written in XYZ format"))
2995 CALL section_add_keyword(print_key, keyword)
2996 CALL keyword_release(keyword)
2997 CALL section_add_subsection(subsection, print_key)
2998 CALL section_release(print_key)
2999 !
3000 CALL cp_print_key_section_create(print_key, __location__, "PERM", &
3001 description="Controls the output of the helium permutation state", &
3002 print_level=high_print_level, common_iter_levels=1)
3003 CALL keyword_create(keyword, __location__, name="FORMAT", &
3004 description="Output format for the permutation", &
3005 usage="FORMAT (CYCLE|PLAIN)", &
3006 default_i_val=perm_cycle, &
3007 enum_c_vals=s2a("CYCLE", "PLAIN"), &
3008 enum_i_vals=[perm_cycle, perm_plain], &
3009 enum_desc=s2a( &
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)"))
3013 CALL section_add_keyword(print_key, keyword)
3014 CALL keyword_release(keyword)
3015 CALL section_add_subsection(subsection, print_key)
3016 CALL section_release(print_key)
3017
3018 CALL cp_print_key_section_create(print_key, __location__, "FORCES", &
3019 description="Controls the output of the helium forces on the solute", &
3020 print_level=high_print_level, common_iter_levels=1)
3021 CALL section_add_subsection(subsection, print_key)
3022 CALL section_release(print_key)
3023
3024 ! Properties printed at DEBUG print level
3025 !
3026 CALL cp_print_key_section_create(print_key, __location__, "ACCEPTS", &
3027 description="Controls the output of the helium acceptance data", &
3028 print_level=debug_print_level, common_iter_levels=1)
3029 CALL section_add_subsection(subsection, print_key)
3030 CALL section_release(print_key)
3031 !
3032 CALL cp_print_key_section_create(print_key, __location__, "FORCES_INST", &
3033 description="Controls the output of the instantaneous helium forces on the solute", &
3034 print_level=debug_print_level, common_iter_levels=1)
3035 CALL section_add_subsection(subsection, print_key)
3036 CALL section_release(print_key)
3037
3038 CALL section_add_subsection(section, subsection)
3039 CALL section_release(subsection)
3040
3041 RETURN
3042 END SUBROUTINE create_helium_section
3043
3044END MODULE input_cp2k_motion
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
unit conversion facility
Definition cp_units.F:30
real(kind=dp) function, public cp_unit_to_cp2k(value, unit_str, defaults, power)
converts to the internal cp2k units to the given unit
Definition cp_units.F:1222
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public propagator_cmd
integer, parameter, public helium_solute_intpot_mwater
integer, parameter, public do_mc_virial
integer, parameter, public fix_xz
integer, parameter, public helium_forces_average
integer, parameter, public do_mc_gemc_nvt
integer, parameter, public helium_mdist_exponential
integer, parameter, public debug_lbfgs
integer, parameter, public helium_sampling_ceperley
integer, parameter, public ls_3pnt
integer, parameter, public helium_cell_shape_octahedron
integer, parameter, public dimer_init_random
integer, parameter, public default_minimization_method_id
integer, parameter, public low_lbfgs
integer, parameter, public helium_solute_intpot_none
integer, parameter, public high_lbfgs
integer, parameter, public perm_cycle
integer, parameter, public propagator_rpmd
integer, parameter, public integrate_exact
integer, parameter, public default_ts_method_id
integer, parameter, public medium_lbfgs
integer, parameter, public default_lbfgs_method_id
integer, parameter, public dimer_init_molden
integer, parameter, public perm_plain
integer, parameter, public helium_forces_last
integer, parameter, public helium_mdist_gaussian
integer, parameter, public fix_y
integer, parameter, public fix_none
integer, parameter, public helium_mdist_quadratic
integer, parameter, public helium_mdist_uniform
integer, parameter, public fix_z
integer, parameter, public default_bfgs_method_id
integer, parameter, public default_cg_method_id
integer, parameter, public default_dimer_method_id
integer, parameter, public transformation_stage
integer, parameter, public helium_sampling_worm
integer, parameter, public matrix_init_cholesky
integer, parameter, public silent_lbfgs
integer, parameter, public ls_2pnt
integer, parameter, public ls_none
integer, parameter, public integrate_numeric
integer, parameter, public ls_fit
integer, parameter, public helium_mdist_singlev
integer, parameter, public ls_gold
integer, parameter, public propagator_pimd
integer, parameter, public do_mc_gemc_npt
integer, parameter, public helium_cell_shape_cube
integer, parameter, public fmt_id_pdb
integer, parameter, public gaussian
integer, parameter, public matrix_init_diagonal
integer, parameter, public fix_xy
integer, parameter, public do_mc_traditional
integer, parameter, public transformation_normal
integer, parameter, public helium_mdist_linear
integer, parameter, public helium_solute_intpot_nnp
integer, parameter, public propagator_bcmd
integer, parameter, public fix_yz
integer, parameter, public fix_x
integer, parameter, public fmt_id_xyz
integer, parameter, public numerical
subroutine, public create_constraint_section(section)
Create the constraint section. This section is useful to impose constraints.
subroutine, public create_fe_section(section)
creates the free energy section
subroutine, public create_md_section(section)
...
subroutine, public add_format_keyword(keyword, section, pos, description)
creates the FORMAT keyword
subroutine, public create_motion_print_section(section)
creates the motionprint section
subroutine, public create_motion_section(section)
creates the motion section
subroutine, public create_band_section(section)
creates the section for a BAND run
builds the subsystem section of the input
subroutine, public create_rng_section(section)
Creates the random number restart section.
subroutine, public create_gle_section(section)
...
subroutine, public create_tmc_section(section)
creates the TreeMonteCarlo subsection
represents keywords in an input
subroutine, public keyword_release(keyword)
releases the given keyword (see doc/ReferenceCounting.html)
subroutine, public keyword_create(keyword, location, name, description, usage, type_of_var, n_var, repeats, variants, default_val, default_l_val, default_r_val, default_lc_val, default_c_val, default_i_val, default_l_vals, default_r_vals, default_c_vals, default_i_vals, lone_keyword_val, lone_keyword_l_val, lone_keyword_r_val, lone_keyword_c_val, lone_keyword_i_val, lone_keyword_l_vals, lone_keyword_r_vals, lone_keyword_c_vals, lone_keyword_i_vals, enum_c_vals, enum_i_vals, enum, enum_strict, enum_desc, unit_str, citations, deprecation_notice, removed)
creates a keyword object
objects that represent the structure of input sections and the data contained in an input section
subroutine, public section_create(section, location, name, description, n_keywords, n_subsections, repeats, citations, deprecation_notice)
creates a list of keywords
subroutine, public section_add_keyword(section, keyword)
adds a keyword to the given section
subroutine, public section_add_subsection(section, subsection)
adds a subsection to the given section
recursive subroutine, public section_release(section)
releases the given keyword list (see doc/ReferenceCounting.html)
a wrapper for basic fortran types.
integer, parameter, public real_t
integer, parameter, public lchar_t
integer, parameter, public logical_t
integer, parameter, public char_t
integer, parameter, public integer_t
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Utilities for string manipulations.
character(len=1), parameter, public newline
represent a keyword in the input
represent a section of the input file