rdf-avoiding directly bonded polymer ebads

28 views
Skip to first unread message

jude vishnu

unread,
Nov 18, 2022, 10:43:10 AM11/18/22
to freud-users
Hi All,
Is it possible to use freud rdf functions to calculate the rdf of my polymer-system, but avoiding polymer beads which are directly bonded to other beads in the calculation.
 My first idea was to use cluster analysis and get cluster_idx and filter these in rdf calculations. But  this filters an entire polymer chain (because it is part of a cluster).

If there are any suggestion or ways to implement this. Please let me know.

Regards,
Jude

Tommy Waltmann

unread,
Nov 18, 2022, 10:56:52 AM11/18/22
to freud-users
Hi Jude,

When you say "polymer beads which are directly bonded to other beads" are the beads the monomers which make the backbone of the polymer chains? In general, it would be useful to get some more in-depth description of the system you are studying. Is it a just polymer melt, or are there other components in your system?

- Tommy

jude vishnu

unread,
Nov 18, 2022, 11:13:44 AM11/18/22
to freud-users
Hi Tommy,
Yes the beads are the monomers that makes up the backbone of the polymer. There are free polymers and there is a polymer gel.  The free polymers are distributed within the gel. I will vary free polymer concentrations. I want to look into the rdf of free polymer beads but avoid the directly bonded beads.  Hope this is a clearer description.

Regards,
Jude

Bradley Dice

unread,
Nov 18, 2022, 12:06:51 PM11/18/22
to freud-users
Jude,

Here's what I would suggest:

1. Find all neighbors (including bonded polymer particles) within the desired cutoff distance and create a NeighborList object. See the tutorial for an example: https://freud.readthedocs.io/en/latest/gettingstarted/tutorial/neighborfinding.html#neighbor-lists
2. Filter that NeighborList object to only keep bonds between particles that are not in the same polymer. Write a function that returns true/false depending on whether the particles are in the same molecule, then use `nlist.query_point_indices` and `nlist.point_indices` to build a boolean array that defines whether each bond is in the same polymer or not. Then pass this boolean array to NeighborList.filter: https://freud.readthedocs.io/en/latest/modules/locality.html#freud.locality.NeighborList.filter
3. Use this filtered NeighborList as part of the call to `RDF.compute(..., neighbors=filtered_nlist)`. https://freud.readthedocs.io/en/latest/modules/density.html#freud.density.RDF.compute

Then you should have the RDF of nearby particles from other molecules.


Note that the normalization of this RDF may not match what you need. See the discussion here: https://github.com/glotzerlab/freud/issues/396


Best,
Bradley
Reply all
Reply to author
Forward
0 new messages