I have been trying to get this FVM geometry data re-distribution to work
using DMPlexDistributeField().
It seems to be working OK for the cell geometry data (cell volumes and
centroids). But it is making a mess of the face geometry data (face
normals and centroids).
Should I even expect DMPlexDistributeField() to work for redistributing
a vector of data defined on mesh faces? Or is there some reason I
haven't thought of, which means that will never work?
The only example I could find anywhere of DMPlexDistributeField() being
used is in DMPlexDistributeCoordinates() so I've been basing what I'm
doing on that.
(I think I have answered my own questions below by experiment- 1) local
vectors should work (they do in DMPlexDistributeCoordinates); 2)
probably doesn't matter; 3) yes.)
- Adrian
On 6/06/19 1:42 PM, Adrian Croucher wrote:
hi
I have some questions about using the DMPlexDistributeField()
function. I have finite volume mesh geometry data stored in two local
vectors created using DMPlexComputeGeometryFVM(), and I need to
redistribute these after calling DMPlexDistribute() to redistribute my
mesh. (I need the geometry data before redistribution, so I can't just
wait until after redistribution to create them.)
So I figured DMPlexDistributeField() looks like the thing to use for
that, using the SF that comes out of DMPlexDistribute().
1) Does DMPlexDistributeField() work on local vectors or do they have
to be global ones?
2) It takes a 'dm' parameter and the documentation says this is "The
DMPlex object", but is that the original DM (before redistribution) or
the redistributed one, or does it not matter? It looks like it only
uses the DM to get the vector type.
3) It looks like you need to manually create the newSection and newVec
output parameters before passing them in to this routine, is that
correct?
- Adrian
--
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
University of Auckland, New Zealand
email: [email protected]
tel: +64 (0)9 923 4611