input for LAMMPS developers at upcoming LAMMPS workshop

Hi all - at the LAMMPS workshop in 2 weeks, there

will be a developer’s break-out session where we discuss

ideas for new features and directions for the code over

the near term.

Axel has created an initial list of possible discussion topics,

see attached. We’re seeking additional input from

the user community, especially if you’re not coming to

the workshop.

So please reply if you have suggestions

for new features (and indicate if you’d like to work on it),

or things that need to made simpler or faster, or suggestions

for stuff that works in tandem with LAMMPS, e.g. auxiliary tools,
doc or web info, user community infrastructure, etc.

If you include the mail list in your reply, other users may be able

to augment/refine your ideas. You can also send a message

directly to me or Axel.

Steve

TopicsfortheDevelopersBreakoutSession.pdf (68 KB)

My two cents:
To the physics part I would suggest adding a global minimum search algorithm. The one
described in the link below proves particularly suitable for lammps because its MD-based
and quite powerful.

http://arxiv.org/pdf/cond-mat/0402136.pdf

A global minimum search algorithm can add more self-autonomy to the code while enhancing its user base.

And no, I can’t work on it (barely have time to contribute to the forum) but figured the idea could inspire someone better positioned to tackle it.
Carlos

Hi there all.

As someone who routinely compiles lammps, the points below from Steve's .pdf would be a huge help to my job.

- adopt cmake or automake; stop copying sources, but include via variables and vpath
( I'd choose cmake, but it's not my call. :slight_smile: )

- full support for building multiple targets including libraries from one source tree
( These first two would allow me to drop the 8 patches I currently maintain to package lammps, plus a much smaller and cleaner .spec file, yay! )

- public automated regression/integration testing; encourage using bug reporting / issue tracking tool
( The inputs in the 'examples/' directory of the source tarball is not exactly what I'd call a 'test suite' :wink: , so this is very welcome )

- move from subversion to git
( This would be a nice bonus to build packages by git tag or branch )

TIA,
Fabricio

Elaborating a bit more to show that mine is not a random suggestion. Assuming someone’s interest in the idea
of implementing the minima-hoping (MH) global search algorithm here is why I think lammps already has many of the algo parts implemented.

1-) Lammps can perform MD runs for bulk and cluster-like systems thus the MD runs required by the MH algorithm can already be performed with lammps
2-) Lammps can perform system’s relaxation to local minima in bulk as well as in cluster-like systems, which is also a step of the MH algo

The MC part of the MH code is almost trivial to code thus, the only remaining non-trivial hurdle would be to implement a technique to find the lowest curvature eigenmode direction for a given system. To the best of my knowledge this can be effectively achieved (speed and parallel scaling) via the Lanczos algorithm. As far as I know this is the best algorithm out there for such purpose. While I lack the parallel implementation expertise I already count with the expertise to get the Lanczos going with lammps via library calls. This I can share with the “potential candidate” interested in the topic.

End of my blurb now,

Carlos

Hi there all.

As someone who routinely compiles lammps, the points below from Steve's
.pdf would be a huge help to my job.

[...]

- move from subversion to git
( This would be a nice bonus to build packages by git tag or branch )

FYI, stable LAMMPS versions already get tagged (with a tag
corresponding the svn revision):

http://git.lammps.org/git/?p=lammps-ro.git;a=tags

for versions in between, there usually is not much of a difference
between the daily updated svn/git version and individual patches.

axel.

FYI, LAMMPS is under continuous automated regression testing (i.e. the tests run every svn commit). The tests consist of mainly of the examples, though the runtimes may have been shortened, along with some long-range electrostatics tests and a few other tests. Multiple LAMMPS builds are tested, like one using multithreading with the USER-OMP package. This testing has proven quite useful.

Stan

Dears,
Some suggestions, as brainstorming :

  1. Enable the option to pass an array of variables using the command line.
    Example : lammps --var_array “external_conf[‘key_1’,value_1;‘key_2’,value_2;…]”
    for use in the script as follows:

{external_conf['key_1']} {external_conf[‘key_2’]}
etc…

  1. Add a special function "std "(standard deviation) to the variable command.
  2. Special function of “variable command” should directly apply to the per / atom vectors such as vx , vy and vz .
  3. I think some features command “compute reduce” should be incorporated into the “Variable command” and delete the command compute reduced.
  4. Create a compute through which it is possible to calculate the factor structure , static and dynamic .
  5. With regard to documentation , I think the ideal would be to have flowcharts to understand the functioning as a lammps script runs. It cost me understand the workflow that uses lammps .
  6. When an error occurs , and shows the line of code where it happened, should refer to the line of " in.script " script where the error occurs . Example "Error: blablabla in line 14 in.script ".
  7. perhaps it is asking too much , but it would be good to have the pseudo codes and flowcharts some implementations(fix, compute) in the documentation. Obviously this will not be a replacement for literature , but it would be useful for beginners in molecular dynamics and c++ .
  8. Improve the UML documentation developers guide.
  9. Function Operations mean( ) and std () on fixes ave/time and ave/histo.

If any of the above mentioned points is already implemented , sorry and please ignore.

Cheers

Hi,

I see that H5MD output has been put on the list. Sorry for not reacting before.

I permit myself a short summary of H5MD status for lammps: serial dumps work,
with code provided here: https://github.com/pdebuyl/lammps/tree/start_dump_h5md

To use it, one must compile the provided (in the repository above) ch5md library
that requires HDF5 and enable the USER-H5MD packages. I attach a basic lennard
jones 2D example.

Comments are welcome indeed. Keep in mind that I live on european time :slight_smile:
If I can help to have the code in lammps officially, let me know.

Regards,

Pierre

in.2d (762 Bytes)

hi pierre,

Hi,

I see that H5MD output has been put on the list. Sorry for not reacting before.

I permit myself a short summary of H5MD status for lammps: serial dumps work,
with code provided here: https://github.com/pdebuyl/lammps/tree/start_dump_h5md

can you elaborate a little what you mean by "serial dumps". does that
mean it only work with a serial LAMMPS compilation, or does it refer
to using only serial i/o for the HDF5 output. in case of the latter,
you may want to have a look at the MPIIO package, that does parallel
i/o for standard LAMMPS dumps, perhaps you can benefit form the
implementation or even just create a derived style.

To use it, one must compile the provided (in the repository above) ch5md library
that requires HDF5 and enable the USER-H5MD packages. I attach a basic lennard
jones 2D example.

Comments are welcome indeed. Keep in mind that I live on european time :slight_smile:
If I can help to have the code in lammps officially, let me know.

do you have any plans to update your fork to the latest development head?
since you operate off of github, the easiest way to get the code
incorporated would be to file a pull request at the lammps/lammps
project.

axel.

> Hi,
>
> I see that H5MD output has been put on the list. Sorry for not reacting before.
>
> I permit myself a short summary of H5MD status for lammps: serial dumps work,
> with code provided here: https://github.com/pdebuyl/lammps/tree/start_dump_h5md

can you elaborate a little what you mean by "serial dumps". does that
mean it only work with a serial LAMMPS compilation, or does it refer
to using only serial i/o for the HDF5 output. in case of the latter,
you may want to have a look at the MPIIO package, that does parallel
i/o for standard LAMMPS dumps, perhaps you can benefit form the
implementation or even just create a derived style.

The code is based on dump custom and works with parallel simulation but the I/O
is serial. I would prefer to have user feedback before going through a parallel
version.

> To use it, one must compile the provided (in the repository above) ch5md library
> that requires HDF5 and enable the USER-H5MD packages. I attach a basic lennard
> jones 2D example.
>
> Comments are welcome indeed. Keep in mind that I live on european time :slight_smile:
> If I can help to have the code in lammps officially, let me know.

do you have any plans to update your fork to the latest development head?
since you operate off of github, the easiest way to get the code
incorporated would be to file a pull request at the lammps/lammps
project.

I rebased my repository and filed a PR https://github.com/lammps/lammps/pull/4
after checking that it compiles properly.

P

[...]

can you elaborate a little what you mean by "serial dumps". does that
mean it only work with a serial LAMMPS compilation, or does it refer
to using only serial i/o for the HDF5 output. in case of the latter,
you may want to have a look at the MPIIO package, that does parallel
i/o for standard LAMMPS dumps, perhaps you can benefit form the
implementation or even just create a derived style.

The code is based on dump custom and works with parallel simulation but the I/O
is serial. I would prefer to have user feedback before going through a parallel
version.

fair enough.

[...]

do you have any plans to update your fork to the latest development head?
since you operate off of github, the easiest way to get the code
incorporated would be to file a pull request at the lammps/lammps
project.

I rebased my repository and filed a PR https://github.com/lammps/lammps/pull/4
after checking that it compiles properly.

ok. it is integrated into my personal branch (LAMMPS-ICMS) now (i
*love* how easy this is done with git), i still remember what immense
pain this was in the old days of cvs. :frowning:

i'll meet steve at the LAMMPS workshop this week and we should be able
to merge it without a problem as this is a nicely clean and isolated
set of changes.

thanks,
   axel.

> I rebased my repository and filed a PR https://github.com/lammps/lammps/pull/4
> after checking that it compiles properly.

ok. it is integrated into my personal branch (LAMMPS-ICMS) now (i
*love* how easy this is done with git), i still remember what immense
pain this was in the old days of cvs. :frowning:

Well, if pull requests on github (or bitbucket) is an official contribution
channel this is great :slight_smile:

i'll meet steve at the LAMMPS workshop this week and we should be able
to merge it without a problem as this is a nicely clean and isolated
set of changes.

Great, thanks,

Pierre

If I can bring one or two more items on to that list, it would be:

A) More general manual control over the ability to create and delete
atoms, bonds, molecules during a simulation (without requiring the
user to read a data file).

B) (related) Having LAMMPS able to generate
angle,dihedral,improper interactions after making changes in topology.
The work that Tim Sirk was doing 7 months ago sounded promising.

   While not useful for everybody, those features would be handy for
to simulating coarse-grained molecular modelling of processes
occurring inside a living cell.

   Among the items on this list, my vote would be:

polarizable dipoles
generalized Born implicit solvent model

   Cheers!

Andrew

P.S. I'd love to get more force-fields supported in moltemplate!
(Especially if I have help from someone familiar with the force
field.)