Hello Matthew, Sorry for the late answer !
Unfortunately, I couldn't find any elegant way to add a source term with a TS+DM+PetscFV ... The only thing I could find was to write completely my own RHS function that i pass to DMTSSetRHSFunctionLocal. That way I have full control over everything, but it's not as elegant as using the DMPlexTSComputeRHSFunctionFVM that is already in PETSc. I added you to the project on Gitlab where i do this (I have not been continuing with this code but with another, also based on PETSc, that's why there are no updates recently) so you can see what I coded, if it can be of any help for a future release / for the people in the other project you mention. What I am talking about is in timeDiscretization_PETSc.c & fluxCalculation.c, mostly. (I did not expect to share that work so it might be a bit poor comments-wise, sorry). Feel free to share the code if you feel it can be useful, as long as the headers in the source files stay as they are ;) Thibault Le lun. 12 avr. 2021 à 16:38, Matthew Knepley <knep...@gmail.com> a écrit : > On Mon, Jul 20, 2020 at 11:04 AM Thibault Bridel-Bertomeu < > thibault.bridelberto...@gmail.com> wrote: > >> Thank you Mark, Jed and Matthew for your quick answers ! >> >> I see now where I should be more accurate in my question. >> >> Mark, I mentioned the hyperbolicity because I would like to keep using >> the PetscDSSetRiemannSolver and the DMTSSetBoundaryLocal and >> DMTSSetRHSFunctionLocal >> with DMPlexTSComputeRHSFunctionFVM that are quite automatic and nice and >> efficient wrappers. Now aside from those which deal specifically with the >> hyperbolic part of the PDE, i would like to add the diffusive terms. I >> would rather stay in the FVM world, but if it is easier in the FEM world >> then I am open to it. >> >> Jed, as for the discretization let us say indeed that the mesh can be >> either cartesian or not, and the discretization should therefore be >> independent of the nature of the mesh - any unstructured mesh (i handle it >> with DMPlex in my case). I saw indeed that FV has gradient reconstruction, >> with or without a limiter, which is great. However I have not quite >> understood what function to use to get the gradient of any variable, be it >> in the context (e.g. for N-S, ro, rou, rov, etc...) or an auxiliary >> variable (e.g. the components of the strain tensor). I also agree that the >> diffusive part is usually the one that strongly limits the time step in >> explicit computations, but for now I would like to set up a fully explicit >> system. >> >> Matthew, I'll take a look at ex 18, thanks, I missed that one. >> >> So basically if I wanted to summarize, I want to keep the Riemann Solver >> capability from the DS, and use the >> "automatic" DMPlexTSComputeRHSFunctionFVM for the hyperbolic part and add >> on top of it a discretization of the diffusive terms. I was thinking maybe >> one way to go would be to hack the DMTSSetForcingFunction but >> 1/ I still am not sure what this function should return exactly, is it a >> Vec for the flux on all faces ? >> 2/ I still do not know how to compute all the derivatives involved in the >> diffusive terms of the N-S using the gradient reconstruction from PetscFV >> >> Thank you for your help, I hope I am clear enough in where I want to go ! >> > > Hi Thibault, > > Did anything happen on this front? I have another project where people > want to do that same thing. > > Thanks, > > Matt > > >> Thibault >> >> Le lun. 20 juil. 2020 à 16:10, Matthew Knepley <knep...@gmail.com> a >> écrit : >> >>> On Mon, Jul 20, 2020 at 9:36 AM Jed Brown <j...@jedbrown.org> wrote: >>> >>>> How would you like to discretize the diffusive terms? The example has >>>> a type of gradient reconstruction so you can have cellwise gradients, but >>>> there are many techniques for discretizing diffusive terms in FV. It's >>>> simpler if you use an orthogonal grid, but I doubt that you are. >>>> >>>> As for terminology, the diffusive part is usually stiff and thus must >>>> be treated implicitly. In TS terminology, this would be part of the >>>> IFunction, not the RHSFunction. >>>> >>> >>> At a high level, I would say that this is doable, but complicated. You >>> can see me trying to do something much easier (advection + >>> visco-elasticity) in TS ex18, >>> where I want to discretize the elliptic part with FEM and the advective >>> part with FVM. I assume that is why Jed wants to know how you want to >>> handle the >>> elliptic terms, since this has a large impact on how you would implement. >>> >>> Thanks, >>> >>> Matt >>> >>> >>>> Thibault Bridel-Bertomeu <thibault.bridelberto...@gmail.com> writes: >>>> >>>> > Dear all, >>>> > >>>> > I have been studying ex11.c from ts/tutorials to understand how to >>>> solve an >>>> > hyperbolic system of equations using PETSCFV. I first worked on the >>>> Euler >>>> > equations for inviscid fluids and based on what ex11.c presents, I >>>> was able >>>> > to add the right PETSc instructions in an already existing in-house >>>> code >>>> > with different gas models to solve the problems in parallel (MPI) >>>> and with >>>> > the AMR capabilities offered by P4EST. >>>> > >>>> > Now my goal is to move to Navier-Stokes equations. Theoretically the >>>> system >>>> > is not completely hyperbolic and can be seen as one with an >>>> hyperbolic part >>>> > (identical to the Euler equations) and a parabolic part coming from >>>> the RHS >>>> > diffusion terms. >>>> > I have been looking into the manual and also the sources of PETSc >>>> around >>>> > the DM, DMPlex, DS and FV classes but I could not find anything that >>>> speaks >>>> > to me as "adding a RHS to an hyperbolic system of equations" or >>>> "adding a >>>> > source term to an hyperbolic system of equations". What's more, that >>>> source >>>> > term depends on the derivatives of the context variables ... >>>> > >>>> > I wanted to know if anyone maybe had a suggestion regarding this >>>> issue ? >>>> > >>>> > Thank you very much in advance, >>>> > >>>> > Thibault Bridel-Bertomeu >>>> > — >>>> > Eng, MSc, PhD >>>> > Research Engineer >>>> > CEA/CESTA >>>> > 33114 LE BARP >>>> > Tel.: (+33)557046924 >>>> > Mob.: (+33)611025322 >>>> > Mail: thibault.bridelberto...@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://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/> >