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.FLoading...

SUBROUTINE

add_mv_prob (move_types, prob_opt, mv_counter, acc_counter, subbox_counter, subbox_acc_counter)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

add the actual moves to the average probabilities

TYPE(tmc_move_type), |
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 |

checks if the moves are possible

TYPE(tmc_param_type), |
POINTER |
:: | tmc_params | ... | |

TYPE(tmc_move_type), |
POINTER |
:: | move_types | ... | |

INTEGER, |
POINTER |
:: | mol_array(:) | ... |

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

TYPE(tmc_move_type), |
POINTER |
:: | move_types | counters for acceptance/rejection |

deallocating the module variables

TYPE(tmc_param_type), |
POINTER |
:: | tmc_params | ... |

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

LOGICAL |
:: | init | ... | ||

INTEGER |
:: | file_io | ... | ||

TYPE(tmc_param_type), |
POINTER |
:: | tmc_params | ... |

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

TYPE(tmc_move_type), |
POINTER |
:: | move_types | structure for storing sizes and probabilities of moves | |

TYPE(global_tree_type), |
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 |

initialization of the different moves, with sizes and probabilities

TYPE(tmc_param_type), |
POINTER |
:: | tmc_params | ... | |

TYPE(section_vals_type), |
POINTER |
:: | tmc_section | ... |

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

Return Value :: INTEGER- (result) move type

TYPE(tmc_move_type), |
POINTER |
:: | move_types | structure for storing sizes and probabilities of moves | |

REAL(dp) |
:: | rnd | random number |