Introduction
This package is still very early in its development, and there are more mature molecular dynamics packages in Julia. For instance, Molly.jl and NQCDynamics.jl both offer molecular dyanmics in Julia.
Julia Molecular Dynamics (JMD.jl
) aims to offer users a simple, intuitive and easy-to-use molecular dynamics enviornment. It draws inspiration from Python's ASE, but is intended to be faster and offer users more flexibility. The flexibility comes from the relative ease with which users can add their own methods to dynamics or other components of JMD.jl
.
Installation
JMD.jl
is not yet on the general registry, so for now installation can be done via GitHub.
pkg> add https://github.com/Cavenfish/JMD
If you are more adventerous, you can consider installing the dev
branch of JMD.jl
. This will get updates more frequently, which gives users more features but also comes with increased chances of bugs.
pkg> add https://github.com/Cavenfish/JMD#dev
Features
Currently, JMD.jl
is able to perform the following simulations/calculations on molecular systems.
- Geometry optimizations
- Harmonic frequency calculations
- Classical molecular dynamics in the NVE and NVT ensemble
Dependencies
JMD.jl
relies on several specialized external packages. These packages actively maintained and well trusted within the Julia ecosystem. If this changes, JMD.jl
will remove these dependencies and if necessary implement the specialized code in-house. Here the dependencies are listed with links to their repos to give credit to their work but also to provide transperancy.
Packages within the Julia standard library are listed seperately since they are expected to be maintained as well as the Julia langague itself. For each dependency there is a short description of how it is used in JMD.jl
, or why it is considered for removal.
Julia Standard Library Packages
External Packages
- FFTW:
- Optim:
- PyCall:
- Spglib:
- Chemfiles:
- Distances:
- Clustering:
- StaticArrays:
- Distributions:
- KernelDensity:
- OrdinaryDiffEq:
Considered for Removal
- JLD2: This package is currently only used to load neural network data for potentials. This functionality can be covered by the
Serialization
package, which can reduce the total dependency count. Note, this is a well maintained package and users are encouraged to use it alongsideJMD.jl
. - DataFrames: This package does not add any functionality to
JMD.jl
, but rather enchances user exerpience. However, this can be achieved by users using the package alongsideJMD.jl
, rather than it being a dependency. Note, this is a well maintained package and users are encouraged to use it alongsideJMD.jl
.