<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 12 Sep 2019 at 20:21, Emmanuel Ayala via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi everyone, it would be great if someone can give me a hint for this issue, i have been trying to figure out how to solve it, but i did not succeed<br><br>I'm using DMDA to generate a 3D mesh (DMDA_ELEMENT_Q1). I'm trying to fill a MPI matrix with some values wich are related to the dofs of each element node, moreover i need to set this values based on the element number. Something like:<br><br>mpi_A(total_elements X total_dofs)<br><br>                                                                   total_dofs<br>row_0 (element_0)                        a_0 a_1 a_2 ... a_23<br>row_1 (element_1)                                                     a_0 a_1 a_2 ... a_23<br>row_2 (element_2)                                                                                    a_0 a_1 a_2 ... a_23<br>.<br>.<br>.<br>row_n (element_n)                                     a_0 a_1 a_2 ... a_23 <br><br>The element number is related to the row index. And the matrix values are set depending of the DOFs related to the element.<br><br>With DMDAGetElements i can read the LOCAL nodes connected to the element and then the DOFs associated to the element. I can handle the local and global relations with DMGetLocalToGlobalMapping, MatSetLocalToGlobalMapping and MatSetValuesLocal. BUT i CAN NOT understand how to know the element number in LOCAL or GLOBAL contex. DMDAGetElements gives the NUMBER OF ELEMENTS owned in the local process, but there is not any information about the local or global ELEMENT NUMBER.<br><br>How to know the local or global element number related to the data provided by DMDAGetElements? <br></div></blockquote><div><br></div><div>The DMDA defines cells of the same type (quads (2D) or hex (3D), hence every cell defines the same number of vertices.</div><div><br></div><div><div>DMDAGetElements(DM dm,PetscInt *nel,PetscInt *nen,const PetscInt *e[])</div></div><div><div>nel<span style="white-space:pre-wrap">  </span>- number of local elements</div><div>nen<span style="white-space:pre-wrap">    </span>- number of element nodes</div><div>e<span style="white-space:pre-wrap">       </span>- the local indices of the elements' vertices</div></div><div><br></div><div>e[] defines the ordering of the elements. e[] is an array containing all of the element-vertex maps. Since each element in the DMDA has the same number of vertices, the first nen values in e[] correspond to the vertices (local index) associated with the first element. The next nen values in e[] correspond to the vertices of the second element.  The vertices for any (local) element with the index "cid" can be sought via e[nen*cid + i] where i would range from 0 to nen-1.</div><div><br></div><div>Why would you ever want, or need, the global element number? What is the use case?</div><div><br></div><div>Thanks,</div><div>Dave</div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br>Thank you.</div>
</blockquote></div></div></div></div></div>