Documentation for module mc_move_control

control the handling of the move data in Monte Carlo (MC) simulations

source: mc_move_control.F
Loading...

public Subroutines/Functions:

SUBROUTINE
init_mc_moves (moves)
allocates and initializes the structure to record all move attempts/successes
SUBROUTINE
mc_moves_release (moves)
deallocates all the structures and nullifies the pointer
updates the maximum displacements of a Monte Carlo simulation, based on the ratio of successful moves to attempts...tries to hit a target of 0.5 acceptance ratio
SUBROUTINE
move_q_reinit (moves, lbias)
sets all qsuccess counters back to zero
SUBROUTINE
q_move_accept (moves, lbias)
updates accepted moves in the given structure...assumes you've been recording all successful moves in "qsuccesses"...this was done to compensate for doing multiple inner moves between Quickstep moves (which determine ultimate acceptance of moves)
writes the number of accepted and attempted moves to a file for the various move types

SUBROUTINEinit_mc_moves(moves)

allocates and initializes the structure to record all move attempts/successes

Arguments:
POINTER
:: moves the move structure to update

SUBROUTINEmc_moves_release(moves)

deallocates all the structures and nullifies the pointer

Arguments:
POINTER
:: moves the move structure to release

SUBROUTINEmc_move_update(mc_par, move_updates, molecule_type, flag, nnstep, ionode)

updates the maximum displacements of a Monte Carlo simulation, based on the ratio of successful moves to attempts...tries to hit a target of 0.5 acceptance ratio

Arguments:
POINTER
:: mc_par the mc parameters for the force env
POINTER
:: move_updates holds the accepted/attempted moves since the last update (or start of simulation)
INTEGER,
INTENT(in)
:: molecule_type ...
CHARACTER(*),
INTENT(in)
:: flag indicates which displacements to update..."volume" is for volume moves and "trans" is for everything else
INTEGER,
INTENT(in)
:: nnstep how many steps the simulation has run
LOGICAL,
INTENT(in)
:: ionode is this the main CPU running this job?

SUBROUTINEmove_q_reinit(moves, lbias)

sets all qsuccess counters back to zero

Arguments:
POINTER
:: moves the move structure to update
LOGICAL,
INTENT(in)
:: lbias are we biasing translations/rotations/conformational changes with a different potential?

SUBROUTINEq_move_accept(moves, lbias)

updates accepted moves in the given structure...assumes you've been recording all successful moves in "qsuccesses"...this was done to compensate for doing multiple inner moves between Quickstep moves (which determine ultimate acceptance of moves)

Arguments:
POINTER
:: moves the move structure to update
LOGICAL,
INTENT(in)
:: lbias are we biasing non-swap particle moves with a cheaper potential

SUBROUTINEwrite_move_stats(moves, nnstep, unit)

writes the number of accepted and attempted moves to a file for the various move types

Arguments:
POINTER
:: moves the structure containing the move data
INTEGER,
INTENT(in)
:: nnstep what step we're on
INTEGER,
INTENT(in)
:: unit the unit of the file we're writing to