The type of packing in fixed beds affects the local fluid, heat, and mass transport,[37] and, thus, influences macroscopic variables such as dispersion coefficients and permeability. Therefore, the porous-medium model is used to derive the dispersion coefficients for a randomly packed bed, as well as for a bed with the same porosity and size distribution of spheres, but that is packed regularly (hexagonal close-packed). Most of the simulations that have been performed to study the flow and derive the dispersion coefficients in fixed beds of spheres use a fixed *ε*. However, the values of *ε* for a real packing of spheres are typically between 0.36–0.42^{37} validating a study of the effects of *ε* in this range on the dispersion coefficients. The methodology used in this article to make a random packing of spheres, discretize the system of spheres, find the flow pattern in the packed-bed model and derive dispersion coefficients is robust and easy to implement.

#### Packing procedure

In general, the distribution of particles in natural systems has a random character. The porosity in such systems of equal-sized spherical particles varies typically from 36% to 42%. This is far from the minimum possible porosity of for the densest periodic packing. Hence, there is a structural difference between these two packing, implying that the transfer from a periodic system to a random one is not straightforward.[38] One way to get a random close-packing structure is to generate a dilute nonoverlapping configuration. Then, an optimization procedure is launched, where the particles are subjected to a random motion and the overall distance between the particles is minimized.[39] Another way is to use a raining process, in which new particles are inserted from a random position at the top of a predefined volume and are subsequently allowed to fall into local minima.[20, 40] This, however, does not give low enough porosities. A third alternative is to use the Jodrey–Tory algorithm that is based on “repulsion” of overlapping spheres with a gradual reduction of their radii.[41, 42] A fourth route is the Lubachevsky–Stillinger algorithm, where molecular dynamics are used on nonoverlapping spheres, each having a radius that is allowed to gradually increase.[43] In the current case, the packing procedure should be able to handle fixed-sized systems with very low random porosities without any usage of non-natural forces. To meet these requirements, an initial random distribution of overlapping particles is generated. The quantity of particles corresponds to the intended porosity of nonoverlapping particles. Then, the system is virtually shaken until none of the particles overlap the others. The shaking of the system is made by a kind of Brownian motion, whereby particles can jump in a random direction at a random but small length in each step.[44] However, the jumps that increase overlapping of the particles are set to be less frequent, *W*_{+}, compared to jumps that decrease or do not change overlapping, *W*_{0−}, according to a piecewise simulated annealing technique: , where *i* is index of iteration, frac denotes fractional part, *i*_{0} and *i*_{1} are parameters that are chosen to be around 10^{4}. It is clear that the shaking time increases as a function of final particle fraction of the system. The shaking is stopped as soon as a nonoverlapping configuration of particles is reached resulting in a practically consolidated porous media. The default porosity in the current study is 40%, which requires typically less than 10^{4} jumps for each particle. However, as the porosity decreases the required number of jumps increases considerably. The minimum bulk porosity is, as previously stated, 36% for uniform-sized spheres.[37] In this article, the lowest porosity studied for equal-sized particles is 36.5%. It is possible to obtain lower porosities for random systems for different-sized particles, as the smaller particles can partially fill the spaces between larger particles.

As previously mentioned two types of packing were used in this study; random and perturbed regular hexagonal close packing (hcp). Note that the perturbations to regular packing are introduced because otherwise the Delaunay tessellation described in the next section would degenerate, that is, there are several ways to construct the Delaunay tessellation upon the same Delaunay criterion. Moreover, the current method is not well suited for completely regular packing as higher flow rate effects can be important already at smaller Pe_{m}. To exemplify the difference between the two packing, the correlation functions around two and three close-spaced particles for these systems are plotted in Figure 1, that is, porosity as function from the distance from the selected particles. White represents zero porosity, that is, there is certainly a particle at this relative position, whereas black represents relative position where no particle is present. For the random system, the oscillations of average statistical porosity at a given distance from the reference particles quickly cease and become the average porosity of the system; see Figures 1a, b. Nevertheless, there are positions close to the reference particles where there is a high probability of having a particle. In the case of perturbed regular packed system, however, the oscillations of average statistical porosity are substantial even at a rather large distance from the reference particles, as clearly seen in Figures 1c, d.

#### Voronoi discretization of the random system

The complete system has to be divided into smaller parts to build a discrete numerical scheme. Using Voronoi diagrams, the system of particles is divided into cells that each contain one particle; see Figure 2. The general methodology is based on the fast Bowyer-Watson algorithm as in Thompson[45] but with another initial tessellation. Voronoi diagrams are mutually related to Delaunay tessellation. Following Thompson,[45] the primary system is surrounded by 26 equal systems or domains to deal with the periodic boundary conditions for the Delaunay tessellation. A tetrahedron that connects the four closest particles can be such that the particles belong to different domains at the boundary of the system. Therefore, the particles in the tetrahedron have a position in the primary system as well as in the domain that they belong to. As the tetrahedrons are the same in each domain, only tetrahedrons with the lowest index particle in the primary system need to be considered. Tessellation in this study starts from just one particle in the primary domain with six tetrahedrons, whereas Thompson[45] used eight initial particles in the primary domain near the eight corners of the system to get an initial tessellation with 40 tetrahedrons. A parallelepiped may also be divided into five tetrahedrons, but this would destroy the periodicity, as each face of the tetrahedron should contact the same face of another tetrahedron either from the primary domain or neighboring domain. As the system in this study can have very different dimensions in different directions, tetrahedrons at the initial stage of the algorithm are nearly degenerated and may introduce numerical instabilities. If particles that are well inside an existing base tetrahedron are accounted for, then even more degenerate tetrahedrons could be created. It is therefore better to first select the particles that cross or are very close to the existing long faces of Delaunay tetrahedrons. Then, both facing tetrahedrons will definitely be included in the core according to the Delaunay criterion and the new tetrahedrons will be less degenerate. Unlike Thompson,[45] the visibility test and lost vertex-test of the core is performed at each insertion of the new tetrahedron,[46] as opposed to afterward. Notice that the discretization of Voronoi cells is strictly defined by the mutual Delaunay tessellation and no grid refinement study can be performed at this stage.

#### Derivation of dual stream function

To simulate a tracer column experiment, to obtain the resulting effluent curves and dispersion coefficients, the flow field must be known for the complete system, for a certain configuration of particles. As the liquid is considered to be incompressible, the stream function and vorticity approach has certain benefits, such as automatic conservation of the continuity equation. The stream function, **ψ**, and the vorticity, **ω,** are vectors with three components, making the derivation of the flow field rather difficult but still possible to carry out. The stream function **ψ** is not strictly defined, as there are a number of possibilities to obtain the same velocity distribution

- (1)

In analogy with the magnetic vector potential, the following assumption is hypothetically useful

- (2)

as it makes it possible to express **ω** as

- (3)

where a vector component of **ω** is related only to the same vector component of **ψ** in Cartesian coordinates. The coupling of the vector components is then realized through the constraint (2). For low Reynolds numbers (Re), the energy dissipation rate tends to decrease to a minimum[27, 28] (see Appendix A). This can be expressed in the following manner

- (4)

where *µ* is the fluid dynamic viscosity and the integral is taken over the total volume of the system. Assume a large porous system in the form of a rectangular parallelepiped according to

- (5)

with a superficial velocity *U* directed along the *z* axis. Proper boundary conditions should be specified for **ψ** that yield the superficial velocity *U*, agreeing with the periodic boundary conditions for velocity, and fulfill constraint (2). One possibility is to set the following conditions

- (6)

Then, the linear system of equations with respect to **ψ** can be solved independently as previously done in the 2-D case.[32] Evaluating the *z*-component of **ψ**, it is clear that the trivial solution *ψ*_{z} = 0 both satisfies the boundary conditions (6) and minimizes (4), which is another possible constraint for **ψ** instead of Eq. (2). Following this finding, the 3-D flow field can be described by just two components of **ψ**, namely *x* and *y*. This is often called the dual stream function approach, which can in principle represent any 3-D Stokesian flow in a porous media.[29] This methodology is used in this article and the example of a dual stream function is illustrated in Figure 2.

#### Local flow around particles

The spherical particles are assumed to be impermeable; therefore, **ψ** can be assumed constant inside the particles. Moreover, the boundaries of the solid particles have nonslip boundary conditions. Therefore, the change of **ψ** is infinitesimal at the surface of each particle and the local **ψ** varies only in the space between particles.

Consider a Delaunay tetrahedron that has four faces with each face consisting of three spherical particles. If the tetrahedron has a dense packing, then there are channel-like openings through each one of the faces. The flow distribution in it can be derived as in a channel with a slowly varying shape along its length. The assumption is valid also if the particles are not completely compact, which results in a shape of the cross-section channel as in Figure 3. The cross section can be further separated into six sections (see Figure 3), that is, two sections per particle. If the cross section forms a regular triangle, then the flow pattern for a velocity component normal to the cross section can be obtained by a Laurent series according to

- (7)

In this equation, *R* is the polar radius of the particle as viewed in the given cross section; *r* and *ϕ* are polar coordinates with respect to the reference point in the center of the particle; *A*, *B*_{0}, and *B*_{n} are constants; and *k* is the order of rotational symmetry, which for a regular triangle is 6, that is, six regular triangles fit around one particle in the given plane. The Laurent series automatically satisfies the viscous-flow equation for the velocity component *u* normal to the cross section according to

- (8)

This relationship is true for any constants *B*_{0} and *B*_{n}.[47] Moreover, the nonslip boundary condition and *φ* = *const* at the surface of the spheres are automatically satisfied. The constants *B*_{0} and *B*_{n} should be chosen to fit the boundary condition at *r* cos *φ* = *x*_{0}, where *x*_{0} is the position of the Voronoi surface as viewed from the particle. The summation over *n* in the Laurent series, Eq. (7), convergences very quickly, especially with less dense packing.[40] Therefore, it is adequate to take into account only the first few terms (*n* = 1, 2, 3) in the summation. Equation (7) is extended to a general case of a nonregular triangle, where the circumcenter of the triangle takes the role of the center point. The order of rotational symmetry, *k*, is not an integer for the irregular case, but is a reciprocal of the angle of the triangle: .

The total flow through the face of the triangle can be expressed by a contour integral of **ψ** over the perimeter of the cross section in the following manner

- (9)

This makes it possible to determine the proportionality constant *A*. The vorticity can be readily calculated from Eq. (7) by differentiation. Thus, the integral of the dissipation rate of energy, Eq. (4), in a tetrahedron can be expressed in a quadratic form

- (10)

where is the total flow through the *i*-face of the tetrahedron, and *C*_{ij} = C_{ji} are coefficients for the particular shape of the tetrahedron. The diagonal terms *C*_{ii} dominate for compact packing. The volume integral of **ψ** derived from Laurent series (Eq. (7)) enables the derivation of these coefficients. The other option would be to use CFD to obtain the coefficients *C*_{ij}. This will be accomplished in later studies enabling an estimation of the accuracy of the present approach. The distribution of **ψ** follows from the minimization of the total dissipation rate of energy, which creates a system of linear equations. The stream function methodology makes it possible to include the convection directly by usage of the integral of **ψ** over the perimeter of each Delaunay face. This gives the total mass flow through the Delaunay tetrahedron according to Eq. (9). The total convection pattern is obtained by combining all tetrahedrons.

To test the flow solution as well as the packing generation method, the relationship between permeability and porosity in the present packed-bed model is compared to the Rump and Gupte's formula for packed beds of spheres, see Appendix B. As can be seen in Appendix B, the obtained permeability data fits well with Rumpf and Gupte's formula.

#### Molecular diffusion

The molecular diffusion needs to be included in the model as well. As the considered flow rate is low, Pe_{m} < 10, then a simplified version of the diffusion can be applied as the effects of Taylor and boundary layer dispersion[30, 31] starts to appear at higher flow rates. Molecular diffusion occurs primarily along the Voronoi faces. The vertex of each Voronoi face is the circumcenter of the corresponding Delaunay tetrahedron. Thus, the flow between two neighboring vertices goes through the face of three spheres of the corresponding tetrahedrons; see Figure 3b. The narrow gap between three spheres has a channel-like form with varying area of the cross section, *S*(*ξ*), with the smallest area at *ξ* = 0 when *S*(*ξ*) = *S*_{0}. If the absolute value of *ξ* is equal to the radius of the spheres, then the spheres do not reduce the area *S* and the maximum area, *S*_{max}, is obtained. In other cases, the area *S*(*ξ*) is

- (11)

where *α*_{k} is angle of the triangle at corresponding sphere, , and . The total mass-transfer resistance to molecular diffusion between vertices with coordinates *ξ*_{1} and *ξ*_{2}, through these three spheres in such a 1-D channel approach is

- (12)

The flow rate through the same face of three triangles is given by an integral (9) where the integration is taken along the perimeter of the triangle. Thus, the mass transport between two adjacent vertices can be calculated. Then, by collecting all of the adjacent pairs of vertices, the global mass transport is obtained.

#### Longitudinal dispersion

To compute *D*_{L}, a breakthrough experiment is simulated in a rectangular parallelepiped consisting of discrete randomly packed spherical particles, in which the main flow is directed upward. The 1-D problem for a system with a constant *D*_{L}, fixed concentration, *c*_{0}, at the inlet, and flux free concentration at the outlet is

- (13)

- (14)

where *c* is the mean solute concentration, *t* is time, *z* is the distance in the main flow direction, and *L* is the length of the packed bed. Equation (13) with boundary conditions (14) has the following approximate analytical solution[48]

- (15)

The 1-D profile of the concentration front is calculated as volume-averaged , and flow-averaged, , where Δ*z* is a small interval in the main flow direction used for the volume averaging, and *S* represents the area of the cross section of the system perpendicular to the flow direction. *D*_{L} is then obtained by fitting (15) to this 1-D concentration profile for fixed *u*. The choice of using the fixed *u* and the method used to fit (15) to the concentration profile is discussed in Jourak et al.[32] The side walls of the 3-D packed-bed model have periodic boundary conditions; therefore, the *D*_{L} that is obtained in this study corresponds to the bulk dispersion without influence from the walls.