Explaining the mathematical basis and dynamics of particle parcel packaging in the Particle-in-Cell method.

I’m trying to understand the parcel/packaging approach used in Particle-in-Cell (PIC) simulations. Specifically:

  1. Is the parcel packaging method purely mathematical? How is it specifically implemented?

  2. Once particles are grouped into parcels, do they remain fixed? Does a parcel always contain the same physical particles, or do the members change as they move or under different conditions?

Any insights or references would be greatly appreciated!

I’m not sure what you mean in 1, could you elaborate?

re 2, the “grouping” of the particles isn’t like a numerical exercise. there are no particles, only parcels that represent real particles. typically, the stat weight is fixed throughout a simulation. it may vary based on solids type (e.g., maybe you have large biomass pellets with a relatively small weight and fine sand with a large weight) or even within a solid type if a size distribution is specified (i.e., stat weight then depends on the seeded particle size {@jmusser could you confirm this statement?}). that doesn’t mean that you couldn’t implement some type of fragmentation model to create daughter parcels with a fractional stat weight of the parent parcels, but that doesn’t exist out of the box.

The PIC model as implemented is undocumented. AFAIK it’s it’s not too different than the one in MFiX classic, so you could refer to that theory guide to get a general idea. Here’s also a paper on the PIC-to-DEM method in the code we wrote a while ago which was rejected from JFE with some additional details in it of MFIX-Exa’s PIC model. Specifically, see Algorithm 1 for the iterative update which is not present in MFiX classic.
JFE_pic2dem.pdf (1.2 MB)

Yes. The stat weight is computed so that each parcel represents approximately the same solids volume.

Hi wfullmer,

Thank you for your response and the references.

Regarding my first question: In PIC, when we group many real particles into a single computational “parcel” to reduce cost, what is the actual packaging method?

Specifically:
I’m trying to understand how parcels are initially formed and grouped — for example, are particles assigned to parcels based on spatial proximity, similar properties (like size or velocity), random sampling, or some mathematical/statistical principle? In other words, what logic determines which real particles are represented together in one parcel?

I’d appreciate any further insights!
Best regards,
Hilda

@Hilda I think there is just a slight misconception on your part. There are no particles. The “real” or “representative” particles don’t exist. They never existed to being with. So, there is no logic or mathematical principals to group them into parcels. That’s just not part of the method. You specify the maximum packing of the solids phase, e.g., 0.6, you specify the number of parcels per cell at maximum packing, e.g., 40, you specify the “real” particle size, e.g., 100 micron. In this example, let’s suppose the fluid mesh is dx = 1 cm. Then the code will compute the stat weight as W = phi_mx * dx^3 / Npp / Vp = 0.6*10^3 / (40 * pi / 6 * 0.1^3) ~ 30k. These parcels are then seeded into the simulation, either through initial conditions and/or boundary conditions. Each one represents 30k “real” particles, but the real particles never actually exist in the simulation.

To carry this further… when I initialize a domain, I typically use a value below max pack, e.g., 40%. In this example, the code will populate those fluid cells with 26 parcels. I don’t typically use 40 as a stat weight but picked it here b/c it makes for a good bad example. Note that .4/.6*40 = 26.666 so you’re losing 2/3’s of a parcel at each fluid cell. It would be better to specify an initial
condition of 0.42 which is exactly 28 parcels.

In classic, we kept track of that round off filled in whole particles at later cells. TBH I am not sure how that’s handled in MFIX-Exa, but that’s a bit beyond the scope of your question here.