Questions about Approximate Riemann Solvers ---- Roe

25 views
Skip to first unread message

Kiny Wan

unread,
Nov 3, 2020, 9:06:54 PM11/3/20
to PyFR Mailing List
Dear all, 
        I recently read the file of roe.mako in the installed directory 'PyFR-1.8.5\pyfr\solvers\euler\kernels\rsolvers', and met problems about some functions and equations.  
  1. Is there any document listed the equations related to this roe solver? I only found the equations related to Rusanov solver in appendix A of the thesis of Dr. Witherden.
  2. What is the role of '${pyfr.expand('inviscid_flux', 'ul', 'fl', 'pl', 'vl')};' in the roe.mako ? In my opinion,  it is a function of 'inviscid_flux' and its input variables includes conserved quantity 'ul', flux 'fl', pressure 'pl', and velocity 'vl'. With the command of 'pyfr.expand', the function of 'inviscid_flux' can be embedded within a kernel.
        Any hints are available. 
Regards
Kiny

Will Trojak

unread,
Nov 4, 2020, 10:43:29 AM11/4/20
to PyFR Mailing List
Hi Kiny,

Thanks for getting in touch. I have answered your questions below, but if you are looking to understand the Riemann solvers a little better, there is an upcoming pull request (see my pyfr fork) where we simplify things by transforming the problem to one dimension. This makes the presentation of the method easier to understand and simpler to implement.There are also some more Riemann solvers there, including exact approaches.

Thanks,
Will

On Tuesday, 3 November 2020 20:06:54 UTC-6, Kiny Wan wrote:
Dear all, 
        I recently read the file of roe.mako in the installed directory 'PyFR-1.8.5\pyfr\solvers\euler\kernels\rsolvers', and met problems about some functions and equations.  
  1. Is there any document listed the equations related to this roe solver? I only found the equations related to Rusanov solver in appendix A of the thesis of Dr. Witherden.
So the Roe scheme is a fairly widely used method and there plenty of adaptations and modifications to the original method. The original paper by Roe can be found here https://doi.org/10.1016/0021-9991(81)90128-5, but the form that people often refer to as the Roe method is that of Roe and Pike (1985) 'Efficient Construction and Utilisation of Approximate Riemann Solutions', but that paper can be a little hard to find. This over came some of the deficiencies of the original method. Very broadly the method attempts to form a constant Jacobian matrix for both the left and right state by using what is now commonly refereed to as a Roe average. A good source of further information on the topic of Riemann solvers and approximate Riemann solvers in the context of fluid dynamics is the book by Toro https://doi.org/10.1007/b79761.
  1. What is the role of '${pyfr.expand('inviscid_flux', 'ul', 'fl', 'pl', 'vl')};' in the roe.mako ? In my opinion,  it is a function of 'inviscid_flux' and its input variables includes conserved quantity 'ul', flux 'fl', pressure 'pl', and velocity 'vl'. With the command of 'pyfr.expand', the function of 'inviscid_flux' can be embedded within a kernel.
Yes as the name implies this calculates the inviscid flux for a and given set of conservative variables. Also for convenience and to save on compute it does also return the velocities and pressure, as these are commonly used in the calculation of the approximate 'Riemann' flux. Yes 'expand' embeds the function that you pass it into the kernel, and it can be thought of as being somewhat similar to calling a subroutine in Fortran.

Kiny Wan

unread,
Nov 5, 2020, 12:04:23 AM11/5/20
to PyFR Mailing List
Hi  Will,
        Thanks for your kindly reply. I found the FORTRAN code open-sourced in https://doi.org/10.1007/b79761 and I finally understand the command of 'pyfr.expand'. 
Regards
Kiny
Reply all
Reply to author
Forward
0 new messages