On Wed, May 1, 2024 at 6:30 PM Ferrand, Jesus A. <ferra...@my.erau.edu> wrote:
> "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. > Right, but that means that the connectivity you read in is not in local numbering. You will have to renumber it, so making a copy is probably necessary anyway. This is the same sort of processing I do for the parallel read. Thanks, Matt > ------------------------------ > *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> > 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> > *Sent:* Wednesday, May 1, 2024 8:17 PM > *To:* Matthew Knepley <knep...@gmail.com> > *Cc:* petsc-users@mcs.anl.gov <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!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowpJ3s88P$ > > DMSetUp > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/DM/DMSetUp/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowpy3zGSd$ > >(DM > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/DM/DM/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowt_sd2eh$ > > dm)* > 817: { > 818: PetscFunctionBegin > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscFunctionBegin/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowuMbcxmD$ > >; > 820: if (dm->setupcalled) PetscFunctionReturn > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscFunctionReturn/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowhC986W-$ > >(PETSC_SUCCESS > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscErrorCode/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowpJ3s88P$ > >); > 821: PetscTryTypeMethod > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscTryTypeMethod/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowrbaxERF$ > >(dm, setup); > 822: dm->setupcalled = PETSC_TRUE > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PETSC_TRUE/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowoILDY_P$ > >; > 823: PetscFunctionReturn > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscFunctionReturn/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowhC986W-$ > >(PETSC_SUCCESS > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscErrorCode/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowpJ3s88P$ > >); > 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 and not just to the individual email accounts of > the developers, right? > > > > > ------------------------------ > *From:* Matthew Knepley <knep...@gmail.com> > *Sent:* Wednesday, May 1, 2024 8:07 PM > *To:* Ferrand, Jesus A. <ferra...@my.erau.edu> > *Cc:* petsc-users@mcs.anl.gov <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> > 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 > > 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!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowhNf6eH7$ > > <https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowmj1eqYm$ > > > > ------------------------------ > *From:* Matthew Knepley <knep...@gmail.com> > *Sent:* Wednesday, May 1, 2024 8:07 PM > *To:* Ferrand, Jesus A. <ferra...@my.erau.edu> > *Cc:* petsc-users@mcs.anl.gov <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> > 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 > > 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!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowhNf6eH7$ > > <https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowmj1eqYm$ > > > > > > -- > 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!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowhNf6eH7$ > > <https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowmj1eqYm$ > > > > ------------------------------ > *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> > 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> > *Sent:* Wednesday, May 1, 2024 8:17 PM > *To:* Matthew Knepley <knep...@gmail.com> > *Cc:* petsc-users@mcs.anl.gov <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!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowpJ3s88P$ > > DMSetUp > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/DM/DMSetUp/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowpy3zGSd$ > >(DM > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/DM/DM/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowt_sd2eh$ > > dm)* > 817: { > 818: PetscFunctionBegin > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscFunctionBegin/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowuMbcxmD$ > >; > 820: if (dm->setupcalled) PetscFunctionReturn > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscFunctionReturn/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowhC986W-$ > >(PETSC_SUCCESS > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscErrorCode/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowpJ3s88P$ > >); > 821: PetscTryTypeMethod > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscTryTypeMethod/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowrbaxERF$ > >(dm, setup); > 822: dm->setupcalled = PETSC_TRUE > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PETSC_TRUE/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowoILDY_P$ > >; > 823: PetscFunctionReturn > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscFunctionReturn/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowhC986W-$ > >(PETSC_SUCCESS > <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Sys/PetscErrorCode/__;!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowpJ3s88P$ > >); > 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 and not just to the individual email accounts of > the developers, right? > > > > > ------------------------------ > *From:* Matthew Knepley <knep...@gmail.com> > *Sent:* Wednesday, May 1, 2024 8:07 PM > *To:* Ferrand, Jesus A. <ferra...@my.erau.edu> > *Cc:* petsc-users@mcs.anl.gov <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> > 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 > > 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!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowhNf6eH7$ > > <https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowmj1eqYm$ > > > > ------------------------------ > *From:* Matthew Knepley <knep...@gmail.com> > *Sent:* Wednesday, May 1, 2024 8:07 PM > *To:* Ferrand, Jesus A. <ferra...@my.erau.edu> > *Cc:* petsc-users@mcs.anl.gov <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> > 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 > > 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!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowhNf6eH7$ > > <https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowmj1eqYm$ > > > > > > -- > 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!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowhNf6eH7$ > > <https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowmj1eqYm$ > > > -- 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!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowhNf6eH7$ <https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!e603Zn0jXSCVvzNnzzRiius-0-C5jw6GGzCOFJ7EW5nKTGdX8aI6qchOlBW23rM9TlwMTiidfBsowmj1eqYm$ >