<!DOCTYPE html>
<!-- BaNnErBlUrFlE-BoDy-start -->
<!-- Preheader Text : BEGIN -->
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;height:0px;max-height:0px;opacity:0;overflow:hidden;">
Hi Matthew, we have our own format that uses MPI I/O for the initial read, then we would like to do almost exactly what we do in ex47. c (https: //petsc. org/main/src/dm/impls/plex/tests/ex47. c. html) excepted the very beginning of the program
</div>
<!-- Preheader Text : END -->
<!-- Email Banner : BEGIN -->
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;height:0px;max-height:0px;opacity:0;overflow:hidden;">ZjQcmQRYFpfptBannerStart</div>
<!--[if ((ie)|(mso))]>
<table border="0" cellspacing="0" cellpadding="0" width="100%" style="padding: 16px 0px 16px 0px; direction: ltr" ><tr><td>
<table border="0" cellspacing="0" cellpadding="0" style="padding: 0px 10px 5px 6px; width: 100%; border-radius:4px; border-top:4px solid #90a4ae;background-color:#D0D8DC;"><tr><td valign="top">
<table align="left" border="0" cellspacing="0" cellpadding="0" style="padding: 4px 8px 4px 8px">
<tr><td style="color:#000000; font-family: 'Arial', sans-serif; font-weight:bold; font-size:14px; direction: ltr">
This Message Is From an External Sender
</td></tr>
<tr><td style="color:#000000; font-weight:normal; font-family: 'Arial', sans-serif; font-size:12px; direction: ltr">
This message came from outside your organization.
</td></tr>
</table>
</td></tr></table>
</td></tr></table>
<![endif]-->
<![if !((ie)|(mso))]>
<div dir="ltr" id="pfptBannergbdkq60" style="all: revert !important; display:block !important; text-align: left !important; margin:16px 0px 16px 0px !important; padding:8px 16px 8px 16px !important; border-radius: 4px !important; min-width: 200px !important; background-color: #D0D8DC !important; background-color: #D0D8DC; border-top: 4px solid #90a4ae !important; border-top: 4px solid #90a4ae;">
<div id="pfptBannergbdkq60" style="all: unset !important; float:left !important; display:block !important; margin: 0px 0px 1px 0px !important; max-width: 600px !important;">
<div id="pfptBannergbdkq60" style="all: unset !important; display:block !important; visibility: visible !important; background-color: #D0D8DC !important; color:#000000 !important; color:#000000; font-family: 'Arial', sans-serif !important; font-family: 'Arial', sans-serif; font-weight:bold !important; font-weight:bold; font-size:14px !important; line-height:18px !important; line-height:18px">
This Message Is From an External Sender
</div>
<div id="pfptBannergbdkq60" style="all: unset !important; display:block !important; visibility: visible !important; background-color: #D0D8DC !important; color:#000000 !important; color:#000000; font-weight:normal; font-family: 'Arial', sans-serif !important; font-family: 'Arial', sans-serif; font-size:12px !important; line-height:18px !important; line-height:18px; margin-top:2px !important;">
This message came from outside your organization.
</div>
</div>
<div style="clear: both !important; display: block !important; visibility: hidden !important; line-height: 0 !important; font-size: 0.01px !important; height: 0px"> </div>
</div>
<![endif]>
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;height:0px;max-height:0px;opacity:0;overflow:hidden;">ZjQcmQRYFpfptBannerEnd</div>
<!-- Email Banner : END -->
<!-- BaNnErBlUrFlE-BoDy-end -->
<html>
<head><!-- BaNnErBlUrFlE-HeAdEr-start -->
<style>
#pfptBannergbdkq60 { all: revert !important; display: block !important;
visibility: visible !important; opacity: 1 !important;
background-color: #D0D8DC !important;
max-width: none !important; max-height: none !important }
.pfptPrimaryButtongbdkq60:hover, .pfptPrimaryButtongbdkq60:focus {
background-color: #b4c1c7 !important; }
.pfptPrimaryButtongbdkq60:active {
background-color: #90a4ae !important; }
</style>
<!-- BaNnErBlUrFlE-HeAdEr-end -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi Matthew,</p>
<p>we have our own format that uses MPI I/O for the initial read,
then we would like to do almost exactly what we do in ex47.c
(<a class="moz-txt-link-freetext" href="https://urldefense.us/v3/__https://petsc.org/main/src/dm/impls/plex/tests/ex47.c.html__;!!G_uCfscf7eWS!cgLnoLq-w8YlD_y4ZrBQbY1i_SgBSKmVRFIOZU9rULyu9jowettkaC7Srlg-sjuHlrXIjItOOY-dgiXMDyfGE3fljVcPVgrTfu5bKTR_$">https://petsc.org/main/src/dm/impls/plex/tests/ex47.c.html</a>)
excepted the very beginning of the program that will read (MPI
I/O) from the disk. Then, always in parallel:<br>
</p>
<p>1- Populate a DMPlex with multiple element types (with a variant
of DMPlexBuildFromCellListParallel ? do you have an example of
this?)<br>
</p>
<p>2- Call partitioning (DMPlexDistribute)</p>
<p>3- Compute overlap (DMPlexDistributeOverlap)</p>
<p>4- Also compute the corresponding mapping between original
element numbers and partitonned+overlap elements (
DMPlexNaturalToGlobalBegin/End)<br>
</p>
<p>The main point here here is overlap computation. And the big
challenge is that we must always rely on the fact that never,
ever, any node read all the mesh: all nodes have only a small part
of it at the beginning then we want parallel partitioning and
overlapping computation...</p>
<p>It is now working fine for a mesh with a single type of element,
but if we can modify ex47.c with an example of a mixed element
types that will achieve what we would like to do!<br>
</p>
<p>Thanks,</p>
<p>Eric</p>
<p><br>
</p>
<div class="moz-cite-prefix">On 2024-07-31 22:09, Matthew Knepley
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAMYG4GkuqSvaPJYXV2wF+w-dfge_NtSzUncRZ8AKbyXaxuaJfg@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="ltr">On Wed, Jul 31, 2024 at 4:16 PM Eric Chamberland
<<a href="mailto:Eric.Chamberland@giref.ulaval.ca"
moz-do-not-send="true" class="moz-txt-link-freetext">Eric.Chamberland@giref.ulaval.ca</a>>
wrote:<br>
</div>
<div class="gmail_quote">
<blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<p>Hi Vaclav,</p>
<p>Okay, I am coming back with this question after some
time... ;)</p>
<p>I am just wondering if it is now possible to call
DMPlexBuildFromCellListParallel or something else, to
build a mesh that combine different element types into a
single DMPlex (in parallel of course) ?</p>
</div>
</blockquote>
<div>1) Meshes with different cell types are fully functional,
and some applications have been using them for a while now.</div>
<div><br>
</div>
<div>2) The Firedrake I/O methods support these hybrid
meshes. </div>
<div><br>
</div>
<div>3) You can, for example, read in a GMsh or ExodusII file
with different cell types.</div>
<div><br>
</div>
<div>However, there is no direct interface like
DMPlexBuildFromCellListParallel(). If you plan on creating
meshes by hand, I can build that for you.</div>
<div>No one so far has wanted that. Rather they want to read
in a mesh in some format, or alter a base mesh by inserting
other cell types.</div>
<div><br>
</div>
<div>So, what is the motivating use case?</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<p>Thanks,</p>
<p>Eric<br>
</p>
<div>On 2021-09-23 11:30, Hapla Vaclav wrote:<br>
</div>
<blockquote type="cite"> Note there will soon be a
generalization of DMPlexBuildFromCellListParallel()
around, as a side product of our current collaborative
efforts with Firedrake guys. It will take a PetscSection
instead of relying on the blocksize [which is indeed
always constant for the given dataset]. Stay tuned.
<div>
<div><br>
</div>
<div><a href="https://urldefense.us/v3/__https://gitlab.com/petsc/petsc/-/merge_requests/4350__;!!G_uCfscf7eWS!cgLnoLq-w8YlD_y4ZrBQbY1i_SgBSKmVRFIOZU9rULyu9jowettkaC7Srlg-sjuHlrXIjItOOY-dgiXMDyfGE3fljVcPVgrTfvLIunXK$" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">https://gitlab.com/petsc/petsc/-/merge_requests/4350</a></div>
<div><br>
</div>
<div>Thanks,</div>
<div><br>
</div>
<div>Vaclav</div>
<div>
<div><br>
<blockquote type="cite">
<div>On 23 Sep 2021, at 16:53, Eric Chamberland
<<a
href="mailto:Eric.Chamberland@giref.ulaval.ca" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">Eric.Chamberland@giref.ulaval.ca</a>>
wrote:</div>
<br>
<div>
<div>
<p>Hi,</p>
<p>oh, that's a great news!</p>
<p>In our case we have our home-made
file-format, invariant to the number of
processes (thanks to MPI_File_set_view),
that uses collective, asynchronous MPI I/O
native calls for unstructured hybrid
meshes and fields .</p>
<p>So our needs are not for reading meshes
but only to fill an hybrid DMPlex with
DMPlexBuildFromCellListParallel (or
something else to come?)... to exploit
petsc partitioners and parallel overlap
computation...<br>
</p>
<p>Thanks for the follow-up! :)<br>
</p>
<p>Eric<br>
</p>
<p><br>
</p>
<div>On 2021-09-22 7:20 a.m., Matthew
Knepley wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div dir="ltr">On Wed, Sep 22, 2021 at
3:04 AM Karin&NiKo <<a
href="mailto:niko.karin@gmail.com"
target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">niko.karin@gmail.com</a>>
wrote:<br>
</div>
<div class="gmail_quote">
<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">Dear Matthew,
<div><br>
</div>
<div>This is great news!</div>
<div>For my part, I would be
mostly interested in the
parallel input interface. Sorry
for that... </div>
<div>Indeed, in our application,
we already have a parallel mesh
data structure that supports
hybrid meshes with parallel I/O
and distribution (based on the
MED format). We would like to
use a DMPlex to make parallel
mesh adaptation.</div>
<div> As a matter of fact, all our
meshes are in the MED format. We
could also contribute to extend
the interface of DMPlex with MED
(if you consider it could be
usefull).</div>
</div>
</blockquote>
<div><br>
</div>
<div>An MED interface does exist. I
stopped using it for two reasons:</div>
<div><br>
</div>
<div> 1) The code was not portable
and the build was failing on
different architectures. I had to
manually fix it.</div>
<div><br>
</div>
<div> 2) The boundary markers did not
provide global information, so that
parallel reading was much harder.</div>
<div><br>
</div>
<div>Feel free to update my MED reader
to a better design.</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</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">
<div>Best regards,</div>
<div>Nicolas</div>
<div><br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">Le mar.
21 sept. 2021 à 21:56, Matthew
Knepley <<a
href="mailto:knepley@gmail.com" target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">knepley@gmail.com</a>>
a écrit :<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">
<div dir="ltr">On Tue, Sep 21,
2021 at 10:31 AM
Karin&NiKo <<a
href="mailto:niko.karin@gmail.com" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">niko.karin@gmail.com</a>> wrote:<br>
</div>
<div class="gmail_quote">
<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">Dear Eric,
dear Matthew,
<div><br>
</div>
<div>I share Eric's
desire to be able to
manipulate meshes
composed of different
types of elements in a
PETSc's DMPlex. </div>
<div>Since this
discussion, is there
anything new on this
feature for the
DMPlex object or am I
missing something?</div>
</div>
</blockquote>
<div><br>
</div>
<div>Thanks for finding
this!</div>
<div><br>
</div>
<div>Okay, I did a rewrite
of the Plex internals this
summer. It should now be
possible to interpolate a
mesh with any</div>
<div>number of cell types,
partition it, redistribute
it, and many other
manipulations.</div>
<div><br>
</div>
<div>You can read in some
formats that support
hybrid meshes. If you let
me know how you plan to
read it in, we can make it
work.</div>
<div>Right now, I don't want
to make input interfaces
that no one will ever use.
We have a project, joint
with Firedrake, to
finalize</div>
<div>parallel I/O. This will
make parallel reading and
writing for checkpointing
possible, supporting
topology, geometry, fields
and</div>
<div>layouts, for many
meshes in one HDF5 file. I
think we will finish in
November.</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</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">
<div>Thanks,</div>
<div>Nicolas</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr"
class="gmail_attr">Le mer.
21 juil. 2021 à 04:25,
Eric Chamberland <<a
href="mailto:Eric.Chamberland@giref.ulaval.ca" target="_blank"
moz-do-not-send="true" class="moz-txt-link-freetext">Eric.Chamberland@giref.ulaval.ca</a>>
a écrit :<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>
<p>Hi,<br>
</p>
<div>On 2021-07-14
3:14 p.m., Matthew
Knepley wrote:<br>
</div>
<blockquote
type="cite">
<div dir="ltr">
<div dir="ltr">On
Wed, Jul 14,
2021 at 1:25
PM Eric
Chamberland
<<a
href="mailto:Eric.Chamberland@giref.ulaval.ca" target="_blank"
moz-do-not-send="true" class="moz-txt-link-freetext">Eric.Chamberland@giref.ulaval.ca</a>>
wrote:<br>
</div>
<div
class="gmail_quote">
<blockquote
class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Hi,<br>
<br>
while playing
with
DMPlexBuildFromCellListParallel,
I noticed we
have to <br>
specify
"numCorners"
which is a
fixed value,
then gives a
fixed number <br>
of nodes for a
series of
elements.<br>
<br>
How can I then
add, for
example,
triangles and
quadrangles
into a DMPlex?<br>
</blockquote>
<div><br>
</div>
<div>You can't
with that
function. It
would be much
mich more
complicated if
you could, and
I am not sure</div>
<div>it is
worth it for
that function.
The reason is
that you would
need index
information to
offset into
the</div>
<div>connectivity
list, and that
would need to
be replicated
to some extent
so that all
processes know
what</div>
<div>the
others are
doing.
Possible, but
complicated.</div>
<div><br>
</div>
<div>Maybe I
can help
suggest
something for
what you are
trying to do?</div>
</div>
</div>
</blockquote>
<p>Yes: we are
trying to
partition our
parallel mesh with
PETSc functions.
The mesh has been
read in parallel
so each process
owns a part of it,
but we have to
manage mixed
elements types.</p>
<p>When we directly
use
ParMETIS_V3_PartMeshKway,
we give two arrays
to describe the
elements which
allows mixed
elements.</p>
<p>So, how would I
read my mixed mesh
in parallel and
give it to PETSc
DMPlex so I can
use a
PetscPartitioner
with
DMPlexDistribute ?</p>
<p>A second goal we
have is to use
PETSc to compute
the overlap, which
is something I
can't find in
PARMetis (and any
other
partitionning
library?)</p>
<p>Thanks,</p>
<p>Eric<br>
</p>
<p><br>
</p>
<blockquote
type="cite">
<div dir="ltr">
<div
class="gmail_quote">
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div>
Matt</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">
Thanks,<br>
<br>
Eric<br>
<br>
-- <br>
Eric
Chamberland,
ing., M. Ing<br>
Professionnel
de recherche<br>
GIREF/Université Laval<br>
(418) 656-2131
poste 41 22 42<br>
<br>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">
<div dir="ltr">
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div>What most
experimenters
take for
granted before
they begin
their
experiments is
infinitely
more
interesting
than any
results to
which their
experiments
lead.<br>
-- Norbert
Wiener</div>
<div><br>
</div>
<div><a href="https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!cgLnoLq-w8YlD_y4ZrBQbY1i_SgBSKmVRFIOZU9rULyu9jowettkaC7Srlg-sjuHlrXIjItOOY-dgiXMDyfGE3fljVcPVgrTfmYFl_DF$" target="_blank" moz-do-not-send="true">https://www.cse.buffalo.edu/~knepley/</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<pre cols="72">--
Eric Chamberland, ing., M. Ing
Professionnel de recherche
GIREF/Université Laval
(418) 656-2131 poste 41 22 42</pre>
</div>
</blockquote>
</div>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">
<div dir="ltr">
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div>What most
experimenters
take for granted
before they
begin their
experiments is
infinitely more
interesting than
any results to
which their
experiments
lead.<br>
-- Norbert
Wiener</div>
<div><br>
</div>
<div><a href="https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!cgLnoLq-w8YlD_y4ZrBQbY1i_SgBSKmVRFIOZU9rULyu9jowettkaC7Srlg-sjuHlrXIjItOOY-dgiXMDyfGE3fljVcPVgrTfmYFl_DF$" target="_blank" moz-do-not-send="true">https://www.cse.buffalo.edu/~knepley/</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr" class="gmail_signature">
<div dir="ltr">
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div>What most experimenters
take for granted before
they begin their
experiments is infinitely
more interesting than any
results to which their
experiments lead.<br>
-- Norbert Wiener</div>
<div><br>
</div>
<div><a href="https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!cgLnoLq-w8YlD_y4ZrBQbY1i_SgBSKmVRFIOZU9rULyu9jowettkaC7Srlg-sjuHlrXIjItOOY-dgiXMDyfGE3fljVcPVgrTfmYFl_DF$" target="_blank" moz-do-not-send="true">https://www.cse.buffalo.edu/~knepley/</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<pre cols="72">--
Eric Chamberland, ing., M. Ing
Professionnel de recherche
GIREF/Université Laval
(418) 656-2131 poste 41 22 42</pre>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
<pre cols="72">--
Eric Chamberland, ing., M. Ing
Professionnel de recherche
GIREF/Université Laval
(418) 656-2131 poste 41 22 42</pre>
</div>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
<span class="gmail_signature_prefix">-- </span><br>
<div dir="ltr" class="gmail_signature">
<div dir="ltr">
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div>What most experimenters take for granted before
they begin their experiments is infinitely more
interesting than any results to which their
experiments lead.<br>
-- Norbert Wiener</div>
<div><br>
</div>
<div><a href="https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!cgLnoLq-w8YlD_y4ZrBQbY1i_SgBSKmVRFIOZU9rULyu9jowettkaC7Srlg-sjuHlrXIjItOOY-dgiXMDyfGE3fljVcPVgrTfmYFl_DF$" target="_blank" moz-do-not-send="true">https://www.cse.buffalo.edu/~knepley/</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<pre class="moz-signature" cols="72">--
Eric Chamberland, ing., M. Ing
Professionnel de recherche
GIREF/Université Laval
(418) 656-2131 poste 41 22 42</pre>
</body>
</html>