Giter VIP home page Giter VIP logo

jumos.jl's People

Contributors

luthaf avatar mcprentiss avatar pallharaldsson avatar tom--lee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

jumos.jl's Issues

Thermostating and barostating

Another meta-issue about thermostating and barostating the system. There are two ways to do this :

Enforcing the parameters after the integration

This can be done by modifying the current frame after the integration has been performed

  • Velocity rescaling thermostat
  • Andersen thermostat
  • Berendsen thermostat

Using a custom integrator

  • Berendsen barostat
  • Nose-Hoover barostat/thermostat
  • Chains of Nose-Hoover barostat/thermostat

Why julia is not the right language?

Hi @Luthaf , I'm a developer of python packages for computational chemistry and, just like you I was looking into julia and rust for high performance candidates for some tasks (such as molecular simulation).

I've seen you're abandoning julia for rust, why didn't julia satisfy your requirements? I'm asking because I'd like to find out before starting porting some tools in julia.

Thanks

Long-range interactions

Meta-issue about long-range potentials computations. As far as I know, there are two main ways to do this :

  • Ewalds summation
  • PPPM base computations

Interaction with topologies: add selections

VMD style selections name He and x > 3 are very nice, and should be added to the Topology. Something like

macro s_str
    # Lot of magic here
end

top = Topology(...)

select = get_atoms(top, s"name He and x>3")
# Here select should be some kind of Vector{Bool}

Append mode for outputs

An "append" mode should be provided for the outputs, in order to write additional data to the same file in separated runs.

More generic propagator

It would be great to have a Propagator type, with the following subtypes :

  • MolecularDynamic
  • Replay (the current interface for read/write the trajectories)
  • Minimisation with it's own subtypes :
    • Gradient descent ;
    • Any other useful minimisation algorithm

Input files for simulations and potentials

Having input files with a nice syntax would be great. The YAML format seems to be a good format for this, and there is already a Julia parser. This can be a syntax example :

simulation:
    type: MolecularDynamic
    integrator:
        type: Verlet
        timestep: 1.0
    forces:
        # TODO
    controls:
        - type: BerendsenThermostat
          coupling: 100
          temperature: 450
        - type: BerendsenBarostat
          coupling: 100
          pressure: 1.4
    outputs:
        - type: TrajectoryOutput
          frequency: 10
          file: output.xyz
        - type: EnergyOutput
          frequency: 50
          file: Energy.dat
potentials:
    from_file: ../potentials.yml
initial_setup:
    cell: [10.0, 10.0, 10.0]
    # cell: {type: orthorombic, size: [10.0]}
    positions: initial.xyz
    velocities: # if needed
    topology: # if needed

The file potentials.yml looks like this :

pairs:
    - atoms: [He, He]
      type: LennardJones
      sigma: 3.4
      epsilon: 0.45
    - atoms: [*, *]  # Default values
      type: LennardJones
      sigma: 2.5
      epsilon: 0.8
      cutoff: 8.5
angles:
    - atoms: [He, Ar, Xe]
      form: HarmonicAngles
      k: 67
      theta0: 120

The implementation could build and bind the corresponding types at runtime.

Bugs in units conversions

Because there is no tracking of the units in the code, the with_unit function is very buggy :

julia> with_unit(45, mJ)
    188280.0 kg m²/s²

julia> with_unit(45, J)
    188280.0 kg m²/s²

More analysis functions

This is a meta issue about analysis capacities. Here is a Santa Claus list:

  • Hydrogen Bond analysis
  • Calculating root mean square quantities
  • Correlation functions, and some dynamical properties:
    • Diffusion coefficient
    • Viscosity
    • Vibrational spectra

Add commons potentials

This is a meta-issue about potentials, the code would need a lot of them :

Short range

  • Morse potential

Biochem potentials

  • CHARMM
  • AMBER

Bonds

  • harmonic

Angles

  • harmonic
  • cosine - harmonic

Dihedral angles

  • Torsion
  • Cosine series

The potential interface should also change to take a vector between two, three or four points and return a vector of the force or the energy.

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.