polymerEquilibrationProfiles

Included in QATK.Dynamics

polymerEquilibrationProfiles(max_temperature=PhysicalQuantity(1000.0, K), final_temperature=PhysicalQuantity(300.0, K), max_pressure=PhysicalQuantity(50000.0, bar), final_pressure=PhysicalQuantity(1.0, bar), barostat_frequency=25, update_frequency=10)

Create temperature, pressure and barostat profiles that implement a 21-step equilibration procedure. This uses 7 cycles of NVT and NPT simulations to equilibrate the polymer system. The original protocol was designed to be run for 1.56ns. The profiles will automatically scale to any number of simulation steps, allowing the protocol to be run for longer if desired.

Parameters:
  • max_temperature (PhysicalQuantity of type temperature.) – The maximum temperature used in the equilibration. This should be between the glass transition temperature and melting point of the polymer.
    Default: 1000 Kelvin

  • final_temperature (PhysicalQuantity of type temperature.) – The final temperature that the polymer is equilibrated to.
    Default: 300 Kelvin

  • max_pressure (PhysicalQuantity of type pressure.) – The maximum pressure used in the equilibration.
    Default: 5 GPa

  • final_pressure (PhysicalQuantity of type pressure.) – The final pressure that the polymer is equilibrated to.
    Default: 1 bar

  • barostat_frequency – The coupling frequency of the barostat, when NPT calculation are used.
    Default: 25

  • update_frequency – How often the quantities are updated during the simulation.
    Default: 10

Returns:

List of the pressure, temperature and barostat coupling profiles that implement the equilibration protocol.

Return type:

list

Usage Examples

Construct and equilibrate a configuration of polypropylene.

# Define the equilibration simulation
simulation = SoftMatterDynamicsSimulation(
    pre_configuration,
    NPTNoseHooverMonteCarlo(),
)
simulation.setLogging(10000)
simulation.setTrajectory(5000, f"equilibrated_pp.hdf5")

# Set the equilibration profiles
profiles = polymerEquilibrationProfiles()

# Run the equilibration
simulation.simulate(1560000, profiles=profiles)
final_configuration = simulation.currentConfiguration()

polymer_equilibration_example.py

Notes

The polymerEquilibrationProfiles() is a utility function that creates SimulationTemperatureProfile, SimulationPressureProfile, and SimulationBarostatFrequencyProfile profiles that implement a 21-step polymer equilibration protocol [1]. This is the same protocol that is implemented in the PolymerEquilibration object. The arguments to the function control the maximum and final temperature, the maximum and final pressure, the barostat frequency when using the NPT ensemble and frequency with which the profiles update the simulation.

When running the equilibration simulation, the profiles from this function can be directly added to the simulate method. An NPT ensemble, such as NPTNoseHooverMonteCarlo should be used in the simulation so that the pressure can be controlled during the NPT steps in the protocol. The original protocol was designed to take 1.56 ns using 1 fs time steps. With profiles the number of steps between each change scales with the total number of steps, so more steps can be easily used in cases where the polymer is difficult to equilibrate.