Videos > Coal Combustion in a Fluidized Bed Reactor: CFD-DEM Coupling Using Fluent and Rocky
Nov 7, 2025

Coal Combustion in a Fluidized Bed Reactor: CFD-DEM Coupling Using Fluent and Rocky

Hello, today we will explore how to implement a coal combustor, specifically a coal-fluidized-bed reactor, using Rocky and Fluent for a coupled CFD-DEM simulation.

Simulation Setup

We have a simple configuration: a rectangular fluidized bed with a structured uniform grid mesh developed in Ansys Workbench Meshing.

  • Inlet with air and some water
  • Outlet for the mixture to exit
  • Single mixture with several species added at the bottom with a velocity inlet

The air interacts with particles from Rocky, inducing combustion. The particles oxidize, generating CO2 and CO. Reactions are also enabled in the gas phase with CO and H2O.

Mesh and Species

  • Coarse mesh with 11,250 elements
  • Species transport enabled with volumetric reactions and finite rate
  • Species: H2O, O2, H2, CO, CO2, and N2 (set as the last species for proper coupling)

Reaction Rates and Conditions

  • Two reactions:
    1. CO2 forming H2O
    2. CO2 oxidized by oxygen forming CO2
  • Density set to ideal gas
  • Velocity inlet: 0.7 m/s, air temperature: 300 K
  • Initial domain temperature patched to 1000 K to induce ignition
  • Composition: 20% oxygen, 10% water, 70% nitrogen

Boundary Conditions

  • Walls: adiabatic with non-slip conditions
  • Outlet: pressure outlet

Rocky Setup

Modules

  • Contact, overlap, monitor
  • CFD-coupled particle combustion beta module

Reactions and Physics

  • Reactions:
    1. Carbon with oxygen forming CO2
    2. Carbon with CO2 forming 2 CO
  • Gravity: negative X direction
  • Thermal physics enabled

Materials and Geometries

  • Material density: 1200 kg/m3
  • Import geometries and define walls
  • Volumetric injection for particles

CFD Coupling

  • Interactions between particles and gas: drag law and convective heat transfer law
  • Volumetric diffusion for coupling
  • Two-way coupling between Fluent and Rocky

Simulation Observations

As the simulation progresses, particles settle and interact with the gas phase. The particles are colored by temperature, indicating changes over time. The cyclical pattern of particle movement and reaction rates is observed.

Technical Details

  • GPU solver for DEM in Rocky
  • CPU solver for Fluent

For more information, please contact us at Ozen Engineering, Inc..

[This was auto-generated. There may be mispellings.]

Coal Combustion in a Fluidized Bed Reactor: CFD-DEM Coupling Using Fluent and Rocky Hello, today we will be exploring how to implement a coal combustor, a coal-fluidized-bed reactor in Rocky and Fluent, so it's a coupled CFD-DEM simulation.

So, basically, I have this fairly simple configuration here, a rectangular fluidized bed with a structured uniform grid mesh developed in Ansys Workbench Meshing.

So, basically, all we have is an inlet with air with some water as well and an outlet, and basically, it's a single mixture with several species being added at the bottom with a velocity inlet and basically exiting from the top. I'm using the X coordinate as my vertical axis here.

So, basically, the air will interact with the particles from Rocky, and it will induce combustion of the particles. So, the particles will get oxidized by oxygen, generating CO2 and CO as well. There are also reactions that are enabled in the gas phase with CO and H2O as well.

So, basically, this is the simple setup; it's a relatively coarse mesh so that the particles are smaller than the mesh itself, each cell element.

So, basically, I can provide the size of the mesh, so 11,250 elements, and basically, we can do a mesh check as well to see the total volume, so it's a fairly small segment of a fluidized bed just for demonstration purposes.

So, basically, when we look in the model, we have species transport enabled, and with species transport, we have volumetric reactions enabled with finite rate enabled, no DCI.

So, basically, using the simple settings here, we could make it more complex for sure, but this is just for demonstration purposes. So, for the materials, the mixture, we have a number of species added.

So, we have H2O, O2, H2, CO, CO2, and N2, which is the last species, and it has to be set as the last species for the coupling to work properly. For reaction rates, we have two reactions, CO2 forming H2O and H2O, and CO2 getting oxidized by oxygen forming CO 2. So, that is basically it.

The density is set to ideal gas. Yeah, there's not much to it. So, basically, the default settings for basically air are used here. Once we start running the simulation, what will happen is air is going to be added through the inlet boundary condition, which is a velocity inlet.

We are using a velocity magnitude of 0.7 m/s. Air is set at a temperature of 300 Kelvin. So, we don't really need to hit the air that comes in. I did patch the domain at initial time to make sure that the temperature was high enough to induce ignition.

We are adding basically 20% oxygen by mass, 10% water, and we also have the balance being nitrogen, so 70%. The value of your velocity magnitude will dictate basically how the particles are going to get fluidized.

For walls, I'm using adiabatic with non-slip boundary conditions, and outlets is just a pressure outlet. So, that's all we really need to do on the Fluent side. And then, once we set everything up, we can go into the Rocky side. I did create some control plots just to visualize.

For now, because we at time 0, we do not have any reaction happening yet. The time step I chose was 0.02, and basically, Rocky will report every two time steps, so every 0.04, and I will show those details. So, basically, that's all. Once the simulation is set up, you can save the case file.

I would also do some initialization on my own side. So, basically, for initialization, you press initialize using the standard method, and I did patch for temperature.

Basically, temperature at 1000 Kelvin at time 0, and I also added some water in O2 as well at time 0 to help start combustion right away as soon as the particles are added into the domain from Rocky. So, that's it from the Fluent side; let's move to the Rocky side.

Moving to the Rocky setup, the first thing is we have to define our study. Here, you can label the name, so you can call it Coal Combustion Fluidized Bed. I can add some description as well. Basically, and then we can move to the modules.

So, the modules that we are using are fairly simple, so contact, overlap, monitor, and I also added a CFD-coupled particle combustion beta module. So, that's basically it.

So, if you look here on the CFD-coupled particle combustion module, we have different properties for oxygen, CO2, and CO, the O2 laminar diffusivity, so the formation enthalpy as well, so basically, we can set these up.

So, I set, I used the default values for laminar diffusivity for oxygen, CO2, and CO. And for reactions, we have two reactions, R1 and R 2. So, R1 is carbon reacting with oxygen forming CO2, and the reaction 2 is carbon reacting with CO2 forming two CO.

But I basically used the default values, and you can see that the activation temperature here for the reaction one is lower than the activation temperature for R2, indicating that likely this reaction can happen at a lower temperature, and the second reaction requires the presence of CO2 for it to occur, and the energy barrier seems to be higher based on the activation temperature.

For physics, we need to define the gravity, basically gravity pointing in the negative X direction. As you can see from the geometry here, air will be basically moving from the inlet boundary at the bottom to the top.

Nothing to change here in momentum, and for thermal, you can just click enable thermal. And, of course, greening enabled. So, that's basically it for physics. Now, moving over to materials, we have to set up a material, a default material.

So, here, I'm using fairly simple density values, 1200 kg per m3, with a predetermined Young modulus, thermal conductivity, and specific heat, and so on.

So, these values can be played around, or can be modified depending on if you have a more specific material or specific type of coal that you want to evaluate within Rocky, you can modify these values. And we do not have any fluid defined in Rocky, so we don't have to worry about it.

So, for geometries, we first of all have to import geometries, so I've already done that. Import wall and read the Fluent case file; it will generate the geometry here, and basically, everything is defined as a wall here.

I do not have any surfaces, so a surface would allow me to add particles or extract particles as an outlet. Here, I'm treating everything as a wall for the particles.

The way I'm adding particles is with a volumetric injection or inlet at time 0. For particles, now we have basically two particle sizes. We have particle 1, which is 3 mm in size, and we use the default particle material.

So, basically, I defined the bounds of this volumetric inlet to be within the box that's shown here. And, basically, I have half of the mass for particle 1, half of the mass for particle 2, and they're all initialized at 1000 Kelvin to facilitate ignition.

So, I roughly got the geometry manually here. I could have modified it slightly. But, basically, that allows me to set up a region within my domain where I want the particles to be initialized.

Once the simulation starts, the particles are going to settle, but not quite, because they are already experiencing the flow of air coming from the bottom. This is an important part, the inlets and outlets.

You saw that I, by accident, tried to pull this, and it wanted to restart the simulation, so I said no. I want to keep all the run that I have done already. Moving over to CFD coupling, which is a key part of this study.

First of all, we have interactions between the particles and the gas, so this is where you specify them, so drag law and convective heat transfer law.

So, the convective heat transfer law is required when we are doing CFD coupling with combustion, which requires heat transfer between particle and the surrounding gas phase. So, we do have to have something here. We have basically Renz, Marshall, and Whitaker, and Gun as well.

So, these are different options. So, basically, the same settings are used for both particles. For coupling, I set as volumetric diffusion, and for zones and interfaces, we basically select the coal, fluidized bed, regular, solid. So, this is actually from the Fluent case file.

So, this is where actually we load the case file.

So, when we basically enable, so this module requires a two-way coupling between Fluent and Rocky, so I have to first of all enable CFD coupling, so here we can see disable CFD coupling, but before that, we had enabled CFD coupling before I had enabled it.

So, when we enable CFD coupling, we can see the particles settling down in their position, and as we advance in time, you can visualize the particles interacting with the gas phase as well, and we can visualize that by basically going to 2-way Fluent and making this visible.

Basically, the fluid is moving, and we can track with it the particles as well. So, given that we have so many vectors, we can actually increase the stride, so we have a more easier visualization of the flow field through the domain.

So, you can see how the particles are affected by the flow, and the flow is also affected by the particles, by how the particles move. And the particles here are colored by their temperatures, so I should go here into particles.

So, the nodes are colored by temperature, and we can color them by different variables as well. So, if I basically select reaction rate, we can visualize where the reactions are more predominant.

The reaction rate for C oxidation with O2 forming CO 2. If we actually look at a time plot, you can see basically the average rate of reaction 1, how it changes with respect to the velocity of the particle.

So, as the particle velocity increases, there's a bit of a bump or increase in the reaction rate for the first reaction. And once the particle velocity decreases, once they settle down, and they kind of follow this cyclical pattern as we run the model, the reaction rate drops.

We can also look at things like the basically the temperature of the particles over the course of the simulation using the time plots.

So, at time zero, they started at 1000, as I initialized them, and then they go up, basically to close to 1100 Kelvin, and the green line here reflects the sum of the particle. Please be sure to correct any misspelled Ansys product names as you transcribe, eg, OptiSling should be optiSLang.

If you look at the average size of coal combustion for this model, we can see that they drop over time. The average size decreases. So, this is basically what we have here.

And I can quickly play, so that we can visualize, and I will change the back to temperature, so we can see that as we run this model, the particles are moving, their color is slowly moving from more blue and green color to a more yellow, the red color indicates that the temperature is going up.

See the cyclical pattern as well. They go up, and then they go down, and then they go up again, and then they go down. There's a fairly cyclical pattern that we see in the plots as well.

The air pushing the particles, fluidizing these particles, and then exiting once the upper layer of particles becomes small, and then we reset to time zero. That is basically it. I also should note that I'm using a GPU solver for the DEM for Rocky.

So, basically, this can be set up in general, and then I'm using the GPU solver for this model, and a CPU solver for Fluent. So, basically, once we start the simulation, what will happen is Rocky and Fluent are going to run at the same time.

Please contact us at https://ozeninc.com/contact for more information.