freepooma-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [pooma-dev] Chevron Flow Scenario


From: Jeffrey Oldham
Subject: Re: [pooma-dev] Chevron Flow Scenario
Date: Wed, 11 Apr 2001 15:25:34 -0700
User-agent: Mutt/1.2.5i

        I enjoyed reading your Chevron code description, which is much
more understandable than the original paper.

        As you noted, the Chevron flow (Lee et al.) algorithm is very
similar to the Carmana et al. hydrodynamics code.  To ease programming
the latter, I have previously proposed adding interpolation and
restriction operators to convert between coarser and finer-grain
fields.  To program the Lee et al. algorithm, the only additional
necessary Pooma tool is these operators although this algorithm points
to the need for these operators to work on face-centered fields.

      The two algorithms are similar:

o Both work on logically rectangular but non-orthogonal meshes.
o Both use fields with two different granularities: n x n x n and 2n x
2n x 2n.

        To implement the algorithm, first we would need to solve for
the pressure gradients \grad(P), which are cell-centered on the
finer-granularity field.  To compute the face-centered fluxes q on the
more refined field, use a C++ statement like

q = dot( dot( replicate<2>(K), \grad(P)), replicate<2>(normals));

replicate<2>(K) copies the cell-centered K values on a coarser grid
to the same cell-centered values on a finer grid.  Thus, the inner
dot product between two cell-centered finer-granularity fields makes
sense.  replicate<2>(normals) copies the face-centered normal values
from a coarser grid to the same values on a finer grid.  Thus, the
outer dot product is between two fields using the same granularity,
albeit with different centerings.

        To implement the computation

\[ Q = \sum_{faces} s_f A_f \sum_{sub-faces} q_{sf}, \]

we could use the C++ statement

Q = adder(A, sum<2>(q));

sum<2>(q) restricts the face-centered values from the
finer-granularity field q to a coarser field by summing the values
along each face.  Note this restriction operator discards the inner
face-centered values.  The user-defined adder field stencil performs
the outer-most sum using the coarser face-centered field A and the
coarser face-centered field sum<2>(q).

        Thus I believe interpolation and restriction operators are the
right abstraction to will support fields with differing granularities.

Thanks,
Jeffrey D. Oldham
address@hidden

reply via email to

[Prev in Thread] Current Thread [Next in Thread]