(git:3f0d10b)
Loading...
Searching...
No Matches
input_cp2k_global.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!> \brief builds the global input section for cp2k
10!> \par History
11!> 06.2004 created [fawzi]
12!> 03.2014 moved to separate file [Ole Schuett]
13!> 10.2016 update seed input [Matthias Krack]
14!> \author fawzi
15! **************************************************************************************************
17 USE bibliography, ONLY: ceriotti2014,&
18 frigo2005,&
20 USE cp_blacs_env, ONLY: blacs_grid_col,&
43 USE cp_iter_types, ONLY: iter_notice,&
53 USE grid_api, ONLY: grid_backend_auto,&
58 USE input_constants, ONLY: &
74 USE input_val_types, ONLY: char_t,&
75 integer_t,&
80 USE kinds, ONLY: dp
81 USE string_utilities, ONLY: s2a
83#include "./base/base_uses.f90"
84
85 IMPLICIT NONE
86 PRIVATE
87
88 LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .true.
89 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_global'
90
91 PUBLIC :: create_global_section
92
93CONTAINS
94
95! **************************************************************************************************
96!> \brief section to hold global settings for the whole program
97!> \param section the section to be created
98!> \author fawzi
99! **************************************************************************************************
100 SUBROUTINE create_global_section(section)
101 TYPE(section_type), POINTER :: section
102
103 INTEGER :: default_dgemm
104 TYPE(keyword_type), POINTER :: keyword
105 TYPE(section_type), POINTER :: print_key, sub_section
106
107 NULLIFY (print_key)
108 cpassert(.NOT. ASSOCIATED(section))
109 CALL section_create(section, __location__, name="GLOBAL", &
110 description="Section with general information on which kind "// &
111 "of simulation to perform and parameters for the whole PROGRAM", &
112 n_keywords=7, n_subsections=1, repeats=.false.)
113
114 NULLIFY (keyword)
115 CALL keyword_create(keyword, __location__, name="BLACS_GRID", &
116 description="how to distribute the processors on the 2d grid needed "// &
117 "by BLACS (and thus SCALAPACK)", usage="BLACS_GRID SQUARE", &
118 default_i_val=blacs_grid_square, enum_c_vals=s2a("SQUARE", "ROW", "COLUMN"), &
119 enum_desc=s2a("Distribution by matrix blocks", "Distribution by matrix rows", &
120 "Distribution by matrix columns"), &
122 CALL section_add_keyword(section, keyword)
123 CALL keyword_release(keyword)
124
125 CALL keyword_create(keyword, __location__, name="BLACS_REPEATABLE", &
126 description="Use a topology for BLACS collectives that is guaranteed to be repeatable "// &
127 "on homogeneous architectures", &
128 usage="BLACS_REPEATABLE", &
129 default_l_val=.false., lone_keyword_l_val=.true.)
130 CALL section_add_keyword(section, keyword)
131 CALL keyword_release(keyword)
132
133 CALL keyword_create(keyword, __location__, name="PREFERRED_DIAG_LIBRARY", &
134 description="Specifies the diagonalization library to be used. If not available, "// &
135 "the ScaLAPACK library is used. Complex (k-point) matrices use ELPA only when it is "// &
136 "requested explicitly", &
137 usage="PREFERRED_DIAG_LIBRARY ELPA", &
138 enum_i_vals=[fm_diag_type_elpa, &
143 enum_c_vals=s2a("ELPA", "ScaLAPACK", "SL", "CUSOLVER", "DLAF"), &
144 enum_desc=s2a("ELPA library", &
145 "ScaLAPACK library", &
146 "ScaLAPACK library (shorthand)", &
147 "cuSOLVER (CUDA GPU library)", &
148 "DLA-Future (CUDA/HIP GPU library)"), &
149 default_i_val=fm_diag_type_default)
150 CALL section_add_keyword(section, keyword)
151 CALL keyword_release(keyword)
152
153 CALL keyword_create(keyword, __location__, name="DIRECT_GENERALIZED_DIAGONALIZATION", &
154 description="Request direct generalized eigenvalue problem diagonalization "// &
155 "without a CP2K-side Cholesky reduction in supported dense matrix paths. "// &
156 "The eigensolver is still selected by PREFERRED_DIAG_LIBRARY.", &
157 usage="DIRECT_GENERALIZED_DIAGONALIZATION", &
158 default_l_val=.false., lone_keyword_l_val=.true.)
159 CALL section_add_keyword(section, keyword)
160 CALL keyword_release(keyword)
161
162 CALL keyword_create(keyword, __location__, name="PREFERRED_CHOLESKY_LIBRARY", &
163 description="Specifies Cholesky decomposition library to be used. If not available, "// &
164 "the ScaLAPACK library is used", &
165 usage="PREFERRED_CHOLESKY_LIBRARY DLAF", &
166 enum_i_vals=[fm_cholesky_type_scalapack, &
169 enum_c_vals=s2a("ScaLAPACK", "SL", "DLAF"), &
170 enum_desc=s2a("ScaLAPACK library", &
171 "ScaLAPACK library (shorthand)", &
172 "DLA-Future (CUDA/HIP GPU library)"), &
173 default_i_val=fm_cholesky_type_default)
174 CALL section_add_keyword(section, keyword)
175 CALL keyword_release(keyword)
176
177#if defined(__SPLA) && defined(__OFFLOAD_GEMM)
178 default_dgemm = do_dgemm_spla
179#else
180 default_dgemm = do_dgemm_blas
181#endif
182 CALL keyword_create(keyword, __location__, name="PREFERRED_DGEMM_LIBRARY", &
183 description="Specifies the library for supported local real and complex matrix multiplications, "// &
184 "including wavefunction correlation and k-point calculations. SPLA enables GPU acceleration "// &
185 "when available; otherwise BLAS is used. This does not affect distributed matrix multiplications "// &
186 "(see keyword FM%TYPE_OF_MATRIX_MULTIPLICATION).", &
187 usage="PREFERRED_DGEMM_LIBRARY SPLA", &
188 default_i_val=default_dgemm, &
189 enum_i_vals=[do_dgemm_spla, do_dgemm_blas], &
190 enum_c_vals=s2a("SPLA", "BLAS"), &
191 enum_desc=s2a("SPLA library", "BLAS library"))
192 CALL section_add_keyword(section, keyword)
193 CALL keyword_release(keyword)
194
195 CALL keyword_create(keyword, __location__, name="EPS_CHECK_DIAG", &
196 description="Check that the orthonormality of the eigenvectors after a diagonalization "// &
197 "fulfills the specified numerical accuracy. A negative threshold value disables the check.", &
198 usage="EPS_CHECK_DIAG 1.0E-14", &
199 default_r_val=-1.0_dp)
200 CALL section_add_keyword(section, keyword)
201 CALL keyword_release(keyword)
202
203 CALL keyword_create(keyword, __location__, name="ELPA_KERNEL", &
204 description="Specifies the kernel to be used when ELPA is in use for real "// &
205 "symmetric matrices", &
206 default_i_val=elpa_kernel_ids(1), &
207 enum_i_vals=elpa_kernel_ids, &
208 enum_c_vals=elpa_kernel_names, &
209 enum_desc=elpa_kernel_descriptions)
210 CALL section_add_keyword(section, keyword)
211 CALL keyword_release(keyword)
212
213 CALL keyword_create(keyword, __location__, name="ELPA_COMPLEX_KERNEL", &
214 description="Specifies the kernel to be used when ELPA is in use for complex "// &
215 "Hermitian matrices (k-points)", &
216 default_i_val=elpa_c_kernel_ids(1), &
217 enum_i_vals=elpa_c_kernel_ids, &
218 enum_c_vals=elpa_c_kernel_names, &
220 CALL section_add_keyword(section, keyword)
221 CALL keyword_release(keyword)
222
223 CALL keyword_create(keyword, __location__, name="ELPA_NEIGVEC_MIN", &
224 description="Minimum number of eigenvectors for the use of the eigensolver from "// &
225 "the ELPA library. The eigensolver from the ScaLAPACK library is used as fallback "// &
226 "for all smaller cases", &
227 usage="ELPA_NEIGVEC_MIN 32", &
229 CALL section_add_keyword(section, keyword)
230 CALL keyword_release(keyword)
231
232 CALL keyword_create(keyword, __location__, name="ELPA_QR", &
233 description="For ELPA, enable a blocked QR step when reducing the input matrix "// &
234 "to banded form before diagonalization. Requires ELPA version 201505 or newer and "// &
235 "is automatically deactivated otherwise. QR is activated only when the matrix size "// &
236 "is suitable. Keyword ELPA_PRINT helps identify suitable cases. Can accelerate "// &
237 "diagonalization for suitable matrices.", &
238 usage="ELPA_QR", &
239 default_l_val=elpa_qr, lone_keyword_l_val=.true.)
240 CALL section_add_keyword(section, keyword)
241 CALL keyword_release(keyword)
242
243 CALL keyword_create(keyword, __location__, name="ELPA_ONE_STAGE", &
244 description="For ELPA, enable the one-stage solver (instead of the two-stage solver). "// &
245 "Please note, ELPA_QR and ELPA_KERNEL settings may be ignored.", &
246 usage="ELPA_ONE_STAGE", &
247 default_l_val=elpa_one_stage, lone_keyword_l_val=.true.)
248 CALL section_add_keyword(section, keyword)
249 CALL keyword_release(keyword)
250
251 CALL keyword_create(keyword, __location__, name="ELPA_PRINT", &
252 description="Controls the printing of ELPA diagonalization information. "// &
253 "Useful for testing purposes, especially together with keyword ELPA_QR.", &
254 usage="ELPA_PRINT", default_l_val=elpa_print, lone_keyword_l_val=.true.)
255 CALL section_add_keyword(section, keyword)
256 CALL keyword_release(keyword)
257
258 CALL keyword_create(keyword, __location__, name="DLAF_NEIGVEC_MIN", &
259 description="Minimum number of eigenvectors for the use of the eigensolver from "// &
260 "the DLA-Future library. The eigensolver from the ScaLAPACK library is used as fallback "// &
261 "for all smaller cases", &
262 usage="DLAF_NEIGVEC_MIN 512", &
263 default_i_val=1024)
264 CALL section_add_keyword(section, keyword)
265 CALL keyword_release(keyword)
266
267 CALL keyword_create(keyword, __location__, name="DLAF_CHOLESKY_N_MIN", &
268 description="Minimum matrix size for the use of the Cholesky decomposition from "// &
269 "the DLA-Future library. The Cholesky decomposition from the ScaLAPACK library is used as fallback "// &
270 "for all smaller cases", &
271 usage="DLAF_CHOLESKY_N_MIN 512", &
272 default_i_val=1024)
273 CALL section_add_keyword(section, keyword)
274 CALL keyword_release(keyword)
275
276 CALL keyword_create( &
277 keyword, __location__, name="PREFERRED_FFT_LIBRARY", &
278 description="Specifies the FFT library which should be preferred. "// &
279 "If it is not available, use FFTW3 if this is linked in, if FFTW3 is not available use FFTSG. "// &
280 "Improved performance with FFTW3 can be obtained specifying a proper value for FFTW_PLAN_TYPE. "// &
281 "Contrary to earlier CP2K versions, all libraries will result in the same grids, "// &
282 "i.e. the subset of grids which all FFT libraries can transform. "// &
283 "FFTW3 is often (close to) optimal, and well tested with CP2K.", &
284 usage="PREFERRED_FFT_LIBRARY FFTW3", &
285 citations=[frigo2005], &
286 default_i_val=do_fft_fftw3, &
287 enum_i_vals=[do_fft_sg, do_fft_fftw3, do_fft_fftw3], &
288 enum_c_vals=s2a("FFTSG", "FFTW3", "FFTW"), &
289 enum_desc=s2a("Stefan Goedecker's FFT (FFTSG), always available, "// &
290 "will be used in case a FFT library is specified and not available.", &
291 "a fast portable FFT library. Recommended. "// &
292 "See also the FFTW_PLAN_TYPE, and FFTW_WISDOM_FILE_NAME keywords.", &
293 "Same as FFTW3 (for compatibility with CP2K 2.3)"))
294 CALL section_add_keyword(section, keyword)
295 CALL keyword_release(keyword)
296
297 NULLIFY (sub_section)
298 CALL section_create(sub_section, __location__, name="preferred_integral_library", &
299 description="Selects the implementation of individual Gaussian integral operations.", &
300 n_keywords=2, n_subsections=0, repeats=.false.)
301
302 CALL keyword_create(keyword, __location__, name="COULOMB_2C", &
303 description="Preferred library for two-center Coulomb integrals (Coulomb_2c). "// &
304 "Libint is used by default when available; otherwise the native implementation is used.", &
305 usage="COULOMB_2C LIBINT", &
306 enum_c_vals=s2a("NATIVE", "LIBINT"), &
307 enum_i_vals=[library_native, library_libint], &
308 enum_desc=s2a("Use CP2K's native implementation.", &
309 "Use the Libint implementation."), &
310 default_i_val=default_coulomb_library)
311 CALL section_add_keyword(sub_section, keyword)
312 CALL keyword_release(keyword)
313
314 CALL keyword_create(keyword, __location__, name="COULOMB_3C", &
315 description="Preferred library for three-center Coulomb integrals (Coulomb_3c). "// &
316 "Libint is used by default when available; otherwise the native implementation is used.", &
317 usage="COULOMB_3C LIBINT", &
318 enum_c_vals=s2a("NATIVE", "LIBINT"), &
319 enum_i_vals=[library_native, library_libint], &
320 enum_desc=s2a("Use CP2K's native implementation.", &
321 "Use the Libint implementation."), &
322 default_i_val=default_coulomb_library)
323 CALL section_add_keyword(sub_section, keyword)
324 CALL keyword_release(keyword)
325
326 CALL section_add_subsection(section, sub_section)
327 CALL section_release(sub_section)
328
329 CALL keyword_create(keyword, __location__, name="FFTW_WISDOM_FILE_NAME", &
330 description="The name of the file that contains wisdom (pre-planned FFTs) for use with FFTW3. "// &
331 "Using wisdom can significantly speed up the FFTs (see the FFTW homepage for details). "// &
332 "Note that wisdom is not transferable between different computer (architectures). "// &
333 "Wisdom can be generated using the fftw-wisdom tool that is part of the fftw installation. "// &
334 "cp2k/tools/cp2k-wisdom is a script that contains some additional info, and can help "// &
335 "to generate a useful default for /etc/fftw/wisdom or particular values for a given simulation. "// &
336 "The wisdom is read from the file, if it exists. The updated wisdom is written back to "// &
337 "the file at the end of the run only if this keyword is specified explicitly.", &
338 usage="FFTW_WISDOM_FILE_NAME wisdom.dat", default_lc_val="/etc/fftw/wisdom")
339 CALL section_add_keyword(section, keyword)
340 CALL keyword_release(keyword)
341
342 CALL keyword_create(keyword, __location__, name="FFTW_PLAN_TYPE", &
343 description="FFTW can have improved performance if it is allowed to plan with "// &
344 "explicit measurements which strategy is best for a given FFT. "// &
345 "While a plan based on measurements is generally faster, "// &
346 "differences in machine load will lead to different plans for the same input file, "// &
347 "and thus numerics for the FFTs will be slightly different from run to run. "// &
348 "PATIENT planning is recommended for long ab initio MD runs.", &
349 usage="FFTW_PLAN_TYPE PATIENT", &
350 citations=[frigo2005], &
351 default_i_val=fftw_plan_estimate, &
353 enum_c_vals=s2a("ESTIMATE", &
354 "MEASURE", &
355 "PATIENT", &
356 "EXHAUSTIVE"), &
357 enum_desc=s2a("Quick estimate, no runtime measurements.", &
358 "Quick measurement, somewhat faster FFTs.", &
359 "Measurements trying a wider range of possibilities.", &
360 "Measurements trying all possibilities - use with caution."))
361 CALL section_add_keyword(section, keyword)
362 CALL keyword_release(keyword)
363
364 CALL keyword_create(keyword, __location__, name="FFT_POOL_SCRATCH_LIMIT", &
365 description="Limits the memory usage of the FFT scratch pool, potentially reducing efficiency a bit", &
366 usage="FFT_POOL_SCRATCH_LIMIT {INTEGER}", default_i_val=15)
367 CALL section_add_keyword(section, keyword)
368 CALL keyword_release(keyword)
369
370 CALL keyword_create(keyword, __location__, name="ALLTOALL_SGL", &
371 description="All-to-all communication (FFT) should use single precision", &
372 usage="ALLTOALL_SGL YES", &
373 default_l_val=.false., lone_keyword_l_val=.true.)
374 CALL section_add_keyword(section, keyword)
375 CALL keyword_release(keyword)
376
377 CALL keyword_create(keyword, __location__, name="PRINT_LEVEL", &
378 variants=["IOLEVEL"], &
379 description="How much output is written out.", &
380 usage="PRINT_LEVEL HIGH", &
381 default_i_val=medium_print_level, enum_c_vals= &
382 s2a("SILENT", "LOW", "MEDIUM", "HIGH", "DEBUG"), &
383 enum_desc=s2a("Almost no output", &
384 "Little output", "Quite some output", "Lots of output", &
385 "Everything is written out, useful for debugging purposes only"), &
388 CALL section_add_keyword(section, keyword)
389 CALL keyword_release(keyword)
390
391 CALL keyword_create( &
392 keyword, __location__, name="PROGRAM_NAME", &
393 variants=["PROGRAM"], &
394 description="Which program should be run", &
395 usage="PROGRAM_NAME {STRING}", &
396 enum_c_vals=s2a("ATOM", "FARMING", "TEST", "CP2K", "OPTIMIZE_INPUT", "OPTIMIZE_BASIS", "TMC", "MC_ANALYSIS", "SWARM"), &
397 enum_desc=s2a("Runs single atom calculations", &
398 "Runs N independent jobs in a single run", &
399 "Do some benchmarking and testing", &
400 "Runs one of the CP2K package", &
401 "A tool to optimize parameters in a CP2K input", &
402 "A tool to create a MOLOPT or ADMM basis for a given set"// &
403 " of training structures", &
404 "Runs Tree Monte Carlo algorithm using additional input file(s)", &
405 "Runs (Tree) Monte Carlo trajectory file analysis", &
406 "Runs swarm based calculation"), &
409 default_i_val=do_cp2k)
410 CALL section_add_keyword(section, keyword)
411 CALL keyword_release(keyword)
412
413 CALL keyword_create(keyword, __location__, name="PROJECT_NAME", &
414 variants=["PROJECT"], &
415 description="Name of the project (used to build the name of the "// &
416 "trajectory, and other files generated by the program)", &
417 usage="PROJECT_NAME {STRING}", &
418 default_c_val="PROJECT")
419 CALL section_add_keyword(section, keyword)
420 CALL keyword_release(keyword)
421
422 CALL keyword_create(keyword, __location__, name="OUTPUT_FILE_NAME", &
423 description="Name of the output file. "// &
424 "Relevant only if automatically started (through farming for example). "// &
425 "If empty uses the project name as basis for it.", &
426 usage="OUTPUT_FILE_NAME {filename}", default_lc_val="")
427 CALL section_add_keyword(section, keyword)
428 CALL keyword_release(keyword)
429
430 CALL keyword_create( &
431 keyword, __location__, name="RUN_TYPE", &
432 description="Selects the top-level task CP2K should run, such as an energy, "// &
433 "energy-and-force, molecular dynamics, geometry optimization, or response calculation.", &
434 usage="RUN_TYPE MD", &
435 default_i_val=energy_force_run, &
436 citations=[ceriotti2014, schonherr2014], &
437 enum_c_vals=s2a("NONE", "ENERGY", "ENERGY_FORCE", "MD", "GEO_OPT", &
438 "MC", "DEBUG", "BSSE", "LR", "PINT", "VIBRATIONAL_ANALYSIS", &
439 "BAND", "CELL_OPT", "WFN_OPT", "WAVEFUNCTION_OPTIMIZATION", &
440 "MOLECULAR_DYNAMICS", "GEOMETRY_OPTIMIZATION", "MONTECARLO", &
441 "LINEAR_RESPONSE", "NORMAL_MODES", "RT_PROPAGATION", &
442 "EHRENFEST_DYN", "TAMC", "TMC", "DRIVER", "NEGF", "MIMIC", "RTP", &
443 "MTLR"), &
451 enum_desc=s2a("Perform no tasks", "Computes energy", "Computes energy and forces", &
452 "Molecular Dynamics", "Geometry Optimization", "Monte Carlo", &
453 "Performs a Debug analysis", "Basis set superposition error", "Linear Response", &
454 "Path integral", "Vibrational analysis", "Band methods", &
455 "Cell optimization. Both cell vectors and atomic positions are optimised.", &
456 "Alias for ENERGY", "Alias for ENERGY", "Alias for MD", "Alias for GEO_OPT", &
457 "Alias for MC", "Alias for LR", "Alias for VIBRATIONAL_ANALYSIS", &
458 "Real Time propagation run (fixed ionic positions)", &
459 "Ehrenfest dynamics (using real time propagation of the wavefunction)", &
460 "Temperature Accelerated Monte Carlo (TAMC)", &
461 "Tree Monte Carlo (TMC), a pre-sampling MC algorithm", &
462 "i-PI driver mode", &
463 "Non-equilibrium Green's function method", &
464 "Run as a client in a simulation through the MiMiC framework", &
465 "Alias for RT_PROPAGATION", &
466 "Minimum tracking linear response calculation for Hubbard U and Hund's J"))
467 CALL section_add_keyword(section, keyword)
468 CALL keyword_release(keyword)
469
470 CALL keyword_create(keyword, __location__, name="WALLTIME", &
471 variants=["WALLTI"], &
472 description="Maximum execution time for this run. Time in seconds or in HH:MM:SS.", &
473 usage="WALLTIME {real} or {HH:MM:SS}", default_lc_val="")
474 CALL section_add_keyword(section, keyword)
475 CALL keyword_release(keyword)
476
477 CALL keyword_create(keyword, __location__, name="ECHO_INPUT", &
478 description="If the input should be echoed to the output with all the "// &
479 "defaults made explicit", &
480 usage="ECHO_INPUT NO", default_l_val=.false., lone_keyword_l_val=.true.)
481 CALL section_add_keyword(section, keyword)
482 CALL keyword_release(keyword)
483
484 CALL keyword_create(keyword, __location__, name="ECHO_ALL_HOSTS", &
485 description="Echo a list of hostname and pid for all MPI processes.", &
486 usage="ECHO_ALL_HOSTS NO", default_l_val=.false., lone_keyword_l_val=.true.)
487 CALL section_add_keyword(section, keyword)
488 CALL keyword_release(keyword)
489
490 CALL keyword_create(keyword, __location__, name="ENABLE_MPI_IO", &
491 description="Enable MPI parallelization for all supported I/O routines "// &
492 "Currently, only cube file writer/reader routines use MPI I/O. Disabling "// &
493 "this flag might speed up calculations dominated by I/O.", &
494 usage="ENABLE_MPI_IO FALSE", default_l_val=.true., lone_keyword_l_val=.true.)
495 CALL section_add_keyword(section, keyword)
496 CALL keyword_release(keyword)
497
498 CALL keyword_create(keyword, __location__, name="TRACE", &
499 description="If a debug trace of the execution of the program should be written", &
500 usage="TRACE", &
501 default_l_val=.false., lone_keyword_l_val=.true.)
502 CALL section_add_keyword(section, keyword)
503 CALL keyword_release(keyword)
504
505 CALL keyword_create(keyword, __location__, name="TRACE_MASTER", &
506 description="For parallel TRACEd runs: only the master node writes output.", &
507 usage="TRACE_MASTER", &
508 default_l_val=.true., lone_keyword_l_val=.true.)
509 CALL section_add_keyword(section, keyword)
510 CALL keyword_release(keyword)
511
512 CALL keyword_create( &
513 keyword, __location__, name="TRACE_MAX", &
514 description="Limit the total number a given subroutine is printed in the trace. Accounting is not influenced.", &
515 usage="TRACE_MAX 100", default_i_val=huge(0))
516 CALL section_add_keyword(section, keyword)
517 CALL keyword_release(keyword)
518
519 CALL keyword_create( &
520 keyword, __location__, name="TRACE_ROUTINES", &
521 description="A list of routines to trace. If left empty all routines are traced. Accounting is not influenced.", &
522 usage="TRACE_ROUTINES {routine_name1} {routine_name2} ...", type_of_var=char_t, &
523 n_var=-1)
524 CALL section_add_keyword(section, keyword)
525 CALL keyword_release(keyword)
526
527 CALL keyword_create( &
528 keyword, __location__, name="FLUSH_SHOULD_FLUSH", &
529 description="Flush output regularly, enabling this option might degrade performance significantly on certain machines.", &
530 usage="FLUSH_SHOULD_FLUSH", &
531 default_l_val=.true., lone_keyword_l_val=.true.)
532 CALL section_add_keyword(section, keyword)
533 CALL keyword_release(keyword)
534
535 CALL keyword_create(keyword, __location__, name="ITER_LEVEL_VERBOSITY", &
536 description="Controls the verbosity of information about iteration levels "// &
537 "printed upon entry or exit of one. Iteration levels are defined by type "// &
538 "of task; the names and descriptions of iteration levels are listed under "// &
539 "the EACH section of printkeys. The default is dependent on PRINT_LEVEL: "// &
540 "SILENT for MEDIUM or lower, NOTICE for HIGH, STACK for DEBUG.", &
541 usage="ITER_LEVEL_VERBOSITY NOTICE", default_i_val=iter_silent, &
542 enum_c_vals=s2a("SILENT", "NOTICE", "STACK"), &
543 enum_desc=s2a("Do not print anything about iter levels", &
544 "Print a notice when entering or exiting an iter level", &
545 "Print a notice and also the full stack of iter levels"), &
546 enum_i_vals=[iter_silent, iter_notice, iter_stack])
547 CALL section_add_keyword(section, keyword)
548 CALL keyword_release(keyword)
549
550 CALL keyword_create(keyword, __location__, name="CALLGRAPH", &
551 description="At the end of the run write a callgraph to file, "// &
552 "which contains detailed timing informations. "// &
553 "This callgraph can be viewed e.g. with the open-source program kcachegrind.", &
554 usage="CALLGRAPH {NONE|MASTER|ALL}", &
555 default_i_val=callgraph_none, lone_keyword_i_val=callgraph_master, &
556 enum_c_vals=s2a("NONE", "MASTER", "ALL"), &
557 enum_desc=s2a("No callgraph gets written", &
558 "Only the master process writes his callgraph", &
559 "All processes write their callgraph (into a separate files)."), &
561 CALL section_add_keyword(section, keyword)
562 CALL keyword_release(keyword)
563
564 CALL keyword_create(keyword, __location__, name="CALLGRAPH_FILE_NAME", &
565 description="Name of the callgraph file, which is written at the end of the run. "// &
566 "If not specified the project name will be used as filename.", &
567 usage="CALLGRAPH_FILE_NAME {filename}", default_lc_val="")
568 CALL section_add_keyword(section, keyword)
569 CALL keyword_release(keyword)
570
571 CALL keyword_create(keyword, __location__, name="SEED", &
572 description="Initial seed for the global (pseudo)random number generator "// &
573 "to create a stream of normally Gaussian distributed random numbers. "// &
574 "Exactly 1 or 6 positive integer values are expected. A single value is "// &
575 "replicated to fill up the full seed array with 6 numbers.", &
576 n_var=-1, &
577 type_of_var=integer_t, &
578 usage="SEED {INTEGER} .. {INTEGER}", &
579 default_i_vals=[2000])
580 CALL section_add_keyword(section, keyword)
581 CALL keyword_release(keyword)
582
583 CALL keyword_create(keyword, __location__, name="SAVE_MEM", &
584 description="Some sections of the input structure are deallocated when not needed,"// &
585 " and reallocated only when used. This reduces the required maximum memory.", &
586 usage="SAVE_MEM", &
587 default_l_val=.false., lone_keyword_l_val=.true.)
588 CALL section_add_keyword(section, keyword)
589 CALL keyword_release(keyword)
590
591 CALL cp_print_key_section_create(print_key, __location__, "TIMINGS", description= &
592 "Controls the printing of the timing report at the end of CP2K execution", &
593 print_level=silent_print_level, filename="__STD_OUT__")
594
595 CALL keyword_create(keyword, __location__, name="THRESHOLD", &
596 description="Specify % of CPUTIME above which the contribution will be inserted in the"// &
597 " final timing report (e.g. 0.02 = 2%)", &
598 usage="THRESHOLD {REAL}", &
599 default_r_val=0.02_dp)
600 CALL section_add_keyword(print_key, keyword)
601 CALL keyword_release(keyword)
602
603 CALL keyword_create(keyword, __location__, name="SORT_BY_SELF_TIME", &
604 description="Sort the final timing report by the average self (exclusive) time instead of the "// &
605 "total (inclusive) time of a routine", &
606 usage="SORT_BY_SELF_TIME on", &
607 default_l_val=.false., lone_keyword_l_val=.true.)
608 CALL section_add_keyword(print_key, keyword)
609 CALL keyword_release(keyword)
610
611 CALL keyword_create(keyword, __location__, name="REPORT_MAXLOC", &
612 description="Report the rank with the slowest maximum self timing."// &
613 " Can be used to debug hard- or software."// &
614 " Also enables ECHO_ALL_HOSTS to link rank to hostname.", &
615 usage="REPORT_MAXLOC on", &
616 default_l_val=.false., lone_keyword_l_val=.true.)
617 CALL section_add_keyword(print_key, keyword)
618 CALL keyword_release(keyword)
619
620 CALL keyword_create(keyword, __location__, name="TIME_MPI", &
621 description="Include message_passing calls in the timing report (useful with CALLGRAPH).", &
622 usage="TIME_MPI .FALSE.", &
623 default_l_val=.true., lone_keyword_l_val=.true.)
624 CALL section_add_keyword(print_key, keyword)
625 CALL keyword_release(keyword)
626
627 CALL keyword_create(keyword, __location__, name="TIMINGS_LEVEL", &
628 description="Specify the level of timings report. "// &
629 "Possible values are: 0 (report only CP2K root timer), 1 (all timers).", &
630 usage="TIMINGS_LEVEL 1", &
631 default_i_val=default_timings_level, lone_keyword_i_val=default_timings_level)
632 CALL section_add_keyword(print_key, keyword)
633 CALL keyword_release(keyword)
634
635 CALL section_add_subsection(section, print_key)
636 CALL section_release(print_key)
637
638 CALL cp_print_key_section_create(print_key, __location__, "REFERENCES", description= &
639 "Controls the printing of the references relevant to the calculations performed", &
640 print_level=silent_print_level, filename="__STD_OUT__")
641 CALL section_add_subsection(section, print_key)
642 CALL section_release(print_key)
643
644 CALL cp_print_key_section_create(print_key, __location__, "PROGRAM_RUN_INFO", &
645 description="controls the printing of initialization controlled by the global section", &
646 print_level=silent_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
647 CALL section_add_subsection(section, print_key)
648 CALL section_release(print_key)
649
650 CALL cp_print_key_section_create(print_key, __location__, "PRINT", description= &
651 "controls the printing of physical and mathematical constants", &
652 print_level=medium_print_level, filename="__STD_OUT__")
653
654 CALL keyword_create(keyword, __location__, name="BASIC_DATA_TYPES", &
655 description="Controls the printing of the basic data types.", &
656 default_l_val=.false., lone_keyword_l_val=.true.)
657 CALL section_add_keyword(print_key, keyword)
658 CALL keyword_release(keyword)
659 CALL keyword_create(keyword, __location__, name="physcon", &
660 description="if the printkey is active prints the physical constants", &
661 default_l_val=.true., lone_keyword_l_val=.true.)
662 CALL section_add_keyword(print_key, keyword)
663 CALL keyword_release(keyword)
664 CALL keyword_create(keyword, __location__, name="SPHERICAL_HARMONICS", &
665 description="if the printkey is active prints the spherical harmonics", &
666 default_i_val=-1, type_of_var=integer_t)
667 CALL section_add_keyword(print_key, keyword)
668 CALL keyword_release(keyword)
669 CALL keyword_create(keyword, __location__, name="RNG_MATRICES", &
670 description="Prints the transformation matrices used by the random number generator", &
671 default_l_val=.false., &
672 lone_keyword_l_val=.true.)
673 CALL section_add_keyword(print_key, keyword)
674 CALL keyword_release(keyword)
675 CALL keyword_create(keyword, __location__, name="RNG_CHECK", &
676 description="Performs a check of the global (pseudo)random "// &
677 "number generator (RNG) and prints the result", &
678 default_l_val=.false., &
679 lone_keyword_l_val=.true.)
680 CALL section_add_keyword(print_key, keyword)
681 CALL keyword_release(keyword)
682 CALL keyword_create(keyword, __location__, name="GLOBAL_GAUSSIAN_RNG", &
683 description="Prints the initial status of the global Gaussian "// &
684 "(pseudo)random number stream which is mostly used for "// &
685 "the velocity initialization", &
686 default_l_val=.false., &
687 lone_keyword_l_val=.true.)
688 CALL section_add_keyword(print_key, keyword)
689 CALL keyword_release(keyword)
690
691 CALL section_add_subsection(section, print_key)
692 CALL section_release(print_key)
693 NULLIFY (sub_section)
694 ! FM section
695 CALL create_fm_section(sub_section)
696 CALL section_add_subsection(section, sub_section)
697 CALL section_release(sub_section)
698 ! DBCSR options
699 CALL create_dbcsr_section(sub_section)
700 CALL section_add_subsection(section, sub_section)
701 CALL section_release(sub_section)
702 ! FM diagonalization redistribution rules
703 CALL create_fm_diag_rules_section(sub_section)
704 CALL section_add_subsection(section, sub_section)
705 CALL section_release(sub_section)
706 ! Grid library
707 CALL create_grid_section(sub_section)
708 CALL section_add_subsection(section, sub_section)
709 CALL section_release(sub_section)
710
711 END SUBROUTINE create_global_section
712
713! **************************************************************************************************
714!> \brief Creates the dbcsr section for configuring FM
715!> \param section ...
716!> \date 2011-04-05
717!> \author Florian Schiffmann
718! **************************************************************************************************
719 SUBROUTINE create_fm_section(section)
720 TYPE(section_type), POINTER :: section
721
722 INTEGER :: default_matmul
723 TYPE(keyword_type), POINTER :: keyword
724
725 cpassert(.NOT. ASSOCIATED(section))
726 CALL section_create(section, __location__, name="FM", &
727 description="Configuration options for the full matrices.", &
728 n_keywords=1, n_subsections=0, repeats=.false.)
729
730 NULLIFY (keyword)
731
732 CALL keyword_create(keyword, __location__, name="NROW_BLOCKS", &
733 description="Defines the number of rows per scalapack block in "// &
734 "the creation of block cyclic dense matrices. "// &
735 "Use an internal default if zero or negative.", &
736 default_i_val=cp_fm_struct_get_nrow_block())
737 CALL section_add_keyword(section, keyword)
738 CALL keyword_release(keyword)
739
740 CALL keyword_create(keyword, __location__, name="NCOL_BLOCKS", &
741 description="Defines the number of columns per scalapack block in "// &
742 "the creation of vlock cyclic dense matrices. "// &
743 "Use an internal default if zero or negative.", &
744 default_i_val=cp_fm_struct_get_ncol_block())
745 CALL section_add_keyword(section, keyword)
746 CALL keyword_release(keyword)
747
748 CALL keyword_create(keyword, __location__, name="FORCE_BLOCK_SIZE", &
749 description="Ensure for small matrices that the layout is compatible "// &
750 "with bigger ones, i.e. no subdivision is performed (can break LAPACK).", &
751 usage="FORCE_BLOCK_SIZE", &
752 default_l_val=.false., lone_keyword_l_val=.true.)
753 CALL section_add_keyword(section, keyword)
754 CALL keyword_release(keyword)
755
756#if defined(__COSMA)
757 default_matmul = do_cosma
758#else
759 default_matmul = do_scalapack
760#endif
761
762 CALL keyword_create(keyword, __location__, name="TYPE_OF_MATRIX_MULTIPLICATION", &
763 description="Allows to switch between scalapack pxgemm and COSMA pxgemm. "// &
764 "COSMA reduces the communication costs but increases the memory demands. "// &
765 "The performance of Scalapack's pxgemm on GPU's depends "// &
766 "crucially on the BLOCK_SIZES. Make sure optimized kernels are available.", &
767 default_i_val=default_matmul, &
768 enum_i_vals=[do_scalapack, do_scalapack, do_cosma], &
769 enum_c_vals=s2a("SCALAPACK", "PDGEMM", "COSMA"), &
770 enum_desc=s2a("Standard ScaLAPACK pdgemm", &
771 "Alias for ScaLAPACK", &
772 "COSMA is employed. See <https://github.com/eth-cscs/COSMA>."))
773 CALL section_add_keyword(section, keyword)
774 CALL keyword_release(keyword)
775
776 !
777 END SUBROUTINE create_fm_section
778! **************************************************************************************************
779!> \brief Creates the input section used to define the heuristic rules which determine if
780!> a FM matrix should be redistributed before diagonalizing it.
781!> \param section the input section to create
782!> \author Nico Holmberg [01.2018]
783! **************************************************************************************************
784 SUBROUTINE create_fm_diag_rules_section(section)
785 TYPE(section_type), POINTER :: section
786
787 TYPE(keyword_type), POINTER :: keyword
788
789 cpassert(.NOT. ASSOCIATED(section))
790 CALL section_create(section, __location__, name="FM_DIAG_SETTINGS", &
791 description="This section defines a set of heuristic rules which are "// &
792 "used to calculate the optimal number of CPUs, M, needed to diagonalize a "// &
793 "full matrix distributed on N processors (FM type). If M &lt N, the matrix "// &
794 "is redistributed onto M processors before it is diagonalized. "// &
795 "The optimal value is calculate according to M = ((K+a*x-1)/(a*x))*a, "// &
796 "where K is the size of the matrix, and {a, x} are integers defined below. "// &
797 "The default values have been selected based on timings on a Cray XE6. "// &
798 "Supports diagonalization libraries SL and ELPA (see keyword ELPA_FORCE_REDISTRIBUTE).", &
799 n_keywords=3, n_subsections=0, repeats=.false.)
800
801 NULLIFY (keyword)
802
803 CALL keyword_create(keyword, __location__, name="PARAMETER_A", &
804 description="Parameter used for defining the rule which determines the optimal "// &
805 "number of CPUs needed to diagonalize a full distributed matrix. The optimal "// &
806 "number of CPUs will be an integer multiple of this variable.", &
807 usage="PARAMETER_A 4", type_of_var=integer_t, &
808 default_i_val=4)
809 CALL section_add_keyword(section, keyword)
810 CALL keyword_release(keyword)
811
812 CALL keyword_create(keyword, __location__, name="PARAMETER_X", &
813 description="Parameter used for defining the rule which determines the optimal "// &
814 "number of CPUs needed to diagonalize a full distributed matrix. The optimal "// &
815 "number of CPUs will be roughly proportional to this value.", &
816 usage="PARAMETER_X 60", type_of_var=integer_t, &
817 default_i_val=60)
818 CALL section_add_keyword(section, keyword)
819 CALL keyword_release(keyword)
820
821 CALL keyword_create(keyword, __location__, name="PRINT_FM_REDISTRIBUTE", &
822 description="Controls printing of information related to this section. For each "// &
823 "diagonalized matrix, prints the size of the matrix, the optimal number of CPUs, "// &
824 "as well as notifies if the matrix was redistributed. Useful for testing.", &
825 usage="PRINT_FM_REDISTRIBUTE", type_of_var=logical_t, &
826 default_l_val=.false., lone_keyword_l_val=.true.)
827 CALL section_add_keyword(section, keyword)
828 CALL keyword_release(keyword)
829
830 CALL keyword_create(keyword, __location__, name="ELPA_FORCE_REDISTRIBUTE", &
831 description="Controls how to perform redistribution when ELPA is used for diagonalization. "// &
832 "By default, matrices are redistributed only when required by the ELPA layout. "// &
833 "Turning on this keyword also applies the defined rules to reduce the number of "// &
834 "processors, using a layout without empty process rows or columns.", &
835 usage="ELPA_FORCE_REDISTRIBUTE", type_of_var=logical_t, &
836 default_l_val=.false., lone_keyword_l_val=.true.)
837 CALL section_add_keyword(section, keyword)
838 CALL keyword_release(keyword)
839
840 END SUBROUTINE create_fm_diag_rules_section
841
842! **************************************************************************************************
843!> \brief Creates the section for configuring the grid library
844!> \param section ...
845!> \author Ole Schuett
846! **************************************************************************************************
847 SUBROUTINE create_grid_section(section)
848 TYPE(section_type), POINTER :: section
849
850 TYPE(keyword_type), POINTER :: keyword
851
852 cpassert(.NOT. ASSOCIATED(section))
853 CALL section_create(section, __location__, name="GRID", &
854 description="Configuration options for the grid library, "// &
855 "which performs e.g. the collocate and integrate of the GPW method.", &
856 n_keywords=1, n_subsections=0, repeats=.false.)
857
858 NULLIFY (keyword)
859 CALL keyword_create(keyword, __location__, name="BACKEND", &
860 description="Selects the backed used by the grid library.", &
861 default_i_val=grid_backend_auto, &
864 enum_c_vals=s2a("AUTO", "REFERENCE", "CPU", "DGEMM", "GPU"), &
865 enum_desc=s2a("Let the grid library pick the backend automatically", &
866 "Reference backend implementation", &
867 "Optimized CPU backend", &
868 "Alternative CPU backend based on DGEMM", &
869 "GPU backend optimized for NVIDIA and AMD GPU"))
870 CALL section_add_keyword(section, keyword)
871 CALL keyword_release(keyword)
872
873 CALL keyword_create(keyword, __location__, name="VALIDATE", &
874 description="When enabled the reference backend is run in shadow mode "// &
875 "and its results are compared with those from the selected backend. "// &
876 "If the two results differ by too much then the calculation is aborted.", &
877 default_l_val=.false., lone_keyword_l_val=.true.)
878 CALL section_add_keyword(section, keyword)
879 CALL keyword_release(keyword)
880
881 CALL keyword_create(keyword, __location__, name="APPLY_CUTOFF", &
882 description="When enabled the cpu backend "// &
883 "apply a spherical cutoff on the top of the cube. "// &
884 "There is a performance penalty using it in "// &
885 "combination with the cpu backend but it is on by "// &
886 "default for the regtests", default_l_val=.true., &
887 lone_keyword_l_val=.true.)
888 CALL section_add_keyword(section, keyword)
889 CALL keyword_release(keyword)
890
891 END SUBROUTINE create_grid_section
892
893END MODULE input_cp2k_global
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public schonherr2014
integer, save, public frigo2005
integer, save, public ceriotti2014
methods related to the blacs parallel environment
integer, parameter, public blacs_grid_row
integer, parameter, public blacs_grid_col
integer, parameter, public blacs_grid_square
Wrapper for ELPA (complex matrices, i.e. cp_cfm_type).
Definition cp_cfm_elpa.F:11
character(len=44), dimension(1), parameter, public elpa_c_kernel_descriptions
character(len=14), dimension(1), parameter, public elpa_c_kernel_names
integer, dimension(1), parameter, public elpa_c_kernel_ids
various cholesky decomposition related routines
integer, parameter, public fm_cholesky_type_dlaf
integer, parameter, public fm_cholesky_type_default
integer, parameter, public fm_cholesky_type_scalapack
used for collecting some of the diagonalization schemes available for cp_fm_type. cp_fm_power also mo...
Definition cp_fm_diag.F:17
integer, parameter, public fm_diag_type_cusolver
Definition cp_fm_diag.F:112
integer, parameter, public fm_diag_type_dlaf
Definition cp_fm_diag.F:112
integer, parameter, public fm_diag_type_scalapack
Definition cp_fm_diag.F:112
integer, parameter, public fm_diag_type_default
Definition cp_fm_diag.F:121
integer, parameter, public fm_diag_type_elpa
Definition cp_fm_diag.F:112
Wrapper for ELPA.
Definition cp_fm_elpa.F:12
logical, save, public elpa_qr
Definition cp_fm_elpa.F:161
character(len=14), dimension(1), parameter, public elpa_kernel_names
Definition cp_fm_elpa.F:152
logical, save, public elpa_print
Definition cp_fm_elpa.F:161
character(len=44), dimension(1), parameter, public elpa_kernel_descriptions
Definition cp_fm_elpa.F:153
integer, dimension(1), parameter, public elpa_kernel_ids
Definition cp_fm_elpa.F:151
logical, save, public elpa_one_stage
Definition cp_fm_elpa.F:168
represent the structure of a full matrix
integer function, public cp_fm_struct_get_nrow_block()
...
integer function, public cp_fm_struct_get_ncol_block()
...
Collection of routines to handle the iteration info.
integer, parameter, public iter_silent
integer, parameter, public iter_stack
integer, parameter, public iter_notice
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
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, do_backup)
creates a print_key section
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
integer, parameter, public silent_print_level
Fortran API for the grid package, which is written in C.
Definition grid_api.F:12
integer, parameter, public grid_backend_auto
Definition grid_api.F:64
integer, parameter, public grid_backend_gpu
Definition grid_api.F:68
integer, parameter, public grid_backend_dgemm
Definition grid_api.F:67
integer, parameter, public grid_backend_cpu
Definition grid_api.F:66
integer, parameter, public grid_backend_ref
Definition grid_api.F:65
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public fftw_plan_patient
integer, parameter, public driver_run
integer, parameter, public energy_run
integer, parameter, public fftw_plan_exhaustive
integer, parameter, public do_fft_sg
integer, parameter, public callgraph_all
integer, parameter, public do_farming
integer, parameter, public do_cosma
integer, parameter, public do_cp2k
integer, parameter, public do_scalapack
integer, parameter, public linear_response_run
integer, parameter, public do_tamc
integer, parameter, public ehrenfest
integer, parameter, public do_opt_basis
integer, parameter, public mtlr_run
integer, parameter, public debug_run
integer, parameter, public do_test
integer, parameter, public fftw_plan_estimate
integer, parameter, public callgraph_master
integer, parameter, public do_dgemm_blas
integer, parameter, public do_band
integer, parameter, public do_tree_mc
integer, parameter, public bsse_run
integer, parameter, public mimic_run
integer, parameter, public energy_force_run
integer, parameter, public callgraph_none
integer, parameter, public do_optimize_input
integer, parameter, public do_atom
integer, parameter, public mon_car_run
integer, parameter, public do_tree_mc_ana
integer, parameter, public mol_dyn_run
integer, parameter, public do_fft_fftw3
integer, parameter, public cell_opt_run
integer, parameter, public pint_run
integer, parameter, public gaussian
integer, parameter, public vib_anal
integer, parameter, public none_run
integer, parameter, public negf_run
integer, parameter, public fftw_plan_measure
integer, parameter, public tree_mc_run
integer, parameter, public real_time_propagation
integer, parameter, public geo_opt_run
integer, parameter, public do_dgemm_spla
integer, parameter, public do_swarm
builds the global input section for cp2k
subroutine, public create_global_section(section)
section to hold global settings for the whole program
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 logical_t
integer, parameter, public char_t
integer, parameter, public integer_t
Library choices for electronic integral APIs.
integer, parameter, public default_coulomb_library
integer, parameter, public library_native
integer, parameter, public library_libint
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Utilities for string manipulations.
Timing routines for accounting.
Definition timings.F:17
integer, parameter, public default_timings_level
Definition timings.F:67
represent a keyword in the input
represent a section of the input file