Implementation of a particle-level model

Dear support,

I am currently integrating a particle-level model into MFiX. The model considers the solid particles (could be implemented in PIC or CGP) as composed by several internal mesh nodes. In each of them, the convection, diffussion and reactions are solved, allowing then for a Progressive Conversion Model instead of the usual Uniform Conversion Model.

For the model to run, it requires, as boundaries, the temperature, velocity and composition of the surrounding gas. As an output, each of the reacting particles will affect the energy balance of their corresponding cell, as well as it will provide a source of the gas species that leave the particles.

So far, the model has been integrated into MFiX and it runs with an independent time step. I have modified the convection coefficient of the reacting particles to that of Agarwal (it is more appropriate according to the literature). The model is able to read the conditions of the corresponding cell, performing the code and shrinking the particles and changing their density accordingly.

My problem comes now when integrating the chemistry in MFiX. I would like to use the already implemented chemical reactions in MFiX for the homogeneous reactions of the gas phase. However, for the heterogeneous reactions, I would like just to implement the particle-level chemistry (already written in the code) so that MFiX just “sees” it as a source of specific gas species and an energy source resorting from the energy balance due to the reactions occurring in each of the particles.

I am not sure if this can be easily implemented. I was thinking about only implementing the chemistry of the gas phase and modifying the code for the species and energy, but I am not sure how/where it could be done, and I would like to know if there is some piece of advice from your side.

Support for this is highly appreciated, as it could open a lot of new options. In fact, the code is provided with many options to activate and deactivate the chemistry, and it could serve, for example, to easily calculate internal particle conduction, as I have seen in a previous topic.

I have then some questions on how to implement DMP, but I may ask them in the future once the model is running in series.

I am sorry I cannot share the code, but it is currently under development. If more details are needed please do not hesitate to contact me.

Thank you and best regards,
Eduardo

Hi Eduardo,

In mfix, we now have a dem sub-model called glued sphere DEM (GSP), so a gsp particle consists of several sub component spheres. those component spheres have the specific connectivity table. So a gsp particle will have internal temperature distribution and species composition due to chemical flow. It currently use the constant volume based chemical model, but we already have the constant density model in hand.

So this looks very much like what you want to do, might be you can get some ideas from this GSP model. GSP treats chemistry in component spheres level (maybe like your internal mesh nodes).

1 Like

Hi,

Thank you for your answer! I have been checking and I am not able to find the implementation of the chemistry in the GSP sub-model. Could you point me where it is done?

I am struggling a bit, but for the time being I am implementing everything manually by setting the values of lRgc(Species) and lRgp(Species) for each of the gas species according to the global MASS_GAS(Species) consumption or production that I am getting from the particle-level model. Then, I will implement the ENTHALPY_BOUNDARY values I am getting from the particle-level model to the main code through lHoRg.

From the code I understand that lRgc and lRgp are in kg/s. lHoRg is in kJ/s, right?

I am not sure I have to modify the lRphase vector or just set is as zero. Same for the interphase enthalpy transfer RxH and any other solid-gas transfers. For MFiX, the solid particles are just manually decreased of size and present a given temperature that I reassign every fluid time step.

Thank you again for your answer,

Eduardo

Edcanop,

For gsp, it’s chemical reaction are based on component spheres, so a component sphere is basically a normal dem particle. But each components will have conduction between each other. so no special treatment is needed and only a small block of code in des_reaction_model.f to recompute the variable density for GSP exclusively. Maybe this is not the case you want to do.

I think units for IRgc, IRgp and lHoRg are right.

I really don’t have the answer for lRPhase and RxH in your implementation since I don’t have a clear picture of your work. You might want to do a trial test.

Please let me know if I understand your goal properly, simply saying that in your particle level model, it can have heterogeneous reactions within the particle, but as for interphase effect, you want to collect the total energy and total gas species production/consumption of a specific particle, and bring those to the gas cell where this particle locates to update the gas phase?

Hello,

Thank you for your answer. The part of GSP is useful to check how things are implemented, but my case is slightly different.

Yes, you understood my goal perfectly. In summary, in each time-step (fluid time step to simplify things) my code will do the following:

  • Read the composition of the gas phase and the temperature of the cell in which the particle is.
  • Read the status of the reacting particle from the previous time-step.
  • Perform all the necessary heteogeneous reactions, convection, diffussion, etc. inside the particle. This is done using an iterative method with a different time-step to that of MFiX.
  • Reduce the particle diameter (DES_RADIUS) and update the particle temperature (DES_T_S).
  • Save the status of the reacting particle.
  • Collect the outputs for MFiX: total gas species production/consumption (in kg/s for each species) and total energy (in J/s).
  • Use these outputs as sources for the next fluid step at the fluid cell where the particle is located.

I have implemented the last step using lRgc, lRgp and lHoR, setting lRPhase and RxH as zero and the code seems to run, but I now need to set A LOT of intermediate print points to see if things are correctly calculated.

Thank you again for answer and for the follow up. Any piece of advice or correction on the implementation is much appreciated. Does the workflow above seem logical for you?
There are still a lot of open points that I may be asking in the following days/weeks.

Kind regards,
Eduardo

yeah, that looks logical, and it shares many aspects in common with the GSP model.
Is your particle still a sphere but with internal mesh? or you can model non spherical particles?
It seems like you can’t just simply set IRPhase and RxH to zero, as I remember, they are required by source term as well. otherwise you might not get the right gas species mass. Not sure about that, you need to check the results.