Initial solids outside of region

Hi everyone,
I am a new user of MFIX and I have followed all possible turorials and existing examples. I want to simulate spherical particles in a grinding mill using coarse grain approach. The mill stator is cylindrical and according to the user guide, the only way to initialize the solids is using rectangular box regions (or including a data file). When I create a box that covers the entire stator for seeding the solids, after the initialization several solid spheres are placed outside of the stator. On the other hand, if the box is inside the cylindrical stator, it works. However, in the second case the volume of the box is to small to allocate all required particles. I have repeated exactly the same as the given tutorials but the particles are still outside of the stator. Could you please give me advice or some tips for solving this situation?

Thank you

Anuhar

Hi @Nesme

Suggestions:

  1. Write a small script (Python suggested) to seed the particles yourself in the desired cylindrical arrangement (using data file).

  2. Fit multiple boxes in the cylinder, as indicated in the shaded areas:
    regions

Hi @cgw

thanks for your reply and suggestions. Of course I though already about the multiple boxes solution, however this is really laborious and not that elegant. Additionally, there will be still some uncovered regions using the boxes. Regarding the Python Script, I believe one has to consider the packing condition for seeding correctly the particles. Do you know whether there is already a script in the tutorials?

Thanks in advance
Regards

I don’t believe there is an example Python script in the tutorials. I did a quick search here on the forum and didn’t find an example either. Perhaps someone has a DEM seeding script to share.

A common way to pack particles is to seed them more loosely above the bed region, and then let gravity do the job. You can save particle_output.dat from one run and then rename that file and use it as particle_input.dat in the next run.

It would help if we knew a little more about the case. What packing density are you trying to achieve and what fraction of the height of the column is packed? Can you upload your project (“Submit bug report” will create ZIP file with all relevant inputs).

– Charles

hi Charles,

I attached a ZIP file for a very simple example; a cylinder as stator containing another concentric cylinder as rotor. I need to fill the region in the stator left by the rotor. Regarding the packing density I need to considered 0.6 as maximum packing in the 80 % of the stator volume. The diameter of the spheres should be around 0.0005 mm. It could be great if you could have a look of my files.

thanks
Anuhar
000_2023-03-14T182105.054737.zip (10.1 MB)

My advice remains: either drop the particles from above and let them settle, if there is enough room in the column above the stator to do this, otherwise you can write a script. You may not have to write it from scratch though.

Doing a search for “python sphere packing” turned up a lot of examples. Some of them can only pack into a box, but here’s some code https://docs.openmc.org/en/stable/pythonapi/generated/openmc.model.pack_spheres.html which will pack spheres into a more complex domain (including cylinder). This OpenMC package is already in conda-forge so it should be easy to install! Let me know if this works for you.

Hmm, that will pack into a cylinder but if I understand you correctly you want to pack the region between two cylinders.

Hi again - I just spoke with Jeff Dietiker and I realize that I misunderstood how seeding works. If you define a rectangular region for seeding, but that region intersects curved walls, the particles outside the wall should be removed. If you are seeing particles outside the stator region, it’s possible that you have set the surface normals incorrectly. It’s also possible that there is a bug in the seeding code. We will look into it.

Hi Charles, that is exactly what I wanted to mention, normally it should remove the particles outside the intersected domain, let´s say the domain after a boolean sustraction. I did again a very simple test (see pic). The container (stator) is again a cylinder and gravity is pointing in -y . The region for initializing the solids goes from xmin-xmax, zmin-zmax, ymin-ymax-0.4, you see the results. Additionally I have attached two figures for my real simulation in a mill before and after initializing the solids. In this case gravity is also in -y and the container is closed. I hope with these new figures you can have a better idea what I am trying to solve.
Best regards and until tomorrow (I am in Germany and is time to go bed)

Anuhar


Here your stator normals are pointing in the wrong direction. You want the normals to point towards the fluid region. It is good to always inspect the normals (check the “show normals” box). If they point in the wrong direction, check “Flip normals” for a given stl file.


Once I did this, particles are seeded in between the two cylinders:

1 Like