I managed to match the performance obtained with DL_Poly using LAMMPS. I
just switched from pppm to ewald solver.
So, to sum up we have:
- Core-shell model: Only the adiabatic version available in LAMMPS. Just
assign a small fraction of the element's mass to corresponding shell and
proceed with regular MD run with a smaller timestep.
- Building the core-shell units: Create a bond between each core and
shell. This is easily done by creating a suitable data file with a Bonds
- Pair Interactions: Long range coulombic interactions between all cores
and shells unless they belong to the same core-shell unit. This is in fact
the default option of special_bonds, so no need to change it. Ewald solver
is the preferred choice. For short range interactions, that will depend on
the model but, generally speaking, only shells will interact. Remember to
avoid any short range potentials between a core and a shell in the same
unit: the special_bonds will not turn it off by default!
If you have any questions, feel free to ask, ok?
P.S.: I am copying this message to the lammps-users forum for further
discussion on this topic. I think this approach may be useful for other
Yes, I am currently testing an idea that I shared with Stefan treating
the shells as ordinary atoms bonded with the cores. It turns out that
LAMMPS has an option (special bonds) that allows the user to set the
weight on the electrostatic interactions between bonded atoms. The
problem is performance: running a core-shell model as described is ~50%
slower than running on DL_POLY, a package that has core-shell
Results so far look very promising. Today I had the first serious
drawback. Apparently two shells came very close to each other and the
program stopped (T blew up). Unfortunately (or fortunately) this error
is really hard to reproduce.
My next step is to check how exactly DL_POLY handles neighbor lists on
an core-shell routine. I think this is the routine that has the highest
impact on performance. I intend to look into that by the end of this
month. After we figure this out, we can look for a real implementation
of the core-shell method in LAMMPS.
What do you think about all this? My personal experience tells me that
it is worth working on an implementation in LAMMPS for this problem. I
also recommend that you get DL_POLY and run some simulations to get a
feel of it. Maybe you will find it more suitable for your problem.
Looking forward to hearing from you, I remain.
I hope this finds you well. Your contact details were passed on to me
Stefan Bringuier in regards to setting up a core-shell model in LAMMPS.
I too am looking at implementing (or find an implementation) this
potential in LAMMPS. I was wondering if this was something you were
actively pursuing or had you found an alternative pre-existing