Radial Distribution Function of Entangled and Unentangled Polymer

Dear All,

I have a question about rdf of entangled and unentangled polymer.

I extracted 10 beads from the chain data file in LAMMPS, then use moltemplate to build the polymer (900 chains).

Then following this protocol (http://www.sciencedirect.com/science/article/pii/S0009261411015508) to make the polymer get their nature state (LAMMPS Code, data file, log file attached, also the resulting image).

After minimize the polymer, I use VMD plugin tool to plot the rdf (selfchain,selfchain2), which didn’t converge to 1.

Then, I change the spacing between polyme chains, still get the similar result.

I run the same protocol for the chain data in LAMMPS benchmarks, which gives the right rdf after relaxing.

Also, I notice all the Temp sometimes maintains around 0.5 in same case (by varying the spacing between chains), which not as the set 1.0. Any suggestions about this?

RDF question : After those trying, I think: for the entangled polymer, after mini, we should get the right RDF, but for unentangled polymer, not necessary to have the right RDF (approach to 1, like this one, it approaches to 0, http://www.nature.com/srep/2013/130923/srep02715/fig_tab/srep02715_F4.html). Am I right?

Best Wishes!

2012 Fast protocol forequilibration of entangled and branched polymer chains.pdf (500 KB)

benchmarkchainlammps.PNG

benchmarkchainlammpsinitial.PNG

log.lammps (13.3 KB)

mini.00000.bmp (689 KB)

mini.00001.bmp (689 KB)

selfchain.PNG

selfchain2.PNG

wholesmall6.data (1.57 MB)

wholesmallt.in (1.83 KB)

Dear All,

I have a question about rdf of entangled and unentangled polymer.

I extracted 10 beads from the chain data file in LAMMPS, then use
moltemplate to build the polymer (900 chains).

Then following this protocol
(http://www.sciencedirect.com/science/article/pii/S0009261411015508) to make
the polymer get their nature state (LAMMPS Code, data file, log file
attached, also the resulting image).

After minimize the polymer, I use VMD plugin tool to plot the rdf
(selfchain,selfchain2), which didn't converge to 1.

Then, I change the spacing between polyme chains, still get the similar
result.

I run the same protocol for the chain data in LAMMPS benchmarks, which
gives the right rdf after relaxing.

Also, I notice all the Temp sometimes maintains around 0.5 in same case (by
varying the spacing between chains), which not as the set 1.0. Any
suggestions about this?

RDF question : After those trying, I think: for the entangled polymer, after
mini, we should get the right RDF, but for unentangled polymer, not
necessary to have the right RDF (approach to 1, like this one, it approaches
to 0,
http://www.nature.com/srep/2013/130923/srep02715/fig_tab/srep02715_F4.html).
Am I right?

unlikely. there are so many ways that you may have messed up things in
the process, that it is impossible to tell where. my guess is that you
neither have done a proper equilibration (does your system have the
proper density?) nor properly computed the rdfs.

axel.

Hi,

Thanks for guidance.

I finally got it right. I think the problem is that I didn’t get a proper initial configuration.

Other than use Moltemplate to build the polymer, I used the chain tool in LAMMPS.

Best Wishes!

If my understanding is correct, then the initial configuration should
not matter.

    Comment:

   If you are using pair_style soft to allow the polymer to pass
through itself, this pair_style is different from pair_style lj/cut
(or other Lennard-Jones pair_styles). Unless you are careful or
lucky, I wonder if the particle diameter is not quite equivalent. I
speculate that this might effect your density. It might also effect
how extended your polymer is.
   One rigorous way to solve that particular problem is to use
"pair_style table" (or write your own pair_style) to build a potential
U(r) which exactly matches the Lennard-Jones potential for r > sigma,
and remains finite for small r below a cutoff radius rc, (For example,
let U(r) = constant = U(rc) when r<rc. You may want to make this
smoother.) As you run the simulation, you will want to lower the "rc"
cutoff radius (which raises the barrier height) suspect you will need
several different tables with different barrier heights and widths
(U(rc) and rc) in order to gradually equilibrate the melt to make a
realistic self-avoiding polymer.

   pair_style lj/charmm/coul/charmm/inter

Tonight I will try to post the new version of pair_style
lj/charmm/coul/charmm/inter on the moltemplate web page. It allows
you to use U(r) = U0 - k*r^2 at small radii, and the Lennard-Jones
potential at large radii. (See attached figure.) I'll try to post
this by tonight.

   moltemplate polymer melt example:

If it helps, I recently made a good polymer melt (for a single
polymer) using a combination of moltemplate and LAMMPS. (Se attached
picture.) It sounds very similar to the paper you posted. (I can't
access that paper unfortunately.) A lot of people have asked for a
protocol for making polymer melts. If I have time, I'll strip the
weird junk out of my example, clean it up and post it along with the
moltemplate examples. I'll let you know when I do.

Andrew

If I forget to post this, feel free to remind me!

tangled_polymer.jpg

Hi, Andrew,

Thanks for your detailed reply.

Initially, I used pair style soft 1.12 to prepare the polymer, as I change the spacing between chains(constant), the system behaves differently. Sometimes prompt the warning message: FENE bond too long. This was done by Moltemplate

After I read the paper, I switch to their method, which use dpd soft 1.0. Also, build the polymer by Moltemplate. This time, I didn’t get the right RDF.

Finally, I used the chain tool in LAMMPS to build the polymer and use dpd soft 1.0, which makes everything right.

Attached you can find the paper.

The chain tool in LAMMPS can generate polymer of certain density and initial bond length, which is important.

Best Wishes!

2012 Fast protocol forequilibration of entangled and branched polymer chains.pdf (500 KB)

Hi, Andrew,

Thanks for your detailed reply.

Initially, I used pair style soft 1.12 to prepare the polymer, as I change
the spacing between chains(constant), the system behaves differently.

Please disregard my earlier comments. I did not see the files you
attached to your first post. My comments were not relevant. It seems
like the problem you are having is more fundamental. I downloaded the
"wholesmall6.data" file and looked at it in VMD.

First of all, this is a pretty complicated system. It is definitely
not just a simple polymer melt.

I would start with a system with a single polymer, or a few polymers.
Once you can get that to work, then
add walls, slabs and other objects if you need them.

Sometimes prompt the warning message: FENE bond too long. This was done by
Moltemplate

Sure. It's easy to make messy polymer structures using moltemplate.
(It was difficult to see anything resembling a polymer in the
"wholesmall6.data" file, but this is probably because there was so
much atom overlap.)

Thank you for sharing what worked. Making polymer melts is hard.
If you are simulating a simple chain of atoms, or multiple simple
chains of atoms, feel free to use the chain.f tool. It should work.
Moltemplate is only really useful for more complicated polymers with
multiple atoms per monomer. In that case you have to worry about
monomer position (and orientation).

  For others who are curious, here is some advice about making polymer
melts using moltemplate.

   ---- Don't use straight polymers: ----

To use moltemplate to build a polymer with 10 monomers (each of which
contains multiple atoms), you typically would use a command like this:

monomers = new Monomer [10].move(3.4,0,0)

(... and then you must remember to manually connect the monomers
together with 9 bonds)

This will make straight polymers. This is not a particularly a good
initial starting shape for long polymers in a melt (longer than the
length of the simulation boundary box).

   ---- Start with a space-filling curve ----

Moltemplate can read coordinates from an external file, but for
complicated polymers (with multiple atoms in each monomer), this is
not very helpful.

To make a polymer melt in moltemplate, I currently recommend:

1) Use a separate script to generate coordinates for where you want
the monomers to go initially (typically some kind of space-filling
curve on a lattice). You could also use a random-walk generator. (A
string of random coordinates separated by fixed bond-lengths.). But
keep in mind that a random-walk is a more extended curve which might
not fit inside the periodic boundary conditions you are using.
(Perhaps this does not matter.)

2) Then write a for loop which reads these coordinates and generates a
moltemplate file ("system.lt"). That file contains a list of "new"
commands with ".move()" and "rot()" or ".rotvv()" coordinate
transformations to tell moltemplate where each of the monomers should
go (and what direction that they should be pointing in).

  If all the polymers have the same length, you can define a single
"Polymer" molecule and make multiple copies of it using the "new"
command:

import "polymer.lt"
polymers = new Polymer [3].move(0, 0, 30.0)
                       [3].move(0, 30.0, 0)
                       [3].move(30.0, 0, 0)

  Otherwise (more generally) I would use just create one big file with
all of the monomers in one big list, and delete (or omit) bonds which
would otherwise connect atoms in different polymers together.

3) Then I run moltemplate on that file ("system.lt").

4) Then I run a simulation in LAMMPS using pair_style soft to
equilibrate the polymer.

----- summary ----

Moltemplate gives you a lot of flexibility to do what you want. But
it's not easy to use.

(For example, I've been using moltemplate to construct polymers bent
in the shape of "crumpled-globule" shapes which were generated by
somebody else. These are not polymer melts.)

There are probably other tools that can make polymer melts in fewer steps.

For anyone who is still interested, I will post an example which does
these four steps with the next moltemplate release.

Cheers

Andrew

Hi, Andrew,

Thanks for the information.

Yes, the system is not just a polymer melt.

The first step I took just freeze other components and relax the polymer.

I used LAMMPS chain tool to generate the polymer and lattice to generate the DLC.

and use the lammps to moltemplate tool to generate moltemplate data file, thus I can systemic manipulate the individual component, which is very convenient.

Also,in order to make sure the LAMMPS code right, I also do the system.lt process (usually after the system.lt routine, I also write my own LAMMPS code to make sure everything is right).

I love Moltemplate.

Best Wishes!