SwitchingForceField #
It performs molecular dynamics simulation and changes forcefields at the given frame.
It takes one system and several forcefields to run the simulation.
Example #
[simulator]
type = "SwitchingForceField"
boundary_type = "Unlimited"
precision = "double"
delta_t = 0.1
total_step = 3_000_000
save_step = 100
seed = 2374
integrator.type = "BAOABLangevin"
integrator.parameters = [
{index = 0, gamma = 1.00},
{index = 1, gamma = 1.00},
]
schedule = [
{until = 1_000_000, forcefield = "close"},
{until = 2_000_000, forcefield = "open"},
{until = 3_000_000, forcefield = "close"},
]
[[forcefields]]
name = "close"
[[forcefields.local]]
# ...
[[forcefields]]
name = "open"
[[forcefields.local]]
# ...
Input Reference #
type
: String- Name of the simulator. Here, it is
"SwitchingForceField"
.
- Name of the simulator. Here, it is
boundary_type
: String- Type of the boundary condition. The size will be specified in
[[systems]]
. "Unlimited"
: No boundary condition will applied."Periodic"
: Periodic boundary condition will be applied. The shape is recutangular box.
- Type of the boundary condition. The size will be specified in
precision
: String- Precision of floating point number used in the simulation.
"float"
: 32bit floating point number."double"
: 64bit floating point number.
parallelism
: String (Optional. By default,"sequencial"
.)"OpenMP"
: OpenMP implementation will be used."sequencial"
: Simulation runs on single core.
seed
: Integer- Random number generator will be initialized by this value.
delta_t
: Floating- Time step of the simulation. The unit depends on the unit system defined in
[units]
- Time step of the simulation. The unit depends on the unit system defined in
total_step
: Integer- Total time step of the simulation.
save_step
: Integer- The state of the system will be saved at this interval.
integrator
: Table- The time integration method to be used.
- “BAOABLangevin”
- “g-BAOABLangevin”
- “UnderdampedLangevin”
- “VelocityVerlet”
- For detail, see
integrators
.
schedule
: Array of Tables- The schedule for forcefield control. See below.
schedule
#
schedule
is an array of tables and each table has the following fields.
until
: Integer- It uses the specified forcefield until this frame.
forcefield
: String- Name of the forcefield.
schedule = [
{until = 1_000_000, forcefield = "close"},
{until = 2_000_000, forcefield = "open"},
{until = 3_000_000, forcefield = "close"},
]
The name of the forcefield
is defined via name
under [[forcefields]]
.
[[forcefields]]
name = "close"
[[forcefields.local]]
# This is a component of "close" forcefield.
interaction = "BondLength"
potential = "Harmonic"
# ...
[[forcefields.local]]
# This is a component of "close" forcefield.
interaction = "BondAngle"
potential = "Harmonic"
# ...
[[forcefields]]
name = "open"
[[forcefields.local]]
# This is a component of "open" forcefield.
# ...