Sounds good, i will take a look. Thanks! On Tue, 27 Aug 2019, 12:28 Nathan Collier, <nathaniel.coll...@gmail.com> wrote:
> Here is a example of what I think you need: > > > https://github.com/TDycores-Project/toy-problems/blob/master/TracyProblem/Richards.c > > It is written to solve Richard's equation using a simple two-point flux, > but it may be helpful to look at the setup and residual loop. > > Nate > > > On Tue, Aug 27, 2019 at 6:55 AM Matthew Knepley via petsc-users < > petsc-users@mcs.anl.gov> wrote: > >> On Tue, Aug 27, 2019 at 4:54 AM Edoardo alinovi < >> edoardo.alin...@gmail.com> wrote: >> >>> Hello Matt, >>> >>> Thanks for your kind replay. Using DMplex and changing the data >>> structure is not a straightforward task as you can imagine. Up to now I am >>> in the preliminaries and I am trying to understand how to reuse most of all >>> my subroutines (I am using fortran) such as fluxes and coeffs assembly, >>> numerical schemes and so o in order to avoid to rewrite all the code :p I >>> will start with your first two suggestions and see if it is an affordable >>> task :) >>> >>> For the face value, I am not interested in Reimann solvers. Being >>> incompressible I am using Central difference, QUICK, SOU, Upwind or >>> TVD-family schemes, but maybe I can use my stuff to get it. >>> >>> I think I can be happy enough having the ghost cell centers available >>> and some way to deal with the BC (I guess this will be the most tricky >>> part). Basically I would like to use DMplex at low level just to have a >>> support for the parallel mesh management. >>> Have you got some example for P0 finite elements and overlap=1? >>> >> >> This is one group already using PETSc in exactly this way for a FV code. >> >> Maybe it would help if I gave a high-level overview of this usage pattern. >> >> 1) Hopefully replacing your current mesh topology/geometry with Plex is >> not hard. Let me know if you have any questions about this. >> >> 2) If you give overlap=1 on distribution, then support(face) for any >> regular face gives the two cells on either side. You >> probably want to screen out faces between two ghost cells. There is a >> DMLabel for doing that. >> >> 3) A PetscSection just gives the data layout over a mesh. The idea here >> is to make it describe _exactly_ the layout you already have. >> The DMGetGlobalVector() and DMGetLocalVector() should produce vectors >> in your existing order and you can reuse all your code. >> >> Thanks, >> >> Matt >> >> >>> Thank you! :) >>> >>> Il giorno mar 27 ago 2019 alle ore 09:33 Matthew Knepley < >>> knep...@gmail.com> ha scritto: >>> >>>> On Tue, Aug 27, 2019 at 4:07 AM Edoardo alinovi via petsc-users < >>>> petsc-users@mcs.anl.gov> wrote: >>>> >>>>> Hello PETSc users and developers, >>>>> I hope you are doing well! Today I have a general question about >>>>> DMplex to see if it can be usefull to me or not. >>>>> >>>>> I have my fancy finite volume solver (cell centered, incompressible >>>>> NS) which uses petsc as linear solver engine. Thanks to your suggestions >>>>> so >>>>> far it is now running well :) >>>>> >>>>> I would like to see if I can do another step incapsulatng in petsc >>>>> also the mesh managment part. I think that Dmplex is the way to go since >>>>> my >>>>> code is fully unstructured. >>>>> >>>>> I have red some papers and lectures by Matt around the web, but still >>>>> I have not found an answer to this question: >>>>> Can dmplex dial with cell centered data arrangement and provide some >>>>> support for basic operation (e. g. interpolation between partitions, face >>>>> value calculation etc)? >>>>> >>>> >>>> 1) Cell centered data >>>> >>>> Definitely yes. This is the same data layout as P0 finite elements. You >>>> just assign the PetscSection k dofs per cell. >>>> >>>> 2) Interpolation between partitions >>>> >>>> I assume you mean ghost values from other parallel partitions. You can >>>> do this by using overlap=1 in DMPlexDisrtibute(). >>>> >>>> 3) Face value calculation >>>> >>>> You can do Riemann solves by looping over faces, grabbing values from >>>> the neighboring cells, doing the calculation, and >>>> updating cell values. We carry out this kind of computation in TS ex11. >>>> That example attempts to do everything, so it is >>>> messy, but we can help you understand what it is doing in any part that >>>> is unclear. >>>> >>>> 4) FV boundary conditions >>>> >>>> You can use DMPlexConstructGhostCells() to put artificial cells around >>>> the boundary that you use to prescribe fluxes. >>>> >>>> Thanks, >>>> >>>> Matt >>>> >>>> >>>>> Thank you very much! >>>>> >>>>> Edo >>>>> >>>> >>>> >>>> -- >>>> 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://www.cse.buffalo.edu/~knepley/ >>>> <http://www.cse.buffalo.edu/~knepley/> >>>> >>> >> >> -- >> 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://www.cse.buffalo.edu/~knepley/ >> <http://www.cse.buffalo.edu/~knepley/> >> >