Releases: JuliaMolSim/Molly.jl
Releases Β· JuliaMolSim/Molly.jl
v0.21.1
v0.21.0
Breaking changes
- Observable functions for
GeneralObservableLogger
now need to accept arbitrary keyword arguments, for example by addingkwargs...
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
andcurrent_potential_energy
can be used in logging functions to reuse properties calculated in the simulation step. They default tonothing
when the properties are not available.- Interaction types are allowed to be different for each replica in a
ReplicaSystem
.
Performance improvements
PotentialEnergyLogger
,TotalEnergyLogger
andForceLogger
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
Breaking changes
apply_constraints!
andSHAKE
are removed as part of the changes to constraints.- The
System
constructor for AtomsBase.jl systems is changed to takeforce_units
andenergy_units
as keyword arguments rather than positional arguments. The defaults are consistent with the rest of Molly. velocity_autocorr
is removed sinceAutoCorrelationLogger
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
andcheck_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
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 aSystem
.ImplicitSolventOBC
,ImplicitSolventGBN2
andMullerBrown
are changed to be calculators. - The type parameters of
System
andReplicaSystem
are changed.
New features
forces
,accelerations
,potential_energy
,total_energy
,virial
andpressure
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
andReplicaSystem
now have adata
field, set with thedata
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
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
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
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
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
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 thanu"u"
. The default Boltzmann constantk
is chosen based on theenergy_units
given to aSystem
.
New features
- A constructor for
System
is added to convert from an AtomsBase.jlAbstractSystem
. - 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
Breaking changes
run_loggers
is no longer available as a keyword argument toSteepestDescentMinimizer
andlog_states
is no longer available as a keyword argument when callingsimulate!
withMetropolisMonteCarlo
. Insteadrun_loggers
can be given as a keyword argument tosimulate!
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.jlCrystal
struct. - A convenience constructor is added for
System
allowing an existingSystem
to be copied with given properties changed. run_loggers
can be given as a keyword argument tosimulate!
to determine whether the loggers are run. The options aretrue
,false
or:skipzero
, in which case the loggers are not run before the first step.run_loggers
istrue
by default except forSteepestDescentMinimizer
, where it isfalse
.run_loggers!
now has a fourth argument which determines whether the loggers are run, defaulttrue
.- The scale factor given to
scale_coords!
can now be aSVector
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.