MCMoves
ParallelTemperingMonteCarlo.MCMoves.atom_displacement — Method
atom_displacement(pos::PositionVector, max_displacement::Number, bc::SphericalBC)
atom_displacement(pos::PositionVector, max_displacement::Number, bc::CubicBC)
atom_displacement(pos::PositionVector, max_displacement::Number, bc::RhombicBC)
atom_displacement(mc_state::MCState{T, N, BC}) where {T, N, BC <: PeriodicBC}
atom_displacement(mc_state::MCState{T, N, BC}) where {T, N, BC <: SphericalBC}Generates trial position for atom, moving it from pos by some random displacement. Random displacement determined by max_displacement. These variables are additionally contained in mc_state where the pos is determined by index. Implemented for:
SphericalBC: trial move is repeated until moved atom is within binding sphereCubicBC;RhombicBC: periodic boundary condition enforced, an atom is moved into the box from the other side when it tries to get out.
The final method is a wrapper function which unpacks mc_states, which contains all the necessary arguments for the two methods above. When we have correctly implemented move_strat this wrapper will be expanded to include other methods.
ParallelTemperingMonteCarlo.MCMoves.generate_move! — Method
generate_move!(mc_state::MCState,movetype::String)generate_move! is the currying function that takes mc_state and a movetype and generates the variables required inside of the ensemblevariables struct within mc_state.
ParallelTemperingMonteCarlo.MCMoves.swap_atoms — Method
(swap_atoms(mc_state::MCState{T, N, BC, PV, EV}) where {T, N, BC, PV, EV <: NNVTVariables{tee, n, N1, N2}}) where {tee, n, N1, N2}Swaps two atoms in the configuration.
ParallelTemperingMonteCarlo.MCMoves.volume_change — Method
volume_change(conf::Config, bc::CubicBC, max_vchange::Number, max_length::Number)
volume_change(conf::Config, bc::RhombicBC, max_vchange::Number, max_length::Number)
volume_change(mc_state::MCState)Scale the whole configuration, including positions and the box length. Returns the trial configuration as a struct.