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

Reply via email to