Documentation for module mc_ge_moves

contains the Monte Carlo moves that can handle more than one box, including the Quickstep move, a volume swap between boxes, and a particle swap between boxes

source: mc_ge_moves.F
Loading...

public Subroutines/Functions:

attempts a swap move between two simulation boxes
performs a Monte Carlo move that alters the volume of the simulation boxes, keeping the total volume of the two boxes the same
computes the acceptance of a series of biased or unbiased moves (translation, rotation, conformational changes)

SUBROUTINEmc_ge_swap_move(mc_par, force_env, bias_env, moves, energy_check, r_old, old_energy, input_declaration, para_env, bias_energy_old, last_bias_energy, rng_stream)

attempts a swap move between two simulation boxes

Arguments:
POINTER
:: mc_par(:) the mc parameters for the force envs of the boxes
POINTER
:: force_env(:) the force environments for the boxes
POINTER
:: bias_env(:) the force environments used to bias moves for the boxes
POINTER
:: moves(:,:) the structure that keeps track of how many moves have been accepted/rejected for both boxes
REAL(dp),
INTENT(inout)
:: energy_check(1:2) the running total of how much the energy has changed since the initial configuration
REAL(dp),
INTENT(inout)
:: r_old(:,:,:) the coordinates of the last accepted move involving a full potential calculation for both boxes
REAL(dp),
INTENT(inout)
:: old_energy(1:2) the energy of the last accepted move involving a a full potential calculation
POINTER
:: input_declaration ...
POINTER
:: para_env the parallel environment for this simulation
REAL(dp),
INTENT(inout)
:: bias_energy_old(1:2) the energies of both boxes computed using the biasing potential
REAL(dp),
INTENT(inout)
:: last_bias_energy(1:2) the energy for the biased simulations
POINTER
:: rng_stream the stream we pull random numbers from

SUBROUTINEmc_ge_volume_move(mc_par, force_env, moves, move_updates, nnstep, old_energy, energy_check, r_old, rng_stream)

performs a Monte Carlo move that alters the volume of the simulation boxes, keeping the total volume of the two boxes the same

Arguments:
POINTER
:: mc_par(:) the mc parameters for the force env
POINTER
:: force_env(:) the force environments used in the move
POINTER
:: moves(:,:) the structure that keeps track of how many moves have been accepted/rejected
POINTER
:: move_updates(:,:) the structure that keeps track of how many moves have been accepted/rejected since the last time the displacements were updated
INTEGER,
INTENT(in)
:: nnstep the total number of Monte Carlo moves already performed
REAL(dp),
INTENT(inout)
:: old_energy(:) the energy of the last accepted move involving an unbiased potential calculation
REAL(dp),
INTENT(inout)
:: energy_check(:) the running total of how much the energy has changed since the initial configuration
REAL(dp),
INTENT(inout)
:: r_old(:,:,:) the coordinates of the last accepted move involving a Quickstep calculation
POINTER
:: rng_stream the stream we pull random numbers from

SUBROUTINEmc_quickstep_move(mc_par, force_env, bias_env, moves, lreject, move_updates, energy_check, r_old, nnstep, old_energy, bias_energy_new, last_bias_energy, nboxes, box_flag, subsys, particles, rng_stream, unit_conv)

computes the acceptance of a series of biased or unbiased moves (translation, rotation, conformational changes)

Arguments:
POINTER
:: mc_par(:) the mc parameters for the force envs of the boxes
POINTER
:: force_env(:) the force environments for the boxes
POINTER
:: bias_env(:) the force environments with the biasing potential for the boxes
POINTER
:: moves(:,:) the structure that keeps track of how many moves have been accepted/rejected for both boxes
LOGICAL,
INTENT(in)
:: lreject automatically rejects the move (used when an overlap occurs in the sequence of moves)
POINTER
:: move_updates(:,:) the structure that keeps track of how many moves have been accepted/rejected since the last time the displacements were updated for both boxes
REAL(dp),
INTENT(inout)
:: energy_check(:) the running total of how much the energy has changed since the initial configuration
REAL(dp),
INTENT(inout)
:: r_old(:,:,:) the coordinates of the last accepted move before the sequence whose acceptance is determined by this call
INTEGER,
INTENT(in)
:: nnstep the Monte Carlo step we're on
REAL(dp),
INTENT(inout)
:: old_energy(:) the energy of the last accepted move involving the full potential
REAL(dp),
INTENT(inout)
:: bias_energy_new(:) the energy of the current configuration involving the bias potential
REAL(dp),
INTENT(inout)
:: last_bias_energy(:) ...
INTEGER,
INTENT(in)
:: nboxes the number of boxes (force environments) in the system
INTEGER,
INTENT(in)
:: box_flag(:) indicates if a move has been tried in a given box..if not, we don't recompute the energy
POINTER
:: subsys(:) the pointers for the particle subsystems of both boxes
POINTER
:: particles(:) the pointers for the particle sets
POINTER
:: rng_stream the stream we pull random numbers from
REAL(dp),
INTENT(in)
:: unit_conv ...