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

Thibault Bridel-Bertomeu thibault.bridelbertomeu at gmail.com
Mon Jul 20 10:03:55 CDT 2020


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 !

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
>> > CEA/CESTA
>> > 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/>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200720/081e11ba/attachment.html>


More information about the petsc-users mailing list