24 dbcsr_print_statistics
133#include "../base/base_uses.f90"
141 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'cp2k_runs'
168 RECURSIVE SUBROUTINE cp2k_run(input_declaration, input_file_name, output_unit, mpi_comm, initial_variables)
169 TYPE(section_type),
POINTER :: input_declaration
170 CHARACTER(LEN=*),
INTENT(IN) :: input_file_name
171 INTEGER,
INTENT(IN) :: output_unit
173 CLASS(mp_comm_type) :: mpi_comm
174 CHARACTER(len=default_path_length), &
175 DIMENSION(:, :),
INTENT(IN) :: initial_variables
177 INTEGER :: f_env_handle, grid_backend, ierr, &
178 iter_level, method_name_id, &
179 new_env_id, prog_name_id, run_type_id
180 INTEGER(KIND=int_8) :: m_memory_max_mpi
181 LOGICAL :: echo_input, grid_apply_cutoff, &
182 grid_validate, has_excited_states, &
183 has_properties, I_was_ionode
184 TYPE(cp_logger_type),
POINTER :: logger, sublogger
185 TYPE(mp_para_env_type),
POINTER :: para_env
186 TYPE(dft_control_type),
POINTER :: dft_control
187 TYPE(f_env_type),
POINTER :: f_env
188 TYPE(force_env_type),
POINTER :: force_env
189 TYPE(global_environment_type),
POINTER :: globenv
190 TYPE(section_vals_type),
POINTER :: glob_section, input_file, root_section, &
193 NULLIFY (para_env, f_env, dft_control)
201 NULLIFY (globenv, force_env)
207 input_file =>
read_input(input_declaration, input_file_name, &
208 initial_variables=initial_variables, &
217 IF (echo_input .AND. (output_unit > 0))
THEN
219 unit_nr=output_unit, &
221 hide_defaults=.false.)
224 CALL check_cp2k_input(input_declaration, input_file, para_env=para_env, output_unit=output_unit)
225 root_section => input_file
232 IF (prog_name_id /=
do_cp2k)
THEN
236 CALL cp2k_init(para_env, output_unit, globenv, input_file_name=input_file_name)
237 CALL cp2k_read(root_section, para_env, globenv)
238 CALL cp2k_setup(root_section, para_env, globenv)
242 IF (output_unit > 0 .AND. &
244 CALL dbcsr_print_config(unit_nr=output_unit)
245 WRITE (unit=output_unit, fmt=
'()')
257 SELECT CASE (prog_name_id)
264 CALL run_swarm(input_declaration, root_section, para_env, globenv, input_file_name)
268 CALL dbcsr_finalize_lib()
269 CALL farming_run(input_declaration, root_section, para_env, initial_variables)
276 input_declaration=input_declaration, &
277 input_path=input_file_name, &
278 output_path=
"__STD_OUT__", mpi_comm=para_env, &
279 output_unit=output_unit, &
280 owns_out_unit=.false., &
281 input=input_file, ierr=ierr)
284 force_env => f_env%force_env
287 CALL lib_test(root_section, para_env, globenv)
289 CALL do_tmc(input_declaration, root_section, para_env, globenv)
293 cpabort(
"Unknown program")
297 SELECT CASE (globenv%run_type_id)
299 CALL do_pint_run(para_env, root_section, input_declaration, globenv)
305 IF (method_name_id /=
do_qs .AND. &
307 method_name_id /=
do_qmmm .AND. &
309 method_name_id /=
do_nnp .AND. &
311 method_name_id /=
do_fist .AND. &
312 method_name_id /=
do_ipi)
THEN
313 cpabort(
"Energy/Force run not available for all methods ")
318 n_rlevel_new=iter_level)
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.
352 CALL cp_rm_iter_level(sublogger%iter_info, level_name=
"JUST_ENERGY", n_rlevel_att=iter_level)
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()
430 CALL mpi_comm%max(m_memory_max_mpi)
431 IF (output_unit > 0)
THEN
432 WRITE (output_unit, *)
433 WRITE (output_unit,
'(T2,"MEMORY| Estimated peak process memory [MiB]",T73,I8)') &
434 (m_memory_max_mpi + (1024*1024) - 1)/(1024*1024)
437 IF (prog_name_id ==
do_cp2k)
THEN
438 f_env%force_env => force_env
439 IF (
ASSOCIATED(force_env%globenv))
THEN
440 IF (.NOT.
ASSOCIATED(force_env%globenv, globenv))
THEN
444 force_env%globenv => globenv
451 i_was_ionode = para_env%is_source()
453 cpassert(globenv%ref_count == 1)
460 END SUBROUTINE cp2k_run
473 RECURSIVE SUBROUTINE farming_run(input_declaration, root_section, para_env, initial_variables)
474 TYPE(section_type),
POINTER :: input_declaration
475 TYPE(section_vals_type),
POINTER :: root_section
476 TYPE(mp_para_env_type),
POINTER :: para_env
477 CHARACTER(len=default_path_length),
DIMENSION(:, :),
INTENT(IN) :: initial_variables
479 CHARACTER(len=*),
PARAMETER :: routineN =
'farming_run'
480 INTEGER,
PARAMETER :: minion_status_done = -3, &
481 minion_status_wait = -4
483 CHARACTER(len=7) :: label
484 CHARACTER(LEN=default_path_length) :: output_file
485 CHARACTER(LEN=default_string_length) :: str
486 INTEGER :: dest, handle, i, i_job_to_restart, ierr, ijob, ijob_current, &
487 ijob_end, ijob_start, iunit, n_jobs_to_run, new_output_unit, &
488 new_rank, ngroups, num_minions, output_unit, primus_minion, &
489 minion_rank, source, tag, todo
490 INTEGER,
DIMENSION(:),
POINTER :: group_distribution, &
491 captain_minion_partition, &
492 minion_distribution, &
494 LOGICAL :: found, captain, minion
495 REAL(KIND=
dp) :: t1, t2
496 REAL(KIND=
dp),
ALLOCATABLE,
DIMENSION(:) :: waittime
497 TYPE(cp_logger_type),
POINTER :: logger
498 TYPE(cp_parser_type),
POINTER :: my_parser
499 TYPE(cp_unit_set_type) :: default_units
500 TYPE(farming_env_type),
POINTER :: farming_env
501 TYPE(section_type),
POINTER :: g_section
502 TYPE(section_vals_type),
POINTER :: g_data
503 TYPE(mp_comm_type) :: minion_group, new_group
506 CALL timeset(routinen, handle)
507 NULLIFY (my_parser, g_section, g_data)
513 IF (output_unit > 0)
WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| Hi, welcome on this farm!"
515 ALLOCATE (farming_env)
524 IF (farming_env%captain_minion)
THEN
525 IF (output_unit > 0)
WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| Using a Captain-Minion setup"
527 ALLOCATE (captain_minion_partition(0:1))
528 captain_minion_partition = [1, para_env%num_pe - 1]
529 ALLOCATE (group_distribution(0:para_env%num_pe - 1))
531 CALL minion_group%from_split(para_env, ngroups, group_distribution, &
532 n_subgroups=2, group_partition=captain_minion_partition)
533 DEALLOCATE (captain_minion_partition)
534 DEALLOCATE (group_distribution)
535 num_minions = minion_group%num_pe
536 minion_rank = minion_group%mepos
538 IF (para_env%mepos == 0)
THEN
542 cpassert(num_minions == 1)
543 num_minions = para_env%num_pe - 1
546 cpassert(num_minions == para_env%num_pe - 1)
549 IF (output_unit > 0)
WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| Using a Minion-only setup"
550 CALL minion_group%from_dup(para_env)
551 num_minions = minion_group%num_pe
552 minion_rank = minion_group%mepos
554 IF (output_unit > 0)
WRITE (output_unit, fmt=
"(T2,A,I0)")
"FARMING| Number of Minions ", num_minions
557 ALLOCATE (minion_distribution(0:para_env%num_pe - 1))
558 minion_distribution = 0
559 minion_distribution(para_env%mepos) = minion_rank
560 CALL para_env%sum(minion_distribution)
563 DO i = 1, para_env%num_pe - 1
564 IF (minion_distribution(i) == 0) primus_minion = i
569 ALLOCATE (group_distribution(0:num_minions - 1))
570 group_distribution = -1
572 IF (farming_env%group_size_wish_set)
THEN
573 farming_env%group_size_wish = min(farming_env%group_size_wish, para_env%num_pe)
574 CALL new_group%from_split(minion_group, ngroups, group_distribution, &
575 subgroup_min_size=farming_env%group_size_wish, stride=farming_env%stride)
576 ELSE IF (farming_env%ngroup_wish_set)
THEN
577 IF (
ASSOCIATED(farming_env%group_partition))
THEN
578 CALL new_group%from_split(minion_group, ngroups, group_distribution, &
579 n_subgroups=farming_env%ngroup_wish, &
580 group_partition=farming_env%group_partition, stride=farming_env%stride)
582 CALL new_group%from_split(minion_group, ngroups, group_distribution, &
583 n_subgroups=farming_env%ngroup_wish, stride=farming_env%stride)
586 cpabort(
"must set either group_size_wish or ngroup_wish")
588 new_rank = new_group%mepos
592 IF (farming_env%captain_minion)
THEN
593 IF (para_env%mepos == primus_minion)
THEN
595 CALL para_env%send(group_distribution, 0, tag)
597 CALL para_env%send(ngroups, 0, tag)
599 IF (para_env%mepos == 0)
THEN
601 CALL para_env%recv(group_distribution, primus_minion, tag)
603 CALL para_env%recv(ngroups, primus_minion, tag)
608 IF (output_unit > 0)
THEN
609 WRITE (output_unit, fmt=
"(T2,A,T71,I10)")
"FARMING| Number of created MPI (Minion) groups:", ngroups
610 WRITE (output_unit, fmt=
"(T2,A)", advance=
"NO")
"FARMING| MPI (Minion) process to group correspondence:"
611 DO i = 0, num_minions - 1
612 IF (
modulo(i, 4) == 0)
WRITE (output_unit, *)
613 WRITE (output_unit, fmt=
'(A3,I6,A3,I6,A1)', advance=
"NO") &
614 " (", i,
" : ", group_distribution(i),
")"
616 WRITE (output_unit, *)
622 IF (farming_env%cycle)
THEN
623 n_jobs_to_run = farming_env%max_steps*ngroups
624 i_job_to_restart =
modulo(farming_env%restart_n + n_jobs_to_run - 1, farming_env%njobs) + 1
626 n_jobs_to_run = min(farming_env%njobs, farming_env%max_steps*ngroups)
627 n_jobs_to_run = min(n_jobs_to_run, farming_env%njobs - farming_env%restart_n + 1)
628 i_job_to_restart = n_jobs_to_run + farming_env%restart_n
633 extension=
".restart")
635 WRITE (iunit, *) i_job_to_restart
640 ijob_start = farming_env%restart_n
641 ijob_end = ijob_start + n_jobs_to_run - 1
642 IF (output_unit > 0 .AND. ijob_end - ijob_start < 0)
THEN
643 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| --- WARNING --- NO JOBS NEED EXECUTION ? "
644 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| is the cycle keyword required ?"
645 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| or is a stray RESTART file present ?"
646 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| or is the group_size requested smaller than the number of CPUs?"
650 IF (farming_env%captain_minion)
THEN
655 IF (new_rank == 0)
THEN
660 CALL para_env%send(todo, dest, tag)
665 CALL para_env%recv(todo, source, tag)
668 CALL new_group%bcast(todo, 0)
670 CALL new_group%bcast(todo, 0)
680 IF (t2 - t1 > farming_env%wait_time)
EXIT
685 CALL execute_job(todo)
689 ALLOCATE (minion_status(0:ngroups - 1))
690 minion_status = minion_status_wait
691 ijob_current = ijob_start - 1
694 IF (all(minion_status == minion_status_done))
EXIT
699 CALL para_env%recv(todo, source, tag)
702 IF (output_unit > 0)
THEN
703 WRITE (output_unit, fmt=*)
"Job finished: ", todo
709 CALL get_next_job(farming_env, ijob_start, ijob_end, ijob_current, todo)
712 CALL para_env%send(todo, dest, tag)
716 IF (output_unit > 0)
THEN
717 WRITE (output_unit, fmt=*)
"Job: ", todo,
" Dir: ", trim(farming_env%Job(todo)%cwd), &
718 " assigned to group ", group_distribution(minion_distribution(dest))
723 minion_status(group_distribution(minion_distribution(dest))) = minion_status_done
724 IF (output_unit > 0)
THEN
725 WRITE (output_unit, fmt=*)
"group done: ", group_distribution(minion_distribution(dest))
730 IF (output_unit > 0)
THEN
731 WRITE (output_unit, fmt=*)
""
732 WRITE (output_unit, fmt=*)
"FARMING JOB DEADLOCKED ... CIRCULAR DEPENDENCIES"
733 WRITE (output_unit, fmt=*)
""
742 DEALLOCATE (minion_status)
749 IF (output_unit > 0)
THEN
750 IF (ijob_end - ijob_start >= 0)
THEN
751 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| List of jobs : "
752 DO ijob = ijob_start, ijob_end
753 i =
modulo(ijob - 1, farming_env%njobs) + 1
754 WRITE (output_unit, fmt=*)
"Job: ", i,
" Dir: ", trim(farming_env%Job(i)%cwd),
" Input: ", &
755 trim(farming_env%Job(i)%input),
" MPI group:",
modulo(i - 1, ngroups)
761 DO ijob = ijob_start, ijob_end
762 i =
modulo(ijob - 1, farming_env%njobs) + 1
764 IF (
modulo(i - 1, ngroups) == group_distribution(minion_rank))
THEN
765 IF (output_unit > 0)
THEN
766 WRITE (output_unit, fmt=
"(T2,A,I5.5,A)", advance=
"NO")
" Running Job ", i, &
767 " in "//trim(farming_env%Job(i)%cwd)//
"."
771 IF (output_unit > 0)
THEN
772 WRITE (output_unit, fmt=
"(A)")
" Done, output in "//trim(output_file)
784 ALLOCATE (waittime(0:para_env%num_pe - 1))
786 waittime(para_env%mepos) = t2 - t1
787 CALL para_env%sum(waittime)
788 IF (output_unit > 0)
THEN
789 WRITE (output_unit,
'(T2,A)')
"Process idle times [s] at the end of the run"
790 DO i = 0, para_env%num_pe - 1
791 WRITE (output_unit, fmt=
'(A2,I6,A3,F8.3,A1)', advance=
"NO") &
792 " (", i,
" : ", waittime(i),
")"
793 IF (mod(i + 1, 4) == 0)
WRITE (output_unit,
'(A)')
""
797 DEALLOCATE (waittime)
800 IF (minion)
CALL new_group%free()
801 CALL minion_group%free()
804 DEALLOCATE (group_distribution)
805 DEALLOCATE (minion_distribution)
811 "FARMING%PROGRAM_RUN_INFO")
813 CALL timestop(handle)
820 RECURSIVE SUBROUTINE execute_job(i)
825 CALL m_chdir(trim(farming_env%Job(i)%cwd), ierr)
827 cpabort(
"Failed to change dir to: "//trim(farming_env%Job(i)%cwd))
831 IF (new_rank == 0)
THEN
833 IF (farming_env%Job(i)%output ==
"")
THEN
835 WRITE (output_file,
'(A12,I5.5)')
"FARMING_OUT_", i
837 CALL parser_create(my_parser, file_name=trim(farming_env%Job(i)%input))
848 IF (str /=
"") output_file = trim(str)//
".out"
851 IF (str /=
"") output_file = str
856 DEALLOCATE (my_parser)
858 output_file = farming_env%Job(i)%output
861 CALL open_file(file_name=trim(output_file), &
862 file_action=
"WRITE", &
863 file_status=
"UNKNOWN", &
864 file_position=
"APPEND", &
865 unit_number=new_output_unit)
873 CALL cp2k_run(input_declaration, trim(farming_env%Job(i)%input), new_output_unit, new_group, initial_variables)
874 CALL dbcsr_finalize_lib()
876 IF (new_rank == 0)
CALL close_file(unit_number=new_output_unit)
879 CALL m_chdir(trim(farming_env%cwd), ierr)
882 END SUBROUTINE execute_job
883 END SUBROUTINE farming_run
890 INTEGER :: i, unit_number
893 NULLIFY (root_section)
896 CALL open_file(unit_number=unit_number, &
897 file_name=
"cp2k_input.xml", &
898 file_action=
"WRITE", &
899 file_status=
"REPLACE")
901 WRITE (unit=unit_number, fmt=
"(A)")
'<?xml version="1.0" encoding="utf-8"?>'
904 WRITE (unit=unit_number, fmt=
"(A)") &
906 " <CP2K_VERSION>"//trim(
cp2k_version)//
"</CP2K_VERSION>", &
907 " <CP2K_YEAR>"//trim(
cp2k_year)//
"</CP2K_YEAR>", &
908 " <COMPILE_DATE>"//trim(
compile_date)//
"</COMPILE_DATE>", &
914 DO i = 1, root_section%n_subsections
918 WRITE (unit=unit_number, fmt=
"(A)")
"</CP2K_INPUT>"
937 SUBROUTINE run_input(input_declaration, input_file_path, output_file_path, initial_variables, mpi_comm)
939 CHARACTER(len=*),
INTENT(in) :: input_file_path, output_file_path
940 CHARACTER(len=default_path_length), &
941 DIMENSION(:, :),
INTENT(IN) :: initial_variables
947 IF (
PRESENT(mpi_comm))
THEN
951 para_env => f77_default_para_env
952 CALL para_env%retain()
954 IF (para_env%is_source())
THEN
955 IF (output_file_path ==
"__STD_OUT__")
THEN
958 INQUIRE (file=output_file_path, number=unit_nr)
963 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 close_file(unit_number, file_status)
Closes an open file given by its logical unit number.
subroutine, public open_file(file_name, unit_number, file_status, file_form, file_action, file_position, file_pad, file_access, skip_get_unit_number, debug)
Opens a file and returns 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...
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)
...
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(iteration_info, level_name, n_rlevel_att)
Removes an iteration level.
subroutine, public cp_add_iter_level(iteration_info, level_name, n_rlevel_new)
Adds an iteration level.
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.
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