24 dbcsr_print_statistics
129#include "../base/base_uses.f90"
137 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'cp2k_runs'
164 RECURSIVE SUBROUTINE cp2k_run(input_declaration, input_file_name, output_unit, mpi_comm, initial_variables)
165 TYPE(section_type),
POINTER :: input_declaration
166 CHARACTER(LEN=*),
INTENT(IN) :: input_file_name
167 INTEGER,
INTENT(IN) :: output_unit
169 CLASS(mp_comm_type) :: mpi_comm
170 CHARACTER(len=default_path_length), &
171 DIMENSION(:, :),
INTENT(IN) :: initial_variables
173 INTEGER :: f_env_handle, grid_backend, ierr, &
174 iter_level, method_name_id, &
175 new_env_id, prog_name_id, run_type_id
176#if defined(__DBCSR_ACC)
177 INTEGER,
TARGET :: offload_chosen_device
179 INTEGER,
POINTER :: active_device_id
180 INTEGER(KIND=int_8) :: m_memory_max_mpi
181 LOGICAL :: echo_input, grid_apply_cutoff, &
182 grid_validate, I_was_ionode
183 TYPE(cp_logger_type),
POINTER :: logger, sublogger
184 TYPE(mp_para_env_type),
POINTER :: para_env
185 TYPE(dft_control_type),
POINTER :: dft_control
186 TYPE(f_env_type),
POINTER :: f_env
187 TYPE(force_env_type),
POINTER :: force_env
188 TYPE(global_environment_type),
POINTER :: globenv
189 TYPE(section_vals_type),
POINTER :: glob_section, input_file, root_section
191 NULLIFY (para_env, f_env, dft_control, active_device_id)
195#if defined(__DBCSR_ACC)
198 active_device_id => offload_chosen_device
201 CALL dbcsr_init_lib(mpi_comm%get_handle(), io_unit=output_unit, &
202 accdrv_active_device_id=active_device_id)
204 NULLIFY (globenv, force_env)
209 input_file =>
read_input(input_declaration, input_file_name, initial_variables=initial_variables, &
220 hide_root=.true., hide_defaults=.false.)
223 CALL check_cp2k_input(input_declaration, input_file, para_env=para_env, output_unit=output_unit)
224 root_section => input_file
231 IF (prog_name_id /=
do_cp2k)
THEN
235 CALL cp2k_init(para_env, output_unit, globenv, input_file_name=input_file_name)
236 CALL cp2k_read(root_section, para_env, globenv)
237 CALL cp2k_setup(root_section, para_env, globenv)
241 IF (output_unit > 0 .AND. &
243 CALL dbcsr_print_config(unit_nr=output_unit)
244 WRITE (unit=output_unit, fmt=
'()')
256 SELECT CASE (prog_name_id)
263 CALL run_swarm(input_declaration, root_section, para_env, globenv, input_file_name)
265 CALL dbcsr_finalize_lib()
266 CALL farming_run(input_declaration, root_section, para_env, initial_variables)
267 CALL dbcsr_init_lib(mpi_comm%get_handle(), io_unit=output_unit, &
268 accdrv_active_device_id=active_device_id)
274 input_declaration=input_declaration, &
275 input_path=input_file_name, &
276 output_path=
"__STD_OUT__", mpi_comm=para_env, &
277 output_unit=output_unit, &
278 owns_out_unit=.false., &
279 input=input_file, ierr=ierr)
282 force_env => f_env%force_env
285 CALL lib_test(root_section, para_env, globenv)
287 CALL do_tmc(input_declaration, root_section, para_env, globenv)
295 SELECT CASE (globenv%run_type_id)
297 CALL do_pint_run(para_env, root_section, input_declaration, globenv)
303 IF (method_name_id /=
do_qs .AND. &
305 method_name_id /=
do_qmmm .AND. &
307 method_name_id /=
do_nnp .AND. &
309 method_name_id /=
do_fist .AND. &
310 method_name_id /=
do_ipi) &
311 cpabort(
"Energy/Force run not available for all methods ")
315 n_rlevel_new=iter_level)
323 SELECT CASE (globenv%run_type_id)
331 CALL cp_rm_iter_level(sublogger%iter_info, level_name=
"JUST_ENERGY", n_rlevel_att=iter_level)
339 CALL do_mon_car(force_env, globenv, input_declaration, input_file_name)
341 CALL qs_tamc(force_env, globenv)
343 IF (method_name_id /=
do_qs) &
344 cpabort(
"Real time propagation needs METHOD QS. ")
345 CALL get_qs_env(force_env%qs_env, dft_control=dft_control)
346 dft_control%rtp_control%fixed_ions = .true.
347 SELECT CASE (dft_control%rtp_control%rtp_method)
356 IF (method_name_id /=
do_qs) &
357 cpabort(
"Ehrenfest dynamics needs METHOD QS ")
358 CALL get_qs_env(force_env%qs_env, dft_control=dft_control)
359 dft_control%rtp_control%fixed_ions = .false.
364 IF (method_name_id /=
do_qs .AND. &
366 cpabort(
"Property calculations by Linear Response only within the QS or QMMM program ")
371 SELECT CASE (method_name_id)
375 cpabort(
"Debug run available only with QS, FIST, and QMMM program ")
378 CALL vb_anal(root_section, input_declaration, para_env, globenv)
380 CALL neb(root_section, input_declaration, para_env, globenv)
390 CALL dbcsr_print_statistics()
395 CALL mpi_comm%max(m_memory_max_mpi)
396 IF (output_unit > 0)
THEN
397 WRITE (output_unit, *)
398 WRITE (output_unit,
'(T2,"MEMORY| Estimated peak process memory [MiB]",T73,I8)') &
399 (m_memory_max_mpi + (1024*1024) - 1)/(1024*1024)
402 IF (prog_name_id ==
do_cp2k)
THEN
403 f_env%force_env => force_env
404 IF (
ASSOCIATED(force_env%globenv))
THEN
405 IF (.NOT.
ASSOCIATED(force_env%globenv, globenv))
THEN
409 force_env%globenv => globenv
416 i_was_ionode = para_env%is_source()
418 cpassert(globenv%ref_count == 1)
423 CALL dbcsr_finalize_lib()
427 END SUBROUTINE cp2k_run
440 RECURSIVE SUBROUTINE farming_run(input_declaration, root_section, para_env, initial_variables)
441 TYPE(section_type),
POINTER :: input_declaration
442 TYPE(section_vals_type),
POINTER :: root_section
443 TYPE(mp_para_env_type),
POINTER :: para_env
444 CHARACTER(len=default_path_length),
DIMENSION(:, :),
INTENT(IN) :: initial_variables
446 CHARACTER(len=*),
PARAMETER :: routineN =
'farming_run'
447 INTEGER,
PARAMETER :: minion_status_done = -3, &
448 minion_status_wait = -4
450 CHARACTER(len=7) :: label
451 CHARACTER(LEN=default_path_length) :: output_file
452 CHARACTER(LEN=default_string_length) :: str
453 INTEGER :: dest, handle, i, i_job_to_restart, ierr, ijob, ijob_current, &
454 ijob_end, ijob_start, iunit, n_jobs_to_run, new_output_unit, &
455 new_rank, ngroups, num_minions, output_unit, primus_minion, &
456 minion_rank, source, tag, todo
457 INTEGER,
DIMENSION(:),
POINTER :: group_distribution, &
458 captain_minion_partition, &
459 minion_distribution, &
461 LOGICAL :: found, captain, minion
462 REAL(KIND=
dp) :: t1, t2
463 REAL(KIND=
dp),
ALLOCATABLE,
DIMENSION(:) :: waittime
464 TYPE(cp_logger_type),
POINTER :: logger
465 TYPE(cp_parser_type),
POINTER :: my_parser
466 TYPE(cp_unit_set_type) :: default_units
467 TYPE(farming_env_type),
POINTER :: farming_env
468 TYPE(section_type),
POINTER :: g_section
469 TYPE(section_vals_type),
POINTER :: g_data
470 TYPE(mp_comm_type) :: minion_group, new_group
473 CALL timeset(routinen, handle)
474 NULLIFY (my_parser, g_section, g_data)
480 IF (output_unit > 0)
WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| Hi, welcome on this farm!"
482 ALLOCATE (farming_env)
491 IF (farming_env%captain_minion)
THEN
492 IF (output_unit > 0)
WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| Using a Captain-Minion setup"
494 ALLOCATE (captain_minion_partition(0:1))
495 captain_minion_partition = (/1, para_env%num_pe - 1/)
496 ALLOCATE (group_distribution(0:para_env%num_pe - 1))
498 CALL minion_group%from_split(para_env, ngroups, group_distribution, &
499 n_subgroups=2, group_partition=captain_minion_partition)
500 DEALLOCATE (captain_minion_partition)
501 DEALLOCATE (group_distribution)
502 num_minions = minion_group%num_pe
503 minion_rank = minion_group%mepos
505 IF (para_env%mepos == 0)
THEN
509 cpassert(num_minions == 1)
510 num_minions = para_env%num_pe - 1
513 cpassert(num_minions == para_env%num_pe - 1)
516 IF (output_unit > 0)
WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| Using a Minion-only setup"
517 CALL minion_group%from_dup(para_env)
518 num_minions = minion_group%num_pe
519 minion_rank = minion_group%mepos
521 IF (output_unit > 0)
WRITE (output_unit, fmt=
"(T2,A,I0)")
"FARMING| Number of Minions ", num_minions
524 ALLOCATE (minion_distribution(0:para_env%num_pe - 1))
525 minion_distribution = 0
526 minion_distribution(para_env%mepos) = minion_rank
527 CALL para_env%sum(minion_distribution)
530 DO i = 1, para_env%num_pe - 1
531 IF (minion_distribution(i) == 0) primus_minion = i
536 ALLOCATE (group_distribution(0:num_minions - 1))
537 group_distribution = -1
539 IF (farming_env%group_size_wish_set)
THEN
540 farming_env%group_size_wish = min(farming_env%group_size_wish, para_env%num_pe)
541 CALL new_group%from_split(minion_group, ngroups, group_distribution, &
542 subgroup_min_size=farming_env%group_size_wish, stride=farming_env%stride)
543 ELSE IF (farming_env%ngroup_wish_set)
THEN
544 IF (
ASSOCIATED(farming_env%group_partition))
THEN
545 CALL new_group%from_split(minion_group, ngroups, group_distribution, &
546 n_subgroups=farming_env%ngroup_wish, &
547 group_partition=farming_env%group_partition, stride=farming_env%stride)
549 CALL new_group%from_split(minion_group, ngroups, group_distribution, &
550 n_subgroups=farming_env%ngroup_wish, stride=farming_env%stride)
553 cpabort(
"must set either group_size_wish or ngroup_wish")
555 new_rank = new_group%mepos
559 IF (farming_env%captain_minion)
THEN
560 IF (para_env%mepos == primus_minion)
THEN
562 CALL para_env%send(group_distribution, 0, tag)
564 CALL para_env%send(ngroups, 0, tag)
566 IF (para_env%mepos == 0)
THEN
568 CALL para_env%recv(group_distribution, primus_minion, tag)
570 CALL para_env%recv(ngroups, primus_minion, tag)
575 IF (output_unit > 0)
THEN
576 WRITE (output_unit, fmt=
"(T2,A,T71,I10)")
"FARMING| Number of created MPI (Minion) groups:", ngroups
577 WRITE (output_unit, fmt=
"(T2,A)", advance=
"NO")
"FARMING| MPI (Minion) process to group correspondence:"
578 DO i = 0, num_minions - 1
579 IF (
modulo(i, 4) == 0)
WRITE (output_unit, *)
580 WRITE (output_unit, fmt=
'(A3,I6,A3,I6,A1)', advance=
"NO") &
581 " (", i,
" : ", group_distribution(i),
")"
583 WRITE (output_unit, *)
589 IF (farming_env%cycle)
THEN
590 n_jobs_to_run = farming_env%max_steps*ngroups
591 i_job_to_restart =
modulo(farming_env%restart_n + n_jobs_to_run - 1, farming_env%njobs) + 1
593 n_jobs_to_run = min(farming_env%njobs, farming_env%max_steps*ngroups)
594 n_jobs_to_run = min(n_jobs_to_run, farming_env%njobs - farming_env%restart_n + 1)
595 i_job_to_restart = n_jobs_to_run + farming_env%restart_n
600 extension=
".restart")
602 WRITE (iunit, *) i_job_to_restart
607 ijob_start = farming_env%restart_n
608 ijob_end = ijob_start + n_jobs_to_run - 1
609 IF (output_unit > 0 .AND. ijob_end - ijob_start < 0)
THEN
610 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| --- WARNING --- NO JOBS NEED EXECUTION ? "
611 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| is the cycle keyword required ?"
612 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| or is a stray RESTART file present ?"
613 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| or is the group_size requested smaller than the number of CPUs?"
617 IF (farming_env%captain_minion)
THEN
622 IF (new_rank == 0)
THEN
627 CALL para_env%send(todo, dest, tag)
632 CALL para_env%recv(todo, source, tag)
635 CALL new_group%bcast(todo, 0)
637 CALL new_group%bcast(todo, 0)
647 IF (t2 - t1 > farming_env%wait_time)
EXIT
652 CALL execute_job(todo)
656 ALLOCATE (minion_status(0:ngroups - 1))
657 minion_status = minion_status_wait
658 ijob_current = ijob_start - 1
661 IF (all(minion_status == minion_status_done))
EXIT
666 CALL para_env%recv(todo, source, tag)
669 IF (output_unit > 0)
THEN
670 WRITE (output_unit, fmt=*)
"Job finished: ", todo
676 CALL get_next_job(farming_env, ijob_start, ijob_end, ijob_current, todo)
679 CALL para_env%send(todo, dest, tag)
683 IF (output_unit > 0)
THEN
684 WRITE (output_unit, fmt=*)
"Job: ", todo,
" Dir: ", trim(farming_env%Job(todo)%cwd), &
685 " assigned to group ", group_distribution(minion_distribution(dest))
690 minion_status(group_distribution(minion_distribution(dest))) = minion_status_done
691 IF (output_unit > 0)
THEN
692 WRITE (output_unit, fmt=*)
"group done: ", group_distribution(minion_distribution(dest))
697 IF (output_unit > 0)
THEN
698 WRITE (output_unit, fmt=*)
""
699 WRITE (output_unit, fmt=*)
"FARMING JOB DEADLOCKED ... CIRCULAR DEPENDENCIES"
700 WRITE (output_unit, fmt=*)
""
709 DEALLOCATE (minion_status)
716 IF (output_unit > 0)
THEN
717 IF (ijob_end - ijob_start >= 0)
THEN
718 WRITE (output_unit, fmt=
"(T2,A)")
"FARMING| List of jobs : "
719 DO ijob = ijob_start, ijob_end
720 i =
modulo(ijob - 1, farming_env%njobs) + 1
721 WRITE (output_unit, fmt=*)
"Job: ", i,
" Dir: ", trim(farming_env%Job(i)%cwd),
" Input: ", &
722 trim(farming_env%Job(i)%input),
" MPI group:",
modulo(i - 1, ngroups)
728 DO ijob = ijob_start, ijob_end
729 i =
modulo(ijob - 1, farming_env%njobs) + 1
731 IF (
modulo(i - 1, ngroups) == group_distribution(minion_rank))
THEN
732 IF (output_unit > 0)
THEN
733 WRITE (output_unit, fmt=
"(T2,A,I5.5,A)", advance=
"NO")
" Running Job ", i, &
734 " in "//trim(farming_env%Job(i)%cwd)//
"."
738 IF (output_unit > 0)
THEN
739 WRITE (output_unit, fmt=
"(A)")
" Done, output in "//trim(output_file)
751 ALLOCATE (waittime(0:para_env%num_pe - 1))
753 waittime(para_env%mepos) = t2 - t1
754 CALL para_env%sum(waittime)
755 IF (output_unit > 0)
THEN
756 WRITE (output_unit,
'(T2,A)')
"Process idle times [s] at the end of the run"
757 DO i = 0, para_env%num_pe - 1
758 WRITE (output_unit, fmt=
'(A2,I6,A3,F8.3,A1)', advance=
"NO") &
759 " (", i,
" : ", waittime(i),
")"
760 IF (mod(i + 1, 4) == 0)
WRITE (output_unit,
'(A)')
""
764 DEALLOCATE (waittime)
767 IF (minion)
CALL new_group%free()
768 CALL minion_group%free()
771 DEALLOCATE (group_distribution)
772 DEALLOCATE (minion_distribution)
778 "FARMING%PROGRAM_RUN_INFO")
780 CALL timestop(handle)
787 RECURSIVE SUBROUTINE execute_job(i)
792 CALL m_chdir(trim(farming_env%Job(i)%cwd), ierr)
794 cpabort(
"Failed to change dir to: "//trim(farming_env%Job(i)%cwd))
797 IF (new_rank == 0)
THEN
799 IF (farming_env%Job(i)%output ==
"")
THEN
801 WRITE (output_file,
'(A12,I5.5)')
"FARMING_OUT_", i
803 CALL parser_create(my_parser, file_name=trim(farming_env%Job(i)%input))
814 IF (str .NE.
"") output_file = trim(str)//
".out"
817 IF (str .NE.
"") output_file = str
822 DEALLOCATE (my_parser)
824 output_file = farming_env%Job(i)%output
827 CALL open_file(file_name=trim(output_file), &
828 file_action=
"WRITE", &
829 file_status=
"UNKNOWN", &
830 file_position=
"APPEND", &
831 unit_number=new_output_unit)
839 CALL cp2k_run(input_declaration, trim(farming_env%Job(i)%input), new_output_unit, new_group, initial_variables)
841 IF (new_rank == 0)
CALL close_file(unit_number=new_output_unit)
844 CALL m_chdir(trim(farming_env%cwd), ierr)
847 END SUBROUTINE execute_job
848 END SUBROUTINE farming_run
855 INTEGER :: i, unit_number
858 NULLIFY (root_section)
861 CALL open_file(unit_number=unit_number, &
862 file_name=
"cp2k_input.xml", &
863 file_action=
"WRITE", &
864 file_status=
"REPLACE")
866 WRITE (unit=unit_number, fmt=
"(A)")
'<?xml version="1.0" encoding="utf-8"?>'
869 WRITE (unit=unit_number, fmt=
"(A)") &
871 " <CP2K_VERSION>"//trim(
cp2k_version)//
"</CP2K_VERSION>", &
872 " <CP2K_YEAR>"//trim(
cp2k_year)//
"</CP2K_YEAR>", &
873 " <COMPILE_DATE>"//trim(
compile_date)//
"</COMPILE_DATE>", &
879 DO i = 1, root_section%n_subsections
883 WRITE (unit=unit_number, fmt=
"(A)")
"</CP2K_INPUT>"
902 SUBROUTINE run_input(input_declaration, input_file_path, output_file_path, initial_variables, mpi_comm)
904 CHARACTER(len=*),
INTENT(in) :: input_file_path, output_file_path
905 CHARACTER(len=default_path_length), &
906 DIMENSION(:, :),
INTENT(IN) :: initial_variables
912 IF (
PRESENT(mpi_comm))
THEN
916 para_env => f77_default_para_env
917 CALL para_env%retain()
919 IF (para_env%is_source())
THEN
920 IF (output_file_path ==
"__STD_OUT__")
THEN
923 INQUIRE (file=output_file_path, number=unit_nr)
928 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)
void grid_library_print_stats(void(*mpi_sum_func)(long *, int), const int mpi_comm, void(*print_func)(char *, int), const int output_unit)
Prints statistics gathered by the grid library.
void grid_library_set_config(const enum grid_backend backend, const bool validate, const bool apply_cutoff)
Configures the grid library.
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 hutter2014
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= *), parameter, public compile_revision
character(len= *), parameter, public compile_date
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. Tracking of preconnections.
subroutine, public open_file(file_name, file_status, file_form, file_action, file_position, file_pad, unit_number, debug, skip_get_unit_number, file_access)
Opens the requested file using a free unit number.
subroutine, public close_file(unit_number, file_status, keep_preconnection)
Close an open file given by its logical unit number. Optionally, keep the file and unit preconnected.
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
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.
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
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?
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.
integer function, public offload_get_device_count()
Returns the number of available devices.
integer function, public offload_get_chosen_device()
Returns the chosen device.
subroutine, public run_optimize_basis(input_declaration, root_section, para_env)
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, 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, 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, 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, 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, ecoul_1c, rho0_s_rs, rho0_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)
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 via RT-BSE method.
subroutine, public run_propagation_bse(qs_env, 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