How to use shrinking particle model?

Hello,developers!
I want to implement a process in a fluidized bed where the radius of the fuel particles gradually decreases as the reaction progresses. How do I set it up?
Looking forward to any possible answer, thank you!

If reactions result in mass transfer from the solids phase (particles) to the fluid phase, the particle radius should decrease automatically, you don’t have to do anything special to enable this.

Hello,developers!
Can you help me look at this case?I have included a heterogeneous reaction of biomass pyrolysis, but the diameter of the biomass pellets does not decrease, do I need to set up a pellet reduction model somewhere?
Looking forward to any possible answer, thank you!
biomass pyrolysis.mfx (25.6 KB)
usr_rates.f (5.6 KB)
usr_rates_des(1).f (3.3 KB)

Did you upload the correct files? Why is the file called usr_rates_des(1).f ?

It’s the correct file, it’s just that there may be duplicates in the filename and under the save path, hence the extra (1).
usr_rates_des(1).f (3.3 KB)

I assume you are expecting the pyrolysis reaction will decrease the particle sizes. I ran your case with some monitors enabled and I see that the reaction rates are all zero. If you get the reactions to proceed, you should see the particles shrink. I am not sure why the reaction rate is zero but it might be because you have not defined a heat of reaction (Hf/R) for the “Volatile” component which is the sole reactant in the pyrolysis reaction

As always, write statements are invaluable.

In usr_rates_des.f I added

! Pyrolysis
    ReactantMassFraction = DES_X_s(NP,VOLATILE)
    IF(ReactantMassFraction .GT. residuleMass) THEN
        DES_RATES(Pyrolysis) = 5.d6*exp(-1.2d8/(8314.d0*Tp))*MW_s(1,VOLATILE)
        write(*,*) "Case 1", DES_RATES(Pyrolysis)
    ELSE
        DES_RATES(Pyrolysis)=0
        write(*,*) "Case 2"
     ENDIF
     IF(nRR >= Pyrolysis) ReactionRates(IJK,Pyrolysis) = DES_RATES(Pyrolysis)

All I see in the output is “Case 2”.

Aha, I think I see the problem!

      ! skip sands
      if(pM==2) then
         DES_RATES(:) = 0.d0
         return
      endif

Note that sand is phase 1, Biomass is phase 2. So you are not skipping sands, you are skipping Biomass.

It would be nice if species.inc contained symbolic constants for the phase names as well as the species name, then you could write if (pm != biomass). I’ll add that if it’s not too difficult.


Also please review your initial and boundary conditions. The biomass particles entering from the top have zero mass fraction for the VOLATILE component.

Thank you!I have set the biomass particles entering from the top have one mass fraction for the VOLATILE component.

And changed the code here,reaction heat of pyrolysis of volatile components is also set up,but the biomass particle size remains unreduced. Here is my model and udf, can you please look at it again? Thank you very much!
biomass pyrolysis.mfx (25.6 KB)
usr_rates.f (5.6 KB)
usr_rates_des.f (3.3 KB)

Did you use a monitor to check the reaction rate and make sure the reaction is actually happening?

How to use a monitor to check the reaction rate?

Please see the relevant section in the MFiX documentation
If you still have questions after studying the user manual, you may ask here.

Hello,developers!
I use a monitor to check the reaction rate,but the monitor shows only these six gaseous components, no solid phase components, is it a proof that the heterogeneous reaction is not happening?
Here’s my run file,are there some problems?And how do I make sure the heterogeneous reaction happens?
Looking forward to any possible answer, thank you!


OCAC CH4.mfx (23.8 KB)
usr_rates.f (4.0 KB)
usr_rates_des.f (6.6 KB)

And I don’t know why R2 is always unchecked when the monitor monitors the reaction rate, and there’s no csv file of the reaction rate in the monitor results.

It looks like you have found a bug in the MFiX GUI. Thanks for reporting this. We will issue a fix shortly.

So how can I be sure that the heterogeneous reaction is going on? My calculations still don’t show any reduction in particle diameter, and I found that the particle size of the tutorial example silane_pyrolysis_3d did not shrink either,I don’t know if it’s a problem with the code I wrote or a bug in the software,can you help me?

Hi @wangjinjing

I wanted to let you know that the issue you reported with checking the reaction rate has been fixed in MFiX version 23.4.1.

I tried running your case. While the “probe_reactions” monitor, defined as a point value, shows 0 for reaction rate 2, when I defined a different monitor, taking the maximum value over the entire domain, I got numbers like this:

# Run type: NEW
# Monitor type: Maximum over region, Volume =   0.13959536E-02
# "Time","RRates_R1","RRates_R2" 
    0.0000000    ,    0.0000000    ,    0.0000000    
   0.10197766E-03,   0.71313741E-09,   0.14331127E-10
   0.20151742E-03,   0.81274060E-09,   0.23303276E-10
   0.31269405E-03,   0.85600748E-09,   0.27322170E-10

so it seems the reaction is happening, just not at the point where you defined your probe

1 Like

Okay,thanks! Since reaction 2 is happening, why isn’t the diameter of the particles shrinking? Or do I need to write my own code is the particle diameter reduced?

The diameter of the particles should be decreasing. Note that the reaction rate is very small so perhaps the diameter change is not noticable?