next up previous
Next: Solution of the Equations Up: Morel99a Previous: Introduction

The Support-Operators Method

In this section we describe the support-operators method. It is convenient at this point to define a flux operator given by - D$ \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$}$}$ . The diffusion operator of interest is given by the product of the divergence operator and the flux operator: - $ \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$} \cdot$}$D$ \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$}$}$ . The support-operators method is based upon the following three facts:

The mathematical details relating to these facts are given in [8]. As explained in [8], the adjoint relationship between the flux and divergence operators is embodied in the following integral identity:

$\displaystyle \oint_{{\partial V}}^{}$$\displaystyle \phi$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$}$  dA - $\displaystyle \int_{V}^{}$D-1$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ . D$\displaystyle \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$}$}$$\displaystyle \phi$  dV = $\displaystyle \int_{V}^{}$$\displaystyle \phi$$\displaystyle \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$} \cdot$}$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$  dV   , (4)
where $ \phi$ is an arbitrary scalar function, $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ is an arbitrary vector function, V denotes a volume, $ \partial$V denotes its surface, and $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$}$ denotes the outward-directed unit normal associated with that surface. Our support-operators method can be conceptually described in the simplest terms as follows:
  1. Define discrete scalar and vector spaces to be used in a discretization of Eq. (4).
  2. Fully discretize all but the flux operator in Eq. (4) over a single arbitrary cell. The flux operator is left in the general form of a discrete vector as defined in Step 1.
  3. Solve for the discrete flux operator (i.e., for its vector components) on a single arbitrary cell by requiring that the discrete version of Eq. (4) hold for all elements of the discrete scalar and vector spaces defined in Step 1.
  4. Obtain the interior-mesh discretization of Eq. (4) by connecting adjacent mesh cells in such a way as to ensure that Eq. (4) is satisfied over the whole grid. This simply amounts to enforcing continuity of intensity and flux at the cell interfaces.
  5. Change the flux operator at those cell faces on the exterior mesh boundary so as to satisfy the appropriate boundary conditions.
  6. Combine the global divergence matrix and the global flux matrix to obtain the global diffusion matrix.
The actual method is somewhat more complicated because of the presence of both cell-center and cell-face intensities, but this description nonetheless conveys the central theme of the method.

To make this process concrete, we next generate the diffusion matrix for a hexahedral mesh in Cartesian geometry. To simplify the presentation, we assume a logically-rectangular mesh. However, our discretization scheme can be used with unstructured meshes as well. The assumption of a logically-rectangular mesh merely simplifies our notation and mesh indexing. Our first step is to define that indexing. For reasons explained later, both global and local indices are used. Let us first consider the global indices. The cell centers carry integral global indices, e.g., (i, j, k) ; cell vertices carry half-integral global indices, e.g., (i + $ {\frac{{1}}{{2}}}$, j + $ {\frac{{1}}{{2}}}$, k + $ {\frac{{1}}{{2}}}$) ; and face centers carry mixed global indices composed of both integral and half-integral indices, e.g., (i + $ {\frac{{1}}{{2}}}$, j, k) . The global indices for four of the vertices associated with cell (i, j, k) are illustrated in Fig. 1.

Figure 1: Global indices for four vertices associated with cell (i, j, k) .
\includegraphics[bb=171 117 470 641,scale=.6]{/home/hall/Caesar/documents/images/Augustus/Morel/sofig1.eps}

Local indices allow us to uniquely define certain quantities that are associated with a vertex or face center and a cell. For instance, the local indices for the six faces associated with each cell are given by L, R, B, T, D, and U, which denote Left, Right, Bottom, Top, Down, and Up respectively. This local face indexing is illustrated for cell (i, j, k) in Fig. 2 and Fig. 3 together with a mapping between the local indices and the corresponding global indices.

Figure 2: Local and global indices for three of six face centers associated with cell (i, j, k) .
\includegraphics[bb=171 99 470 650,scale=.5]{/home/hall/Caesar/documents/images/Augustus/Morel/sofig2.eps}
Figure 3: Local and global indices for three of six face centers associated with cell (i, j, k) .
\includegraphics[bb=171 99 470 669,scale=.5]{/home/hall/Caesar/documents/images/Augustus/Morel/sofig3.eps}
Note that the index i increases when moving from Left to Right, the index j increases when moving from Bottom to Top, and the index k increases when moving from the Down to Up. The local indices for the vertices follow directly from the face indices in that each vertex is uniquely shared by three faces of the cell. Thus the vertex shared by the Right, Top, and Up faces is denoted by the index RTU. This vertex is illustrated in Fig. 4.
Figure 4: Vertex shared by the Right, Top, and Up faces having local index RTU.
\includegraphics[bb=198 239 456 587,scale=.6]{/home/hall/Caesar/documents/images/Augustus/Morel/sofig4.eps}

The vector and matrix notation used from this point forward in this paper is as follows. Each vector is denoted by an upper-case symbol and the components of that vector are denoted by the corresponding lower-case symbol. An arrow is placed over the upper-case symbol if the vector is physical, while a chevron is placed above the upper-case symbol if the vector is algebraic. Each matrix is denoted by a bold-face upper-case symbol and the elements of that matrix are denoted by the corresponding lower-case symbol.

The intensities (scalars) are defined to exist at both cell center: $ \phi^{{C}}_{{i,j,k}}$ , and on the face centers: $ \phi^{{L}}_{{i,j,k}}$ , $ \phi^{{R}}_{{i,j,k}}$ , $ \phi^{{B}}_{{i,j,k}}$ , $ \phi^{{T}}_{{i,j,k}}$ , $ \phi^{{D}}_{{i,j,k}}$ , $ \phi^{{U}}_{{i,j,k}}$ . As previously noted, the use of local indices implies that a quantity is uniquely associated with a single cell. For instance, unless it is otherwise stated, one should assume that $ \phi^{{R}}_{{i,j,k}}$ $ \neq$ $ \phi^{{L}}_{{i+1,j,k}}$ .

Vectors are defined in terms of face-area components located at the face centers: fLi, j, k , fRi, j, k , fBi, j, k , fTi, j, k , fDi, j, k , fUi, j, k , where fLi, j, k denotes the dot product of $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$ with the outward-directed area vector located at the center of the left face of cell i, j, k . The other face-area components are defined analogously. The area vector is defined as the integral of the outward-directed unit normal vector over the face, i.e.,

$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{A}$}$ = $\displaystyle \oint$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$}$ dA   , (5)
where $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$}$ is a unit vector that is normal to the face at each point on the face. The average outward-directed unit normal vector for the face is defined as follows:

$\displaystyle \left\langle\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$} }\right.$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$}$$\displaystyle \left.\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$} }\right\rangle$ = $\displaystyle {\frac{{\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{A}$}}}{{\Vert \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{A}$} \Vert}}}$   , (6)
where |$ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{A}$}$| denotes the magnitude (standard Euclidean norm) of $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{A}$}$ . Equation (6) can be used to convert face-area flux components to face-normal components if desired, e.g.
$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$ . $\displaystyle \left\langle\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$} }\right.$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$}$$\displaystyle \left.\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$} }\right\rangle$ = $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$ . $\displaystyle {\frac{{\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{A}$}}}{{\Vert \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{A}$} \Vert}}}$   ,  
  = $\displaystyle {\frac{{f}}{{\Vert \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{A}$}\Vert}}}$   . (7)

Note that |$ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{A}$}$| is equal to the face area only when the face is flat. Interestingly, the true face areas never arise in our discretization scheme. Since it takes three components to define a full vector, the full vectors are considered to be located at the cell vertices: $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$LBDi, j, k , $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$RBDi, j, k , $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$LTDi, j, k , $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$RTDi, j, k , $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$LBUi, j, k , $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$RBUi, j, k , $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$LTUi, j, k , $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$RTUi, j, k . Each vertex vector is constructed using the face-area components and area vectors associated with the three faces that share that vertex. For instance,

$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$LBDi, j, k = $\displaystyle {\frac{{f^L \left( \mbox{$\stackrel{^{\mathstrut}\smash{\longrigh...
...\times \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{A}$}^D \right)}}}$ + $\displaystyle {\frac{{f^B \left( \mbox{$\stackrel{^{\mathstrut}\smash{\longrigh...
...\times \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{A}$}^L \right)}}}$ + $\displaystyle {\frac{{f^D \left( \mbox{$\stackrel{^{\mathstrut}\smash{\longrigh...
...\times \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{A}$}^B \right)}}}$   . (8)
It is convenient for our purposes to define an algebraic vector, $ \hat{{F}}$ , consisting of the three face-area components associated with the physical vector, $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$ , e.g.,

$\displaystyle \hat{{F}}_{{LBD}}^{}$ = $\displaystyle \left(\vphantom{ f^{L}_{i,j,k}, \, f^{B}_{i,j,k}, \, f^{D}_{i,j,k} }\right.$fLi, j, kfBi, j, kfDi, j, k$\displaystyle \left.\vphantom{ f^{L}_{i,j,k}, \, f^{B}_{i,j,k}, \, f^{D}_{i,j,k} }\right)^{t}_{}$   , (9)
where a superscript ``t'' denotes ``transpose.'' The three face-area components associated with the Right-Top-Up vertex are illustrated in Fig. 5.
Figure 5: Three face-center face-area components defining the flux vector at vertex RTU.
\includegraphics[bb=144 136 479 587,scale=.6]{/home/hall/Caesar/documents/images/Augustus/Morel/sofig5.eps}
The other vertex vectors are defined in analogy with Eqs. (8) and (9).

As explained in Reference [8], the adjoint relationship between the gradient and divergence operators is embodied in the following integral identity:

$\displaystyle \oint_{{\partial V}}^{}$$\displaystyle \phi$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$}$  dA - $\displaystyle \int_{V}^{}$D-1$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ . D$\displaystyle \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$}$}$$\displaystyle \phi$  dV = $\displaystyle \int_{V}^{}$$\displaystyle \phi$$\displaystyle \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$} \cdot$}$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$  dV   , (10)
where $ \phi$ is an arbitrary scalar function, $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ is an arbitrary vector function, V denotes a volume, $ \partial$V denotes its surface, and $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$}$ denotes the outward-directed unit normal associated with that surface. The vector $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ has the same mesh locations as the flux vector $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$ , but is not necessarily equal to - D$ \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$}$}$$ \phi$ . We stress that the function $ \phi$ at this point represents an arbitrary scalar function, and not necessarily the solution of the diffusion equation. The next step in our support-operators method is to discretize Eq. (10) over a single arbitrary cell in a special manner. Specifically, we explicitly discretize all but the flux operator, which is expressed in an implicit form consistent with our choice of discrete vector unknowns. We assume indices of i, j, k for the arbitrary cell, but suppress these indices whenever possible in the discrete approximation to Eq. (10) that follows. We first discretize the surface integral:

$\displaystyle \oint_{{\partial V}}^{}$$\displaystyle \phi$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{n}$}$  dA $\displaystyle \approx$ $\displaystyle \phi^{{L}}_{}$hL + $\displaystyle \phi^{{R}}_{}$hR + $\displaystyle \phi^{{B}}_{}$hB + $\displaystyle \phi^{{T}}_{}$hT + $\displaystyle \phi^{{D}}_{}$hD + $\displaystyle \phi^{{U}}_{}$hU. (11)

Next we approximate the flux volumetric integral:

$\displaystyle \int_{V}^{}$ - D-1$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ . D$\displaystyle \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$}$}$$\displaystyle \phi$  dV $\displaystyle \approx$


D-1$\displaystyle \left(\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{LBD} }\right.$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$LBD . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$LBD$\displaystyle \left.\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{LBD} }\right)$VLBD + D-1$\displaystyle \left(\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{RBD} }\right.$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$RBD . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$RBD$\displaystyle \left.\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{RBD} }\right)$VRBD  
D-1$\displaystyle \left(\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{LTD} }\right.$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$LTD . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$LTD$\displaystyle \left.\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{LTD} }\right)$VLTD + D-1$\displaystyle \left(\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{RTD} }\right.$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$RTD . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$RTD$\displaystyle \left.\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{RTD} }\right)$VRTD  
D-1$\displaystyle \left(\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{LBU} }\right.$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$LBU . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$LBU$\displaystyle \left.\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{LBU} }\right)$VLBU + D-1$\displaystyle \left(\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{RBU} }\right.$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$RBU . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$RBU$\displaystyle \left.\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{RBU} }\right)$VRBU  
D-1$\displaystyle \left(\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{LTU} }\right.$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$LTU . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$LTU$\displaystyle \left.\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{LTU} }\right)$VLTU + D-1$\displaystyle \left(\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{RTU} }\right.$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$RTU . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$RTU$\displaystyle \left.\vphantom{ \mbox{$\stackrel{^{\mathstrut}\smash{\longrighta...
...cdot \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}^{RTU} }\right)$VRTU   , (12)

where $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$LBD denotes - D$ \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$}$}$$ \phi$ at the Left-Bottom-Down vertex, and VLBD denotes the volumetric weight associated with the Left-Bottom-Down vertex. The remaining flux vectors and vertex volumetric weights are analogously indexed. The choice of weights is one of the many free parameters in the support-operators method. We have investigated several different choices. Specifically:
  1. Each vertex weight can be given by one-eighth the triple product associated with the vertex. For instance, using the local vertex indexing shown in Fig. 2, the volumetric weight for the Left-Bottom-Down vertex is given by

    VLBD = $\displaystyle {\frac{{1}}{{8}}}$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{R}$}$1, 2 x $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{R}$}$1, 3 . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{R}$}$1, 4   , (13)
    where $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{R}$}$i, j denotes the vector from vertex i to vertex j . Note that these vertex weights do not sum to the total volume of the hexahedron unless the hexahedron is a parallelepiped. We refer to these weights as the triple-product weights.

  2. The weights given in Eq. (13) can be normalized, i.e., multiplied by a single constant, so that they sum to the exact cell volume. We refer to these weights as the normalized triple product weights.

  3. Each vertex weight can be set equal to the volume of an associated sub-hexahedron. The sub-hexahedra are obtained by using four straight lines to connect each face center with the four edge centers adjacent to it, and by using six straight lines to connect the cell-center with the six face centers. A sub-hexahedron is illustrated in Fig. 6.
    Figure 6: Sub-hexahedron associated with vertex.
    \includegraphics[bb=181 262 438 515,scale=.6]{/home/hall/Caesar/documents/images/Augustus/Morel/sofig6.eps}
    Although it may not be obvious, each outer face of each sub-hexahedron coincides with a face of the hexahedron. Thus the volumes of the sub-hexahedra always sum to the total hexahedron volume. This is perhaps the most natural choice for the volumetric weights. We refer to these weights as the sub-hexahedron weights.

  4. Each vertex weight can be set to one-eighth of the total hexahedron volume. We refer to these weights as the one-eighth weights.

Computational testing indicates that the sub-hexahedron and one-eighth weights are decidedly inferior to the triple-product and normalized triple-product weights. In particular, the triple-product and normalized triple-product weights both yield a second-order-accurate diffusion discretization, whereas the sub-hexahedron and one-eighth weights yield a first-order accurate diffusion discretization. Although they both give second-order accuracy, the normalized triple-product weights seem to be slightly more accurate than the triple product weights. Thus we use the normalized triple-product weights.

One can evaluate the dot products in Eq. (12) using Eq. (8), but we find it better for our purposes to evaluate them with the algebraic face-area flux vectors defined by Eq. (9). This is achieved by first transforming the face-area vectors to Cartesian vectors and then taking the dot product. Rather than explicitly define the matrix that transforms face-area vectors to Cartesian vectors, we explicitly define its inverse. The desired transformation matrix can then be obtained by either algebraic or numerical inversion. For instance, let us consider the Left-Bottom-Down vertex vectors. We denote the matrix that transforms face-area vectors to Cartesian vectors as ALBD . Its inverse is the matrix that transforms Cartesian vectors to face-area vectors:

$\displaystyle \hat{{H}}^{{LBD}}_{}$ = $\displaystyle \left[\vphantom{ {\bf A}^{LBD} }\right.$$\displaystyle \bf A^{{LBD}}_{}$$\displaystyle \left.\vphantom{ {\bf A}^{LBD} }\right]^{{-1}}_{}$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$LBD   , (14)
where $ \hat{{H}}$ denotes a Left-Bottom-Down face-area flux vector,

$\displaystyle \hat{{H}}$ = $\displaystyle \left(\vphantom{ h^L, h^B, h^D }\right.$hL, hB, hD$\displaystyle \left.\vphantom{ h^L, h^B, h^D }\right)^{t}_{}$   , (15)
and $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ denotes a Left-Bottom-Down Cartesian flux vector,

$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ = $\displaystyle \left(\vphantom{ h^x, h^y, h^z }\right.$hx, hy, hz$\displaystyle \left.\vphantom{ h^x, h^y, h^z }\right)^{t}_{}$   , (16)
and

$\displaystyle \left[\vphantom{ {\bf A}^{LBD} }\right.$$\displaystyle \bf A^{{LBD}}_{}$$\displaystyle \left.\vphantom{ {\bf A}^{LBD} }\right]^{{-1}}_{}$ = $\displaystyle \left[\vphantom{ \begin{array}{ccc}
a^L_x & a^L_y & a^L_z \\
a^B_x & a^B_y & a^B_z \\
a^D_x & a^D_y & a^D_z
\end{array} }\right.$$\displaystyle \begin{array}{ccc}
a^L_x & a^L_y & a^L_z \\
a^B_x & a^B_y & a^B_z \\
a^D_x & a^D_y & a^D_z
\end{array}$$\displaystyle \left.\vphantom{ \begin{array}{ccc}
a^L_x & a^L_y & a^L_z \\
a^B_x & a^B_y & a^B_z \\
a^D_x & a^D_y & a^D_z
\end{array} }\right]$   , (17)
where aLx denotes the x-component of the area vector associated with the left face. The remaining components of the matrix are defined analogously. Transforming the face-area vector for the Left-Bottom-Down vertex, we obtain:
$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$LBD . $\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$LBD = A$\displaystyle \hat{{H}}^{{LBD}}_{}$ . ALBD$\displaystyle \hat{{F}}^{{LBD}}_{}$   ,  
  = $\displaystyle \hat{{H}}^{{LBD}}_{}$ . SLBD$\displaystyle \hat{{F}}^{{LBD}}_{}$   , (18)

where

$\displaystyle \bf S^{{LBD}}_{}$ = $\displaystyle \left[\vphantom{ {\bf A}^{LBD} }\right.$$\displaystyle \bf A^{{LBD}}_{}$$\displaystyle \left.\vphantom{ {\bf A}^{LBD} }\right]^{t}_{}$$\displaystyle \bf A^{{LBD}}_{}$   . (19)
Following Eq. (19), We now rewrite Eq. (12) in terms of face-area vectors as follows:

$\displaystyle \int_{V}^{}$ - D-1$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ . D$\displaystyle \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$}$}$$\displaystyle \phi$  dV $\displaystyle \approx$


D-1$\displaystyle \left(\vphantom{ \hat{H}^{LBD} \cdot \mathbf{S}^{LBD} \hat{F}^{LBD} }\right.$$\displaystyle \hat{{H}}^{{LBD}}_{}$ . SLBD$\displaystyle \hat{{F}}^{{LBD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LBD} \cdot \mathbf{S}^{LBD} \hat{F}^{LBD} }\right)$VLBD + D-1$\displaystyle \left(\vphantom{ \hat{H}^{RBD} \cdot \mathbf{S}^{RBD} \hat{F}^{RBD} }\right.$$\displaystyle \hat{{H}}^{{RBD}}_{}$ . SRBD$\displaystyle \hat{{F}}^{{RBD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RBD} \cdot \mathbf{S}^{RBD} \hat{F}^{RBD} }\right)$VRBD  
D-1$\displaystyle \left(\vphantom{ \hat{H}^{LTD} \cdot \mathbf{S}^{LTD} \hat{F}^{LTD} }\right.$$\displaystyle \hat{{H}}^{{LTD}}_{}$ . SLTD$\displaystyle \hat{{F}}^{{LTD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LTD} \cdot \mathbf{S}^{LTD} \hat{F}^{LTD} }\right)$VLTD + D-1$\displaystyle \left(\vphantom{ \hat{H}^{RTD} \cdot \mathbf{S}^{RTD} \hat{F}^{RTD} }\right.$$\displaystyle \hat{{H}}^{{RTD}}_{}$ . SRTD$\displaystyle \hat{{F}}^{{RTD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RTD} \cdot \mathbf{S}^{RTD} \hat{F}^{RTD} }\right)$VRTD  
D-1$\displaystyle \left(\vphantom{ \hat{H}^{LBU} \cdot \mathbf{S}^{LBU} \hat{F}^{LBU} }\right.$$\displaystyle \hat{{H}}^{{LBU}}_{}$ . SLBU$\displaystyle \hat{{F}}^{{LBU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LBU} \cdot \mathbf{S}^{LBU} \hat{F}^{LBU} }\right)$VLBU + D-1$\displaystyle \left(\vphantom{ \hat{H}^{RBU} \cdot \mathbf{S}^{RBU} \hat{F}^{RBU} }\right.$$\displaystyle \hat{{H}}^{{RBU}}_{}$ . SRBU$\displaystyle \hat{{F}}^{{RBU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RBU} \cdot \mathbf{S}^{RBU} \hat{F}^{RBU} }\right)$VRBU  
D-1$\displaystyle \left(\vphantom{ \hat{H}^{LTU} \cdot \mathbf{S}^{LTU} \hat{F}^{LTU} }\right.$$\displaystyle \hat{{H}}^{{LTU}}_{}$ . SLTU$\displaystyle \hat{{F}}^{{LTU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LTU} \cdot \mathbf{S}^{LTU} \hat{F}^{LTU} }\right)$VLTU + D-1$\displaystyle \left(\vphantom{ \hat{H}^{RTU} \cdot \mathbf{S}^{RTU} \hat{F}^{RTU} }\right.$$\displaystyle \hat{{H}}^{{RTU}}_{}$ . SRTU$\displaystyle \hat{{F}}^{{RTU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RTU} \cdot \mathbf{S}^{RTU} \hat{F}^{RTU} }\right)$VRTU   . (20)

Although we assume a single diffusion coefficient in each cell in this paper, we note that our scheme can accommodate a different diffusion coefficient for each vertex. In particular, Eq. (20) becomes

$\displaystyle \int_{V}^{}$ - D-1$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ . D$\displaystyle \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$}$}$$\displaystyle \phi$  dV $\displaystyle \approx$


DLBD-1$\displaystyle \left(\vphantom{ \hat{H}^{LBD} \cdot \mathbf{S}^{LBD} \hat{F}^{LBD} }\right.$$\displaystyle \hat{{H}}^{{LBD}}_{}$ . SLBD$\displaystyle \hat{{F}}^{{LBD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LBD} \cdot \mathbf{S}^{LBD} \hat{F}^{LBD} }\right)$VLBD + DRBD-1$\displaystyle \left(\vphantom{ \hat{H}^{RBD} \cdot \mathbf{S}^{RBD} \hat{F}^{RBD} }\right.$$\displaystyle \hat{{H}}^{{RBD}}_{}$ . SRBD$\displaystyle \hat{{F}}^{{RBD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RBD} \cdot \mathbf{S}^{RBD} \hat{F}^{RBD} }\right)$VRBD  
DLTD-1$\displaystyle \left(\vphantom{ \hat{H}^{LTD} \cdot \mathbf{S}^{LTD} \hat{F}^{LTD} }\right.$$\displaystyle \hat{{H}}^{{LTD}}_{}$ . SLTD$\displaystyle \hat{{F}}^{{LTD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LTD} \cdot \mathbf{S}^{LTD} \hat{F}^{LTD} }\right)$VLTD + DRTD-1$\displaystyle \left(\vphantom{ \hat{H}^{RTD} \cdot \mathbf{S}^{RTD} \hat{F}^{RTD} }\right.$$\displaystyle \hat{{H}}^{{RTD}}_{}$ . SRTD$\displaystyle \hat{{F}}^{{RTD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RTD} \cdot \mathbf{S}^{RTD} \hat{F}^{RTD} }\right)$VRTD  
DLBU-1$\displaystyle \left(\vphantom{ \hat{H}^{LBU} \cdot \mathbf{S}^{LBU} \hat{F}^{LBU} }\right.$$\displaystyle \hat{{H}}^{{LBU}}_{}$ . SLBU$\displaystyle \hat{{F}}^{{LBU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LBU} \cdot \mathbf{S}^{LBU} \hat{F}^{LBU} }\right)$VLBU + DRBU-1$\displaystyle \left(\vphantom{ \hat{H}^{RBU} \cdot \mathbf{S}^{RBU} \hat{F}^{RBU} }\right.$$\displaystyle \hat{{H}}^{{RBU}}_{}$ . SRBU$\displaystyle \hat{{F}}^{{RBU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RBU} \cdot \mathbf{S}^{RBU} \hat{F}^{RBU} }\right)$VRBU  
DLTU-1$\displaystyle \left(\vphantom{ \hat{H}^{LTU} \cdot \mathbf{S}^{LTU} \hat{F}^{LTU} }\right.$$\displaystyle \hat{{H}}^{{LTU}}_{}$ . SLTU$\displaystyle \hat{{F}}^{{LTU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LTU} \cdot \mathbf{S}^{LTU} \hat{F}^{LTU} }\right)$VLTU + DRTU-1$\displaystyle \left(\vphantom{ \hat{H}^{RTU} \cdot \mathbf{S}^{RTU} \hat{F}^{RTU} }\right.$$\displaystyle \hat{{H}}^{{RTU}}_{}$ . SRTU$\displaystyle \hat{{F}}^{{RTU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RTU} \cdot \mathbf{S}^{RTU} \hat{F}^{RTU} }\right)$VRTU  , (21)

Although we assume a scalar diffusion coefficient in this paper, we note that our scheme can accommodate a tensor diffusion coefficient. Specifically, with a tensor diffusion coefficient at each vertex, Eq. (21) becomes

$\displaystyle \int_{V}^{}$ - D-1$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ . D$\displaystyle \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$}$}$$\displaystyle \phi$  dV $\displaystyle \approx$


$\displaystyle \left(\vphantom{ \hat{H}^{LBD} \cdot \mathbf{G}^{LBD} \hat{F}^{LBD} }\right.$$\displaystyle \hat{{H}}^{{LBD}}_{}$ . GLBD$\displaystyle \hat{{F}}^{{LBD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LBD} \cdot \mathbf{G}^{LBD} \hat{F}^{LBD} }\right)$VLBD + $\displaystyle \left(\vphantom{ \hat{H}^{RBD} \cdot \mathbf{G}^{RBD} \hat{F}^{RBD} }\right.$$\displaystyle \hat{{H}}^{{RBD}}_{}$ . GRBD$\displaystyle \hat{{F}}^{{RBD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RBD} \cdot \mathbf{G}^{RBD} \hat{F}^{RBD} }\right)$VRBD  
$\displaystyle \left(\vphantom{ \hat{H}^{LTD} \cdot \mathbf{G}^{LTD} \hat{F}^{LTD} }\right.$$\displaystyle \hat{{H}}^{{LTD}}_{}$ . GLTD$\displaystyle \hat{{F}}^{{LTD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LTD} \cdot \mathbf{G}^{LTD} \hat{F}^{LTD} }\right)$VLTD + $\displaystyle \left(\vphantom{ \hat{H}^{RTD} \cdot \mathbf{G}^{RTD} \hat{F}^{RTD} }\right.$$\displaystyle \hat{{H}}^{{RTD}}_{}$ . GRTD$\displaystyle \hat{{F}}^{{RTD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RTD} \cdot \mathbf{G}^{RTD} \hat{F}^{RTD} }\right)$VRTD  
$\displaystyle \left(\vphantom{ \hat{H}^{LBU} \cdot \mathbf{G}^{LBU} \hat{F}^{LBU} }\right.$$\displaystyle \hat{{H}}^{{LBU}}_{}$ . GLBU$\displaystyle \hat{{F}}^{{LBU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LBU} \cdot \mathbf{G}^{LBU} \hat{F}^{LBU} }\right)$VLBU + $\displaystyle \left(\vphantom{ \hat{H}^{RBU} \cdot \mathbf{G}^{RBU} \hat{F}^{RBU} }\right.$$\displaystyle \hat{{H}}^{{RBU}}_{}$ . GRBU$\displaystyle \hat{{F}}^{{RBU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RBU} \cdot \mathbf{G}^{RBU} \hat{F}^{RBU} }\right)$VRBU  
$\displaystyle \left(\vphantom{ \hat{H}^{LTU} \cdot \mathbf{G}^{LTU} \hat{F}^{LTU} }\right.$$\displaystyle \hat{{H}}^{{LTU}}_{}$ . GLTU$\displaystyle \hat{{F}}^{{LTU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LTU} \cdot \mathbf{G}^{LTU} \hat{F}^{LTU} }\right)$VLTU + $\displaystyle \left(\vphantom{ \hat{H}^{RTU} \cdot \mathbf{G}^{RTU} \hat{F}^{RTU} }\right.$$\displaystyle \hat{{H}}^{{RTU}}_{}$ . GRTU$\displaystyle \hat{{F}}^{{RTU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RTU} \cdot \mathbf{G}^{RTU} \hat{F}^{RTU} }\right)$VRTU   , (22)

where

GLBD = $\displaystyle \left[\vphantom{ {\bf A}^{LBD} }\right.$$\displaystyle \bf A^{{LBD}}_{}$$\displaystyle \left.\vphantom{ {\bf A}^{LBD} }\right]^{t}_{}$$\displaystyle \left[\vphantom{ \mathbf{D}^{LBD} }\right.$DLBD$\displaystyle \left.\vphantom{ \mathbf{D}^{LBD} }\right]^{{-1}}_{}$$\displaystyle \bf A^{{LBD}}_{}$   , (23)
and DLBD is the Left-Bottom-Down diffusion tensor in the Cartesian basis. The remaining G -matrices are defined analogously. The diffusion tensor must be symmetric positive-definite to ensure that its inverse exists and that the coefficient matrix for our diffusion scheme is symmetric positive-definite.

Finally, we approximate the divergence volumetric integral:

$\displaystyle \int_{V}^{}$$\displaystyle \phi$$\displaystyle \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$} \cdot$}$$\displaystyle \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$  dV $\displaystyle \approx$ $\displaystyle \phi^{{C}}_{}$$\displaystyle \left[\vphantom{ h^{L} + h^{R} +
h^{B} + h^{T} + h^{D} + h^{U} }\right.$hL + hR + hB + hT + hD + hU$\displaystyle \left.\vphantom{ h^{L} + h^{R} +
h^{B} + h^{T} + h^{D} + h^{U} }\right]$   . (24)

Equations (11), (20), and (24) are certainly not unique, but they are fairly straightforward. For instance, Eq. (11) represents a face-centered second-order approximation to a surface integral. Equation (20) represents a vertex-based volumetric integral consisting of a dot-product contribution from each pair of vertex vectors. Equation (24) is a particularly simple second-order approximation which gives all of the weight to the cell-center value of $ \phi$ while using a surface-integral formulation for $ \mbox{$\mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{\nabla}$} \cdot$}$$ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ that is analogous to the surface-integral used in Eq. (11).

Substituting from Eqs. (11), (20), and (24) into Eq. (10), we obtain the discrete version of Eq. (10):

$\displaystyle \phi^{{L}}_{}$hL + $\displaystyle \phi^{{R}}_{}$hR + $\displaystyle \phi^{{B}}_{}$hB + $\displaystyle \phi^{{T}}_{}$hT + $\displaystyle \phi^{{D}}_{}$hD + $\displaystyle \phi^{{U}}_{}$hU +
D-1$\displaystyle \left(\vphantom{ \hat{H}^{LBD} \cdot \mathbf{S}^{LBD} \hat{F}^{LBD} }\right.$$\displaystyle \hat{{H}}^{{LBD}}_{}$ . SLBD$\displaystyle \hat{{F}}^{{LBD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LBD} \cdot \mathbf{S}^{LBD} \hat{F}^{LBD} }\right)$VLBD + D-1$\displaystyle \left(\vphantom{ \hat{H}^{RBD} \cdot \mathbf{S}^{RBD} \hat{F}^{RBD} }\right.$$\displaystyle \hat{{H}}^{{RBD}}_{}$ . SRBD$\displaystyle \hat{{F}}^{{RBD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RBD} \cdot \mathbf{S}^{RBD} \hat{F}^{RBD} }\right)$VRBD +
D-1$\displaystyle \left(\vphantom{ \hat{H}^{LTD} \cdot \mathbf{S}^{LTD} \hat{F}^{LTD} }\right.$$\displaystyle \hat{{H}}^{{LTD}}_{}$ . SLTD$\displaystyle \hat{{F}}^{{LTD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LTD} \cdot \mathbf{S}^{LTD} \hat{F}^{LTD} }\right)$VLTD + D-1$\displaystyle \left(\vphantom{ \hat{H}^{RTD} \cdot \mathbf{S}^{RTD} \hat{F}^{RTD} }\right.$$\displaystyle \hat{{H}}^{{RTD}}_{}$ . SRTD$\displaystyle \hat{{F}}^{{RTD}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RTD} \cdot \mathbf{S}^{RTD} \hat{F}^{RTD} }\right)$VRTD +
D-1$\displaystyle \left(\vphantom{ \hat{H}^{LBU} \cdot \mathbf{S}^{LBU} \hat{F}^{LBU} }\right.$$\displaystyle \hat{{H}}^{{LBU}}_{}$ . SLBU$\displaystyle \hat{{F}}^{{LBU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LBU} \cdot \mathbf{S}^{LBU} \hat{F}^{LBU} }\right)$VLBU + D-1$\displaystyle \left(\vphantom{ \hat{H}^{RBU} \cdot \mathbf{S}^{RBU} \hat{F}^{RBU} }\right.$$\displaystyle \hat{{H}}^{{RBU}}_{}$ . SRBU$\displaystyle \hat{{F}}^{{RBU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RBU} \cdot \mathbf{S}^{RBU} \hat{F}^{RBU} }\right)$VRBU +
D-1$\displaystyle \left(\vphantom{ \hat{H}^{LTU} \cdot \mathbf{S}^{LTU} \hat{F}^{LTU} }\right.$$\displaystyle \hat{{H}}^{{LTU}}_{}$ . SLTU$\displaystyle \hat{{F}}^{{LTU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{LTU} \cdot \mathbf{S}^{LTU} \hat{F}^{LTU} }\right)$VLTU + D-1$\displaystyle \left(\vphantom{ \hat{H}^{RTU} \cdot \mathbf{S}^{LTU} \hat{F}^{RTU} }\right.$$\displaystyle \hat{{H}}^{{RTU}}_{}$ . SLTU$\displaystyle \hat{{F}}^{{RTU}}_{}$$\displaystyle \left.\vphantom{ \hat{H}^{RTU} \cdot \mathbf{S}^{LTU} \hat{F}^{RTU} }\right)$VRTU =
$\displaystyle \phi^{{C}}_{}$$\displaystyle \left[\vphantom{ h^{L} + h^{R} +
h^{B} + h^{T} + h^{D} + h^{U} }\right.$hL + hR + hB + hT + hD + hU$\displaystyle \left.\vphantom{ h^{L} + h^{R} +
h^{B} + h^{T} + h^{D} + h^{U} }\right]$   .
(25)

Note that Eq. (25) defines the discrete inner products, discussed in Reference 8, that are associated with the adjoint relationship between the divergence and gradient operators. We can now use this relationship to solve for the flux operator components by requiring that the resulting discretized identity hold for all discrete $ \hat{{H}}$ and $ \phi$ values. In particular, the equation for the face-area component of $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{F}$}$ on any given cell face is obtained from Eq. (25) simply by setting the same face-area component of $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ on that face to unity and setting the remaining face-area components of $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ on all other faces to zero. For instance, we obtain the equation for fL from Eq. (25) by setting hL to unity and all the other face-area components of $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ , i.e., hR , hB , hT , hD , hU , to zero:

$\displaystyle \phi^{L}_{}$ + D-1$\displaystyle \left(\vphantom{ s_{L,L}^{LBD} f^L + s_{L,B}^{LBD} f^B + s_{L,D}^{LBD} f^D }\right.$sL, LLBDfL + sL, BLBDfB + sL, DLBDfD$\displaystyle \left.\vphantom{ s_{L,L}^{LBD} f^L + s_{L,B}^{LBD} f^B + s_{L,D}^{LBD} f^D }\right)$VLBD  
+ D-1$\displaystyle \left(\vphantom{ s_{L,L}^{LTD} f^L + s_{L,T}^{LTD} f^T + s_{L,D}^{LTD} f^D }\right.$sL, LLTDfL + sL, TLTDfT + sL, DLTDfD$\displaystyle \left.\vphantom{ s_{L,L}^{LTD} f^L + s_{L,T}^{LTD} f^T + s_{L,D}^{LTD} f^D }\right)$VLTD  
+ D-1$\displaystyle \left(\vphantom{ s_{L,L}^{LBU} f^L + s_{L,B}^{LBU} f^B + s_{L,U}^{LBU} f^U }\right.$sL, LLBUfL + sL, BLBUfB + sL, ULBUfU$\displaystyle \left.\vphantom{ s_{L,L}^{LBU} f^L + s_{L,B}^{LBU} f^B + s_{L,U}^{LBU} f^U }\right)$VLBU  
+ D-1$\displaystyle \left(\vphantom{ s_{L,L}^{LTU} f^L + s_{L,T}^{LTU} f^T + s_{L,U}^{LTU} f^U }\right.$sL, LLTUfL + sL, TLTUfT + sL, ULTUfU$\displaystyle \left.\vphantom{ s_{L,L}^{LTU} f^L + s_{L,T}^{LTU} f^T + s_{L,U}^{LTU} f^U }\right)$VLTU = $\displaystyle \phi^{C}_{}$   ,
(26)
where sL, LLBD denotes the (L, L) element of the matrix $ \mathcal {S}$LBD defined by Eq. (19). The remaining S -matrix elements are defined analogously. We obtain the equation for fR from Eq. (25) by setting hR to unity and all the other face components of $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ to zero:

$\displaystyle \phi^{R}_{}$ + D-1$\displaystyle \left(\vphantom{ s_{R,R}^{RBD} f^R + s_{R,B}^{RBD} f^B + s_{R,D}^{RBD} f^D }\right.$sR, RRBDfR + sR, BRBDfB + sR, DRBDfD$\displaystyle \left.\vphantom{ s_{R,R}^{RBD} f^R + s_{R,B}^{RBD} f^B + s_{R,D}^{RBD} f^D }\right)$VRBD  
+ D-1$\displaystyle \left(\vphantom{ s_{R,R}^{RTD} f^R + s_{R,T}^{RTD} f^T + s_{R,D}^{RTD} f^D }\right.$sR, RRTDfR + sR, TRTDfT + sR, DRTDfD$\displaystyle \left.\vphantom{ s_{R,R}^{RTD} f^R + s_{R,T}^{RTD} f^T + s_{R,D}^{RTD} f^D }\right)$VRTD  
+ D-1$\displaystyle \left(\vphantom{ s_{R,R}^{RBU} f^R + s_{R,B}^{RBU} f^B + s_{R,U}^{RBU} f^U }\right.$sR, RRBUfR + sR, BRBUfB + sR, URBUfU$\displaystyle \left.\vphantom{ s_{R,R}^{RBU} f^R + s_{R,B}^{RBU} f^B + s_{R,U}^{RBU} f^U }\right)$VRBU  
+ D-1$\displaystyle \left(\vphantom{ s_{R,R}^{RTU} f^R + s_{R,T}^{RTU} f^T + s_{R,U}^{RTU} f^U }\right.$sR, RRTUfR + sR, TRTUfT + sR, URTUfU$\displaystyle \left.\vphantom{ s_{R,R}^{RTU} f^R + s_{R,T}^{RTU} f^T + s_{R,U}^{RTU} f^U }\right)$VRTU = $\displaystyle \phi^{C}_{}$   .
(27)
We obtain the equation for fB from Eq. (25) by setting hB to unity and all the other face components of $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ to zero:

$\displaystyle \phi^{B}_{}$ + D-1$\displaystyle \left(\vphantom{ s_{B,L}^{LBD} f^L + s_{B,B}^{LBD} f^B + s_{B,D}^{LBD} f^D }\right.$sB, LLBDfL + sB, BLBDfB + sB, DLBDfD$\displaystyle \left.\vphantom{ s_{B,L}^{LBD} f^L + s_{B,B}^{LBD} f^B + s_{B,D}^{LBD} f^D }\right)$VLBD  
+ D-1$\displaystyle \left(\vphantom{ s_{B,R}^{RBD} f^R + s_{B,B}^{RBD} f^B + s_{B,D}^{RBD} f^D }\right.$sB, RRBDfR + sB, BRBDfB + sB, DRBDfD$\displaystyle \left.\vphantom{ s_{B,R}^{RBD} f^R + s_{B,B}^{RBD} f^B + s_{B,D}^{RBD} f^D }\right)$VRBD  
+ D-1$\displaystyle \left(\vphantom{ s_{B,L}^{LBU} f^L + s_{B,B}^{LBU} f^B + s_{B,U}^{LBU} f^U }\right.$sB, LLBUfL + sB, BLBUfB + sB, ULBUfU$\displaystyle \left.\vphantom{ s_{B,L}^{LBU} f^L + s_{B,B}^{LBU} f^B + s_{B,U}^{LBU} f^U }\right)$VLBU  
+ D-1$\displaystyle \left(\vphantom{ s_{B,R}^{RBU} f^R + s_{B,B}^{RBU} f^B + s_{B,U}^{RBU} f^U }\right.$sB, RRBUfR + sB, BRBUfB + sB, URBUfU$\displaystyle \left.\vphantom{ s_{B,R}^{RBU} f^R + s_{B,B}^{RBU} f^B + s_{B,U}^{RBU} f^U }\right)$VRBU = $\displaystyle \phi^{C}_{}$   .
(28)
We obtain the equation for fT from Eq. (25) by setting hT to unity and all the other face components of $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ to zero:

$\displaystyle \phi^{T}_{}$ + D-1$\displaystyle \left(\vphantom{ s_{T,L}^{LTD} f^L + s_{T,T}^{LTD} f^T + s_{T,D}^{LTD} f^D }\right.$sT, LLTDfL + sT, TLTDfT + sT, DLTDfD$\displaystyle \left.\vphantom{ s_{T,L}^{LTD} f^L + s_{T,T}^{LTD} f^T + s_{T,D}^{LTD} f^D }\right)$VLTD  
+ D-1$\displaystyle \left(\vphantom{ s_{T,R}^{RTD} f^R + s_{T,T}^{RTD} f^T + s_{T,D}^{RTD} f^D }\right.$sT, RRTDfR + sT, TRTDfT + sT, DRTDfD$\displaystyle \left.\vphantom{ s_{T,R}^{RTD} f^R + s_{T,T}^{RTD} f^T + s_{T,D}^{RTD} f^D }\right)$VRTD  
+ D-1$\displaystyle \left(\vphantom{ s_{T,L}^{LTU} f^L + s_{T,T}^{LTU} f^T + s_{T,U}^{LTU} f^U }\right.$sT, LLTUfL + sT, TLTUfT + sT, ULTUfU$\displaystyle \left.\vphantom{ s_{T,L}^{LTU} f^L + s_{T,T}^{LTU} f^T + s_{T,U}^{LTU} f^U }\right)$VLTU  
+ D-1$\displaystyle \left(\vphantom{ s_{T,R}^{RTU} f^R + s_{T,T}^{RTU} f^T + s_{T,U}^{RTU} f^U }\right.$sT, RRTUfR + sT, TRTUfT + sT, URTUfU$\displaystyle \left.\vphantom{ s_{T,R}^{RTU} f^R + s_{T,T}^{RTU} f^T + s_{T,U}^{RTU} f^U }\right)$VRTU = $\displaystyle \phi^{C}_{}$   .
(29)
We obtain the equation for fD from Eq. (25) by setting hD to unity and all the other face components of $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ to zero:

$\displaystyle \phi^{D}_{}$ + D-1$\displaystyle \left(\vphantom{ s_{D,L}^{LBD} f^L + s_{D,B}^{LBD} f^B + s_{D,D}^{LBD} f^D }\right.$sD, LLBDfL + sD, BLBDfB + sD, DLBDfD$\displaystyle \left.\vphantom{ s_{D,L}^{LBD} f^L + s_{D,B}^{LBD} f^B + s_{D,D}^{LBD} f^D }\right)$VLBD  
+ D-1$\displaystyle \left(\vphantom{ s_{D,R}^{RBD} f^R + s_{D,B}^{RBD} f^B + s_{D,D}^{RBD} f^D }\right.$sD, RRBDfR + sD, BRBDfB + sD, DRBDfD$\displaystyle \left.\vphantom{ s_{D,R}^{RBD} f^R + s_{D,B}^{RBD} f^B + s_{D,D}^{RBD} f^D }\right)$VRBD  
+ D-1$\displaystyle \left(\vphantom{ s_{D,L}^{LTD} f^L + s_{D,T}^{LTD} f^T + s_{D,D}^{LTD} f^D }\right.$sD, LLTDfL + sD, TLTDfT + sD, DLTDfD$\displaystyle \left.\vphantom{ s_{D,L}^{LTD} f^L + s_{D,T}^{LTD} f^T + s_{D,D}^{LTD} f^D }\right)$VLTD  
+ D-1$\displaystyle \left(\vphantom{ s_{D,R}^{RTD} f^R + s_{D,T}^{RTD} f^T + s_{D,D}^{RTD} f^D }\right.$sD, RRTDfR + sD, TRTDfT + sD, DRTDfD$\displaystyle \left.\vphantom{ s_{D,R}^{RTD} f^R + s_{D,T}^{RTD} f^T + s_{D,D}^{RTD} f^D }\right)$VRTD = $\displaystyle \phi^{C}_{}$   .
(30)
Finally, we obtain the equation for fU from Eq. (25) by setting hU to unity and all the other face components of $ \mbox{$\stackrel{^{\mathstrut}\smash{\longrightarrow}}{H}$}$ to zero:

$\displaystyle \phi^{U}_{}$ + D-1$\displaystyle \left(\vphantom{ s_{U,L}^{LBU} f^L + s_{U,B}^{LBU} f^B + s_{U,U}^{LBU} f^U }\right.$sU, LLBUfL + sU, BLBUfB + sU, ULBUfU$\displaystyle \left.\vphantom{ s_{U,L}^{LBU} f^L + s_{U,B}^{LBU} f^B + s_{U,U}^{LBU} f^U }\right)$VLBU  
+ D-1$\displaystyle \left(\vphantom{ s_{U,R}^{RBU} f^R + s_{U,B}^{RBU} f^B + s_{U,U}^{RBU} f^U }\right.$sU, RRBUfR + sU, BRBUfB + sU, URBUfU$\displaystyle \left.\vphantom{ s_{U,R}^{RBU} f^R + s_{U,B}^{RBU} f^B + s_{U,U}^{RBU} f^U }\right)$VRBU  
+ D-1$\displaystyle \left(\vphantom{ s_{U,L}^{LTU} f^L + s_{U,T}^{LTU} f^T + s_{U,U}^{LTU} f^U }\right.$sU, LLTUfL + sU, TLTUfT + sU, ULTUfU$\displaystyle \left.\vphantom{ s_{U,L}^{LTU} f^L + s_{U,T}^{LTU} f^T + s_{U,U}^{LTU} f^U }\right)$VLTU  
+ D-1$\displaystyle \left(\vphantom{ s_{U,R}^{RTU} f^R + s_{U,T}^{RTU} f^T + s_{U,U}^{RTU} f^U }\right.$sU, RRTUfR + sU, TRTUfT + sU, URTUfU$\displaystyle \left.\vphantom{ s_{U,R}^{RTU} f^R + s_{U,T}^{RTU} f^T + s_{U,U}^{RTU} f^U }\right)$VRTU = $\displaystyle \phi^{C}_{}$   .
(31)
Equations (26) through (31) can be expressed in matrix form as follows:

W-1$\displaystyle \hat{{\mathcal{F}}}$ = $\displaystyle \Delta$$\displaystyle \hat{{\Phi}}$   , (32)
where

$\displaystyle \hat{{\mathcal{F}}}$ = $\displaystyle \left(\vphantom{ f^L, f^R, f^B, f^T, f^D, f^U }\right.$fL, fR, fB, fT, fD, fU$\displaystyle \left.\vphantom{ f^L, f^R, f^B, f^T, f^D, f^U }\right)^{{t}}_{}$   , (33)
and

$\displaystyle \Delta$$\displaystyle \hat{{\Phi}}$ = $\displaystyle \left(\vphantom{ \phi^C -\phi^L, \phi^C - \phi^R, \phi^C - \phi^B,
\phi^C - \phi^T, \phi^C - \phi^D, \phi^C - \phi^U }\right.$$\displaystyle \phi^{C}_{}$ - $\displaystyle \phi^{L}_{}$,$\displaystyle \phi^{C}_{}$ - $\displaystyle \phi^{R}_{}$,$\displaystyle \phi^{C}_{}$ - $\displaystyle \phi^{B}_{}$,$\displaystyle \phi^{C}_{}$ - $\displaystyle \phi^{T}_{}$,$\displaystyle \phi^{C}_{}$ - $\displaystyle \phi^{D}_{}$,$\displaystyle \phi^{C}_{}$ - $\displaystyle \phi^{U}_{}$$\displaystyle \left.\vphantom{ \phi^C -\phi^L, \phi^C - \phi^R, \phi^C - \phi^B,
\phi^C - \phi^T, \phi^C - \phi^D, \phi^C - \phi^U }\right)^{{t}}_{}$   . (34)
To obtain a matrix that gives the face-center components of the flux operator in terms of the face-center and cell-center intensities, one need simply invert the 6 x 6 matrix in Eq. (32):