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

SUBROUTINE

mc_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

SUBROUTINE

mc_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

SUBROUTINE

mc_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)

attempts a swap move between two simulation boxes

POINTER |
:: | mc_par(:) | the mc parameters for the force envs of the boxes | ||

TYPE(force_env_p_type), |
POINTER |
:: | force_env(:) | the force environments for the boxes | |

TYPE(force_env_p_type), |
POINTER |
:: | bias_env(:) | the force environments used to bias moves for the boxes | |

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

TYPE(section_type), |
POINTER |
:: | input_declaration | ... | |

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

TYPE(rng_stream_type), |
POINTER |
:: | rng_stream | the stream we pull random numbers from |

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

POINTER |
:: | mc_par(:) | the mc parameters for the force env | ||

TYPE(force_env_p_type), |
POINTER |
:: | force_env(:) | the force environments used in the move | |

TYPE(mc_moves_p_type), |
POINTER |
:: | moves(:,:) | the structure that keeps track of how many moves have been accepted/rejected | |

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

TYPE(rng_stream_type), |
POINTER |
:: | rng_stream | the stream we pull random numbers from |

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

POINTER |
:: | mc_par(:) | the mc parameters for the force envs of the boxes | ||

TYPE(force_env_p_type), |
POINTER |
:: | force_env(:) | the force environments for the boxes | |

TYPE(force_env_p_type), |
POINTER |
:: | bias_env(:) | the force environments with the biasing potential for the boxes | |

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

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

TYPE(cp_subsys_p_type), |
POINTER |
:: | subsys(:) | the pointers for the particle subsystems of both boxes | |

TYPE(particle_list_p_type), |
POINTER |
:: | particles(:) | the pointers for the particle sets | |

TYPE(rng_stream_type), |
POINTER |
:: | rng_stream | the stream we pull random numbers from | |

REAL(dp), |
INTENT(in) |
:: | unit_conv | ... |