[petsc-users] DMPlex doubt
Mark Adams
mfadams at lbl.gov
Mon Jul 26 07:59:08 CDT 2021
By 'point 2' if you mean the nodes that touch a cells (c==2 below) you can
use something like:
PetscScalar *coef = NULL;
Vec coords;
PetscInt csize,Nv,d,nz;
DM cdm;
PetscSection cs;
ierr = DMPlexGetHeightStratum(plex,0,&cStart,&cEnd);CHKERRQ(ierr);
ierr = DMGetCoordinatesLocal(dm, &coords);CHKERRQ(ierr);
ierr = DMGetCoordinateDM(dm, &cdm);CHKERRQ(ierr);
ierr = DMGetLocalSection(cdm, &cs);CHKERRQ(ierr);
for (c = cStart; c < cEnd; c++) {
ierr = DMPlexVecGetClosure(cdm, cs, coords, c, &csize,
&coef);CHKERRQ(ierr);
If you want indices and offsets use DMPlexGetClosureIndices (
https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMPLEX/DMPlexGetClosureIndices.html)
instead.
I think you want the offsets.
Mark
On Sun, Jul 25, 2021 at 9:43 PM Miguel Angel Tapia <miguel.td19 at outlook.com>
wrote:
> I'm really sorry, I should have explained it more specifically.
>
> This is the situation. I am using a very simple mesh to learn and test
> with DMPlex. My mesh has these nodes:
> 1 0 0 0
> 2 1 0 0
> 3 1 1 0
> 4 0 1 0
> 5 0 0 1
> 6 1 0 1
> 7 1 1 1
> 8 0 1 1
> 9 0.5 0.5 1
> 10 0.5 0 0.5
> 11 1 0.5 0.5
> 12 0.5 1 0.5
> 13 0 0.5 0.5
> 14 0.5 0.5 0
>
> Executing in a single process these 14 nodes take values from 24 to 37.
> I would like to know how to obtain the coordinates through DMPlex. I know
> that using DMGetCoordinatesLocal I get the vector of all coordinates. But I
> would like to be more specific. For example, I choose point 2 of the DAG of
> the mesh that I am using, this point is formed by nodes 32, 33, 34 and 36
> according to the order of the DAG. How can I know the coordinates of those
> specific nodes?
>
> And if I know those coordinates, I can see which points are from the
> original mesh and verify that they are the same in the software to which I
> want to implement DMPlex. Maybe this is very simple, but I am just learning
> the use of the tool and right now my job is to know if I can obtain the
> same results with DMPlex as the code I want to modify.
> ------------------------------
> *De:* Mark Adams <mfadams at lbl.gov>
> *Enviado:* domingo, 25 de julio de 2021 06:43 a. m.
> *Para:* Miguel Angel Tapia <miguel.td19 at outlook.com>
> *CC:* petsc-users at mcs.anl.gov <petsc-users at mcs.anl.gov>
> *Asunto:* Re: [petsc-users] DMPlex doubt
>
> This is a Matt question and I recall a question on getting the original
> node ordering recently, but I am not finding it.
>
> How is your Plex created? If you give it a mesh and don't distribute it
> the node ordering does not change.
> In that case you can use a simpler version Brandon's code:
> ierr = DMGetCoordinatesLocal(dm, &coordinates);CHKERRQ(ierr);
> Then use VecView.
>
> However, I don't understand what you are trying to do exactly. Are you
> just verifying that PLex has the correct coordinates?
>
> Mark
>
> On Sat, Jul 24, 2021 at 9:58 AM Miguel Angel Tapia <
> miguel.td19 at outlook.com> wrote:
>
> Hello. I am a master's student in Mexico. I am currently working on a
> project in which we are implementing DMPlex in a code for electromagnetic
> modeling. Right now I am working on understanding the tool in C. But I'm
> stuck on something and that's why my next doubt:
>
> I am trying to get the coordinates of the nodes of a mesh in DMPlex. I
> already understood how the DAG is structured, how to obtain the nodes that
> make up some point. But the ordering of the nodes changes in DMPlex. So I
> need to know the coordinates of each node to compare them with my initial
> mesh and confirm that the same nodes form the same point in the software I
> am using as well as in the DMPlex DAG.
>
> It would be great if you could guide me a bit on how to do this or
> indicate which DMPlex examples would be good to review or which examples
> solve something similar to my situation.
>
> Thank you in advance. Regards.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20210726/c2408a5b/attachment.html>
More information about the petsc-users
mailing list