NACA0012:Oscillation on the wall

Hello, I am simulating airfoil in Ma=0.8. But oscillation occurs on the wall, the grid and density contour are shown below. Could someone know anything about this problem?

[backend]
precision = double
rank-allocator = linear

[constants]
gamma = 1.4
mu = 0.0
Pr = 0.72

uc = 0.8
rhoc = 1.0

[solver]
system = navier-stokes
order = 3
shock-capturing = artificial-viscosity

[solver-artificial-viscosity]
max-artvisc = 0.0001
s0 = 0.01
kappa = 5.0

[solver-time-integrator]
scheme = rk45
controller = pi
tstart = 0.0
tend = 50.0
dt = 0.000001
;dt = 0.00001
atol = 1e-7
rtol = 1e-7

[solver-interfaces]
riemann-solver = roe
ldg-beta = 0.5
ldg-tau = 0.1

[solver-interfaces-quad]
flux-pts = gauss-legendre
quad-deg = 11
quad-pts = gauss-legendre

[solver-interfaces-line]
flux-pts = gauss-legendre
quad-deg = 11

[solver-elements-tri]
soln-pts = williams-shunn
quad-deg = 9

[solver-elements-quad]
soln-pts = gauss-legendre
quad-deg = 11
quad-pts = gauss-legendre

[solver-elements-hex]
soln-pts = gauss-legendre
quad-deg = 11
quad-pts = gauss-legendre


[soln-plugin-writer]
dt-out = 0.1
basedir = .
basename = naca{t:.1f}


[soln-bcs-wall]
type = slp-adia-wall

[soln-bcs-inflow]
type = char-riem-inv
rho = rhoc
u = uc
v = 0
p=1

[soln-bcs-outflow]
type = char-riem-inv
p=1
u = uc
v = 0
rho = rhoc

[soln-ics]
rho = rhoc
u = uc
v = 0
p=1


Best regards

Hi jian - are those oscillations part of the expected solution? Do they vanish if you use non-zero viscosity? E.g.,

mu = 1e-4?

Also, if you want to use anti-aliasing {quad-deg, quad-pts}, add the “anti-alias” option in the [solver] block

[solver]
...
; anti-alias = none      ; default
; anti-alias = flux
; anti-alias = surf-flux
; anti-alias = flux, surf-flux

Hello, nnunn.
Those oscillations are not part of the expected solution. I use none-zero viscosity or anti-aliasing, and the oscillations still exist.

Are you using a high order mesh ie Q2 or above? Or is the surface faceted?

Yes, I used Q3 mesh.

Best regards

Can you confirm that the mesh being exported is in fact high-order. It just looks to me like the oscillations are suspiciously placed at the element boundaries.

If the mesh is definitely high order, then you may want to consider flux point anti-aliasing.

I am pretty sure that I used Q3 mesh. And I add anti-alias = flux, surf-flux, it doesn’t work.

Yep, but can you look at the mesh file and see that the surface elements on the wall are high order? Sometimes they won’t actually be high order if the mesh hasn’t been constrained properly, speaking from experience.

If you are using Pointwise, there is a handy feature where you can output the surface meshes as vtu, which you can then open in paraview. When look at they it is pretty obvious if they are high order. Otherwise, gmsh files are in ascii so you can just look at the element definitions on the surface. Sometimes what can happen is it will export the surface as ‘high order’ but because the surface was constrained the surface is still faceted so first-order.

As can be seen, the airfoil wall is 208, and the element type is 21, which means 10-node third order triangle. Am I right?

Yep, that is correct. But do those points actually correspond to a high order polynomial?

Thanks a lot. how to confirm these points that correspond to a high order polynomial? Could you take a look for my mesh?

Best regards

Can you confirm that after opening the .vtu file up in ParaView that you are running the clean to grid filter and setting the non-linear subdivision level under the miscellaneous options to 2 or 3?

Regards, Freddie.

Yes, the non-linear subdivision level can choose from 0 to 4.

So does this indicate that it is not a matter of mesh order?

Regards

No, this just indicates that it is not a visualisation issue.

In a separate python script can you try opening the pyfrm file and seeing if all elements are being treated as linearised?

import h5py
import numpy as np

def test():
    f = h5py.File('meshfile.pyfrm', 'r+')
    print(np.all(f['spt_tri_p0'].attrs['linear']))

if __name__ == '__main__':
    test()

Okey, I put mesh (naca.msh) and python scrip file (read.py) in h5py/tests/. Then I use "python

read.py" to run this scrip, but it comes error

“Traceback (most recent call last):
File “read.py”, line 1, in
import h5py
ImportError: No module named h5py”

How can I run this scrip?

Thanks for your replay.

Best regards

You have no module named h5py in your python environment, so you’ll need to install that.

My simple script won’t work on gmsh files, but rather it’s intended to work on pyfrm files which use an hdf5 format. You’ll first need to run pyfr import ... and then pyfr partition 1 ..., then you can run that script.

Hi jian,
As @WillT suspected, the high-order nodes appear to be spaced on linear faces (pic below):
PS: when the mesh is loaded, you can report the number of curved and linear elements.

1 Like

Yes, I check the mesh, and it is high order nodes.

This is my ini. file.

Could you please try this case if it has some problems?

Best regards

How are you checking that the mesh is high-order?