Hi all - we’ve added a new capability some folks have asked
for in the past. Namely a molecule command that allows
definition of a template molecule. Which can then be inserted
on the fly, via the fix deposit or fix pour commands. Constraints
on the molecule (rigid, SHAKE) can also be specified.
Down the road, other commands will use this as an option also.
E.g. create_atoms, to create a lattice of water molecules, or
fix gcmc to work with molecules in a Monte Carlo context.
I added some example scripts in the deposit and pour dirs of
examples. Also simple movies of them on the Movies web page.
Steve
Hi all - we've added a new capability some folks have asked
for in the past. Namely a molecule command that allows
definition of a template molecule. Which can then be inserted
on the fly, via the fix deposit or fix pour commands. Constraints
on the molecule (rigid, SHAKE) can also be specified.
Down the road, other commands will use this as an option also.
E.g. create_atoms, to create a lattice of water molecules, or
fix gcmc to work with molecules in a Monte Carlo context.
AWESOME!
On a related note, how hard would it be to have input-script commands
for creating individual atoms and bonded interactions? (Actually, if
making input-script commands is too much of a pain, it would be cool
if there was just a simple C++ function that can add atoms and another
for adding bonded interactions. That way people could then invoke
from their custom fixes, or when calling LAMMPS as a library.)
Anyway, cool new feature!
Andrew
(And if all these features eventually make moltemplate obsolete, I'm
not mad. That's great!)
Hi all - we've added a new capability some folks have asked
for in the past. Namely a molecule command that allows
definition of a template molecule. Which can then be inserted
on the fly, via the fix deposit or fix pour commands. Constraints
on the molecule (rigid, SHAKE) can also be specified.
Down the road, other commands will use this as an option also.
E.g. create_atoms, to create a lattice of water molecules, or
fix gcmc to work with molecules in a Monte Carlo context.
AWESOME!
On a related note, how hard would it be to have input-script commands
for creating individual atoms and bonded interactions? (Actually, if
making input-script commands is too much of a pain, it would be cool
if there was just a simple C++ function that can add atoms and another
for adding bonded interactions. That way people could then invoke
from their custom fixes, or when calling LAMMPS as a library.)
please keep in mind the overall data structures in LAMMPS are still
somewhat static, i.e. you have to reserve storage for topological
additions when the simulation box is defined. so there will always be
limitations due to these kind of features and having an external tool
to build a topology will often be the better and more efficient
choice.
axel.
I just added a molecule option to create_atoms to allow creation
of collections of molecules, instead of individual atoms, as before.
If you want, suggest input commands for creating individual bonds,
etc, that you think would be useful. I’m not sure if what you have
in mind is different than what create_atoms (for molecules) now does.
Steve
Sorry, this will be a long post. After thinking about it, I don't
think it is necessary to have a "new_bond" or "del_bond" input-script
command in LAMMPS. I'm not sure if it would help. But having a
simple C/C++ function somewhere inside the LAMMPS source-code which
can (forcibly) create and destroy atoms and bonds might be useful for
users who want to tinker with their own fixes (or invoke LAMMPS as a
library). Don't worry about this small detail for now. I don't think
anybody would notice. (Those who care can just read "fix_gcmc.cpp" or
"fix_bonc_create.cpp" to see how it's done.) But I'll step on the
soap-box for a brief moment:
In the future, I anticipate more and more people will eventually be
using MD to study problems in biological physics (at intermediate
mesoscopic length-scales where continuum models are not detailed
enough). Generally speaking, biological assemblies are actively
driven by motors which consume ATP. Consequently they can move in
strange ways which don't necessarily satisfy detailed balance.
Molecules and bonds are constantly created and destroyed. Molecules
may have multiple internal states.
(Just a few examples: actin flows, spindle-pole separation, forcible
insertion of curve-inducing proteins into membranes)
The standard thermostats and barostats will not be enough. Users will
want to come up with their own rules to describe how the system
evolves. And there is no way to anticipate what those future rules
will be. But having an interface flexible enough to allow users to
create and delete new molecules, and connect atoms together with bonds
(as well as deleting molecules and bonds), could eventually be very
useful for this kind of research.
Programs like OpenMM and ESPResSo++ do have a few python-based input
script commands to add particles and bonds to the system. But I have
not yet seen anybody using these commands in the way I described. A
huge amount of thoughtful work as obviously been put into creating a
scripting language for LAMMPS. I'm not suggesting to throw any of
that away. (I personally think that users who need to run
non-standard MD should write their own code in C++/C and invoke LAMMPS
as a library, or write their own fixes.)
As for me, I have been getting by okay using the "write_data",
"shell", "read_data", and "clear" commands to modify the data file
describing the system with external software I wrote. This is
probably the most flexible way to do things.
So I don't really have any specific suggestions or feature requests.
But I like to pontificate about the future. I hope I was not to
preachy. There are cool opportunities in the future using MD in
coarse-grained biological physics I think.
Cheers!
Andrew
I agree that having some facilities in the code
to make it easier to add/delete bonds would be good.
I just need to see a use case or two to figure out
a flexible way to do that.
Steve