[petsc-users] How to add a source term for PETSCFV ?

Matthew Knepley knepley at gmail.com
Mon Apr 12 09:37:51 CDT 2021

On Mon, Jul 20, 2020 at 11:04 AM Thibault Bridel-Bertomeu <
thibault.bridelbertomeu at 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.



> Thibault
> Le lun. 20 juil. 2020 à 16:10, Matthew Knepley <knepley at gmail.com> a
> écrit :
>> On Mon, Jul 20, 2020 at 9:36 AM Jed Brown <jed at 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.bridelbertomeu at 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
>>> > 33114 LE BARP
>>> > Tel.: (+33)557046924
>>> > Mob.: (+33)611025322
>>> > Mail: thibault.bridelbertomeu at 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/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20210412/95d5f7f5/attachment.html>

More information about the petsc-users mailing list