Some answers to Chevron.cc questions
Scott Haney
scotth at proximation.com
Fri Jul 27 14:57:06 UTC 2001
Here are some answers to Jeffrey's questions from Chevron.cc.
/** QUESTIONS **/
// o. If several different fields are created using the same mesh
// object, is the mesh object shared?
We used to have a mesh abstraction, but I removed this while writing
fieldEngine for reasons that escape me right now. :-) This should
probably be restored, which would (1) enable the sensible sharing of
meshes that you describe and (2) allow for a generic implementation of
fieldEngine.
// o. Can meshes be queried without going through an associated field?
Once the mesh abstraction is restored, yes.
// o. According to my understanding, the Chevron algorithm should be
// imbedded inside a loop of some type that repeatedly updates the
// coordinates.
I don't think this is right. I thought this was an eulerian calculation.
It is, after all, just a liquid flowing through dirt. What part of the
paper
// o. I omitted a separate coordinates field, presumably updated each
// iteration, in favor of using the mesh. Since I do not know how
// the coordinates are updated, I omitted updating the mesh.
OK.
// o. Is it important to flesh out the linear algebra solution? We
// might learn something about field syntax, but it will also take
// time for me to determine the correct operands.
Yes, I think we should do this. This will be an interesting use of
neighbor operations in scalar code. Recall that we're simply solving for
the pressure gradient values that give continuity of the pressure at the
face centers and continuity of the fluxes at the spokes.
// o. The eight spoke-centered flux values are discontinuous, right?
Not really. Once we correctly solve for the pressure gradients, the flux
should be continuous.
// o. Creating non-canonical edge and face centerings requires
// dimension-dependent code. Is this acceptable?
No, it isn't acceptable. The good news is that I don't believe it
requires dimension dependent code. Figuring out how to do this will
teach us something about facilities we need to provide.
/** UNFINISHED WORK **/
// o ConstField = a Field with values that do not change
We used to have a ConstField, but we don't any more. We used to have
ConstArray as well. These were removed to simplify expressions. Putting
these back isn't, I think, something we want to do since they caused
more problems than what they solved.
// o nearestNeighbors(inputCentering, outputCentering)
// o replicate(field, std::vector<FieldOffsetList>)
Nice! But is "replicate" the right word?
// o meshLayout.unitCoordinateNormals()
This isn't something a layout should do. Is this just the N coordinate
normals, e.g., {(0,1),(1,0)}? If so, why a field? If not, what is this
exactly?
// o field.mesh()
We should be able to do this.
// o field.mesh().normals()
OK. I'm not sure we will do this as a member function, as above, or as
an external function
normals(field.mesh())
// o field.mesh().normals().signedMagnitude()
Is this just
mesh.faceAreas() * dot(mesh.normals(), mesh.positiveNormals()) ?
Anyway, this isn't a question for the normals, but we can certainly do
this.
// o sum(field, FieldOffsetList)
Sweeetttt. :-)
More information about the pooma-dev
mailing list