Skip to content

Releases: JuliaMolSim/Molly.jl

v0.21.0

30 Apr 13:25
Compare
Choose a tag to compare

Breaking changes

  • Observable functions for GeneralObservableLogger now need to accept arbitrary keyword arguments, for example by adding kwargs... to the function call. This allows the logging changes described below.

Non-breaking changes

  • Support for Julia versions before 1.9 is dropped. A package extension, rather than Requires.jl, is used to provide visualize when GLMakie.jl is imported.

New features

  • ASECalculator is added, allowing Python ASE calculators to be used in Molly. The code is in a package extension available when PythonCall.jl is imported. It is the user's responsibility to have the required Python packages installed. Examples of using MACE and psi4 are given.
  • current_forces and current_potential_energy can be used in logging functions to reuse properties calculated in the simulation step. They default to nothing when the properties are not available.
  • Interaction types are allowed to be different for each replica in a ReplicaSystem.

Performance improvements

  • PotentialEnergyLogger, TotalEnergyLogger and ForceLogger avoid recomputation when the relevant properties are calculated in the simulation step.

Bug fixes

  • MollyCalculator now works in two dimensions and for other floating point types.

v0.20.0

19 Mar 14:14
Compare
Choose a tag to compare

Breaking changes

  • apply_constraints! and SHAKE are removed as part of the changes to constraints.
  • The System constructor for AtomsBase.jl systems is changed to take force_units and energy_units as keyword arguments rather than positional arguments. The defaults are consistent with the rest of Molly.
  • velocity_autocorr is removed since AutoCorrelationLogger provides a more general version of this functionality.

New features

  • Support for constraints is improved and documented with SHAKE_RATTLE allowing the SHAKE and RATTLE algorithms to be applied as appropriate to most simulators. DistanceConstraint, disable_constrained_interactions!, apply_position_constraints!, apply_velocity_constraints!, check_position_constraints and check_velocity_constraints are all added. Constraints are not currently compatible with GPU simulation.
  • Gradients with respect to the boundary can now be calculated in some contexts.

Community

  • A logo is added to the project.

Bug fixes

  • A bug in FENEBond potential energy calculation is fixed.

v0.19.0

08 Feb 12:43
Compare
Choose a tag to compare

Breaking changes

  • General interactions are changed to use the AtomsCalculators.jl interface, allowing simulations to be run with calculators from other packages. A tuple of interactions compatible with the AtomsCalculators.jl interface should be given to general_inters when constructing a System. ImplicitSolventOBC, ImplicitSolventGBN2 and MullerBrown are changed to be calculators.
  • The type parameters of System and ReplicaSystem are changed.

New features

  • forces, accelerations, potential_energy, total_energy, virial and pressure now calculate the neighbors by default when called without neighbors. If they are being reused, neighbors should be pre-computed as before for performance.
  • System and ReplicaSystem now have a data field, set with the data keyword argument to the constructors, that can be used to store arbitrary data. This data can be accessed inside simulators.
  • LennardJonesSoftCore, CoulombSoftCore and custom atom types are now compatible with gradients.

v0.18.4

01 Jan 23:07
Compare
Choose a tag to compare

Bug fixes

  • A bug that prevented system setup on Julia 1.7 is fixed.
  • A type preservation bug in the rdf function is fixed.

v0.18.3

04 Dec 11:23
Compare
Choose a tag to compare

New features

  • Compatibility with AtomsCalculators.jl is added via MollyCalculator.
  • The documentation on setting up systems from structure files is improved.
  • A list of relevant publications is added to the documentation.

Community

  • The Contributor Covenant Code of Conduct is added to the project.

Bug fixes

  • A bug in the NoseHoover simulator when not using units is fixed.

v0.18.2

14 Nov 23:20
Compare
Choose a tag to compare

Performance improvements

  • The vector function for calculating the displacement between coordinates accounting for periodic boundary conditions is made faster, improving simulation performance on CPU and GPU.

v0.18.1

26 Oct 18:41
Compare
Choose a tag to compare

New features

  • Simulation of overdamped Langevin dynamics is added as OverdampedLangevin.

Performance improvements

  • The performance of force calculation without a neighbor list on the GPU is significantly improved.

Bug fixes

  • A bug in compatibility with SimpleCrystals.jl is fixed.

v0.18.0

01 Sep 18:28
Compare
Choose a tag to compare

Breaking changes

  • Molar units are made more consistent throughout the package. If force and energy units are molar then the atomic masses should have a molar dimension, e.g. u"g/mol" rather than u"u". The default Boltzmann constant k is chosen based on the energy_units given to a System.

New features

  • A constructor for System is added to convert from an AtomsBase.jl AbstractSystem.
  • During System setup, checks are made for a consistent unit system and appropriate errors are thrown.
  • Calculation of the hydrodynamic radius is added as hydrodynamic_radius.
  • The charges function is added to give the partial charges of the atoms in a system.

Bug fixes

  • Issues with AtomsBase.jl integration are fixed.

v0.17.0

09 Jul 15:05
Compare
Choose a tag to compare

Breaking changes

  • run_loggers is no longer available as a keyword argument to SteepestDescentMinimizer and log_states is no longer available as a keyword argument when calling simulate! with MetropolisMonteCarlo. Instead run_loggers can be given as a keyword argument to simulate! as described below.

New features

  • The Monte Carlo anisotropic barostat is added as MonteCarloAnisotropicBarostat, allowing separate pressure coupling in each dimension.
  • The Monte Carlo membrane barostat is added as MonteCarloMembraneBarostat, allowing pressure coupling for systems involving a membrane.
  • A System constructor is added to create systems from a SimpleCrystals.jl Crystal struct.
  • A convenience constructor is added for System allowing an existing System to be copied with given properties changed.
  • run_loggers can be given as a keyword argument to simulate! to determine whether the loggers are run. The options are true, false or :skipzero, in which case the loggers are not run before the first step. run_loggers is true by default except for SteepestDescentMinimizer, where it is false. run_loggers! now has a fourth argument which determines whether the loggers are run, default true.
  • The scale factor given to scale_coords! can now be a SVector corresponding to the scaling factor for each axis in addition to a single number.
  • General interactions can now implement a method for virial.

Bug fixes

  • A bug in force calculation with more than two interactions on the GPU is fixed.
  • A bug allowing multiple 1-4 scaling values to be read from an OpenMM force field XML file is fixed.

v0.16.0

12 May 22:36
Compare
Choose a tag to compare

Breaking changes

  • apply_coupling! now returns whether the coupling has invalidated the currently stored forces, for example by changing the coordinates.
  • find_neighbors now takes another optional argument which determines whether the neighbor list should be forced to recompute, regardless of the step number.
  • The type parameters of System, ReplicaSystem, AtomType and Langevin are changed.

New features

  • The Monte Carlo barostat is added as MonteCarloBarostat, allowing pressure coupling during simulations.
  • The virial and pressure can be calculated for systems where only the pairwise interactions contribute to the virial using virial and pressure. Corresponding loggers are added as VirialLogger and PressureLogger.
  • The scale_boundary, scale_coords! and molecule_centers functions are added.
  • The topology keyword argument for System can provide information about which atoms are in the same molecule, with this information stored as a MolecularTopology when reading a System from a file. The corresponding keyword arguments topology and replica_topology are added to ReplicaSystem.
  • Multiple couplers can be given to the coupling argument of compatible simulators as a Tuple or a NamedTuple. Langevin is now compatible with couplers.
  • Warnings are given for skipped incompatible fields when reading OpenMM XML force field files. Using atom charges from residue templates is no longer required.
  • The use_cell_list keyword argument is added to the System constructor from files.
  • Unitful.ustrip is now defined for CubicBoundary and RectangularBoundary.