Releases: JuliaMolSim/Molly.jl
Releases Β· JuliaMolSim/Molly.jl
v0.11.0
box_size
is renamed toboundary
throughout. Boundaries of the formSVector(1.0, 2.0, 3.0)
should be replaced byCubicBoundary(1.0, 2.0, 3.0)
, allowing non-cubic boundaries to be added in future. Setting one or more values toInf
gives no boundary in that dimension.RectangularBoundary
should be used for 2D simulations.float_type
,box_volume
andAtomsBase.n_dimensions
are defined for boundaries.- The recorded values in loggers are now accessed with
Base.values
. Loggers are now given to theSystem
as a named tuple rather than as aDict
for performance reasons. wrap_coords_vec
is renamed towrap_coords
,wrap_coords
is renamed towrap_coord_1D
,vector1D
is renamed tovector_1D
, thecutoff
argument to the implicit solvent models is renamed todist_cutoff
, and thenl_dist
argument toSystem
is renamed todist_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 inLangevin
("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 ofGeneralObservableLogger
.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
toSystem
,velocity
andmaxwell_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
- Visualisation is updated to use GLMakie.jl v0.6.
v0.10.3
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
ForceLogger
is added.- The
parallel
keyword argument is now available in thelog_property!
function. - More examples are added to the documentation.
- A bug in the
Mie
potential energy is fixed.
v0.10.1
- A bug in the
Gravity
force and potential energy is fixed.
v0.10.0
- 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
andImplicitSolventGBN2
. - 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
- The arguments to
forces
andaccelerations
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 andVerlet
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
- General interactions are renamed to pairwise interactions throughout to better reflect their nature. The abstract type is now
PairwiseInteraction
and the keyword argument toSystem
is nowpairwise_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 argumentgeneral_inters
toSystem
. - Implicit solvent models are added via the
ImplicitSolventOBC
general interaction type and theimplicit_solvent
keyword argument when setting up aSystem
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 anAtom
.- The
box_size
keyword argument may be given when setting up aSystem
from a file. - A bug in
KineticEnergyLogger
is fixed.
v0.7.0
- The
force
andpotential_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
andinject_gradients
are added to assist in taking gradients through simulations.bond_angle
andtorsion_angle
are added.random_velocities
is added.- A
solute
field is added toAtom
allowing solute-solvent weighting in interactions. This is added to theLennardJones
interaction. - A
proper
field is added toPeriodicTorsion
. - The float type is added as a type parameter to
System
.float_type
andis_gpu_diff_safe
are added to access the type parameters of aSystem
. - A
types
field is added to types such asInteractionList2Atoms
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
- 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 toSystem
and the time step and coupling are passed to the simulator, which is passed to thesimulate!
function.System
is a sub-type ofAbstractSystem
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 asSpecificForce4Atoms
. Specific interactions can now run on the GPU. - Some abstract types are removed.
NeighborFinder
is renamed toAbstractNeighborFinder
. - The
potential_energy
function arguments match theforce
function arguments. - File reader setup functions are called using
System
and return aSystem
directly. find_neighbors!
is renamed tofind_neighbors
and returns the neighbors, which are no longer stored as part of the simulation.VelocityFreeVerlet
is renamed toStormerVerlet
.RescaleThermostat
andBerendsenThermostat
are added.random_velocities!
andvelocity_autocorr
are added.VelocityLogger
,KineticEnergyLogger
andPotentialEnergyLogger
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.