GithubHelp home page GithubHelp logo

seatonullberg / velvet Goto Github PK

View Code? Open in Web Editor NEW
10.0 10.0 2.0 103.73 MB

[WIP] Classical atomistic simulation engine with a focus on user-friendliness and extensibility

Home Page: https://docs.rs/velvet

License: MIT License

Rust 96.62% Python 3.38%
atomistic-simulation-engine chemistry computational-chemistry materials-science molecular-dynamics physics simulation

velvet's People

Contributors

seatonullberg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

velvet's Issues

Tracking issue for velvet-core release v0.2.0

This issue tracks the progress towards the v0.2.0 release of velvet-core on branch dev.

  • Add Boltzmann distribution temperature initialization
  • Specify Thermostat interface
  • Implement calculation of temperature as a property
  • Implement Nose-Hoover thermostat
  • Implement Berendsen thermostat
  • Conduct a simulation of Ar gas in the NVT ensemble
  • Add serde support for System and Potentials
  • Add benchmark test suite
  • Add documentation

Tracking issue for velvet-core release v0.5.0

This issue tracks the progress towards the v0.5.0 release of velvet-core on the branch master.

  • Add support for Coulomb potentials
    • Implement the standard Coulomb potential
  • Enable optional f64 storage type as a cargo feature
  • Use neighbor lists to enhance performance of nonbonded interactions
  • Add the Buckingham pair potential
  • Conduct a simulation of MgO in the NVT ensemble
    • Add as an example
    • Validate against LAMMPS

Add all elements to Element enum

The Element enum currently supports only a minimal set of elements used in testing. All the naturally occurring elements from Hydrogen through Uranium should be implemented. The following snippet shows the existing implementation:

/// Every element on the periodic table.
#[derive(Clone, Copy, Debug, PartialEq, EnumString, Hash, Eq)]
pub enum Element {
/// Hydrogen
H,
/// Helium
He,
/// Boron
B,
/// Nitrogen
N,
/// Oxygen
O,
/// Fluorine
F,
/// Sodium
Na,
/// Magnesium
Mg,
/// Chlorine
Cl,
/// Argon
Ar,
/// Xenon
Xe,
}
impl Element {
/// Returns the atomic mass of the element in amu.
pub const fn mass(&self) -> Float {
match self {
Element::H => 1.008,
Element::He => 4.0026,
Element::B => 10.811,
Element::N => 14.0067,
Element::O => 15.999,
Element::F => 18.998,
Element::Na => 22.989,
Element::Mg => 24.305,
Element::Cl => 35.453,
Element::Ar => 39.948,
Element::Xe => 131.293,
}
}
/// Returns the electronic charge of the element as a multiple of electron charge.
pub const fn charge(&self) -> Float {
match self {
Element::H => 1.0,
Element::He => 0.0,
Element::B => 3.0,
Element::N => -3.0,
Element::O => -2.0,
Element::F => -1.0,
Element::Na => 1.0,
Element::Mg => 2.0,
Element::Cl => -1.0,
Element::Ar => 0.0,
Element::Xe => 0.0,
}
}
/// Returns the atomic number of the element.
pub const fn number(&self) -> u8 {
match self {
Element::H => 1,
Element::He => 2,
Element::B => 5,
Element::N => 7,
Element::O => 8,
Element::F => 9,
Element::Na => 11,
Element::Mg => 12,
Element::Cl => 17,
Element::Ar => 18,
Element::Xe => 54,
}
}
}

Tracking issue for velvet-core release v0.4.0

This issue tracks the progress towards the v0.4.0 release of velvet-core on the branch dev.

  • Parallelize expensive calculations
    • Forces
    • PotentialEnergy
  • Update benchmarks
  • Update examples
    • Use Python scripts for plot generation

Tracking issue for velvet-core release v0.3.0

This issue tracks the progress towards the v0.3.0 release of velvet-core on the branch dev.

  • Specify Propagator interface
  • Implement MolecularDynamics as a propagator
  • Add support for HDF5 output
  • Implement Configuration
  • Implement high-level Simulation abstraction
  • Add Serialize and Deserialize support for Output
  • Add Serialize and Deserialize support for Simulation
    • Add Serialize and Deserialize support for Propagator
    • Add Serialize and Deserialize support for Integrator
    • Add Serialize and Deserialize support for Thermostat
  • Add prelude module
  • Update documentation
  • Update examples

Tracking issue for velvet-core release v0.1.0

This issue tracks the progress towards the v0.1.0 release of velvet-core on branch dev.

  • Specify PairPotential interface
  • Implement Lennard-Jones pair potential
  • Implement Morse pair potential
  • Implement Mie pair potential
  • Specify Property interface
  • Implement calculation of atomic forces as a property
  • Implement calculation of potential energy as a property
  • Specify Integrator interface
  • Implement the velocity Verlet algorithm as an integrator
  • Conduct a simulation of Ar gas in the NVE ensemble
  • Add documentation

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.