Documentation for module 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

source: tmc_move_handle.F
Loading...

public Subroutines/Functions:

add the actual moves to the average probabilities
checks if the moves are possible
clear the statistics of accepting/rejection moves because worker statistics will be add seperatelly on masters counters
deallocating the module variables
routine pronts out the probabilities and sized for each type and temperature the output is divided into two parts the init, which is printed out at the beginning of the programm and .NOT.init which are the probabilites and counter printed out every print cycle
adaptation of acceptance probability of every kind of change/move and the overall acc prob, using the acceptance and rejectance information
initialization of the different moves, with sizes and probabilities
selects a move type related to the weighings and the entered rnd nr

SUBROUTINEadd_mv_prob(move_types, prob_opt, mv_counter, acc_counter, subbox_counter, subbox_acc_counter)

add the actual moves to the average probabilities

Arguments:
POINTER
:: move_types structure with move counters and probabilities
LOGICAL
:: prob_opt ...
INTEGER,
OPTIONAL
:: mv_counter(:,:) move counter for actual performed moves of certain types
INTEGER,
OPTIONAL
:: acc_counter(:,:) counters of acceptance for these moves
INTEGER,
OPTIONAL
:: subbox_counter(:,:) same for sub box moves
INTEGER,
OPTIONAL
:: subbox_acc_counter(:,:) same for sub box moves

SUBROUTINEcheck_moves(tmc_params, move_types, mol_array)

checks if the moves are possible

Arguments:
POINTER
:: tmc_params ...
POINTER
:: move_types ...
INTEGER,
POINTER
:: mol_array(:) ...

SUBROUTINEclear_move_probs(move_types)

clear the statistics of accepting/rejection moves because worker statistics will be add seperatelly on masters counters

Arguments:
POINTER
:: move_types counters for acceptance/rejection

SUBROUTINEfinalize_mv_types(tmc_params)

deallocating the module variables

Arguments:
POINTER
:: tmc_params ...

SUBROUTINEprob_update(move_types, pt_el, elem, acc, subbox, prob_opt)

adaptation of acceptance probability of every kind of change/move and the overall acc prob, using the acceptance and rejectance information

Arguments:
POINTER
:: move_types structure for storing sizes and probabilities of moves
OPTIONAL, POINTER
:: pt_el global tree element
TYPE(tree_type),
OPTIONAL, POINTER
:: elem sub tree element
LOGICAL,
INTENT(in),
OPTIONAL
:: acc input if the element is accepted
LOGICAL,
INTENT(in),
OPTIONAL
:: subbox logical if move was with respect to the sub box
LOGICAL,
INTENT(in)
:: prob_opt if the average probability should be adapted

SUBROUTINEread_init_move_types(tmc_params, tmc_section)

initialization of the different moves, with sizes and probabilities

Arguments:
POINTER
:: tmc_params ...
POINTER
:: tmc_section ...

FUNCTIONselect_random_move_type(move_types, rnd)

selects a move type related to the weighings and the entered rnd nr

Return Value ::
INTEGER
(result) move type
Arguments:
POINTER
:: move_types structure for storing sizes and probabilities of moves
REAL(dp)
:: rnd random number