I am planning to simulate a fluidized bed with a perforated distributor plate. I do appreciate if you can advise me what steps I have to follow to define the right geometry, region, and boundary condition for this purpose.
Enclosed you can find an example file that I was working on that to make such a simulation. I used Union Boolean operation to attach some orifices to the bottom of the main cylinder. I was not able to place “Cylinder4” and “Cylinder 5” at Z center = 0.025 m and the simulation file was crashing whenever I adjusted the Z center values of these cylinders into 0.025 m. Is this normal? If yes, what is the reason behind this?
I also tried to place the bottom plane of the main cylinder/column slightly above the X-Z plane, which was crossing the small cylinders that were supposed to act as orifices. Is there any minimum distance defined in MFiX that the bottom plane of the main cylinder/column should be away from the X-Z plane to be considered as a plane located at a different height as that of X-Z plane?
For Wall in the region tab, I followed this: check Select Facets, Filter facets based on normal, invert selection. Is it fine?
For Mass Inflow boundary, I adjusted the Y-axial velocity at 1.5 m/s (Note that I would like to adjust the superficial gas velocity in the main column, and not in each orifice, at a certain value, e.g., 1.5 m/s). Could you please inform me with this definition, which parameter will be equal to 1.5 m/s (velocity in each orifice, velocity of ensemble cross-sectional areas of orifices as 1.5 m/s from which the gas velocity in each orifice can be calculated, …)?
Upon doing such simulations with one or more orifices or without them at the bottom of the bed, which means the gas was evenly distributed throughout the bed cross-section, I feel that I was unable of observing a tangible difference in the solid movement behavior. Hence, I am afraid that the above strategy is not an appropriate one for simulating a bed with perforated distributor plate and your help in solving this challenge will be highly appreciated.
The booleans of primitive shapes are not very robust (we use VTK behind the scene to do the booleans, which seem to fail often). I suggest either using a CAD package to make the stl file or use the implicit functions (these booleans are more robust).
The other thing I noticed is that your fluid mesh (blue lines) is way to coarse to ever resolve the flow through orifices and the jets inside the bed, hence:
I got the orifices to mesh and the model to run. Test_FB_47.mfx (20.3 KB)
The challange with doing this is that you have very high velocites through small cells, which will make the model run slow. On my machine, mpi with 4 ranks, it will take ~24 hrs to make it out to 5 seconds. The other thing is that the fluid cell size can’t be reduce much more to resolve the jets because it will be less than the particle size. Regardless, I was surprised at the results:
Thanks a lot for your help and tracking. Excelent results.
I did try to make the same geometry using implicit shapes of MFiX. However, when I did Union Boolean operation between the main cylinder/column and a small cylinder underneath that to represent an orifice, the small cylinder was merged into the main column (& could not be seen in the geometry window anymore) and the bottom part of the main column became unpleasantly convex. When I continued with this, I could hardly define a desirable wall in the region tab and eventually was not able to run the simulation due to errors.
Did you create your stl file (similar to my geometry) using CAD? I have not done such stl file importing into MFiX, yet. Is there any tutorial that I can check and learn about its implementation requirement/procedure?
Meanwhile, I redid the simulation using primitive shapes with the desired geometry while decreased the mesh size into 1 mm in every direction (adopted particles were 800 µm in size). This means that each compartment contained approximately one particle. If I recall well, according to a communication that I had with Jeff earlier, he was recommending that a CFD mesh containing 4-5 particles is a decent size for a CFD-DEM simulation. According to your recommendation, it seems that we should drop it to smaller sizes if we need to capture some fine phenomena in the bed. Is this statement rational?
When employing the primitive shapes, I did not encounter to the same issue as I explained above for implicit shapes. However, the challenge that I mentioned in my first E-mail regarding the Union Boolean operation of primitive shapes is still present although it is not crucial. To make the CFD-DEM simulation running with the mesh size of 1 mm, I had to decrease the CFD time step into 1.0e-05. I could run the simulation with a CFD time step of 1.0e-03 when the mesh was larger (~ 5 mm). The new simulation is currently running and I will keep an eye on that although it is a lot slower.
Was the strategy that I explained in my first E-mail (create a tiny gap between the bottom plane of the main column and the X-Z plane, which crosses the cylinders representing the orifices) a correct one for simulating a bed with a perforated distributor plate?
Once I copied your revised file in the corresponding folder and wanted to load it, I had the following error box: “Failed to load Test_FB_47.mfix: KeyError: ‘type’” and was not able to load it. I am using MFiX version 18.1.5. In your opinion, what could the reason behind this error?
I made the geometry in the GUI using the implicit functions. To import an STL file, just go to the geometry pane:
This is the usually the recomondation, however you will never resolve the jets at this grid size. I’ll let @wfullmer comment on the numerics
It would probably be better to not mesh the orifices and simply place BCs at single cells approximately at the location of the orifices. This would avoid high velocity gas going through small cells.
I am using 19.1. We changed how the parameters are stored in the *.mfx files, hence the KeyError.
I aim for dx/dp ~ 2 in cfd-dem. if you really want to resolve these jets you will need dx < dp and likely dx << dp meaning you will need a mesh-independent transfer kernel, the most convenient of which (and the only one implemented in mfix) is the gaussian kernel (via solution of a diffusion equation).
we have similar issues modeling our horizontal jets which has an orifice diameter smaller than the particle size. i’ve wanted to model that, or something similar, with a very fine mesh and diffusion filtering to see how that compares to point source modeling but idk that’s maybe not consistent with the “spirit” of cfd-dem… if i really want to know what goes on in that jet-bed interaction that’s maybe a (incredibly computationally expensive) job for pr-dns. point sources on a typical cfd-dem grid (dx/dp ~ 2) does a decent job at predicting the behavior. i would personally recommend a similar thing here, just specify the jets as 5 cells at the inflow plane in a “typical” cfd-dem fashion in favor of high resolution and a mesh-independent kernel. at least until you find some good reason for needing to resolve the jets. my 2c anyway
I tried making the geometry using implicit shapes in MFiX (version 18.1.5) for a few times and always had the same problem as I explained above. Perhaps this was a big in GUI that you fixed it in the updated version. Meanwhile, it seems that the simulation that I made employing the primitive shapes is running OK. I selected an arbitrary value for the gas velocity as the main purpose was to see whether or not I can simulate a bed with a perforated plate in MFiX. I will adjust the geometry and other operating parameters at a later step once I know how to do this simulation.
“It would probably be better to not mesh the orifices and simply place BCs at single cells approximately at the location of the orifices.”
This goes back to one of my previous questions, i.e., was the strategy that I explained in my first E-mail (create a tiny gap between the bottom plane of the main column and the X-Z plane, which crosses the cylinders representing the orifices) a correct one for simulating a bed with a perforated distributor plate?
Could the following explain the implementation procedure of your recommendation?
(i) Adjust the axial position of the geometry in the meshing box of GUI in a way that the X-Z plane is at or right above the distributor plate. (ii) In the region tab, define some bottom inlets equal to the number of orifices. For each bottom inlet, adjust its X, Y, and Z intervals to cover the corresponding orifice (Note that in this way, we will have a cubical gas inlet rather than a circular one. This should not be a big concern for a very small orifice size). (iii) In the BCs tab, define identical volumetric flow rates or velocities for number of bottom inlets that we have.
If we follow this procedure, we would not need to define the orifices in the geometry and deal with the challenge of Union Boolean operation. Is that right?
I tried to implement the last recommendation (if I understood it correctly as explained above) in the enclosed file. I decreased the mesh size to about two times the particle size and reduced the superficial gas velocity of the bed into 0.5 m/s (evenly distributing the gas flow between the orifices). Once ruuning the simulation, I encountered to the following error: “Invalid location specified for BC 2.” and the same error for BC 3 - BC 6. I had these errors when the axial location of bottom inlets were either at the same level as the X-Z plane, i.e., ymin, or slightly higher than that.
I do appreciate if you can check the file and inform me about the procedure to fix it.
looks like you’re missing the NSW at the bottom of the bed. also, since you are overwriting a full domain BC (the nsw) with the five MI’s, you will need to make the NSW a lower ID value than the five MI’s
Thanks for your reply. I did the followings and still ecounter to the same error.
Adjust the Y levels of five small sqaures representing the orifices at values higher than “ymin”, even up to 1.00e-2 m. (can this satisfy “you will need to make the NSW a lower ID value than the five MI’s”? Otherwise, I do appreciare if you can elaborate what you mean by “a lower ID value”.)
Add a surface at Y = ymin in the region section and consiser NSW in the boundary conditions tab. I had errors with and without that.
Concerning “you’re missing the NSW at the bottom of the bed”, when defining Walls in the region tab, I did the following:
Insert Wall Box from the top right menu, check Select Facets, Filter facets based on normal, and Invert Selection.
Shouldn’t we expect that the area at the bottom of the bed excluding the area related to the orifices be considered as Wall by doing this?
i’m ashamed to admit that i still haven’t adopted to using the GUI, so setting conditions you’ll have to ask someone else…but i can see from your reply that i have confused you. all six of the inlet BC’s should be at the inlet plane, ymin i guess. but their ordering needs to have the NSW listed before the MI’s. If I remember correctly, your file had the STL BC listed first, followed by the five MIs and ending with the PO. I just wanted to make sure your NSW didn’t get appended below that list, it needs to be before all five MIs. i would guess how they are ordered in the plane dictates how they are written to the input file, but idk, maybe @jeff.dietiker could confirm
Thanks for your reply. This is to confirm that I defined ther regions and boundary conditions as you recommended:
“all six of the inlet BC’s should be at the inlet plane, ymin i guess. but their ordering needs to have the NSW listed before the MI’s.”
You can reorder the BCs in the BC pane by selecting a BC and using the up/down arrow to reorder. Please attach a schematic of what you are trying to model (include geometry and Boundary conditions), and I will take a look. Not sure if you are trying to model the plenum below the distributor.
Thanks for your reply. I checked your recommendation and still have that issue. Attached you can find a copy of relevant MFiX file. There is currently no interest in simulating the plenum. I also tried to have the top and bottom of the bed slightly sticking out of the meshing box (about 1 mm) and had no success with that.
Your inlet regions are 0.5 mm wide, while your mesh is 1.67 mm wide in all directions, so you cannot resolve the inlets at this grid resolution. Since your particle diameter is 0.8 mm and the mesh size needs to be larger than the particle diameter, you won’t be able to refine the mesh to a point where you can resolve the 0.5 mm inlets. Would it be acceptable to increase the inlet size (decrease velocity to maintain flow rate)?
Thank you for your tracking. Yes, you were right. Once I decreased the mesh size to 1.00 mm (or 0.833 mm) wide in all directions and increased the orifice sizes to 1.00 mm, the simulation was properly running without any errors. Howerver, I had the same error, as explained earlier, once I increased the mesh size to 1.67 mm wide in all directions with square orifices of 1.00 mm in size. If we can make the simulation running with these tricks (decrease the CFD mesh size to be slightly higher than the particle size and increase the orifice size slightly above the particle and CFD mesh sizes), a main concern is that to what extent it will be acceptable to have a CFD cell in the range of a particle size. Could you please comment on this?
As you know, the orifice size at a fixed mass flow of gas defines the jet behavior, which can then affect the particle behavior at the bottom of the bed. If we assume that I cannot change the geometry and gas flowrate, can I conclude from your explanation that we cannot simulate such a system (size of orifices samller than the particle size) with the strategy that I concluded from Justin’s recommendation in MFiX?
I’d like to mention that using a strategy that I explained in my first E-mail and Justin illustrated an example of corresponding configuration is his reply to that E-mail, I could have the simulation of a bed with a perforated plate having circualr orifices of 0.5 mm in size running while the CFD mesh was in the order of 1.0 mm in size. I will be happy to read your comments about this if you have any.