24 dbcsr_print_statistics
46 USE dbt_api,
ONLY: dbt_library_print_stats
134#include "../base/base_uses.f90"
142 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'cp2k_runs'
169 RECURSIVE SUBROUTINE cp2k_run(input_declaration, input_file_name, output_unit, mpi_comm, initial_variables)
170 TYPE(section_type),
POINTER :: input_declaration
171 CHARACTER(LEN=*),
INTENT(IN) :: input_file_name
172 INTEGER,
INTENT(IN) :: output_unit
174 CLASS(mp_comm_type) :: mpi_comm
175 CHARACTER(len=default_path_length), &
176 DIMENSION(:, :),
INTENT(IN) :: initial_variables
178 INTEGER :: f_env_handle, grid_backend, ierr, &
179 iter_level, method_name_id, &
180 new_env_id, prog_name_id, run_type_id
181 INTEGER(KIND=int_8) :: m_memory_max_mpi
182 LOGICAL :: echo_input, grid_apply_cutoff, &
183 grid_validate, has_excited_states, &
184 has_properties, I_was_ionode
185 TYPE(cp_logger_type),
POINTER :: logger, sublogger
186 TYPE(mp_para_env_type),
POINTER :: para_env
187 TYPE(dft_control_type),
POINTER :: dft_control
188 TYPE(f_env_type),
POINTER :: f_env
189 TYPE(force_env_type),
POINTER :: force_env
190 TYPE(global_environment_type),
POINTER :: globenv
191 TYPE(section_vals_type),
POINTER :: glob_section, input_file, root_section, &
194 NULLIFY (para_env, f_env, dft_control)
202 NULLIFY (globenv, force_env)
208 input_file =>
read_input(input_declaration, input_file_name, &
209 initial_variables=initial_variables, &
218 IF (echo_input .AND. (output_unit > 0))
THEN
220 unit_nr=output_unit, &
222 hide_defaults=.false.)
225 CALL check_cp2k_input(input_declaration, input_file, para_env=para_env, output_unit=output_unit)
226 root_section => input_file
233 IF (prog_name_id /=
do_cp2k)
THEN
237 CALL cp2k_init(para_env, output_unit, globenv, input_file_name=input_file_name)
238 CALL cp2k_read(root_section, para_env, globenv)
239 CALL cp2k_setup(root_section, para_env, globenv)
243 IF (output_unit > 0 .AND. &
245 CALL dbcsr_print_config(unit_nr=output_unit)
246 WRITE (unit=output_unit, fmt=
'()')
258 SELECT CASE (prog_name_id)
265 CALL run_swarm(input_declaration, root_section, para_env, globenv, input_file_name)
269 CALL dbcsr_finalize_lib()
270 CALL farming_run(input_declaration, root_section, para_env, initial_variables)
277 input_declaration=input_declaration, &
278 input_path=input_file_name, &
279 output_path=
"__STD_OUT__", mpi_comm=para_env, &
280 output_unit=output_unit, &
281 owns_out_unit=.false., &
282 input=input_file, ierr=ierr)
285 force_env => f_env%force_env
288 CALL lib_test(root_section, para_env, globenv)
290 CALL do_tmc(input_declaration, root_section, para_env, globenv)
294 cpabort(
"Unknown program")
298 SELECT CASE (globenv%run_type_id)
300 CALL do_pint_run(para_env, root_section, input_declaration, globenv)
306 IF (method_name_id /=
do_qs .AND. &
308 method_name_id /=
do_qmmm .AND. &
310 method_name_id /=
do_nnp .AND. &
312 method_name_id /=
do_fist .AND. &
313 method_name_id /=
do_ipi)
THEN
314 cpabort(
"Energy/Force run not available for all methods ")
329 IF (method_name_id ==
do_qs)
THEN
330 CALL get_qs_env(force_env%qs_env, dft_control=dft_control)
335 force_env%qs_env%skip_wf_history = .NOT. (has_properties .OR. has_excited_states .OR. &
336 dft_control%qs_control%cdft .OR. &
337 dft_control%qs_control%et_coupling_calc .OR. &
338 dft_control%do_xas_calculation .OR. &
339 dft_control%do_xas_tdp_calculation .OR. &
343 SELECT CASE (globenv%run_type_id)
349 cpabort(
"Unknown run type")
351 IF (method_name_id ==
do_qs) force_env%qs_env%skip_wf_history = .false.
360 CALL do_mon_car(force_env, globenv, input_declaration, input_file_name)
362 CALL qs_tamc(force_env, globenv)
364 IF (method_name_id /=
do_qs)
THEN
365 cpabort(
"Real time propagation needs METHOD QS. ")
367 CALL get_qs_env(force_env%qs_env, dft_control=dft_control)
368 dft_control%rtp_control%fixed_ions = .true.
369 SELECT CASE (dft_control%rtp_control%rtp_method)
381 IF (method_name_id /=
do_qs)
THEN
382 cpabort(
"Ehrenfest dynamics needs METHOD QS ")
384 CALL get_qs_env(force_env%qs_env, dft_control=dft_control)
385 dft_control%rtp_control%fixed_ions = .false.
390 IF (method_name_id /=
do_qs .AND. &
391 method_name_id /=
do_qmmm)
THEN
392 cpabort(
"Property calculations by Linear Response only within the QS or QMMM program ")
398 SELECT CASE (method_name_id)
402 cpabort(
"Debug run available only with QS, FIST, and QMMM program ")
405 CALL vb_anal(root_section, input_declaration, para_env, globenv)
407 CALL neb(root_section, input_declaration, para_env, globenv)
413 IF (method_name_id /=
do_qs)
THEN
414 cpabort(
"RUN_TYPE MTLR is available only for METHOD QS.")
418 cpabort(
"Unknown run type")
424 CALL dbcsr_print_statistics()
426 CALL dbt_library_print_stats(mpi_comm=mpi_comm, output_unit=output_unit)
431 CALL mpi_comm%max(m_memory_max_mpi)
432 IF (output_unit > 0)
THEN
433 WRITE (output_unit, *)
434 WRITE (output_unit,
'(T2,"MEMORY| Estimated peak process memory [MiB]",T73,I8)') &
435 (m_memory_max_mpi + (1024*1024) - 1)/(1024*1024)
438 IF (prog_name_id ==
do_cp2k)
THEN
439 f_env%force_env => force_env
440 IF (
ASSOCIATED(force_env%globenv))
THEN
441 IF (.NOT.
ASSOCIATED(force_env%globenv, globenv))
THEN
445 force_env%globenv => globenv
452 i_was_ionode = para_env%is_source()
454 cpassert(globenv%ref_count == 1)
461 END SUBROUTINE cp2k_run
474 RECURSIVE SUBROUTINE farming_run(input_declaration, root_section, para_env, initial_variables)
475 TYPE(section_type),
POINTER :: input_declaration
476 TYPE(section_vals_type),
POINTER :: root_section
477 TYPE(mp_para_env_type),
POINTER :: para_env
478 CHARACTER(len=default_path_length),
DIMENSION(:, :),
INTENT(IN) :: initial_variables
480 CHARACTER(len=*),
PARAMETER :: routineN =
'farming_run'
481 INTEGER,
PARAMETER :: minion_status_done = -3, &
482 minion_status_wait = -4
484 CHARACTER(len=7) :: label
485 CHARACTER(LEN=default_path_length) :: output_file
486 CHARACTER(LEN=default_string_length) :: str
487 INTEGER :: dest, handle, i, i_job_to_restart, ierr, ijob, ijob_current, &
488 ijob_end, ijob_start, iunit, n_jobs_to_run, new_output_unit, &
489 new_rank, ngroups, num_minions, output_unit, primus_minion, &
490 minion_rank, source, tag, todo
491 INTEGER,
DIMENSION(:),
POINTER :: group_distribution, &
492 captain_minion_partition, &
493 minion_distribution, &
495 LOGICAL :: found, captain, minion
496 REAL(KIND=
dp) :: t1, t2
497 REAL(KIND=
dp),
ALLOCATABLE,
DIMENSION(:) :: waittime
498 TYPE(cp_logger_type),
POINTER :: logger
499 TYPE(cp_parser_type),
POINTER :: my_parser
500 TYPE(cp_unit_set_type) :: default_units
501 TYPE(farming_env_type),
POINTER :: farming_env
502 TYPE(section_type),
POINTER :: g_section
503 TYPE(section_vals_type),
POINTER :: g_data
504 TYPE(mp_comm_type) :: minion_group, new_group
507 CALL timeset(routinen, handle)
508 NULLIFY (my_parser, g_section, g_data)
514 IF (output_unit > 0)
WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| Hi, welcome on this farm!"
516 ALLOCATE (farming_env)
525 IF (farming_env%captain_minion)
THEN
526 IF (output_unit > 0)
WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| Using a Captain-Minion setup"
528 ALLOCATE (captain_minion_partition(0:1))
529 captain_minion_partition = [1, para_env%num_pe - 1]
530 ALLOCATE (group_distribution(0:para_env%num_pe - 1))
532 CALL minion_group%from_split(para_env, ngroups, group_distribution, &
533 n_subgroups=2, group_partition=captain_minion_partition)
534 DEALLOCATE (captain_minion_partition)
535 DEALLOCATE (group_distribution)
536 num_minions = minion_group%num_pe
537 minion_rank = minion_group%mepos
539 IF (para_env%mepos == 0)
THEN
543 cpassert(num_minions == 1)
544 num_minions = para_env%num_pe - 1
547 cpassert(num_minions == para_env%num_pe - 1)
550 IF (output_unit > 0)
WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| Using a Minion-only setup"
551 CALL minion_group%from_dup(para_env)
552 num_minions = minion_group%num_pe
553 minion_rank = minion_group%mepos
555 IF (output_unit > 0)
WRITE (output_unit, fmt=
"(T2,A,I0)")
"FARMING| Number of Minions ", num_minions
558 ALLOCATE (minion_distribution(0:para_env%num_pe - 1))
559 minion_distribution = 0
560 minion_distribution(para_env%mepos) = minion_rank
561 CALL para_env%sum(minion_distribution)
564 DO i = 1, para_env%num_pe - 1
565 IF (minion_distribution(i) == 0) primus_minion = i
570 ALLOCATE (group_distribution(0:num_minions - 1))
571 group_distribution = -1
573 IF (farming_env%group_size_wish_set)
THEN
574 farming_env%group_size_wish = min(farming_env%group_size_wish, para_env%num_pe)
575 CALL new_group%from_split(minion_group, ngroups, group_distribution, &
576 subgroup_min_size=farming_env%group_size_wish, stride=farming_env%stride)
577 ELSE IF (farming_env%ngroup_wish_set)
THEN
578 IF (
ASSOCIATED(farming_env%group_partition))
THEN
579 CALL new_group%from_split(minion_group, ngroups, group_distribution, &
580 n_subgroups=farming_env%ngroup_wish, &
581 group_partition=farming_env%group_partition, stride=farming_env%stride)
583 CALL new_group%from_split(minion_group, ngroups, group_distribution, &
584 n_subgroups=farming_env%ngroup_wish, stride=farming_env%stride)
587 cpabort(
"must set either group_size_wish or ngroup_wish")
589 new_rank = new_group%mepos
593 IF (farming_env%captain_minion)
THEN
594 IF (para_env%mepos == primus_minion)
THEN
596 CALL para_env%send(group_distribution, 0, tag)
598 CALL para_env%send(ngroups, 0, tag)
600 IF (para_env%mepos == 0)
THEN
602 CALL para_env%recv(group_distribution, primus_minion, tag)
604 CALL para_env%recv(ngroups, primus_minion, tag)
609 IF (output_unit > 0)
THEN
610 WRITE (output_unit, fmt=
"(T2,A,T71,I10)")
"FARMING| Number of created MPI (Minion) groups:", ngroups
611 WRITE (output_unit, fmt=
"(T2,A)", advance=
"NO")
"FARMING| MPI (Minion) process to group correspondence:"
612 DO i = 0, num_minions - 1
613 IF (
modulo(i, 4) == 0)
WRITE (output_unit, *)
614 WRITE (output_unit, fmt=
'(A3,I6,A3,I6,A1)', advance=
"NO") &
615 " (", i,
" : ", group_distribution(i),
")"
617 WRITE (output_unit, *)
623 IF (farming_env%cycle)
THEN
624 n_jobs_to_run = farming_env%max_steps*ngroups
625 i_job_to_restart =
modulo(farming_env%restart_n + n_jobs_to_run - 1, farming_env%njobs) + 1
627 n_jobs_to_run = min(farming_env%njobs, farming_env%max_steps*ngroups)
628 n_jobs_to_run = min(n_jobs_to_run, farming_env%njobs - farming_env%restart_n + 1)
629 i_job_to_restart = n_jobs_to_run + farming_env%restart_n
634 extension=
".restart")
636 WRITE (iunit, *) i_job_to_restart
641 ijob_start = farming_env%restart_n
642 ijob_end = ijob_start + n_jobs_to_run - 1
643 IF (output_unit > 0 .AND. ijob_end - ijob_start < 0)
THEN
644 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| --- WARNING --- NO JOBS NEED EXECUTION ? "
645 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| is the cycle keyword required ?"
646 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| or is a stray RESTART file present ?"
647 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| or is the group_size requested smaller than the number of CPUs?"
651 IF (farming_env%captain_minion)
THEN
656 IF (new_rank == 0)
THEN
661 CALL para_env%send(todo, dest, tag)
666 CALL para_env%recv(todo, source, tag)
669 CALL new_group%bcast(todo, 0)
671 CALL new_group%bcast(todo, 0)
681 IF (t2 - t1 > farming_env%wait_time)
EXIT
686 CALL execute_job(todo)
690 ALLOCATE (minion_status(0:ngroups - 1))
691 minion_status = minion_status_wait
692 ijob_current = ijob_start - 1
695 IF (all(minion_status == minion_status_done))
EXIT
700 CALL para_env%recv(todo, source, tag)
703 IF (output_unit > 0)
THEN
704 WRITE (output_unit, fmt=*)
"Job finished: ", todo
710 CALL get_next_job(farming_env, ijob_start, ijob_end, ijob_current, todo)
713 CALL para_env%send(todo, dest, tag)
717 IF (output_unit > 0)
THEN
718 WRITE (output_unit, fmt=*)
"Job: ", todo,
" Dir: ", trim(farming_env%Job(todo)%cwd), &
719 " assigned to group ", group_distribution(minion_distribution(dest))
724 minion_status(group_distribution(minion_distribution(dest))) = minion_status_done
725 IF (output_unit > 0)
THEN
726 WRITE (output_unit, fmt=*)
"group done: ", group_distribution(minion_distribution(dest))
731 IF (output_unit > 0)
THEN
732 WRITE (output_unit, fmt=*)
""
733 WRITE (output_unit, fmt=*)
"FARMING JOB DEADLOCKED ... CIRCULAR DEPENDENCIES"
734 WRITE (output_unit, fmt=*)
""
743 DEALLOCATE (minion_status)
750 IF (output_unit > 0)
THEN
751 IF (ijob_end - ijob_start >= 0)
THEN
752 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| List of jobs : "
753 DO ijob = ijob_start, ijob_end
754 i =
modulo(ijob - 1, farming_env%njobs) + 1
755 WRITE (output_unit, fmt=*)
"Job: ", i,
" Dir: ", trim(farming_env%Job(i)%cwd),
" Input: ", &
756 trim(farming_env%Job(i)%input),
" MPI group:",
modulo(i - 1, ngroups)
762 DO ijob = ijob_start, ijob_end
763 i =
modulo(ijob - 1, farming_env%njobs) + 1
765 IF (
modulo(i - 1, ngroups) == group_distribution(minion_rank))
THEN
766 IF (output_unit > 0)
THEN
767 WRITE (output_unit, fmt=
"(T2,A,I5.5,A)", advance=
"NO")
" Running Job ", i, &
768 " in "//trim(farming_env%Job(i)%cwd)//
"."
772 IF (output_unit > 0)
THEN
773 WRITE (output_unit, fmt=
"(A)")
" Done, output in "//trim(output_file)
785 ALLOCATE (waittime(0:para_env%num_pe - 1))
787 waittime(para_env%mepos) = t2 - t1
788 CALL para_env%sum(waittime)
789 IF (output_unit > 0)
THEN
790 WRITE (output_unit,
'(T2,A)')
"Process idle times [s] at the end of the run"
791 DO i = 0, para_env%num_pe - 1
792 WRITE (output_unit, fmt=
'(A2,I6,A3,F8.3,A1)', advance=
"NO") &
793 " (", i,
" : ", waittime(i),
")"
794 IF (mod(i + 1, 4) == 0)
WRITE (output_unit,
'(A)')
""
798 DEALLOCATE (waittime)
801 IF (minion)
CALL new_group%free()
802 CALL minion_group%free()
805 DEALLOCATE (group_distribution)
806 DEALLOCATE (minion_distribution)
812 "FARMING%PROGRAM_RUN_INFO")
814 CALL timestop(handle)
821 RECURSIVE SUBROUTINE execute_job(i)
826 CALL m_chdir(trim(farming_env%Job(i)%cwd), ierr)
828 cpabort(
"Failed to change dir to: "//trim(farming_env%Job(i)%cwd))
832 IF (new_rank == 0)
THEN
834 IF (farming_env%Job(i)%output ==
"")
THEN
836 WRITE (output_file,
'(A12,I5.5)')
"FARMING_OUT_", i
838 CALL parser_create(my_parser, file_name=trim(farming_env%Job(i)%input))
849 IF (str /=
"") output_file = trim(str)//
".out"
852 IF (str /=
"") output_file = str
857 DEALLOCATE (my_parser)
859 output_file = farming_env%Job(i)%output
862 CALL open_file(file_name=trim(output_file), &
863 file_action=
"WRITE", &
864 file_status=
"UNKNOWN", &
865 file_position=
"APPEND", &
866 unit_number=new_output_unit)
874 CALL cp2k_run(input_declaration, trim(farming_env%Job(i)%input), new_output_unit, new_group, initial_variables)
875 CALL dbcsr_finalize_lib()
877 IF (new_rank == 0)
CALL close_file(unit_number=new_output_unit)
880 CALL m_chdir(trim(farming_env%cwd), ierr)
883 END SUBROUTINE execute_job
884 END SUBROUTINE farming_run
891 INTEGER :: i, unit_number
894 NULLIFY (root_section)
897 CALL open_file(unit_number=unit_number, &
898 file_name=
"cp2k_input.xml", &
899 file_action=
"WRITE", &
900 file_status=
"REPLACE")
902 WRITE (unit=unit_number, fmt=
"(A)")
'<?xml version="1.0" encoding="utf-8"?>'
905 WRITE (unit=unit_number, fmt=
"(A)") &
907 " <CP2K_VERSION>"//trim(
cp2k_version)//
"</CP2K_VERSION>", &
908 " <CP2K_YEAR>"//trim(
cp2k_year)//
"</CP2K_YEAR>", &
909 " <COMPILE_DATE>"//trim(
compile_date)//
"</COMPILE_DATE>", &
915 DO i = 1, root_section%n_subsections
919 WRITE (unit=unit_number, fmt=
"(A)")
"</CP2K_INPUT>"
938 SUBROUTINE run_input(input_declaration, input_file_path, output_file_path, initial_variables, mpi_comm)
940 CHARACTER(len=*),
INTENT(in) :: input_file_path, output_file_path
941 CHARACTER(len=default_path_length), &
942 DIMENSION(:, :),
INTENT(IN) :: initial_variables
948 IF (
PRESENT(mpi_comm))
THEN
952 para_env => f77_default_para_env
953 CALL para_env%retain()
955 IF (para_env%is_source())
THEN
956 IF (output_file_path ==
"__STD_OUT__")
THEN
959 INQUIRE (file=output_file_path, number=unit_nr)
964 CALL cp2k_run(input_declaration, input_file_path, unit_nr, para_env, initial_variables)
static GRID_HOST_DEVICE int modulo(int a, int m)
Equivalent of Fortran's MODULO, which always return a positive number. https://gcc....
void apply_cutoff(void *ptr)
subroutine, public atom_code(root_section)
Driver routine to perform atomic calculations.
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public cp2kqs2020
integer, save, public iannuzzi2026
Module to perform a counterpoise correction (BSSE).
subroutine, public do_bsse_calculation(force_env, globenv)
Perform an COUNTERPOISE CORRECTION (BSSE) For a 2-body system the correction scheme can be represente...
performs CELL optimization
subroutine, public cp_cell_opt(force_env, globenv)
Main driver to perform geometry optimization.
Debug energy and derivatives w.r.t. finite differences.
subroutine, public cp2k_debug_energy_and_forces(force_env)
...
some minimal info about CP2K, including its version and license
character(len=default_string_length), save, public compile_date
character(len= *), parameter, public compile_revision
character(len= *), parameter, public cp2k_year
character(len= *), parameter, public cp2k_version
subroutine, public run_input(input_declaration, input_file_path, output_file_path, initial_variables, mpi_comm)
runs the given input
subroutine, public write_xml_file()
...
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
Routines that link DBCSR and CP2K concepts together.
subroutine, public cp_dbcsr_config(root_section)
Configures options for DBCSR.
Utility routines to open and close files.
subroutine, public open_file(file_name, unit_number, file_status, file_form, file_action, file_position, file_pad, file_access, debug)
Opens a file and returns its logical unit number.
subroutine, public close_file(unit_number, file_status)
Closes an open file given by its logical unit number.
various routines to log and control the output. The idea is that decisions about where to log should ...
logical function, public cp_logger_would_log(logger, level)
this function can be called to check if the logger would log a message with the given level from the ...
integer, parameter, public cp_note_level
integer function, public cp_logger_get_default_io_unit(logger)
returns the unit nr for the ionode (-1 on all other processors) skips as well checks if the procs cal...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
subroutine, public cp_add_iter_level(logger, level_name, n_rlevel_new)
Adds an iteration level.
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
subroutine, public cp_rm_iter_level(logger, level_name, n_rlevel_att)
Removes an iteration level.
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout, file_access)
...
Utility routines to read data from files. Kept as close as possible to the old parser because.
subroutine, public parser_search_string(parser, string, ignore_case, found, line, begin_line, search_from_begin_of_file)
Search a string pattern in a file defined by its logical unit number "unit". A case sensitive search ...
Utility routines to read data from files. Kept as close as possible to the old parser because.
subroutine, public parser_release(parser)
releases the parser
subroutine, public parser_create(parser, file_name, unit_nr, para_env, end_section_label, separator_chars, comment_char, continuation_char, quote_char, section_char, parse_white_lines, initial_variables, apply_preprocessing)
Start a parser run. Initial variables allow to @SET stuff before opening the file.
subroutine, public cp_unit_set_release(unit_set)
releases the given unit set
subroutine, public cp_unit_set_create(unit_set, name)
initializes the given unit set
subroutine, public export_units_as_xml(iw)
Exports all available units as XML.
subroutine validate(matrix)
Dummy for when DBM_VALIDATE_AGAINST_DBCSR is not defined.
subroutine, public dbm_library_print_stats(mpi_comm, output_unit)
Print DBM library statistics.
This is the start of a dbt_api, all publically needed functions are exported here....
Sets up and terminates the global environment variables.
subroutine, public cp2k_finalize(root_section, para_env, globenv, wdir, q_finalize)
Writes final timings and banner for CP2K.
subroutine, public cp2k_read(root_section, para_env, globenv)
read part of cp2k_init
subroutine, public cp2k_init(para_env, output_unit, globenv, input_file_name, wdir)
Initializes a CP2K run (setting of the global environment variables).
subroutine, public cp2k_setup(root_section, para_env, globenv)
globenv initializations that need the input and error
interface to use cp2k as library
recursive subroutine, public destroy_force_env(env_id, ierr, q_finalize)
deallocates the force_env with the given id
subroutine, public f_env_add_defaults(f_env_id, f_env, handle)
adds the default environments of the f_env to the stack of the defaults, and returns a new error and ...
type(mp_para_env_type), pointer, save, public default_para_env
subroutine, public configure_dbcsr(mpi_comm, output_unit)
Configure DBCSR with CP2K's hooks and selected accelerator device. For an active library the DBCSR AP...
recursive subroutine, public create_force_env(new_env_id, input_declaration, input_path, output_path, mpi_comm, output_unit, owns_out_unit, input, ierr, work_dir, initial_variables)
creates a new force environment using the given input, and writing the output to the given output uni...
subroutine, public f_env_rm_defaults(f_env, ierr, handle)
removes the default environments of the f_env to the stack of the defaults, and sets ierr accordingly...
recursive subroutine, public calc_force(env_id, pos, n_el_pos, e_pot, force, n_el_force, ierr)
returns the energy of the configuration given by the positions passed as argument
subroutine, public farming_parse_input(farming_env, root_section, para_env)
...
integer, parameter, public do_nothing
integer, parameter, public do_wait
subroutine, public get_next_job(farming_env, start, end, current, todo)
...
integer, parameter, public do_deadlock
subroutine, public deallocate_farming_env(farming_env)
deallocates all associated fields of the farming_env type and the type itself
integer, parameter, public job_finished
integer, parameter, public job_running
subroutine, public init_farming_env(farming_env)
help poor compilers do their job i.e. provide a default initialization
Interface for the force calculations.
recursive subroutine, public force_env_calc_energy_force(force_env, calc_force, consistent_energies, skip_external_control, eval_energy_forces, require_consistent_energy_force, linres, calc_stress_tensor)
Interface routine for force and energy calculations.
Interface for the force calculations.
recursive subroutine, public force_env_get(force_env, in_use, fist_env, qs_env, meta_env, fp_env, subsys, para_env, potential_energy, additional_potential, kinetic_energy, harmonic_shell, kinetic_shell, cell, sub_force_env, qmmm_env, qmmmx_env, eip_env, pwdft_env, globenv, input, force_env_section, method_name_id, root_section, mixed_env, nnp_env, embed_env, ipi_env)
returns various attributes about the force environment
performs geometry optimization
subroutine, public cp_geo_opt(force_env, globenv, eval_opt_geo, rm_restart_info)
Main driver to perform geometry optimization.
Define type storing the global information of a run. Keep the amount of stored data small....
subroutine, public globenv_create(globenv)
Creates the global environment globenv.
subroutine, public globenv_release(globenv)
Releases the global environment globenv.
Fortran API for the grid package, which is written in C.
subroutine, public grid_library_set_config(backend, validate, apply_cutoff)
Configures the grid library.
subroutine, public grid_library_print_stats(mpi_comm, output_unit)
Print grid library statistics.
Driver mode - To communicate with i-PI Python wrapper.
subroutine, public run_driver(force_env, globenv)
...
Defines the basic variable types.
integer, parameter, public int_8
integer, parameter, public dp
integer, parameter, public default_string_length
integer, parameter, public default_path_length
Performance tests for basic tasks like matrix multiplies, copy, fft.
subroutine, public lib_test(root_section, para_env, globenv)
Master routine for tests.
Machine interface based on Fortran 2003 and POSIX.
integer, parameter, public default_output_unit
subroutine, public m_memory(mem)
Returns the total amount of memory [bytes] in use, if known, zero otherwise.
subroutine, public m_flush(lunit)
flushes units if the &GLOBAL flag is set accordingly
subroutine, public m_getcwd(curdir)
...
subroutine, public m_chdir(dir, ierror)
...
integer(kind=int_8), save, public m_memory_max
real(kind=dp) function, public m_walltime()
returns time from a real-time clock, protected against rolling early/easily
preps the system for a Monte Carlo run (sets up some environments, calls the routines to read in the ...
subroutine, public do_mon_car(force_env_1, globenv, input_declaration, input_file_name)
starts the Monte Carlo simulation and determines which ensemble we're running
Perform a molecular dynamics (MD) run using QUICKSTEP.
subroutine, public qs_mol_dyn(force_env, globenv, averages, rm_restart_info, hmc_e_initial, hmc_e_final, mdctrl)
Main driver module for Molecular Dynamics.
Interface to the message passing library MPI.
subroutine, public mp_para_env_release(para_env)
releases the para object (to be called when you don't want anymore the shared copy of this object)
integer, parameter, public mp_any_source
Module containing the main loop for simulations with the MiMiC framework.
subroutine, public do_mimic_loop(force_env)
The main loop for a MiMiC run.
Subroutines to perform calculations on molecules from a bigger system. Useful to generate a high-qual...
subroutine, public loop_over_molecules(globenv, force_env)
Prepare data for calculations on isolated molecules.
logical function, public do_mol_loop(force_env)
Is the loop over molecules requested?
Driver for self-consistent minimum tracking linear response U and J calculations.
subroutine, public do_mtlr_u_j(force_env)
Driver for self-consistent MTLR U/J iteration. Each outer iteration performs: 1) one standard ENERGY ...
Module performing a Nudged Elastic Band Calculation.
subroutine, public neb(input, input_declaration, para_env, globenv)
Real subroutine for NEB calculations.
NEGF based quantum transport calculations.
subroutine, public do_negf(force_env)
Perform NEGF calculation.
Fortran API for the offload package, which is written in C.
subroutine, public offload_mempool_stats_print(mpi_comm, output_unit)
Print allocation statistics.
subroutine, public run_optimize_basis(input_declaration, root_section, para_env, globenv)
main entry point for methods aimed at optimizing basis sets
Methods to performs a path integral run.
subroutine, public do_pint_run(para_env, input, input_declaration, globenv)
Perform a path integral simulation.
subroutine, public get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, mimic, sac_ae, sac_ppl, sac_lri, sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, particle_set, energy, force, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_vhxc, rho, rho_xc, pw_env, ewald_env, ewald_pw, active_space, mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, task_list, task_list_soft, rho0_atom_set, rho0_mpole, rhoz_set, rhoz_cneo_set, ecoul_1c, rho0_s_rs, rho0_s_gs, rhoz_cneo_s_rs, rhoz_cneo_s_gs, do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, lri_env, lri_density, exstate_env, ec_env, harris_env, dispersion_env, gcp_env, vee, rho_external, external_vxc, mask, mp2_env, bs_env, kg_env, wanniercentres, atprop, ls_scf_env, do_transport, transport_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, mscfg_env, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, eeq, rhs, do_rixs, tb_tblite)
Get the QUICKSTEP environment.
Contains the setup for the calculation of properties by linear response by the application of second ...
subroutine, public linres_calculation(force_env)
Driver for the linear response calculatios.
provides a uniform framework to add references to CP2K cite and output these
subroutine, public cite_reference(key)
marks a given reference as cited.
subroutine, public export_references_as_xml(unit)
Exports all references as XML.
Routines for the propagation of the linearized RT-BSE equations of motion. Propagates the first-order...
subroutine, public run_propagation_linearized_bse(force_env)
Runs the electron-only real time propagation of the linearized BSE.
Routines for the propagation via RT-BSE method.
subroutine, public run_propagation_bse(force_env)
Runs the electron-only real time BSE propagation.
Routines for the real time propagation.
subroutine, public rt_prop_setup(force_env)
creates rtp_type, gets the initial state, either by reading MO's from file or calling SCF run
Swarm-framwork, provides a convenient master/worker architecture.
subroutine, public run_swarm(input_declaration, root_section, para_env, globenv, input_path)
Central driver routine of the swarm framework, called by cp2k_runs.F.
Perform a temperature accelarated hybrid monte carlo (TAHMC) run using QUICKSTEP.
subroutine, public qs_tamc(force_env, globenv, averages)
Driver routine for TAHMC.
Tree Monte Carlo entry point, set up, CPU redistribution and input reading.
subroutine, public do_analyze_files(input_declaration, root_section, para_env)
analyze TMC trajectory files
subroutine, public do_tmc(input_declaration, root_section, para_env, globenv)
tmc_entry point
Module performing a vibrational analysis.
subroutine, public vb_anal(input, input_declaration, para_env, globenv)
Module performing a vibrational analysis.
type of a logger, at the moment it contains just a print level starting at which level it should be l...
stores the default units to be used
wrapper to abstract the force evaluation of the various methods
contains the initially parsed file and the initial parallel environment
stores all the informations relevant to an mpi environment