CFD Online Logo CFD Online URL
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Programming & Development

Venkatakrishnan limiter + SLAU in OpenFOAM

Register Blogs Members List Search Today's Posts Mark Forums Read

LinkBack Thread Tools Search this Thread Display Modes
Old   November 18, 2018, 04:06
Default Venkatakrishnan limiter + SLAU in OpenFOAM
Join Date: Sep 2015
Location: Singapore
Posts: 93
Rep Power: 6
usv001 is on a distinguished road
Dear all,

I am trying to implement an implicit solver for solving steady-state compressible flows in OpenFOAM. With regards to this, I have coded a matrix-free LU-SGS method [1] with optional preconditioning. I have also coded Venkatakrishan slope limiter [2] which is supposed to provide improved convergence and the SLAU scheme [3] which is capable of handling low Mach number regions.

I tried running the solver with the 1st order upwind scheme for M~0.01 flow over a cylinder. While the solution converged, there was some asymmetry in the solution (see attached image). The journal papers report perfectly symmetric profiles. So, I am not sure where I am going wrong. I increased farfield boundary distance from 10D to 40D but it had no effect. By the way, I am applying fixedValue boundary conditions.

When I switched to using TVD schemes such as van Leer and van Albada, the solution did not converge. I reported this problem in this thread and a user suggested that I use Venkatakrishnan's limiter. However, when I tried to use the 2nd order scheme with Venkatakrishnan's slope limiter, the solution does not converge either. I have tried varying the parameter K from 0.1 to 5 but there has been no improvement in convergence thus far. I have tried running with the HLL flux scheme too but the same thing happens. It converges for 1st order but not for second order. This led me to believe that there are two problems here: one with the flux scheme and the other with the spatial scheme.

To summarise:
  1. Running SLAU with 1st order upwind scheme results in asymmetric solution for M~0.01 flow past cylinder.
  2. Using Venkatakrishnan's slope limiter does not seem to improve convergence.

Any comments/suggestions would be of great help.


PS: I am using OpenFOAM v2.4.

  1. H. Luo, J.D. Baum, and R. Löhner. A Fast, Matrix-free Implicit Method for Compressible Flows on Unstructured Grids. J. Comput. Phys., 146:664-690, 1998
  2. V. Venkatakrishnan. Convergence to Steady State Solutions of the Euler Equations on Unstructured Grids with Limiters. J. Comput. Phys., 118:120-130, 1995
  3. E. Shima and K. Kitamura. Parameter-Free Simple Low-Dissipation AUSM-Family Scheme for All Speeds. AIAA Journal. 49:1693-1709, 2011
Attached Images
File Type: jpg U.jpg (143.5 KB, 36 views)
usv001 is offline   Reply With Quote

Old   November 26, 2018, 09:09
Default More info on Venkatakrishnan limiter (with code)
Join Date: Sep 2015
Location: Singapore
Posts: 93
Rep Power: 6
usv001 is on a distinguished road
Dear all,

I realized that I didn't provide much information to help with the troubleshooting. So, I decided to include parts of my code.

I have implemented Venkatakrishnan limiter as a limitedGradScheme following the same general layout as the cellLimitedGrad scheme. The important function is the limitFace function which is given by:
inline void VKcellLimitedGrad<scalar>::limitFace
    scalar& limiter,
    const scalar& maxDelta,
    const scalar& minDelta,
    const scalar& extrapolate,
    const scalar& epsSqr
    const scalar& deltaNeg = extrapolate;
    scalar deltaPos(0);
    if (extrapolate > SMALL)
        deltaPos = maxDelta;
    else if (extrapolate < -SMALL)
        deltaPos = minDelta;
    scalar deltaPosSqr(sqr(deltaPos)), 
    scalar limiter0 
    		+ epsSqr
    		+ 2*deltaPosNeg
		+ 2*deltaNegSqr
		+ deltaPosNeg
		+ epsSqr
    limiter = min(limiter, min(limiter0, 1));
This is supposed to implement the Venkatakrishnan limiter which is given by:
\phi = \frac{1}{\Delta_-}\left[\frac{\left(\Delta_+^2 + \epsilon^2\right)\Delta_- + 2\Delta_-^2\Delta_+}{\Delta_+^2 + 2\Delta_-^2+\Delta_-\Delta_++\epsilon^2}\right]
I have simplified the expression by dividing the numerator by \Delta_-. I don't think this is critical. Please correct me if I am wrong though.

In the main function calcGrad, the important piece of code that is different from the calcGrad function in cellLimitedGrad scheme is coloured red:
// create limiter
scalarField limiter(vsf.internalField().size(), 1.0);
const surfaceScalarField& deltaCoeffs = mesh.surfaceInterpolation::deltaCoeffs();

forAll(owner, facei)
    label own = owner[facei];
    label nei = neighbour[facei];
    // eps^2 = (K*dx)^3
    scalar epsSqr = pow3(K_/deltaCoeffs[facei]);
    // owner side
        (Cf[facei] - C[own]) & g[own],

    // neighbour side
        (Cf[facei] - C[nei]) & g[nei],
The above limiter runs fine (i.e. it is accurate and stable) but it does not produce the convergence it is supposed to regardless of the value of K_. I'd be grateful if someone could tell me where I am going wrong or what I should do differently. I'll be glad to provide any other relevant information.

usv001 is offline   Reply With Quote

Old   December 25, 2018, 18:04
Senior Member
Join Date: Oct 2011
Posts: 120
Rep Power: 10
naffrancois is on a distinguished road
I am not an open foam user, what is behind fixed value boundary condition? Is it a dirichlet bc? Do you prescribe everything at the bc? If so I would rather use a characteristic bc such as a Farfield bc based on Rankine Hugoniot relations or acoustic relations. Given the trials you have already done, a wrong bc set up could explain convergence issues. Dirichlet bc can yield wave reflections, not easily smoothed out using 2nd order reconstruction while characteristic based bc help a lot in allowing pressure waves to exit the domain

As far as asymmetry is concerned, if your solution is converged, it may be caused by the wall bc which generates too much entropy. Do the paper about slau mention if they use a specific bc such as curvature corrected wall bc?
naffrancois is offline   Reply With Quote

Old   January 1, 2019, 07:53
Join Date: Sep 2015
Location: Singapore
Posts: 93
Rep Power: 6
usv001 is on a distinguished road
Hello naffrancois,

You're right. fixedValue prescribes everything at the boundary. I modified it to waveTransmissive which should allow the acoustic waves to leave the domain but it didn't have any effect on the asymmetry. Since the farfield is quite some distance away from the cylinder, I don't think that it is the main thing.

On the other hand, you're quite right about the too much entropy being generated near the wall. I was using a simple symmetry technique (ST) at the wall. I went through the papers on curvature corrected symmetry technique (CCST). I was able to get symmetric results for a M=0.3 flow over a cylinder with Venkatakrishnan limiter (using 1st order upwind scheme, generated the asymmetry). For this case, it was crucial for the farfield BC to be waveTransmissive for good convergence. I compared ST and CCST. It turns out that the differences were quite subtle but CCST was more accurate. Thanks for bringing that to my attention! I've attached am image of the results.

By the way, I checked the paper on SLAU and it says the following:

For the solid wall, the density and pressure of ghost cells are given by zeroth-order extrapolation. Point symmetric or mirror symmetric velocity vectors are set for nonslip and slip walls, respectively.
It is not exactly clear as to which method (ST or CCST) they are using.

In summary,
  • I think my current implementation of Venkatakrishnan limiter is fine.
  • I am guessing that the asymmetry was caused by the high numerical diffusion of the 1st order upwind schemes and, in a small part, due to the wall BC.
  • Using waveTransmissive was important for good convergence.

So, the main problem now is that the solver is not able to handle very low Mach numbers but it performs fine at the higher subsonic values. Does anyone has any thoughts on this?

Many thanks,
Attached Images
File Type: jpg SLAU_Cp,Ma.jpg (58.4 KB, 19 views)
usv001 is offline   Reply With Quote

Old   September 10, 2019, 06:11
New Member
Join Date: Nov 2018
Posts: 1
Rep Power: 0
dario_z is on a distinguished road

Which low Mach preconditioner are you using (if any)?

Have you been able to progress further?
dario_z is offline   Reply With Quote

Old   September 19, 2019, 08:19
Senior Member
Join Date: Sep 2013
Location: Hyderabad
Posts: 137
Rep Power: 8
AshwaniAssam is on a distinguished road
Does it run for case M=0.1, 0.2. SLAU may have some issues at low Mach number. But 0.1 seems fine.

When you run second order scheme. Did you get symmetric solution, even though your simulation might have not converged?

Also, what do you mean by asymmetry? Have you tried to match with Cp or something at the wall.
AshwaniAssam is offline   Reply With Quote


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
Doubt in the Venkatakrishnan limiter. EMolina SU2 2 January 23, 2016 11:19
OpenFOAM v3.0.1 Training, London, Houston, Berlin, Jan-Mar 2016 OpenFOAM Announcements from Other Sources 0 January 5, 2016 04:18
Venkatakrishnan limiter kei-tee Main CFD Forum 1 November 6, 2012 02:02
64bitrhel5 OF installation instructions mirko OpenFOAM Installation 2 August 12, 2008 19:07
Venkatakrishnan limiter emca Main CFD Forum 0 November 9, 2007 16:34

All times are GMT -4. The time now is 17:33.