Overview of package tmc

Tree Monte Carlo

input_cp2k_tmc
...
tmc_analysis
module analyses element of the TMC tree element structure e.g. density, radial distribution function, dipole correlation,...
tmc_analysis_types
module provides variables for the TMC analysis tool
tmc_calculations
calculation section for TreeMonteCarlo
tmc_cancelation
- to decrease the used memory size, just actual needed tree elements should be stored in memory, other ones should be written out in file - sub tree elements can be canceled and further deallocated when no global tree element refers to it anymore - then also the ongoing calculation of these elements is not needed anymore => can be canceled - MODULE: creates and hande a list of tree nodes wich can be canceled these elements are collected and canceled all in one from the master routine - the actual cancelation routine is implemented in master module and communication is done using the message module
tmc_dot_tree
module for printing tree structures in GraphViz dot files for visualizing the trees
tmc_file_io
- writing and printing the files, trajectory (pos, cell, dipoles) as well as restart files - usually just the Markov Chain elements are regarded, the elements beside this trajectory are neglected - futrthermore (by option) just the accepted configurations are print out to reduce the file sizes
tmc_master
module contains the master routine handling the tree creation, communication with workers and task distribution For each idle working group the master creates a new global tree element, and if neccessay a related sub tree element, OR find the next element to calculate the exact energy. Goal is to keep at least the exact energy calculation working groups as busy as possible. Master also checks for incomming results and update the tree and the acceptance ratios.
tmc_messages
set up the different message for different tasks A TMC message consists of 3 parts (messages) 1: first a message with task type (STATUS) and SIZES of submessages 2: (if existing) a message with INTEGER values 3: (if existing) a message with REAL values submessages 2 and 3 include relevant data, e.g. positions, box sizes...
tmc_move_handle
acceptance ratio handling of the different Monte Carlo Moves types For each move type and each temperature average acceptence is determined. For each move is a weight (mv_weight) defined, which defines the probability to perform the move. We distinguish between moves performed on the exact potential (move on the master, energy on the energy worker) and NMC moves, which are performed on the worker using the approximate potential. The energies are calculated as usual on the energy worker with the exact potential. The move probabilities to perform a NMC is stored in the NMC move. The probilities of the single move types (performed with the approximate potential) are only compared within the NMC move
tmc_move_types
tree nodes creation, searching, deallocation, references etc.
tmc_moves
different move types are applied
tmc_setup
Tree Monte Carlo entry point, set up, CPU redistribution and input reading
tmc_stati
tree nodes creation, searching, deallocation, references etc.
tmc_tree_acceptance
tree nodes acceptance code is seperated in 3 parts, first the acceptance criteria, second the tree node acceptance handling, searching etc. and than the acceptance probability handling
tmc_tree_build
tree nodes creation, deallocation, references etc. - we distinguish two kinds of tree nodes: global and sub tree nodes (because we also are able to do parallel tempering) - global tree nodes consists of pointers to sub tree nodes - sub tree nodes consists of position arrays, potential energy, etc. - furthermore the sub tree elements have references the all global tree elements refering to them - for tree element details see tree_types.F
tmc_tree_references
global tree references - BECAUSE acceptance check use global tree randon numbers and (in case of parallel tempering) several global tree node refer to a single sub tree node (which is the changed one in the global tree) - the references are used to update the global tree acceptance probability for every global tree element seperately Hence a list of all global tree nodes, using the related subtree node, is created.
tmc_tree_search
tree nodes search etc.
tmc_tree_types
module handels definition of the tree nodes for the global and the subtrees binary tree parent element / !> accepted (acc) / \ not accepted (nacc) / !> child child / \ / !> tree creation assuming acceptance (acc) AND rejectance (nacc) of configuration if configuration is accepted: new configuration (child on acc) on basis of last configuration (one level up) if configuration is rejected: child on nacc on basis of last accepted element (last element which is on acc brach of its parent element) The global tree handles all configurations of different subtrees. The structure element "conf" is an array related to the temperature (sorted) and points to the subtree elements.
tmc_types
module handels definition of the tree nodes for the global and the subtrees binary tree parent element / !> accepted (acc) / \ not accepted (nacc) / !> child child / \ / !> tree creation assuming acceptance (acc) AND rejectance (nacc) of configuration if configuration is accepted: new configuration (child on acc) on basis of last configuration (one level up) if configuration is rejected: child on nacc on basis of last accepted element (last element which is on acc brach of its parent element) The global tree handles all configurations of different subtrees. The structure element "conf" is an array related to the temperature (sorted) and points to the subtree elements.
tmc_utils
utillities for the TMC
tmc_worker
module contains the worker routine handling the communication and the calculation / creation of the configurations - WORKER these are all TMC cores, instead of master core and maybe some idle cores - divided in groups, in every group exists group master - there can be two kind of groups, one for exact energy calculation and one calculating configurational change using an approximate potential - Algorithm: - group master receive messages and decide what to do, - (if nessesary) broadcast of working task to all other group members (needed for parallel CP2K) - process task, calculations of energy or configurational change - result, exist on group master, sent to master core Communication structure (master->worker, worker->master): - message structure is defined in TMC message module