Modeling Reacting Flow in Porous Media

Andrew Griesmer October 15, 2014
Share this on Facebook Share this on Twitter Share this on Google+ Share this on LinkedIn

For anyone interested in modeling chemical reactions and/or flow through porous media, we have created a video to demonstrate how COMSOL Multiphysics simulation software handles such applications. Consider this your interactive tour of the model documentation for our porous reactor model.

A Video Tutorial for Modeling Reacting Flow in Porous Media

In the video (embedded a bit farther down the page), we detail what inputs are required and what results you can obtain in the porous reactor model. After looking at the default results, we provide some extra results and create a more efficient reactor.

In the model we used for this video, a chemical Species B flows through a main channel and a second Species A is injected into it through a connecting needle. Further down the channel, they pass through a porous catalyst bed, inducing a second-order irreversible chemical reaction that creates a third Species C. The reaction rate, RC, is defined by the equation: R_C=k*c_A*c_B. In this equation, c_A and c_B are the respective concentrations of species A and B, and k is the reaction rate factor that is defined by the Arrhenius equation as k=A_f*e^{-E/(R*T_{iso})}. A_f is the frequency factor, E is the activation energy, R is the universal gas constant, and T_{iso} is the temperature.

Model highlighting reacting flow in porous media.

First, we open up the Porous Reactor with Injection Needle model from the Model Library (also located in the Model Gallery, here) and take a look at the model’s set-up and default results. Additionally, we add results plots and investigate the effectiveness of the reactor. Noting that the injection needle is too close to the porous catalyst bed, we move the needle further away and re-run the model.

See for yourself what this looks like (or read the transcription posted below the video):


This porous reactor model demonstrates the process of heterogeneous catalysis, where two reactants, species A and species B, enter into the model through an injection tube and a main tube, respectively. They partially mix in the main channel before flowing through a porous catalyst bed, forming a third species, C. The default results show the velocity, the pressure, and the species distribution in this reactor, while more detailed data will also be shown.

In this demonstration, we will open the “Porous Reactor” model from the Model Library, located under the Chemical Reaction Engineering Module. We will then look at the governing equations that define the model, and modify different aspects such as the geometry and the results.

Let’s first take a look at the basic modeling steps to set up the model. A parameter has been created for the temperature throughout the model, and three variables have been created in the Variables table for the reaction rate, the frequency factor, and the activation energy, all to be used later in the model. The geometry used to build the model is available for inspection and modification by the user, and the materials are easily available for inspection. Nitrogen is the carrier gas in the model and its properties are used to define the flow and transport.

This model will consider the following transport phenomena properties. The free flow channel is modeled with the Navier-Stokes equations and the porous media domain includes the Brinkman equation, an extension of the Navier-Stokes equations. The mass transport properties are defined through diffusion and convection with chemical reaction kinetics. Finally, heat transfer is not involved in this reaction, so we assume isothermal conditions.

In this model, the Chemical Reaction Engineering Module simulates the flow inside the reactor using the physics interface “Reacting Flow in Porous Media,” which supports both free-flow and porous-media domains.

The Transport Properties node defines the fluid flow throughout the model. It uses the Navier-Stokes equations, in order to account for the flow properties, which requires inputs for the temperature, the absolute pressure, the density, and the dynamic viscosity, as well as inlet velocity profiles for each of the species. These can be created from the Physics tab in the ribbon.

The mass transport properties are also defined in the Transport Properties node through diffusion and convection. This requires inputs for the reaction rate variable, which we defined earlier in the Variables table as k, for the concentrations which are defined in the inflow nodes, and for the diffusivity which is defined in the Transport Properties node by the user.

The Porous Matrix Properties node defines the fluid flow throughout the bed, and uses the Brinkman equation, which is an extension of the Navier-Stokes Equation. The Brinkman equation includes the porosity and the permeability of the porous media, which are again, specified the user.

The Reactions node is used to account for the consumption of species A and B, and the production of species C. It does so using the reaction rate variable we defined earlier, and the concentrations of species A and species B.

Processes like this that include both fluid flow and mass transport are often best suited by using a hybridized mesh, which can utilize different elements. By selecting user controlled mesh and clicking through the sizes, we can visualize the different meshes that are used. In this model, a boundary layer mesh is used to resolve the field close to the walls, and a free tetrahedral mesh is used to solve the field elsewhere.

At this point, we will move onto the results. After the simulation has been run, COMSOL Multiphysics automatically produces three dimensional results of the velocity, the pressure drop in the reactor, and the concentration of species A, where the effect of the porous media is apparent. In this case, the velocity is better seen by adding a surface plot in order the change in the velocity over the reactor.

By duplicating the Concentration plot twice, we can easily view the concentrations of both species B and species C. By opening the Surface node, and changing the expression to c underscore B and clicking plot we can see the concentration of species B. We will then do the same for species C in the other concentration plot. As you can see, the concentration of species C in the porous media is not evenly distributed. This suggests that the injection needle is placed too close to the reacting bed, which doesn’t allow proper mixing of species A and species B before reaching the catalyst. To view this in a different way, we will select results, and add a 1D Plot Group. At this point, we will select line graph, and select the inlet of the porous media. We will now go to the expression and add the total rate expression for species C, and click plot. This cross-sectional plot shows the non-uniform rate with which species C is produced due to the uneven mixing of species A and B.

At this point, we can easily change the geometry of the model in order to move the needle further from the catalyst bed. By going into the geometry and setting the position of the injection needle from three millimeters to one millimeter along the x-axis and then clicking build all objects, you can see that the needle moves along the model. I will now click compute to re-run the study and fast-forward through the simulation. Once the simulation is finished being run, we can easily see that the concentration of species C is much more evenly distributed and we can click on the line graph to confirm this. As you can see, it has a much more evenly distributed rate across the bed reactor at which species C is produced.

Other related applications to this example include separators and reactors that make use of absorption and adsorption.


  1. EH Ooi December 1, 2015   6:41 pm

    The porosity considered in this example is 0.3, however, in many literature, it has been shown that the Brinkmann equation is valid only for highly porous materials. How does COMSOL justify the use of the Brinkmann equation here? In fact, many of the works out there that couples Navier-Stokes and Brinkmann do not consider this factor. Darcy would have been more suitable but coupling Darcy and NS in 3D cannot be done in COMSOL. Will COMSOL rectify or come up with something for this?

  2. Andrew Griesmer December 7, 2015   9:49 am

    Hi there, you can easily couple Navier-Stokes with Darcy in COMSOL Multiphysics in 3D (that’s been possible for a long time). To do so, add Navier-Stokes in the free domain and Darcy in the porous domain. For the boundary between the free and porous media, you set the pressure in Navier-Stokes and Darcy equal on both sides: p1 = p2 as the boundary condition for Darcy. For Navier-Stokes, you set equal velocities: u, v, w = k*grad(p2).

    If you have any other questions regarding this, please contact your COMSOL Support team:

Loading Comments...