#!/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"/system/controlDict -entry endTime -value)
    benchmarkFile="resources/dataset/chan395.reystress"
    sampleFile="results/$setup/postProcessing/sampleUPrime2Mean/$endTime/inletPatch_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_TR_patch() {

    setup="$1"

    endTime=$(foamDictionary results/"$setup"/system/controlDict -entry endTime -value)
    benchmarkFile="resources/dataset/chan395.reystress"
    sampleFile="results/$setup/postProcessing/sampleTPrime2Mean/$endTime/inletPatch_columnAverage(TPrime2Mean).xy"
    image="plots/$setup/TR_patch.png"

    gnuplot<<PLT_TR_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 "<T^' T^'> [-]"
    set offset .05, .05
    set output "$image"
    set title "Scalar Reynolds stresses on patch"

    # Benchmark - DNS
        benchmark = "$benchmarkFile"

    # Samples - OpenFOAM
        samples="$sampleFile"

    plot \
        samples u 1:2 t "<T^' T^'>_{input}" w l lw 2 lc rgb "#D55E00", \
        benchmark u 1:3 t "<T^' T^'>_{output}" w l lw 2 dt 2 lc rgb "#009E73"
PLT_TR_PATCH
}


plot_R_cell() {

    setup="$1"

    endTime=$(foamDictionary results/"$setup"/system/controlDict -entry endTime -value)
    benchmarkFile="resources/dataset/chan395.reystress"
    sampleFile="results/$setup/postProcessing/sampleUPrime2Mean/$endTime/inletCell_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_TR_cell() {

    setup="$1"

    endTime=$(foamDictionary results/"$setup"/system/controlDict -entry endTime -value)
    benchmarkFile="resources/dataset/chan395.reystress"
    sampleFile="results/$setup/postProcessing/sampleTPrime2Mean/$endTime/inletCell_columnAverage(TPrime2Mean).xy"
    image="plots/$setup/TR_cell.png"

    gnuplot<<PLT_TR_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 "<T^' T^'> [-]"
    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 "<T^' T^'>_{input}" w l lw 2 lc rgb "#D55E00", \
        benchmark u 1:3 t "<T^' T^'>_{output}" w l lw 2 dt 2 lc rgb "#009E73"
PLT_TR_CELL
}


plot_UMean_patch() {

    setup="$1"

    endTime=$(foamDictionary results/"$setup"/system/controlDict -entry endTime -value)
    benchmarkFile="resources/dataset/chan395.means"
    sampleFile="results/$setup/postProcessing/sampleUMean/$endTime/inletPatch_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
}


plot_TMean_patch() {

    setup="$1"

    endTime=$(foamDictionary results/"$setup"/system/controlDict -entry endTime -value)
    benchmarkFile="resources/dataset/chan395.means"
    sampleFile="results/$setup/postProcessing/sampleTMean/$endTime/inletPatch_columnAverage(TMean).xy"
    image="plots/$setup/TMean_patch.png"

    gnuplot<<PLT_TMEAN_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 "T [-]"
    set offset .05, .05
    set output "$image"
    set title "Streamwise mean scalar on patch"

    # Benchmark - DNS
        benchmark = "$benchmarkFile"

    # Samples - OpenFOAM
        samples="$sampleFile"

    plot \
        samples u 1:2 t "T_{output}" w l lw 2 lc rgb "#009E73", \
        benchmark u 1:3 t "T_{input}" w l lw 2 dt 2 lc rgb "#009E73"
PLT_TMEAN_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 ""

    [ -d "results/$setup" ] || {
        echo "No results/$setup directory found - skipping graph creation" 1>&2
        continue
    }

    dirPlots="plots/$setup"
    [ -d "$dirPlots" ] || mkdir -p "$dirPlots"

    plot_R_patch "$setup"

    plot_R_cell "$setup"

    plot_UMean_patch "$setup"


    plot_TR_patch "$setup"

    plot_TR_cell "$setup"

    plot_TMean_patch "$setup"
done


#------------------------------------------------------------------------------
