Skip to content

Commit

Permalink
ExaWind Benchmark: Transition model airfoil cases
Browse files Browse the repository at this point in the history
  • Loading branch information
mbkuhn authored Oct 8, 2024
2 parents b192f01 + c15451f commit e105fad
Show file tree
Hide file tree
Showing 17 changed files with 551 additions and 0 deletions.
45 changes: 45 additions & 0 deletions nalu-wind/2D_airfoils_Transition/1_NLF1-0416/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@


# NASA NLF(1)-0416

Validation and verification of the transition model were conducted for the NASA NLF(1)-0416 airfoil using Nalu-Wind with the 1-equation gamma transition model. First, a grid sensitivity study was performed using six different mesh resolutions from the AIAA CFD Transition Modeling DG[^1]. The results were compared to those from NASA’s structured flow solver, OVERFLOW[^2], and unstructured flow solver, FUN3D[^3], utilizing the same turbulence and transition models, CFD meshes, and inflow conditions. Based on these findings, a full angle-of-attack sweep was performed, with results compared to experimental data.

## Simulation Conditions

- Test airfoil: NASA NLF(1)-0416 airfoil with a thickness of 16%
- Flow Condition: M=0.1, Re=4million, Tu=0.15%
- CFD meshes with six different resoltuions provided by AIAA CFD Transition Modeling DG[^1]
- 2-D structured C-type meshes: Tiny, Coarse, Medium, Fine, Extra, Ultra resolutions[^4]
- Turbulence / Transition model: SST-2003 with the 1-eq Gamma transition model with µt/µ=1
- Nalu-Wind version: [6155b17fa6b8914a819a492230c96f7990a97b78](https://github.com/Exawind/nalu-wind/commit/6155b17fa6b8914a819a492230c96f7990a97b78)

## Results: Grid Sensitivity Study

### Lift and drag coefficients at AoA=5°
<img src="figs/aoa5/nlf0416_cl_cd.png" alt="Cf" width="1000">

Two different options for the freestream conditions are tested here:
1) Local turbulence intensity with the sustaining terms (green line): same way as the OVERFLOW and FUN3D simulations
2) Constant turbulence intensity without the sustaining terms (red line)

The grid sensitivitiy results are presented for the lift and drag coefficient. In the above figure, the x axis, h, is the 1/sqrt(total number of nodes), meaning smaller values correspond to finer grids. With the Option 1, Nalu-Wind results show similar trends to the FUN3D results. It is also seen that to achieve the grid-converged trends, at least the third finest mesh resolution, ("Fine") is required. Overall, both Nalu-Wind and FUN3D show more mesh-dependence than OVERFLOW. This is attributed to the numerical shcemes of the unstructred flow solvers, which have lower order of accuracy in space compared to structured flow solvers.

Option 2, which applies a constant turbulence intensity, improves grid convergence of the lift and drag, particularly at low mesh resolutions. For more consistent and accurate predictions, Option 2 is recommended. Option 2 is activated only if fsti is explicitly specified in the Nalu-Wind input with a positive value. However, it should be noted that Option 2 is valid only for single airfoil or single turbine simulations. For internal flow or multi-turbine cases, Option 1 should be used without the sustaning terms.

## Results: Angle of Attack Sweep

### Comparison of the lift and drag coefficient
<img src="figs/clcd/nlf0416_clcd.png" alt="Cf" width="1000">

Based on the grid sensitivity results, a full sweep of angles of attack was performed using the Fine mesh level. The two figures above compare the lift and drag polar with the experimental measurements[^5]. For the lift, the transition simulation slightly over-predicts the lift coefficient in the linear range of the lift curve, a similar behavior also observed in transition predictions using other transition models and other flow solvers. For the drag polar, the transition simulation predicts lower drag across the range of angles of attack than the fully turbulent simulation, capturing the trend of the experimental data very well.

Each case with the "Fine" mesh took approximately 40 minutes to 10,000 iterations, using 4 Picard iterations per time step, on 26 cores of NREL's Kestrel HPC cluster. The number of cores per case was not determined by Nalu-Wind’s scalability on Kestrel, but simply to accommodate 4 cases on a single node of Kestrel.

## References
[^1]: https://transitionmodeling.larc.nasa.gov/
[^2]: Venkatachari, B. S., et al., "Implementation and Assessment of Menter’s Galilean-Invariant 𝛾
Transition Model in OVERFLOW," AIAA AVIATION 2023 Forum, 2023. https://doi.org/10.2514/6.2023-3533
[^3]: Hildebrand, N., et al., "Implementation and Verification of the SST-𝛾 and SA-AFT
Transition Models in FUN3D," AIAA AVIATION 2023 Forum, 2023. https://doi.org/10.2514/6.2023-3530.
[^4]: Coder, J., "Standard Test Cases for Transition Model Verification and Validationin Computational Fluid Dynamics," 56th AIAA Aerospace Sciences Meeting, January, 2018. https://doi.org/https://doi.org/10.2514/6.2018-0029.
[^5]: Somers, D. M., "Design and Experimental Results for a Natural-Laminar-Flow Airfoil for General Aviation Applications," NASA Technical Paper 1861, 1981.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
aoa,cl,cd
5.08631,1.0089,0.00761653
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
h,cl,cd
0.0012793176972281453, 1.047663551, 0.007459057
0.0019275053304904054, 1.046915888, 0.007598015
0.0025586353944562906, 1.025046729, 0.009444169
0.0038208955223880603, 1.01588785, 0.010496278
0.0051002132196162064, 1.001308411, 0.012501241
0.007607675906183369, 0.982429907, 0.017444169
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import glob, pathlib
import math


size=13
params = {'legend.fontsize': 'large',
'axes.labelsize': size,
'axes.titlesize': size,
'xtick.labelsize': size,
'ytick.labelsize': size}
plt.rcParams.update(params)

nalu1 = pd.read_csv('tu_const_aoa_5.dat')
nalu3 = pd.read_csv('tu_sust_aoa_5.dat')

fun3d = pd.read_csv('fun3d_t_aoa_5.dat')
overf = pd.read_csv('overflow_aoa_5.dat')

exp = pd.read_csv('exp.csv')
exp_cl = exp['cl'][0]
exp_cd = exp['cd'][0]

plt.figure(figsize=(12,4.5))
plt.subplot(1, 2, 1)
#fig = plt.figure(1)
plt.plot(fun3d['h'],fun3d['cl'],'-o')
plt.plot(overf['h'],overf['cl'],'-o')
plt.plot(nalu3['h'],nalu3['cl'],'-o')
plt.plot(nalu1['h'],nalu1['cl'],'-o')
#plt.axhline(y = exp_cl, color = 'k', linestyle = '--')
plt.xlim([0, 0.01])
plt.ylim([0.95, 1.1])
plt.xlabel('h')
plt.ylabel('Lift coefficient, $C_{l}$')
plt.legend(['SST-$\gamma$: FUN3D','SST-$\gamma$: OVERFLOW','SST-$\gamma$: Nalu-Wind','SST-$\gamma$: Nalu-Wind w/ Const Tu'])

plt.subplot(1, 2, 2)
#fig = plt.figure(2)
plt.plot(fun3d['h'],fun3d['cd'],'-o')
plt.plot(overf['h'],overf['cd'],'-o')
plt.plot(nalu3['h'],nalu3['cd'],'-o')
plt.plot(nalu1['h'],nalu1['cd'],'-o')
#plt.axhline(y = exp_cd, color = 'k', linestyle = '--')
plt.xlim([0, 0.01])
plt.ylim([0.005, 0.02])
plt.xlabel('h')
plt.ylabel('Drag coefficient, $C_{d}$')
plt.legend(['SST-$\gamma$: FUN3D','SST-$\gamma$: OVERFLOW','SST-$\gamma$: Nalu-Wind','SST-$\gamma$: Nalu-Wind w/ Const Tu'])
plt.tight_layout()

plt.savefig("nlf0416_cl_cd.png",dpi=300)

plt.show()

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
h,cd,cl
0.0012830796056602489, 0.007459057, 1.048785047
0.001919686435815469, 0.007478908, 1.048785047
0.0025562634594892657, 0.00751861, 1.048785047
0.0038173458818620103, 0.007637717, 1.048037383
0.005077623529236432, 0.008292804, 1.041308411
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
h,cl,cd
0.007604, 1.032511, 0.014603
0.005089, 1.042179, 0.010020
0.003824, 1.043715, 0.008719
0.002554, 1.045341, 0.007835
0.001918, 1.045591, 0.007573
0.001280, 1.045725, 0.007398
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
h,cl,cd
0.007604, 1.010290, 0.016259
0.005089, 1.011069, 0.012503
0.003824, 1.008039, 0.011587
0.002554, 1.043021, 0.007961
0.001918, 1.043683, 0.007670
0.001280, 1.043787, 0.007498
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import math
import yaml

size=13
params = {'legend.fontsize': 'large',
'axes.labelsize': size,
'axes.titlesize': size,
'xtick.labelsize': size,
'ytick.labelsize': size}
plt.rcParams.update(params)
co_list = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']

co0=co_list[0]
co1=co_list[1]

# Experiment
cl = pd.read_csv('exp_Re4M_aoa.csv',names=['aoa','cl'],header=None)
cdcl = pd.read_csv('exp_Re4M_polar.csv',names=['cd','cl'],header=None)

with open('nlf0416_F_rey04000000_turb.yaml', "r") as data0:
turb=yaml.safe_load(data0)

with open('nlf0416_F_rey04000000.yaml', "r") as data1:
trans=yaml.safe_load(data1)


plt.figure(figsize=(12,4.5))
plt.subplot(1, 2, 1)
#fig = plt.figure(1)
plt.plot(cl['aoa'],cl['cl'],'ko')
plt.plot(turb['nlf0416_F']['aoa'],turb['nlf0416_F']['cl'])
plt.plot(trans['nlf0416_F']['aoa'],trans['nlf0416_F']['cl'])
plt.xlim([-7,20])
plt.ylim([-0.5,2.0])
plt.xlabel('Angle of Attack [deg]')
plt.ylabel('Lift coefficient, $C_{l}$')
plt.legend(['Experiment','Turbulent','Transition'])
plt.tight_layout()

plt.subplot(1, 2, 2)
plt.plot(cdcl['cd'],cdcl['cl'],'ko')
plt.plot(turb['nlf0416_F']['cd'],turb['nlf0416_F']['cl'])
plt.plot(trans['nlf0416_F']['cd'],trans['nlf0416_F']['cl'])
plt.xlim([0.0,0.025])
plt.ylim([-0.5,2.0])
plt.xlabel('Drag coefficient, $C_{d}$')
plt.ylabel('Lift coefficient, $C_{l}$')
plt.legend(['Experiment','Turbulent','Transition'])
plt.tight_layout()
plt.savefig("nlf0416_clcd.png",dpi=300)

plt.show()
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
-1.61335e+1, -4.54991e-1
-1.53049e+1, -1.15964e+0
-1.42923e+1, -1.13225e+0
-1.32336e+1, -1.03580e+0
-1.22209e+1, -9.25532e-1
-1.12083e+1, -8.24470e-1
-1.01496e+1, -7.23419e-1
-9.18297e+0, -6.13138e-1
-8.17031e+0, -5.02867e-1
-7.11162e+0, -3.83399e-1
-6.14499e+0, -2.63909e-1
-5.08631e+0, -1.44441e-1
-4.11968e+0, -2.49509e-2
-3.06099e+0, 9.45176e-2
-2.04833e+0, 2.13997e-1
-1.03567e+0, 3.33476e-1
-2.30150e-2, 4.52955e-1
9.89643e-1, 5.67830e-1
2.04833e+0, 6.82694e-1
3.01496e+0, 7.88371e-1
4.07365e+0, 8.98631e-1
5.08631e+0, 1.00890e+0
6.05293e+0, 1.10997e+0
7.11162e+0, 1.21563e+0
8.17031e+0, 1.32128e+0
9.18297e+0, 1.41774e+0
1.01956e+1, 1.50960e+0
1.12543e+1, 1.59683e+0
1.22209e+1, 1.67028e+0
1.32336e+1, 1.73451e+0
1.42463e+1, 1.76650e+0
1.51669e+1, 1.34270e+0
1.61335e+1, 1.29183e+0
1.71461e+1, 1.23634e+0
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
2.58813e-2, -1.04212e+0
1.93135e-2, -9.30445e-1
1.52035e-2, -8.26474e-1
1.38198e-2, -7.22503e-1
1.23977e-2, -6.14681e-1
1.10907e-2, -4.99158e-1
1.00909e-2, -3.79783e-1
9.28307e-3, -2.60409e-1
8.28324e-3, -1.41035e-1
7.28341e-3, -2.16606e-2
6.51393e-3, 1.01564e-1
6.20534e-3, 2.17088e-1
6.01196e-3, 3.32611e-1
5.93368e-3, 4.55836e-1
5.93229e-3, 5.71360e-1
6.12295e-3, 6.83032e-1
6.16006e-3, 7.90854e-1
6.69627e-3, 9.06378e-1
7.61653e-3, 1.01805e+0
8.69053e-3, 1.11817e+0
9.68764e-3, 1.22599e+0
1.07232e-2, 1.32996e+0
1.16052e-2, 1.42623e+0
1.32169e-2, 1.51865e+0
1.50591e-2, 1.60337e+0
1.78613e-2, 1.68424e+0
2.12398e-2, 1.74200e+0
2.48874e-2, 1.77665e+0
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
nlf0416_F:
aoa:
- -10.0
- -9.0
- -8.0
- -7.0
- -6.0
- -5.0
- -4.0
- -3.0
- -2.0
- -1.0
- 0.0
- 1.0
- 2.0
- 3.0
- 4.0
- 5.0
- 6.0
- 7.0
- 8.0
- 9.0
- 10.0
- 11.0
- 12.0
- 13.0
- 14.0
- 15.0
- 16.0
- 17.0
- 18.0
- 19.0
- 20.0
cd:
- 0.01233899700853617
- 0.011303286859240638
- 0.01036041111013761
- 0.009602269767544434
- 0.008872765998107159
- 0.00719983198673175
- 0.006584125824356411
- 0.006173588173390386
- 0.005870106442852917
- 0.005703091525493671
- 0.005647361965699194
- 0.00586819118236289
- 0.006155872531987852
- 0.006556205642658496
- 0.007140048365406285
- 0.007835185272077633
- 0.008632812851552568
- 0.009623827443722206
- 0.010686440145540932
- 0.012005364069800989
- 0.013449095120890653
- 0.015273946417421025
- 0.017355087407045052
- 0.019856900250746486
- 0.023247448633613613
- 0.0287889492326649
- 0.03584677664098612
- 0.04644638776378088
- 0.0649872878501207
- 0.08565869435287433
- 0.11146170323965467
cl:
- -0.6863456423017156
- -0.5777719534668534
- -0.4665038680062696
- -0.3524271028847398
- -0.23697931451164614
- -0.11852066028067743
- 0.0005166367707713443
- 0.1197573617242224
- 0.2390404988473541
- 0.35814448358747397
- 0.47671874849424206
- 0.5935020321439597
- 0.7094435123937136
- 0.8237785456941754
- 0.9354704674077039
- 1.045342187784817
- 1.1533458941387351
- 1.258135594980248
- 1.3610616458707512
- 1.4594182572399568
- 1.554729389699156
- 1.6430394538712383
- 1.725725660651825
- 1.7998077116686797
- 1.8586307361064782
- 1.8871552126609992
- 1.9039292364299885
- 1.891181315134967
- 1.8155470480207954
- 1.7390225996877584
- 1.6395202144014653
cm:
- 0.08476716380009755
- 0.08655649615147971
- 0.08857069891436148
- 0.09048178434504905
- 0.09244331468205406
- 0.09647247536351146
- 0.09880078101222199
- 0.10088824146691357
- 0.1028931196802867
- 0.10471334033100048
- 0.10634663429776745
- 0.10739693921444529
- 0.10832074690879771
- 0.10901858202694717
- 0.10934413100987417
- 0.10943525439518514
- 0.10930172844845056
- 0.10875633752236856
- 0.10801943458672782
- 0.1067254218273854
- 0.10512170640824503
- 0.10273003345695476
- 0.09983556721938004
- 0.09623326036694144
- 0.09153817759031482
- 0.08551381981115617
- 0.08129354472584603
- 0.07929566459777142
- 0.08102061166915145
- 0.08546597922923987
- 0.0926841209447261
Loading

0 comments on commit e105fad

Please sign in to comment.