TUT: turbulentDFSEMInlet: update DFSEM tutorials (fixes #2097)

This commit is contained in:
Kutalmis Bercin 2021-05-18 16:38:06 +01:00 committed by Andrew Heather
parent b9c174312b
commit f5fe37114f
80 changed files with 2362 additions and 1317 deletions

View File

@ -1,16 +0,0 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
#------------------------------------------------------------------------------
runApplication blockMesh
#- Run serial
#runApplication $(getApplication)
#- Run parallel
runApplication decomposePar -cellDist
runParallel $(getApplication)
#runApplication reconstructPar -latestTime
#------------------------------------------------------------------------------

View File

@ -1,18 +0,0 @@
Channel test case for ReTau=395,based on the reference:
Poletto, R., Craft, T., and Revell, A.,
"A New Divergence Free Synthetic Eddy Method for the
Reproduction of Inlet Flow Conditions for LES",
Flow Turbulence Combust (2013) 91:519-539
Inlet patch Reynolds stress, velocity and turbulence length scale data has been
extracted from DNS data of:
Moser, Kim & Mansour
"DNS of Turbulent Channel Flow up to Re_tau=590",
Physics of Fluids (1999) vol 11, 943-945.
Data available from (last checked 28 June 2016)
http://turbulence.ices.utexas.edu/MKM_1999.html

View File

@ -1,259 +0,0 @@
(
0
1.76693e-06
1.06447e-07
2.85582e-08
1.73393e-08
3.56243e-08
3.79499e-08
1.50479e-07
1.55614e-07
1.93408e-07
4.50118e-08
2.6295e-10
6.18128e-08
4.4709e-08
5.98657e-07
2.25711e-06
4.20946e-06
6.292e-06
7.5414e-06
9.02814e-06
1.04737e-05
1.25187e-05
1.37559e-05
1.40338e-05
1.24681e-05
1.08272e-05
9.10144e-06
7.81661e-06
6.08627e-06
4.68729e-06
3.01241e-06
1.93855e-06
1.03945e-06
2.49601e-07
2.33919e-07
3.47823e-08
3.05604e-06
8.25413e-06
1.04748e-05
1.36651e-05
2.35252e-05
3.87371e-05
5.21582e-05
6.71737e-05
6.89399e-05
4.57512e-05
1.94891e-05
9.7778e-06
1.47858e-05
3.40409e-05
6.06823e-05
8.59513e-05
8.29571e-05
5.42278e-05
3.46015e-05
2.20432e-05
1.73878e-05
1.05749e-05
4.67814e-06
8.66793e-06
1.79361e-05
1.22464e-05
3.93103e-06
1.00778e-06
1.81983e-06
2.70815e-05
9.56468e-05
0.000139304
0.00012493
9.50459e-05
4.78307e-05
8.71962e-06
1.24275e-05
4.91383e-05
8.77264e-05
0.000114449
0.00014567
0.000201758
0.000251863
0.000272594
0.000213599
0.000145126
0.000115603
0.000122779
0.000116865
8.36843e-05
4.06009e-05
3.49149e-05
5.22978e-05
5.07525e-05
2.5995e-05
2.6683e-06
9.29144e-06
1.14821e-05
9.41939e-06
1.01946e-05
6.64024e-06
1.1913e-06
3.25066e-06
8.47834e-06
1.42023e-06
4.30742e-05
0.000106228
0.000115468
9.07632e-05
7.04511e-05
9.21776e-05
0.000104486
0.000111678
0.000109852
0.000111867
9.10747e-05
6.82206e-05
4.09085e-05
2.3961e-05
2.0467e-06
7.74345e-06
1.66716e-05
1.54967e-05
2.95089e-05
4.82299e-05
6.99781e-05
7.16947e-05
7.33475e-05
7.40551e-05
9.45846e-05
0.000107202
0.000120068
0.000122517
0.000120068
0.000107202
9.45846e-05
7.40551e-05
7.33475e-05
7.16947e-05
6.99781e-05
4.82299e-05
2.95089e-05
1.54967e-05
1.66716e-05
7.74345e-06
2.0467e-06
2.3961e-05
4.09085e-05
6.82206e-05
9.10747e-05
0.000111867
0.000109852
0.000111678
0.000104486
9.21776e-05
7.04511e-05
9.07632e-05
0.000115468
0.000106228
4.30742e-05
1.42023e-06
8.47834e-06
3.25066e-06
1.1913e-06
6.64024e-06
1.01946e-05
9.41939e-06
1.14821e-05
9.29144e-06
2.6683e-06
2.5995e-05
5.07525e-05
5.22978e-05
3.49149e-05
4.06009e-05
8.36843e-05
0.000116865
0.000122779
0.000115603
0.000145126
0.000213599
0.000272594
0.000251863
0.000201758
0.00014567
0.000114449
8.77264e-05
4.91383e-05
1.24275e-05
8.71962e-06
4.78307e-05
9.50459e-05
0.00012493
0.000139304
9.56468e-05
2.70815e-05
1.81983e-06
1.00778e-06
3.93103e-06
1.22464e-05
1.79361e-05
8.66793e-06
4.67814e-06
1.05749e-05
1.73878e-05
2.20432e-05
3.46015e-05
5.42278e-05
8.29571e-05
8.59513e-05
6.06823e-05
3.40409e-05
1.47858e-05
9.7778e-06
1.94891e-05
4.57512e-05
6.89399e-05
6.71737e-05
5.21582e-05
3.87371e-05
2.35252e-05
1.36651e-05
1.04748e-05
8.25413e-06
3.05604e-06
3.47823e-08
2.33919e-07
2.49601e-07
1.03945e-06
1.93855e-06
3.01241e-06
4.68729e-06
6.08627e-06
7.81661e-06
9.10144e-06
1.08272e-05
1.24681e-05
1.40338e-05
1.37559e-05
1.25187e-05
1.04737e-05
9.02814e-06
7.5414e-06
6.292e-06
4.20946e-06
2.25711e-06
5.98657e-07
4.4709e-08
6.18128e-08
2.6295e-10
4.50118e-08
1.93408e-07
1.55614e-07
1.50479e-07
3.79499e-08
3.56243e-08
1.73393e-08
2.85582e-08
1.06447e-07
1.76693e-06
0
)

View File

@ -1,31 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
transportModel Newtonian;
// Re_tau = u_tau L / nu
// Re_tau = 395
// L = half channel height = 1
// Ubulk/u_tau = 17.55
// U_bulk = 17.55 -> u_tau = 1
// -> nu = 1*1/395 = 2.532e-3
nu 2.532e-3;
// ************************************************************************* //

View File

@ -1,127 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application pimpleFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 85;
deltaT 4e-3;
writeControl timeStep;
writeInterval 25;
purgeWrite 10;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
// Allow 10% run-up before calculating mean
timeStart #eval{ 0.1 * ${/endTime} };
functions
{
Q1
{
type Q;
libs (fieldFunctionObjects);
writeControl writeTime;
}
vorticity1
{
type vorticity;
libs (fieldFunctionObjects);
writeControl writeTime;
}
yPlus
{
type yPlus;
libs (fieldFunctionObjects);
writeControl writeTime;
}
LambVector1
{
type LambVector;
libs (fieldFunctionObjects);
writeControl writeTime;
field U;
}
div1
{
type div;
libs (fieldFunctionObjects);
writeControl writeTime;
field LambVector;
}
fieldAverage1
{
type fieldAverage;
libs (fieldFunctionObjects);
writeControl writeTime;
timeStart ${/timeStart};
fields
(
U
{
mean on;
prime2Mean on;
base time;
}
p
{
mean on;
prime2Mean on;
base time;
}
LambVector
{
mean on;
prime2Mean off;
base time;
}
div(LambVector)
{
mean on;
prime2Mean off;
base time;
}
);
}
}
// ************************************************************************* //

View File

@ -5,10 +5,10 @@ cd "${0%/*}" || exit # Run from this directory
cleanCase0
rm -f system/controlDict
rm -rf constant/boundaryData/inlet
rm -rf 0.orig
rm -rf constant
rm -rf system
rm -rf results
rm -f *.png
rm -f constant/{R*,points*,UMean*}
rm -rf plots
#------------------------------------------------------------------------------

View File

@ -0,0 +1,121 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions
#------------------------------------------------------------------------------
# settings
# operand setups
setups="
DFSEM
"
# flag to enable computations in parallel mode
parallel=true
#------------------------------------------------------------------------------
#######################################
# Collect results into a given path
# and clean the case for the next run
# Arguments:
# $1 = Path to move results
# Outputs:
# Writes info to stdout
#######################################
collect() {
[ $# -eq 0 ] && { echo "Usage: $0 dir-model"; exit 1; }
collection="$1"
dirResult=results/"$collection"
dirSettings="$dirResult"/settings
if [ ! -d "$dirResult" ]
then
echo " # Collecting results and settings into $dirResult"
mkdir -p "$dirResult"
mkdir -p "$dirSettings"
mv -f $(foamListTimes) "$dirResult"
[ -d postProcessing ] && mv -f postProcessing "$dirResult"
[ -d processor0 ] && mv -f processor* "$dirResult"
mv -f log.* "$dirResult"
cp -f system/{fv*,controlDict} constant/*Properties "$dirSettings"
mv -f 0/ "$dirSettings"
echo " # Cleaning up the case"
cleanTimeDirectories
cleanPostProcessing
else
echo " # Directory $dirResult already exists"
echo " # Skipping the computation"
fi
}
#------------------------------------------------------------------------------
for setup in $setups
do
echo ""
echo "# Computations for the setup: $setup"
echo ""
dirSetup="setups.orig/$setup"
cp -rfL "$dirSetup/0.orig" .
cp -rfL "$dirSetup/constant" .
cp -rfL "$dirSetup/system" .
cp -rf 0.orig/ 0/
if [ ! -d constant/polyMesh ]
then
runApplication blockMesh
runApplication renumberMesh -overwrite -constant
runApplication checkMesh -allTopology -allGeometry -constant
fi
if [ "$parallel" = true ]
then
runApplication decomposePar
runParallel $(getApplication)
runApplication reconstructPar
else
runApplication $(getApplication)
fi
runApplication -s columnAverage \
postProcess -func columnAverage -latestTime
runApplication -s sample \
postProcess -func sample -latestTime
runApplication -s skinFriction \
postProcess -func sampleCf -latestTime
collect "$setup"
done
#------------------------------------------------------------------------------

View File

@ -0,0 +1,607 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
#------------------------------------------------------------------------------
# settings
# operand setups
setups="
DFSEM
"
#------------------------------------------------------------------------------
plot_R_vs_y() {
setup="$1"
endTime="$2"
# benchmarkFile="ReTau-395/dataset/chan395.reystress"
n=0
m=0
for l in {1..11}
do
m=$(($m+5))
sampleFiles[$n]="results/$setup/postProcessing/sample/$endTime/l${m}_columnAverage:columnAverage(UPrime2Mean).xy"
n=$(($n+1))
done
image="plots/$setup/Ruu_vs_y.png"
gnuplot<<PLT_RUU_VS_Y
set terminal pngcairo font "helvetica,20" size 5000, 1000
set grid
set xrange [0:8]
set yrange [0:1]
set key right top
set key samplen 2
set key spacing 0.75
set xlabel "R_{uu} [m^2/s^2]"
set ylabel "y/h [-]"
set output "$image"
set multiplot layout 1,11 title "Setup: $setup" noenhanced
# Benchmark - Experimental
# benchmark ="$benchmarkFile"
# OpenFOAM - Numerical
samples="${sampleFiles[*]}"
list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
do for [i = 1:11] {
if (i != 1) { unset ylabel }
plot \
word(samples, i) u 2:1 t word(list, i) w l lw 2 lc rgb "#4169e1"
# benchmark every 4 u 3:1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
}
unset multiplot
unset output
PLT_RUU_VS_Y
image="plots/$setup/Rvv_vs_y.png"
gnuplot<<PLT_RVV_VS_Y
set terminal pngcairo font "helvetica,20" size 5000, 1000
set grid
set xrange [0:1]
set yrange [0:1]
set key right top
set key samplen 2
set key spacing 0.75
set xlabel "R_{vv} [m^2/s^2]"
set ylabel "y/h [-]"
set output "$image"
set multiplot layout 1,11 title "Setup: $setup" noenhanced
# Benchmark - Experimental
# benchmark="$benchmarkFile"
# OpenFOAM - Numerical
samples="${sampleFiles[*]}"
list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
do for [i = 1:11] {
if (i != 1) { unset ylabel }
plot \
word(samples, i) u 5:1 t word(list, i) w l lw 2 lc rgb "#4169e1"
# benchmark every 4 u 4:1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
}
unset multiplot
unset output
PLT_RVV_VS_Y
image="plots/$setup/Rww_vs_y.png"
gnuplot<<PLT_RWW_VS_Y
set terminal pngcairo font "helvetica,20" size 5000, 1000
set grid
set xrange [0:1.8]
set xtics 1.8/4
set yrange [0:1]
set key right top
set key samplen 2
set key spacing 0.75
set xlabel "R_{ww} [m^2/s^2]"
set ylabel "y/h [-]"
set output "$image"
set multiplot layout 1,11 title "Setup: $setup" noenhanced
# Benchmark - Experimental
# benchmark="$benchmarkFile"
# OpenFOAM - Numerical
samples="${sampleFiles[*]}"
list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
do for [i = 1:11] {
if (i != 1) { unset ylabel }
plot \
word(samples, i) u 7:1 t word(list, i) w l lw 2 lc rgb "#4169e1"
# benchmark every 4 u 5:1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
}
unset multiplot
unset output
PLT_RWW_VS_Y
image="plots/$setup/Ruv_vs_y.png"
gnuplot<<PLT_RUV_VS_Y
set terminal pngcairo font "helvetica,20" size 5000, 1000
set grid
set xrange [0:1]
set yrange [0:1]
set key right top
set key samplen 2
set key spacing 0.75
set xlabel "R_{uv} [m^2/s^2]"
set ylabel "y/h [-]"
set output "$image"
set multiplot layout 1,11 title "Setup: $setup" noenhanced
# Benchmark - Experimental
# benchmark="$benchmarkFile"
# OpenFOAM - Numerical
samples="${sampleFiles[*]}"
list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
do for [i = 1:11] {
if (i != 1) { unset ylabel }
plot \
word(samples, i) u (-\$3):1 t word(list, i) w l lw 2 lc rgb "#4169e1"
# benchmark every 4 u (-\$6):1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
}
unset multiplot
unset output
PLT_RUV_VS_Y
}
plot_U_vs_y() {
setup="$1"
endTime="$2"
# benchmarkFile="ReTau-395/dataset/chan395.means"
n=0
m=0
for l in {1..11}
do
m=$(($m+5))
sampleFiles[$n]="results/$setup/postProcessing/sample/$endTime/l${m}_columnAverage:columnAverage(UMean).xy"
n=$(($n+1))
done
image="plots/$setup/u_vs_y.png"
gnuplot<<PLT_U_VS_Y
set terminal pngcairo font "helvetica,20" size 5000, 1000
set grid
set xrange [0:25]
set yrange [0:1]
set key left top
set key samplen 2
set key spacing 0.75
set xlabel "u [m/s]"
set ylabel "y/h [-]"
set output "$image"
set multiplot layout 1,11 title "Setup: $setup" noenhanced
# Benchmark - Experimental
# benchmark="$benchmarkFile"
# OpenFOAM - Numerical
samples="${sampleFiles[*]}"
list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
do for [i = 1:11] {
if (i != 1) { unset ylabel }
plot \
word(samples, i) u 2:1 t word(list, i) w l lw 2 lc rgb "#4169e1"
# benchmark every 4 u 3:1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
}
unset multiplot
unset output
PLT_U_VS_Y
image="plots/$setup/v_vs_y.png"
gnuplot<<PLT_V_VS_Y
set terminal pngcairo font "helvetica,20" size 5000, 1000
set grid
set yrange [0:1]
set key left top
set key samplen 2
set key spacing 0.75
set xlabel "v [m/s]"
set ylabel "y/h [-]"
set output "$image"
set multiplot layout 1,11 title "Setup: $setup" noenhanced
# Benchmark - Experimental
# benchmark="$benchmarkFile"
# OpenFOAM - Numerical
samples="${sampleFiles[*]}"
list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
do for [i = 1:11] {
if (i != 1) { unset ylabel }
plot \
word(samples, i) u 3:1 t word(list, i) w l lw 2 lc rgb "#4169e1"
# benchmark every 4 u 5:1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
}
unset multiplot
unset output
PLT_V_VS_Y
image="plots/$setup/w_vs_y.png"
gnuplot<<PLT_W_VS_Y
set terminal pngcairo font "helvetica,20" size 5000, 1000
set grid
set yrange [0:1]
set key left top
set key samplen 2
set key spacing 0.75
set xlabel "w [m/s]"
set ylabel "y/h [-]"
set output "$image"
set multiplot layout 1,11 title "Setup: $setup" noenhanced
# Benchmark - Experimental
# benchmark="$benchmarkFile"
# OpenFOAM - Numerical
samples="${sampleFiles[*]}"
list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
do for [i = 1:11] {
if (i != 1) { unset ylabel }
plot \
word(samples, i) u 4:1 t word(list, i) w l lw 2 lc rgb "#4169e1"
# benchmark every 4 u 5:1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
}
unset multiplot
unset output
PLT_W_VS_Y
}
plot_x_vs_cf() {
setup="$1"
endTime="$2"
#benchmarkFile=N/A
sampleFile="results/$setup/postProcessing/sampleCf/$endTime/planeAA_CfMean.xy"
image="plots/$setup/x_vs_cf.png"
gnuplot<<PLT_X_VS_CF
set terminal pngcairo font "helvetica,20" size 1000, 1000
set grid
set xrange [0:60]
set yrange [0:0.01]
set key right top
set key samplen 2
set key spacing 0.75
set xlabel "x/h [-]"
set ylabel "C_f"
set output "$image"
# OpenFOAM - Numerical
samples="$sampleFile"
plot samples u 1:4 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
PLT_X_VS_CF
}
plot_yPlus_vs_u() {
setup="$1"
endTime="$2"
nu="$3"
# benchmarkFile="ReTau-395/dataset/chan395.means"
sampleFile_patch="results/$setup/postProcessing/sample/$endTime/inletPatch_columnAverage:columnAverage(UMean).xy"
sampleFile_cell="results/$setup/postProcessing/sample/$endTime/inletCell_columnAverage:columnAverage(UMean).xy"
image_patch="plots/$setup/yPlus_vs_u_patch.png"
image_cell="plots/$setup/yPlus_vs_u_cell.png"
gnuplot<<PLT_Y_VS_U
set terminal pngcairo font "helvetica,20" size 1000, 1000
set grid
set xrange [0:395]
set yrange [0:20]
set logscale x
set key left top reverse
set key samplen 2
set key spacing 0.75
set xlabel "y^+"
set ylabel "u [m/s]"
set output "$image_patch"
set title "Setup: $setup (inlet patch face)" noenhanced
# Benchmark - Experimental
# benchmark="$benchmarkFile"
# OpenFOAM - Numerical
samples_patch="$sampleFile_patch"
samples_cell="$sampleFile_cell"
plot \
samples_patch u (\$1/$nu):2 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
# benchmark u 2:3 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
set output "$image_cell"
set title "Setup: $setup (inlet patch cell)" noenhanced
plot \
samples_cell u (\$1/$nu):2 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
# benchmark u 2:3 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
PLT_Y_VS_U
}
plot_yPlus_vs_R_patch() {
setup="$1"
endTime="$2"
nu="$3"
# benchmarkFile="ReTau-395/dataset/chan395.reystress"
sampleFile="results/$setup/postProcessing/sample/$endTime/inletPatch_columnAverage:columnAverage(UPrime2Mean).xy"
imageUU="plots/$setup/yPlus_vs_Ruu_patch.png"
imageVV="plots/$setup/yPlus_vs_Rvv_patch.png"
imageWW="plots/$setup/yPlus_vs_Rww_patch.png"
imageUV="plots/$setup/yPlus_vs_Ruv_patch.png"
gnuplot<<PLT_Y_VS_R_PATCH
set terminal pngcairo font "helvetica,20" size 1000, 1000
set grid
set xrange [0:395]
set yrange [-1:8]
set logscale x
set key top right
set key samplen 2
set key spacing 0.75
set xlabel "y^+"
set ylabel "(uu)^+"
set output "$imageUU"
set title "Setup: $setup (inlet patch face)" noenhanced
# Benchmark - DNS
# benchmark = "$benchmarkFile"
# Samples - OpenFOAM
samples="$sampleFile"
plot \
samples u (\$1/$nu):2 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
# benchmark u 2:3 t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
set output "$imageVV"
set ylabel "(vv)^+"
plot \
samples u (\$1/$nu):5 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
# benchmark u 2:4 t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
set output "$imageWW"
set ylabel "(ww)^+"
plot \
samples u (\$1/$nu):7 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
# benchmark u 2:5 t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
set output "$imageUV"
set ylabel "(uv)^+"
plot \
samples u (\$1/$nu):(-\$3) t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
# benchmark u 2:(\$6*-1) t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
PLT_Y_VS_R_PATCH
}
plot_yPlus_vs_R_cell() {
setup="$1"
endTime="$2"
nu="$3"
endTime=$(foamDictionary results/$setup/settings/controlDict -entry endTime -value)
# benchmarkFile="ReTau-395/dataset/chan395.reystress"
sampleFile="results/$setup/postProcessing/sample/$endTime/inletCell_columnAverage:columnAverage(UPrime2Mean).xy"
imageUU="plots/$setup/yPlus_vs_Ruu_cell.png"
imageVV="plots/$setup/yPlus_vs_Rvv_cell.png"
imageWW="plots/$setup/yPlus_vs_Rww_cell.png"
imageUV="plots/$setup/yPlus_vs_Ruv_cell.png"
gnuplot<<PLT_Y_VS_R_CELL
set terminal pngcairo font "helvetica,20" size 1000, 1000
set grid
set xrange [0:395]
set yrange [-1:8]
set logscale x
set key top right
set key samplen 2
set key spacing 0.75
set xlabel "y^+"
set ylabel "(uu)^+"
set output "$imageUU"
set title "Setup: $setup (inlet patch cell)" noenhanced
# Benchmark - DNS
# benchmark = "$benchmarkFile"
# Samples - OpenFOAM
samples="$sampleFile"
plot \
samples u (\$1/$nu):2 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
# benchmark u 2:3 t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
set output "$imageVV"
set ylabel "(vv)^+"
plot \
samples u (\$1/$nu):5 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
# benchmark u 2:4 t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
set output "$imageWW"
set ylabel "(ww)^+"
plot \
samples u (\$1/$nu):7 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
# benchmark u 2:5 t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
set output "$imageUV"
set ylabel "(uv)^+"
plot \
samples u (\$1/$nu):(-\$3) t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
# benchmark u 2:(\$6*-1) t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
PLT_Y_VS_R_CELL
}
plot_R_patch() {
setup="$1"
endTime="$2"
# benchmarkFile="ReTau-395/dataset/chan395.reystress"
sampleFile="results/$setup/postProcessing/sample/$endTime/inletPatch_columnAverage:columnAverage(UPrime2Mean).xy"
image="plots/$setup/R_patch.png"
gnuplot<<PLT_R_PATCH
set terminal pngcairo font "helvetica,20" size 1000, 1000
set grid
set key top right
set xrange [0:1]
set yrange [-1:8]
set key samplen 2
set key spacing 0.75
set xlabel "Channel height [m]"
set ylabel "<u_i^' u_i^'> [m^2/s^2]"
set offset .05, .05
set output "$image"
set title "Reynolds stresses on patch"
# Benchmark - DNS
# benchmark = "$benchmarkFile"
# Samples - OpenFOAM
samples="$sampleFile"
plot \
samples u 1:2 t "<u^' u^'>" w l lw 2 lc rgb "#009E73", \
samples u 1:5 t "<v^' v^'>" w l lw 2 lc rgb "#F0E440", \
samples u 1:7 t "<w^' w^'>" w l lw 2 lc rgb "#0072B2", \
samples u 1:3 t "<u^' v^'>" w l lw 2 lc rgb "#D55E00"
#benchmark u 1:3 t "<u^' u^'>_{DNS}" w l lw 2 dt 2 lc rgb "#009E73", \
#benchmark u 1:4 t "<v^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#F0E440", \
#benchmark u 1:5 t "<w^' w^'>_{DNS}" w l lw 2 dt 2 lc rgb "#0072B2", \
#benchmark u 1:6 t "<u^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#D55E00"
PLT_R_PATCH
}
plot_R_cell() {
setup="$1"
endTime="$2"
# benchmarkFile="ReTau-395/dataset/chan395.reystress"
sampleFile="results/$setup/postProcessing/sample/$endTime/inletCell_columnAverage:columnAverage(UPrime2Mean).xy"
image="plots/$setup/R_cell.png"
gnuplot<<PLT_R_CELL
set terminal pngcairo font "helvetica,20" size 1000, 1000
set grid
set key top right
set xrange [0:1]
set yrange [-1:8]
set key samplen 2
set key spacing 0.75
set xlabel "Channel height [m]"
set ylabel "<u_i^' u_i^'> [m^2/s^2]"
set offset .05, .05
set output "$image"
set title "Reynolds stresses on cell"
# Benchmark - DNS
# benchmark = "$benchmarkFile"
# Samples - OpenFOAM
samples="$sampleFile"
plot \
samples u 1:2 t "<u^' u^'>" w l lw 2 lc rgb "#009E73", \
samples u 1:5 t "<v^' v^'>" w l lw 2 lc rgb "#F0E440", \
samples u 1:7 t "<w^' w^'>" w l lw 2 lc rgb "#0072B2", \
samples u 1:3 t "<u^' v^'>" w l lw 2 lc rgb "#D55E00"
#benchmark u 1:3 t "<u^' u^'>_{DNS}" w l lw 2 dt 2 lc rgb "#009E73", \
#benchmark u 1:4 t "<v^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#F0E440", \
#benchmark u 1:5 t "<w^' w^'>_{DNS}" w l lw 2 dt 2 lc rgb "#0072B2", \
#benchmark u 1:6 t "<u^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#D55E00"
PLT_R_CELL
}
#------------------------------------------------------------------------------
# Require gnuplot
command -v gnuplot >/dev/null || {
echo "gnuplot not found - skipping graph creation" 1>&2
exit 1
}
# Check directory: "results"
[ -d "results" ] || {
echo "No results directory found - skipping graph creation" 1>&2
exit 1
}
#------------------------------------------------------------------------------
for setup in $setups
do
echo ""
echo "# Plots for the setup: $setup"
echo ""
dirPlots="plots/$setup"
[ -d "$dirPlots" ] || mkdir -p "$dirPlots"
# few manipulations
endTime=$(foamDictionary results/$setup/settings/controlDict -entry endTime -value)
nu=$(foamDictionary results/$setup/settings/transportProperties -entry nu | sed 's|^.*\s\(.*\);|\1|g')
plot_yPlus_vs_u "$setup" "$endTime" "$nu"
plot_yPlus_vs_R_patch "$setup" "$endTime" "$nu"
plot_yPlus_vs_R_cell "$setup" "$endTime" "$nu"
plot_R_patch "$setup" "$endTime"
plot_R_cell "$setup" "$endTime"
plot_R_vs_y "$setup" "$endTime"
plot_U_vs_y "$setup" "$endTime"
plot_x_vs_cf "$setup" "$endTime"
done
#------------------------------------------------------------------------------

View File

@ -0,0 +1,67 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (17.55 0 0);
boundaryField
{
inlet
{
type turbulentDFSEMInlet;
delta 1;
U
{
type mappedFile;
mapMethod nearest;
}
R
{
type mappedFile;
mapMethod nearest;
}
L
{
type mappedFile;
mapMethod nearest;
}
d 1;
nCellPerEddy 1;
scale 1;
value $internalField;
}
outlet
{
type advective;
value $internalField;
}
"(bottom|top)"
{
type noSlip;
}
"(left|right)"
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -0,0 +1 @@
../../common/0.orig/nut

View File

@ -0,0 +1 @@
../../common/0.orig/p

View File

@ -0,0 +1,259 @@
(
1.6760001447599677e-43
1.0868009617044407e-08
6.96632299316915e-07
7.964006730807538e-06
4.4886053894517664e-05
0.00017142819717599743
0.0005109590309958684
0.001282137130408118
0.0028356245991423275
0.0056945923004052415
0.010583536322306776
0.018389090000706376
0.029956201643692996
0.04567240383684011
0.06499017109073807
0.0863645775310708
0.10780875116479441
0.12771755696515344
0.1453567712304755
0.16062365567853595
0.17380736699507915
0.18524165214197616
0.19522234333586158
0.20396794244081784
0.21161151098126862
0.2182925640222298
0.22425210908087323
0.22980954591037686
0.2352612116306475
0.24076016447211382
0.24635042180862582
0.25215417623227027
0.2581319159366946
0.2642162232341277
0.2705976827635888
0.2775262136577681
0.2851339428170316
0.29320770439789223
0.30169588718043017
0.3104960794811366
0.3194954534280035
0.3286450052926366
0.3378100136077759
0.3471174687143672
0.3562151631412292
0.36527552859716594
0.37494504798108247
0.38502865612338205
0.3952322027438534
0.40553467840927804
0.41578800746270134
0.4264058548357003
0.43712919288926017
0.44842576293128633
0.46008767937618383
0.4714866924807228
0.4827246039731494
0.49330673743341724
0.5036846762826384
0.5140216569857357
0.5243625990429793
0.5348735169176119
0.5446788615067326
0.5535535437038963
0.5615373928208507
0.5689987179058951
0.5773301273285831
0.5862857780666765
0.5953526108855274
0.6049390063729172
0.6143870357093343
0.6221292179475515
0.6288137731042791
0.6356831550607555
0.6428919658813926
0.6494740048271094
0.6558426649799869
0.6615093242166988
0.6667263216815766
0.6713265835399524
0.6760870855398617
0.6817697212117945
0.6868490918716819
0.6901331296539219
0.6934577171362739
0.6979552723619237
0.7038154195965829
0.7108862054012115
0.7172470897092121
0.7224010326710795
0.727453975349662
0.731494652619959
0.7349775398199252
0.7370734048228417
0.737434256293814
0.7365824697737319
0.7350609217033188
0.7329836659249739
0.730256405839164
0.7283242805479961
0.726231012899943
0.7235685746646292
0.7213160623172862
0.7194814238726635
0.7166228475003421
0.7120932098489855
0.7068169772751501
0.702036389755952
0.697518544808241
0.6937121394109932
0.6904454421400188
0.6866438800820893
0.6818576320301258
0.6766627824128105
0.6727179770747246
0.6689431320803964
0.6631717982054145
0.6561721428602678
0.6481600843658191
0.6405213608738373
0.6341476825999275
0.6280008937349648
0.6214551987295783
0.6145563256095296
0.6071697457595765
0.6005761440226519
0.5951460432382282
0.5923426315298634
0.5915671133699071
0.5923426315298634
0.5951460432382282
0.6005761440226519
0.6071697457595765
0.6145563256095296
0.6214551987295783
0.6280008937349648
0.6341476825999275
0.6405213608738373
0.6481600843658191
0.6561721428602678
0.6631717982054145
0.6689431320803964
0.6727179770747246
0.6766627824128105
0.6818576320301258
0.6866438800820893
0.6904454421400188
0.6937121394109932
0.697518544808241
0.702036389755952
0.7068169772751501
0.7120932098489855
0.7166228475003421
0.7194814238726635
0.7213160623172862
0.7235685746646292
0.726231012899943
0.7283242805479961
0.730256405839164
0.7329836659249739
0.7350609217033188
0.7365824697737319
0.737434256293814
0.7370734048228417
0.7349775398199252
0.731494652619959
0.727453975349662
0.7224010326710795
0.7172470897092121
0.7108862054012115
0.7038154195965829
0.6979552723619237
0.6934577171362739
0.6901331296539219
0.6868490918716819
0.6817697212117945
0.6760870855398617
0.6713265835399524
0.6667263216815766
0.6615093242166988
0.6558426649799869
0.6494740048271094
0.6428919658813926
0.6356831550607555
0.6288137731042791
0.6221292179475515
0.6143870357093343
0.6049390063729172
0.5953526108855274
0.5862857780666765
0.5773301273285831
0.5689987179058951
0.5615373928208507
0.5535535437038963
0.5446788615067326
0.5348735169176119
0.5243625990429793
0.5140216569857357
0.5036846762826384
0.49330673743341724
0.4827246039731494
0.4714866924807228
0.46008767937618383
0.44842576293128633
0.43712919288926017
0.4264058548357003
0.41578800746270134
0.40553467840927804
0.3952322027438534
0.38502865612338205
0.37494504798108247
0.36527552859716594
0.3562151631412292
0.3471174687143672
0.3378100136077759
0.3286450052926366
0.3194954534280035
0.3104960794811366
0.30169588718043017
0.29320770439789223
0.2851339428170316
0.2775262136577681
0.2705976827635888
0.2642162232341277
0.2581319159366946
0.25215417623227027
0.24635042180862582
0.24076016447211382
0.2352612116306475
0.22980954591037686
0.22425210908087323
0.2182925640222298
0.21161151098126862
0.20396794244081784
0.19522234333586158
0.18524165214197616
0.17380736699507915
0.16062365567853595
0.1453567712304755
0.12771755696515344
0.10780875116479441
0.0863645775310708
0.06499017109073807
0.04567240383684011
0.029956201643692996
0.018389090000706376
0.010583536322306776
0.0056945923004052415
0.0028356245991423275
0.001282137130408118
0.0005109590309958684
0.00017142819717599743
4.4886053894517664e-05
7.964006730807538e-06
6.96632299316915e-07
1.0868009617044407e-08
1.6760001447599677e-43
)

View File

@ -0,0 +1 @@
../../common/constant/transportProperties

View File

@ -0,0 +1 @@
../../common/constant/turbulenceProperties

View File

@ -0,0 +1 @@
../common/system/

View File

@ -20,21 +20,21 @@ internalField uniform 0;
boundaryField
{
"bottomWall|topWall"
"(inlet|outlet)"
{
type calculated;
value uniform 1e-08;
}
"(bottom|top)"
{
type zeroGradient;
}
"left|right"
"(left|right)"
{
type cyclic;
}
"inlet|outlet"
{
type calculated;
value uniform 1e-08;
}
}

View File

@ -20,14 +20,14 @@ internalField uniform 0;
boundaryField
{
"bottomWall|topWall|inlet"
inlet
{
type zeroGradient;
}
"left|right"
"(bottom|top)"
{
type cyclic;
type zeroGradient;
}
outlet
@ -35,6 +35,11 @@ boundaryField
type fixedValue;
value $internalField;
}
"(left|right)"
{
type cyclic;
}
}

View File

@ -10,19 +10,13 @@ FoamFile
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
transportModel Newtonian;
// ReTau = uTau delta / nuFluid
// ReTau = 395 [-]
// delta = half channel height = 1 [m]
// -> nuFluid = 1*1/395 = 2.532e-3 [m2/s]
nu 2.532e-3;
nu 2.5494595145829e-3;
// ************************************************************************* //

View File

@ -10,12 +10,11 @@ FoamFile
version 2.0;
format ascii;
class dictionary;
location "constant";
object turbulenceProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType LES;
simulationType LES;
LES
{
@ -23,7 +22,7 @@ LES
SmagorinskyCoeffs
{
Ce 1.048;
Ck 0.02654; // Updated to give Cs = 0.065
Ck 0.0265463553; // Updated to give Cs = 0.065
}
delta vanDriest;
@ -32,7 +31,7 @@ LES
delta cubeRootVol;
cubeRootVolCoeffs
{
deltaCoeff 2;
deltaCoeff 1;
}
Aplus 26;
Cdelta 0.158;

View File

@ -1,8 +1,8 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\ / O peration | Version: v1806 |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
@ -14,14 +14,13 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
mergeType topology; // Point merging is very slow
scale 1;
L #eval{ 20*pi() };
H 1.0;
H2 #eval{ 2*$H };
W #eval{ pi() };
// L:length, H:height, W:width
L 60.0;
H 1.0;
H2 #eval{ 2*$H };
W #eval{ pi() };
vertices
(
@ -42,40 +41,34 @@ vertices
blocks
(
hex ( 0 1 2 5 6 7 8 11) (500 23 82) simpleGrading (1 25 1)
hex ( 5 2 3 4 11 8 9 10) (500 23 82) simpleGrading (1 -25 1)
);
edges
(
hex ( 0 1 2 5 6 7 8 11) (600 32 70) simpleGrading (1 10.7028 1)
hex ( 5 2 3 4 11 8 9 10) (600 32 70) simpleGrading (1 -10.7028 1)
);
boundary
(
bottomWall
bottom
{
type wall;
faces ((0 6 7 1));
}
topWall
top
{
type wall;
faces ((4 3 9 10));
}
sides_half0
left
{
type cyclic;
neighbourPatch sides_half1;
neighbourPatch right;
faces ((1 2 5 0)(2 3 4 5));
}
sides_half1
right
{
type cyclic;
neighbourPatch sides_half0;
neighbourPatch left;
faces ((6 11 8 7)(11 10 9 8));
}
inlet
{
type patch;
@ -88,8 +81,5 @@ boundary
}
);
mergePatchPairs
(
);
// ************************************************************************* //

View File

@ -0,0 +1,13 @@
// -*- C++ -*-
type columnAverage;
libs (fieldFunctionObjects);
patches ( left );
fields ( UPrime2Mean UMean );
executeControl onEnd;
writeControl onEnd;
// ************************************************************************* //

View File

@ -0,0 +1,164 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application pisoFoam;
startFrom latestTime;
startTime 0;
stopAt endTime;
endTime 10; // 180;
deltaT 2e-3;
writeControl timeStep;
writeInterval 1000;
purgeWrite 3;
writeFormat binary;
writePrecision 8;
writeCompression off;
timeFormat general;
timePrecision 8;
runTimeModifiable false;
adjustTimeStep false;
// Allow one-third of time for initialisation before sampling
timeStart #eval #{ 1.0/3.0 * ${/endTime} #};
functions
{
wallShearStress
{
type wallShearStress;
libs (fieldFunctionObjects);
patches ( bottom top );
writePrecision 10;
writeToFile yes;
log yes;
executeControl timeStep;
executeInterval 1;
writeControl writeTime;
timeStart $/timeStart;
}
Cf
{
type coded;
libs (utilityFunctionObjects);
name Cf;
writeControl writeTime;
codeExecute
#{
static autoPtr<volScalarField> Cf;
if
(
mesh().time().timeIndex() == 1
||
mesh().time().startTimeIndex() == mesh().time().timeIndex() - 1
)
{
Info<< "Create skin-friction coefficient field" << nl;
Cf.set
(
new volScalarField
(
IOobject
(
"Cf",
mesh().time().timeName(),
mesh(),
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
mesh(),
dimless
)
);
}
if
(
mesh().time().timeIndex() != 1
&& mesh().time().timeIndex() > 3 // 60 // = timeStart
)
{
Info<< "Computing skin-friction coefficient field" << endl;
const auto& tau =
mesh().lookupObject<volVectorField>("wallShearStress");
auto& Cf = mesh().lookupObjectRef<volScalarField>("Cf");
const dimensionedScalar Ubulk(dimVelocity, 17.55);
Cf = mag(tau.component(0))/(0.5*sqr(Ubulk));
}
#};
}
fieldAverage1
{
type fieldAverage;
libs (fieldFunctionObjects);
timeStart $/timeStart;
writeControl writeTime;
fields
(
U
{
mean on;
prime2Mean on;
base time;
}
p
{
mean on;
prime2Mean on;
base time;
}
wallShearStress
{
mean on;
prime2Mean off;
base time;
}
Cf
{
mean on;
prime2Mean off;
base time;
}
);
}
}
// ************************************************************************* //

View File

@ -14,14 +14,9 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 8;
numberOfSubdomains 36;
method hierarchical;
coeffs
{
n (4 2 1);
}
method scotch;
// ************************************************************************* //

View File

@ -10,7 +10,6 @@ FoamFile
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -22,23 +21,21 @@ ddtSchemes
gradSchemes
{
default leastSquares;
default Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss linear;
div(phi,k) Gauss limitedLinear 0.1;
div(phi,B) Gauss limitedLinear 0.1;
div(B) Gauss linear;
div(phi,nuTilda) Gauss limitedLinear 0.1;
div((nuEff*dev2(T(grad(U))))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
default Gauss linear orthogonal;
}
interpolationSchemes
@ -48,7 +45,7 @@ interpolationSchemes
snGradSchemes
{
default corrected;
default orthogonal;
}

View File

@ -10,7 +10,6 @@ FoamFile
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -20,13 +19,13 @@ solvers
p
{
solver GAMG;
tolerance 0;
relTol 0.01;
smoother DICGaussSeidel;
tolerance 1e-06;
relTol 0.001;
nPreSweeps 0;
nPostSweeps 2;
cacheAgglomeration true;
nCellsInCoarsestLevel 10;
nCellsInCoarsestLevel 1000;
agglomerator faceAreaPair;
mergeLevels 1;
}
@ -34,32 +33,32 @@ solvers
pFinal
{
$p;
smoother DICGaussSeidel;
tolerance 1e-06;
relTol 0;
}
"(U|k)"
U
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-05;
tolerance 1e-08;
relTol 0.1;
}
"(U|k)Final"
UFinal
{
$U;
tolerance 1e-06;
tolerance 1e-08;
relTol 0;
}
}
PIMPLE
PISO
{
nOuterCorrectors 2;
nCorrectors 1;
nCorrectors 3;
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;
}

View File

@ -0,0 +1,214 @@
// -*- C++ -*-
type sets;
libs (sampling);
interpolationScheme cellPatchConstrained;
setFormat raw;
fields
(
columnAverage:columnAverage(UMean)
columnAverage:columnAverage(UPrime2Mean)
);
sets
(
inletPatch
{
type face;
axis y;
start (0.0 0 1.57);
end (0.0 2 1.57);
}
inletCell
{
type midPoint;
axis y;
start (0.062832 0 1.57);
end (0.062832 2 1.57);
}
l1 // 1, 5, 10, ... delta
{
type uniform;
axis distance;
start (0.1 0.0 1.57);
end (0.1 2.0 1.57);
nPoints 200;
}
l5
{
type uniform;
axis distance;
start (5.0 0.0 1.57);
end (5.0 2.0 1.57);
nPoints 200;
}
l10
{
type uniform;
axis distance;
start (10.0 0.0 1.57);
end (10.0 2.0 1.57);
nPoints 200;
}
l15
{
type uniform;
axis distance;
start (15.0 0.0 1.57);
end (15.0 2.0 1.57);
nPoints 200;
}
l20
{
type uniform;
axis distance;
start (20.0 0.0 1.57);
end (20.0 2.0 1.57);
nPoints 200;
}
l25
{
type uniform;
axis distance;
start (25.0 0.0 1.57);
end (25.0 2.0 1.57);
nPoints 200;
}
l30
{
type uniform;
axis distance;
start (30.0 0.0 1.57);
end (30.0 2.0 1.57);
nPoints 200;
}
l35
{
type uniform;
axis distance;
start (35.0 0.0 1.57);
end (35.0 2.0 1.57);
nPoints 200;
}
l40
{
type uniform;
axis distance;
start (40.0 0.0 1.57);
end (40.0 2.0 1.57);
nPoints 200;
}
l45
{
type uniform;
axis distance;
start (45.0 0.0 1.57);
end (45.0 2.0 1.57);
nPoints 200;
}
l50
{
type uniform;
axis distance;
start (50.0 0.0 1.57);
end (50.0 2.0 1.57);
nPoints 200;
}
l55
{
type uniform;
axis distance;
start (55.0 0.0 1.57);
end (55.0 2.0 1.57);
nPoints 200;
}
Poletto0 // Poletto et al.
{
type uniform;
axis distance;
start (0.1 0.0 1.57);
end (0.1 2.0 1.57);
nPoints 200;
}
Poletto36
{
type uniform;
axis distance;
start (3.6 0.0 1.57);
end (3.6 2.0 1.57);
nPoints 200;
}
Poletto75
{
type uniform;
axis distance;
start (7.5 0.0 1.57);
end (7.5 2.0 1.57);
nPoints 200;
}
Poletto113
{
type uniform;
axis distance;
start (11.3 0.0 1.57);
end (11.3 2.0 1.57);
nPoints 200;
}
Poletto151
{
type uniform;
axis distance;
start (15.1 0.0 1.57);
end (15.1 2.0 1.57);
nPoints 200;
}
Poletto226
{
type uniform;
axis distance;
start (22.6 0.0 1.57);
end (22.6 2.0 1.57);
nPoints 200;
}
Poletto302
{
type uniform;
axis distance;
start (30.2 0.0 1.57);
end (30.2 2.0 1.57);
nPoints 200;
}
Poletto377
{
type uniform;
axis distance;
start (37.7 0.0 1.57);
end (37.7 2.0 1.57);
nPoints 200;
}
);
// ************************************************************************* //

View File

@ -0,0 +1,34 @@
// -*- C++ -*-
type sets;
libs (sampling);
interpolationScheme cellPatchConstrained;
setFormat raw;
fields ( CfMean );
_planes
{
type patchEdge;
axis xyz;
patches ( bottom );
surfaceType searchablePlane;
planeType pointAndNormal;
origin ( 0 0 1.57079632679 );
}
sets
(
// Intersections of patches with plane
planeAA
{
${_planes}
pointAndNormalDict
{
point ( 0 0 1.57079632679 );
normal ( 0 0 1 );
}
}
);
// ************************************************************************* //

View File

@ -29,7 +29,21 @@ boundaryField
type turbulentDFSEMInlet;
delta 1;
nCellPerEddy 3;
mapMethod nearestCell;
U
{
type mappedFile;
mapMethod nearest;
}
R
{
type mappedFile;
mapMethod nearest;
}
L
{
type mappedFile;
mapMethod nearest;
}
value $internalField;
}

View File

@ -1,30 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
inlet
{
type turbulentDigitalFilterInlet;
n ( 64 70 );
L
(
0.78035508 0.31085352 0.342261 0.1728125 0.171875
0.22459375 0.172787596 0.171889998 0.224578995
);
Ubulk 20.133;
}
// ************************************************************************* //

View File

@ -1,31 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
inlet
{
type turbulentDigitalFilterInlet;
fsm true;
n ( 64 70 );
L
(
0.78035508 0.31085352 0.342261 0.1728125 0.171875
0.22459375 0.172787596 0.171889998 0.224578995
);
Ubulk 20.133;
}
// ************************************************************************* //

View File

@ -1,84 +0,0 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions
#------------------------------------------------------------------------------
# Collect data into the 'results' directory,
# and clean the case for the next run
#
# $1 = model
# ----
collectData(){
model=$1
runType=$2
echo " Moving results into 'results/$model.$runType'"
results="results/$model.$runType"
mkdir -p "$results"
timeDir=$(foamListTimes -latestTime)
mv -f log* *.png postProcessing "$timeDir" "$results" 2>/dev/null
cleanTimeDirectories
rm -rf processor* > /dev/null 2>&1
}
# Compute the case in 'serial' mode,
# and collect the data
#
# $* = models
# ----
serialRun(){
models=$*
for model in $models
do
echo " Running with the synthetic turbulence model: $model"
(cd 0 && ln -snf "inlet.$model" inlet)
(cd constant/boundaryData && ln -snf "inlet.$model" inlet)
runApplication -s "$model" $(getApplication)
./plot
collectData $model "serial"
done
}
# Compute the case in 'parallel' mode,
# and collect the data
#
# $* = models
# ----
parallelRun(){
models=$*
for model in $models
do
echo " Running with the synthetic turbulence model: $model"
(cd 0 && ln -snf "inlet.$model" inlet)
(cd constant/boundaryData && ln -snf "inlet.$model" inlet)
runApplication -s "$model" decomposePar -force
runParallel -s "$model" $(getApplication)
runApplication -s "$model" reconstructPar -latestTime
./plot
collectData $model "parallel"
done
}
#------------------------------------------------------------------------------
# Prepare the numerical setup
./Allrun.pre
# Run with the synthetic turbulence models
models="
FSM
DFM
DFSEM
"
parallelRun $models
serialRun $models
#------------------------------------------------------------------------------

View File

@ -1,32 +0,0 @@
#------------------------------------------------------------------------------
The following three synthetic turbulence inflow boundary conditions are
examined through a single-cell-domain smooth-wall plane channel flow setup:
- turbulentDFSEMInlet (DFSEM)
- turbulentDigitalFilterInlet (DFM)
- turbulentDigitalFilterInlet with the forward-stepwise method (FSM)
The input statistics are obtained from:
Moser, R. D., Kim, J., & Mansour, N. N. (1999).
Direct numerical simulation of turbulent channel flow up to Reτ=590.
Physics of fluids, 11(4), 943-945.
DOI:10.1063/1.869966
from which the input first-/second-order turbulence statistics data for the
smooth-wall plane channel flow at ReTau=395 were used.
The data is available online from (Retrieved: 21-06-2019):
https://turbulence.oden.utexas.edu/data/MKM/chan395/
Executing:
./Allrun
The script will run the test case, and collect the plots and samples into
the 'results' directory.
#------------------------------------------------------------------------------

View File

@ -1,259 +0,0 @@
(
0
1.76693e-06
1.06447e-07
2.85582e-08
1.73393e-08
3.56243e-08
3.79499e-08
1.50479e-07
1.55614e-07
1.93408e-07
4.50118e-08
2.6295e-10
6.18128e-08
4.4709e-08
5.98657e-07
2.25711e-06
4.20946e-06
6.292e-06
7.5414e-06
9.02814e-06
1.04737e-05
1.25187e-05
1.37559e-05
1.40338e-05
1.24681e-05
1.08272e-05
9.10144e-06
7.81661e-06
6.08627e-06
4.68729e-06
3.01241e-06
1.93855e-06
1.03945e-06
2.49601e-07
2.33919e-07
3.47823e-08
3.05604e-06
8.25413e-06
1.04748e-05
1.36651e-05
2.35252e-05
3.87371e-05
5.21582e-05
6.71737e-05
6.89399e-05
4.57512e-05
1.94891e-05
9.7778e-06
1.47858e-05
3.40409e-05
6.06823e-05
8.59513e-05
8.29571e-05
5.42278e-05
3.46015e-05
2.20432e-05
1.73878e-05
1.05749e-05
4.67814e-06
8.66793e-06
1.79361e-05
1.22464e-05
3.93103e-06
1.00778e-06
1.81983e-06
2.70815e-05
9.56468e-05
0.000139304
0.00012493
9.50459e-05
4.78307e-05
8.71962e-06
1.24275e-05
4.91383e-05
8.77264e-05
0.000114449
0.00014567
0.000201758
0.000251863
0.000272594
0.000213599
0.000145126
0.000115603
0.000122779
0.000116865
8.36843e-05
4.06009e-05
3.49149e-05
5.22978e-05
5.07525e-05
2.5995e-05
2.6683e-06
9.29144e-06
1.14821e-05
9.41939e-06
1.01946e-05
6.64024e-06
1.1913e-06
3.25066e-06
8.47834e-06
1.42023e-06
4.30742e-05
0.000106228
0.000115468
9.07632e-05
7.04511e-05
9.21776e-05
0.000104486
0.000111678
0.000109852
0.000111867
9.10747e-05
6.82206e-05
4.09085e-05
2.3961e-05
2.0467e-06
7.74345e-06
1.66716e-05
1.54967e-05
2.95089e-05
4.82299e-05
6.99781e-05
7.16947e-05
7.33475e-05
7.40551e-05
9.45846e-05
0.000107202
0.000120068
0.000122517
0.000120068
0.000107202
9.45846e-05
7.40551e-05
7.33475e-05
7.16947e-05
6.99781e-05
4.82299e-05
2.95089e-05
1.54967e-05
1.66716e-05
7.74345e-06
2.0467e-06
2.3961e-05
4.09085e-05
6.82206e-05
9.10747e-05
0.000111867
0.000109852
0.000111678
0.000104486
9.21776e-05
7.04511e-05
9.07632e-05
0.000115468
0.000106228
4.30742e-05
1.42023e-06
8.47834e-06
3.25066e-06
1.1913e-06
6.64024e-06
1.01946e-05
9.41939e-06
1.14821e-05
9.29144e-06
2.6683e-06
2.5995e-05
5.07525e-05
5.22978e-05
3.49149e-05
4.06009e-05
8.36843e-05
0.000116865
0.000122779
0.000115603
0.000145126
0.000213599
0.000272594
0.000251863
0.000201758
0.00014567
0.000114449
8.77264e-05
4.91383e-05
1.24275e-05
8.71962e-06
4.78307e-05
9.50459e-05
0.00012493
0.000139304
9.56468e-05
2.70815e-05
1.81983e-06
1.00778e-06
3.93103e-06
1.22464e-05
1.79361e-05
8.66793e-06
4.67814e-06
1.05749e-05
1.73878e-05
2.20432e-05
3.46015e-05
5.42278e-05
8.29571e-05
8.59513e-05
6.06823e-05
3.40409e-05
1.47858e-05
9.7778e-06
1.94891e-05
4.57512e-05
6.89399e-05
6.71737e-05
5.21582e-05
3.87371e-05
2.35252e-05
1.36651e-05
1.04748e-05
8.25413e-06
3.05604e-06
3.47823e-08
2.33919e-07
2.49601e-07
1.03945e-06
1.93855e-06
3.01241e-06
4.68729e-06
6.08627e-06
7.81661e-06
9.10144e-06
1.08272e-05
1.24681e-05
1.40338e-05
1.37559e-05
1.25187e-05
1.04737e-05
9.02814e-06
7.5414e-06
6.292e-06
4.20946e-06
2.25711e-06
5.98657e-07
4.4709e-08
6.18128e-08
2.6295e-10
4.50118e-08
1.93408e-07
1.55614e-07
1.50479e-07
3.79499e-08
3.56243e-08
1.73393e-08
2.85582e-08
1.06447e-07
1.76693e-06
0
)

View File

@ -1,135 +0,0 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
#------------------------------------------------------------------------------
plotCellR() {
timeDir=$1
echo " Plotting the normal and Reynolds stresses on cell."
outName="stress-cell.png"
gnuplot<<PLT_CELL_R
set terminal pngcairo font "helvetica,20" size 1000, 800
set xrange [0:1]
set yrange [-1:8]
set grid
set key top right
set key samplen 2
set key spacing 0.75
set xlabel "Channel height from the bottomWall [m]"
set ylabel "<u_i^' u_i^'> [m2/s2]"
set offset .05, .05
set output "$outName"
set title "Normal and Reynolds stresses on cell"
input = "$timeDir/inletCell_UPrime2Mean.xy"
bench = "constant/pointsRdata"
plot \
input u 1:2 t "<u^' u^'>" w l lw 2 lc rgb "#009E73", \
input u 1:5 t "<v^' v^'>" w l lw 2 lc rgb "#F0E440", \
input u 1:7 t "<w^' w^'>" w l lw 2 lc rgb "#0072B2", \
input u 1:3 t "<u^' v^'>" w l lw 2 lc rgb "#D55E00", \
bench u 2:4 t "<u^' u^'>_{DNS}" w l lw 2 dt 2 lc rgb "#009E73", \
bench u 2:7 t "<v^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#F0E440", \
bench u 2:9 t "<w^' w^'>_{DNS}" w l lw 2 dt 2 lc rgb "#0072B2", \
bench u 2:5 t "<u^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#D55E00"
PLT_CELL_R
}
plotPatchR() {
timeDir=$1
echo " Plotting the normal and Reynolds stresses on inlet patch faces."
outName="stress-patch.png"
gnuplot<<PLT_PATCH_R
set terminal pngcairo font "helvetica,20" size 1000, 800
set xrange [0:1]
set yrange [-1:8]
set grid
set key top right
set key samplen 2
set key spacing 0.75
set xlabel "Channel height from the bottomWall [m]"
set ylabel "<u_i^' u_i^'> [m2/s2]"
set offset .05, .05
set output "$outName"
set title "Normal and Reynolds stresses on patch"
input = "$timeDir/inletPatch_UPrime2Mean.xy"
bench = "constant/pointsRdata"
plot \
input u 1:2 t "<u^' u^'>" w l lw 2 lc rgb "#009E73", \
input u 1:5 t "<v^' v^'>" w l lw 2 lc rgb "#F0E440", \
input u 1:7 t "<w^' w^'>" w l lw 2 lc rgb "#0072B2", \
input u 1:3 t "<u^' v^'>" w l lw 2 lc rgb "#D55E00", \
bench u 2:4 t "<u^' u^'>_{DNS}" w l lw 2 dt 2 lc rgb "#009E73", \
bench u 2:7 t "<v^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#F0E440", \
bench u 2:9 t "<w^' w^'>_{DNS}" w l lw 2 dt 2 lc rgb "#0072B2", \
bench u 2:5 t "<u^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#D55E00"
PLT_PATCH_R
}
plotPatchUMean() {
timeDir=$1
echo " Plotting the streamwise mean flow speed on inlet patch faces."
outName="u-patch.png"
gnuplot<<PLT_PATCH_UMEAN
set terminal pngcairo font "helvetica,20" size 1000, 800
set xrange [0:1]
set yrange [0:25]
set grid
set key top right
set key samplen 2
set key spacing 0.75
set xlabel "Channel height from the bottomWall [m]"
set ylabel "u [m/s]"
set offset .05, .05
set output "$outName"
input = "$timeDir/inletPatch_UMean.xy"
bench = "constant/pointsUMeanData"
plot \
input u 1:2 t "u" w l lw 2 lc rgb "#009E73", \
bench u 2:4 t "u_{DNS}" w l lw 2 dt 2 lc rgb "#009E73"
PLT_PATCH_UMEAN
}
#------------------------------------------------------------------------------
# Require gnuplot
command -v gnuplot >/dev/null || {
echo "gnuplot not found - skipping graph creation" 1>&2
exit 1
}
# Prepare the benchmark data
cp -f constant/boundaryData/inlet/0/R constant/R
cp -f constant/boundaryData/inlet/points constant/points
cp -f constant/boundaryData/inlet.DFM/0/UMean constant/UMean
cat constant/R | tr -d '()' > constant/Rdata
cat constant/points | tr -d '()' > constant/pointsData
cat constant/UMean | tr -d '()' > constant/UMeanData
paste constant/pointsData constant/Rdata > constant/pointsRdata
paste constant/pointsData constant/UMeanData > constant/pointsUMeanData
# The latestTime in postProcessing/sampling1
timeDir=$(foamListTimes -case postProcessing/sampling1 -latestTime 2>/dev/null)
[ -n "$timeDir" ] || {
echo "No postProcessing/sampling1 found - skipping graph creation" 1>&2
exit 1
}
timeDir="postProcessing/sampling1/$timeDir"
plotCellR "$timeDir"
plotPatchR "$timeDir"
plotPatchUMean "$timeDir"
#------------------------------------------------------------------------------

View File

@ -1,20 +1,14 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions
#------------------------------------------------------------------------------
endTime=10
if notTest "$@"
then
endTime=85
fi
sed "s|END_TIME|$endTime|g" system/controlDict.template > system/controlDict
restore0Dir
runApplication blockMesh
cleanCase0
rm -rf 0.orig
rm -rf system
rm -rf constant
rm -rf results
rm -rf plots
#------------------------------------------------------------------------------

View File

@ -0,0 +1,123 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions
#------------------------------------------------------------------------------
# setups
# operand setups
setups="
DFSEM
DFM
FSM
"
# flag to enable computations in parallel mode
parallel=true
#------------------------------------------------------------------------------
#######################################
# Collect results into a given path
# and clean the case for the next run
# Arguments:
# $1 = Path to move results
# Outputs:
# Writes info to stdout
#######################################
collect() {
[ $# -eq 0 ] && { echo "Usage: $0 dir-model"; exit 1; }
collection="$1"
dirResult=results/"$collection"
dirSettings="$dirResult"/settings
if [ ! -d "$dirResult" ]
then
echo " # Collecting results and settings into $dirResult"
mkdir -p "$dirResult"
mkdir -p "$dirSettings"
mv -f $(foamListTimes) "$dirResult"
[ -d postProcessing ] && mv -f postProcessing "$dirResult"
[ -d processor0 ] && mv -f processor* "$dirResult"
mv -f log.* "$dirResult"
cp -f system/{fv*,controlDict} constant/*Properties "$dirSettings"
mv -f 0/ "$dirSettings"
echo " # Cleaning up the case"
cleanTimeDirectories
cleanPostProcessing
else
echo " # Directory $dirResult already exists"
echo " # Skipping the computation"
fi
}
#------------------------------------------------------------------------------
for setup in $setups
do
echo ""
echo "# Computations for the setup: $setup"
echo ""
dirSetup="setups.orig/$setup"
cp -rfL "$dirSetup/0.orig" .
cp -rfL "$dirSetup/constant" .
cp -rfL "$dirSetup/system" .
cp -rf 0.orig/ 0/
if [ ! -d constant/polyMesh ]
then
runApplication blockMesh
runApplication renumberMesh -overwrite -constant
runApplication checkMesh -allTopology -allGeometry -constant
fi
if [ "$parallel" = true ]
then
runApplication decomposePar
runParallel $(getApplication)
runApplication reconstructPar
else
runApplication $(getApplication)
fi
runApplication -s columnAverage \
postProcess -func columnAverage -latestTime
runApplication -s sampleCellPatchConstrained \
postProcess -func sampleCellPatchConstrained -latestTime
runApplication -s sampleCellPoint \
postProcess -func sampleCellPoint -latestTime
collect "$setup"
done
#------------------------------------------------------------------------------

View File

@ -0,0 +1,176 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
#------------------------------------------------------------------------------
# settings
# operand setups
setups="
DFSEM
DFM
FSM
"
#------------------------------------------------------------------------------
plot_R_patch() {
setup="$1"
endTime=$(foamDictionary results/$setup/settings/controlDict -entry endTime -value)
# benchmarkFile="ReTau-395/dataset/chan395.reystress"
sampleFile="results/$setup/postProcessing/sampleCellPoint/$endTime/inletPatch_columnAverage:columnAverage(UPrime2Mean).xy"
image="plots/$setup/R_patch.png"
gnuplot<<PLT_R_PATCH
set terminal pngcairo font "helvetica,20" size 1000, 1000
set grid
set key top right
set xrange [0:1]
set yrange [-1:8]
set key samplen 2
set key spacing 0.75
set xlabel "Channel height [m]"
set ylabel "<u_i^' u_i^'> [m^2/s^2]"
set offset .05, .05
set output "$image"
set title "Reynolds stresses on patch"
# Benchmark - DNS
# benchmark = "$benchmarkFile"
# Samples - OpenFOAM
samples="$sampleFile"
plot \
samples u 1:2 t "<u^' u^'>" w l lw 2 lc rgb "#009E73", \
samples u 1:5 t "<v^' v^'>" w l lw 2 lc rgb "#F0E440", \
samples u 1:7 t "<w^' w^'>" w l lw 2 lc rgb "#0072B2", \
samples u 1:3 t "<u^' v^'>" w l lw 2 lc rgb "#D55E00"
# benchmark u 1:3 t "<u^' u^'>_{DNS}" w l lw 2 dt 2 lc rgb "#009E73", \
# benchmark u 1:4 t "<v^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#F0E440", \
# benchmark u 1:5 t "<w^' w^'>_{DNS}" w l lw 2 dt 2 lc rgb "#0072B2", \
# benchmark u 1:6 t "<u^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#D55E00"
PLT_R_PATCH
}
plot_R_cell() {
setup="$1"
endTime=$(foamDictionary results/$setup/settings/controlDict -entry endTime -value)
# benchmarkFile="ReTau-395/dataset/chan395.reystress"
sampleFile="results/$setup/postProcessing/sampleCellPoint/$endTime/inletCell_columnAverage:columnAverage(UPrime2Mean).xy"
image="plots/$setup/R_cell.png"
gnuplot<<PLT_R_CELL
set terminal pngcairo font "helvetica,20" size 1000, 1000
set grid
set key top right
set xrange [0:1]
set yrange [-1:8]
set key samplen 2
set key spacing 0.75
set xlabel "Channel height [m]"
set ylabel "<u_i^' u_i^'> [m^2/s^2]"
set offset .05, .05
set output "$image"
set title "Reynolds stresses on cell"
# Benchmark - DNS
# benchmark= "$benchmarkFile"
# Samples - OpenFOAM
samples="$sampleFile"
plot \
samples u 1:2 t "<u^' u^'>" w l lw 2 lc rgb "#009E73", \
samples u 1:5 t "<v^' v^'>" w l lw 2 lc rgb "#F0E440", \
samples u 1:7 t "<w^' w^'>" w l lw 2 lc rgb "#0072B2", \
samples u 1:3 t "<u^' v^'>" w l lw 2 lc rgb "#D55E00"
# benchmark u 1:3 t "<u^' u^'>_{DNS}" w l lw 2 dt 2 lc rgb "#009E73", \
# benchmark u 1:4 t "<v^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#F0E440", \
# benchmark u 1:5 t "<w^' w^'>_{DNS}" w l lw 2 dt 2 lc rgb "#0072B2", \
# benchmark u 1:6 t "<u^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#D55E00"
PLT_R_CELL
}
plot_UMean_patch() {
setup="$1"
endTime=$(foamDictionary results/$setup/settings/controlDict -entry endTime -value)
benchmarkFile="../../resources/incompressible/oneCellThickPlaneChannelFlow/ReTau-395/dataset/chan395.means"
sampleFile="results/$setup/postProcessing/sampleCellPoint/$endTime/inletPatch_columnAverage:columnAverage(UMean).xy"
image="plots/$setup/UMean_patch.png"
gnuplot<<PLT_UMEAN_PATCH
set terminal pngcairo font "helvetica,20" size 1000, 1000
set grid
set key top right
set xrange [0:1]
set yrange [0:25]
set key samplen 2
set key spacing 0.75
set xlabel "Channel height [m]"
set ylabel "u [m/s]"
set offset .05, .05
set output "$image"
set title "Streamwise mean flow speed on patch"
# Benchmark - DNS
# benchmark = "$benchmarkFile"
# Samples - OpenFOAM
samples="$sampleFile"
plot \
samples u 1:2 t "u" w l lw 2 lc rgb "#009E73"
# benchmark u 1:3 t "u_{DNS}" w l lw 2 dt 2 lc rgb "#009E73"
PLT_UMEAN_PATCH
}
#------------------------------------------------------------------------------
# Require gnuplot
command -v gnuplot >/dev/null || {
echo "gnuplot not found - skipping graph creation" 1>&2
exit 1
}
# Check directory: "results"
[ -d "results" ] || {
echo "No results directory found - skipping graph creation" 1>&2
exit 1
}
#------------------------------------------------------------------------------
for setup in $setups
do
echo ""
echo "# Plots for the setup: $setup"
echo ""
dirPlots="plots/$setup"
[ -d "$dirPlots" ] || mkdir -p "$dirPlots"
plot_R_patch "$setup"
plot_R_cell "$setup"
plot_UMean_patch "$setup"
done
#------------------------------------------------------------------------------

View File

@ -20,29 +20,34 @@ internalField uniform (0 0 0);
boundaryField
{
"bottomWall|topWall"
{
type fixedValue;
value $internalField;
}
"left|right"
{
type cyclic;
}
inlet
{
type turbulentDigitalFilterInlet;
n ( 64 70 );
L
(
0.78035508 0.31085352 0.342261 0.1728125 0.171875
0.22459375 0.172787596 0.171889998 0.224578995
);
Ubulk 17.55;
value $internalField;
}
#include "inlet/U"
outlet
{
type inletOutlet;
inletValue $internalField;
type advective;
value $internalField;
}
"(bottom|top)"
{
type noSlip;
}
"(left|right)"
{
type cyclic;
}
}

View File

@ -0,0 +1 @@
../../common/constant/transportProperties

View File

@ -0,0 +1 @@
../../common/constant/turbulenceProperties

View File

@ -10,49 +10,56 @@ FoamFile
version 2.0;
format ascii;
class volVectorField;
location "1";
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [ 0 1 -1 0 0 0 0 ];
dimensions [0 1 -1 0 0 0 0];
// Ub/utau = 17.55
internalField uniform ( 17.55 0 0 );
internalField uniform (0 0 0);
boundaryField
{
bottomWall
{
type fixedValue;
value uniform ( 0 0 0 );
}
topWall
{
type fixedValue;
value uniform ( 0 0 0 );
}
sides_half0
{
type cyclic;
}
sides_half1
{
type cyclic;
}
inlet
{
type turbulentDFSEMInlet;
delta 2;
delta 1;
U
{
type mappedFile;
mapMethod nearest;
}
R
{
type mappedFile;
mapMethod nearest;
}
L
{
type mappedFile;
mapMethod nearest;
}
d 1;
nCellPerEddy 1;
mapMethod nearestCell;
scale 1;
value $internalField;
}
outlet
{
type inletOutlet;
inletValue uniform (0 0 0);
value uniform (0 0 0);
type advective;
value $internalField;
}
"(bottom|top)"
{
type noSlip;
}
"(left|right)"
{
type cyclic;
}
}

View File

@ -0,0 +1,259 @@
(
1.6760001447599677e-43
1.0868009617044407e-08
6.96632299316915e-07
7.964006730807538e-06
4.4886053894517664e-05
0.00017142819717599743
0.0005109590309958684
0.001282137130408118
0.0028356245991423275
0.0056945923004052415
0.010583536322306776
0.018389090000706376
0.029956201643692996
0.04567240383684011
0.06499017109073807
0.0863645775310708
0.10780875116479441
0.12771755696515344
0.1453567712304755
0.16062365567853595
0.17380736699507915
0.18524165214197616
0.19522234333586158
0.20396794244081784
0.21161151098126862
0.2182925640222298
0.22425210908087323
0.22980954591037686
0.2352612116306475
0.24076016447211382
0.24635042180862582
0.25215417623227027
0.2581319159366946
0.2642162232341277
0.2705976827635888
0.2775262136577681
0.2851339428170316
0.29320770439789223
0.30169588718043017
0.3104960794811366
0.3194954534280035
0.3286450052926366
0.3378100136077759
0.3471174687143672
0.3562151631412292
0.36527552859716594
0.37494504798108247
0.38502865612338205
0.3952322027438534
0.40553467840927804
0.41578800746270134
0.4264058548357003
0.43712919288926017
0.44842576293128633
0.46008767937618383
0.4714866924807228
0.4827246039731494
0.49330673743341724
0.5036846762826384
0.5140216569857357
0.5243625990429793
0.5348735169176119
0.5446788615067326
0.5535535437038963
0.5615373928208507
0.5689987179058951
0.5773301273285831
0.5862857780666765
0.5953526108855274
0.6049390063729172
0.6143870357093343
0.6221292179475515
0.6288137731042791
0.6356831550607555
0.6428919658813926
0.6494740048271094
0.6558426649799869
0.6615093242166988
0.6667263216815766
0.6713265835399524
0.6760870855398617
0.6817697212117945
0.6868490918716819
0.6901331296539219
0.6934577171362739
0.6979552723619237
0.7038154195965829
0.7108862054012115
0.7172470897092121
0.7224010326710795
0.727453975349662
0.731494652619959
0.7349775398199252
0.7370734048228417
0.737434256293814
0.7365824697737319
0.7350609217033188
0.7329836659249739
0.730256405839164
0.7283242805479961
0.726231012899943
0.7235685746646292
0.7213160623172862
0.7194814238726635
0.7166228475003421
0.7120932098489855
0.7068169772751501
0.702036389755952
0.697518544808241
0.6937121394109932
0.6904454421400188
0.6866438800820893
0.6818576320301258
0.6766627824128105
0.6727179770747246
0.6689431320803964
0.6631717982054145
0.6561721428602678
0.6481600843658191
0.6405213608738373
0.6341476825999275
0.6280008937349648
0.6214551987295783
0.6145563256095296
0.6071697457595765
0.6005761440226519
0.5951460432382282
0.5923426315298634
0.5915671133699071
0.5923426315298634
0.5951460432382282
0.6005761440226519
0.6071697457595765
0.6145563256095296
0.6214551987295783
0.6280008937349648
0.6341476825999275
0.6405213608738373
0.6481600843658191
0.6561721428602678
0.6631717982054145
0.6689431320803964
0.6727179770747246
0.6766627824128105
0.6818576320301258
0.6866438800820893
0.6904454421400188
0.6937121394109932
0.697518544808241
0.702036389755952
0.7068169772751501
0.7120932098489855
0.7166228475003421
0.7194814238726635
0.7213160623172862
0.7235685746646292
0.726231012899943
0.7283242805479961
0.730256405839164
0.7329836659249739
0.7350609217033188
0.7365824697737319
0.737434256293814
0.7370734048228417
0.7349775398199252
0.731494652619959
0.727453975349662
0.7224010326710795
0.7172470897092121
0.7108862054012115
0.7038154195965829
0.6979552723619237
0.6934577171362739
0.6901331296539219
0.6868490918716819
0.6817697212117945
0.6760870855398617
0.6713265835399524
0.6667263216815766
0.6615093242166988
0.6558426649799869
0.6494740048271094
0.6428919658813926
0.6356831550607555
0.6288137731042791
0.6221292179475515
0.6143870357093343
0.6049390063729172
0.5953526108855274
0.5862857780666765
0.5773301273285831
0.5689987179058951
0.5615373928208507
0.5535535437038963
0.5446788615067326
0.5348735169176119
0.5243625990429793
0.5140216569857357
0.5036846762826384
0.49330673743341724
0.4827246039731494
0.4714866924807228
0.46008767937618383
0.44842576293128633
0.43712919288926017
0.4264058548357003
0.41578800746270134
0.40553467840927804
0.3952322027438534
0.38502865612338205
0.37494504798108247
0.36527552859716594
0.3562151631412292
0.3471174687143672
0.3378100136077759
0.3286450052926366
0.3194954534280035
0.3104960794811366
0.30169588718043017
0.29320770439789223
0.2851339428170316
0.2775262136577681
0.2705976827635888
0.2642162232341277
0.2581319159366946
0.25215417623227027
0.24635042180862582
0.24076016447211382
0.2352612116306475
0.22980954591037686
0.22425210908087323
0.2182925640222298
0.21161151098126862
0.20396794244081784
0.19522234333586158
0.18524165214197616
0.17380736699507915
0.16062365567853595
0.1453567712304755
0.12771755696515344
0.10780875116479441
0.0863645775310708
0.06499017109073807
0.04567240383684011
0.029956201643692996
0.018389090000706376
0.010583536322306776
0.0056945923004052415
0.0028356245991423275
0.001282137130408118
0.0005109590309958684
0.00017142819717599743
4.4886053894517664e-05
7.964006730807538e-06
6.96632299316915e-07
1.0868009617044407e-08
1.6760001447599677e-43
)

View File

@ -0,0 +1 @@
../../common/constant/transportProperties

View File

@ -0,0 +1 @@
../../common/constant/turbulenceProperties

View File

@ -9,46 +9,46 @@ FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "1";
object k;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [ 0 2 -2 0 0 0 0 ];
dimensions [0 1 -1 0 0 0 0];
internalField uniform 1e-5;
internalField uniform (0 0 0);
boundaryField
{
bottomWall
{
type fixedValue;
value uniform 0;
}
topWall
{
type fixedValue;
value uniform 0;
}
sides_half0
{
type cyclic;
}
sides_half1
{
type cyclic;
}
inlet
{
type fixedValue;
type turbulentDigitalFilterInlet;
fsm true;
n ( 64 70 );
L
(
0.78035508 0.31085352 0.342261 0.1728125 0.171875
0.22459375 0.172787596 0.171889998 0.224578995
);
Ubulk 17.55;
value $internalField;
}
outlet
{
type fixedValue;
type advective;
value $internalField;
}
"(bottom|top)"
{
type noSlip;
}
"(left|right)"
{
type cyclic;
}
}

View File

@ -0,0 +1 @@
../../common/constant/transportProperties

View File

@ -0,0 +1 @@
../../common/constant/turbulenceProperties

View File

@ -10,43 +10,31 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
location "1";
object nut;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [ 0 2 -1 0 0 0 0 ];
dimensions [0 2 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
bottomWall
"(inlet|outlet)"
{
type calculated;
value uniform 1e-08;
}
"(bottom|top)"
{
type zeroGradient;
}
topWall
{
type zeroGradient;
}
sides_half0
"(left|right)"
{
type cyclic;
}
sides_half1
{
type cyclic;
}
inlet
{
type calculated;
value uniform 1e-8;
}
outlet
{
type calculated;
value uniform 1e-8;
}
}

View File

@ -10,41 +10,35 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
location "1";
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [ 0 2 -2 0 0 0 0 ];
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
bottomWall
{
type zeroGradient;
}
topWall
{
type zeroGradient;
}
sides_half0
{
type cyclic;
}
sides_half1
{
type cyclic;
}
inlet
{
type zeroGradient;
}
"(bottom|top)"
{
type zeroGradient;
}
outlet
{
type fixedValue;
value uniform 0;
value $internalField;
}
"(left|right)"
{
type cyclic;
}
}

View File

@ -9,18 +9,14 @@ FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
class dictionary;
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
inlet
{
type turbulentDFSEMInlet;
delta 1;
nCellPerEddy 1;
mapMethod nearestCell;
}
transportModel Newtonian;
nu 2.5494595145829e-3;
// ************************************************************************* //

View File

@ -10,26 +10,21 @@ FoamFile
version 2.0;
format ascii;
class dictionary;
location "constant";
object turbulenceProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType LES;
simulationType LES;
LES
{
turbulence on;
LESModel kEqn;
kEqnCoeffs
LESModel Smagorinsky;
SmagorinskyCoeffs
{
Ce 1.048;
Ck 0.02654; // set to approximate a Cs of 0.065
Ck 0.0265463553; // Updated to give Cs = 0.065
}
printCoeffs on;
delta vanDriest;
vanDriestCoeffs
{
@ -41,6 +36,9 @@ LES
Aplus 26;
Cdelta 0.158;
}
printCoeffs on;
turbulence on;
}

View File

@ -16,10 +16,11 @@ FoamFile
scale 1;
L 0.125664;
H 1.0;
H2 #eval{ 2*$H };
W #eval{ pi() };
// L:length, H:height, W:width
L 0.125664;
H 1.0;
H2 #eval{ 2*$H };
W #eval{ pi() };
vertices
(
@ -40,22 +41,18 @@ vertices
blocks
(
hex ( 0 1 2 5 6 7 8 11) (1 23 82) simpleGrading (1 15 1)
hex ( 5 2 3 4 11 8 9 10) (1 23 82) simpleGrading (1 -15 1)
);
edges
(
hex ( 0 1 2 5 6 7 8 11) (1 23 82) simpleGrading (1 10.7028 1)
hex ( 5 2 3 4 11 8 9 10) (1 23 82) simpleGrading (1 -10.7028 1)
);
boundary
(
bottomWall
bottom
{
type wall;
faces ((0 6 7 1));
}
topWall
top
{
type wall;
faces ((4 3 9 10));
@ -84,9 +81,5 @@ boundary
}
);
mergePatchPairs
(
);
// ************************************************************************* //

View File

@ -0,0 +1,13 @@
// -*- C++ -*-
type columnAverage;
libs (fieldFunctionObjects);
patches ( left );
fields ( UPrime2Mean UMean );
executeControl onEnd;
writeControl onEnd;
// ************************************************************************* //

View File

@ -10,12 +10,11 @@ FoamFile
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application pimpleFoam;
application pisoFoam;
startFrom latestTime;
@ -23,9 +22,9 @@ startTime 0;
stopAt endTime;
endTime END_TIME;
endTime 30.0;
deltaT 4e-3;
deltaT 2e-3;
writeControl timeStep;
@ -47,7 +46,6 @@ runTimeModifiable false;
adjustTimeStep false;
// Allow 10% of time for initialisation before sampling
timeStart #eval{ 0.1 * ${/endTime} };
@ -70,35 +68,6 @@ functions
}
);
}
sampling1
{
type sets;
libs (sampling);
interpolationScheme cellPoint;
setFormat raw;
writeControl onEnd;
fields (UPrime2Mean UMean);
sets
(
inletPatch
{
type face;
axis y;
start (0.0 0 1.57);
end (0.0 2 1.57);
}
inletCell
{
type midPoint;
axis y;
start (0.062832 0 1.57);
end (0.062832 2 1.57);
}
);
}
}

View File

@ -16,11 +16,7 @@ FoamFile
numberOfSubdomains 4;
method hierarchical;
method random;
coeffs
{
n (1 2 2);
}
// ************************************************************************* //

View File

@ -10,7 +10,6 @@ FoamFile
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -22,24 +21,21 @@ ddtSchemes
gradSchemes
{
default leastSquares;
default Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss linear;
div(phi,k) Gauss limitedLinear 0.1;
div(phi,B) Gauss limitedLinear 0.1;
div(B) Gauss linear;
div(phi,nuTilda) Gauss limitedLinear 0.1;
div(LambVector) Gauss linear;
div((nuEff*dev2(T(grad(U))))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear uncorrected;
default Gauss linear orthogonal;
}
interpolationSchemes
@ -49,7 +45,7 @@ interpolationSchemes
snGradSchemes
{
default uncorrected;
default orthogonal;
}

View File

@ -10,7 +10,6 @@ FoamFile
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -20,13 +19,13 @@ solvers
p
{
solver GAMG;
tolerance 0;
relTol 0.01;
smoother DICGaussSeidel;
tolerance 1e-06;
relTol 0.001;
nPreSweeps 0;
nPostSweeps 2;
cacheAgglomeration true;
nCellsInCoarsestLevel 10;
nCellsInCoarsestLevel 1000;
agglomerator faceAreaPair;
mergeLevels 1;
}
@ -34,33 +33,32 @@ solvers
pFinal
{
$p;
smoother DICGaussSeidel;
tolerance 1e-06;
relTol 0;
}
"(U|k)"
U
{
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-05;
solver PBiCG;
preconditioner DILU;
tolerance 1e-08;
relTol 0.1;
minIter 1;
}
"(U|k)Final"
UFinal
{
$U;
tolerance 1e-06;
tolerance 1e-08;
relTol 0;
}
}
PIMPLE
PISO
{
nOuterCorrectors 3;
nCorrectors 1;
nCorrectors 3;
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;
}

View File

@ -0,0 +1,35 @@
// -*- C++ -*-
type sets;
libs (sampling);
interpolationScheme cellPatchConstrained;
setFormat raw;
writeControl onEnd;
fields
(
columnAverage:columnAverage(UMean)
columnAverage:columnAverage(UPrime2Mean)
);
sets
(
inletPatch
{
type face;
axis y;
start (0.0 0 1.57);
end (0.0 2 1.57);
}
inletCell
{
type midPoint;
axis y;
start (0.062832 0 1.57);
end (0.062832 2 1.57);
}
);
// ************************************************************************* //

View File

@ -0,0 +1,35 @@
// -*- C++ -*-
type sets;
libs (sampling);
interpolationScheme cellPoint;
setFormat raw;
writeControl onEnd;
fields
(
columnAverage:columnAverage(UMean)
columnAverage:columnAverage(UPrime2Mean)
);
sets
(
inletPatch
{
type face;
axis y;
start (0.0 0 1.57);
end (0.0 2 1.57);
}
inletCell
{
type midPoint;
axis y;
start (0.062832 0 1.57);
end (0.062832 2 1.57);
}
);
// ************************************************************************* //