Pressure Drop Disparity in Fluidized Beds Between DEM and Superquadric Solvers

Hello Everyone,

I’ve set up 2 nearly identical case for a fluidized bed of spherical particles one using the superquadric solver the other using the DEM solver. I’m using the Di Felice Ganser drag model (since it is available for both solvers) but notice a very large difference in predicted pressure drop between the two models. The DEM solvers aligns with the experimental data at ~425Pa pressure drop, while the superquadric predicts a pressure drop of ~115Pa. Note dP is measured from the bottom of the column to 0.31m, I’ve included the pressure drop files under the name “PressureTop” and “PressureBottom” in both cases. I know it is atypical to use the superquadric solver for a spherical particle but this problem arose because I was getting an unexpectedly low pressure drop in a similar system of cylindrical particles. I figured going back to spherical particles would be a good starting point for troubleshooting. Does anyone else have experience with this? Am I making an error when setting up my superquadric case?

SphereDEMDFG_U_14.zip (5.1 MB)

SphereSQPDFG_U_14.zip (8.4 MB)

An update incase anyone else has had similar issues. After looking into things further I believe the wrong density variable is being passed to DRAG_SQP_DiFelice_Ganser, when it is called from drag_gp_des.f (line 154). It appears that DRAG_SQP_DiFelice_Ganser is expecting ROg (gas density) but instead what is passed is ROPg (gas density*epsilon). For reference I am using MFiX 25.2.1. I have used the cases included in my previous post and adjusted for this additional void fraction multiplier and I see the SQP and DEM solver align on both pressure drop and drag coefficient.

1 Like

@kevan Thanks for investigating this. Clearly SQP and DEM should give the same results for spherical particles. We will look into your findings and if we confirm this we will fix this in the next MFiX release.

– Charles

Thanks for putting in the extra time to track down the source of the problem.

It seems there is a similar error a few lines down - comparing the call site with the subroutine definition (and the comments in the subroutine) it’s clear that ROg and not ROPg is expected. The calls to these subroutines supply the correct arguments when they are called from drag_gs.f

This will be fixed in the upcoming 26.1 release. We appreciate such detailed error reports from our users!

– Charles

des/drag_gp_des.f:
CALL DRAG_SQP_DIFELICE_GANSER(NP,DgA,EPgtmp,Mu,ROPg,VREL,DPM, FLUID_VEL(1), FLUID_VEL(2), FLUID_VEL(3))

des/sq_drag.f:
SUBROUTINE DRAG_SQP_DiFelice_Ganser(NP,lDgA,EPg,Mug,ROg,VREL, DPM, lUg, lVg, lWg)
des/drag_gp_des.f:
CALL DRAG_SQP_DIFELICE_Holzer_Sommerfeld(NP,DgA,EPgtmp,Mu,ROPg,& VREL,DPM,FLUID_VEL(1), FLUID_VEL(2), FLUID_VEL(3))

des/sq_drag.f: 
SUBROUTINE DRAG_SQP_DiFelice_Holzer_Sommerfeld(NP,lDgA,EPg,Mug,ROg,VREL, DPM, lUg, lVg, lWg)