Skip to content

Releases: JuliaMolSim/Molly.jl

v0.11.0

27 Jun 18:11
Compare
Choose a tag to compare
  • box_size is renamed to boundary throughout. Boundaries of the form SVector(1.0, 2.0, 3.0) should be replaced by CubicBoundary(1.0, 2.0, 3.0), allowing non-cubic boundaries to be added in future. Setting one or more values to Inf gives no boundary in that dimension. RectangularBoundary should be used for 2D simulations. float_type, box_volume and AtomsBase.n_dimensions are defined for boundaries.
  • The recorded values in loggers are now accessed with Base.values. Loggers are now given to the System as a named tuple rather than as a Dict for performance reasons.
  • wrap_coords_vec is renamed to wrap_coords, wrap_coords is renamed to wrap_coord_1D, vector1D is renamed to vector_1D, the cutoff argument to the implicit solvent models is renamed to dist_cutoff, and the nl_dist argument to System is renamed to dist_neighbors.
  • The general LangevinSplitting simulator is added to allow a variety of integrators to be defined such as velocity Verlet (splitting "BAB"), the Langevin implementation in Langevin ("BAOA"), and symplectic Euler integrators ("AB" and "BA").
  • GeneralObservableLogger is added to periodically record a given observable throughout the simulation. Most existing loggers are changed to be cases of GeneralObservableLogger. AverageObservableLogger is also added and records a running average rather than storing observations.
  • TimeCorrelationLogger is added to calculate correlations between observables. AutoCorrelationLogger corresponds to the case when the two observables are the same.
  • The keyword argument k to System, velocity and maxwell_boltzmann allows a custom Boltzmann constant to be used.
  • More of the package is made differentiable due to the use of UnitfulChainRules.jl.

v0.10.4

17 Jun 11:50
Compare
Choose a tag to compare
  • Visualisation is updated to use GLMakie.jl v0.6.

v0.10.3

09 Jun 21:23
Compare
Choose a tag to compare
  • place_atoms now checks for sensible inputs and terminates after a certain number of failed attempts.
  • A bug in precompilation is fixed.

v0.10.2

20 May 14:45
Compare
Choose a tag to compare
  • ForceLogger is added.
  • The parallel keyword argument is now available in the log_property! function.
  • More examples are added to the documentation.
  • A bug in the Mie potential energy is fixed.

v0.10.1

09 May 15:29
Compare
Choose a tag to compare
  • A bug in the Gravity force and potential energy is fixed.

v0.10.0

15 Apr 22:00
Compare
Choose a tag to compare
  • Loggers now also run before the first simulation step, i.e. at step 0, allowing the starting state to be recorded.
  • inject_gradients now returns general interactions in addition to atoms, pairwise interactions and specific interaction lists.
  • Steepest descent energy minimization is added via SteepestDescentMinimizer.
  • GPU support is added for potential_energy.
  • The radius_gyration function is added.
  • A kappa value for ionic screening may be given to ImplicitSolventOBC and ImplicitSolventGBN2.
  • Improvements are made to simulation setup such as allowing multiple macromolecular chains.
  • A random number generator can now be passed to Langevin, allowing reproducible simulations.
  • Gradients through the GB-Neck2 interaction are made to work on the GPU.
  • Bugs in StormerVerlet are fixed.
  • The possibility of a NaN value for the HarmonicAngle force when the angle is Ο€ is fixed.
  • A bug causing random_velocities to run slowly is fixed.

v0.9.0

11 Mar 17:35
Compare
Choose a tag to compare
  • The arguments to forces and accelerations are made consistent across implementations.
  • Centre of mass motion is removed by default during simulation using remove_CM_motion!.
  • Coordinates are centred in the simulation box by default during setup.
  • The Langevin integrator and Verlet integrator are added.
  • The MorseBond potential is added.
  • The GB-Neck2 implicit solvent model is added via ImplicitSolventGBN2.
  • The CubicSplineCutoff is added.
  • The rmsd function is added.
  • The AtomsBase.jl interface is made more complete.
  • The progress bar is removed from simulations.
  • The out-of-place neighbor list type NeighborListVec is changed.

v0.8.0

21 Feb 15:50
Compare
Choose a tag to compare
  • General interactions are renamed to pairwise interactions throughout to better reflect their nature. The abstract type is now PairwiseInteraction and the keyword argument to System is now pairwise_inters. General interaction now refers to a new type of interaction that takes in the whole system and returns forces for all atoms, allowing interactions such as neural network potentials acting on the whole system. This is available via the keyword argument general_inters to System.
  • Implicit solvent models are added via the ImplicitSolventOBC general interaction type and the implicit_solvent keyword argument when setting up a System from a file. The Onufriev-Bashford-Case GBSA model with parameter sets I and II is provided.
  • charge is added to access the partial charge of an Atom.
  • The box_size keyword argument may be given when setting up a System from a file.
  • A bug in KineticEnergyLogger is fixed.

v0.7.0

30 Jan 18:30
Compare
Choose a tag to compare
  • The force and potential_energy functions for general interactions now take the vector between atom i and atom j as an argument in order to save on computation.
  • Differentiable simulations are made faster and more memory-efficient.
  • The AtomsBase.jl interface is updated to v0.2 of AtomsBase.jl.
  • extract_parameters and inject_gradients are added to assist in taking gradients through simulations.
  • bond_angle and torsion_angle are added.
  • random_velocities is added.
  • A solute field is added to Atom allowing solute-solvent weighting in interactions. This is added to the LennardJones interaction.
  • A proper field is added to PeriodicTorsion.
  • The float type is added as a type parameter to System. float_type and is_gpu_diff_safe are added to access the type parameters of a System.
  • A types field is added to types such as InteractionList2Atoms to record interaction types.
  • find_neighbors can now be given just the system as an argument.
  • Visualisation is updated to use GLMakie.jl v0.5.
  • Bugs in velocity generation and temperature calculation with no units are fixed.

v0.6.0

06 Jan 18:15
Compare
Choose a tag to compare
  • Differentiable simulation works with Zygote reverse and forward mode AD on both CPU and GPU. General and specific interactions are supported along with neighbor lists. It does not currently work with units, user-defined types and some components of the package.
  • Significant API changes are made including a number of functions being renamed, thermostats being renamed to couplers and the removal of some types.
  • Simulation is renamed to System and the time step and coupling are passed to the simulator, which is passed to the simulate! function.
  • System is a sub-type of AbstractSystem from AtomsBase.jl and the relevant interface is implemented, allowing interoperability with the wider ecosystem.
  • Specific interactions are changed to store indices and parameters as part of types such as InteractionList2Atoms. Specific interaction force functions now return types such as SpecificForce4Atoms. Specific interactions can now run on the GPU.
  • Some abstract types are removed. NeighborFinder is renamed to AbstractNeighborFinder.
  • The potential_energy function arguments match the force function arguments.
  • File reader setup functions are called using System and return a System directly.
  • find_neighbors! is renamed to find_neighbors and returns the neighbors, which are no longer stored as part of the simulation.
  • VelocityFreeVerlet is renamed to StormerVerlet.
  • RescaleThermostat and BerendsenThermostat are added.
  • random_velocities! and velocity_autocorr are added.
  • VelocityLogger, KineticEnergyLogger and PotentialEnergyLogger are added.
  • DistanceVecNeighborFinder is added for use on the GPU.
  • Atomic charges are now dimensionless, i.e 1.0 is an atomic charge of +1.
  • HarmonicAngle now works in 2D.
  • Support for Julia versions before 1.7 is dropped.