Hi Amuthan,

The current code uses the direct sum because this was the easiest algorithm to implement, and your understanding is totally correct.

Adding other algorithms is a piece of cake: it is as easy as subtyping `BaseForceComputer` (I could not came with a better name), and providing a `call` method. So I am planning to add at least (serial) Verlet neighbor lists for the forces computations, and maybe some parallel code.

But I don't know a lot about parallel methods in MD, and I still have a lot to learn about it. It would definitively be very nice to have it ! I think that only a few changes are needed to use julia parallel framework in the package. All the data are stored in objects of type Array3D, which could be modified to use DArray instead. I am open to change the internal data structure if this can improve the performances.

Is your neighbor list code available somewhere ? I am interested in reading it.

Cheers,
Guillaume

Amuthan A. Ramabathiran a écrit :
Hi Guillaume:

This looks good -- thanks for the package! I have a basic question regarding the force computation: I had a quick look at the code and it appears to me that the current code uses an O(N^2) algorithm (direct sum) for this. Is my understanding correct? Software like LAMMPS use very efficient algorithms for short and long range potentials and this might possibly account for the fact that the benchmark is 80x slower.

I had developed a serial MD code using neighbor lists last year and I'm currently in the process of parallelizing it to study the suitability of Julia for developing (reasonably) parallel research codes. Is parallelization something you're looking into? I would be very interested in hearing about this. Thanks!

Cheers,
Amuthan

On Tuesday, January 27, 2015 at 2:46:59 PM UTC-8, Luthaf wrote:

    Hi julians !

    I am very happy to announce the release of Jumos, a Julia package
    for molecular simulations.

    You can find the code here: https://github.com/Luthaf/Jumos.jl
    <https://github.com/Luthaf/Jumos.jl>, and the documentation is
    hosted by readthedocs : http://jumos.readthedocs.org/en/latest/
    <http://jumos.readthedocs.org/en/latest/>.

    This package aims at being as extensible as possible. Every
    algorithm is a type that can be subtyped and changed at runtime,
    during the simulation.
    This makesit easy to write new algorithms, experiment with them,
    and combine algorithms in all the fancy waysyou can imagine.

    Presently, only molecular dynamic is implemented, but I am
    planning to add energy minimisation, and trajectory replay from
    files (maybe monte-carlo simulations if I find some time). A
    handful of tools are alreadyimplemented :
        - Velocity-Verlet and Verlet integrator;
        - Lennard-Jones and Harmonic potential;
        - User-defined potentials;
        - RDF and density profile analysis;
        - Berendsen thermostat;
        - Velocity-rescale thermostat;
        - Temperature and energy computations.

    And a lot more are planned:
    https://github.com/Luthaf/Jumos.jl/issues
    <https://github.com/Luthaf/Jumos.jl/issues>.
    If you want to help, contributions are very welcome ! Just pick up
    an issue or create a new one as a feature request.
    The first benchmark (against LAMMPS) givesme a speed 80 times
    slower than LAMMPS. This is already great for a dynamic language,
    but there is still room for improvement !

    Any feedback on the implementation is also very welcome.

    Regards
    Guillaume

    PS: Whatdoes the ANNin the titlemean ? It seems to be everywhere,
    but I don't have any clue about its meaning

Reply via email to