andyletzhang / SwatGrains

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Effect of pins on bond strengths

andyletzhang opened this issue · comments

Can we plot the strength of bonds vs. proximity to pins (probably computationally intensive)? Alternatively, a heat map of bond strengths: do we see spikes close to where pins are located? (Both of these are probably only meaningful in the dilute pin limit.)

This is a cool idea (not just b/c I mentioned it lol) ... that arose from our hope to respond to Prof. Tom Witten's thoughts.

I'm imagining writing a file with three columns: x, y, f divided by average-of-f (sorry, this markup keeps deleting my angular brackets) where x and y give the center of the bond. (They are thus the averages of the x and y coordinates of the pair of particles that make up the bond.) A single data file could contain the data from of a bunch of differently seeded runs. Then, through the magic of scipy.interpolate can this be turned into a heat map? For example: https://stackoverflow.com/questions/62522878/plotting-a-heatmap-or-colormap-with-interpolation-in-python

And through the magic of matplotlib.pyplot.show() could we superpose pin positions as little circles?

This could be an amazing tool. For very dilute pins, forces divided by average-of-f might be (on average) higher than unity near the pins, and near unity far from pins (with ofc some region where forces are less than unity in order to have p(f) properly normalized. ) Would these regions surround the high f regions? Would they be centered in the voids that are far from pins? When pins exceed a certain density, the regions of high f around each pin might merge. This merger could be a measure of when the "correlation length" is equal to the pin separation.

We could even use this to do a "before and after" situation. We'd move a particle or pin by a given amount, and re-equilibrate the system. Again, the distance over which the heat map changes would give us a sense of the correlation length for stresses.

It also might shed some light on the "localized modes" thing, if we decide to only do a heat map for bucklers ;-)

This tool would work best at a fixed pressure, but we could make do with your trick of choosing a range of pressures until the sweep code is behaving properly.

Caveat: What about pins that are isolated, supporting no particles? What about voids that, with rattlers removed, have no particles? If we concatenate a bunch of seeds for better statistics, we weaken any signal from these locations where forces are zero. First: Put this issue aside and see what we get? Second: Creative ideas for dealing with this?

Thanks for these thoughts, Amy! I'm game to take a look at this tomorrow provided it's not way too in-the-weeds to work through over Zoom. One thing I was grappling with: should we consider the "location" of each bond to be the midway point, or the point of contact of the two particles, which in the case of two differently-sized particles would be skewed to one side? I think if the second option is preferable it wouldn't be too difficult to implement on top of the first method, since bondTypes are ordered and we can just tell it to go some fraction of the way (say, 1/(1+1.4) or 1.4/(1+1.4)) down the length of the bond.
As for voids from rattlers, I would love to put that issue aside and hope for the best. I imagine that we'll need a ton of seeds to get a coherent heat map anyway, so I'm optimistic that this is just another kind of noise that we'll be able to smooth out.

Okay, very exciting development!
I went ahead and applied modulo on our data (coordinates%=pin separation) to consolidate everything about one pin, and did another force map at the same resolution (but since we're zoomed in, that's npins times finer). Results are very cool:
squ16_08-05-mod_NormalizedForceMap
Here's the 16-pin data. Clearly some rotational symmetry going on around the pin: there's a very distinctive circle about the pin, which is close to (but I believe slightly smaller than) the small-particle diameter—note that rsmall=0.278— outside of which is mostly noise with perhaps a few more circular ripples being discernible. Inside the circle's radius, most contacts are very weak.
(Note: all the pins will be located as such in the lower left of the cell, which is the natural configuration when I just collapse everything into the lower left corner. I could center the pin, but I think this is actually kind of a useful vantage point, since we can see an entire quadrant.)

By 36-pin, there's some geometry forming:
squ36_08-05-mod_NormalizedForceMap
I thought on first sight that we were now seeing a large-particle diameter ring, but the large ring is actually still slightly within the small diameter (rsmall=0.277). That being said, the large ring does appear to be about 1.4 times wider than the small one. There's also some pretty coherent strong/weak force regions on the outside, indicating the influence of neighboring pins. The appearance of these outer structures will vary quite a bit as those neighboring pins draw closer, but what's particularly interesting is the sort of "spokes" we're seeing on the rings. I'm not sure what to make of these, but the trend is incredibly strong. Last week we talked about angle dependency and I brought up a bond angle plot from November, but I realize now that this isn't really looking at the same thing (although hopefully we can draw some conclusions linking the two at some point). What our heat map suggests is that there are a lot of very strong particle-particle contacts occurring right on the verticals and horizontals branching off of pins; all particle-pin contacts are registered as happening right on the pin itself and couldn't play a role here. How could pins be creating very strong particle-particle forces within a small-particle diameter from itself? I wonder if anyone has some expertise/intuition regarding this; I have neither.

Every pin density is interesting, and the rest are here, but here's the 100-pin, just skipping to the end a little:
squ100_07-19-mod_NormalizedForceMap
Lots to unpack here and I don't even know where to start, but here are some things: we're getting incredibly weak forces some parts of the outer region, and some interesting gridlines which seem to be situated a large radius away from each row and column of pins (as well as some less prominent lines at the small radius). We're also seeing some new strong force patterns showing up inside the rings, which are actually more noticeable in the 64-pin maps.

I'll try running the same square data through at a higher resolution and see if anything changes; the very straight lines in particular are very striking!

Regarding the triangle data, this should be relatively straightforward, but the scipy binning-and-averaging function we're running is very square-centric and so implementation would take a little wrangling. We could apply it on the data sheared into a square, but then we would be using rhombus bins; this is 1. a little arbitrary, I would feel more comfortable with triangular or hexagonal ones and 2. a little hard to plot with the shear re-applied; either we need to stumble upon more useful built-in scipy functionality or we need to exit their architecture to plot the rhombuses another way.