"You know the number of cells if you can read connectivity. Do you mean that 
the format does not tell you
the number of vertices?"

Sort of...
So, the format does provide the number of vertices, however, due to the way I 
read the data in parallel I don't know immediately how many local vertices 
there will be.
Which prevents me from knowing the chart a priori.
I figured out the number of vertices using PetscHashSetI to determine the 
number of unique entries in the connectivity list.

________________________________
From: Matthew Knepley <knep...@gmail.com>
Sent: Wednesday, May 1, 2024 8:52 PM
To: Ferrand, Jesus A. <ferra...@my.erau.edu>
Cc: petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov>
Subject: Re: [EXTERNAL] Re: [petsc-users] Is there anything like a 
"DMPlexSetCones()" ?

On Wed, May 1, 2024 at 4:23 PM Ferrand, Jesus A. 
<ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>> wrote:
Matt:

My bad again, I need to clarify something that I just realized doesn't make 
sense.
I said: "The nature of the I/O makes it so that I need to read the connectivity 
before I get a semblance of buffer sizes."
Scratch that, obviously, if I can read the connectivity, I know the buffer 
sizes.

What I should have said is that I cannot know the "chart" that one sets in 
DMPlexSetChart() a priori like in most cases.
I need to determine the chart from the connectivity lists.

You know the number of cells if you can read connectivity. Do you mean that the 
format does not tell you
the number of vertices?

  Thanks,

    Matt

________________________________
From: Ferrand, Jesus A. <ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>>
Sent: Wednesday, May 1, 2024 8:17 PM
To: Matthew Knepley <knep...@gmail.com<mailto:knep...@gmail.com>>
Cc: petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov> 
<petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov>>
Subject: Re: [EXTERNAL] Re: [petsc-users] Is there anything like a 
"DMPlexSetCones()" ?

Matt:

"I do not understand the "flag check". What is that?"

      My bad, I should have referred to the "dm->setupcalled".
      I believe this PetscBool is checked by the other DM (not just DMPlex) 
APIs.
      The subsequent checks for dm->setupcalled == PETSC_TRUE is what I meant 
to say.
      Here's a copy of DMSetUp().

PetscErrorCode<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscErrorCode/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVa4H8D00$
 > 
DMSetUp<https://urldefense.us/v3/__https://petsc.org/release/manualpages/DM/DMSetUp/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDV8IM749Q$
 
>(DM<https://urldefense.us/v3/__https://petsc.org/release/manualpages/DM/DM/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVgDhrMSM$
 > dm)
817: {
818:   
PetscFunctionBegin<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscFunctionBegin/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVnUPckbQ$
 >;
820:   if (dm->setupcalled) 
PetscFunctionReturn<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscFunctionReturn/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVA6jIYzM$
 
>(PETSC_SUCCESS<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscErrorCode/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVa4H8D00$
 >);
821:   
PetscTryTypeMethod<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscTryTypeMethod/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVj0O9HKI$
 >(dm, setup);
822:   dm->setupcalled = 
PETSC_TRUE<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PETSC_TRUE/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVmrWLiyw$
 >;
823:   
PetscFunctionReturn<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscFunctionReturn/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVA6jIYzM$
 
>(PETSC_SUCCESS<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscErrorCode/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVa4H8D00$
 >);
824: }

"We could make a DMPlexSetCones(), but as you point out, the workflow for 
DMSetUp() would have to change. Where does the memory come from for your 
connectivity?"
      It's a memory that I myself allocate based on a file's contents.
      The nature of the I/O makes it so that I need to read the connectivity 
before I get a semblance of buffer sizes.
      Otherwise, I would stick to the tried and tested way.

Also, when replying to the PETSc developers, users must reply to 
petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov> and not just to the 
individual email accounts of the developers, right?




________________________________
From: Matthew Knepley <knep...@gmail.com<mailto:knep...@gmail.com>>
Sent: Wednesday, May 1, 2024 8:07 PM
To: Ferrand, Jesus A. <ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>>
Cc: petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov> 
<petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov>>
Subject: [EXTERNAL] Re: [petsc-users] Is there anything like a 
"DMPlexSetCones()" ?

CAUTION: This email originated outside of Embry-Riddle Aeronautical University. 
Do not click links or open attachments unless you recognize the sender and know 
the content is safe.

On Wed, May 1, 2024 at 3:34 PM Ferrand, Jesus A. 
<ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>> wrote:
This Message Is From an External Sender
This message came from outside your organization.

Dear PETSc team:

For a project that I'm working on, I need to manually build a DMPlex.
>From studying the source code of the various APIs in which the plex is built 
>from some supported file format, I get that the workflow is this:


  1.
DMPlexSetChart() <-- Input nCells + nVerts
  2.
DMPlexSetConeSize() <-- Input ConeSize for each point in [0,nCells)
  3.
DMSetUp() – Allocates memory internally.
  4.
DMPlexGetCones() --> Gives you the memory onto which to write the cell 
connectivity.
  5.
*Write connectivity*
  6.
DMPlexReorderCell() <-- For each point in [0,nCells)

I'm in a situation where the memory given by step (4) is available a-priori.
I was hoping to skip steps 2, 3 , and 4 with something like a 
"DMPlexSetCones()", but such an API does not exist.
My current workaround is to implement steps 2 through 4 as always and have 
double the memory allocated in the interim (my instance + DM's internal 
instance).
I was thinking of looking for the name of the struct member and = it to my 
memory, but I can't overcome the flag check in DMSetUp() during later calls to 
DMPlexGetCones() or DMPlexGetTransitiveClosure().

I do not understand the "flag check". What is that?

We could make a DMPlexSetCones(), but as you point out, the workflow for 
DMSetUp() would have to change. Where does the memory come from for your 
connectivity?

  Thanks,

    Matt



Sincerely:

J.A. Ferrand

Embry-Riddle Aeronautical University - Daytona Beach - FL
Ph.D. Candidate, Aerospace Engineering

M.Sc. Aerospace Engineering

B.Sc. Aerospace Engineering

B.Sc. Computational Mathematics


Phone: (386)-843-1829

Email(s): ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>

    jesus.ferr...@gmail.com<mailto:jesus.ferr...@gmail.com>


--
What most experimenters take for granted before they begin their experiments is 
infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener

https://urldefense.us/v3/__https://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVQRKJmPA$
 
<https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVu0P9fBI$
 >

________________________________
From: Matthew Knepley <knep...@gmail.com<mailto:knep...@gmail.com>>
Sent: Wednesday, May 1, 2024 8:07 PM
To: Ferrand, Jesus A. <ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>>
Cc: petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov> 
<petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov>>
Subject: [EXTERNAL] Re: [petsc-users] Is there anything like a 
"DMPlexSetCones()" ?

CAUTION: This email originated outside of Embry-Riddle Aeronautical University. 
Do not click links or open attachments unless you recognize the sender and know 
the content is safe.

On Wed, May 1, 2024 at 3:34 PM Ferrand, Jesus A. 
<ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>> wrote:
This Message Is From an External Sender
This message came from outside your organization.

Dear PETSc team:

For a project that I'm working on, I need to manually build a DMPlex.
>From studying the source code of the various APIs in which the plex is built 
>from some supported file format, I get that the workflow is this:


  1.
DMPlexSetChart() <-- Input nCells + nVerts
  2.
DMPlexSetConeSize() <-- Input ConeSize for each point in [0,nCells)
  3.
DMSetUp() – Allocates memory internally.
  4.
DMPlexGetCones() --> Gives you the memory onto which to write the cell 
connectivity.
  5.
*Write connectivity*
  6.
DMPlexReorderCell() <-- For each point in [0,nCells)

I'm in a situation where the memory given by step (4) is available a-priori.
I was hoping to skip steps 2, 3 , and 4 with something like a 
"DMPlexSetCones()", but such an API does not exist.
My current workaround is to implement steps 2 through 4 as always and have 
double the memory allocated in the interim (my instance + DM's internal 
instance).
I was thinking of looking for the name of the struct member and = it to my 
memory, but I can't overcome the flag check in DMSetUp() during later calls to 
DMPlexGetCones() or DMPlexGetTransitiveClosure().

I do not understand the "flag check". What is that?

We could make a DMPlexSetCones(), but as you point out, the workflow for 
DMSetUp() would have to change. Where does the memory come from for your 
connectivity?

  Thanks,

    Matt



Sincerely:

J.A. Ferrand

Embry-Riddle Aeronautical University - Daytona Beach - FL
Ph.D. Candidate, Aerospace Engineering

M.Sc. Aerospace Engineering

B.Sc. Aerospace Engineering

B.Sc. Computational Mathematics


Phone: (386)-843-1829

Email(s): ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>

    jesus.ferr...@gmail.com<mailto:jesus.ferr...@gmail.com>


--
What most experimenters take for granted before they begin their experiments is 
infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener

https://urldefense.us/v3/__https://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVQRKJmPA$
 
<https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVu0P9fBI$
 >


--
What most experimenters take for granted before they begin their experiments is 
infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener

https://urldefense.us/v3/__https://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVQRKJmPA$
 
<https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVu0P9fBI$
 >

________________________________
From: Matthew Knepley <knep...@gmail.com>
Sent: Wednesday, May 1, 2024 8:52 PM
To: Ferrand, Jesus A. <ferra...@my.erau.edu>
Cc: petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov>
Subject: Re: [EXTERNAL] Re: [petsc-users] Is there anything like a 
"DMPlexSetCones()" ?

On Wed, May 1, 2024 at 4:23 PM Ferrand, Jesus A. 
<ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>> wrote:
Matt:

My bad again, I need to clarify something that I just realized doesn't make 
sense.
I said: "The nature of the I/O makes it so that I need to read the connectivity 
before I get a semblance of buffer sizes."
Scratch that, obviously, if I can read the connectivity, I know the buffer 
sizes.

What I should have said is that I cannot know the "chart" that one sets in 
DMPlexSetChart() a priori like in most cases.
I need to determine the chart from the connectivity lists.

You know the number of cells if you can read connectivity. Do you mean that the 
format does not tell you
the number of vertices?

  Thanks,

    Matt

________________________________
From: Ferrand, Jesus A. <ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>>
Sent: Wednesday, May 1, 2024 8:17 PM
To: Matthew Knepley <knep...@gmail.com<mailto:knep...@gmail.com>>
Cc: petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov> 
<petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov>>
Subject: Re: [EXTERNAL] Re: [petsc-users] Is there anything like a 
"DMPlexSetCones()" ?

Matt:

"I do not understand the "flag check". What is that?"

      My bad, I should have referred to the "dm->setupcalled".
      I believe this PetscBool is checked by the other DM (not just DMPlex) 
APIs.
      The subsequent checks for dm->setupcalled == PETSC_TRUE is what I meant 
to say.
      Here's a copy of DMSetUp().

PetscErrorCode<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscErrorCode/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVa4H8D00$
 > 
DMSetUp<https://urldefense.us/v3/__https://petsc.org/release/manualpages/DM/DMSetUp/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDV8IM749Q$
 
>(DM<https://urldefense.us/v3/__https://petsc.org/release/manualpages/DM/DM/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVgDhrMSM$
 > dm)
817: {
818:   
PetscFunctionBegin<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscFunctionBegin/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVnUPckbQ$
 >;
820:   if (dm->setupcalled) 
PetscFunctionReturn<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscFunctionReturn/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVA6jIYzM$
 
>(PETSC_SUCCESS<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscErrorCode/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVa4H8D00$
 >);
821:   
PetscTryTypeMethod<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscTryTypeMethod/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVj0O9HKI$
 >(dm, setup);
822:   dm->setupcalled = 
PETSC_TRUE<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PETSC_TRUE/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVmrWLiyw$
 >;
823:   
PetscFunctionReturn<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscFunctionReturn/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVA6jIYzM$
 
>(PETSC_SUCCESS<https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscErrorCode/__;!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVa4H8D00$
 >);
824: }

"We could make a DMPlexSetCones(), but as you point out, the workflow for 
DMSetUp() would have to change. Where does the memory come from for your 
connectivity?"
      It's a memory that I myself allocate based on a file's contents.
      The nature of the I/O makes it so that I need to read the connectivity 
before I get a semblance of buffer sizes.
      Otherwise, I would stick to the tried and tested way.

Also, when replying to the PETSc developers, users must reply to 
petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov> and not just to the 
individual email accounts of the developers, right?




________________________________
From: Matthew Knepley <knep...@gmail.com<mailto:knep...@gmail.com>>
Sent: Wednesday, May 1, 2024 8:07 PM
To: Ferrand, Jesus A. <ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>>
Cc: petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov> 
<petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov>>
Subject: [EXTERNAL] Re: [petsc-users] Is there anything like a 
"DMPlexSetCones()" ?

CAUTION: This email originated outside of Embry-Riddle Aeronautical University. 
Do not click links or open attachments unless you recognize the sender and know 
the content is safe.

On Wed, May 1, 2024 at 3:34 PM Ferrand, Jesus A. 
<ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>> wrote:
This Message Is From an External Sender
This message came from outside your organization.

Dear PETSc team:

For a project that I'm working on, I need to manually build a DMPlex.
>From studying the source code of the various APIs in which the plex is built 
>from some supported file format, I get that the workflow is this:


  1.
DMPlexSetChart() <-- Input nCells + nVerts
  2.
DMPlexSetConeSize() <-- Input ConeSize for each point in [0,nCells)
  3.
DMSetUp() – Allocates memory internally.
  4.
DMPlexGetCones() --> Gives you the memory onto which to write the cell 
connectivity.
  5.
*Write connectivity*
  6.
DMPlexReorderCell() <-- For each point in [0,nCells)

I'm in a situation where the memory given by step (4) is available a-priori.
I was hoping to skip steps 2, 3 , and 4 with something like a 
"DMPlexSetCones()", but such an API does not exist.
My current workaround is to implement steps 2 through 4 as always and have 
double the memory allocated in the interim (my instance + DM's internal 
instance).
I was thinking of looking for the name of the struct member and = it to my 
memory, but I can't overcome the flag check in DMSetUp() during later calls to 
DMPlexGetCones() or DMPlexGetTransitiveClosure().

I do not understand the "flag check". What is that?

We could make a DMPlexSetCones(), but as you point out, the workflow for 
DMSetUp() would have to change. Where does the memory come from for your 
connectivity?

  Thanks,

    Matt



Sincerely:

J.A. Ferrand

Embry-Riddle Aeronautical University - Daytona Beach - FL
Ph.D. Candidate, Aerospace Engineering

M.Sc. Aerospace Engineering

B.Sc. Aerospace Engineering

B.Sc. Computational Mathematics


Phone: (386)-843-1829

Email(s): ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>

    jesus.ferr...@gmail.com<mailto:jesus.ferr...@gmail.com>


--
What most experimenters take for granted before they begin their experiments is 
infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener

https://urldefense.us/v3/__https://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVQRKJmPA$
 
<https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVu0P9fBI$
 >

________________________________
From: Matthew Knepley <knep...@gmail.com<mailto:knep...@gmail.com>>
Sent: Wednesday, May 1, 2024 8:07 PM
To: Ferrand, Jesus A. <ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>>
Cc: petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov> 
<petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov>>
Subject: [EXTERNAL] Re: [petsc-users] Is there anything like a 
"DMPlexSetCones()" ?

CAUTION: This email originated outside of Embry-Riddle Aeronautical University. 
Do not click links or open attachments unless you recognize the sender and know 
the content is safe.

On Wed, May 1, 2024 at 3:34 PM Ferrand, Jesus A. 
<ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>> wrote:
This Message Is From an External Sender
This message came from outside your organization.

Dear PETSc team:

For a project that I'm working on, I need to manually build a DMPlex.
>From studying the source code of the various APIs in which the plex is built 
>from some supported file format, I get that the workflow is this:


  1.
DMPlexSetChart() <-- Input nCells + nVerts
  2.
DMPlexSetConeSize() <-- Input ConeSize for each point in [0,nCells)
  3.
DMSetUp() – Allocates memory internally.
  4.
DMPlexGetCones() --> Gives you the memory onto which to write the cell 
connectivity.
  5.
*Write connectivity*
  6.
DMPlexReorderCell() <-- For each point in [0,nCells)

I'm in a situation where the memory given by step (4) is available a-priori.
I was hoping to skip steps 2, 3 , and 4 with something like a 
"DMPlexSetCones()", but such an API does not exist.
My current workaround is to implement steps 2 through 4 as always and have 
double the memory allocated in the interim (my instance + DM's internal 
instance).
I was thinking of looking for the name of the struct member and = it to my 
memory, but I can't overcome the flag check in DMSetUp() during later calls to 
DMPlexGetCones() or DMPlexGetTransitiveClosure().

I do not understand the "flag check". What is that?

We could make a DMPlexSetCones(), but as you point out, the workflow for 
DMSetUp() would have to change. Where does the memory come from for your 
connectivity?

  Thanks,

    Matt



Sincerely:

J.A. Ferrand

Embry-Riddle Aeronautical University - Daytona Beach - FL
Ph.D. Candidate, Aerospace Engineering

M.Sc. Aerospace Engineering

B.Sc. Aerospace Engineering

B.Sc. Computational Mathematics


Phone: (386)-843-1829

Email(s): ferra...@my.erau.edu<mailto:ferra...@my.erau.edu>

    jesus.ferr...@gmail.com<mailto:jesus.ferr...@gmail.com>


--
What most experimenters take for granted before they begin their experiments is 
infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener

https://urldefense.us/v3/__https://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVQRKJmPA$
 
<https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVu0P9fBI$
 >


--
What most experimenters take for granted before they begin their experiments is 
infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener

https://urldefense.us/v3/__https://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVQRKJmPA$
 
<https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bg9QrJhAkKOSNFt840OnuOpmX_IlSabDICy99_9tMp9uABL-2lhCm_LG2Fj8rwdySPMiK7rnfMLSIPxs3jDVu0P9fBI$
 >

Reply via email to