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

Matthew Knepley knepley at gmail.com
Wed Apr 14 07:58:18 CDT 2021


On Wed, Apr 14, 2021 at 5:39 AM Thibault Bridel-Bertomeu <
thibault.bridelbertomeu at gmail.com> wrote:

> 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 ;)
>

Thanks! It seems I have to figure this out now, so I will do something.
Looking at your code will be a huge help.
What are you working on now?

  Thanks,

     Matt


> Thibault
>
>
> Le lun. 12 avr. 2021 à 16:38, Matthew Knepley <knepley at gmail.com> a
> écrit :
>
>> 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.
>>
>>   Thanks,
>>
>>     Matt
>>
>>
>>> 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/>
>>>>
>>>
>>
>> --
>> 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/20210414/0890b824/attachment.html>


More information about the petsc-users mailing list