Probmes with bonds passing through each other

Dear Lammps Users,

I have two strings of beads, where String-1 and String-2 are interacted by LJ potential.

Since the bond length (bead-bead distance) within one string is big, sometimes I observed that the bonds in different strings passing through each other. So I was wondering if there is anything I can do to prevent this.

I did some searching, and found “pair_style srp”.
So I am wondering whether it is correct if I use “pair_style hybrid lj … srp …”, where lj for bead-bead interaction in different strings and srp for bond-bond interaction in different strings.

Any suggestions and recommendation would be appreciated.

Best regards,

You don’t say what kind of bonds you specified between
adjacent atoms. If the bond equilibrium distance is short
enough and the bond strength is large enough, bonds will
typically not pass thru each other. The bond_style fene

(FENE) bonds was specifically designed to prevent
that for coarse-grained polymer models. See the paper
it cites.

Pair_style srd is designed for DPD polymer models, see
its doc page. It can also be used (appropriately) to
prevent bond crossings for soft systems.

Steve

steve,

you seem to be mixing up pair styles srd and srp (part of user-misc).
the srp pair style in conjunction with the corresponding fix seems to
be maintaining a repulsive particle in the center of a bond of a given
type.

however, whether this is a proper choice for alex' simulation is
impossible to say. there are examples showing how to use it and there
is a publication referenced in the documentation, that should be
studied. for all we know, the effect could just be an artifact of a
typo in the bond parameters. as always in simulations, there is no
absolute "one true solution", one always has to determined whether a
given approach actually represents the desired physical properties
(regardless of whether it "looks right") of the system it tries to
model.

axel.

yes, I meant pair srp, not srd.

The former can keep soft bonds from overlapping

on 2 chains. But so can a FENE bond.

Steve

Dear Steve and Axel,

Thank you very much for the reply.

I am currently working on CNTs and my current force fields have two parts: (1) stretching+bending; (2) Van der waals force between two tubes. The crossing happens between the bonds in different tubes when I apply twist.

I checked the FENE command and found that this is to define the bond_style. But I have used harmonic potential (reading from bond_table) to define the bond_style between adjacent beads within one tube. So I guess I may not be able to use FENE, which would change my force field.

If so, is srp the only one I can use to prevent the bonds in different tubes passing through each other? Can it be applied on CNTs? How can I assign the parameters in srp to make it close to the effect by LJ potential?

Dear Steve and Axel,

Thank you very much for the reply.

I am currently working on CNTs and my current force fields have two parts:
(1) stretching+bending; (2) Van der waals force between two tubes. The
crossing happens between the bonds in different tubes when I apply twist.

you have to be a bit more specific about what kind of model you use
for your CNTs. remember, that nobody here can see what you see and
know what you know. if i combine the hints given in your previous
e-mail, it appears as if you try to model CNTs as a coarse grain model
using a linear chain of spheres. is that correct?

I checked the FENE command and found that this is to define the bond_style.
But I have used harmonic potential (reading from bond_table) to define the
bond_style between adjacent beads within one tube. So I guess I may not be
able to use FENE, which would change my force field.

If so, is srp the only one I can use to prevent the bonds in different tubes
passing through each other? Can it be applied on CNTs? How can I assign the
parameters in srp to make it close to the effect by LJ potential?

if you don't want FENE because it changes your force field, then you
cannot use srp either. in fact, if my guess at what your model is,
then the only conclusion would be that your model is ill suited for
the task that you are trying to apply it to. do you have any
references showing that it should work? do these discuss the bond
issue? are you sure that your force field parameters are set
correctly?

axel.

Dear Axel,

Thank you very much for your quick reply.

Yes, you are right. I am trying to model CNTs as a coarse grain model using a linear chain of spheres.

In fact, I do not have references to show it should work. I am actually trying to see if I can make it work. The parameters for my force field is okay. But the bond crossing always happens when I apply a twist.

If I cannot use srp either, may I ask if there is any other way I can work this out? I would really appreciate it if I could get some help from you.

you *can* use srp (or fene) or simply shorten the bonds and use more
spheres or use ellipsoids instead or...
but whatever you do, it will change the model.

what you describe is clearly a deficiency of the model: it doesn't
occupy space as a cylindrical shape.
so what you have is effectively something like this:

o---o---o---o---o---o---o---o

but you want it to have an excluded volume like this:

Hi Alex, pair srp has a soft interaction with the same form as DPD… its not likely to work well with hard potentials. This type of ‘chain crossing’ is normally not possible if the beads use a hard form like WCA or LJ. Those potentials create a big energy barrier, unless the bonds are long compared to the bead size like in Axel’s first picture.

Tim

Dear Axel,

Thank you so much for such detailed explanation.
I really appreciate it.
I will spend time on thinking about what you said.
Thank you very much again.

Sincerely,

Hi Tim,

I see your point.
Thank you very much.

Best regards,

Hi Axel,

For Van der waals force in the coarse grain model, I was trying to combine the LJ potential between beads and the srp between bonds to avoid crossing, but somehow could not make it work and got the error “ERROR: Illegal pair_style command (…/pair_lj_cut.cpp:430)”. I was wonder if I could get some help from you. I would really appreciate it.

pair_style hybrid lj/cut 30 srp 0.8 1 min
pair_coeff * * lj/cut 0 0 30
pair_coeff 1 2 lj/cut {eps} {sig} 30 # For atom type-1 to atom type-2
pair_coeff 1 4 lj/cut {eps} {sig} 30 # For atom type-1 to atom type-4
pair_coeff 1 6 lj/cut {eps} {sig} 30 # For atom type-1 to atom type-6
pair_coeff 2 3 lj/cut {eps} {sig} 30 # For atom type-2 to atom type-3
pair_coeff 2 5 lj/cut {eps} {sig} 30 # For atom type-2 to atom type-5
pair_coeff 3 4 lj/cut {eps} {sig} 30 # For atom type-3 to atom type-4
pair_coeff 3 6 lj/cut {eps} {sig} 30 # For atom type-3 to atom type-6
pair_coeff 4 5 lj/cut {eps} {sig} 30 # For atom type-4 to atom type-5
pair_coeff 5 6 lj/cut {eps} {sig} 30 # For atom type-5 to atom type-6
pair_coeff 1 1 srp 100 0.8 # For bond type-1 to bond type-1

Thank you very much.

Hi Axel,

For Van der waals force in the coarse grain model, I was trying to combine
the LJ potential between beads and the srp between bonds to avoid crossing,
but somehow could not make it work and got the error "ERROR: Illegal
pair_style command (../pair_lj_cut.cpp:430)". I was wonder if I could get
some help from you. I would really appreciate it.

pair_style hybrid lj/cut 30 srp 0.8 1 min

does your executable actually support srp as pair style? can you run
the example provided with LAMMPS?
this error message

pair_coeff * * lj/cut 0 0 30
pair_coeff 1 2 lj/cut \{eps\} {sig} 30 #
For atom type-1 to atom type-2
pair_coeff 1 4 lj/cut \{eps\} {sig} 30 #
For atom type-1 to atom type-4
pair_coeff 1 6 lj/cut \{eps\} {sig} 30 #
For atom type-1 to atom type-6
pair_coeff 2 3 lj/cut \{eps\} {sig} 30 #
For atom type-2 to atom type-3
pair_coeff 2 5 lj/cut \{eps\} {sig} 30 #
For atom type-2 to atom type-5
pair_coeff 3 4 lj/cut \{eps\} {sig} 30 #
For atom type-3 to atom type-4
pair_coeff 3 6 lj/cut \{eps\} {sig} 30 #
For atom type-3 to atom type-6
pair_coeff 4 5 lj/cut \{eps\} {sig} 30 #
For atom type-4 to atom type-5
pair_coeff 5 6 lj/cut \{eps\} {sig} 30 #
For atom type-5 to atom type-6
pair_coeff 1 1 srp 100 0.8 #
For bond type-1 to bond type-1

this doesn't look right. i have only superficially read the
documentation for pair srp, but this looks different. where are the
atom types for the atoms that will be maintained in the center of the
bond? why do you specify all pairs or atom types explicitly, when you
assign the same parameters?

axel.

Hi Axel,

Thank you very much for your reply

I just tried the example about srp provided with LAMMPS. It did not work. I got the error “ERROR: Unknown identifier in data file: Atoms # full”. Does that mean I cannot use srp?

For your second question, I cannot understand what you said about “where are the atom types for the atoms that will be maintained in the center of the bond?” I don’t have the atoms that will be maintained in the bond center.

Hi Axel,

Thank you very much for your reply

I just tried the example about srp provided with LAMMPS. It did not work. I
got the error "ERROR: Unknown identifier in data file: Atoms # full". Does
that mean I cannot use srp?

that means, you are using a *very* outdated executable. it doesn't
even reach the point where srp is used, but fails earlier when reading
the data file, which is output in format that is not compatible with
very old version. srp was added much later than this change in the
data file format.

For your second question, I cannot understand what you said about "where are
the atom types for the atoms that will be maintained in the center of the
bond?" I don't have the atoms that will be maintained in the bond center.

you obviously haven't read how srp works. please do so and come back
when you do understand my question. there is no point in continuing
now. also, please consider tim's comment. i do agree with his
assessment, and if i was in your position, i would not do this, but
rather program a style that would do same thing with a LJ style
potential, if at all. what you are trying to do is to fix an
unsuitable model with the MD equivalent of duck tape.

axel.