diff --git a/.bash_profile b/.bash_profile index fa5c2d1fc..19572b8ee 100644 --- a/.bash_profile +++ b/.bash_profile @@ -9,8 +9,8 @@ fi -# SOWFA-2.4.x -SOWFA-2.4.x() +# OpenFOAM-2.4.x +OpenFOAM-2.4.x() { # Unset OpenFOAM environment variables. if [ -z "$FOAM_INST_DIR" ]; then @@ -36,6 +36,66 @@ SOWFA-2.4.x() export OPENFOAM_NAME=OpenFOAM-$OPENFOAM_VERSION export FOAM_INST_DIR=/projects/windsim/OpenFOAM + # Set the ZeroMQ compilation option to false + echo "Disabling the compilation and usage of ZeroMQ." + export COMPILEZEROMQ=0 + + foamDotFile=$FOAM_INST_DIR/$OPENFOAM_NAME/etc/bashrc + if [ -f $foamDotFile ] ; then + echo "Sourcing $foamDotFile..." + source $foamDotFile + fi + export WM_PROJECT_USER_DIR=$FOAM_INST_DIR/SOWFA-$OPENFOAM_VERSION + export WM_NCOMPPROCS=12 + export WM_COLOURS="white blue green cyan red magenta yellow" + export OPENFAST_DIR=$FOAM_INST_DIR/openfast-openmpi-gcc-1.7.3-4.8.2/install + export HDF5_DIR=$FOAM_INST_DIR/openfast-openmpi-gcc-1.7.3-4.8.2/install + export FOAM_USER_LIBBIN=$WM_PROJECT_USER_DIR/lib/$WM_OPTIONS + export FOAM_USER_APPBIN=$WM_PROJECT_USER_DIR/applications/bin/$WM_OPTIONS + export FOAM_RUN=$WM_PROJECT_USER_DIR/run + export LD_LIBRARY_PATH=$FOAM_USER_LIBBIN:$LD_LIBRARY_PATH + export LD_LIBRARY_PATH=$OPENFAST_DIR/lib/:$LD_LIBRARY_PATH + export PATH=$FOAM_USER_APPBIN:$PATH +} + +# OpenFOAM-2.4.x +OpenFOAM-2.4.x_SSC() +{ + # Unset OpenFOAM environment variables. + if [ -z "$FOAM_INST_DIR" ]; then + echo "Nothing to unset..." + else + echo "Unsetting OpenFOAM environment variables..." + . $FOAM_INST_DIR/OpenFOAM-$OPENFOAM_VERSION/etc/config/unset.sh + fi + + # Unload any compilers already loaded + echo "Purging modules..." + module purge + + # Load the appropriate modules + echo "Loading modules..." + module load openmpi-gcc/1.7.3-4.8.2 + module load mkl/13.5.192 + module load cmake/3.7.2 + module list + + # Set the OpenFOAM version and installation directory + export OPENFOAM_VERSION=2.4.x + export OPENFOAM_NAME=OpenFOAM-$OPENFOAM_VERSION + export FOAM_INST_DIR=/projects/windsim/OpenFOAM + + # Set the ZeroMQ compilation option to true + echo "Enabling the compilation and usage of ZeroMQ." + export COMPILEZEROMQ=1 + export ZEROMQ_HOME=$HOME/OpenFOAM/zeroMQ/libzmq/install + export ZEROMQ_INCLUDE=$ZEROMQ_HOME/include + export ZEROMQ_LIB=$ZEROMQ_HOME/lib64 + export LD_LIBRARY_PATH=$ZEROMQ_HOME/lib:$LD_LIBRARY_PATH + export LD_LIBRARY_PATH=$ZEROMQ_HOME/lib64:$LD_LIBRARY_PATH + echo "Specified ZeroMQ directory: $ZEROMQ_HOME" + + foamDotFile=$FOAM_INST_DIR/$OPENFOAM_NAME/etc/bashrc if [ -f $foamDotFile ] ; then echo "Sourcing $foamDotFile..." diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..f4dd36ac6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +*.asv +**/*.dep + +archivedCases +platforms +src/fileFormats/lnInclude +src/finiteVolume/lnInclude +src/postProcessing/functionObjects/utilities/lnInclude/ +src/sampling/lnInclude/ +src/turbineModels/turbineModelsStandard/lnInclude/ +src/turbulenceModels/incompressible/LES/lnInclude/ + +**/Make/linux64* + +*Cases/**/processor* +*Cases/**/postProces* +*Cases/**/turbineOutp* +*Cases/**/*.e0* +*Cases/**/*.e1* +*Cases/**/*.e2* +*Cases/**/*.e3* +*Cases/**/*.e4* +*Cases/**/*.e5* +*Cases/**/*.e6* +*Cases/**/*.e7* +*Cases/**/*.e8* +*Cases/**/*.e9* +*Cases/**/*.o0* +*Cases/**/*.o1* +*Cases/**/*.o2* +*Cases/**/*.o3* +*Cases/**/*.o4* +*Cases/**/*.o5* +*Cases/**/*.o6* +*Cases/**/*.o7* +*Cases/**/*.o8* +*Cases/**/*.o9* +*Cases/**/log.* +*Cases/**/*.log +*Cases/**/*.gz +*Cases/**/system/controlDict +*Cases/**/constant/polyMesh/boundary +*Cases/**/constant/boundaryData +*Cases/**/constant/sources +*Cases/**/0 +*Cases/**/*00 \ No newline at end of file diff --git a/Allwmake b/Allwmake index 60d4cb836..706053ee7 100755 --- a/Allwmake +++ b/Allwmake @@ -21,6 +21,12 @@ cd ../../../../ # Actuator turbine models. +if [ -z ${COMPILEZEROMQ+x} ] # ZeroMQ SSC for the ADM code +then + echo "COMPILEZEROMQ is not set. Not compiling ZeroMQ SSC in ADM." +else + echo "COMPILEZEROMQ is set to '${COMPILEZEROMQ}'. Compiling with ZeroMQ SSC if COMPILEZEROMQ==1 or without otherwise." +fi cd src/turbineModels/turbineModelsStandard wmake libso cd ../../../ @@ -112,7 +118,7 @@ else fi fi -# The wind plant solver with the actuator disk. + cd applications/solvers/incompressible/windEnergy/windPlantSolver.ADM wmake cd ../../../../../ @@ -147,6 +153,7 @@ else fi + # The basic non-buoyant solver with the actuator disk. cd applications/solvers/incompressible/windEnergy/pisoFoamTurbine.ADM wmake diff --git a/exampleCases/example.ADM.ssc.timeTable/0.original/U b/exampleCases/example.ADM.ssc.timeTable/0.original/U new file mode 100755 index 000000000..6dbf85ec5 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/0.original/U @@ -0,0 +1,58 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform ($U0Mag 0 0); + +boundaryField +{ + lower + { + type slip; + } + upper + { + type slip; + } + west + { + type fixedValue; + value uniform ($U0Mag 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform ($U0Mag 0 0); + } + south + { + type slip; + } + north + { + type slip; + } +} + + + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/0.original/k b/exampleCases/example.ADM.ssc.timeTable/0.original/k new file mode 100755 index 000000000..c76a7e261 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/0.original/k @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k ; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.0; + +boundaryField +{ + lower + { + type zeroGradient; + value uniform 0.0; + } + upper + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedValue; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/0.original/nuSgs b/exampleCases/example.ADM.ssc.timeTable/0.original/nuSgs new file mode 100755 index 000000000..18e32f76e --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/0.original/nuSgs @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nuSgs; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform $nuSgs0; + +boundaryField +{ + lower + { + type zeroGradient; + value uniform 0.0; + } + upper + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedValue; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/0.original/p b/exampleCases/example.ADM.ssc.timeTable/0.original/p new file mode 100755 index 000000000..d77aa1268 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/0.original/p @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0000"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + lower + { + type zeroGradient; + value uniform 0; + } + upper + { + type zeroGradient; + value uniform 0; + } + east + { + type fixedValue; + value uniform 0; + } + west + { + type zeroGradient; + value uniform 0; + } + south + { + type zeroGradient; + value uniform 0; + } + north + { + type zeroGradient; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/SC_INPUT.txt b/exampleCases/example.ADM.ssc.timeTable/SC_INPUT.txt new file mode 100644 index 000000000..a584d7e04 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/SC_INPUT.txt @@ -0,0 +1,7 @@ +Time(s) Turbine Yaw(degCompass) Pitch(deg) +0 0 270 0.0 +10 0 260 0.0 +20 0 250 0.0 +30 0 240 0.0 +0 1 270 0.0 +10 1 280 0.0 \ No newline at end of file diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/LESProperties b/exampleCases/example.ADM.ssc.timeTable/constant/LESProperties new file mode 100755 index 000000000..5fcbb46e9 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/LESProperties @@ -0,0 +1,124 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object LESProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#include "../setUp" + + +LESModel $LESModel; +//LESModel SmagorinskyABL; +//LESModel Smagorinsky; +//LESModel dynLagrangianCsBound; + +delta smooth; + +SmagorinskyCoeffs +{ + ce $ce; + ck $ck; +} + +SmagorinskyABLCoeffs +{ + ce $ce; + ck $ck; + TName "T"; + kappatName "kappat"; +} + +oneEqEddyABLCoeffs +{ + ce $ce; + ck $ck; + TName "T"; + kappatName "kappat"; +} + +oneEqEddyCoeffs +{ + ce $ce; + ck $ck; +} + +printCoeffs on; + +dynLagrangianCsBoundCoeffs +{ + filter simple; +} + +cubeRootVolCoeffs +{ + deltaCoeff 1; +} + +PrandtlCoeffs +{ + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + smoothCoeffs + { + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + maxDeltaRatio 1.1; + } + + Cdelta 0.158; +} + +vanDriestCoeffs +{ + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + smoothCoeffs + { + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + maxDeltaRatio 1.1; + } + + Aplus 26; + Cdelta 0.158; +} + +smoothCoeffs +{ + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + maxDeltaRatio 1.1; +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/Cylinder1 b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/Cylinder1 new file mode 100755 index 000000000..7106c17d0 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/Cylinder1 @@ -0,0 +1,23 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.5000) + ( 0.00 0.000 0.5000) + ( 180.00 0.000 0.5000) +); diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/Cylinder2 b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/Cylinder2 new file mode 100755 index 000000000..b2e7923f1 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/Cylinder2 @@ -0,0 +1,23 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.3500) + ( 0.00 0.000 0.3500) + ( 180.00 0.000 0.3500) +); diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU21_A17 b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU21_A17 new file mode 100755 index 000000000..17eb9de96 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU21_A17 @@ -0,0 +1,162 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180 0 0.0185) + (-175 0.394 0.0332) + (-170 0.788 0.0945) + (-160 0.67 0.2809) + (-155 0.749 0.3932) + (-150 0.797 0.5112) + (-145 0.818 0.6309) + (-140 0.813 0.7485) + (-135 0.786 0.8612) + (-130 0.739 0.9665) + (-125 0.675 1.0625) + (-120 0.596 1.1476) + (-115 0.505 1.2206) + (-110 0.403 1.2805) + (-105 0.294 1.3265) + (-100 0.179 1.3582) + (-95 0.06 1.3752) + (-90 -0.06 1.3774) + (-85 -0.179 1.3648) + (-80 -0.295 1.3376) + (-75 -0.407 1.2962) + (-70 -0.512 1.2409) + (-65 -0.608 1.1725) + (-60 -0.693 1.0919) + (-55 -0.764 1.0002) + (-50 -0.82 0.899 ) + (-45 -0.857 0.79 ) + (-40 -0.875 0.6754) + (-35 -0.869 0.5579) + (-30 -0.838 0.4405) + (-25 -0.791 0.3256) + (-24 -0.794 0.3013) + (-23 -0.805 0.2762) + (-22 -0.821 0.2506) + (-21 -0.843 0.2246) + (-20 -0.869 0.1983) + (-19 -0.899 0.172 ) + (-18 -0.931 0.1457) + (-17 -0.964 0.1197) + (-16 -0.999 0.094 ) + (-15 -1.033 0.0689) + (-14.5 -1.05 0.0567) + (-12.01 -0.953 0.0271) + (-11 -0.9 0.0303) + (-9.98 -0.827 0.0287) + (-8.12 -0.536 0.0124) + (-7.62 -0.467 0.0109) + (-7.11 -0.393 0.0092) + (-6.6 -0.323 0.0083) + (-6.5 -0.311 0.0089) + (-6 -0.245 0.0082) + (-5.5 -0.178 0.0074) + (-5 -0.113 0.0069) + (-4.5 -0.048 0.0065) + (-4 0.016 0.0063) + (-3.5 0.08 0.0061) + (-3 0.145 0.0058) + (-2.5 0.208 0.0057) + (-2 0.27 0.0057) + (-1.5 0.333 0.0057) + (-1 0.396 0.0057) + (-0.5 0.458 0.0057) + ( 0 0.521 0.0057) + ( 0.5 0.583 0.0057) + ( 1 0.645 0.0058) + ( 1.5 0.706 0.0058) + ( 2 0.768 0.0059) + ( 2.5 0.828 0.0061) + ( 3 0.888 0.0063) + ( 3.5 0.948 0.0066) + ( 4 0.996 0.0071) + ( 4.5 1.046 0.0079) + ( 5 1.095 0.009 ) + ( 5.5 1.145 0.0103) + ( 6 1.192 0.0113) + ( 6.5 1.239 0.0122) + ( 7 1.283 0.0131) + ( 7.5 1.324 0.0139) + ( 8 1.358 0.0147) + ( 8.5 1.385 0.0158) + ( 9 1.403 0.0181) + ( 9.5 1.401 0.0211) + ( 10 1.358 0.0255) + ( 10.5 1.313 0.0301) + ( 11 1.287 0.0347) + ( 11.5 1.274 0.0401) + ( 12 1.272 0.0468) + ( 12.5 1.273 0.0545) + ( 13 1.273 0.0633) + ( 13.5 1.273 0.0722) + ( 14 1.272 0.0806) + ( 14.5 1.273 0.09 ) + ( 15 1.275 0.0987) + ( 15.5 1.281 0.1075) + ( 16 1.284 0.117 ) + ( 16.5 1.296 0.127 ) + ( 17 1.306 0.1368) + ( 17.5 1.308 0.1464) + ( 18 1.308 0.1562) + ( 18.5 1.308 0.1664) + ( 19 1.308 0.177 ) + ( 19.5 1.307 0.1878) + ( 20 1.311 0.1987) + ( 20.5 1.325 0.21 ) + ( 21 1.324 0.2214) + ( 22 1.277 0.2499) + ( 23 1.229 0.2786) + ( 24 1.182 0.3077) + ( 25 1.136 0.3371) + ( 26 1.093 0.3664) + ( 28 1.017 0.4246) + ( 30 0.962 0.4813) + ( 32 0.937 0.5356) + ( 35 0.947 0.6127) + ( 40 0.95 0.7396) + ( 45 0.928 0.8623) + ( 50 0.884 0.9781) + ( 55 0.821 1.0846) + ( 60 0.74 1.1796) + ( 65 0.646 1.2617) + ( 70 0.54 1.3297) + ( 75 0.425 1.3827) + ( 80 0.304 1.4202) + ( 85 0.179 1.4423) + ( 90 0.053 1.4512) + ( 95 -0.073 1.448 ) + ( 100 -0.198 1.4294) + ( 105 -0.319 1.3954) + ( 110 -0.434 1.3464) + ( 115 -0.541 1.2829) + ( 120 -0.637 1.2057) + ( 125 -0.72 1.1157) + ( 130 -0.787 1.0144) + ( 135 -0.836 0.9033) + ( 140 -0.864 0.7845) + ( 145 -0.869 0.6605) + ( 150 -0.847 0.5346) + ( 155 -0.795 0.4103) + ( 160 -0.711 0.2922) + ( 170 -0.788 0.0969) + ( 175 -0.394 0.0334) + ( 180 0 0.0185) +); diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU25_A17 b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU25_A17 new file mode 100755 index 000000000..56981e639 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU25_A17 @@ -0,0 +1,161 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0202) + (-175.00 0.368 0.0324) + (-170.00 0.735 0.0943) + (-160.00 0.695 0.2848) + (-155.00 0.777 0.4001) + (-150.00 0.828 0.5215) + (-145.00 0.850 0.6447) + (-140.00 0.846 0.7660) + (-135.00 0.818 0.8823) + (-130.00 0.771 0.9911) + (-125.00 0.705 1.0905) + (-120.00 0.624 1.1787) + (-115.00 0.530 1.2545) + (-110.00 0.426 1.3168) + (-105.00 0.314 1.3650) + (-100.00 0.195 1.3984) + ( -95.00 0.073 1.4169) + ( -90.00 -0.050 1.4201) + ( -85.00 -0.173 1.4081) + ( -80.00 -0.294 1.3811) + ( -75.00 -0.409 1.3394) + ( -70.00 -0.518 1.2833) + ( -65.00 -0.617 1.2138) + ( -60.00 -0.706 1.1315) + ( -55.00 -0.780 1.0378) + ( -50.00 -0.839 0.9341) + ( -45.00 -0.879 0.8221) + ( -40.00 -0.898 0.7042) + ( -35.00 -0.893 0.5829) + ( -30.00 -0.862 0.4616) + ( -25.00 -0.803 0.3441) + ( -24.00 -0.792 0.3209) + ( -23.00 -0.789 0.2972) + ( -22.00 -0.792 0.2730) + ( -21.00 -0.801 0.2485) + ( -20.00 -0.815 0.2237) + ( -19.00 -0.833 0.1990) + ( -18.00 -0.854 0.1743) + ( -17.00 -0.879 0.1498) + ( -16.00 -0.905 0.1256) + ( -15.00 -0.932 0.1020) + ( -14.00 -0.959 0.0789) + ( -13.00 -0.985 0.0567) + ( -13.00 -0.985 0.0567) + ( -12.01 -0.953 0.0271) + ( -11.00 -0.900 0.0303) + ( -9.98 -0.827 0.0287) + ( -8.98 -0.753 0.0271) + ( -8.47 -0.691 0.0264) + ( -7.45 -0.555 0.0114) + ( -6.42 -0.413 0.0094) + ( -5.40 -0.271 0.0086) + ( -5.00 -0.220 0.0073) + ( -4.50 -0.152 0.0071) + ( -4.00 -0.084 0.0070) + ( -3.50 -0.018 0.0069) + ( -3.00 0.049 0.0068) + ( -2.50 0.115 0.0068) + ( -2.00 0.181 0.0068) + ( -1.50 0.247 0.0067) + ( -1.00 0.312 0.0067) + ( -0.50 0.377 0.0067) + ( 0.00 0.444 0.0065) + ( 0.50 0.508 0.0065) + ( 1.00 0.573 0.0066) + ( 1.50 0.636 0.0067) + ( 2.00 0.701 0.0068) + ( 2.50 0.765 0.0069) + ( 3.00 0.827 0.0070) + ( 3.50 0.890 0.0071) + ( 4.00 0.952 0.0073) + ( 4.50 1.013 0.0076) + ( 5.00 1.062 0.0079) + ( 6.00 1.161 0.0099) + ( 6.50 1.208 0.0117) + ( 7.00 1.254 0.0132) + ( 7.50 1.301 0.0143) + ( 8.00 1.336 0.0153) + ( 8.50 1.369 0.0165) + ( 9.00 1.400 0.0181) + ( 9.50 1.428 0.0211) + ( 10.00 1.442 0.0262) + ( 10.50 1.427 0.0336) + ( 11.00 1.374 0.0420) + ( 11.50 1.316 0.0515) + ( 12.00 1.277 0.0601) + ( 12.50 1.250 0.0693) + ( 13.00 1.246 0.0785) + ( 13.50 1.247 0.0888) + ( 14.00 1.256 0.1000) + ( 14.50 1.260 0.1108) + ( 15.00 1.271 0.1219) + ( 15.50 1.281 0.1325) + ( 16.00 1.289 0.1433) + ( 16.50 1.294 0.1541) + ( 17.00 1.304 0.1649) + ( 17.50 1.309 0.1754) + ( 18.00 1.315 0.1845) + ( 18.50 1.320 0.1953) + ( 19.00 1.330 0.2061) + ( 19.50 1.343 0.2170) + ( 20.00 1.354 0.2280) + ( 20.50 1.359 0.2390) + ( 21.00 1.360 0.2536) + ( 22.00 1.325 0.2814) + ( 23.00 1.288 0.3098) + ( 24.00 1.251 0.3386) + ( 25.00 1.215 0.3678) + ( 26.00 1.181 0.3972) + ( 28.00 1.120 0.4563) + ( 30.00 1.076 0.5149) + ( 32.00 1.056 0.5720) + ( 35.00 1.066 0.6548) + ( 40.00 1.064 0.7901) + ( 45.00 1.035 0.9190) + ( 50.00 0.980 1.0378) + ( 55.00 0.904 1.1434) + ( 60.00 0.810 1.2333) + ( 65.00 0.702 1.3055) + ( 70.00 0.582 1.3587) + ( 75.00 0.456 1.3922) + ( 80.00 0.326 1.4063) + ( 85.00 0.197 1.4042) + ( 90.00 0.072 1.3985) + ( 95.00 -0.050 1.3973) + ( 100.00 -0.170 1.3810) + ( 105.00 -0.287 1.3498) + ( 110.00 -0.399 1.3041) + ( 115.00 -0.502 1.2442) + ( 120.00 -0.596 1.1709) + ( 125.00 -0.677 1.0852) + ( 130.00 -0.743 0.9883) + ( 135.00 -0.792 0.8818) + ( 140.00 -0.821 0.7676) + ( 145.00 -0.826 0.6481) + ( 150.00 -0.806 0.5264) + ( 155.00 -0.758 0.4060) + ( 160.00 -0.679 0.2912) + ( 170.00 -0.735 0.0995) + ( 175.00 -0.368 0.0356) + ( 180.00 0.000 0.0202) +); diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU30_A17 b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU30_A17 new file mode 100755 index 000000000..35fb11988 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU30_A17 @@ -0,0 +1,163 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0267) + (-175.00 0.274 0.0370) + (-170.00 0.547 0.0968) + (-160.00 0.685 0.2876) + (-155.00 0.766 0.4025) + (-150.00 0.816 0.5232) + (-145.00 0.836 0.6454) + (-140.00 0.832 0.7656) + (-135.00 0.804 0.8807) + (-130.00 0.756 0.9882) + (-125.00 0.690 1.0861) + (-120.00 0.609 1.1730) + (-115.00 0.515 1.2474) + (-110.00 0.411 1.3084) + (-105.00 0.300 1.3552) + (-100.00 0.182 1.3875) + ( -95.00 0.061 1.4048) + ( -90.00 -0.061 1.4070) + ( -85.00 -0.183 1.3941) + ( -80.00 -0.302 1.3664) + ( -75.00 -0.416 1.3240) + ( -70.00 -0.523 1.2676) + ( -65.00 -0.622 1.1978) + ( -60.00 -0.708 1.1156) + ( -55.00 -0.781 1.0220) + ( -50.00 -0.838 0.9187) + ( -45.00 -0.877 0.8074) + ( -40.00 -0.895 0.6904) + ( -35.00 -0.889 0.5703) + ( -30.00 -0.858 0.4503) + ( -25.00 -0.832 0.3357) + ( -24.00 -0.852 0.3147) + ( -23.00 -0.882 0.2946) + ( -22.00 -0.919 0.2752) + ( -21.00 -0.963 0.2566) + ( -20.00 -1.013 0.2388) + ( -19.00 -1.067 0.2218) + ( -18.00 -1.125 0.2056) + ( -17.00 -1.185 0.1901) + ( -16.00 -1.245 0.1754) + ( -15.25 -1.290 0.1649) + ( -14.24 -1.229 0.1461) + ( -13.24 -1.148 0.1263) + ( -12.22 -1.052 0.1051) + ( -11.22 -0.965 0.0886) + ( -10.19 -0.867 0.0740) + ( -9.70 -0.822 0.0684) + ( -9.18 -0.769 0.0605) + ( -8.18 -0.756 0.0270) + ( -7.19 -0.690 0.0180) + ( -6.65 -0.616 0.0166) + ( -6.13 -0.542 0.0152) + ( -6.00 -0.525 0.0117) + ( -5.50 -0.451 0.0105) + ( -5.00 -0.382 0.0097) + ( -4.50 -0.314 0.0092) + ( -4.00 -0.251 0.0091) + ( -3.50 -0.189 0.0089) + ( -3.00 -0.120 0.0089) + ( -2.50 -0.051 0.0088) + ( -2.00 0.017 0.0088) + ( -1.50 0.085 0.0088) + ( -1.00 0.152 0.0088) + ( -0.50 0.219 0.0088) + ( 0.00 0.288 0.0087) + ( 0.50 0.354 0.0087) + ( 1.00 0.421 0.0088) + ( 1.50 0.487 0.0089) + ( 2.00 0.554 0.0090) + ( 2.50 0.619 0.0091) + ( 3.00 0.685 0.0092) + ( 3.50 0.749 0.0093) + ( 4.00 0.815 0.0095) + ( 4.50 0.879 0.0096) + ( 5.00 0.944 0.0097) + ( 5.50 1.008 0.0099) + ( 6.00 1.072 0.0101) + ( 6.50 1.135 0.0103) + ( 7.00 1.197 0.0107) + ( 7.50 1.256 0.0112) + ( 8.00 1.305 0.0125) + ( 9.00 1.390 0.0155) + ( 9.50 1.424 0.0171) + ( 10.00 1.458 0.0192) + ( 10.50 1.488 0.0219) + ( 11.00 1.512 0.0255) + ( 11.50 1.533 0.0307) + ( 12.00 1.549 0.0370) + ( 12.50 1.558 0.0452) + ( 13.00 1.470 0.0630) + ( 13.50 1.398 0.0784) + ( 14.00 1.354 0.0931) + ( 14.50 1.336 0.1081) + ( 15.00 1.333 0.1239) + ( 15.50 1.326 0.1415) + ( 16.00 1.329 0.1592) + ( 16.50 1.326 0.1743) + ( 17.00 1.321 0.1903) + ( 17.50 1.331 0.2044) + ( 18.00 1.333 0.2186) + ( 18.50 1.340 0.2324) + ( 19.00 1.362 0.2455) + ( 19.50 1.382 0.2584) + ( 20.00 1.398 0.2689) + ( 20.50 1.426 0.2814) + ( 21.00 1.437 0.2943) + ( 22.00 1.418 0.3246) + ( 23.00 1.397 0.3557) + ( 24.00 1.376 0.3875) + ( 25.00 1.354 0.4198) + ( 26.00 1.332 0.4524) + ( 28.00 1.293 0.5183) + ( 30.00 1.265 0.5843) + ( 32.00 1.253 0.6492) + ( 35.00 1.264 0.7438) + ( 40.00 1.258 0.8970) + ( 45.00 1.217 1.0402) + ( 50.00 1.146 1.1686) + ( 55.00 1.049 1.2779) + ( 60.00 0.932 1.3647) + ( 65.00 0.799 1.4267) + ( 70.00 0.657 1.4621) + ( 75.00 0.509 1.4708) + ( 80.00 0.362 1.4544) + ( 85.00 0.221 1.4196) + ( 90.00 0.092 1.3938) + ( 95.00 -0.030 1.3943) + ( 100.00 -0.150 1.3798) + ( 105.00 -0.267 1.3504) + ( 110.00 -0.379 1.3063) + ( 115.00 -0.483 1.2481) + ( 120.00 -0.578 1.1763) + ( 125.00 -0.660 1.0919) + ( 130.00 -0.727 0.9962) + ( 135.00 -0.777 0.8906) + ( 140.00 -0.807 0.7771) + ( 145.00 -0.815 0.6581) + ( 150.00 -0.797 0.5364) + ( 155.00 -0.750 0.4157) + ( 160.00 -0.673 0.3000) + ( 170.00 -0.547 0.1051) + ( 175.00 -0.274 0.0388) + ( 180.00 0.000 0.0267) +); diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU35_A17 b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU35_A17 new file mode 100755 index 000000000..041013e24 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU35_A17 @@ -0,0 +1,155 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0407) + (-175.00 0.223 0.0507) + (-170.00 0.405 0.1055) + (-160.00 0.658 0.2982) + (-155.00 0.733 0.4121) + (-150.00 0.778 0.5308) + (-145.00 0.795 0.6503) + (-140.00 0.787 0.7672) + (-135.00 0.757 0.8785) + (-130.00 0.708 0.9819) + (-125.00 0.641 1.0756) + (-120.00 0.560 1.1580) + (-115.00 0.467 1.2280) + (-110.00 0.365 1.2847) + (-105.00 0.255 1.3274) + (-100.00 0.139 1.3557) + ( -95.00 0.021 1.3692) + ( -90.00 -0.098 1.3680) + ( -85.00 -0.216 1.3521) + ( -80.00 -0.331 1.3218) + ( -75.00 -0.441 1.2773) + ( -70.00 -0.544 1.2193) + ( -65.00 -0.638 1.1486) + ( -60.00 -0.720 1.0660) + ( -55.00 -0.788 0.9728) + ( -50.00 -0.840 0.8705) + ( -45.00 -0.875 0.7611) + ( -40.00 -0.889 0.6466) + ( -35.00 -0.880 0.5299) + ( -30.00 -0.846 0.4141) + ( -25.00 -0.784 0.3030) + ( -24.00 -0.768 0.2817) + ( -23.00 -0.751 0.2608) + ( -22.00 -0.733 0.2404) + ( -21.00 -0.714 0.2205) + ( -20.00 -0.693 0.2011) + ( -19.00 -0.671 0.1822) + ( -18.00 -0.648 0.1640) + ( -17.00 -0.624 0.1465) + ( -16.00 -0.601 0.1300) + ( -15.00 -0.579 0.1145) + ( -14.00 -0.559 0.1000) + ( -13.00 -0.539 0.0867) + ( -12.00 -0.519 0.0744) + ( -11.00 -0.499 0.0633) + ( -10.00 -0.480 0.0534) + ( -5.54 -0.385 0.0245) + ( -5.04 -0.359 0.0225) + ( -4.54 -0.360 0.0196) + ( -4.04 -0.355 0.0174) + ( -3.54 -0.307 0.0162) + ( -3.04 -0.246 0.0144) + ( -3.00 -0.240 0.0240) + ( -2.50 -0.163 0.0188) + ( -2.00 -0.091 0.0160) + ( -1.50 -0.019 0.0137) + ( -1.00 0.052 0.0118) + ( -0.50 0.121 0.0104) + ( 0.00 0.196 0.0094) + ( 0.50 0.265 0.0096) + ( 1.00 0.335 0.0098) + ( 1.50 0.404 0.0099) + ( 2.00 0.472 0.0100) + ( 2.50 0.540 0.0102) + ( 3.00 0.608 0.0103) + ( 3.50 0.674 0.0104) + ( 4.00 0.742 0.0105) + ( 4.50 0.809 0.0107) + ( 5.00 0.875 0.0108) + ( 5.50 0.941 0.0109) + ( 6.00 1.007 0.0110) + ( 6.50 1.071 0.0113) + ( 7.00 1.134 0.0115) + ( 7.50 1.198 0.0117) + ( 8.00 1.260 0.0120) + ( 8.50 1.318 0.0126) + ( 9.00 1.368 0.0133) + ( 9.50 1.422 0.0143) + ( 10.00 1.475 0.0156) + ( 10.50 1.523 0.0174) + ( 11.00 1.570 0.0194) + ( 11.50 1.609 0.0227) + ( 12.00 1.642 0.0269) + ( 12.50 1.675 0.0319) + ( 13.00 1.700 0.0398) + ( 13.50 1.717 0.0488) + ( 14.00 1.712 0.0614) + ( 14.50 1.703 0.0786) + ( 15.50 1.671 0.1173) + ( 16.00 1.649 0.1377) + ( 16.50 1.621 0.1600) + ( 17.00 1.598 0.1814) + ( 17.50 1.571 0.2042) + ( 18.00 1.549 0.2316) + ( 19.00 1.544 0.2719) + ( 19.50 1.549 0.2906) + ( 20.00 1.565 0.3085) + ( 21.00 1.565 0.3447) + ( 22.00 1.563 0.3820) + ( 23.00 1.558 0.4203) + ( 24.00 1.552 0.4593) + ( 25.00 1.546 0.4988) + ( 26.00 1.539 0.5387) + ( 28.00 1.527 0.6187) + ( 30.00 1.522 0.6978) + ( 32.00 1.529 0.7747) + ( 35.00 1.544 0.8869) + ( 40.00 1.529 1.0671) + ( 45.00 1.471 1.2319) + ( 50.00 1.376 1.3747) + ( 55.00 1.249 1.4899) + ( 60.00 1.097 1.5728) + ( 65.00 0.928 1.6202) + ( 70.00 0.750 1.6302) + ( 75.00 0.570 1.6031) + ( 80.00 0.396 1.5423) + ( 85.00 0.237 1.4598) + ( 90.00 0.101 1.4041) + ( 95.00 -0.022 1.4053) + ( 100.00 -0.143 1.3914) + ( 105.00 -0.261 1.3625) + ( 110.00 -0.374 1.3188) + ( 115.00 -0.480 1.2608) + ( 120.00 -0.575 1.1891) + ( 125.00 -0.659 1.1046) + ( 130.00 -0.727 1.0086) + ( 135.00 -0.778 0.9025) + ( 140.00 -0.809 0.7883) + ( 145.00 -0.818 0.6684) + ( 150.00 -0.800 0.5457) + ( 155.00 -0.754 0.4236) + ( 160.00 -0.677 0.3066) + ( 170.00 -0.417 0.1085) + ( 175.00 -0.229 0.0510) + ( 180.00 0.000 0.0407) +); diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU40_A17 b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU40_A17 new file mode 100755 index 000000000..6138a98dd --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/DU40_A17 @@ -0,0 +1,156 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0602) + (-175.00 0.218 0.0699) + (-170.00 0.397 0.1107) + (-160.00 0.642 0.3045) + (-155.00 0.715 0.4179) + (-150.00 0.757 0.5355) + (-145.00 0.772 0.6535) + (-140.00 0.762 0.7685) + (-135.00 0.731 0.8777) + (-130.00 0.680 0.9788) + (-125.00 0.613 1.0700) + (-120.00 0.532 1.1499) + (-115.00 0.439 1.2174) + (-110.00 0.337 1.2716) + (-105.00 0.228 1.3118) + (-100.00 0.114 1.3378) + ( -95.00 -0.002 1.3492) + ( -90.00 -0.120 1.3460) + ( -85.00 -0.236 1.3283) + ( -80.00 -0.349 1.2964) + ( -75.00 -0.456 1.2507) + ( -70.00 -0.557 1.1918) + ( -65.00 -0.647 1.1204) + ( -60.00 -0.727 1.0376) + ( -55.00 -0.792 0.9446) + ( -50.00 -0.842 0.8429) + ( -45.00 -0.874 0.7345) + ( -40.00 -0.886 0.6215) + ( -35.00 -0.875 0.5067) + ( -30.00 -0.839 0.3932) + ( -25.00 -0.777 0.2849) + ( -24.00 -0.761 0.2642) + ( -23.00 -0.744 0.2440) + ( -22.00 -0.725 0.2242) + ( -21.00 -0.706 0.2049) + ( -20.00 -0.685 0.1861) + ( -19.00 -0.662 0.1687) + ( -18.00 -0.635 0.1533) + ( -17.00 -0.605 0.1398) + ( -16.00 -0.571 0.1281) + ( -15.00 -0.534 0.1183) + ( -14.00 -0.494 0.1101) + ( -13.00 -0.452 0.1036) + ( -12.00 -0.407 0.0986) + ( -11.00 -0.360 0.0951) + ( -10.00 -0.311 0.0931) + ( -8.00 -0.208 0.0930) + ( -6.00 -0.111 0.0689) + ( -5.50 -0.090 0.0614) + ( -5.00 -0.072 0.0547) + ( -4.50 -0.065 0.0480) + ( -4.00 -0.054 0.0411) + ( -3.50 -0.017 0.0349) + ( -3.00 0.003 0.0299) + ( -2.50 0.014 0.0255) + ( -2.00 0.009 0.0198) + ( -1.50 0.004 0.0164) + ( -1.00 0.036 0.0147) + ( -0.50 0.073 0.0137) + ( 0.00 0.137 0.0113) + ( 0.50 0.213 0.0114) + ( 1.00 0.292 0.0118) + ( 1.50 0.369 0.0122) + ( 2.00 0.444 0.0124) + ( 2.50 0.514 0.0124) + ( 3.00 0.580 0.0123) + ( 3.50 0.645 0.0120) + ( 4.00 0.710 0.0119) + ( 4.50 0.776 0.0122) + ( 5.00 0.841 0.0125) + ( 5.50 0.904 0.0129) + ( 6.00 0.967 0.0135) + ( 6.50 1.027 0.0144) + ( 7.00 1.084 0.0158) + ( 7.50 1.140 0.0174) + ( 8.00 1.193 0.0198) + ( 8.50 1.242 0.0231) + ( 9.00 1.287 0.0275) + ( 9.50 1.333 0.0323) + ( 10.00 1.368 0.0393) + ( 10.50 1.400 0.0475) + ( 11.00 1.425 0.0580) + ( 11.50 1.449 0.0691) + ( 12.00 1.473 0.0816) + ( 12.50 1.494 0.0973) + ( 13.00 1.513 0.1129) + ( 13.50 1.538 0.1288) + ( 14.50 1.587 0.1650) + ( 15.00 1.614 0.1845) + ( 15.50 1.631 0.2052) + ( 16.00 1.649 0.2250) + ( 16.50 1.666 0.2467) + ( 17.00 1.681 0.2684) + ( 17.50 1.699 0.2900) + ( 18.00 1.719 0.3121) + ( 19.00 1.751 0.3554) + ( 19.50 1.767 0.3783) + ( 20.50 1.798 0.4212) + ( 21.00 1.810 0.4415) + ( 22.00 1.830 0.4830) + ( 23.00 1.847 0.5257) + ( 24.00 1.861 0.5694) + ( 25.00 1.872 0.6141) + ( 26.00 1.881 0.6593) + ( 28.00 1.894 0.7513) + ( 30.00 1.904 0.8441) + ( 32.00 1.915 0.9364) + ( 35.00 1.929 1.0722) + ( 40.00 1.903 1.2873) + ( 45.00 1.820 1.4796) + ( 50.00 1.690 1.6401) + ( 55.00 1.522 1.7609) + ( 60.00 1.323 1.8360) + ( 65.00 1.106 1.8614) + ( 70.00 0.880 1.8347) + ( 75.00 0.658 1.7567) + ( 80.00 0.449 1.6334) + ( 85.00 0.267 1.4847) + ( 90.00 0.124 1.3879) + ( 95.00 0.002 1.3912) + ( 100.00 -0.118 1.3795) + ( 105.00 -0.235 1.3528) + ( 110.00 -0.348 1.3114) + ( 115.00 -0.453 1.2557) + ( 120.00 -0.549 1.1864) + ( 125.00 -0.633 1.1041) + ( 130.00 -0.702 1.0102) + ( 135.00 -0.754 0.9060) + ( 140.00 -0.787 0.7935) + ( 145.00 -0.797 0.6750) + ( 150.00 -0.782 0.5532) + ( 155.00 -0.739 0.4318) + ( 160.00 -0.664 0.3147) + ( 170.00 -0.410 0.1144) + ( 175.00 -0.226 0.0702) + ( 180.00 0.000 0.0602) +); diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/NACA64_A17 b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/NACA64_A17 new file mode 100755 index 000000000..11fa618d0 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/airfoilProperties/NACA64_A17 @@ -0,0 +1,147 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0198) + (-175.00 0.374 0.0341) + (-170.00 0.749 0.0955) + (-160.00 0.659 0.2807) + (-155.00 0.736 0.3919) + (-150.00 0.783 0.5086) + (-145.00 0.803 0.6267) + (-140.00 0.798 0.7427) + (-135.00 0.771 0.8537) + (-130.00 0.724 0.9574) + (-125.00 0.660 1.0519) + (-120.00 0.581 1.1355) + (-115.00 0.491 1.2070) + (-110.00 0.390 1.2656) + (-105.00 0.282 1.3104) + (-100.00 0.169 1.3410) + ( -95.00 0.052 1.3572) + ( -90.00 -0.067 1.3587) + ( -85.00 -0.184 1.3456) + ( -80.00 -0.299 1.3181) + ( -75.00 -0.409 1.2765) + ( -70.00 -0.512 1.2212) + ( -65.00 -0.606 1.1532) + ( -60.00 -0.689 1.0731) + ( -55.00 -0.759 0.9822) + ( -50.00 -0.814 0.8820) + ( -45.00 -0.850 0.7742) + ( -40.00 -0.866 0.6610) + ( -35.00 -0.860 0.5451) + ( -30.00 -0.829 0.4295) + ( -25.00 -0.853 0.3071) + ( -24.00 -0.870 0.2814) + ( -23.00 -0.890 0.2556) + ( -22.00 -0.911 0.2297) + ( -21.00 -0.934 0.2040) + ( -20.00 -0.958 0.1785) + ( -19.00 -0.982 0.1534) + ( -18.00 -1.005 0.1288) + ( -17.00 -1.082 0.1037) + ( -16.00 -1.113 0.0786) + ( -15.00 -1.105 0.0535) + ( -14.00 -1.078 0.0283) + ( -13.50 -1.053 0.0158) + ( -13.00 -1.015 0.0151) + ( -12.00 -0.904 0.0134) + ( -11.00 -0.807 0.0121) + ( -10.00 -0.711 0.0111) + ( -9.00 -0.595 0.0099) + ( -8.00 -0.478 0.0091) + ( -7.00 -0.375 0.0086) + ( -6.00 -0.264 0.0082) + ( -5.00 -0.151 0.0079) + ( -4.00 -0.017 0.0072) + ( -3.00 0.088 0.0064) + ( -2.00 0.213 0.0054) + ( -1.00 0.328 0.0052) + ( 0.00 0.442 0.0052) + ( 1.00 0.556 0.0052) + ( 2.00 0.670 0.0053) + ( 3.00 0.784 0.0053) + ( 4.00 0.898 0.0054) + ( 5.00 1.011 0.0058) + ( 6.00 1.103 0.0091) + ( 7.00 1.181 0.0113) + ( 8.00 1.257 0.0124) + ( 8.50 1.293 0.0130) + ( 9.00 1.326 0.0136) + ( 9.50 1.356 0.0143) + ( 10.00 1.382 0.0150) + ( 10.50 1.400 0.0267) + ( 11.00 1.415 0.0383) + ( 11.50 1.425 0.0498) + ( 12.00 1.434 0.0613) + ( 12.50 1.443 0.0727) + ( 13.00 1.451 0.0841) + ( 13.50 1.453 0.0954) + ( 14.00 1.448 0.1065) + ( 14.50 1.444 0.1176) + ( 15.00 1.445 0.1287) + ( 15.50 1.447 0.1398) + ( 16.00 1.448 0.1509) + ( 16.50 1.444 0.1619) + ( 17.00 1.438 0.1728) + ( 17.50 1.439 0.1837) + ( 18.00 1.448 0.1947) + ( 18.50 1.452 0.2057) + ( 19.00 1.448 0.2165) + ( 19.50 1.438 0.2272) + ( 20.00 1.428 0.2379) + ( 21.00 1.401 0.2590) + ( 22.00 1.359 0.2799) + ( 23.00 1.300 0.3004) + ( 24.00 1.220 0.3204) + ( 25.00 1.168 0.3377) + ( 26.00 1.116 0.3554) + ( 28.00 1.015 0.3916) + ( 30.00 0.926 0.4294) + ( 32.00 0.855 0.4690) + ( 35.00 0.800 0.5324) + ( 40.00 0.804 0.6452) + ( 45.00 0.793 0.7573) + ( 50.00 0.763 0.8664) + ( 55.00 0.717 0.9708) + ( 60.00 0.656 1.0693) + ( 65.00 0.582 1.1606) + ( 70.00 0.495 1.2438) + ( 75.00 0.398 1.3178) + ( 80.00 0.291 1.3809) + ( 85.00 0.176 1.4304) + ( 90.00 0.053 1.4565) + ( 95.00 -0.074 1.4533) + ( 100.00 -0.199 1.4345) + ( 105.00 -0.321 1.4004) + ( 110.00 -0.436 1.3512) + ( 115.00 -0.543 1.2874) + ( 120.00 -0.640 1.2099) + ( 125.00 -0.723 1.1196) + ( 130.00 -0.790 1.0179) + ( 135.00 -0.840 0.9064) + ( 140.00 -0.868 0.7871) + ( 145.00 -0.872 0.6627) + ( 150.00 -0.850 0.5363) + ( 155.00 -0.798 0.4116) + ( 160.00 -0.714 0.2931) + ( 170.00 -0.749 0.0971) + ( 175.00 -0.374 0.0334) + ( 180.00 0.000 0.0198) +); diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/polyMesh/blockMeshDict b/exampleCases/example.ADM.ssc.timeTable/constant/polyMesh/blockMeshDict new file mode 100755 index 000000000..463f233e0 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/polyMesh/blockMeshDict @@ -0,0 +1,101 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../../setUp" + + + + +convertToMeters 1.0; + +vertices +( + ( $xMin $yMin $zMin) + ( $xMax $yMin $zMin) + ( $xMax $yMax $zMin) + ( $xMin $yMax $zMin) + ( $xMin $yMin $zMax) + ( $xMax $yMin $zMax) + ( $xMax $yMax $zMax) + ( $xMin $yMax $zMax) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + lower + { + type wall; + faces + ( + (0 3 2 1) + ); + } + upper + { + type wall; + faces + ( + (4 5 6 7) + ); + } + west + { + type patch; + faces + ( + (0 4 7 3) + ); + } + east + { + type patch; + faces + ( + (1 2 6 5) + ); + } + north + { + type wall; + faces + ( + (3 7 6 2) + ); + } + south + { + type wall; + faces + ( + (0 1 5 4) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/transportProperties b/exampleCases/example.ADM.ssc.timeTable/constant/transportProperties new file mode 100755 index 000000000..3ee719c86 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/transportProperties @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object transportProperties; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +transportModel Newtonian; + +// Molecular viscosity +nu nu [0 2 -1 0 0 0 0] $nu; + +// Reference temperature +TRef TRef [0 0 0 1 0 0 0] $TRef; + +// Prandtl numbers +Pr Pr [0 0 0 0 0 0 0] $Pr; +Prt Prt [0 0 0 0 0 0 0] $Prt; +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/turbineArrayProperties b/exampleCases/example.ADM.ssc.timeTable/constant/turbineArrayProperties new file mode 100755 index 000000000..2a7ce36af --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/turbineArrayProperties @@ -0,0 +1,79 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbineProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +globalProperties +{ + outputControl "timeStep"; +// outputControl "runTime"; + outputInterval 1; +} + +// _SSC_ +sscProperties +{ + sscEnabled true; //Enable or disable SSC. If sscProperties{} not present, defaults to 'false' + nInputsToSSC 3; // Number of inputs EACH turbine passes to the super controller + nOutputsFromSSC 2; // Number of outputs the super controller sends to EACH turbine + sscControllerType "timeTableSSC"; // The type of SSC + sscMeasurementsFunction "default"; // Measurements function +} + +turbine0 +{ + turbineType "NREL5MWRef"; + baseLocation (500.0 500.0 0.0); + nRadial 64; + azimuthMaxDis 2.0; + nAvgSector 1; + pointDistType "uniform"; + pointInterpType "linear"; + bladeUpdateType "oldPosition"; + epsilon 20.0; + forceScalar 1.0; + inflowVelocityScalar 0.94; + tipRootLossCorrType "Glauert"; + rotationDir "cw"; + Azimuth 0.0; + RotSpeed 9.15519863; + TorqueGen 0.0; + Pitch 0.0; + NacYaw 270.0; + fluidDensity 1.225; +} + +turbine1 +{ + turbineType "NREL5MWRef"; + baseLocation (1000.0 500.0 0.0); + nRadial 64; + azimuthMaxDis 2.0; + nAvgSector 1; + pointDistType "uniform"; + pointInterpType "linear"; + bladeUpdateType "oldPosition"; + epsilon 20.0; + forceScalar 1.0; + inflowVelocityScalar 0.94; + tipRootLossCorrType "Glauert"; + rotationDir "cw"; + Azimuth 0.0; + RotSpeed 9.15519863; + TorqueGen 0.0; + Pitch 0.0; + NacYaw 270.0; + fluidDensity 1.225; +} \ No newline at end of file diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/turbineProperties/NREL5MWRef b/exampleCases/example.ADM.ssc.timeTable/constant/turbineProperties/NREL5MWRef new file mode 100755 index 000000000..c51e9a8fd --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/turbineProperties/NREL5MWRef @@ -0,0 +1,122 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbineProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +NumBl 3; +TipRad 63.0; +HubRad 1.5; +UndSling 0.0; +OverHang -5.01910; +NacelleLength 8; +NacelleFrontalArea 2; +NacelleCd 0.5; +TowerHt 87.6; +Twr2Shft 1.96256; +ShftTilt -5.0; +PreCone (-2.5 -2.5 -2.5); +GBRatio 97.0; +GBEfficiency 1.0; +GenEfficiency 0.944; +RatedRotSpeed 12.1; +GenIner 534.116; +HubIner 115.926E3; +BladeIner 11.776047E6; +GenTorqueControllerType "fiveRegion"; +//GenTorqueControllerType "speedTorqueTable"; +//GenTorqueControllerType "none"; +BladePitchControllerType "PIDSC"; +//BladePitchControllerType "none"; +NacYawControllerType "yawSC"; +RotSpeedLimiter false; +GenTorqueRateLimiter true; +NacYawRateLimiter true; +BladePitchRateLimiter true; +SpeedFilterCornerFrequency 2.0; + + +GenTorqueControllerParams +{ + RateLimitGenTorque 15.0E3; + SpeedTorqueTable + ( + // gen speed (RPM) gen torque (N-m) + ( 670.00 0.0 ) + ( 871.00 20000.0 ) + ( 1161.96 32000.0 ) + ( 1173.70 43093.6 ) + ); + CutInGenSpeed 670.0; + Region2StartGenSpeed 871.0; + Region2EndGenSpeed 1161.963; + CutInGenTorque 0.0; + RatedGenTorque 43.09355E3; + KGen 2.55764E-2; +} + +BladePitchControllerParams +{ + RateLimitBladePitch 8.000; + PitchMin 0.000; + PitchMax 90.000; + PitchK 6.302336; + PitchControlKP 1.82620057; + PitchControlKI 0.78265750; + PitchControlKD 0.000; +} + +NacYawControllerParams +{ + RateLimitNacYaw 2.0; +} + + + + +Airfoils +( + "Cylinder1" + "Cylinder2" + "DU40_A17" + "DU35_A17" + "DU30_A17" + "DU25_A17" + "DU21_A17" + "NACA64_A17" +); + + + +BladeData +( +// radius(m) c(m) twist(deg) airfoil + (2.8667 3.542 13.308 0) + (5.6 3.854 13.308 0) + (8.3333 4.167 13.308 1) + (11.75 4.557 13.308 2) + (15.85 4.652 11.48 3) + (19.95 4.458 10.162 3) + (24.05 4.249 9.011 4) + (28.15 4.007 7.795 5) + (32.25 3.748 6.544 5) + (36.35 3.502 5.361 6) + (40.45 3.256 4.188 6) + (44.55 3.01 3.125 7) + (48.65 2.764 2.319 7) + (52.75 2.518 1.526 7) + (56.1667 2.313 0.863 7) + (58.9 2.086 0.37 7) + (61.6333 1.419 0.106 7) +); diff --git a/exampleCases/example.ADM.ssc.timeTable/constant/turbulenceProperties b/exampleCases/example.ADM.ssc.timeTable/constant/turbulenceProperties new file mode 100755 index 000000000..f8a545e0c --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/constant/turbulenceProperties @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// simulationType RASModel; + simulationType LESModel; +// simulationType laminar; + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/runscript.preprocess b/exampleCases/example.ADM.ssc.timeTable/runscript.preprocess new file mode 100755 index 000000000..51edac6ff --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/runscript.preprocess @@ -0,0 +1,155 @@ +#!/bin/bash +#PBS -N ADM_pisoFoam_preprocess +#PBS -l nodes=1:ppn=1 + + +# User Input. +OpenFOAMversion=2.4.x_SSC # OpenFOAM version +startTime=0 # Start time +updateBCType=0 # Boolean for whether or not the boundary condition types will be updated over + # what is in the initial conditions files. Leave it 0 for precursors. +inflowDir='west' # For inflow/outflow cases, specify the inflow direction. Choices are 'west', + # 'east', 'south', 'west', 'southWest', 'northWest', 'southEast', and + # 'northEast'. +refineMeshLocal=0 # Number of levels of local refinement (requires system/topoSetDict and + # system/refineHexMeshDict). +refineMeshGlobal=0 # Number of levels of global refinement. +parallel=0 # parallel untested! # Boolean for whether or not the preprocessing is run in parallel. +cores=1 # Enter the number of cores you will preprocess on. + + + + + + +# Define some functions for mesh refinement. +# Local refinement performed on one core. +refineMeshLocal() +{ + i=$1 + while [ $i -ge 1 ] + do + echo " -Performing level $i local refinement with topoSet/refineHexMesh" + echo " *selecting cells to refine..." + topoSet -dict system/topoSetDict.local.$i > log.topoSet.local.$i 2>&1 + + echo " *refining cells..." + refineHexMesh local -overwrite > log.refineHexMesh.local.$i 2>&1 + + let i=i-1 + done +} + +# Global refinement performed in parallel. +refineMeshGlobal() +{ + i=1 + while [ $i -le $1 ] + do + echo " -Performing level $i global refinement with refineMesh" + echo " *refining cells..." + mpirun -np $cores refineMesh -parallel -overwrite > log.refineMesh.global.$i 2>&1 + + let i=i+1 + done +} + + +# If running in parallel, cd to job launch directory +if [ $parallel -eq 1 ] + then + cd $PBS_O_WORKDIR +fi + + +# Source the bash profile and then call the appropriate OpenFOAM version function +# so that all the modules and environment variables get set. +echo "Sourcing the bash profile, loading modules, and setting the OpenFOAM environment variables..." +source $HOME/.bash_profile +OpenFOAM-$OpenFOAMversion + + +# Copy the controlDict.1 (assuming this is the one the actual solver will start +# out with) to controlDict. OpenFOAM reads "controlDict", not the numbered ones. +echo "Getting the control dictionary ready..." +cp system/controlDict.1 system/controlDict + + +# Copy the "clean" .original initial fields to a working copy. OpenFOAM does not +# read the ".original" initial fields--that's why they remain clean. +echo "Getting the initial condition directory ready..." +rm -rf $startTime +cp -rf $startTime.original $startTime + + +# Build the mesh. +echo "Using blockMesh to create the base mesh..." +cp constant/polyMesh/blockMeshDict ./ +rm -rf constant/polyMesh/* +mv ./blockMeshDict constant/polyMesh +blockMesh > log.blockMesh 2>&1 + + +# The initial fields come from the precursor which is periodic on all sides. The turbine +# case has inflow and outflow. Call the changeDictionary utility to make the south and +# north sides inflow and outflow. +if [ $updateBCType -eq 1 ] + then + echo "Using changeDictionary to update boundary conditions..." + changeDictionary -dict system/changeDictionaryDict.updateBCs.$inflowDir > log.changeDictionary.updateBCs.$inflowDir.1 2>&1 +fi + + +# Do serial local refinement +echo "Using refineHexMesh to perform " $refineMeshLocal " of local refinement..." +refineMeshLocal $refineMeshLocal + + +# If running in paralle from this point forward, then do the following: +if [ $cores -gt 1 ] + then + # Decompose the mesh and solution files (serial) + echo "Using decomposePar to decompose the problem for parallel processing..." + decomposePar -cellDist -force > log.decomposePar 2>&1 + + # Check the mesh + echo "Running checkMesh to report mesh diagnostics..." + mpirun -np $cores checkMesh -parallel > log.checkMesh.1 2>&1 + + # Perform global refinement to desired resolution. + echo "Using refineMesh to perform " $refineMeshGlobal " of global refinement..." + refineMeshGlobal $refineMeshGlobal + + # The mesh got globally refined, but the solution file did not, so + # the boundary fields may not have the correct number of entries. + # Use the changeDictionary utility to overwrite the spatially varying + # boundary data to a uniform single value. + if [ $updateBCType -eq 1 ] + then + echo "Using changeDictionary to ensure that the boundaries have the correct number of faces..." + mpirun -np $cores changeDictionary -dict system/changeDictionaryDict.updateBCs.$inflowDir -parallel > log.changeDictionary.updateBCs.$inflowDir.1 2>&1 + fi + + # Renumber the mesh for better matrix solver performance. + echo "Using renumberMesh to renumber the mesh for better matrix conditioning..." + mpirun -np $cores renumberMesh -parallel -overwrite > log.renumberMesh 2>&1 + + # Do one last check on the mesh. + echo "Running checkMesh to report mesh diagnostics..." + mpirun -np $cores checkMesh -parallel > log.checkMesh.3 2>&1 + + +# Otherwise, run in serial as follows: +else + # Renumber the mesh. + echo "Using renumberMesh to renumber the mesh for better matrix conditioning..." + renumberMesh -overwrite > log.renumberMesh 2>&1 + + # Decompose the mesh and solution files (serial) + echo "Using decomposePar to decompose the problem for parallel processing..." + decomposePar -cellDist -force > log.decomposePar 2>&1 + + # Check the mesh. + echo "Running checkMesh to report mesh diagnostics..." + checkMesh > log.checkMesh.1 2>&1 +fi diff --git a/exampleCases/example.ADM.ssc.timeTable/runscript.removeAll b/exampleCases/example.ADM.ssc.timeTable/runscript.removeAll new file mode 100755 index 000000000..463332f98 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/runscript.removeAll @@ -0,0 +1,21 @@ +#!/bin/bash + +# Remove initial conditions and temporary files +rm -rf 0 +rm -rf system/controlDict + +# Remove logs +rm -rf log.* +rm -rf runscript.solve.1.o* runscript.solve.1.e* + +# Remove processor files and folders +rm -rf processor* + +# Remove simulation output +rm -rf postProcessing +rm -rf turbineOutput + +# Remove polyMesh data +cp constant/polyMesh/blockMeshDict ./ +rm -rf constant/polyMesh/* +mv ./blockMeshDict constant/polyMesh \ No newline at end of file diff --git a/exampleCases/example.ADM.ssc.timeTable/runscript.solve.1 b/exampleCases/example.ADM.ssc.timeTable/runscript.solve.1 new file mode 100755 index 000000000..94a4be63b --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/runscript.solve.1 @@ -0,0 +1,40 @@ +#!/bin/bash +#PBS -l walltime=48:00:00 +#PBS -l nodes=1:ppn=8 +#PBS -N "ADM.ssc.timeTable" + + + +cd $PBS_O_WORKDIR + + + + +# User Input. +OpenFOAMversion=2.4.x_SSC # OpenFOAM version +startTime=0 # Start time +cores=8 # Enter the number of cores you will preprocess on. +runNumber=1 # Enter the run number (useful for keeping track of restarts). +solver=pisoFoamTurbine.ADM # Enter the name of the flow solver. + + + +echo "Starting OpenFOAM job at: " $(date) +echo "using " $cores " cores" + + +# Source the bash profile and then call the appropriate OpenFOAM version function +# so that all the modules and environment variables get set. +echo "Sourcing the bash profile, loading modules, and setting the OpenFOAM environment variables..." +source $HOME/.bash_profile +OpenFOAM-$OpenFOAMversion + + +# Get the control dictionary for this particular run. +cp system/controlDict.$runNumber system/controlDict + + +# Run the solver. +mpirun -np $cores $solver -parallel > log.$runNumber.$solver 2>&1 + +echo "Ending OpenFOAM job at: " $(date) \ No newline at end of file diff --git a/exampleCases/example.ADM.ssc.timeTable/setUp b/exampleCases/example.ADM.ssc.timeTable/setUp new file mode 100755 index 000000000..d8b785305 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/setUp @@ -0,0 +1,93 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.4.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +// Domain size and number of cells. +xMin 0.0; // Minimum x-extent of domain (m). +yMin 0.0; // Minimum y-extent of domain (m). +zMin 0.0; // Minimum z-extent of domain (m). +xMax 1500.0; // Maximum x-extent of domain (m). +yMax 1000.0; // Maximum y-extent of domain (m). +zMax 1000.0; // Maximum z-extent of domain (m). +nx 100; // Number of cells in x-direction. +ny 66; // Number of cells in y-direction. +nz 66; // Number of cells in z-direction. + + + + +// Number of cores and domain decomposition information. +nCores 8; // Number of cores on which to run this case. +decompType simple; // Decomposition algorithm. "simple" and "scotch" are good choices. +decompOrder (4 2 1); // Order of the decomposition number of partitions in (x y z)-directions. + + + + +// Planar averaging and source term statistics options. +statisticsOn true; // Gather planar-averaged flow statistics. +statisticsFrequency 5; // Frequency in time steps of statistics gathering. + + + + +// Initial values for the variables. +// Note that U and T get overwritten if setFieldsABL is called. +U0Mag 8.00; // Initial condition for wind speed (m/s). +dir 270.0; // Initial condition for wind direction (deg). +windHeight 90.0; // Height at which to drive mean wind to U0Mag/dir (m). +p_rgh0 0.0; // Initial pressure (minus the hydrostatic variation and normalized by density) (m^2/s^2). +nuSgs0 0.0; // Initial SGS viscosity (m^2/s). +k0 0.1; // Initial SGS turbulent kinetic energy (m^2/s^2). +kappat0 0.0; // Initial SGS temperature diffusivity (m^2/s). +TGradUpper 0.003; // Potential temperature gradient above the strong inversion (K/m). +zInversion 750.0; // Height of the middle of the initial strong capping inversion (m). +inversionWidth 100.0; // Vertical width of the intial strong capping inversion (m). +TBottom 300.0; // Initial potential temperature at bottom of strong capping inversion (K). +TTop 305.0; // Initial potential temperature at top of strong capping inversion (K). + + + + +// General conditions and parameters. +Pr 0.7; // Molecular Prandtl number. +Prt 0.33333333; // Turbulent Prandtl number. +nu 1.0E-5; // Molecular viscosity (m^2/s). +TRef 300.0; // Reference potential temperature (K). +latitude 41.3; // Latitude on the Earth of the site (deg). +EarthPeriod 24.0; // Earth's rotation period (hr). + + + + +// SGS model inputs. +LESModel oneEqEddy; // SGS model selection. +ce 0.93; // SGS model constant. +ck 0.0673; // SGS model constant. + + + + +// Surface conditions. +qwall (0.0 0.0 0.0); // Temperature flux at wall (modify the z-value). A negative value is flux into domain (K-m/s). +Rwall (0.0 0.0 0.0 0.0 0.0 0.0); // Initial wall shear stress (m^2/s^2). +kappa 0.4; // von Karman constant. +z0 0.01; // Surface roughness (m). +betaM 16.0; // Monin-Obukhov wall shear stress model constant. +gammaM 5.0; // Monin-Obukhov wall shear stress model constant. +betaH 9.0; // Monin-Obukhov wall temperature flux model constant. +gammaH 7.8; // Monin-Obukhov wall temperature flux model constant. +alphaH 1.0; // Monin-Obukhov wall temperature flux model constant. +heatingRate 0.0; // Surface temperature change rate (when not directly setting temperature flux) (K/s). + + + + +#inputMode merge + +// ************************************************************************* // + diff --git a/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs new file mode 100755 index 000000000..b4ab16ba4 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.cyclic b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.cyclic new file mode 100755 index 000000000..9d7df3a40 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.cyclic @@ -0,0 +1,238 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + U + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + k + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + kappat + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + nuSgs + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + p_rgh + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.east b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.east new file mode 100755 index 000000000..75ea86de5 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.east @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.north b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.north new file mode 100755 index 000000000..ab34b5c5a --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.north @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + south + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + south + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + south + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + north + { + type fixedFluxPressure; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.northeast b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.northeast new file mode 100755 index 000000000..9ef569c78 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.northeast @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + south + { + type zeroGradient; + value uniform 300; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + south + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + south + { + type zeroGradient; + value uniform 0.1; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + north + { + type fixedFluxPressure; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.northwest b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.northwest new file mode 100755 index 000000000..f62b02acb --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.northwest @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + south + { + type zeroGradient; + value uniform 300; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + east + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + south + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + south + { + type zeroGradient; + value uniform 0.1; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + east + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + north + { + type fixedFluxPressure; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedFluxPressure; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.south b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.south new file mode 100755 index 000000000..b4ab16ba4 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.south @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.southeast b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.southeast new file mode 100755 index 000000000..88a7ebf76 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.southeast @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.southwest b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.southwest new file mode 100755 index 000000000..6e9078e8e --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.southwest @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + east + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + east + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedFluxPressure; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.west b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.west new file mode 100755 index 000000000..7dec20912 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/changeDictionaryDict.updateBCs.west @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + east + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + east + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + west + { + type fixedFluxPressure; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/controlDict.1 b/exampleCases/example.ADM.ssc.timeTable/system/controlDict.1 new file mode 100755 index 000000000..92a8952aa --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/controlDict.1 @@ -0,0 +1,66 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + application ABLSolver; + + libs ("libuserfiniteVolume.so" "libuserincompressibleLESModels.so"); + + startFrom startTime; + + startTime 0.0; + + stopAt endTime; + + endTime 1000.0; + + deltaT 0.5; + + writeControl adjustableRunTime; + + writeInterval 99000.0; + + purgeWrite 0; + + writeFormat ascii; + + writePrecision 8; + + writeCompression compressed; + + timeFormat general; + + timePrecision 8; + + runTimeModifiable yes; + + adjustTimeStep no; + + maxCo 0.75; + + maxDeltaT 25.0; + + startTimeMean 1000.0; + + startTimeCorr 1000.0; + + functions + { + #include "sampling/sliceDataInstantaneous" + } + +// ************************************************************************* // + diff --git a/exampleCases/example.ADM.ssc.timeTable/system/decomposeParDict b/exampleCases/example.ADM.ssc.timeTable/system/decomposeParDict new file mode 100755 index 000000000..c7bea2ee8 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/decomposeParDict @@ -0,0 +1,76 @@ +/*-------------------------------*- C++ -*---------------------------------*\ +| ========= | +| \\ / OpenFOAM | +| \\ / | +| \\ / The Open Source CFD Toolbox | +| \\/ http://www.OpenFOAM.org | +\*-------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + location "system"; + object decomposeParDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +numberOfSubdomains $nCores; +method $decompType; +//preservePatches (north south east west); + +simpleCoeffs +{ + n $decompOrder; + delta 0.001; +} + +hierarchicalCoeffs +{ + n (1 1 3); + delta 0.001; + order xyz; +} + +metisCoeffs +{ + processorWeights + ( + ); +} + +scotchCoeffs +{ + //processorWeights + //( + // 1 + // 1 + // 1 + // 1 + //); + //writeGraph true; + //strategy "b"; +} + +manualCoeffs +{ + dataFile "decompositionData"; +} + + +//// Is the case distributed +distributed no; +//// Per slave (so nProcs-1 entries) the directory above the case. +//roots +//( +// "/tmp" +// "/tmp" +//); + + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/fvSchemes b/exampleCases/example.ADM.ssc.timeTable/system/fvSchemes new file mode 100755 index 000000000..ead2aeb21 --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/fvSchemes @@ -0,0 +1,85 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default backward; +// default CrankNicolson 1.0; +} + +gradSchemes +{ + default Gauss linear; + grad(U) Gauss linear; +} + +divSchemes +{ + default Gauss linear; + //div(phi,U) Gauss linear; + //div(phi,T) Gauss linear; + div(phi,U) Gauss localBlended linear upwind; + div(phi,T) Gauss localBlended linear upwind; + div(R) Gauss linear; + div(U) Gauss linear; + div((nuEff*dev(grad(U).T()))) Gauss linear; + div(B) Gauss linear; + div(phi,B) Gauss linear; + div(phi,k) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; + laplacian(rUA,p) Gauss linear uncorrected; + laplacian((1|A(U)),p) Gauss linear uncorrected; + laplacian(interpolate((1|A(U))),p) Gauss linear uncorrected; + laplacian(interpolate((1|A(U))),pd) Gauss linear uncorrected; + laplacian(nu,U) Gauss linear uncorrected; + laplacian(nuEff,U) Gauss linear uncorrected; + laplacian(kappaEff,T) Gauss linear uncorrected; + laplacian(DBEff,B) Gauss linear uncorrected; + laplacian(nuSgs,U) Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +fluxRequired +{ + default no; + p ; +} + +schemeBlending +{ + xBlending1 -10.0; + xBlending2 0.0; + xBlending3 60.0; + xBlending4 70.0; + blendingFactor1 0.85; + blendingFactor2 1.00; +} + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/fvSolution b/exampleCases/example.ADM.ssc.timeTable/system/fvSolution new file mode 100755 index 000000000..b3f1a7e4a --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/fvSolution @@ -0,0 +1,102 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "(p_rgh|p)" + { + solver PCG; + preconditioner + { + preconditioner GAMG; + tolerance 1e-05; + relTol 0.01; + smoother DICGaussSeidel; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 100; + agglomerator faceAreaPair; + mergeLevels 2; + } + tolerance 1e-06; + relTol 0.01; + maxIter 1000; + } + + "(p_rghFinal|pFinal)" + { + $p; + relTol 0.0; + } + + "(U|T|k|epsilon|R)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + maxIter 1000; + } + + "(U|T|k|epsilon|R)Final" + { + $U; + relTol 0.0; + } + + "(flm|fmm)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + } + + "(flm|fmm)Final" + { + $flm; + relTol 0.0; + } + + +} + +PISO +{ + momentumPredictor yes; + nOuterCorrectors 1; + nCorrectors 3; + nNonOrthogonalCorrectors 0; + pRefPoint (-39.0 0 11.5); + pRefValue 0; +} + +relaxationFactors +{ + fields + { + } + equations + { + "(U|T|k|epsilon|R)" 1.0; + "(U|T|k|epsilon|R)Final" 1.0; + } +} + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.timeTable/system/sampling/sliceDataInstantaneous b/exampleCases/example.ADM.ssc.timeTable/system/sampling/sliceDataInstantaneous new file mode 100755 index 000000000..d80b1da9d --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/sampling/sliceDataInstantaneous @@ -0,0 +1,59 @@ + sliceDataInstantaneous + { + type surfaces; + functionObjectLibs ("libsampling.so"); + enabled true; + interpolationScheme cell; + outputControl adjustableTime; + writeInterval 5; + surfaceFormat vtk; + fields + ( + U + ); + surfaces + ( + slice_horizontal + { + type plane; + basePoint (1500.01 1500.01 90.01); + normalVector (0 0 1); + triangulate false; + } + slice_vertical_x500 + { + type plane; + basePoint (500.01 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x3D + { + type plane; + basePoint (1379.2 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x5D + { + type plane; + basePoint (1632.0 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x7D + { + type plane; + basePoint (1884.8 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x10D + { + type plane; + basePoint (2264.0 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + ); + } diff --git a/exampleCases/example.ADM.ssc.timeTable/system/setFieldsABLDict b/exampleCases/example.ADM.ssc.timeTable/system/setFieldsABLDict new file mode 100755 index 000000000..11b48e0bc --- /dev/null +++ b/exampleCases/example.ADM.ssc.timeTable/system/setFieldsABLDict @@ -0,0 +1,504 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object setFieldsABLDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +// Extents of the domain. +xMin $xMin; +yMin $yMin; +zMin $zMin; + +xMax $xMax; +yMax $yMax; +zMax $zMax; + +zRef $zMax; + +// Specify if distance from wall should be used as z. +useWallDistZ false; +scaleVelocityWithHeight false; + + +// Specify how to initialze the base velocity and temperature profile. +velocityInitType "table"; +//velocityInitType "log"; +//velocityInitType "geostrophic"; +temperatureInitType "table"; +//temperatureInitType "simple"; + +// Maximum perturbation of streamwise/spanwise flow near surface. +deltaU 0.25; +deltaV 0.25; + +// Total periods of perturbations in streamwise/spanwise in the domain. +Uperiods 12.0; +Vperiods 12.0; + +// Percentage of domain height (zMax) where peak in perturbation +// magnitude occurs. +zPeak 0.015; + +// Initial height of the center of the capping inversion. +zInversion $zInversion; + +// Width of the capping inversion. +widthInversion $inversionWidth; + +// Potential temperature at the bottom and top of the capping inversion. +Tbottom $TBottom; +Ttop $TTop; + +// Maximum temperature fluctuation size below capping inversion. +TPrimeScale 0.0; + +// Height rate of change of potential temperature above the inversion. +dTdz $TGradUpper; + +// Geostrophic wind speed magnitude. +Ug $U0Mag; + +// Geostrophic wind speed direction. +UgDir $dir; + +// Aerodynamic roughness height of surface. +z0 $z0; + +// von Karman constant. +kappa $kappa; + +// Vertical profile table. +profileTable +( +// z U V T + (0.0 0.0 0.0 273.121917725) + (5.0 1.82671529027 1.98969371553 282.524156211) + (10.0 2.52983624172 2.77228242751 283.156504284) + (15.0 3.01282071998 3.35521702288 283.64108812) + (20.0 3.35996148006 3.78823607698 284.090761147) + (25.0 3.8038057643 4.37960852586 284.554077196) + (30.0 4.03596125279 4.70538923119 284.966777157) + (35.0 4.38133296535 5.23253766126 285.360167677) + (40.0 4.56992779673 5.53523659867 285.747101612) + (45.0 4.80994398595 5.96180841679 286.095879197) + (50.0 5.00816921409 6.32774876853 286.444585293) + (55.0 5.14154903327 6.60160807137 286.787914506) + (60.0 5.36818530188 7.08896005703 287.063199891) + (65.0 5.44703987742 7.27484159809 287.379906732) + (70.0 5.57604433164 7.60608624795 287.638417176) + (75.0 5.72370142776 7.99632935101 287.863981004) + (80.0 5.77619905069 8.15139018101 288.127106742) + (85.0 5.87149793296 8.46369430537 288.331005696) + (90.0 5.98111916718 8.83268873958 288.509035882) + (95.0 6.01697152506 8.97407895539 288.724664101) + (100.0 6.06967854005 9.19927028309 288.909565287) + (105.0 6.1450628792 9.53721293929 289.053124377) + (110.0 6.19167607924 9.76288104253 289.198531813) + (115.0 6.22489630605 9.93628531022 289.344799656) + (120.0 6.27421288656 10.216282683 289.462005) + (125.0 6.32645248876 10.5156368594 289.57393273) + (130.0 6.34668810144 10.6457361726 289.712125634) + (135.0 6.36434613795 10.762203832 289.852433913) + (140.0 6.39842793739 11.0196195883 289.95191863) + (145.0 6.4342454375 11.2919310606 290.047089019) + (150.0 6.45180421766 11.4367005351 290.150649381) + (155.0 6.46406875681 11.544488333 290.256642472) + (160.0 6.48170756073 11.7056278368 290.348224267) + (165.0 6.50382814701 11.9112591447 290.427787992) + (170.0 6.52550956366 12.1127414485 290.506470121) + (175.0 6.54550549533 12.298300329 290.581768788) + (180.0 6.56550142701 12.4838592096 290.657067454) + (185.0 6.58511534034 12.6567515091 290.735008491) + (190.0 6.6045979288 12.8252894701 290.813857884) + (195.0 6.62432001649 12.9896812983 290.892328604) + (200.0 6.64532587961 13.1318488244 290.968769537) + (205.0 6.66633174272 13.2740163505 291.045210471) + (210.0 6.69104111181 13.4098514016 291.117435921) + (215.0 6.72036475996 13.5377966838 291.184409209) + (220.0 6.74968840812 13.6657419659 291.251382497) + (225.0 6.77805691412 13.7640369251 291.318657013) + (230.0 6.80578882059 13.8425700289 291.386132296) + (235.0 6.83352072706 13.9211031327 291.453607578) + (240.0 6.86307156947 13.9862481909 291.518273832) + (245.0 6.89380511232 14.0426881336 291.581113612) + (250.0 6.92453865516 14.0991280764 291.643953391) + (255.0 6.95361693104 14.1462680315 291.704700258) + (260.0 6.98077095142 14.1825967081 291.763014104) + (265.0 7.0079249718 14.2189253847 291.82132795) + (270.0 7.03507703408 14.2541299666 291.879606535) + (275.0 7.0622194383 14.283790106 291.937711201) + (280.0 7.08936184253 14.3134502454 291.995815867) + (285.0 7.11650424675 14.3431103848 292.053920533) + (290.0 7.1430391081 14.369131837 292.11328027) + (295.0 7.16932392788 14.3936557439 292.173156546) + (300.0 7.19560874767 14.4181796507 292.233032822) + (305.0 7.22180906756 14.4424461024 292.292838021) + (310.0 7.24680913749 14.4630556198 292.351633627) + (315.0 7.27180920741 14.4836651372 292.410429232) + (320.0 7.29680927734 14.5042746546 292.469224837) + (325.0 7.32153609499 14.5243042572 292.528664796) + (330.0 7.34543057757 14.5425674214 292.590067475) + (335.0 7.36932506015 14.5608305855 292.651470155) + (340.0 7.39321954273 14.5790937496 292.712872834) + (345.0 7.41696733387 14.597025575 292.773542958) + (350.0 7.44026003553 14.6139294685 292.831940429) + (355.0 7.46355273718 14.6308333621 292.890337899) + (360.0 7.48684543884 14.6477372556 292.94873537) + (365.0 7.51013186129 14.6646271523 293.007149353) + (370.0 7.53322339247 14.68108262 293.066075821) + (375.0 7.55631492366 14.6975380877 293.12500229) + (380.0 7.57940645484 14.7139935554 293.183928758) + (385.0 7.60249798603 14.7304490231 293.242855226) + (390.0 7.6257582057 14.7463924565 293.301506178) + (395.0 7.64912373233 14.7620162427 293.359985132) + (400.0 7.67248925896 14.7776400289 293.418464087) + (405.0 7.69585478559 14.7932638151 293.476943042) + (410.0 7.71922031222 14.8088876013 293.535421996) + (415.0 7.74300228036 14.8230663689 293.592791002) + (420.0 7.7667927399 14.8372156721 293.650137374) + (425.0 7.79058319945 14.8513649753 293.707483747) + (430.0 7.81437365899 14.8655142784 293.76483012) + (435.0 7.83815083397 14.8793492717 293.821767406) + (440.0 7.86181714661 14.8905612872 293.875290779) + (445.0 7.88548345926 14.9017733027 293.928814153) + (450.0 7.9091497719 14.9129853182 293.982337526) + (455.0 7.93281608455 14.9241973336 294.035860899) + (460.0 7.95648239719 14.9354093491 294.089384273) + (465.0 7.97905964048 14.9423301431 294.14128451) + (470.0 8.0016312311 14.9492286641 294.193176323) + (475.0 8.02420282171 14.956127185 294.245068135) + (480.0 8.04677441233 14.9630257059 294.296959948) + (485.0 8.06934600294 14.9699242269 294.34885176) + (490.0 8.0912068028 14.9742300558 294.40025773) + (495.0 8.11235909886 14.9759515346 294.45117942) + (500.0 8.13351139492 14.9776730134 294.502101111) + (505.0 8.15466369098 14.9793944922 294.553022801) + (510.0 8.17581598704 14.981115971 294.603944491) + (515.0 8.19696828309 14.9828374498 294.654866181) + (520.0 8.21724149816 14.9808198644 294.704354156) + (525.0 8.2364694612 14.9743564264 294.752137402) + (530.0 8.25569742424 14.9678929884 294.799920649) + (535.0 8.27492538727 14.9614295505 294.847703896) + (540.0 8.29415335031 14.9549661125 294.895487143) + (545.0 8.31338131334 14.9485026745 294.943270389) + (550.0 8.33260927638 14.9420392365 294.991053636) + (555.0 8.35050488468 14.9266129312 295.036341098) + (560.0 8.36808840645 14.9090871924 295.081043956) + (565.0 8.38567192822 14.8915614535 295.125746813) + (570.0 8.40325544999 14.8740357147 295.170449671) + (575.0 8.42083897176 14.8565099758 295.215152528) + (580.0 8.43842249352 14.838984237 295.259855386) + (585.0 8.45600601529 14.8214584982 295.304558243) + (590.0 8.47264685758 14.7968218302 295.348171206) + (595.0 8.48834031368 14.765038729 295.390688832) + (600.0 8.50403376979 14.7332556278 295.433206459) + (605.0 8.51972722589 14.7014725265 295.475724085) + (610.0 8.53542068199 14.6696894253 295.518241712) + (615.0 8.55111413809 14.6379063241 295.560759338) + (620.0 8.56680759419 14.6061232229 295.603276965) + (625.0 8.5825010503 14.5743401216 295.645794591) + (630.0 8.59715715424 14.5346556613 295.689519112) + (635.0 8.61058749747 14.4856347615 295.734669729) + (640.0 8.62401784069 14.4366138617 295.779820347) + (645.0 8.63744818391 14.3875929619 295.824970964) + (650.0 8.65087852713 14.338572062 295.870121581) + (655.0 8.66430887036 14.2895511622 295.915272198) + (660.0 8.67773921358 14.2405302624 295.960422815) + (665.0 8.6911695568 14.1915093626 296.005573433) + (670.0 8.70459990003 14.1424884628 296.05072405) + (675.0 8.71498597608 14.0837507537 296.096336227) + (680.0 8.72352399234 14.0191143362 296.142228601) + (685.0 8.7320620086 13.9544779188 296.188120975) + (690.0 8.74060002486 13.8898415013 296.234013348) + (695.0 8.74913804112 13.8252050838 296.279905722) + (700.0 8.75767605739 13.7605686663 296.325798096) + (705.0 8.76621407365 13.6959322489 296.371690469) + (710.0 8.77475208991 13.6312958314 296.417582843) + (715.0 8.78329010617 13.5666594139 296.463475217) + (720.0 8.79182812243 13.5020229965 296.50936759) + (725.0 8.79189547444 13.4277463368 296.562527014) + (730.0 8.79098910472 13.3523615098 296.616521801) + (735.0 8.79008273499 13.2769766828 296.670516587) + (740.0 8.78917636527 13.2015918559 296.724511374) + (745.0 8.78826999555 13.1262070289 296.778506161) + (750.0 8.78736362582 13.0508222019 296.832500948) + (755.0 8.7864572561 12.9754373749 296.886495735) + (760.0 8.78555088638 12.9000525479 296.940490522) + (765.0 8.78464451665 12.824667721 296.994485308) + (770.0 8.78373814693 12.749282894 297.048480095) + (775.0 8.78092431283 12.6731698157 297.101321687) + (780.0 8.77050848097 12.594154369 297.149567342) + (785.0 8.76009264911 12.5151389222 297.197812997) + (790.0 8.74967681725 12.4361234755 297.246058652) + (795.0 8.73926098539 12.3571080288 297.294304307) + (800.0 8.72884515353 12.278092582 297.342549962) + (805.0 8.71842932167 12.1990771353 297.390795617) + (810.0 8.70801348981 12.1200616885 297.439041272) + (815.0 8.69759765795 12.0410462418 297.487286927) + (820.0 8.68718182609 11.9620307951 297.535532582) + (825.0 8.67676599423 11.8830153483 297.583778237) + (830.0 8.66635016237 11.8039999016 297.632023892) + (835.0 8.65380285705 11.7267327361 297.688031136) + (840.0 8.63847548104 11.6517458454 297.754161782) + (845.0 8.62314810503 11.5767589547 297.820292429) + (850.0 8.60782072902 11.5017720641 297.886423076) + (855.0 8.59249335301 11.4267851734 297.952553722) + (860.0 8.57716597701 11.3517982828 298.018684369) + (865.0 8.561838601 11.2768113921 298.084815016) + (870.0 8.54651122499 11.2018245015 298.150945663) + (875.0 8.53118384898 11.1268376108 298.217076309) + (880.0 8.51585647297 11.0518507201 298.283206956) + (885.0 8.50052909696 10.9768638295 298.349337603) + (890.0 8.48520172096 10.9018769388 298.41546825) + (895.0 8.46987434495 10.8268900482 298.481598896) + (900.0 8.45883220551 10.7541011047 298.547345535) + (905.0 8.45238242046 10.6836676328 298.612680644) + (910.0 8.44593263542 10.6132341608 298.678015753) + (915.0 8.43948285037 10.5428006888 298.743350863) + (920.0 8.43303306533 10.4723672168 298.808685972) + (925.0 8.42658328028 10.4019337449 298.874021081) + (930.0 8.42013349524 10.3315002729 298.93935619) + (935.0 8.41368371019 10.2610668009 299.004691299) + (940.0 8.40723392515 10.190633329 299.070026409) + (945.0 8.4007841401 10.120199857 299.135361518) + (950.0 8.39433435506 10.049766385 299.200696627) + (955.0 8.38788457001 9.97933291304 299.266031736) + (960.0 8.38143478497 9.90889944107 299.331366845) + (965.0 8.37498499992 9.8384659691 299.396701955) + (970.0 8.37175628862 9.76984547069 299.458148741) + (975.0 8.3787220489 9.70696290595 299.507289259) + (980.0 8.38568780918 9.64408034121 299.556429777) + (985.0 8.39265356946 9.58119777647 299.605570296) + (990.0 8.39961932974 9.51831521173 299.654710814) + (995.0 8.40658509002 9.45543264699 299.703851332) + (1000.0 8.4135508503 9.39255008225 299.752991851) + (1005.0 8.42051661058 9.32966751751 299.802132369) + (1010.0 8.42748237086 9.26678495277 299.851272887) + (1015.0 8.43444813113 9.20390238803 299.900413405) + (1020.0 8.44141389141 9.14101982329 299.949553924) + (1025.0 8.44837965169 9.07813725854 299.998694442) + (1030.0 8.45534541197 9.0152546938 300.04783496) + (1035.0 8.46231117225 8.95237212906 300.096975478) + (1040.0 8.46927693253 8.88948956432 300.146115997) + (1045.0 8.47624269281 8.82660699958 300.195256515) + (1050.0 8.48495783258 8.77319458603 300.238852282) + (1055.0 8.49495774699 8.72673721576 300.278375887) + (1060.0 8.5049576614 8.6802798455 300.317899492) + (1065.0 8.51495757581 8.63382247523 300.357423097) + (1070.0 8.52495749023 8.58736510496 300.396946702) + (1075.0 8.53495740464 8.5409077347 300.436470307) + (1080.0 8.54495731905 8.49445036443 300.475993912) + (1085.0 8.55495723346 8.44799299416 300.515517517) + (1090.0 8.56495714787 8.4015356239 300.555041122) + (1095.0 8.57495706228 8.35507825363 300.594564727) + (1100.0 8.58495697669 8.30862088336 300.634088332) + (1105.0 8.5949568911 8.2621635131 300.673611937) + (1110.0 8.60495680552 8.21570614283 300.713135542) + (1115.0 8.61495671993 8.16924877256 300.752659147) + (1120.0 8.62495663434 8.1227914023 300.792182752) + (1125.0 8.63495654875 8.07633403203 300.831706357) + (1130.0 8.64495646316 8.02987666176 300.871229962) + (1135.0 8.65360052964 7.98996489564 300.907704255) + (1140.0 8.65972902324 7.96219751809 300.938521005) + (1145.0 8.66585751685 7.93443014055 300.969337756) + (1150.0 8.67198601045 7.906662763 301.000154506) + (1155.0 8.67811450406 7.87889538546 301.030971256) + (1160.0 8.68424299766 7.85112800791 301.061788006) + (1165.0 8.69037149126 7.82336063037 301.092604757) + (1170.0 8.69649998487 7.79559325282 301.123421507) + (1175.0 8.70262847847 7.76782587527 301.154238257) + (1180.0 8.70875697208 7.74005849773 301.185055007) + (1185.0 8.71488546568 7.71229112018 301.215871758) + (1190.0 8.72101395929 7.68452374264 301.246688508) + (1195.0 8.72714245289 7.65675636509 301.277505258) + (1200.0 8.7332709465 7.62898898755 301.308322009) + (1205.0 8.7393994401 7.60122161 301.339138759) + (1210.0 8.74552793371 7.57345423246 301.369955509) + (1215.0 8.75165642731 7.54568685491 301.400772259) + (1220.0 8.75778492092 7.51791947737 301.43158901) + (1225.0 8.76391341452 7.49015209982 301.46240576) + (1230.0 8.76818252215 7.46990516883 301.489568668) + (1235.0 8.76988179508 7.46005215541 301.511681645) + (1240.0 8.771581068 7.45019914198 301.533794623) + (1245.0 8.77328034093 7.44034612856 301.5559076) + (1250.0 8.77497961385 7.43049311513 301.578020578) + (1255.0 8.77667888677 7.42064010171 301.600133555) + (1260.0 8.7783781597 7.41078708828 301.622246532) + (1265.0 8.78007743262 7.40093407485 301.64435951) + (1270.0 8.78177670555 7.39108106143 301.666472487) + (1275.0 8.78347597847 7.381228048 301.688585464) + (1280.0 8.7851752514 7.37137503458 301.710698442) + (1285.0 8.78687452432 7.36152202115 301.732811419) + (1290.0 8.78857379725 7.35166900773 301.754924397) + (1295.0 8.79027307017 7.3418159943 301.777037374) + (1300.0 8.7919723431 7.33196298088 301.799150351) + (1305.0 8.79367161602 7.32210996745 301.821263329) + (1310.0 8.79537088895 7.31225695402 301.843376306) + (1315.0 8.79707016187 7.3024039406 301.865489283) + (1320.0 8.79876943479 7.29255092717 301.887602261) + (1325.0 8.80046870772 7.28269791375 301.909715238) + (1330.0 8.80216798064 7.27284490032 301.931828216) + (1335.0 8.80345002487 7.27037429336 301.950702634) + (1340.0 8.80449597234 7.27208116099 301.967744453) + (1345.0 8.8055419198 7.27378802862 301.984786271) + (1350.0 8.80658786727 7.27549489624 302.00182809) + (1355.0 8.80763381473 7.27720176387 302.018869908) + (1360.0 8.8086797622 7.2789086315 302.035911727) + (1365.0 8.80972570966 7.28061549913 302.052953545) + (1370.0 8.81077165713 7.28232236676 302.069995364) + (1375.0 8.81181760459 7.28402923439 302.087037182) + (1380.0 8.81286355206 7.28573610202 302.104079001) + (1385.0 8.81390949952 7.28744296965 302.121120819) + (1390.0 8.81495544699 7.28914983727 302.138162638) + (1395.0 8.81600139445 7.2908567049 302.155204456) + (1400.0 8.81704734192 7.29256357253 302.172246275) + (1405.0 8.81809328938 7.29427044016 302.189288094) + (1410.0 8.81913923685 7.29597730779 302.206329912) + (1415.0 8.82018518431 7.29768417542 302.223371731) + (1420.0 8.82123113178 7.29939104305 302.240413549) + (1425.0 8.82227707924 7.30109791068 302.257455368) + (1430.0 8.82332302671 7.30280477831 302.274497186) + (1435.0 8.82436897417 7.30451164593 302.291539005) + (1440.0 8.82541492164 7.30621851356 302.308580823) + (1445.0 8.8264608691 7.30792538119 302.325622642) + (1450.0 8.82980499965 7.31411337437 302.342200633) + (1455.0 8.83363827328 7.32125512601 302.358679903) + (1460.0 8.83747154691 7.32839687764 302.375159173) + (1465.0 8.84130482054 7.33553862927 302.391638443) + (1470.0 8.84513809417 7.34268038091 302.408117713) + (1475.0 8.8489713678 7.34982213254 302.424596984) + (1480.0 8.85280464143 7.35696388418 302.441076254) + (1485.0 8.85663791506 7.36410563581 302.457555524) + (1490.0 8.86047118869 7.37124738745 302.474034794) + (1495.0 8.86430446231 7.37838913908 302.490514064) + (1500.0 8.86813773594 7.38553089071 302.506993334) + (1505.0 8.87197100957 7.39267264235 302.523472605) + (1510.0 8.8758042832 7.39981439398 302.539951875) + (1515.0 8.87963755683 7.40695614562 302.556431145) + (1520.0 8.88347083046 7.41409789725 302.572910415) + (1525.0 8.88730410409 7.42123964888 302.589389685) + (1530.0 8.89113737772 7.42838140052 302.605868955) + (1535.0 8.89497065135 7.43552315215 302.622348226) + (1540.0 8.89880392498 7.44266490379 302.638827496) + (1545.0 8.90263719861 7.44980665542 302.655306766) + (1550.0 8.90647047224 7.45694840705 302.671786036) + (1555.0 8.91030374586 7.46409015869 302.688265306) + (1560.0 8.91413701949 7.47123191032 302.704744577) + (1565.0 8.91797029312 7.47837366196 302.721223847) + (1570.0 8.92180356675 7.48551541359 302.737703117) + (1575.0 8.92995697971 7.48958529161 302.756743245) + (1580.0 8.93926578965 7.49283361431 302.77646826) + (1585.0 8.94857459959 7.496081937 302.796193275) + (1590.0 8.95788340953 7.49933025969 302.81591829) + (1595.0 8.96719221947 7.50257858238 302.835643305) + (1600.0 8.97650102941 7.50582690508 302.85536832) + (1605.0 8.98580983935 7.50907522777 302.875093335) + (1610.0 8.9951186493 7.51232355046 302.89481835) + (1615.0 9.00442745924 7.51557187315 302.914543365) + (1620.0 9.01373626918 7.51882019585 302.93426838) + (1625.0 9.02304507912 7.52206851854 302.953993395) + (1630.0 9.03235388906 7.52531684123 302.973718411) + (1635.0 9.041662699 7.52856516392 302.993443426) + (1640.0 9.05097150894 7.53181348662 303.013168441) + (1645.0 9.06028031888 7.53506180931 303.032893456) + (1650.0 9.06958912882 7.538310132 303.052618471) + (1655.0 9.07889793876 7.5415584547 303.072343486) + (1660.0 9.0882067487 7.54480677739 303.092068501) + (1665.0 9.09751555864 7.54805510008 303.111793516) + (1670.0 9.10682436858 7.55130342277 303.131518531) + (1675.0 9.11613317852 7.55455174547 303.151243546) + (1680.0 9.12544198846 7.55780006816 303.170968561) + (1685.0 9.1347507984 7.56104839085 303.190693576) + (1690.0 9.14405960834 7.56429671354 303.210418591) + (1695.0 9.15336841829 7.56754503624 303.230143606) + (1700.0 9.16267722823 7.57079335893 303.249868621) + (1705.0 9.17198603817 7.57404168162 303.269593636) + (1710.0 9.18349377603 7.57239347669 303.290540127) + (1715.0 9.19922226437 7.56134659115 303.31383119) + (1720.0 9.2149507527 7.55029970561 303.337122252) + (1725.0 9.23067924103 7.53925282007 303.360413315) + (1730.0 9.24640772936 7.52820593453 303.383704377) + (1735.0 9.2621362177 7.51715904899 303.40699544) + (1740.0 9.27786470603 7.50611216345 303.430286502) + (1745.0 9.29359319436 7.49506527791 303.453577565) + (1750.0 9.3093216827 7.48401839237 303.476868627) + (1755.0 9.32505017103 7.47297150683 303.50015969) + (1760.0 9.34077865936 7.46192462129 303.523450752) + (1765.0 9.35650714769 7.45087773575 303.546741815) + (1770.0 9.37223563603 7.43983085021 303.570032877) + (1775.0 9.38796412436 7.42878396467 303.59332394) + (1780.0 9.40369261269 7.41773707912 303.616615003) + (1785.0 9.41942110102 7.40669019358 303.639906065) + (1790.0 9.43514958936 7.39564330804 303.663197128) + (1795.0 9.45087807769 7.3845964225 303.68648819) + (1800.0 9.46660656602 7.37354953696 303.709779253) + (1805.0 9.48233505436 7.36250265142 303.733070315) + (1810.0 9.49806354269 7.35145576588 303.756361378) + (1815.0 9.51379203102 7.34040888034 303.77965244) + (1820.0 9.52952051935 7.3293619948 303.802943503) + (1825.0 9.54524900769 7.31831510926 303.826234565) + (1830.0 9.56097749602 7.30726822372 303.849525628) + (1835.0 9.57670598435 7.29622133818 303.87281669) + (1840.0 9.59243447268 7.28517445264 303.896107753) + (1845.0 9.60816296102 7.2741275671 303.919398815) + (1850.0 9.62389144935 7.26308068156 303.942689878) + (1855.0 9.63961993768 7.25203379602 303.96598094) + (1860.0 9.65432709188 7.2376578099 303.988680381) + (1865.0 9.66596304977 7.21327107309 304.009600791) + (1870.0 9.67759900765 7.18888433629 304.0305212) + (1875.0 9.68923496554 7.16449759948 304.051441609) + (1880.0 9.70087092342 7.14011086267 304.072362018) + (1885.0 9.71250688131 7.11572412587 304.093282427) + (1890.0 9.72414283919 7.09133738906 304.114202836) + (1895.0 9.73577879708 7.06695065226 304.135123245) + (1900.0 9.74741475497 7.04256391545 304.156043654) + (1905.0 9.75905071285 7.01817717864 304.176964064) + (1910.0 9.77068667074 6.99379044184 304.197884473) + (1915.0 9.78232262862 6.96940370503 304.218804882) + (1920.0 9.79395858651 6.94501696822 304.239725291) + (1925.0 9.8055945444 6.92063023142 304.2606457) + (1930.0 9.81723050228 6.89624349461 304.281566109) + (1935.0 9.82886646017 6.8718567578 304.302486518) + (1940.0 9.84050241805 6.847470021 304.323406928) + (1945.0 9.85213837594 6.82308328419 304.344327337) + (1950.0 9.86377433382 6.79869654738 304.365247746) + (1955.0 9.87541029171 6.77430981058 304.386168155) + (1960.0 9.8870462496 6.74992307377 304.407088564) + (1965.0 9.89868220748 6.72553633696 304.428008973) + (1970.0 9.91031816537 6.70114960016 304.448929382) + (1975.0 9.92195412325 6.67676286335 304.469849792) + (1980.0 9.93359008114 6.65237612654 304.490770201) + (1985.0 9.94522603903 6.62798938974 304.51169061) + (1990.0 9.95686199691 6.60360265293 304.532611019) + (1995.0 9.9684979548 6.57921591612 304.553531428) + (2000.0 9.98013391268 6.55482917932 304.574451837) +); + +// Update internal field. +updateInternalFields true; + +// Update boundary field. +updateBoundaryFields false; + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/0.original/U b/exampleCases/example.ADM.ssc.zeroMQ/0.original/U new file mode 100755 index 000000000..6dbf85ec5 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/0.original/U @@ -0,0 +1,58 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform ($U0Mag 0 0); + +boundaryField +{ + lower + { + type slip; + } + upper + { + type slip; + } + west + { + type fixedValue; + value uniform ($U0Mag 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform ($U0Mag 0 0); + } + south + { + type slip; + } + north + { + type slip; + } +} + + + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/0.original/k b/exampleCases/example.ADM.ssc.zeroMQ/0.original/k new file mode 100755 index 000000000..c76a7e261 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/0.original/k @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k ; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.0; + +boundaryField +{ + lower + { + type zeroGradient; + value uniform 0.0; + } + upper + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedValue; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/0.original/nuSgs b/exampleCases/example.ADM.ssc.zeroMQ/0.original/nuSgs new file mode 100755 index 000000000..18e32f76e --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/0.original/nuSgs @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nuSgs; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform $nuSgs0; + +boundaryField +{ + lower + { + type zeroGradient; + value uniform 0.0; + } + upper + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedValue; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/0.original/p b/exampleCases/example.ADM.ssc.zeroMQ/0.original/p new file mode 100755 index 000000000..d77aa1268 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/0.original/p @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0000"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + lower + { + type zeroGradient; + value uniform 0; + } + upper + { + type zeroGradient; + value uniform 0; + } + east + { + type fixedValue; + value uniform 0; + } + west + { + type zeroGradient; + value uniform 0; + } + south + { + type zeroGradient; + value uniform 0; + } + north + { + type zeroGradient; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/LESProperties b/exampleCases/example.ADM.ssc.zeroMQ/constant/LESProperties new file mode 100755 index 000000000..5fcbb46e9 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/LESProperties @@ -0,0 +1,124 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object LESProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#include "../setUp" + + +LESModel $LESModel; +//LESModel SmagorinskyABL; +//LESModel Smagorinsky; +//LESModel dynLagrangianCsBound; + +delta smooth; + +SmagorinskyCoeffs +{ + ce $ce; + ck $ck; +} + +SmagorinskyABLCoeffs +{ + ce $ce; + ck $ck; + TName "T"; + kappatName "kappat"; +} + +oneEqEddyABLCoeffs +{ + ce $ce; + ck $ck; + TName "T"; + kappatName "kappat"; +} + +oneEqEddyCoeffs +{ + ce $ce; + ck $ck; +} + +printCoeffs on; + +dynLagrangianCsBoundCoeffs +{ + filter simple; +} + +cubeRootVolCoeffs +{ + deltaCoeff 1; +} + +PrandtlCoeffs +{ + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + smoothCoeffs + { + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + maxDeltaRatio 1.1; + } + + Cdelta 0.158; +} + +vanDriestCoeffs +{ + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + smoothCoeffs + { + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + maxDeltaRatio 1.1; + } + + Aplus 26; + Cdelta 0.158; +} + +smoothCoeffs +{ + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + maxDeltaRatio 1.1; +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/Cylinder1 b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/Cylinder1 new file mode 100755 index 000000000..7106c17d0 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/Cylinder1 @@ -0,0 +1,23 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.5000) + ( 0.00 0.000 0.5000) + ( 180.00 0.000 0.5000) +); diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/Cylinder2 b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/Cylinder2 new file mode 100755 index 000000000..b2e7923f1 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/Cylinder2 @@ -0,0 +1,23 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.3500) + ( 0.00 0.000 0.3500) + ( 180.00 0.000 0.3500) +); diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU21_A17 b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU21_A17 new file mode 100755 index 000000000..17eb9de96 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU21_A17 @@ -0,0 +1,162 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180 0 0.0185) + (-175 0.394 0.0332) + (-170 0.788 0.0945) + (-160 0.67 0.2809) + (-155 0.749 0.3932) + (-150 0.797 0.5112) + (-145 0.818 0.6309) + (-140 0.813 0.7485) + (-135 0.786 0.8612) + (-130 0.739 0.9665) + (-125 0.675 1.0625) + (-120 0.596 1.1476) + (-115 0.505 1.2206) + (-110 0.403 1.2805) + (-105 0.294 1.3265) + (-100 0.179 1.3582) + (-95 0.06 1.3752) + (-90 -0.06 1.3774) + (-85 -0.179 1.3648) + (-80 -0.295 1.3376) + (-75 -0.407 1.2962) + (-70 -0.512 1.2409) + (-65 -0.608 1.1725) + (-60 -0.693 1.0919) + (-55 -0.764 1.0002) + (-50 -0.82 0.899 ) + (-45 -0.857 0.79 ) + (-40 -0.875 0.6754) + (-35 -0.869 0.5579) + (-30 -0.838 0.4405) + (-25 -0.791 0.3256) + (-24 -0.794 0.3013) + (-23 -0.805 0.2762) + (-22 -0.821 0.2506) + (-21 -0.843 0.2246) + (-20 -0.869 0.1983) + (-19 -0.899 0.172 ) + (-18 -0.931 0.1457) + (-17 -0.964 0.1197) + (-16 -0.999 0.094 ) + (-15 -1.033 0.0689) + (-14.5 -1.05 0.0567) + (-12.01 -0.953 0.0271) + (-11 -0.9 0.0303) + (-9.98 -0.827 0.0287) + (-8.12 -0.536 0.0124) + (-7.62 -0.467 0.0109) + (-7.11 -0.393 0.0092) + (-6.6 -0.323 0.0083) + (-6.5 -0.311 0.0089) + (-6 -0.245 0.0082) + (-5.5 -0.178 0.0074) + (-5 -0.113 0.0069) + (-4.5 -0.048 0.0065) + (-4 0.016 0.0063) + (-3.5 0.08 0.0061) + (-3 0.145 0.0058) + (-2.5 0.208 0.0057) + (-2 0.27 0.0057) + (-1.5 0.333 0.0057) + (-1 0.396 0.0057) + (-0.5 0.458 0.0057) + ( 0 0.521 0.0057) + ( 0.5 0.583 0.0057) + ( 1 0.645 0.0058) + ( 1.5 0.706 0.0058) + ( 2 0.768 0.0059) + ( 2.5 0.828 0.0061) + ( 3 0.888 0.0063) + ( 3.5 0.948 0.0066) + ( 4 0.996 0.0071) + ( 4.5 1.046 0.0079) + ( 5 1.095 0.009 ) + ( 5.5 1.145 0.0103) + ( 6 1.192 0.0113) + ( 6.5 1.239 0.0122) + ( 7 1.283 0.0131) + ( 7.5 1.324 0.0139) + ( 8 1.358 0.0147) + ( 8.5 1.385 0.0158) + ( 9 1.403 0.0181) + ( 9.5 1.401 0.0211) + ( 10 1.358 0.0255) + ( 10.5 1.313 0.0301) + ( 11 1.287 0.0347) + ( 11.5 1.274 0.0401) + ( 12 1.272 0.0468) + ( 12.5 1.273 0.0545) + ( 13 1.273 0.0633) + ( 13.5 1.273 0.0722) + ( 14 1.272 0.0806) + ( 14.5 1.273 0.09 ) + ( 15 1.275 0.0987) + ( 15.5 1.281 0.1075) + ( 16 1.284 0.117 ) + ( 16.5 1.296 0.127 ) + ( 17 1.306 0.1368) + ( 17.5 1.308 0.1464) + ( 18 1.308 0.1562) + ( 18.5 1.308 0.1664) + ( 19 1.308 0.177 ) + ( 19.5 1.307 0.1878) + ( 20 1.311 0.1987) + ( 20.5 1.325 0.21 ) + ( 21 1.324 0.2214) + ( 22 1.277 0.2499) + ( 23 1.229 0.2786) + ( 24 1.182 0.3077) + ( 25 1.136 0.3371) + ( 26 1.093 0.3664) + ( 28 1.017 0.4246) + ( 30 0.962 0.4813) + ( 32 0.937 0.5356) + ( 35 0.947 0.6127) + ( 40 0.95 0.7396) + ( 45 0.928 0.8623) + ( 50 0.884 0.9781) + ( 55 0.821 1.0846) + ( 60 0.74 1.1796) + ( 65 0.646 1.2617) + ( 70 0.54 1.3297) + ( 75 0.425 1.3827) + ( 80 0.304 1.4202) + ( 85 0.179 1.4423) + ( 90 0.053 1.4512) + ( 95 -0.073 1.448 ) + ( 100 -0.198 1.4294) + ( 105 -0.319 1.3954) + ( 110 -0.434 1.3464) + ( 115 -0.541 1.2829) + ( 120 -0.637 1.2057) + ( 125 -0.72 1.1157) + ( 130 -0.787 1.0144) + ( 135 -0.836 0.9033) + ( 140 -0.864 0.7845) + ( 145 -0.869 0.6605) + ( 150 -0.847 0.5346) + ( 155 -0.795 0.4103) + ( 160 -0.711 0.2922) + ( 170 -0.788 0.0969) + ( 175 -0.394 0.0334) + ( 180 0 0.0185) +); diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU25_A17 b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU25_A17 new file mode 100755 index 000000000..56981e639 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU25_A17 @@ -0,0 +1,161 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0202) + (-175.00 0.368 0.0324) + (-170.00 0.735 0.0943) + (-160.00 0.695 0.2848) + (-155.00 0.777 0.4001) + (-150.00 0.828 0.5215) + (-145.00 0.850 0.6447) + (-140.00 0.846 0.7660) + (-135.00 0.818 0.8823) + (-130.00 0.771 0.9911) + (-125.00 0.705 1.0905) + (-120.00 0.624 1.1787) + (-115.00 0.530 1.2545) + (-110.00 0.426 1.3168) + (-105.00 0.314 1.3650) + (-100.00 0.195 1.3984) + ( -95.00 0.073 1.4169) + ( -90.00 -0.050 1.4201) + ( -85.00 -0.173 1.4081) + ( -80.00 -0.294 1.3811) + ( -75.00 -0.409 1.3394) + ( -70.00 -0.518 1.2833) + ( -65.00 -0.617 1.2138) + ( -60.00 -0.706 1.1315) + ( -55.00 -0.780 1.0378) + ( -50.00 -0.839 0.9341) + ( -45.00 -0.879 0.8221) + ( -40.00 -0.898 0.7042) + ( -35.00 -0.893 0.5829) + ( -30.00 -0.862 0.4616) + ( -25.00 -0.803 0.3441) + ( -24.00 -0.792 0.3209) + ( -23.00 -0.789 0.2972) + ( -22.00 -0.792 0.2730) + ( -21.00 -0.801 0.2485) + ( -20.00 -0.815 0.2237) + ( -19.00 -0.833 0.1990) + ( -18.00 -0.854 0.1743) + ( -17.00 -0.879 0.1498) + ( -16.00 -0.905 0.1256) + ( -15.00 -0.932 0.1020) + ( -14.00 -0.959 0.0789) + ( -13.00 -0.985 0.0567) + ( -13.00 -0.985 0.0567) + ( -12.01 -0.953 0.0271) + ( -11.00 -0.900 0.0303) + ( -9.98 -0.827 0.0287) + ( -8.98 -0.753 0.0271) + ( -8.47 -0.691 0.0264) + ( -7.45 -0.555 0.0114) + ( -6.42 -0.413 0.0094) + ( -5.40 -0.271 0.0086) + ( -5.00 -0.220 0.0073) + ( -4.50 -0.152 0.0071) + ( -4.00 -0.084 0.0070) + ( -3.50 -0.018 0.0069) + ( -3.00 0.049 0.0068) + ( -2.50 0.115 0.0068) + ( -2.00 0.181 0.0068) + ( -1.50 0.247 0.0067) + ( -1.00 0.312 0.0067) + ( -0.50 0.377 0.0067) + ( 0.00 0.444 0.0065) + ( 0.50 0.508 0.0065) + ( 1.00 0.573 0.0066) + ( 1.50 0.636 0.0067) + ( 2.00 0.701 0.0068) + ( 2.50 0.765 0.0069) + ( 3.00 0.827 0.0070) + ( 3.50 0.890 0.0071) + ( 4.00 0.952 0.0073) + ( 4.50 1.013 0.0076) + ( 5.00 1.062 0.0079) + ( 6.00 1.161 0.0099) + ( 6.50 1.208 0.0117) + ( 7.00 1.254 0.0132) + ( 7.50 1.301 0.0143) + ( 8.00 1.336 0.0153) + ( 8.50 1.369 0.0165) + ( 9.00 1.400 0.0181) + ( 9.50 1.428 0.0211) + ( 10.00 1.442 0.0262) + ( 10.50 1.427 0.0336) + ( 11.00 1.374 0.0420) + ( 11.50 1.316 0.0515) + ( 12.00 1.277 0.0601) + ( 12.50 1.250 0.0693) + ( 13.00 1.246 0.0785) + ( 13.50 1.247 0.0888) + ( 14.00 1.256 0.1000) + ( 14.50 1.260 0.1108) + ( 15.00 1.271 0.1219) + ( 15.50 1.281 0.1325) + ( 16.00 1.289 0.1433) + ( 16.50 1.294 0.1541) + ( 17.00 1.304 0.1649) + ( 17.50 1.309 0.1754) + ( 18.00 1.315 0.1845) + ( 18.50 1.320 0.1953) + ( 19.00 1.330 0.2061) + ( 19.50 1.343 0.2170) + ( 20.00 1.354 0.2280) + ( 20.50 1.359 0.2390) + ( 21.00 1.360 0.2536) + ( 22.00 1.325 0.2814) + ( 23.00 1.288 0.3098) + ( 24.00 1.251 0.3386) + ( 25.00 1.215 0.3678) + ( 26.00 1.181 0.3972) + ( 28.00 1.120 0.4563) + ( 30.00 1.076 0.5149) + ( 32.00 1.056 0.5720) + ( 35.00 1.066 0.6548) + ( 40.00 1.064 0.7901) + ( 45.00 1.035 0.9190) + ( 50.00 0.980 1.0378) + ( 55.00 0.904 1.1434) + ( 60.00 0.810 1.2333) + ( 65.00 0.702 1.3055) + ( 70.00 0.582 1.3587) + ( 75.00 0.456 1.3922) + ( 80.00 0.326 1.4063) + ( 85.00 0.197 1.4042) + ( 90.00 0.072 1.3985) + ( 95.00 -0.050 1.3973) + ( 100.00 -0.170 1.3810) + ( 105.00 -0.287 1.3498) + ( 110.00 -0.399 1.3041) + ( 115.00 -0.502 1.2442) + ( 120.00 -0.596 1.1709) + ( 125.00 -0.677 1.0852) + ( 130.00 -0.743 0.9883) + ( 135.00 -0.792 0.8818) + ( 140.00 -0.821 0.7676) + ( 145.00 -0.826 0.6481) + ( 150.00 -0.806 0.5264) + ( 155.00 -0.758 0.4060) + ( 160.00 -0.679 0.2912) + ( 170.00 -0.735 0.0995) + ( 175.00 -0.368 0.0356) + ( 180.00 0.000 0.0202) +); diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU30_A17 b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU30_A17 new file mode 100755 index 000000000..35fb11988 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU30_A17 @@ -0,0 +1,163 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0267) + (-175.00 0.274 0.0370) + (-170.00 0.547 0.0968) + (-160.00 0.685 0.2876) + (-155.00 0.766 0.4025) + (-150.00 0.816 0.5232) + (-145.00 0.836 0.6454) + (-140.00 0.832 0.7656) + (-135.00 0.804 0.8807) + (-130.00 0.756 0.9882) + (-125.00 0.690 1.0861) + (-120.00 0.609 1.1730) + (-115.00 0.515 1.2474) + (-110.00 0.411 1.3084) + (-105.00 0.300 1.3552) + (-100.00 0.182 1.3875) + ( -95.00 0.061 1.4048) + ( -90.00 -0.061 1.4070) + ( -85.00 -0.183 1.3941) + ( -80.00 -0.302 1.3664) + ( -75.00 -0.416 1.3240) + ( -70.00 -0.523 1.2676) + ( -65.00 -0.622 1.1978) + ( -60.00 -0.708 1.1156) + ( -55.00 -0.781 1.0220) + ( -50.00 -0.838 0.9187) + ( -45.00 -0.877 0.8074) + ( -40.00 -0.895 0.6904) + ( -35.00 -0.889 0.5703) + ( -30.00 -0.858 0.4503) + ( -25.00 -0.832 0.3357) + ( -24.00 -0.852 0.3147) + ( -23.00 -0.882 0.2946) + ( -22.00 -0.919 0.2752) + ( -21.00 -0.963 0.2566) + ( -20.00 -1.013 0.2388) + ( -19.00 -1.067 0.2218) + ( -18.00 -1.125 0.2056) + ( -17.00 -1.185 0.1901) + ( -16.00 -1.245 0.1754) + ( -15.25 -1.290 0.1649) + ( -14.24 -1.229 0.1461) + ( -13.24 -1.148 0.1263) + ( -12.22 -1.052 0.1051) + ( -11.22 -0.965 0.0886) + ( -10.19 -0.867 0.0740) + ( -9.70 -0.822 0.0684) + ( -9.18 -0.769 0.0605) + ( -8.18 -0.756 0.0270) + ( -7.19 -0.690 0.0180) + ( -6.65 -0.616 0.0166) + ( -6.13 -0.542 0.0152) + ( -6.00 -0.525 0.0117) + ( -5.50 -0.451 0.0105) + ( -5.00 -0.382 0.0097) + ( -4.50 -0.314 0.0092) + ( -4.00 -0.251 0.0091) + ( -3.50 -0.189 0.0089) + ( -3.00 -0.120 0.0089) + ( -2.50 -0.051 0.0088) + ( -2.00 0.017 0.0088) + ( -1.50 0.085 0.0088) + ( -1.00 0.152 0.0088) + ( -0.50 0.219 0.0088) + ( 0.00 0.288 0.0087) + ( 0.50 0.354 0.0087) + ( 1.00 0.421 0.0088) + ( 1.50 0.487 0.0089) + ( 2.00 0.554 0.0090) + ( 2.50 0.619 0.0091) + ( 3.00 0.685 0.0092) + ( 3.50 0.749 0.0093) + ( 4.00 0.815 0.0095) + ( 4.50 0.879 0.0096) + ( 5.00 0.944 0.0097) + ( 5.50 1.008 0.0099) + ( 6.00 1.072 0.0101) + ( 6.50 1.135 0.0103) + ( 7.00 1.197 0.0107) + ( 7.50 1.256 0.0112) + ( 8.00 1.305 0.0125) + ( 9.00 1.390 0.0155) + ( 9.50 1.424 0.0171) + ( 10.00 1.458 0.0192) + ( 10.50 1.488 0.0219) + ( 11.00 1.512 0.0255) + ( 11.50 1.533 0.0307) + ( 12.00 1.549 0.0370) + ( 12.50 1.558 0.0452) + ( 13.00 1.470 0.0630) + ( 13.50 1.398 0.0784) + ( 14.00 1.354 0.0931) + ( 14.50 1.336 0.1081) + ( 15.00 1.333 0.1239) + ( 15.50 1.326 0.1415) + ( 16.00 1.329 0.1592) + ( 16.50 1.326 0.1743) + ( 17.00 1.321 0.1903) + ( 17.50 1.331 0.2044) + ( 18.00 1.333 0.2186) + ( 18.50 1.340 0.2324) + ( 19.00 1.362 0.2455) + ( 19.50 1.382 0.2584) + ( 20.00 1.398 0.2689) + ( 20.50 1.426 0.2814) + ( 21.00 1.437 0.2943) + ( 22.00 1.418 0.3246) + ( 23.00 1.397 0.3557) + ( 24.00 1.376 0.3875) + ( 25.00 1.354 0.4198) + ( 26.00 1.332 0.4524) + ( 28.00 1.293 0.5183) + ( 30.00 1.265 0.5843) + ( 32.00 1.253 0.6492) + ( 35.00 1.264 0.7438) + ( 40.00 1.258 0.8970) + ( 45.00 1.217 1.0402) + ( 50.00 1.146 1.1686) + ( 55.00 1.049 1.2779) + ( 60.00 0.932 1.3647) + ( 65.00 0.799 1.4267) + ( 70.00 0.657 1.4621) + ( 75.00 0.509 1.4708) + ( 80.00 0.362 1.4544) + ( 85.00 0.221 1.4196) + ( 90.00 0.092 1.3938) + ( 95.00 -0.030 1.3943) + ( 100.00 -0.150 1.3798) + ( 105.00 -0.267 1.3504) + ( 110.00 -0.379 1.3063) + ( 115.00 -0.483 1.2481) + ( 120.00 -0.578 1.1763) + ( 125.00 -0.660 1.0919) + ( 130.00 -0.727 0.9962) + ( 135.00 -0.777 0.8906) + ( 140.00 -0.807 0.7771) + ( 145.00 -0.815 0.6581) + ( 150.00 -0.797 0.5364) + ( 155.00 -0.750 0.4157) + ( 160.00 -0.673 0.3000) + ( 170.00 -0.547 0.1051) + ( 175.00 -0.274 0.0388) + ( 180.00 0.000 0.0267) +); diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU35_A17 b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU35_A17 new file mode 100755 index 000000000..041013e24 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU35_A17 @@ -0,0 +1,155 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0407) + (-175.00 0.223 0.0507) + (-170.00 0.405 0.1055) + (-160.00 0.658 0.2982) + (-155.00 0.733 0.4121) + (-150.00 0.778 0.5308) + (-145.00 0.795 0.6503) + (-140.00 0.787 0.7672) + (-135.00 0.757 0.8785) + (-130.00 0.708 0.9819) + (-125.00 0.641 1.0756) + (-120.00 0.560 1.1580) + (-115.00 0.467 1.2280) + (-110.00 0.365 1.2847) + (-105.00 0.255 1.3274) + (-100.00 0.139 1.3557) + ( -95.00 0.021 1.3692) + ( -90.00 -0.098 1.3680) + ( -85.00 -0.216 1.3521) + ( -80.00 -0.331 1.3218) + ( -75.00 -0.441 1.2773) + ( -70.00 -0.544 1.2193) + ( -65.00 -0.638 1.1486) + ( -60.00 -0.720 1.0660) + ( -55.00 -0.788 0.9728) + ( -50.00 -0.840 0.8705) + ( -45.00 -0.875 0.7611) + ( -40.00 -0.889 0.6466) + ( -35.00 -0.880 0.5299) + ( -30.00 -0.846 0.4141) + ( -25.00 -0.784 0.3030) + ( -24.00 -0.768 0.2817) + ( -23.00 -0.751 0.2608) + ( -22.00 -0.733 0.2404) + ( -21.00 -0.714 0.2205) + ( -20.00 -0.693 0.2011) + ( -19.00 -0.671 0.1822) + ( -18.00 -0.648 0.1640) + ( -17.00 -0.624 0.1465) + ( -16.00 -0.601 0.1300) + ( -15.00 -0.579 0.1145) + ( -14.00 -0.559 0.1000) + ( -13.00 -0.539 0.0867) + ( -12.00 -0.519 0.0744) + ( -11.00 -0.499 0.0633) + ( -10.00 -0.480 0.0534) + ( -5.54 -0.385 0.0245) + ( -5.04 -0.359 0.0225) + ( -4.54 -0.360 0.0196) + ( -4.04 -0.355 0.0174) + ( -3.54 -0.307 0.0162) + ( -3.04 -0.246 0.0144) + ( -3.00 -0.240 0.0240) + ( -2.50 -0.163 0.0188) + ( -2.00 -0.091 0.0160) + ( -1.50 -0.019 0.0137) + ( -1.00 0.052 0.0118) + ( -0.50 0.121 0.0104) + ( 0.00 0.196 0.0094) + ( 0.50 0.265 0.0096) + ( 1.00 0.335 0.0098) + ( 1.50 0.404 0.0099) + ( 2.00 0.472 0.0100) + ( 2.50 0.540 0.0102) + ( 3.00 0.608 0.0103) + ( 3.50 0.674 0.0104) + ( 4.00 0.742 0.0105) + ( 4.50 0.809 0.0107) + ( 5.00 0.875 0.0108) + ( 5.50 0.941 0.0109) + ( 6.00 1.007 0.0110) + ( 6.50 1.071 0.0113) + ( 7.00 1.134 0.0115) + ( 7.50 1.198 0.0117) + ( 8.00 1.260 0.0120) + ( 8.50 1.318 0.0126) + ( 9.00 1.368 0.0133) + ( 9.50 1.422 0.0143) + ( 10.00 1.475 0.0156) + ( 10.50 1.523 0.0174) + ( 11.00 1.570 0.0194) + ( 11.50 1.609 0.0227) + ( 12.00 1.642 0.0269) + ( 12.50 1.675 0.0319) + ( 13.00 1.700 0.0398) + ( 13.50 1.717 0.0488) + ( 14.00 1.712 0.0614) + ( 14.50 1.703 0.0786) + ( 15.50 1.671 0.1173) + ( 16.00 1.649 0.1377) + ( 16.50 1.621 0.1600) + ( 17.00 1.598 0.1814) + ( 17.50 1.571 0.2042) + ( 18.00 1.549 0.2316) + ( 19.00 1.544 0.2719) + ( 19.50 1.549 0.2906) + ( 20.00 1.565 0.3085) + ( 21.00 1.565 0.3447) + ( 22.00 1.563 0.3820) + ( 23.00 1.558 0.4203) + ( 24.00 1.552 0.4593) + ( 25.00 1.546 0.4988) + ( 26.00 1.539 0.5387) + ( 28.00 1.527 0.6187) + ( 30.00 1.522 0.6978) + ( 32.00 1.529 0.7747) + ( 35.00 1.544 0.8869) + ( 40.00 1.529 1.0671) + ( 45.00 1.471 1.2319) + ( 50.00 1.376 1.3747) + ( 55.00 1.249 1.4899) + ( 60.00 1.097 1.5728) + ( 65.00 0.928 1.6202) + ( 70.00 0.750 1.6302) + ( 75.00 0.570 1.6031) + ( 80.00 0.396 1.5423) + ( 85.00 0.237 1.4598) + ( 90.00 0.101 1.4041) + ( 95.00 -0.022 1.4053) + ( 100.00 -0.143 1.3914) + ( 105.00 -0.261 1.3625) + ( 110.00 -0.374 1.3188) + ( 115.00 -0.480 1.2608) + ( 120.00 -0.575 1.1891) + ( 125.00 -0.659 1.1046) + ( 130.00 -0.727 1.0086) + ( 135.00 -0.778 0.9025) + ( 140.00 -0.809 0.7883) + ( 145.00 -0.818 0.6684) + ( 150.00 -0.800 0.5457) + ( 155.00 -0.754 0.4236) + ( 160.00 -0.677 0.3066) + ( 170.00 -0.417 0.1085) + ( 175.00 -0.229 0.0510) + ( 180.00 0.000 0.0407) +); diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU40_A17 b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU40_A17 new file mode 100755 index 000000000..6138a98dd --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/DU40_A17 @@ -0,0 +1,156 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0602) + (-175.00 0.218 0.0699) + (-170.00 0.397 0.1107) + (-160.00 0.642 0.3045) + (-155.00 0.715 0.4179) + (-150.00 0.757 0.5355) + (-145.00 0.772 0.6535) + (-140.00 0.762 0.7685) + (-135.00 0.731 0.8777) + (-130.00 0.680 0.9788) + (-125.00 0.613 1.0700) + (-120.00 0.532 1.1499) + (-115.00 0.439 1.2174) + (-110.00 0.337 1.2716) + (-105.00 0.228 1.3118) + (-100.00 0.114 1.3378) + ( -95.00 -0.002 1.3492) + ( -90.00 -0.120 1.3460) + ( -85.00 -0.236 1.3283) + ( -80.00 -0.349 1.2964) + ( -75.00 -0.456 1.2507) + ( -70.00 -0.557 1.1918) + ( -65.00 -0.647 1.1204) + ( -60.00 -0.727 1.0376) + ( -55.00 -0.792 0.9446) + ( -50.00 -0.842 0.8429) + ( -45.00 -0.874 0.7345) + ( -40.00 -0.886 0.6215) + ( -35.00 -0.875 0.5067) + ( -30.00 -0.839 0.3932) + ( -25.00 -0.777 0.2849) + ( -24.00 -0.761 0.2642) + ( -23.00 -0.744 0.2440) + ( -22.00 -0.725 0.2242) + ( -21.00 -0.706 0.2049) + ( -20.00 -0.685 0.1861) + ( -19.00 -0.662 0.1687) + ( -18.00 -0.635 0.1533) + ( -17.00 -0.605 0.1398) + ( -16.00 -0.571 0.1281) + ( -15.00 -0.534 0.1183) + ( -14.00 -0.494 0.1101) + ( -13.00 -0.452 0.1036) + ( -12.00 -0.407 0.0986) + ( -11.00 -0.360 0.0951) + ( -10.00 -0.311 0.0931) + ( -8.00 -0.208 0.0930) + ( -6.00 -0.111 0.0689) + ( -5.50 -0.090 0.0614) + ( -5.00 -0.072 0.0547) + ( -4.50 -0.065 0.0480) + ( -4.00 -0.054 0.0411) + ( -3.50 -0.017 0.0349) + ( -3.00 0.003 0.0299) + ( -2.50 0.014 0.0255) + ( -2.00 0.009 0.0198) + ( -1.50 0.004 0.0164) + ( -1.00 0.036 0.0147) + ( -0.50 0.073 0.0137) + ( 0.00 0.137 0.0113) + ( 0.50 0.213 0.0114) + ( 1.00 0.292 0.0118) + ( 1.50 0.369 0.0122) + ( 2.00 0.444 0.0124) + ( 2.50 0.514 0.0124) + ( 3.00 0.580 0.0123) + ( 3.50 0.645 0.0120) + ( 4.00 0.710 0.0119) + ( 4.50 0.776 0.0122) + ( 5.00 0.841 0.0125) + ( 5.50 0.904 0.0129) + ( 6.00 0.967 0.0135) + ( 6.50 1.027 0.0144) + ( 7.00 1.084 0.0158) + ( 7.50 1.140 0.0174) + ( 8.00 1.193 0.0198) + ( 8.50 1.242 0.0231) + ( 9.00 1.287 0.0275) + ( 9.50 1.333 0.0323) + ( 10.00 1.368 0.0393) + ( 10.50 1.400 0.0475) + ( 11.00 1.425 0.0580) + ( 11.50 1.449 0.0691) + ( 12.00 1.473 0.0816) + ( 12.50 1.494 0.0973) + ( 13.00 1.513 0.1129) + ( 13.50 1.538 0.1288) + ( 14.50 1.587 0.1650) + ( 15.00 1.614 0.1845) + ( 15.50 1.631 0.2052) + ( 16.00 1.649 0.2250) + ( 16.50 1.666 0.2467) + ( 17.00 1.681 0.2684) + ( 17.50 1.699 0.2900) + ( 18.00 1.719 0.3121) + ( 19.00 1.751 0.3554) + ( 19.50 1.767 0.3783) + ( 20.50 1.798 0.4212) + ( 21.00 1.810 0.4415) + ( 22.00 1.830 0.4830) + ( 23.00 1.847 0.5257) + ( 24.00 1.861 0.5694) + ( 25.00 1.872 0.6141) + ( 26.00 1.881 0.6593) + ( 28.00 1.894 0.7513) + ( 30.00 1.904 0.8441) + ( 32.00 1.915 0.9364) + ( 35.00 1.929 1.0722) + ( 40.00 1.903 1.2873) + ( 45.00 1.820 1.4796) + ( 50.00 1.690 1.6401) + ( 55.00 1.522 1.7609) + ( 60.00 1.323 1.8360) + ( 65.00 1.106 1.8614) + ( 70.00 0.880 1.8347) + ( 75.00 0.658 1.7567) + ( 80.00 0.449 1.6334) + ( 85.00 0.267 1.4847) + ( 90.00 0.124 1.3879) + ( 95.00 0.002 1.3912) + ( 100.00 -0.118 1.3795) + ( 105.00 -0.235 1.3528) + ( 110.00 -0.348 1.3114) + ( 115.00 -0.453 1.2557) + ( 120.00 -0.549 1.1864) + ( 125.00 -0.633 1.1041) + ( 130.00 -0.702 1.0102) + ( 135.00 -0.754 0.9060) + ( 140.00 -0.787 0.7935) + ( 145.00 -0.797 0.6750) + ( 150.00 -0.782 0.5532) + ( 155.00 -0.739 0.4318) + ( 160.00 -0.664 0.3147) + ( 170.00 -0.410 0.1144) + ( 175.00 -0.226 0.0702) + ( 180.00 0.000 0.0602) +); diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/NACA64_A17 b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/NACA64_A17 new file mode 100755 index 000000000..11fa618d0 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/airfoilProperties/NACA64_A17 @@ -0,0 +1,147 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0198) + (-175.00 0.374 0.0341) + (-170.00 0.749 0.0955) + (-160.00 0.659 0.2807) + (-155.00 0.736 0.3919) + (-150.00 0.783 0.5086) + (-145.00 0.803 0.6267) + (-140.00 0.798 0.7427) + (-135.00 0.771 0.8537) + (-130.00 0.724 0.9574) + (-125.00 0.660 1.0519) + (-120.00 0.581 1.1355) + (-115.00 0.491 1.2070) + (-110.00 0.390 1.2656) + (-105.00 0.282 1.3104) + (-100.00 0.169 1.3410) + ( -95.00 0.052 1.3572) + ( -90.00 -0.067 1.3587) + ( -85.00 -0.184 1.3456) + ( -80.00 -0.299 1.3181) + ( -75.00 -0.409 1.2765) + ( -70.00 -0.512 1.2212) + ( -65.00 -0.606 1.1532) + ( -60.00 -0.689 1.0731) + ( -55.00 -0.759 0.9822) + ( -50.00 -0.814 0.8820) + ( -45.00 -0.850 0.7742) + ( -40.00 -0.866 0.6610) + ( -35.00 -0.860 0.5451) + ( -30.00 -0.829 0.4295) + ( -25.00 -0.853 0.3071) + ( -24.00 -0.870 0.2814) + ( -23.00 -0.890 0.2556) + ( -22.00 -0.911 0.2297) + ( -21.00 -0.934 0.2040) + ( -20.00 -0.958 0.1785) + ( -19.00 -0.982 0.1534) + ( -18.00 -1.005 0.1288) + ( -17.00 -1.082 0.1037) + ( -16.00 -1.113 0.0786) + ( -15.00 -1.105 0.0535) + ( -14.00 -1.078 0.0283) + ( -13.50 -1.053 0.0158) + ( -13.00 -1.015 0.0151) + ( -12.00 -0.904 0.0134) + ( -11.00 -0.807 0.0121) + ( -10.00 -0.711 0.0111) + ( -9.00 -0.595 0.0099) + ( -8.00 -0.478 0.0091) + ( -7.00 -0.375 0.0086) + ( -6.00 -0.264 0.0082) + ( -5.00 -0.151 0.0079) + ( -4.00 -0.017 0.0072) + ( -3.00 0.088 0.0064) + ( -2.00 0.213 0.0054) + ( -1.00 0.328 0.0052) + ( 0.00 0.442 0.0052) + ( 1.00 0.556 0.0052) + ( 2.00 0.670 0.0053) + ( 3.00 0.784 0.0053) + ( 4.00 0.898 0.0054) + ( 5.00 1.011 0.0058) + ( 6.00 1.103 0.0091) + ( 7.00 1.181 0.0113) + ( 8.00 1.257 0.0124) + ( 8.50 1.293 0.0130) + ( 9.00 1.326 0.0136) + ( 9.50 1.356 0.0143) + ( 10.00 1.382 0.0150) + ( 10.50 1.400 0.0267) + ( 11.00 1.415 0.0383) + ( 11.50 1.425 0.0498) + ( 12.00 1.434 0.0613) + ( 12.50 1.443 0.0727) + ( 13.00 1.451 0.0841) + ( 13.50 1.453 0.0954) + ( 14.00 1.448 0.1065) + ( 14.50 1.444 0.1176) + ( 15.00 1.445 0.1287) + ( 15.50 1.447 0.1398) + ( 16.00 1.448 0.1509) + ( 16.50 1.444 0.1619) + ( 17.00 1.438 0.1728) + ( 17.50 1.439 0.1837) + ( 18.00 1.448 0.1947) + ( 18.50 1.452 0.2057) + ( 19.00 1.448 0.2165) + ( 19.50 1.438 0.2272) + ( 20.00 1.428 0.2379) + ( 21.00 1.401 0.2590) + ( 22.00 1.359 0.2799) + ( 23.00 1.300 0.3004) + ( 24.00 1.220 0.3204) + ( 25.00 1.168 0.3377) + ( 26.00 1.116 0.3554) + ( 28.00 1.015 0.3916) + ( 30.00 0.926 0.4294) + ( 32.00 0.855 0.4690) + ( 35.00 0.800 0.5324) + ( 40.00 0.804 0.6452) + ( 45.00 0.793 0.7573) + ( 50.00 0.763 0.8664) + ( 55.00 0.717 0.9708) + ( 60.00 0.656 1.0693) + ( 65.00 0.582 1.1606) + ( 70.00 0.495 1.2438) + ( 75.00 0.398 1.3178) + ( 80.00 0.291 1.3809) + ( 85.00 0.176 1.4304) + ( 90.00 0.053 1.4565) + ( 95.00 -0.074 1.4533) + ( 100.00 -0.199 1.4345) + ( 105.00 -0.321 1.4004) + ( 110.00 -0.436 1.3512) + ( 115.00 -0.543 1.2874) + ( 120.00 -0.640 1.2099) + ( 125.00 -0.723 1.1196) + ( 130.00 -0.790 1.0179) + ( 135.00 -0.840 0.9064) + ( 140.00 -0.868 0.7871) + ( 145.00 -0.872 0.6627) + ( 150.00 -0.850 0.5363) + ( 155.00 -0.798 0.4116) + ( 160.00 -0.714 0.2931) + ( 170.00 -0.749 0.0971) + ( 175.00 -0.374 0.0334) + ( 180.00 0.000 0.0198) +); diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/polyMesh/blockMeshDict b/exampleCases/example.ADM.ssc.zeroMQ/constant/polyMesh/blockMeshDict new file mode 100755 index 000000000..463f233e0 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/polyMesh/blockMeshDict @@ -0,0 +1,101 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../../setUp" + + + + +convertToMeters 1.0; + +vertices +( + ( $xMin $yMin $zMin) + ( $xMax $yMin $zMin) + ( $xMax $yMax $zMin) + ( $xMin $yMax $zMin) + ( $xMin $yMin $zMax) + ( $xMax $yMin $zMax) + ( $xMax $yMax $zMax) + ( $xMin $yMax $zMax) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + lower + { + type wall; + faces + ( + (0 3 2 1) + ); + } + upper + { + type wall; + faces + ( + (4 5 6 7) + ); + } + west + { + type patch; + faces + ( + (0 4 7 3) + ); + } + east + { + type patch; + faces + ( + (1 2 6 5) + ); + } + north + { + type wall; + faces + ( + (3 7 6 2) + ); + } + south + { + type wall; + faces + ( + (0 1 5 4) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/transportProperties b/exampleCases/example.ADM.ssc.zeroMQ/constant/transportProperties new file mode 100755 index 000000000..3ee719c86 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/transportProperties @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object transportProperties; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +transportModel Newtonian; + +// Molecular viscosity +nu nu [0 2 -1 0 0 0 0] $nu; + +// Reference temperature +TRef TRef [0 0 0 1 0 0 0] $TRef; + +// Prandtl numbers +Pr Pr [0 0 0 0 0 0 0] $Pr; +Prt Prt [0 0 0 0 0 0 0] $Prt; +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/turbineArrayProperties b/exampleCases/example.ADM.ssc.zeroMQ/constant/turbineArrayProperties new file mode 100755 index 000000000..7f758e575 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/turbineArrayProperties @@ -0,0 +1,81 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbineProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +globalProperties +{ + outputControl "timeStep"; +// outputControl "runTime"; + outputInterval 1; +} + + +// _SSC_ +sscProperties +{ + sscEnabled true; //Enable/disable ssc, if not present defaults to False + nInputsToSSC 3; // Number of inputs EACH turbine passes to the super controller + nOutputsFromSSC 2; // Number of outputs the super controller sends to EACH turbine + sscControllerType "zeromqSSC"; // The type of SSC + sscMeasurementsFunction "default"; // Measurements function + zmqAddress "tcp://localhost:5553"; // zeroMQ connection port +} + +turbine0 +{ + turbineType "NREL5MWRef"; + baseLocation (1000.0 1500.0 0.0); + nRadial 64; + azimuthMaxDis 2.0; + nAvgSector 1; + pointDistType "uniform"; + pointInterpType "linear"; + bladeUpdateType "oldPosition"; + epsilon 20.0; + forceScalar 1.0; + inflowVelocityScalar 0.94; + tipRootLossCorrType "Glauert"; + rotationDir "cw"; + Azimuth 0.0; + RotSpeed 9.15519863; + TorqueGen 0.0; + Pitch 0.0; + NacYaw 270.0; + fluidDensity 1.225; +} + +turbine1 +{ + turbineType "NREL5MWRef"; + baseLocation (2000.0 1500.0 0.0); + nRadial 64; + azimuthMaxDis 2.0; + nAvgSector 1; + pointDistType "uniform"; + pointInterpType "linear"; + bladeUpdateType "oldPosition"; + epsilon 20.0; + forceScalar 1.0; + inflowVelocityScalar 0.94; + tipRootLossCorrType "Glauert"; + rotationDir "cw"; + Azimuth 0.0; + RotSpeed 9.15519863; + TorqueGen 0.0; + Pitch 0.0; + NacYaw 270.0; + fluidDensity 1.225; +} \ No newline at end of file diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/turbineProperties/NREL5MWRef b/exampleCases/example.ADM.ssc.zeroMQ/constant/turbineProperties/NREL5MWRef new file mode 100755 index 000000000..c51e9a8fd --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/turbineProperties/NREL5MWRef @@ -0,0 +1,122 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbineProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +NumBl 3; +TipRad 63.0; +HubRad 1.5; +UndSling 0.0; +OverHang -5.01910; +NacelleLength 8; +NacelleFrontalArea 2; +NacelleCd 0.5; +TowerHt 87.6; +Twr2Shft 1.96256; +ShftTilt -5.0; +PreCone (-2.5 -2.5 -2.5); +GBRatio 97.0; +GBEfficiency 1.0; +GenEfficiency 0.944; +RatedRotSpeed 12.1; +GenIner 534.116; +HubIner 115.926E3; +BladeIner 11.776047E6; +GenTorqueControllerType "fiveRegion"; +//GenTorqueControllerType "speedTorqueTable"; +//GenTorqueControllerType "none"; +BladePitchControllerType "PIDSC"; +//BladePitchControllerType "none"; +NacYawControllerType "yawSC"; +RotSpeedLimiter false; +GenTorqueRateLimiter true; +NacYawRateLimiter true; +BladePitchRateLimiter true; +SpeedFilterCornerFrequency 2.0; + + +GenTorqueControllerParams +{ + RateLimitGenTorque 15.0E3; + SpeedTorqueTable + ( + // gen speed (RPM) gen torque (N-m) + ( 670.00 0.0 ) + ( 871.00 20000.0 ) + ( 1161.96 32000.0 ) + ( 1173.70 43093.6 ) + ); + CutInGenSpeed 670.0; + Region2StartGenSpeed 871.0; + Region2EndGenSpeed 1161.963; + CutInGenTorque 0.0; + RatedGenTorque 43.09355E3; + KGen 2.55764E-2; +} + +BladePitchControllerParams +{ + RateLimitBladePitch 8.000; + PitchMin 0.000; + PitchMax 90.000; + PitchK 6.302336; + PitchControlKP 1.82620057; + PitchControlKI 0.78265750; + PitchControlKD 0.000; +} + +NacYawControllerParams +{ + RateLimitNacYaw 2.0; +} + + + + +Airfoils +( + "Cylinder1" + "Cylinder2" + "DU40_A17" + "DU35_A17" + "DU30_A17" + "DU25_A17" + "DU21_A17" + "NACA64_A17" +); + + + +BladeData +( +// radius(m) c(m) twist(deg) airfoil + (2.8667 3.542 13.308 0) + (5.6 3.854 13.308 0) + (8.3333 4.167 13.308 1) + (11.75 4.557 13.308 2) + (15.85 4.652 11.48 3) + (19.95 4.458 10.162 3) + (24.05 4.249 9.011 4) + (28.15 4.007 7.795 5) + (32.25 3.748 6.544 5) + (36.35 3.502 5.361 6) + (40.45 3.256 4.188 6) + (44.55 3.01 3.125 7) + (48.65 2.764 2.319 7) + (52.75 2.518 1.526 7) + (56.1667 2.313 0.863 7) + (58.9 2.086 0.37 7) + (61.6333 1.419 0.106 7) +); diff --git a/exampleCases/example.ADM.ssc.zeroMQ/constant/turbulenceProperties b/exampleCases/example.ADM.ssc.zeroMQ/constant/turbulenceProperties new file mode 100755 index 000000000..f8a545e0c --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/constant/turbulenceProperties @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// simulationType RASModel; + simulationType LESModel; +// simulationType laminar; + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/runscript.preprocess b/exampleCases/example.ADM.ssc.zeroMQ/runscript.preprocess new file mode 100755 index 000000000..51edac6ff --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/runscript.preprocess @@ -0,0 +1,155 @@ +#!/bin/bash +#PBS -N ADM_pisoFoam_preprocess +#PBS -l nodes=1:ppn=1 + + +# User Input. +OpenFOAMversion=2.4.x_SSC # OpenFOAM version +startTime=0 # Start time +updateBCType=0 # Boolean for whether or not the boundary condition types will be updated over + # what is in the initial conditions files. Leave it 0 for precursors. +inflowDir='west' # For inflow/outflow cases, specify the inflow direction. Choices are 'west', + # 'east', 'south', 'west', 'southWest', 'northWest', 'southEast', and + # 'northEast'. +refineMeshLocal=0 # Number of levels of local refinement (requires system/topoSetDict and + # system/refineHexMeshDict). +refineMeshGlobal=0 # Number of levels of global refinement. +parallel=0 # parallel untested! # Boolean for whether or not the preprocessing is run in parallel. +cores=1 # Enter the number of cores you will preprocess on. + + + + + + +# Define some functions for mesh refinement. +# Local refinement performed on one core. +refineMeshLocal() +{ + i=$1 + while [ $i -ge 1 ] + do + echo " -Performing level $i local refinement with topoSet/refineHexMesh" + echo " *selecting cells to refine..." + topoSet -dict system/topoSetDict.local.$i > log.topoSet.local.$i 2>&1 + + echo " *refining cells..." + refineHexMesh local -overwrite > log.refineHexMesh.local.$i 2>&1 + + let i=i-1 + done +} + +# Global refinement performed in parallel. +refineMeshGlobal() +{ + i=1 + while [ $i -le $1 ] + do + echo " -Performing level $i global refinement with refineMesh" + echo " *refining cells..." + mpirun -np $cores refineMesh -parallel -overwrite > log.refineMesh.global.$i 2>&1 + + let i=i+1 + done +} + + +# If running in parallel, cd to job launch directory +if [ $parallel -eq 1 ] + then + cd $PBS_O_WORKDIR +fi + + +# Source the bash profile and then call the appropriate OpenFOAM version function +# so that all the modules and environment variables get set. +echo "Sourcing the bash profile, loading modules, and setting the OpenFOAM environment variables..." +source $HOME/.bash_profile +OpenFOAM-$OpenFOAMversion + + +# Copy the controlDict.1 (assuming this is the one the actual solver will start +# out with) to controlDict. OpenFOAM reads "controlDict", not the numbered ones. +echo "Getting the control dictionary ready..." +cp system/controlDict.1 system/controlDict + + +# Copy the "clean" .original initial fields to a working copy. OpenFOAM does not +# read the ".original" initial fields--that's why they remain clean. +echo "Getting the initial condition directory ready..." +rm -rf $startTime +cp -rf $startTime.original $startTime + + +# Build the mesh. +echo "Using blockMesh to create the base mesh..." +cp constant/polyMesh/blockMeshDict ./ +rm -rf constant/polyMesh/* +mv ./blockMeshDict constant/polyMesh +blockMesh > log.blockMesh 2>&1 + + +# The initial fields come from the precursor which is periodic on all sides. The turbine +# case has inflow and outflow. Call the changeDictionary utility to make the south and +# north sides inflow and outflow. +if [ $updateBCType -eq 1 ] + then + echo "Using changeDictionary to update boundary conditions..." + changeDictionary -dict system/changeDictionaryDict.updateBCs.$inflowDir > log.changeDictionary.updateBCs.$inflowDir.1 2>&1 +fi + + +# Do serial local refinement +echo "Using refineHexMesh to perform " $refineMeshLocal " of local refinement..." +refineMeshLocal $refineMeshLocal + + +# If running in paralle from this point forward, then do the following: +if [ $cores -gt 1 ] + then + # Decompose the mesh and solution files (serial) + echo "Using decomposePar to decompose the problem for parallel processing..." + decomposePar -cellDist -force > log.decomposePar 2>&1 + + # Check the mesh + echo "Running checkMesh to report mesh diagnostics..." + mpirun -np $cores checkMesh -parallel > log.checkMesh.1 2>&1 + + # Perform global refinement to desired resolution. + echo "Using refineMesh to perform " $refineMeshGlobal " of global refinement..." + refineMeshGlobal $refineMeshGlobal + + # The mesh got globally refined, but the solution file did not, so + # the boundary fields may not have the correct number of entries. + # Use the changeDictionary utility to overwrite the spatially varying + # boundary data to a uniform single value. + if [ $updateBCType -eq 1 ] + then + echo "Using changeDictionary to ensure that the boundaries have the correct number of faces..." + mpirun -np $cores changeDictionary -dict system/changeDictionaryDict.updateBCs.$inflowDir -parallel > log.changeDictionary.updateBCs.$inflowDir.1 2>&1 + fi + + # Renumber the mesh for better matrix solver performance. + echo "Using renumberMesh to renumber the mesh for better matrix conditioning..." + mpirun -np $cores renumberMesh -parallel -overwrite > log.renumberMesh 2>&1 + + # Do one last check on the mesh. + echo "Running checkMesh to report mesh diagnostics..." + mpirun -np $cores checkMesh -parallel > log.checkMesh.3 2>&1 + + +# Otherwise, run in serial as follows: +else + # Renumber the mesh. + echo "Using renumberMesh to renumber the mesh for better matrix conditioning..." + renumberMesh -overwrite > log.renumberMesh 2>&1 + + # Decompose the mesh and solution files (serial) + echo "Using decomposePar to decompose the problem for parallel processing..." + decomposePar -cellDist -force > log.decomposePar 2>&1 + + # Check the mesh. + echo "Running checkMesh to report mesh diagnostics..." + checkMesh > log.checkMesh.1 2>&1 +fi diff --git a/exampleCases/example.ADM.ssc.zeroMQ/runscript.removeAll b/exampleCases/example.ADM.ssc.zeroMQ/runscript.removeAll new file mode 100755 index 000000000..463332f98 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/runscript.removeAll @@ -0,0 +1,21 @@ +#!/bin/bash + +# Remove initial conditions and temporary files +rm -rf 0 +rm -rf system/controlDict + +# Remove logs +rm -rf log.* +rm -rf runscript.solve.1.o* runscript.solve.1.e* + +# Remove processor files and folders +rm -rf processor* + +# Remove simulation output +rm -rf postProcessing +rm -rf turbineOutput + +# Remove polyMesh data +cp constant/polyMesh/blockMeshDict ./ +rm -rf constant/polyMesh/* +mv ./blockMeshDict constant/polyMesh \ No newline at end of file diff --git a/exampleCases/example.ADM.ssc.zeroMQ/runscript.solve.1 b/exampleCases/example.ADM.ssc.zeroMQ/runscript.solve.1 new file mode 100755 index 000000000..77aa58ec5 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/runscript.solve.1 @@ -0,0 +1,41 @@ +#!/bin/bash +#PBS -l walltime=48:00:00 +#PBS -l nodes=1:ppn=8 +#PBS -N "ADM.ssc.zeroMQ" + + + +cd $PBS_O_WORKDIR + + + + +# User Input. +OpenFOAMversion=2.4.x_SSC # OpenFOAM version +startTime=0 # Start time +cores=8 # Enter the number of cores you will preprocess on. +runNumber=1 # Enter the run number (useful for keeping track of restarts). +solver=pisoFoamTurbine.ADM # Enter the name of the flow solver. + + + +echo "Starting OpenFOAM job at: " $(date) +echo "using " $cores " cores" + + +# Source the bash profile and then call the appropriate OpenFOAM version function +# so that all the modules and environment variables get set. +echo "Sourcing the bash profile, loading modules, and setting the OpenFOAM environment variables..." +source $HOME/.bash_profile +OpenFOAM-$OpenFOAMversion + + +# Get the control dictionary for this particular run. +cp system/controlDict.$runNumber system/controlDict + + +# Run the solver. +(mpirun -np $cores $solver -parallel > log.$runNumber.$solver 2>&1) & +(cd zeromqSSC; matlab -nodisplay -noFigureWindows -logfile 'zeromqSSC_MATLAB.log' -r exampleSSC) + +echo "Ending OpenFOAM job at: " $(date) \ No newline at end of file diff --git a/exampleCases/example.ADM.ssc.zeroMQ/setUp b/exampleCases/example.ADM.ssc.zeroMQ/setUp new file mode 100755 index 000000000..9b3566121 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/setUp @@ -0,0 +1,93 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.4.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +// Domain size and number of cells. +xMin 0.0; // Minimum x-extent of domain (m). +yMin 0.0; // Minimum y-extent of domain (m). +zMin 0.0; // Minimum z-extent of domain (m). +xMax 3000.0; // Maximum x-extent of domain (m). +yMax 3000.0; // Maximum y-extent of domain (m). +zMax 1000.0; // Maximum z-extent of domain (m). +nx 100; // Number of cells in x-direction. +ny 100; // Number of cells in y-direction. +nz 34; // Number of cells in z-direction. + + + + +// Number of cores and domain decomposition information. +nCores 8; // Number of cores on which to run this case. +decompType simple; // Decomposition algorithm. "simple" and "scotch" are good choices. +decompOrder (4 2 1); // Order of the decomposition number of partitions in (x y z)-directions. + + + + +// Planar averaging and source term statistics options. +statisticsOn true; // Gather planar-averaged flow statistics. +statisticsFrequency 5; // Frequency in time steps of statistics gathering. + + + + +// Initial values for the variables. +// Note that U and T get overwritten if setFieldsABL is called. +U0Mag 8.00; // Initial condition for wind speed (m/s). +dir 270.0; // Initial condition for wind direction (deg). +windHeight 90.0; // Height at which to drive mean wind to U0Mag/dir (m). +p_rgh0 0.0; // Initial pressure (minus the hydrostatic variation and normalized by density) (m^2/s^2). +nuSgs0 0.0; // Initial SGS viscosity (m^2/s). +k0 0.1; // Initial SGS turbulent kinetic energy (m^2/s^2). +kappat0 0.0; // Initial SGS temperature diffusivity (m^2/s). +TGradUpper 0.003; // Potential temperature gradient above the strong inversion (K/m). +zInversion 750.0; // Height of the middle of the initial strong capping inversion (m). +inversionWidth 100.0; // Vertical width of the intial strong capping inversion (m). +TBottom 300.0; // Initial potential temperature at bottom of strong capping inversion (K). +TTop 305.0; // Initial potential temperature at top of strong capping inversion (K). + + + + +// General conditions and parameters. +Pr 0.7; // Molecular Prandtl number. +Prt 0.33333333; // Turbulent Prandtl number. +nu 1.0E-5; // Molecular viscosity (m^2/s). +TRef 300.0; // Reference potential temperature (K). +latitude 41.3; // Latitude on the Earth of the site (deg). +EarthPeriod 24.0; // Earth's rotation period (hr). + + + + +// SGS model inputs. +LESModel oneEqEddy; // SGS model selection. +ce 0.93; // SGS model constant. +ck 0.0673; // SGS model constant. + + + + +// Surface conditions. +qwall (0.0 0.0 0.0); // Temperature flux at wall (modify the z-value). A negative value is flux into domain (K-m/s). +Rwall (0.0 0.0 0.0 0.0 0.0 0.0); // Initial wall shear stress (m^2/s^2). +kappa 0.4; // von Karman constant. +z0 0.01; // Surface roughness (m). +betaM 16.0; // Monin-Obukhov wall shear stress model constant. +gammaM 5.0; // Monin-Obukhov wall shear stress model constant. +betaH 9.0; // Monin-Obukhov wall temperature flux model constant. +gammaH 7.8; // Monin-Obukhov wall temperature flux model constant. +alphaH 1.0; // Monin-Obukhov wall temperature flux model constant. +heatingRate 0.0; // Surface temperature change rate (when not directly setting temperature flux) (K/s). + + + + +#inputMode merge + +// ************************************************************************* // + diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs new file mode 100755 index 000000000..b4ab16ba4 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.cyclic b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.cyclic new file mode 100755 index 000000000..9d7df3a40 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.cyclic @@ -0,0 +1,238 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + U + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + k + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + kappat + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + nuSgs + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + p_rgh + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.east b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.east new file mode 100755 index 000000000..75ea86de5 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.east @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.north b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.north new file mode 100755 index 000000000..ab34b5c5a --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.north @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + south + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + south + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + south + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + north + { + type fixedFluxPressure; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.northeast b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.northeast new file mode 100755 index 000000000..9ef569c78 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.northeast @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + south + { + type zeroGradient; + value uniform 300; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + south + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + south + { + type zeroGradient; + value uniform 0.1; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + north + { + type fixedFluxPressure; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.northwest b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.northwest new file mode 100755 index 000000000..f62b02acb --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.northwest @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + south + { + type zeroGradient; + value uniform 300; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + east + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + south + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + south + { + type zeroGradient; + value uniform 0.1; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + east + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + north + { + type fixedFluxPressure; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedFluxPressure; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.south b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.south new file mode 100755 index 000000000..b4ab16ba4 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.south @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.southeast b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.southeast new file mode 100755 index 000000000..88a7ebf76 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.southeast @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.southwest b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.southwest new file mode 100755 index 000000000..6e9078e8e --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.southwest @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + east + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + east + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedFluxPressure; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.west b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.west new file mode 100755 index 000000000..7dec20912 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.west @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + east + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + east + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + west + { + type fixedFluxPressure; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/controlDict.1 b/exampleCases/example.ADM.ssc.zeroMQ/system/controlDict.1 new file mode 100755 index 000000000..92a8952aa --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/controlDict.1 @@ -0,0 +1,66 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + application ABLSolver; + + libs ("libuserfiniteVolume.so" "libuserincompressibleLESModels.so"); + + startFrom startTime; + + startTime 0.0; + + stopAt endTime; + + endTime 1000.0; + + deltaT 0.5; + + writeControl adjustableRunTime; + + writeInterval 99000.0; + + purgeWrite 0; + + writeFormat ascii; + + writePrecision 8; + + writeCompression compressed; + + timeFormat general; + + timePrecision 8; + + runTimeModifiable yes; + + adjustTimeStep no; + + maxCo 0.75; + + maxDeltaT 25.0; + + startTimeMean 1000.0; + + startTimeCorr 1000.0; + + functions + { + #include "sampling/sliceDataInstantaneous" + } + +// ************************************************************************* // + diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/decomposeParDict b/exampleCases/example.ADM.ssc.zeroMQ/system/decomposeParDict new file mode 100755 index 000000000..c7bea2ee8 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/decomposeParDict @@ -0,0 +1,76 @@ +/*-------------------------------*- C++ -*---------------------------------*\ +| ========= | +| \\ / OpenFOAM | +| \\ / | +| \\ / The Open Source CFD Toolbox | +| \\/ http://www.OpenFOAM.org | +\*-------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + location "system"; + object decomposeParDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +numberOfSubdomains $nCores; +method $decompType; +//preservePatches (north south east west); + +simpleCoeffs +{ + n $decompOrder; + delta 0.001; +} + +hierarchicalCoeffs +{ + n (1 1 3); + delta 0.001; + order xyz; +} + +metisCoeffs +{ + processorWeights + ( + ); +} + +scotchCoeffs +{ + //processorWeights + //( + // 1 + // 1 + // 1 + // 1 + //); + //writeGraph true; + //strategy "b"; +} + +manualCoeffs +{ + dataFile "decompositionData"; +} + + +//// Is the case distributed +distributed no; +//// Per slave (so nProcs-1 entries) the directory above the case. +//roots +//( +// "/tmp" +// "/tmp" +//); + + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/fvSchemes b/exampleCases/example.ADM.ssc.zeroMQ/system/fvSchemes new file mode 100755 index 000000000..ead2aeb21 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/fvSchemes @@ -0,0 +1,85 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default backward; +// default CrankNicolson 1.0; +} + +gradSchemes +{ + default Gauss linear; + grad(U) Gauss linear; +} + +divSchemes +{ + default Gauss linear; + //div(phi,U) Gauss linear; + //div(phi,T) Gauss linear; + div(phi,U) Gauss localBlended linear upwind; + div(phi,T) Gauss localBlended linear upwind; + div(R) Gauss linear; + div(U) Gauss linear; + div((nuEff*dev(grad(U).T()))) Gauss linear; + div(B) Gauss linear; + div(phi,B) Gauss linear; + div(phi,k) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; + laplacian(rUA,p) Gauss linear uncorrected; + laplacian((1|A(U)),p) Gauss linear uncorrected; + laplacian(interpolate((1|A(U))),p) Gauss linear uncorrected; + laplacian(interpolate((1|A(U))),pd) Gauss linear uncorrected; + laplacian(nu,U) Gauss linear uncorrected; + laplacian(nuEff,U) Gauss linear uncorrected; + laplacian(kappaEff,T) Gauss linear uncorrected; + laplacian(DBEff,B) Gauss linear uncorrected; + laplacian(nuSgs,U) Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +fluxRequired +{ + default no; + p ; +} + +schemeBlending +{ + xBlending1 -10.0; + xBlending2 0.0; + xBlending3 60.0; + xBlending4 70.0; + blendingFactor1 0.85; + blendingFactor2 1.00; +} + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/fvSolution b/exampleCases/example.ADM.ssc.zeroMQ/system/fvSolution new file mode 100755 index 000000000..b3f1a7e4a --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/fvSolution @@ -0,0 +1,102 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "(p_rgh|p)" + { + solver PCG; + preconditioner + { + preconditioner GAMG; + tolerance 1e-05; + relTol 0.01; + smoother DICGaussSeidel; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 100; + agglomerator faceAreaPair; + mergeLevels 2; + } + tolerance 1e-06; + relTol 0.01; + maxIter 1000; + } + + "(p_rghFinal|pFinal)" + { + $p; + relTol 0.0; + } + + "(U|T|k|epsilon|R)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + maxIter 1000; + } + + "(U|T|k|epsilon|R)Final" + { + $U; + relTol 0.0; + } + + "(flm|fmm)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + } + + "(flm|fmm)Final" + { + $flm; + relTol 0.0; + } + + +} + +PISO +{ + momentumPredictor yes; + nOuterCorrectors 1; + nCorrectors 3; + nNonOrthogonalCorrectors 0; + pRefPoint (-39.0 0 11.5); + pRefValue 0; +} + +relaxationFactors +{ + fields + { + } + equations + { + "(U|T|k|epsilon|R)" 1.0; + "(U|T|k|epsilon|R)Final" 1.0; + } +} + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/sampling/sliceDataInstantaneous b/exampleCases/example.ADM.ssc.zeroMQ/system/sampling/sliceDataInstantaneous new file mode 100755 index 000000000..d80b1da9d --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/sampling/sliceDataInstantaneous @@ -0,0 +1,59 @@ + sliceDataInstantaneous + { + type surfaces; + functionObjectLibs ("libsampling.so"); + enabled true; + interpolationScheme cell; + outputControl adjustableTime; + writeInterval 5; + surfaceFormat vtk; + fields + ( + U + ); + surfaces + ( + slice_horizontal + { + type plane; + basePoint (1500.01 1500.01 90.01); + normalVector (0 0 1); + triangulate false; + } + slice_vertical_x500 + { + type plane; + basePoint (500.01 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x3D + { + type plane; + basePoint (1379.2 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x5D + { + type plane; + basePoint (1632.0 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x7D + { + type plane; + basePoint (1884.8 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x10D + { + type plane; + basePoint (2264.0 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + ); + } diff --git a/exampleCases/example.ADM.ssc.zeroMQ/system/setFieldsABLDict b/exampleCases/example.ADM.ssc.zeroMQ/system/setFieldsABLDict new file mode 100755 index 000000000..11b48e0bc --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/system/setFieldsABLDict @@ -0,0 +1,504 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object setFieldsABLDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +// Extents of the domain. +xMin $xMin; +yMin $yMin; +zMin $zMin; + +xMax $xMax; +yMax $yMax; +zMax $zMax; + +zRef $zMax; + +// Specify if distance from wall should be used as z. +useWallDistZ false; +scaleVelocityWithHeight false; + + +// Specify how to initialze the base velocity and temperature profile. +velocityInitType "table"; +//velocityInitType "log"; +//velocityInitType "geostrophic"; +temperatureInitType "table"; +//temperatureInitType "simple"; + +// Maximum perturbation of streamwise/spanwise flow near surface. +deltaU 0.25; +deltaV 0.25; + +// Total periods of perturbations in streamwise/spanwise in the domain. +Uperiods 12.0; +Vperiods 12.0; + +// Percentage of domain height (zMax) where peak in perturbation +// magnitude occurs. +zPeak 0.015; + +// Initial height of the center of the capping inversion. +zInversion $zInversion; + +// Width of the capping inversion. +widthInversion $inversionWidth; + +// Potential temperature at the bottom and top of the capping inversion. +Tbottom $TBottom; +Ttop $TTop; + +// Maximum temperature fluctuation size below capping inversion. +TPrimeScale 0.0; + +// Height rate of change of potential temperature above the inversion. +dTdz $TGradUpper; + +// Geostrophic wind speed magnitude. +Ug $U0Mag; + +// Geostrophic wind speed direction. +UgDir $dir; + +// Aerodynamic roughness height of surface. +z0 $z0; + +// von Karman constant. +kappa $kappa; + +// Vertical profile table. +profileTable +( +// z U V T + (0.0 0.0 0.0 273.121917725) + (5.0 1.82671529027 1.98969371553 282.524156211) + (10.0 2.52983624172 2.77228242751 283.156504284) + (15.0 3.01282071998 3.35521702288 283.64108812) + (20.0 3.35996148006 3.78823607698 284.090761147) + (25.0 3.8038057643 4.37960852586 284.554077196) + (30.0 4.03596125279 4.70538923119 284.966777157) + (35.0 4.38133296535 5.23253766126 285.360167677) + (40.0 4.56992779673 5.53523659867 285.747101612) + (45.0 4.80994398595 5.96180841679 286.095879197) + (50.0 5.00816921409 6.32774876853 286.444585293) + (55.0 5.14154903327 6.60160807137 286.787914506) + (60.0 5.36818530188 7.08896005703 287.063199891) + (65.0 5.44703987742 7.27484159809 287.379906732) + (70.0 5.57604433164 7.60608624795 287.638417176) + (75.0 5.72370142776 7.99632935101 287.863981004) + (80.0 5.77619905069 8.15139018101 288.127106742) + (85.0 5.87149793296 8.46369430537 288.331005696) + (90.0 5.98111916718 8.83268873958 288.509035882) + (95.0 6.01697152506 8.97407895539 288.724664101) + (100.0 6.06967854005 9.19927028309 288.909565287) + (105.0 6.1450628792 9.53721293929 289.053124377) + (110.0 6.19167607924 9.76288104253 289.198531813) + (115.0 6.22489630605 9.93628531022 289.344799656) + (120.0 6.27421288656 10.216282683 289.462005) + (125.0 6.32645248876 10.5156368594 289.57393273) + (130.0 6.34668810144 10.6457361726 289.712125634) + (135.0 6.36434613795 10.762203832 289.852433913) + (140.0 6.39842793739 11.0196195883 289.95191863) + (145.0 6.4342454375 11.2919310606 290.047089019) + (150.0 6.45180421766 11.4367005351 290.150649381) + (155.0 6.46406875681 11.544488333 290.256642472) + (160.0 6.48170756073 11.7056278368 290.348224267) + (165.0 6.50382814701 11.9112591447 290.427787992) + (170.0 6.52550956366 12.1127414485 290.506470121) + (175.0 6.54550549533 12.298300329 290.581768788) + (180.0 6.56550142701 12.4838592096 290.657067454) + (185.0 6.58511534034 12.6567515091 290.735008491) + (190.0 6.6045979288 12.8252894701 290.813857884) + (195.0 6.62432001649 12.9896812983 290.892328604) + (200.0 6.64532587961 13.1318488244 290.968769537) + (205.0 6.66633174272 13.2740163505 291.045210471) + (210.0 6.69104111181 13.4098514016 291.117435921) + (215.0 6.72036475996 13.5377966838 291.184409209) + (220.0 6.74968840812 13.6657419659 291.251382497) + (225.0 6.77805691412 13.7640369251 291.318657013) + (230.0 6.80578882059 13.8425700289 291.386132296) + (235.0 6.83352072706 13.9211031327 291.453607578) + (240.0 6.86307156947 13.9862481909 291.518273832) + (245.0 6.89380511232 14.0426881336 291.581113612) + (250.0 6.92453865516 14.0991280764 291.643953391) + (255.0 6.95361693104 14.1462680315 291.704700258) + (260.0 6.98077095142 14.1825967081 291.763014104) + (265.0 7.0079249718 14.2189253847 291.82132795) + (270.0 7.03507703408 14.2541299666 291.879606535) + (275.0 7.0622194383 14.283790106 291.937711201) + (280.0 7.08936184253 14.3134502454 291.995815867) + (285.0 7.11650424675 14.3431103848 292.053920533) + (290.0 7.1430391081 14.369131837 292.11328027) + (295.0 7.16932392788 14.3936557439 292.173156546) + (300.0 7.19560874767 14.4181796507 292.233032822) + (305.0 7.22180906756 14.4424461024 292.292838021) + (310.0 7.24680913749 14.4630556198 292.351633627) + (315.0 7.27180920741 14.4836651372 292.410429232) + (320.0 7.29680927734 14.5042746546 292.469224837) + (325.0 7.32153609499 14.5243042572 292.528664796) + (330.0 7.34543057757 14.5425674214 292.590067475) + (335.0 7.36932506015 14.5608305855 292.651470155) + (340.0 7.39321954273 14.5790937496 292.712872834) + (345.0 7.41696733387 14.597025575 292.773542958) + (350.0 7.44026003553 14.6139294685 292.831940429) + (355.0 7.46355273718 14.6308333621 292.890337899) + (360.0 7.48684543884 14.6477372556 292.94873537) + (365.0 7.51013186129 14.6646271523 293.007149353) + (370.0 7.53322339247 14.68108262 293.066075821) + (375.0 7.55631492366 14.6975380877 293.12500229) + (380.0 7.57940645484 14.7139935554 293.183928758) + (385.0 7.60249798603 14.7304490231 293.242855226) + (390.0 7.6257582057 14.7463924565 293.301506178) + (395.0 7.64912373233 14.7620162427 293.359985132) + (400.0 7.67248925896 14.7776400289 293.418464087) + (405.0 7.69585478559 14.7932638151 293.476943042) + (410.0 7.71922031222 14.8088876013 293.535421996) + (415.0 7.74300228036 14.8230663689 293.592791002) + (420.0 7.7667927399 14.8372156721 293.650137374) + (425.0 7.79058319945 14.8513649753 293.707483747) + (430.0 7.81437365899 14.8655142784 293.76483012) + (435.0 7.83815083397 14.8793492717 293.821767406) + (440.0 7.86181714661 14.8905612872 293.875290779) + (445.0 7.88548345926 14.9017733027 293.928814153) + (450.0 7.9091497719 14.9129853182 293.982337526) + (455.0 7.93281608455 14.9241973336 294.035860899) + (460.0 7.95648239719 14.9354093491 294.089384273) + (465.0 7.97905964048 14.9423301431 294.14128451) + (470.0 8.0016312311 14.9492286641 294.193176323) + (475.0 8.02420282171 14.956127185 294.245068135) + (480.0 8.04677441233 14.9630257059 294.296959948) + (485.0 8.06934600294 14.9699242269 294.34885176) + (490.0 8.0912068028 14.9742300558 294.40025773) + (495.0 8.11235909886 14.9759515346 294.45117942) + (500.0 8.13351139492 14.9776730134 294.502101111) + (505.0 8.15466369098 14.9793944922 294.553022801) + (510.0 8.17581598704 14.981115971 294.603944491) + (515.0 8.19696828309 14.9828374498 294.654866181) + (520.0 8.21724149816 14.9808198644 294.704354156) + (525.0 8.2364694612 14.9743564264 294.752137402) + (530.0 8.25569742424 14.9678929884 294.799920649) + (535.0 8.27492538727 14.9614295505 294.847703896) + (540.0 8.29415335031 14.9549661125 294.895487143) + (545.0 8.31338131334 14.9485026745 294.943270389) + (550.0 8.33260927638 14.9420392365 294.991053636) + (555.0 8.35050488468 14.9266129312 295.036341098) + (560.0 8.36808840645 14.9090871924 295.081043956) + (565.0 8.38567192822 14.8915614535 295.125746813) + (570.0 8.40325544999 14.8740357147 295.170449671) + (575.0 8.42083897176 14.8565099758 295.215152528) + (580.0 8.43842249352 14.838984237 295.259855386) + (585.0 8.45600601529 14.8214584982 295.304558243) + (590.0 8.47264685758 14.7968218302 295.348171206) + (595.0 8.48834031368 14.765038729 295.390688832) + (600.0 8.50403376979 14.7332556278 295.433206459) + (605.0 8.51972722589 14.7014725265 295.475724085) + (610.0 8.53542068199 14.6696894253 295.518241712) + (615.0 8.55111413809 14.6379063241 295.560759338) + (620.0 8.56680759419 14.6061232229 295.603276965) + (625.0 8.5825010503 14.5743401216 295.645794591) + (630.0 8.59715715424 14.5346556613 295.689519112) + (635.0 8.61058749747 14.4856347615 295.734669729) + (640.0 8.62401784069 14.4366138617 295.779820347) + (645.0 8.63744818391 14.3875929619 295.824970964) + (650.0 8.65087852713 14.338572062 295.870121581) + (655.0 8.66430887036 14.2895511622 295.915272198) + (660.0 8.67773921358 14.2405302624 295.960422815) + (665.0 8.6911695568 14.1915093626 296.005573433) + (670.0 8.70459990003 14.1424884628 296.05072405) + (675.0 8.71498597608 14.0837507537 296.096336227) + (680.0 8.72352399234 14.0191143362 296.142228601) + (685.0 8.7320620086 13.9544779188 296.188120975) + (690.0 8.74060002486 13.8898415013 296.234013348) + (695.0 8.74913804112 13.8252050838 296.279905722) + (700.0 8.75767605739 13.7605686663 296.325798096) + (705.0 8.76621407365 13.6959322489 296.371690469) + (710.0 8.77475208991 13.6312958314 296.417582843) + (715.0 8.78329010617 13.5666594139 296.463475217) + (720.0 8.79182812243 13.5020229965 296.50936759) + (725.0 8.79189547444 13.4277463368 296.562527014) + (730.0 8.79098910472 13.3523615098 296.616521801) + (735.0 8.79008273499 13.2769766828 296.670516587) + (740.0 8.78917636527 13.2015918559 296.724511374) + (745.0 8.78826999555 13.1262070289 296.778506161) + (750.0 8.78736362582 13.0508222019 296.832500948) + (755.0 8.7864572561 12.9754373749 296.886495735) + (760.0 8.78555088638 12.9000525479 296.940490522) + (765.0 8.78464451665 12.824667721 296.994485308) + (770.0 8.78373814693 12.749282894 297.048480095) + (775.0 8.78092431283 12.6731698157 297.101321687) + (780.0 8.77050848097 12.594154369 297.149567342) + (785.0 8.76009264911 12.5151389222 297.197812997) + (790.0 8.74967681725 12.4361234755 297.246058652) + (795.0 8.73926098539 12.3571080288 297.294304307) + (800.0 8.72884515353 12.278092582 297.342549962) + (805.0 8.71842932167 12.1990771353 297.390795617) + (810.0 8.70801348981 12.1200616885 297.439041272) + (815.0 8.69759765795 12.0410462418 297.487286927) + (820.0 8.68718182609 11.9620307951 297.535532582) + (825.0 8.67676599423 11.8830153483 297.583778237) + (830.0 8.66635016237 11.8039999016 297.632023892) + (835.0 8.65380285705 11.7267327361 297.688031136) + (840.0 8.63847548104 11.6517458454 297.754161782) + (845.0 8.62314810503 11.5767589547 297.820292429) + (850.0 8.60782072902 11.5017720641 297.886423076) + (855.0 8.59249335301 11.4267851734 297.952553722) + (860.0 8.57716597701 11.3517982828 298.018684369) + (865.0 8.561838601 11.2768113921 298.084815016) + (870.0 8.54651122499 11.2018245015 298.150945663) + (875.0 8.53118384898 11.1268376108 298.217076309) + (880.0 8.51585647297 11.0518507201 298.283206956) + (885.0 8.50052909696 10.9768638295 298.349337603) + (890.0 8.48520172096 10.9018769388 298.41546825) + (895.0 8.46987434495 10.8268900482 298.481598896) + (900.0 8.45883220551 10.7541011047 298.547345535) + (905.0 8.45238242046 10.6836676328 298.612680644) + (910.0 8.44593263542 10.6132341608 298.678015753) + (915.0 8.43948285037 10.5428006888 298.743350863) + (920.0 8.43303306533 10.4723672168 298.808685972) + (925.0 8.42658328028 10.4019337449 298.874021081) + (930.0 8.42013349524 10.3315002729 298.93935619) + (935.0 8.41368371019 10.2610668009 299.004691299) + (940.0 8.40723392515 10.190633329 299.070026409) + (945.0 8.4007841401 10.120199857 299.135361518) + (950.0 8.39433435506 10.049766385 299.200696627) + (955.0 8.38788457001 9.97933291304 299.266031736) + (960.0 8.38143478497 9.90889944107 299.331366845) + (965.0 8.37498499992 9.8384659691 299.396701955) + (970.0 8.37175628862 9.76984547069 299.458148741) + (975.0 8.3787220489 9.70696290595 299.507289259) + (980.0 8.38568780918 9.64408034121 299.556429777) + (985.0 8.39265356946 9.58119777647 299.605570296) + (990.0 8.39961932974 9.51831521173 299.654710814) + (995.0 8.40658509002 9.45543264699 299.703851332) + (1000.0 8.4135508503 9.39255008225 299.752991851) + (1005.0 8.42051661058 9.32966751751 299.802132369) + (1010.0 8.42748237086 9.26678495277 299.851272887) + (1015.0 8.43444813113 9.20390238803 299.900413405) + (1020.0 8.44141389141 9.14101982329 299.949553924) + (1025.0 8.44837965169 9.07813725854 299.998694442) + (1030.0 8.45534541197 9.0152546938 300.04783496) + (1035.0 8.46231117225 8.95237212906 300.096975478) + (1040.0 8.46927693253 8.88948956432 300.146115997) + (1045.0 8.47624269281 8.82660699958 300.195256515) + (1050.0 8.48495783258 8.77319458603 300.238852282) + (1055.0 8.49495774699 8.72673721576 300.278375887) + (1060.0 8.5049576614 8.6802798455 300.317899492) + (1065.0 8.51495757581 8.63382247523 300.357423097) + (1070.0 8.52495749023 8.58736510496 300.396946702) + (1075.0 8.53495740464 8.5409077347 300.436470307) + (1080.0 8.54495731905 8.49445036443 300.475993912) + (1085.0 8.55495723346 8.44799299416 300.515517517) + (1090.0 8.56495714787 8.4015356239 300.555041122) + (1095.0 8.57495706228 8.35507825363 300.594564727) + (1100.0 8.58495697669 8.30862088336 300.634088332) + (1105.0 8.5949568911 8.2621635131 300.673611937) + (1110.0 8.60495680552 8.21570614283 300.713135542) + (1115.0 8.61495671993 8.16924877256 300.752659147) + (1120.0 8.62495663434 8.1227914023 300.792182752) + (1125.0 8.63495654875 8.07633403203 300.831706357) + (1130.0 8.64495646316 8.02987666176 300.871229962) + (1135.0 8.65360052964 7.98996489564 300.907704255) + (1140.0 8.65972902324 7.96219751809 300.938521005) + (1145.0 8.66585751685 7.93443014055 300.969337756) + (1150.0 8.67198601045 7.906662763 301.000154506) + (1155.0 8.67811450406 7.87889538546 301.030971256) + (1160.0 8.68424299766 7.85112800791 301.061788006) + (1165.0 8.69037149126 7.82336063037 301.092604757) + (1170.0 8.69649998487 7.79559325282 301.123421507) + (1175.0 8.70262847847 7.76782587527 301.154238257) + (1180.0 8.70875697208 7.74005849773 301.185055007) + (1185.0 8.71488546568 7.71229112018 301.215871758) + (1190.0 8.72101395929 7.68452374264 301.246688508) + (1195.0 8.72714245289 7.65675636509 301.277505258) + (1200.0 8.7332709465 7.62898898755 301.308322009) + (1205.0 8.7393994401 7.60122161 301.339138759) + (1210.0 8.74552793371 7.57345423246 301.369955509) + (1215.0 8.75165642731 7.54568685491 301.400772259) + (1220.0 8.75778492092 7.51791947737 301.43158901) + (1225.0 8.76391341452 7.49015209982 301.46240576) + (1230.0 8.76818252215 7.46990516883 301.489568668) + (1235.0 8.76988179508 7.46005215541 301.511681645) + (1240.0 8.771581068 7.45019914198 301.533794623) + (1245.0 8.77328034093 7.44034612856 301.5559076) + (1250.0 8.77497961385 7.43049311513 301.578020578) + (1255.0 8.77667888677 7.42064010171 301.600133555) + (1260.0 8.7783781597 7.41078708828 301.622246532) + (1265.0 8.78007743262 7.40093407485 301.64435951) + (1270.0 8.78177670555 7.39108106143 301.666472487) + (1275.0 8.78347597847 7.381228048 301.688585464) + (1280.0 8.7851752514 7.37137503458 301.710698442) + (1285.0 8.78687452432 7.36152202115 301.732811419) + (1290.0 8.78857379725 7.35166900773 301.754924397) + (1295.0 8.79027307017 7.3418159943 301.777037374) + (1300.0 8.7919723431 7.33196298088 301.799150351) + (1305.0 8.79367161602 7.32210996745 301.821263329) + (1310.0 8.79537088895 7.31225695402 301.843376306) + (1315.0 8.79707016187 7.3024039406 301.865489283) + (1320.0 8.79876943479 7.29255092717 301.887602261) + (1325.0 8.80046870772 7.28269791375 301.909715238) + (1330.0 8.80216798064 7.27284490032 301.931828216) + (1335.0 8.80345002487 7.27037429336 301.950702634) + (1340.0 8.80449597234 7.27208116099 301.967744453) + (1345.0 8.8055419198 7.27378802862 301.984786271) + (1350.0 8.80658786727 7.27549489624 302.00182809) + (1355.0 8.80763381473 7.27720176387 302.018869908) + (1360.0 8.8086797622 7.2789086315 302.035911727) + (1365.0 8.80972570966 7.28061549913 302.052953545) + (1370.0 8.81077165713 7.28232236676 302.069995364) + (1375.0 8.81181760459 7.28402923439 302.087037182) + (1380.0 8.81286355206 7.28573610202 302.104079001) + (1385.0 8.81390949952 7.28744296965 302.121120819) + (1390.0 8.81495544699 7.28914983727 302.138162638) + (1395.0 8.81600139445 7.2908567049 302.155204456) + (1400.0 8.81704734192 7.29256357253 302.172246275) + (1405.0 8.81809328938 7.29427044016 302.189288094) + (1410.0 8.81913923685 7.29597730779 302.206329912) + (1415.0 8.82018518431 7.29768417542 302.223371731) + (1420.0 8.82123113178 7.29939104305 302.240413549) + (1425.0 8.82227707924 7.30109791068 302.257455368) + (1430.0 8.82332302671 7.30280477831 302.274497186) + (1435.0 8.82436897417 7.30451164593 302.291539005) + (1440.0 8.82541492164 7.30621851356 302.308580823) + (1445.0 8.8264608691 7.30792538119 302.325622642) + (1450.0 8.82980499965 7.31411337437 302.342200633) + (1455.0 8.83363827328 7.32125512601 302.358679903) + (1460.0 8.83747154691 7.32839687764 302.375159173) + (1465.0 8.84130482054 7.33553862927 302.391638443) + (1470.0 8.84513809417 7.34268038091 302.408117713) + (1475.0 8.8489713678 7.34982213254 302.424596984) + (1480.0 8.85280464143 7.35696388418 302.441076254) + (1485.0 8.85663791506 7.36410563581 302.457555524) + (1490.0 8.86047118869 7.37124738745 302.474034794) + (1495.0 8.86430446231 7.37838913908 302.490514064) + (1500.0 8.86813773594 7.38553089071 302.506993334) + (1505.0 8.87197100957 7.39267264235 302.523472605) + (1510.0 8.8758042832 7.39981439398 302.539951875) + (1515.0 8.87963755683 7.40695614562 302.556431145) + (1520.0 8.88347083046 7.41409789725 302.572910415) + (1525.0 8.88730410409 7.42123964888 302.589389685) + (1530.0 8.89113737772 7.42838140052 302.605868955) + (1535.0 8.89497065135 7.43552315215 302.622348226) + (1540.0 8.89880392498 7.44266490379 302.638827496) + (1545.0 8.90263719861 7.44980665542 302.655306766) + (1550.0 8.90647047224 7.45694840705 302.671786036) + (1555.0 8.91030374586 7.46409015869 302.688265306) + (1560.0 8.91413701949 7.47123191032 302.704744577) + (1565.0 8.91797029312 7.47837366196 302.721223847) + (1570.0 8.92180356675 7.48551541359 302.737703117) + (1575.0 8.92995697971 7.48958529161 302.756743245) + (1580.0 8.93926578965 7.49283361431 302.77646826) + (1585.0 8.94857459959 7.496081937 302.796193275) + (1590.0 8.95788340953 7.49933025969 302.81591829) + (1595.0 8.96719221947 7.50257858238 302.835643305) + (1600.0 8.97650102941 7.50582690508 302.85536832) + (1605.0 8.98580983935 7.50907522777 302.875093335) + (1610.0 8.9951186493 7.51232355046 302.89481835) + (1615.0 9.00442745924 7.51557187315 302.914543365) + (1620.0 9.01373626918 7.51882019585 302.93426838) + (1625.0 9.02304507912 7.52206851854 302.953993395) + (1630.0 9.03235388906 7.52531684123 302.973718411) + (1635.0 9.041662699 7.52856516392 302.993443426) + (1640.0 9.05097150894 7.53181348662 303.013168441) + (1645.0 9.06028031888 7.53506180931 303.032893456) + (1650.0 9.06958912882 7.538310132 303.052618471) + (1655.0 9.07889793876 7.5415584547 303.072343486) + (1660.0 9.0882067487 7.54480677739 303.092068501) + (1665.0 9.09751555864 7.54805510008 303.111793516) + (1670.0 9.10682436858 7.55130342277 303.131518531) + (1675.0 9.11613317852 7.55455174547 303.151243546) + (1680.0 9.12544198846 7.55780006816 303.170968561) + (1685.0 9.1347507984 7.56104839085 303.190693576) + (1690.0 9.14405960834 7.56429671354 303.210418591) + (1695.0 9.15336841829 7.56754503624 303.230143606) + (1700.0 9.16267722823 7.57079335893 303.249868621) + (1705.0 9.17198603817 7.57404168162 303.269593636) + (1710.0 9.18349377603 7.57239347669 303.290540127) + (1715.0 9.19922226437 7.56134659115 303.31383119) + (1720.0 9.2149507527 7.55029970561 303.337122252) + (1725.0 9.23067924103 7.53925282007 303.360413315) + (1730.0 9.24640772936 7.52820593453 303.383704377) + (1735.0 9.2621362177 7.51715904899 303.40699544) + (1740.0 9.27786470603 7.50611216345 303.430286502) + (1745.0 9.29359319436 7.49506527791 303.453577565) + (1750.0 9.3093216827 7.48401839237 303.476868627) + (1755.0 9.32505017103 7.47297150683 303.50015969) + (1760.0 9.34077865936 7.46192462129 303.523450752) + (1765.0 9.35650714769 7.45087773575 303.546741815) + (1770.0 9.37223563603 7.43983085021 303.570032877) + (1775.0 9.38796412436 7.42878396467 303.59332394) + (1780.0 9.40369261269 7.41773707912 303.616615003) + (1785.0 9.41942110102 7.40669019358 303.639906065) + (1790.0 9.43514958936 7.39564330804 303.663197128) + (1795.0 9.45087807769 7.3845964225 303.68648819) + (1800.0 9.46660656602 7.37354953696 303.709779253) + (1805.0 9.48233505436 7.36250265142 303.733070315) + (1810.0 9.49806354269 7.35145576588 303.756361378) + (1815.0 9.51379203102 7.34040888034 303.77965244) + (1820.0 9.52952051935 7.3293619948 303.802943503) + (1825.0 9.54524900769 7.31831510926 303.826234565) + (1830.0 9.56097749602 7.30726822372 303.849525628) + (1835.0 9.57670598435 7.29622133818 303.87281669) + (1840.0 9.59243447268 7.28517445264 303.896107753) + (1845.0 9.60816296102 7.2741275671 303.919398815) + (1850.0 9.62389144935 7.26308068156 303.942689878) + (1855.0 9.63961993768 7.25203379602 303.96598094) + (1860.0 9.65432709188 7.2376578099 303.988680381) + (1865.0 9.66596304977 7.21327107309 304.009600791) + (1870.0 9.67759900765 7.18888433629 304.0305212) + (1875.0 9.68923496554 7.16449759948 304.051441609) + (1880.0 9.70087092342 7.14011086267 304.072362018) + (1885.0 9.71250688131 7.11572412587 304.093282427) + (1890.0 9.72414283919 7.09133738906 304.114202836) + (1895.0 9.73577879708 7.06695065226 304.135123245) + (1900.0 9.74741475497 7.04256391545 304.156043654) + (1905.0 9.75905071285 7.01817717864 304.176964064) + (1910.0 9.77068667074 6.99379044184 304.197884473) + (1915.0 9.78232262862 6.96940370503 304.218804882) + (1920.0 9.79395858651 6.94501696822 304.239725291) + (1925.0 9.8055945444 6.92063023142 304.2606457) + (1930.0 9.81723050228 6.89624349461 304.281566109) + (1935.0 9.82886646017 6.8718567578 304.302486518) + (1940.0 9.84050241805 6.847470021 304.323406928) + (1945.0 9.85213837594 6.82308328419 304.344327337) + (1950.0 9.86377433382 6.79869654738 304.365247746) + (1955.0 9.87541029171 6.77430981058 304.386168155) + (1960.0 9.8870462496 6.74992307377 304.407088564) + (1965.0 9.89868220748 6.72553633696 304.428008973) + (1970.0 9.91031816537 6.70114960016 304.448929382) + (1975.0 9.92195412325 6.67676286335 304.469849792) + (1980.0 9.93359008114 6.65237612654 304.490770201) + (1985.0 9.94522603903 6.62798938974 304.51169061) + (1990.0 9.95686199691 6.60360265293 304.532611019) + (1995.0 9.9684979548 6.57921591612 304.553531428) + (2000.0 9.98013391268 6.55482917932 304.574451837) +); + +// Update internal field. +updateInternalFields true; + +// Update boundary field. +updateBoundaryFields false; + +// ************************************************************************* // diff --git a/exampleCases/example.ADM.ssc.zeroMQ/zeromqSSC/exampleSSC.m b/exampleCases/example.ADM.ssc.zeroMQ/zeromqSSC/exampleSSC.m new file mode 100644 index 000000000..b956b8f09 --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/zeromqSSC/exampleSSC.m @@ -0,0 +1,63 @@ +% clear all; close all; clc; +% +% MATLAB can use zeroMQ, but it is not necessarily so straight-forward. The easiest solution found was +% using "jeroMQ", which can be downloaded from https://github.com/zeromq/jeromq. After installation, +% Update the path below and you should be all set. +% +% For more information, check out: +% https://mathworks.com/matlabcentral/answers/269061-how-do-i-integrate-zeromq-library-with-matlab-i-want-my-matlab-program-to-be-a-subscriber-of-zeromq +% +% Note: to install jeroMQ, you need to have 'maven' installed. When using Maven to install jeroMQ, +% you may run into an error about the unit testing. If so, disable them and run again using +% 'mvn install -DskipTests' +% +% Recommended Java JDK version: 1.8.0_171 (tested by excluding unit tests) +% +% + +% Setup zeroMQ server +zmqJar = '/home/bmdoekemeijer/OpenFOAM/zeroMQ/jeromq-0.4.4-SNAPSHOT.jar'; +zmqPort = 5553; % Port to connect to (must match turbineArrayProperies) +zmqTimeout = 3600; % [s] +zmqVerbose = true; % Output text +zmqServer = zeromqObj(zmqJar,zmqPort,zmqTimeout,zmqVerbose); + +disp(['Entering wind farm controller loop...']); +measurementVector = []; +while 1 + % Receive information from SOWFA + dataReceived = zmqServer.receive(); + currentTime = dataReceived(1,1); + measurementVector = [measurementVector;dataReceived(1,2:end)]; + + if currentTime < 10 + yawAngleArrayOut = [270.0 270.0]; + pitchAngleArrayOut = [ 0.0 0.0]; + elseif currentTime < 20 + yawAngleArrayOut = [260.0 270.0]; + pitchAngleArrayOut = [ 0.0 0.0]; + elseif currentTime < 30 + yawAngleArrayOut = [260.0 280.0]; + pitchAngleArrayOut = [ 0.0 0.0]; + elseif currentTime < 50 + yawAngleArrayOut = [263.0 285.0]; + pitchAngleArrayOut = [ 0.0 0.0]; + else + yawAngleArrayOut = [240.0 270.0]; + pitchAngleArrayOut = [ 0.0 0.0]; + end + disp([datestr(rem(now,1)) '__ Synthesizing message string.']); + dataSend = setupZmqSignal(yawAngleArrayOut,pitchAngleArrayOut); + + % Send a message (control action) back to SOWFA + zmqServer.send(dataSend); +end +% Close connection +zmqServer.disconnect() + +function [dataOut] = setupZmqSignal(yawAngles,pitchAngles) +dataOut = []; +for i = 1:length(yawAngles) + dataOut = [dataOut yawAngles(i) pitchAngles(i)]; +end +end \ No newline at end of file diff --git a/exampleCases/example.ADM.ssc.zeroMQ/zeromqSSC/zeromqObj.m b/exampleCases/example.ADM.ssc.zeroMQ/zeromqSSC/zeromqObj.m new file mode 100644 index 000000000..47a5a505f --- /dev/null +++ b/exampleCases/example.ADM.ssc.zeroMQ/zeromqSSC/zeromqObj.m @@ -0,0 +1,121 @@ +classdef zeromqObj < handle + + properties (Access = public) + port + status + timeoutBuffer + verbose + lastMessageSent_string + lastMessageSent_data + lastMessageRecvd_string + lastMessageRecvd_data + end + + properties (Access = private) + context + socket + end + methods + function obj = zeromqObj(jeromqPath,port,timeoutBuffer,verbose) + % Import path and set-up zeroMQ commands + javaaddpath(jeromqPath,'-dpath'); + + % Setup connection details + obj.port = port; + obj.timeoutBuffer = timeoutBuffer; + obj.verbose = verbose; + + % Initialize empty strings and vectors + obj.lastMessageSent_string = ''; + obj.lastMessageSent_data = []; + obj.lastMessageRecvd_string = ''; + obj.lastMessageRecvd_data = []; + obj.status = 'initialized'; + + % Setup connection + obj.connect(); + end + + function [] = connect(obj) + import org.zeromq.* + + % Setup connection + if obj.verbose + disp([datestr(rem(now,1)) '__ Connecting to tcp://*:' num2str(obj.port) '.']); + end + + obj.context = zmq.Ctx(); + obj.socket = obj.context.createSocket(ZMQ.REP); + obj.socket.bind(['tcp://*:' num2str(obj.port)]); + obj.status = 'connected'; + end + + function [] = disconnect(obj) + if obj.verbose + disp([datestr(rem(now,1)) '__ Disconnecting from tcp://*:' num2str(obj.port) '.']); + end + obj.socket.close(); + obj.status = 'disconnected'; + end + + + function [dataReceived] = receive(obj) + message = ''; + timeoutTimer = tic; + while length(message) <= 0 + message = obj.socket.recv(1); % Receive information + if toc(timeoutTimer) > obj.timeoutBuffer % Time-out + obj.socket.close() + error([datestr(rem(now,1)) '__No message received within timeoutBuffer: ' ... + num2str(obj.timeoutBuffer) ' s. Exiting...']); + end + pause(0.010); % wait 10 ms + end + + % Once message received: convert to floats + json_data = native2unicode(message.data)'; % Received message + + % cut down json_data to remove all non-used bytes + sortedFloats = textscan( json_data, '%f', 'Delimiter',' ' ); + dataReceived = sortedFloats{1}'; % row vector with data + + obj.lastMessageRecvd_string = json_data; + obj.lastMessageRecvd_data = dataReceived; + + if obj.verbose + tmp_recvData_string = strjoin(arrayfun(@(x) num2str(x),dataReceived,'UniformOutput',false),' '); + disp([datestr(rem(now,1)) '__ Received data: [' num2str(tmp_recvData_string) ']']); + end + end + + function [] = send(obj,data) + if (size(data,1)>1 && size(data,2)>1) + error('Currently, we only support sending data in vector format.'); + end + + % Create string from data vector + str_send = num2str(data(1)); + for i = 2:length(data) + str_send = [str_send ' ' num2str(data(i))]; + end + + % Send a message + message = zmq.Msg(length(str_send)); + message.put(unicode2native(str_send)); + obj.socket.send(message, 0); + + obj.lastMessageSent_string = str_send; + obj.lastMessageSent_data = data; + + if obj.verbose + disp([datestr(rem(now,1)) '__ Sent message: [' str_send ']']); + end + end + + end + + methods (Hidden) + % + end +end + diff --git a/exampleCases/example.ADM/runscript.solve.1 b/exampleCases/example.ADM/runscript.solve.1 index 2cc88e8b7..f0a3a2694 100755 --- a/exampleCases/example.ADM/runscript.solve.1 +++ b/exampleCases/example.ADM/runscript.solve.1 @@ -11,11 +11,11 @@ cd $PBS_O_WORKDIR # User Input. -OpenFOAMversion=2.4.x-central # OpenFOAM version +OpenFOAMversion=2.4.x_SSC # OpenFOAM version startTime=0 # Start time cores=180 # Enter the number of cores you will preprocess on. runNumber=1 # Enter the run number (useful for keeping track of restarts). -solver=windPlantSolver.ADM # Enter the name of the flow solver. +solver=pisoFoamTurbine.ADM # Enter the name of the flow solver. diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/0.original/U b/exampleCases/example.ALMAdvanced.ssc.timeTable/0.original/U new file mode 100755 index 000000000..6dbf85ec5 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/0.original/U @@ -0,0 +1,58 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform ($U0Mag 0 0); + +boundaryField +{ + lower + { + type slip; + } + upper + { + type slip; + } + west + { + type fixedValue; + value uniform ($U0Mag 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform ($U0Mag 0 0); + } + south + { + type slip; + } + north + { + type slip; + } +} + + + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/0.original/k b/exampleCases/example.ALMAdvanced.ssc.timeTable/0.original/k new file mode 100755 index 000000000..c76a7e261 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/0.original/k @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k ; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.0; + +boundaryField +{ + lower + { + type zeroGradient; + value uniform 0.0; + } + upper + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedValue; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/0.original/nuSgs b/exampleCases/example.ALMAdvanced.ssc.timeTable/0.original/nuSgs new file mode 100755 index 000000000..18e32f76e --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/0.original/nuSgs @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nuSgs; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform $nuSgs0; + +boundaryField +{ + lower + { + type zeroGradient; + value uniform 0.0; + } + upper + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedValue; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/0.original/p b/exampleCases/example.ALMAdvanced.ssc.timeTable/0.original/p new file mode 100755 index 000000000..d77aa1268 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/0.original/p @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0000"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + lower + { + type zeroGradient; + value uniform 0; + } + upper + { + type zeroGradient; + value uniform 0; + } + east + { + type fixedValue; + value uniform 0; + } + west + { + type zeroGradient; + value uniform 0; + } + south + { + type zeroGradient; + value uniform 0; + } + north + { + type zeroGradient; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/SC_INPUT.txt b/exampleCases/example.ALMAdvanced.ssc.timeTable/SC_INPUT.txt new file mode 100644 index 000000000..b54f8800d --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/SC_INPUT.txt @@ -0,0 +1,7 @@ +Time(s) Turbine Yaw(degCompass) Pitch(deg) +0 0 270 0.0 +5 0 260 0.0 +20 0 250 0.0 +30 0 240 0.0 +0 1 270 0.0 +10 1 280 0.0 \ No newline at end of file diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/LESProperties b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/LESProperties new file mode 100755 index 000000000..5fcbb46e9 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/LESProperties @@ -0,0 +1,124 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object LESProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#include "../setUp" + + +LESModel $LESModel; +//LESModel SmagorinskyABL; +//LESModel Smagorinsky; +//LESModel dynLagrangianCsBound; + +delta smooth; + +SmagorinskyCoeffs +{ + ce $ce; + ck $ck; +} + +SmagorinskyABLCoeffs +{ + ce $ce; + ck $ck; + TName "T"; + kappatName "kappat"; +} + +oneEqEddyABLCoeffs +{ + ce $ce; + ck $ck; + TName "T"; + kappatName "kappat"; +} + +oneEqEddyCoeffs +{ + ce $ce; + ck $ck; +} + +printCoeffs on; + +dynLagrangianCsBoundCoeffs +{ + filter simple; +} + +cubeRootVolCoeffs +{ + deltaCoeff 1; +} + +PrandtlCoeffs +{ + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + smoothCoeffs + { + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + maxDeltaRatio 1.1; + } + + Cdelta 0.158; +} + +vanDriestCoeffs +{ + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + smoothCoeffs + { + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + maxDeltaRatio 1.1; + } + + Aplus 26; + Cdelta 0.158; +} + +smoothCoeffs +{ + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + maxDeltaRatio 1.1; +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/Cylinder1 b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/Cylinder1 new file mode 100644 index 000000000..7106c17d0 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/Cylinder1 @@ -0,0 +1,23 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.5000) + ( 0.00 0.000 0.5000) + ( 180.00 0.000 0.5000) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/Cylinder2 b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/Cylinder2 new file mode 100644 index 000000000..b2e7923f1 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/Cylinder2 @@ -0,0 +1,23 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.3500) + ( 0.00 0.000 0.3500) + ( 180.00 0.000 0.3500) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU21_A17 b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU21_A17 new file mode 100644 index 000000000..17eb9de96 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU21_A17 @@ -0,0 +1,162 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180 0 0.0185) + (-175 0.394 0.0332) + (-170 0.788 0.0945) + (-160 0.67 0.2809) + (-155 0.749 0.3932) + (-150 0.797 0.5112) + (-145 0.818 0.6309) + (-140 0.813 0.7485) + (-135 0.786 0.8612) + (-130 0.739 0.9665) + (-125 0.675 1.0625) + (-120 0.596 1.1476) + (-115 0.505 1.2206) + (-110 0.403 1.2805) + (-105 0.294 1.3265) + (-100 0.179 1.3582) + (-95 0.06 1.3752) + (-90 -0.06 1.3774) + (-85 -0.179 1.3648) + (-80 -0.295 1.3376) + (-75 -0.407 1.2962) + (-70 -0.512 1.2409) + (-65 -0.608 1.1725) + (-60 -0.693 1.0919) + (-55 -0.764 1.0002) + (-50 -0.82 0.899 ) + (-45 -0.857 0.79 ) + (-40 -0.875 0.6754) + (-35 -0.869 0.5579) + (-30 -0.838 0.4405) + (-25 -0.791 0.3256) + (-24 -0.794 0.3013) + (-23 -0.805 0.2762) + (-22 -0.821 0.2506) + (-21 -0.843 0.2246) + (-20 -0.869 0.1983) + (-19 -0.899 0.172 ) + (-18 -0.931 0.1457) + (-17 -0.964 0.1197) + (-16 -0.999 0.094 ) + (-15 -1.033 0.0689) + (-14.5 -1.05 0.0567) + (-12.01 -0.953 0.0271) + (-11 -0.9 0.0303) + (-9.98 -0.827 0.0287) + (-8.12 -0.536 0.0124) + (-7.62 -0.467 0.0109) + (-7.11 -0.393 0.0092) + (-6.6 -0.323 0.0083) + (-6.5 -0.311 0.0089) + (-6 -0.245 0.0082) + (-5.5 -0.178 0.0074) + (-5 -0.113 0.0069) + (-4.5 -0.048 0.0065) + (-4 0.016 0.0063) + (-3.5 0.08 0.0061) + (-3 0.145 0.0058) + (-2.5 0.208 0.0057) + (-2 0.27 0.0057) + (-1.5 0.333 0.0057) + (-1 0.396 0.0057) + (-0.5 0.458 0.0057) + ( 0 0.521 0.0057) + ( 0.5 0.583 0.0057) + ( 1 0.645 0.0058) + ( 1.5 0.706 0.0058) + ( 2 0.768 0.0059) + ( 2.5 0.828 0.0061) + ( 3 0.888 0.0063) + ( 3.5 0.948 0.0066) + ( 4 0.996 0.0071) + ( 4.5 1.046 0.0079) + ( 5 1.095 0.009 ) + ( 5.5 1.145 0.0103) + ( 6 1.192 0.0113) + ( 6.5 1.239 0.0122) + ( 7 1.283 0.0131) + ( 7.5 1.324 0.0139) + ( 8 1.358 0.0147) + ( 8.5 1.385 0.0158) + ( 9 1.403 0.0181) + ( 9.5 1.401 0.0211) + ( 10 1.358 0.0255) + ( 10.5 1.313 0.0301) + ( 11 1.287 0.0347) + ( 11.5 1.274 0.0401) + ( 12 1.272 0.0468) + ( 12.5 1.273 0.0545) + ( 13 1.273 0.0633) + ( 13.5 1.273 0.0722) + ( 14 1.272 0.0806) + ( 14.5 1.273 0.09 ) + ( 15 1.275 0.0987) + ( 15.5 1.281 0.1075) + ( 16 1.284 0.117 ) + ( 16.5 1.296 0.127 ) + ( 17 1.306 0.1368) + ( 17.5 1.308 0.1464) + ( 18 1.308 0.1562) + ( 18.5 1.308 0.1664) + ( 19 1.308 0.177 ) + ( 19.5 1.307 0.1878) + ( 20 1.311 0.1987) + ( 20.5 1.325 0.21 ) + ( 21 1.324 0.2214) + ( 22 1.277 0.2499) + ( 23 1.229 0.2786) + ( 24 1.182 0.3077) + ( 25 1.136 0.3371) + ( 26 1.093 0.3664) + ( 28 1.017 0.4246) + ( 30 0.962 0.4813) + ( 32 0.937 0.5356) + ( 35 0.947 0.6127) + ( 40 0.95 0.7396) + ( 45 0.928 0.8623) + ( 50 0.884 0.9781) + ( 55 0.821 1.0846) + ( 60 0.74 1.1796) + ( 65 0.646 1.2617) + ( 70 0.54 1.3297) + ( 75 0.425 1.3827) + ( 80 0.304 1.4202) + ( 85 0.179 1.4423) + ( 90 0.053 1.4512) + ( 95 -0.073 1.448 ) + ( 100 -0.198 1.4294) + ( 105 -0.319 1.3954) + ( 110 -0.434 1.3464) + ( 115 -0.541 1.2829) + ( 120 -0.637 1.2057) + ( 125 -0.72 1.1157) + ( 130 -0.787 1.0144) + ( 135 -0.836 0.9033) + ( 140 -0.864 0.7845) + ( 145 -0.869 0.6605) + ( 150 -0.847 0.5346) + ( 155 -0.795 0.4103) + ( 160 -0.711 0.2922) + ( 170 -0.788 0.0969) + ( 175 -0.394 0.0334) + ( 180 0 0.0185) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU25_A17 b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU25_A17 new file mode 100644 index 000000000..56981e639 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU25_A17 @@ -0,0 +1,161 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0202) + (-175.00 0.368 0.0324) + (-170.00 0.735 0.0943) + (-160.00 0.695 0.2848) + (-155.00 0.777 0.4001) + (-150.00 0.828 0.5215) + (-145.00 0.850 0.6447) + (-140.00 0.846 0.7660) + (-135.00 0.818 0.8823) + (-130.00 0.771 0.9911) + (-125.00 0.705 1.0905) + (-120.00 0.624 1.1787) + (-115.00 0.530 1.2545) + (-110.00 0.426 1.3168) + (-105.00 0.314 1.3650) + (-100.00 0.195 1.3984) + ( -95.00 0.073 1.4169) + ( -90.00 -0.050 1.4201) + ( -85.00 -0.173 1.4081) + ( -80.00 -0.294 1.3811) + ( -75.00 -0.409 1.3394) + ( -70.00 -0.518 1.2833) + ( -65.00 -0.617 1.2138) + ( -60.00 -0.706 1.1315) + ( -55.00 -0.780 1.0378) + ( -50.00 -0.839 0.9341) + ( -45.00 -0.879 0.8221) + ( -40.00 -0.898 0.7042) + ( -35.00 -0.893 0.5829) + ( -30.00 -0.862 0.4616) + ( -25.00 -0.803 0.3441) + ( -24.00 -0.792 0.3209) + ( -23.00 -0.789 0.2972) + ( -22.00 -0.792 0.2730) + ( -21.00 -0.801 0.2485) + ( -20.00 -0.815 0.2237) + ( -19.00 -0.833 0.1990) + ( -18.00 -0.854 0.1743) + ( -17.00 -0.879 0.1498) + ( -16.00 -0.905 0.1256) + ( -15.00 -0.932 0.1020) + ( -14.00 -0.959 0.0789) + ( -13.00 -0.985 0.0567) + ( -13.00 -0.985 0.0567) + ( -12.01 -0.953 0.0271) + ( -11.00 -0.900 0.0303) + ( -9.98 -0.827 0.0287) + ( -8.98 -0.753 0.0271) + ( -8.47 -0.691 0.0264) + ( -7.45 -0.555 0.0114) + ( -6.42 -0.413 0.0094) + ( -5.40 -0.271 0.0086) + ( -5.00 -0.220 0.0073) + ( -4.50 -0.152 0.0071) + ( -4.00 -0.084 0.0070) + ( -3.50 -0.018 0.0069) + ( -3.00 0.049 0.0068) + ( -2.50 0.115 0.0068) + ( -2.00 0.181 0.0068) + ( -1.50 0.247 0.0067) + ( -1.00 0.312 0.0067) + ( -0.50 0.377 0.0067) + ( 0.00 0.444 0.0065) + ( 0.50 0.508 0.0065) + ( 1.00 0.573 0.0066) + ( 1.50 0.636 0.0067) + ( 2.00 0.701 0.0068) + ( 2.50 0.765 0.0069) + ( 3.00 0.827 0.0070) + ( 3.50 0.890 0.0071) + ( 4.00 0.952 0.0073) + ( 4.50 1.013 0.0076) + ( 5.00 1.062 0.0079) + ( 6.00 1.161 0.0099) + ( 6.50 1.208 0.0117) + ( 7.00 1.254 0.0132) + ( 7.50 1.301 0.0143) + ( 8.00 1.336 0.0153) + ( 8.50 1.369 0.0165) + ( 9.00 1.400 0.0181) + ( 9.50 1.428 0.0211) + ( 10.00 1.442 0.0262) + ( 10.50 1.427 0.0336) + ( 11.00 1.374 0.0420) + ( 11.50 1.316 0.0515) + ( 12.00 1.277 0.0601) + ( 12.50 1.250 0.0693) + ( 13.00 1.246 0.0785) + ( 13.50 1.247 0.0888) + ( 14.00 1.256 0.1000) + ( 14.50 1.260 0.1108) + ( 15.00 1.271 0.1219) + ( 15.50 1.281 0.1325) + ( 16.00 1.289 0.1433) + ( 16.50 1.294 0.1541) + ( 17.00 1.304 0.1649) + ( 17.50 1.309 0.1754) + ( 18.00 1.315 0.1845) + ( 18.50 1.320 0.1953) + ( 19.00 1.330 0.2061) + ( 19.50 1.343 0.2170) + ( 20.00 1.354 0.2280) + ( 20.50 1.359 0.2390) + ( 21.00 1.360 0.2536) + ( 22.00 1.325 0.2814) + ( 23.00 1.288 0.3098) + ( 24.00 1.251 0.3386) + ( 25.00 1.215 0.3678) + ( 26.00 1.181 0.3972) + ( 28.00 1.120 0.4563) + ( 30.00 1.076 0.5149) + ( 32.00 1.056 0.5720) + ( 35.00 1.066 0.6548) + ( 40.00 1.064 0.7901) + ( 45.00 1.035 0.9190) + ( 50.00 0.980 1.0378) + ( 55.00 0.904 1.1434) + ( 60.00 0.810 1.2333) + ( 65.00 0.702 1.3055) + ( 70.00 0.582 1.3587) + ( 75.00 0.456 1.3922) + ( 80.00 0.326 1.4063) + ( 85.00 0.197 1.4042) + ( 90.00 0.072 1.3985) + ( 95.00 -0.050 1.3973) + ( 100.00 -0.170 1.3810) + ( 105.00 -0.287 1.3498) + ( 110.00 -0.399 1.3041) + ( 115.00 -0.502 1.2442) + ( 120.00 -0.596 1.1709) + ( 125.00 -0.677 1.0852) + ( 130.00 -0.743 0.9883) + ( 135.00 -0.792 0.8818) + ( 140.00 -0.821 0.7676) + ( 145.00 -0.826 0.6481) + ( 150.00 -0.806 0.5264) + ( 155.00 -0.758 0.4060) + ( 160.00 -0.679 0.2912) + ( 170.00 -0.735 0.0995) + ( 175.00 -0.368 0.0356) + ( 180.00 0.000 0.0202) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU30_A17 b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU30_A17 new file mode 100644 index 000000000..35fb11988 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU30_A17 @@ -0,0 +1,163 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0267) + (-175.00 0.274 0.0370) + (-170.00 0.547 0.0968) + (-160.00 0.685 0.2876) + (-155.00 0.766 0.4025) + (-150.00 0.816 0.5232) + (-145.00 0.836 0.6454) + (-140.00 0.832 0.7656) + (-135.00 0.804 0.8807) + (-130.00 0.756 0.9882) + (-125.00 0.690 1.0861) + (-120.00 0.609 1.1730) + (-115.00 0.515 1.2474) + (-110.00 0.411 1.3084) + (-105.00 0.300 1.3552) + (-100.00 0.182 1.3875) + ( -95.00 0.061 1.4048) + ( -90.00 -0.061 1.4070) + ( -85.00 -0.183 1.3941) + ( -80.00 -0.302 1.3664) + ( -75.00 -0.416 1.3240) + ( -70.00 -0.523 1.2676) + ( -65.00 -0.622 1.1978) + ( -60.00 -0.708 1.1156) + ( -55.00 -0.781 1.0220) + ( -50.00 -0.838 0.9187) + ( -45.00 -0.877 0.8074) + ( -40.00 -0.895 0.6904) + ( -35.00 -0.889 0.5703) + ( -30.00 -0.858 0.4503) + ( -25.00 -0.832 0.3357) + ( -24.00 -0.852 0.3147) + ( -23.00 -0.882 0.2946) + ( -22.00 -0.919 0.2752) + ( -21.00 -0.963 0.2566) + ( -20.00 -1.013 0.2388) + ( -19.00 -1.067 0.2218) + ( -18.00 -1.125 0.2056) + ( -17.00 -1.185 0.1901) + ( -16.00 -1.245 0.1754) + ( -15.25 -1.290 0.1649) + ( -14.24 -1.229 0.1461) + ( -13.24 -1.148 0.1263) + ( -12.22 -1.052 0.1051) + ( -11.22 -0.965 0.0886) + ( -10.19 -0.867 0.0740) + ( -9.70 -0.822 0.0684) + ( -9.18 -0.769 0.0605) + ( -8.18 -0.756 0.0270) + ( -7.19 -0.690 0.0180) + ( -6.65 -0.616 0.0166) + ( -6.13 -0.542 0.0152) + ( -6.00 -0.525 0.0117) + ( -5.50 -0.451 0.0105) + ( -5.00 -0.382 0.0097) + ( -4.50 -0.314 0.0092) + ( -4.00 -0.251 0.0091) + ( -3.50 -0.189 0.0089) + ( -3.00 -0.120 0.0089) + ( -2.50 -0.051 0.0088) + ( -2.00 0.017 0.0088) + ( -1.50 0.085 0.0088) + ( -1.00 0.152 0.0088) + ( -0.50 0.219 0.0088) + ( 0.00 0.288 0.0087) + ( 0.50 0.354 0.0087) + ( 1.00 0.421 0.0088) + ( 1.50 0.487 0.0089) + ( 2.00 0.554 0.0090) + ( 2.50 0.619 0.0091) + ( 3.00 0.685 0.0092) + ( 3.50 0.749 0.0093) + ( 4.00 0.815 0.0095) + ( 4.50 0.879 0.0096) + ( 5.00 0.944 0.0097) + ( 5.50 1.008 0.0099) + ( 6.00 1.072 0.0101) + ( 6.50 1.135 0.0103) + ( 7.00 1.197 0.0107) + ( 7.50 1.256 0.0112) + ( 8.00 1.305 0.0125) + ( 9.00 1.390 0.0155) + ( 9.50 1.424 0.0171) + ( 10.00 1.458 0.0192) + ( 10.50 1.488 0.0219) + ( 11.00 1.512 0.0255) + ( 11.50 1.533 0.0307) + ( 12.00 1.549 0.0370) + ( 12.50 1.558 0.0452) + ( 13.00 1.470 0.0630) + ( 13.50 1.398 0.0784) + ( 14.00 1.354 0.0931) + ( 14.50 1.336 0.1081) + ( 15.00 1.333 0.1239) + ( 15.50 1.326 0.1415) + ( 16.00 1.329 0.1592) + ( 16.50 1.326 0.1743) + ( 17.00 1.321 0.1903) + ( 17.50 1.331 0.2044) + ( 18.00 1.333 0.2186) + ( 18.50 1.340 0.2324) + ( 19.00 1.362 0.2455) + ( 19.50 1.382 0.2584) + ( 20.00 1.398 0.2689) + ( 20.50 1.426 0.2814) + ( 21.00 1.437 0.2943) + ( 22.00 1.418 0.3246) + ( 23.00 1.397 0.3557) + ( 24.00 1.376 0.3875) + ( 25.00 1.354 0.4198) + ( 26.00 1.332 0.4524) + ( 28.00 1.293 0.5183) + ( 30.00 1.265 0.5843) + ( 32.00 1.253 0.6492) + ( 35.00 1.264 0.7438) + ( 40.00 1.258 0.8970) + ( 45.00 1.217 1.0402) + ( 50.00 1.146 1.1686) + ( 55.00 1.049 1.2779) + ( 60.00 0.932 1.3647) + ( 65.00 0.799 1.4267) + ( 70.00 0.657 1.4621) + ( 75.00 0.509 1.4708) + ( 80.00 0.362 1.4544) + ( 85.00 0.221 1.4196) + ( 90.00 0.092 1.3938) + ( 95.00 -0.030 1.3943) + ( 100.00 -0.150 1.3798) + ( 105.00 -0.267 1.3504) + ( 110.00 -0.379 1.3063) + ( 115.00 -0.483 1.2481) + ( 120.00 -0.578 1.1763) + ( 125.00 -0.660 1.0919) + ( 130.00 -0.727 0.9962) + ( 135.00 -0.777 0.8906) + ( 140.00 -0.807 0.7771) + ( 145.00 -0.815 0.6581) + ( 150.00 -0.797 0.5364) + ( 155.00 -0.750 0.4157) + ( 160.00 -0.673 0.3000) + ( 170.00 -0.547 0.1051) + ( 175.00 -0.274 0.0388) + ( 180.00 0.000 0.0267) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU35_A17 b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU35_A17 new file mode 100644 index 000000000..041013e24 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU35_A17 @@ -0,0 +1,155 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0407) + (-175.00 0.223 0.0507) + (-170.00 0.405 0.1055) + (-160.00 0.658 0.2982) + (-155.00 0.733 0.4121) + (-150.00 0.778 0.5308) + (-145.00 0.795 0.6503) + (-140.00 0.787 0.7672) + (-135.00 0.757 0.8785) + (-130.00 0.708 0.9819) + (-125.00 0.641 1.0756) + (-120.00 0.560 1.1580) + (-115.00 0.467 1.2280) + (-110.00 0.365 1.2847) + (-105.00 0.255 1.3274) + (-100.00 0.139 1.3557) + ( -95.00 0.021 1.3692) + ( -90.00 -0.098 1.3680) + ( -85.00 -0.216 1.3521) + ( -80.00 -0.331 1.3218) + ( -75.00 -0.441 1.2773) + ( -70.00 -0.544 1.2193) + ( -65.00 -0.638 1.1486) + ( -60.00 -0.720 1.0660) + ( -55.00 -0.788 0.9728) + ( -50.00 -0.840 0.8705) + ( -45.00 -0.875 0.7611) + ( -40.00 -0.889 0.6466) + ( -35.00 -0.880 0.5299) + ( -30.00 -0.846 0.4141) + ( -25.00 -0.784 0.3030) + ( -24.00 -0.768 0.2817) + ( -23.00 -0.751 0.2608) + ( -22.00 -0.733 0.2404) + ( -21.00 -0.714 0.2205) + ( -20.00 -0.693 0.2011) + ( -19.00 -0.671 0.1822) + ( -18.00 -0.648 0.1640) + ( -17.00 -0.624 0.1465) + ( -16.00 -0.601 0.1300) + ( -15.00 -0.579 0.1145) + ( -14.00 -0.559 0.1000) + ( -13.00 -0.539 0.0867) + ( -12.00 -0.519 0.0744) + ( -11.00 -0.499 0.0633) + ( -10.00 -0.480 0.0534) + ( -5.54 -0.385 0.0245) + ( -5.04 -0.359 0.0225) + ( -4.54 -0.360 0.0196) + ( -4.04 -0.355 0.0174) + ( -3.54 -0.307 0.0162) + ( -3.04 -0.246 0.0144) + ( -3.00 -0.240 0.0240) + ( -2.50 -0.163 0.0188) + ( -2.00 -0.091 0.0160) + ( -1.50 -0.019 0.0137) + ( -1.00 0.052 0.0118) + ( -0.50 0.121 0.0104) + ( 0.00 0.196 0.0094) + ( 0.50 0.265 0.0096) + ( 1.00 0.335 0.0098) + ( 1.50 0.404 0.0099) + ( 2.00 0.472 0.0100) + ( 2.50 0.540 0.0102) + ( 3.00 0.608 0.0103) + ( 3.50 0.674 0.0104) + ( 4.00 0.742 0.0105) + ( 4.50 0.809 0.0107) + ( 5.00 0.875 0.0108) + ( 5.50 0.941 0.0109) + ( 6.00 1.007 0.0110) + ( 6.50 1.071 0.0113) + ( 7.00 1.134 0.0115) + ( 7.50 1.198 0.0117) + ( 8.00 1.260 0.0120) + ( 8.50 1.318 0.0126) + ( 9.00 1.368 0.0133) + ( 9.50 1.422 0.0143) + ( 10.00 1.475 0.0156) + ( 10.50 1.523 0.0174) + ( 11.00 1.570 0.0194) + ( 11.50 1.609 0.0227) + ( 12.00 1.642 0.0269) + ( 12.50 1.675 0.0319) + ( 13.00 1.700 0.0398) + ( 13.50 1.717 0.0488) + ( 14.00 1.712 0.0614) + ( 14.50 1.703 0.0786) + ( 15.50 1.671 0.1173) + ( 16.00 1.649 0.1377) + ( 16.50 1.621 0.1600) + ( 17.00 1.598 0.1814) + ( 17.50 1.571 0.2042) + ( 18.00 1.549 0.2316) + ( 19.00 1.544 0.2719) + ( 19.50 1.549 0.2906) + ( 20.00 1.565 0.3085) + ( 21.00 1.565 0.3447) + ( 22.00 1.563 0.3820) + ( 23.00 1.558 0.4203) + ( 24.00 1.552 0.4593) + ( 25.00 1.546 0.4988) + ( 26.00 1.539 0.5387) + ( 28.00 1.527 0.6187) + ( 30.00 1.522 0.6978) + ( 32.00 1.529 0.7747) + ( 35.00 1.544 0.8869) + ( 40.00 1.529 1.0671) + ( 45.00 1.471 1.2319) + ( 50.00 1.376 1.3747) + ( 55.00 1.249 1.4899) + ( 60.00 1.097 1.5728) + ( 65.00 0.928 1.6202) + ( 70.00 0.750 1.6302) + ( 75.00 0.570 1.6031) + ( 80.00 0.396 1.5423) + ( 85.00 0.237 1.4598) + ( 90.00 0.101 1.4041) + ( 95.00 -0.022 1.4053) + ( 100.00 -0.143 1.3914) + ( 105.00 -0.261 1.3625) + ( 110.00 -0.374 1.3188) + ( 115.00 -0.480 1.2608) + ( 120.00 -0.575 1.1891) + ( 125.00 -0.659 1.1046) + ( 130.00 -0.727 1.0086) + ( 135.00 -0.778 0.9025) + ( 140.00 -0.809 0.7883) + ( 145.00 -0.818 0.6684) + ( 150.00 -0.800 0.5457) + ( 155.00 -0.754 0.4236) + ( 160.00 -0.677 0.3066) + ( 170.00 -0.417 0.1085) + ( 175.00 -0.229 0.0510) + ( 180.00 0.000 0.0407) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU40_A17 b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU40_A17 new file mode 100644 index 000000000..6138a98dd --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/DU40_A17 @@ -0,0 +1,156 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0602) + (-175.00 0.218 0.0699) + (-170.00 0.397 0.1107) + (-160.00 0.642 0.3045) + (-155.00 0.715 0.4179) + (-150.00 0.757 0.5355) + (-145.00 0.772 0.6535) + (-140.00 0.762 0.7685) + (-135.00 0.731 0.8777) + (-130.00 0.680 0.9788) + (-125.00 0.613 1.0700) + (-120.00 0.532 1.1499) + (-115.00 0.439 1.2174) + (-110.00 0.337 1.2716) + (-105.00 0.228 1.3118) + (-100.00 0.114 1.3378) + ( -95.00 -0.002 1.3492) + ( -90.00 -0.120 1.3460) + ( -85.00 -0.236 1.3283) + ( -80.00 -0.349 1.2964) + ( -75.00 -0.456 1.2507) + ( -70.00 -0.557 1.1918) + ( -65.00 -0.647 1.1204) + ( -60.00 -0.727 1.0376) + ( -55.00 -0.792 0.9446) + ( -50.00 -0.842 0.8429) + ( -45.00 -0.874 0.7345) + ( -40.00 -0.886 0.6215) + ( -35.00 -0.875 0.5067) + ( -30.00 -0.839 0.3932) + ( -25.00 -0.777 0.2849) + ( -24.00 -0.761 0.2642) + ( -23.00 -0.744 0.2440) + ( -22.00 -0.725 0.2242) + ( -21.00 -0.706 0.2049) + ( -20.00 -0.685 0.1861) + ( -19.00 -0.662 0.1687) + ( -18.00 -0.635 0.1533) + ( -17.00 -0.605 0.1398) + ( -16.00 -0.571 0.1281) + ( -15.00 -0.534 0.1183) + ( -14.00 -0.494 0.1101) + ( -13.00 -0.452 0.1036) + ( -12.00 -0.407 0.0986) + ( -11.00 -0.360 0.0951) + ( -10.00 -0.311 0.0931) + ( -8.00 -0.208 0.0930) + ( -6.00 -0.111 0.0689) + ( -5.50 -0.090 0.0614) + ( -5.00 -0.072 0.0547) + ( -4.50 -0.065 0.0480) + ( -4.00 -0.054 0.0411) + ( -3.50 -0.017 0.0349) + ( -3.00 0.003 0.0299) + ( -2.50 0.014 0.0255) + ( -2.00 0.009 0.0198) + ( -1.50 0.004 0.0164) + ( -1.00 0.036 0.0147) + ( -0.50 0.073 0.0137) + ( 0.00 0.137 0.0113) + ( 0.50 0.213 0.0114) + ( 1.00 0.292 0.0118) + ( 1.50 0.369 0.0122) + ( 2.00 0.444 0.0124) + ( 2.50 0.514 0.0124) + ( 3.00 0.580 0.0123) + ( 3.50 0.645 0.0120) + ( 4.00 0.710 0.0119) + ( 4.50 0.776 0.0122) + ( 5.00 0.841 0.0125) + ( 5.50 0.904 0.0129) + ( 6.00 0.967 0.0135) + ( 6.50 1.027 0.0144) + ( 7.00 1.084 0.0158) + ( 7.50 1.140 0.0174) + ( 8.00 1.193 0.0198) + ( 8.50 1.242 0.0231) + ( 9.00 1.287 0.0275) + ( 9.50 1.333 0.0323) + ( 10.00 1.368 0.0393) + ( 10.50 1.400 0.0475) + ( 11.00 1.425 0.0580) + ( 11.50 1.449 0.0691) + ( 12.00 1.473 0.0816) + ( 12.50 1.494 0.0973) + ( 13.00 1.513 0.1129) + ( 13.50 1.538 0.1288) + ( 14.50 1.587 0.1650) + ( 15.00 1.614 0.1845) + ( 15.50 1.631 0.2052) + ( 16.00 1.649 0.2250) + ( 16.50 1.666 0.2467) + ( 17.00 1.681 0.2684) + ( 17.50 1.699 0.2900) + ( 18.00 1.719 0.3121) + ( 19.00 1.751 0.3554) + ( 19.50 1.767 0.3783) + ( 20.50 1.798 0.4212) + ( 21.00 1.810 0.4415) + ( 22.00 1.830 0.4830) + ( 23.00 1.847 0.5257) + ( 24.00 1.861 0.5694) + ( 25.00 1.872 0.6141) + ( 26.00 1.881 0.6593) + ( 28.00 1.894 0.7513) + ( 30.00 1.904 0.8441) + ( 32.00 1.915 0.9364) + ( 35.00 1.929 1.0722) + ( 40.00 1.903 1.2873) + ( 45.00 1.820 1.4796) + ( 50.00 1.690 1.6401) + ( 55.00 1.522 1.7609) + ( 60.00 1.323 1.8360) + ( 65.00 1.106 1.8614) + ( 70.00 0.880 1.8347) + ( 75.00 0.658 1.7567) + ( 80.00 0.449 1.6334) + ( 85.00 0.267 1.4847) + ( 90.00 0.124 1.3879) + ( 95.00 0.002 1.3912) + ( 100.00 -0.118 1.3795) + ( 105.00 -0.235 1.3528) + ( 110.00 -0.348 1.3114) + ( 115.00 -0.453 1.2557) + ( 120.00 -0.549 1.1864) + ( 125.00 -0.633 1.1041) + ( 130.00 -0.702 1.0102) + ( 135.00 -0.754 0.9060) + ( 140.00 -0.787 0.7935) + ( 145.00 -0.797 0.6750) + ( 150.00 -0.782 0.5532) + ( 155.00 -0.739 0.4318) + ( 160.00 -0.664 0.3147) + ( 170.00 -0.410 0.1144) + ( 175.00 -0.226 0.0702) + ( 180.00 0.000 0.0602) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/NACA64_A17 b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/NACA64_A17 new file mode 100644 index 000000000..11fa618d0 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/airfoilProperties/NACA64_A17 @@ -0,0 +1,147 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0198) + (-175.00 0.374 0.0341) + (-170.00 0.749 0.0955) + (-160.00 0.659 0.2807) + (-155.00 0.736 0.3919) + (-150.00 0.783 0.5086) + (-145.00 0.803 0.6267) + (-140.00 0.798 0.7427) + (-135.00 0.771 0.8537) + (-130.00 0.724 0.9574) + (-125.00 0.660 1.0519) + (-120.00 0.581 1.1355) + (-115.00 0.491 1.2070) + (-110.00 0.390 1.2656) + (-105.00 0.282 1.3104) + (-100.00 0.169 1.3410) + ( -95.00 0.052 1.3572) + ( -90.00 -0.067 1.3587) + ( -85.00 -0.184 1.3456) + ( -80.00 -0.299 1.3181) + ( -75.00 -0.409 1.2765) + ( -70.00 -0.512 1.2212) + ( -65.00 -0.606 1.1532) + ( -60.00 -0.689 1.0731) + ( -55.00 -0.759 0.9822) + ( -50.00 -0.814 0.8820) + ( -45.00 -0.850 0.7742) + ( -40.00 -0.866 0.6610) + ( -35.00 -0.860 0.5451) + ( -30.00 -0.829 0.4295) + ( -25.00 -0.853 0.3071) + ( -24.00 -0.870 0.2814) + ( -23.00 -0.890 0.2556) + ( -22.00 -0.911 0.2297) + ( -21.00 -0.934 0.2040) + ( -20.00 -0.958 0.1785) + ( -19.00 -0.982 0.1534) + ( -18.00 -1.005 0.1288) + ( -17.00 -1.082 0.1037) + ( -16.00 -1.113 0.0786) + ( -15.00 -1.105 0.0535) + ( -14.00 -1.078 0.0283) + ( -13.50 -1.053 0.0158) + ( -13.00 -1.015 0.0151) + ( -12.00 -0.904 0.0134) + ( -11.00 -0.807 0.0121) + ( -10.00 -0.711 0.0111) + ( -9.00 -0.595 0.0099) + ( -8.00 -0.478 0.0091) + ( -7.00 -0.375 0.0086) + ( -6.00 -0.264 0.0082) + ( -5.00 -0.151 0.0079) + ( -4.00 -0.017 0.0072) + ( -3.00 0.088 0.0064) + ( -2.00 0.213 0.0054) + ( -1.00 0.328 0.0052) + ( 0.00 0.442 0.0052) + ( 1.00 0.556 0.0052) + ( 2.00 0.670 0.0053) + ( 3.00 0.784 0.0053) + ( 4.00 0.898 0.0054) + ( 5.00 1.011 0.0058) + ( 6.00 1.103 0.0091) + ( 7.00 1.181 0.0113) + ( 8.00 1.257 0.0124) + ( 8.50 1.293 0.0130) + ( 9.00 1.326 0.0136) + ( 9.50 1.356 0.0143) + ( 10.00 1.382 0.0150) + ( 10.50 1.400 0.0267) + ( 11.00 1.415 0.0383) + ( 11.50 1.425 0.0498) + ( 12.00 1.434 0.0613) + ( 12.50 1.443 0.0727) + ( 13.00 1.451 0.0841) + ( 13.50 1.453 0.0954) + ( 14.00 1.448 0.1065) + ( 14.50 1.444 0.1176) + ( 15.00 1.445 0.1287) + ( 15.50 1.447 0.1398) + ( 16.00 1.448 0.1509) + ( 16.50 1.444 0.1619) + ( 17.00 1.438 0.1728) + ( 17.50 1.439 0.1837) + ( 18.00 1.448 0.1947) + ( 18.50 1.452 0.2057) + ( 19.00 1.448 0.2165) + ( 19.50 1.438 0.2272) + ( 20.00 1.428 0.2379) + ( 21.00 1.401 0.2590) + ( 22.00 1.359 0.2799) + ( 23.00 1.300 0.3004) + ( 24.00 1.220 0.3204) + ( 25.00 1.168 0.3377) + ( 26.00 1.116 0.3554) + ( 28.00 1.015 0.3916) + ( 30.00 0.926 0.4294) + ( 32.00 0.855 0.4690) + ( 35.00 0.800 0.5324) + ( 40.00 0.804 0.6452) + ( 45.00 0.793 0.7573) + ( 50.00 0.763 0.8664) + ( 55.00 0.717 0.9708) + ( 60.00 0.656 1.0693) + ( 65.00 0.582 1.1606) + ( 70.00 0.495 1.2438) + ( 75.00 0.398 1.3178) + ( 80.00 0.291 1.3809) + ( 85.00 0.176 1.4304) + ( 90.00 0.053 1.4565) + ( 95.00 -0.074 1.4533) + ( 100.00 -0.199 1.4345) + ( 105.00 -0.321 1.4004) + ( 110.00 -0.436 1.3512) + ( 115.00 -0.543 1.2874) + ( 120.00 -0.640 1.2099) + ( 125.00 -0.723 1.1196) + ( 130.00 -0.790 1.0179) + ( 135.00 -0.840 0.9064) + ( 140.00 -0.868 0.7871) + ( 145.00 -0.872 0.6627) + ( 150.00 -0.850 0.5363) + ( 155.00 -0.798 0.4116) + ( 160.00 -0.714 0.2931) + ( 170.00 -0.749 0.0971) + ( 175.00 -0.374 0.0334) + ( 180.00 0.000 0.0198) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/polyMesh/blockMeshDict b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/polyMesh/blockMeshDict new file mode 100755 index 000000000..463f233e0 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/polyMesh/blockMeshDict @@ -0,0 +1,101 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../../setUp" + + + + +convertToMeters 1.0; + +vertices +( + ( $xMin $yMin $zMin) + ( $xMax $yMin $zMin) + ( $xMax $yMax $zMin) + ( $xMin $yMax $zMin) + ( $xMin $yMin $zMax) + ( $xMax $yMin $zMax) + ( $xMax $yMax $zMax) + ( $xMin $yMax $zMax) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + lower + { + type wall; + faces + ( + (0 3 2 1) + ); + } + upper + { + type wall; + faces + ( + (4 5 6 7) + ); + } + west + { + type patch; + faces + ( + (0 4 7 3) + ); + } + east + { + type patch; + faces + ( + (1 2 6 5) + ); + } + north + { + type wall; + faces + ( + (3 7 6 2) + ); + } + south + { + type wall; + faces + ( + (0 1 5 4) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/transportProperties b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/transportProperties new file mode 100755 index 000000000..3ee719c86 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/transportProperties @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object transportProperties; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +transportModel Newtonian; + +// Molecular viscosity +nu nu [0 2 -1 0 0 0 0] $nu; + +// Reference temperature +TRef TRef [0 0 0 1 0 0 0] $TRef; + +// Prandtl numbers +Pr Pr [0 0 0 0 0 0 0] $Pr; +Prt Prt [0 0 0 0 0 0 0] $Prt; +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/turbineArrayProperties b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/turbineArrayProperties new file mode 100644 index 000000000..ea804932c --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/turbineArrayProperties @@ -0,0 +1,107 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbineArrayProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +globalProperties +{ + outputControl "timeStep"; + outputInterval 1; +} + +// _SSC_ +sscProperties +{ + sscEnabled true; //Enable/disable ssc, if not present defaults to False + nInputsToSSC 3; // Number of inputs EACH turbine passes to the super controller + nOutputsFromSSC 2; // Number of outputs the super controller sends to EACH turbine + sscControllerType "timeTableSSC"; // The type of SSC + sscMeasurementsFunction "default"; +} + +turbine0 +{ + turbineType "NREL5MWRef"; + includeNacelle true; + includeTower true; + baseLocation (1000.0 1500.0 0.0); + numBladePoints 40; + numNacellePoints 10; + numTowerPoints 40; + forceScalar 1.0; + bladePointDistType "uniform"; + nacellePointDistType "uniform"; + towerPointDistType "uniform"; + bladeSearchCellMethod "disk"; + bladeActuatorPointInterpType "integral"; + nacelleActuatorPointInterpType "linear"; + towerActuatorPointInterpType "linear"; + actuatorUpdateType "oldPosition"; + bladeForceProjectionType "uniformGaussian"; + nacelleForceProjectionType "diskGaussian"; + towerForceProjectionType "advanced"; + bladeForceProjectionDirection "localVelocityAligned"; + bladeEpsilon (20.0 0.0 0.0); + nacelleEpsilon (20.0 20.0 0.0); + towerEpsilon (20.0 20.0 0.0); + nacelleSampleDistance 1.0; + towerSampleDistance 3.5; + tipRootLossCorrType "Glauert"; + rotationDir "cw"; + Azimuth 0.0; + RotSpeed 9.1552; + TorqueGen 0.0; + Pitch 0.0; + NacYaw 270.0; + fluidDensity 1.23; + velocityDragCorrType "none"; +} + +turbine1 +{ + turbineType "NREL5MWRef"; + includeNacelle true; + includeTower true; + baseLocation (2000.0 1500.0 0.0); + numBladePoints 40; + numNacellePoints 10; + numTowerPoints 40; + forceScalar 1.0; + bladePointDistType "uniform"; + nacellePointDistType "uniform"; + towerPointDistType "uniform"; + bladeSearchCellMethod "disk"; + bladeActuatorPointInterpType "integral"; + nacelleActuatorPointInterpType "linear"; + towerActuatorPointInterpType "linear"; + actuatorUpdateType "oldPosition"; + bladeForceProjectionType "uniformGaussian"; + nacelleForceProjectionType "diskGaussian"; + towerForceProjectionType "advanced"; + bladeForceProjectionDirection "localVelocityAligned"; + bladeEpsilon (20.0 0.0 0.0); + nacelleEpsilon (20.0 20.0 0.0); + towerEpsilon (20.0 20.0 0.0); + nacelleSampleDistance 1.0; + towerSampleDistance 3.5; + tipRootLossCorrType "Glauert"; + rotationDir "cw"; + Azimuth 0.0; + RotSpeed 9.1552; + TorqueGen 0.0; + Pitch 0.0; + NacYaw 270.0; + fluidDensity 1.23; + velocityDragCorrType "none"; +} \ No newline at end of file diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/turbineProperties/NREL5MWRef b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/turbineProperties/NREL5MWRef new file mode 100644 index 000000000..60ef6953c --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/turbineProperties/NREL5MWRef @@ -0,0 +1,130 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbineProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +NumBl 3; +TipRad 63.0; +HubRad 1.5; +UndSling 0.0; +OverHang -5.01910; +NacelleLength 8; +NacelleFrontalArea 2; +NacelleCd 0.5; +TowerHt 87.6; +Twr2Shft 1.96256; +ShftTilt -5.0; +PreCone (-2.5 -2.5 -2.5); +GBRatio 97.0; +GBEfficiency 1.0; +GenEfficiency 0.944; +RatedRotSpeed 12.1; +GenIner 534.116; +HubIner 115.926E3; +BladeIner 11.776047E6; +GenTorqueControllerType "fiveRegion"; +//GenTorqueControllerType "speedTorqueTable"; +//GenTorqueControllerType "none"; +BladePitchControllerType "PID"; +//BladePitchControllerType "none"; +NacYawControllerType "yawSC"; +RotSpeedLimiter false; +GenTorqueRateLimiter true; +NacYawRateLimiter true; +BladePitchRateLimiter true; +SpeedFilterCornerFrequency 2.0; + + +GenTorqueControllerParams +{ + RateLimitGenTorque 15.0E3; + SpeedTorqueTable + ( + // gen speed (RPM) gen torque (N-m) + ( 670.00 0.0 ) + ( 871.00 20000.0 ) + ( 1161.96 32000.0 ) + ( 1173.70 43093.6 ) + ); + CutInGenSpeed 670.0; + Region2StartGenSpeed 871.0; + Region2EndGenSpeed 1161.963; + CutInGenTorque 0.0; + RatedGenTorque 43.09355E3; + KGen 2.55764E-2; +} + +BladePitchControllerParams +{ + RateLimitBladePitch 8.000; + PitchMin 0.000; + PitchMax 90.000; + PitchK 6.302336; + PitchControlKP 1.82620057; + PitchControlKI 0.78265750; + PitchControlKD 0.000; +} + +NacYawControllerParams +{ + RateLimitNacYaw 2.0; +} + + + + +Airfoils +( + "Cylinder1" + "Cylinder2" + "DU40_A17" + "DU35_A17" + "DU30_A17" + "DU25_A17" + "DU21_A17" + "NACA64_A17" +); + + +BladeData +( +// radius(m) c(m) twist(deg) thickness(% of c) userDef airfoil + (2.8667 3.542 13.308 1.0 0 0) + (5.6 3.854 13.308 1.0 0 0) + (8.3333 4.167 13.308 1.0 0 1) + (11.75 4.557 13.308 0.4 0 2) + (15.85 4.652 11.48 0.35 0 3) + (19.95 4.458 10.162 0.35 0 3) + (24.05 4.249 9.011 0.30 0 4) + (28.15 4.007 7.795 0.25 0 5) + (32.25 3.748 6.544 0.25 0 5) + (36.35 3.502 5.361 0.21 0 6) + (40.45 3.256 4.188 0.21 0 6) + (44.55 3.01 3.125 0.18 0 7) + (48.65 2.764 2.319 0.18 0 7) + (52.75 2.518 1.526 0.18 0 7) + (56.1667 2.313 0.863 0.18 0 7) + (58.9 2.086 0.37 0.18 0 7) + (61.6333 1.419 0.106 0.18 0 7) +); + + +TowerData +( +// height(m) c(m) twist(deg) thickness(% of c) userDef airfoil + (0.0 6.00 0.0 1.0 0 0) + (50.0 6.00 0.0 1.0 0 0) + (87.6 3.87 0.0 1.0 0 0) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/turbulenceProperties b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/turbulenceProperties new file mode 100755 index 000000000..f8a545e0c --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/constant/turbulenceProperties @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// simulationType RASModel; + simulationType LESModel; +// simulationType laminar; + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/runscript.preprocess b/exampleCases/example.ALMAdvanced.ssc.timeTable/runscript.preprocess new file mode 100755 index 000000000..4ca8ac963 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/runscript.preprocess @@ -0,0 +1,155 @@ +#!/bin/bash +#PBS -N ALMAdv_pisoFoam_preprocess +#PBS -l nodes=1:ppn=1 + + +# User Input. +OpenFOAMversion=2.4.x_SSC # OpenFOAM version +startTime=0 # Start time +updateBCType=0 # Boolean for whether or not the boundary condition types will be updated over + # what is in the initial conditions files. Leave it 0 for precursors. +inflowDir='west' # For inflow/outflow cases, specify the inflow direction. Choices are 'west', + # 'east', 'south', 'west', 'southWest', 'northWest', 'southEast', and + # 'northEast'. +refineMeshLocal=0 # Number of levels of local refinement (requires system/topoSetDict and + # system/refineHexMeshDict). +refineMeshGlobal=0 # Number of levels of global refinement. +parallel=0 # parallel untested! # Boolean for whether or not the preprocessing is run in parallel. +cores=1 # Enter the number of cores you will preprocess on. + + + + + + +# Define some functions for mesh refinement. +# Local refinement performed on one core. +refineMeshLocal() +{ + i=$1 + while [ $i -ge 1 ] + do + echo " -Performing level $i local refinement with topoSet/refineHexMesh" + echo " *selecting cells to refine..." + topoSet -dict system/topoSetDict.local.$i > log.topoSet.local.$i 2>&1 + + echo " *refining cells..." + refineHexMesh local -overwrite > log.refineHexMesh.local.$i 2>&1 + + let i=i-1 + done +} + +# Global refinement performed in parallel. +refineMeshGlobal() +{ + i=1 + while [ $i -le $1 ] + do + echo " -Performing level $i global refinement with refineMesh" + echo " *refining cells..." + mpirun -np $cores refineMesh -parallel -overwrite > log.refineMesh.global.$i 2>&1 + + let i=i+1 + done +} + + +# If running in parallel, cd to job launch directory +if [ $parallel -eq 1 ] + then + cd $PBS_O_WORKDIR +fi + + +# Source the bash profile and then call the appropriate OpenFOAM version function +# so that all the modules and environment variables get set. +echo "Sourcing the bash profile, loading modules, and setting the OpenFOAM environment variables..." +source $HOME/.bash_profile +OpenFOAM-$OpenFOAMversion + + +# Copy the controlDict.1 (assuming this is the one the actual solver will start +# out with) to controlDict. OpenFOAM reads "controlDict", not the numbered ones. +echo "Getting the control dictionary ready..." +cp system/controlDict.1 system/controlDict + + +# Copy the "clean" .original initial fields to a working copy. OpenFOAM does not +# read the ".original" initial fields--that's why they remain clean. +echo "Getting the initial condition directory ready..." +rm -rf $startTime +cp -rf $startTime.original $startTime + + +# Build the mesh. +echo "Using blockMesh to create the base mesh..." +cp constant/polyMesh/blockMeshDict ./ +rm -rf constant/polyMesh/* +mv ./blockMeshDict constant/polyMesh +blockMesh > log.blockMesh 2>&1 + + +# The initial fields come from the precursor which is periodic on all sides. The turbine +# case has inflow and outflow. Call the changeDictionary utility to make the south and +# north sides inflow and outflow. +if [ $updateBCType -eq 1 ] + then + echo "Using changeDictionary to update boundary conditions..." + changeDictionary -dict system/changeDictionaryDict.updateBCs.$inflowDir > log.changeDictionary.updateBCs.$inflowDir.1 2>&1 +fi + + +# Do serial local refinement +echo "Using refineHexMesh to perform " $refineMeshLocal " of local refinement..." +refineMeshLocal $refineMeshLocal + + +# If running in paralle from this point forward, then do the following: +if [ $cores -gt 1 ] + then + # Decompose the mesh and solution files (serial) + echo "Using decomposePar to decompose the problem for parallel processing..." + decomposePar -cellDist -force > log.decomposePar 2>&1 + + # Check the mesh + echo "Running checkMesh to report mesh diagnostics..." + mpirun -np $cores checkMesh -parallel > log.checkMesh.1 2>&1 + + # Perform global refinement to desired resolution. + echo "Using refineMesh to perform " $refineMeshGlobal " of global refinement..." + refineMeshGlobal $refineMeshGlobal + + # The mesh got globally refined, but the solution file did not, so + # the boundary fields may not have the correct number of entries. + # Use the changeDictionary utility to overwrite the spatially varying + # boundary data to a uniform single value. + if [ $updateBCType -eq 1 ] + then + echo "Using changeDictionary to ensure that the boundaries have the correct number of faces..." + mpirun -np $cores changeDictionary -dict system/changeDictionaryDict.updateBCs.$inflowDir -parallel > log.changeDictionary.updateBCs.$inflowDir.1 2>&1 + fi + + # Renumber the mesh for better matrix solver performance. + echo "Using renumberMesh to renumber the mesh for better matrix conditioning..." + mpirun -np $cores renumberMesh -parallel -overwrite > log.renumberMesh 2>&1 + + # Do one last check on the mesh. + echo "Running checkMesh to report mesh diagnostics..." + mpirun -np $cores checkMesh -parallel > log.checkMesh.3 2>&1 + + +# Otherwise, run in serial as follows: +else + # Renumber the mesh. + echo "Using renumberMesh to renumber the mesh for better matrix conditioning..." + renumberMesh -overwrite > log.renumberMesh 2>&1 + + # Decompose the mesh and solution files (serial) + echo "Using decomposePar to decompose the problem for parallel processing..." + decomposePar -cellDist -force > log.decomposePar 2>&1 + + # Check the mesh. + echo "Running checkMesh to report mesh diagnostics..." + checkMesh > log.checkMesh.1 2>&1 +fi diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/runscript.removeAll b/exampleCases/example.ALMAdvanced.ssc.timeTable/runscript.removeAll new file mode 100755 index 000000000..463332f98 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/runscript.removeAll @@ -0,0 +1,21 @@ +#!/bin/bash + +# Remove initial conditions and temporary files +rm -rf 0 +rm -rf system/controlDict + +# Remove logs +rm -rf log.* +rm -rf runscript.solve.1.o* runscript.solve.1.e* + +# Remove processor files and folders +rm -rf processor* + +# Remove simulation output +rm -rf postProcessing +rm -rf turbineOutput + +# Remove polyMesh data +cp constant/polyMesh/blockMeshDict ./ +rm -rf constant/polyMesh/* +mv ./blockMeshDict constant/polyMesh \ No newline at end of file diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/runscript.solve.1 b/exampleCases/example.ALMAdvanced.ssc.timeTable/runscript.solve.1 new file mode 100755 index 000000000..c7e3c00a0 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/runscript.solve.1 @@ -0,0 +1,40 @@ +#!/bin/bash +#PBS -l walltime=48:00:00 +#PBS -l nodes=1:ppn=8 +#PBS -N "ALMAdv.ssc.timeTable" + + + +cd $PBS_O_WORKDIR + + + + +# User Input. +OpenFOAMversion=2.4.x_SSC # OpenFOAM version +startTime=0 # Start time +cores=8 # Enter the number of cores you will preprocess on. +runNumber=1 # Enter the run number (useful for keeping track of restarts). +solver=pisoFoamTurbine.ALMAdvanced # Enter the name of the flow solver. + + + +echo "Starting OpenFOAM job at: " $(date) +echo "using " $cores " cores" + + +# Source the bash profile and then call the appropriate OpenFOAM version function +# so that all the modules and environment variables get set. +echo "Sourcing the bash profile, loading modules, and setting the OpenFOAM environment variables..." +source $HOME/.bash_profile +OpenFOAM-$OpenFOAMversion + + +# Get the control dictionary for this particular run. +cp system/controlDict.$runNumber system/controlDict + + +# Run the solver. +mpirun -np $cores $solver -parallel > log.$runNumber.$solver 2>&1 + +echo "Ending OpenFOAM job at: " $(date) \ No newline at end of file diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/setUp b/exampleCases/example.ALMAdvanced.ssc.timeTable/setUp new file mode 100755 index 000000000..4ad533e07 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/setUp @@ -0,0 +1,93 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.4.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +// Domain size and number of cells. +xMin 0.0; // Minimum x-extent of domain (m). +yMin 0.0; // Minimum y-extent of domain (m). +zMin 0.0; // Minimum z-extent of domain (m). +xMax 3000.0; // Maximum x-extent of domain (m). +yMax 3000.0; // Maximum y-extent of domain (m). +zMax 1000.0; // Maximum z-extent of domain (m). +nx 100; // Number of cells in x-direction. +ny 100; // Number of cells in y-direction. +nz 33; // Number of cells in z-direction. + + + + +// Number of cores and domain decomposition information. +nCores 8; // Number of cores on which to run this case. +decompType simple; // Decomposition algorithm. "simple" and "scotch" are good choices. +decompOrder (4 2 1); // Order of the decomposition number of partitions in (x y z)-directions. + + + + +// Planar averaging and source term statistics options. +statisticsOn true; // Gather planar-averaged flow statistics. +statisticsFrequency 5; // Frequency in time steps of statistics gathering. + + + + +// Initial values for the variables. +// Note that U and T get overwritten if setFieldsABL is called. +U0Mag 8.00; // Initial condition for wind speed (m/s). +dir 270.0; // Initial condition for wind direction (deg). +windHeight 90.0; // Height at which to drive mean wind to U0Mag/dir (m). +p_rgh0 0.0; // Initial pressure (minus the hydrostatic variation and normalized by density) (m^2/s^2). +nuSgs0 0.0; // Initial SGS viscosity (m^2/s). +k0 0.1; // Initial SGS turbulent kinetic energy (m^2/s^2). +kappat0 0.0; // Initial SGS temperature diffusivity (m^2/s). +TGradUpper 0.003; // Potential temperature gradient above the strong inversion (K/m). +zInversion 750.0; // Height of the middle of the initial strong capping inversion (m). +inversionWidth 100.0; // Vertical width of the intial strong capping inversion (m). +TBottom 300.0; // Initial potential temperature at bottom of strong capping inversion (K). +TTop 305.0; // Initial potential temperature at top of strong capping inversion (K). + + + + +// General conditions and parameters. +Pr 0.7; // Molecular Prandtl number. +Prt 0.33333333; // Turbulent Prandtl number. +nu 1.0E-5; // Molecular viscosity (m^2/s). +TRef 300.0; // Reference potential temperature (K). +latitude 41.3; // Latitude on the Earth of the site (deg). +EarthPeriod 24.0; // Earth's rotation period (hr). + + + + +// SGS model inputs. +LESModel oneEqEddy; // SGS model selection. +ce 0.93; // SGS model constant. +ck 0.0673; // SGS model constant. + + + + +// Surface conditions. +qwall (0.0 0.0 0.0); // Temperature flux at wall (modify the z-value). A negative value is flux into domain (K-m/s). +Rwall (0.0 0.0 0.0 0.0 0.0 0.0); // Initial wall shear stress (m^2/s^2). +kappa 0.4; // von Karman constant. +z0 0.01; // Surface roughness (m). +betaM 16.0; // Monin-Obukhov wall shear stress model constant. +gammaM 5.0; // Monin-Obukhov wall shear stress model constant. +betaH 9.0; // Monin-Obukhov wall temperature flux model constant. +gammaH 7.8; // Monin-Obukhov wall temperature flux model constant. +alphaH 1.0; // Monin-Obukhov wall temperature flux model constant. +heatingRate 0.0; // Surface temperature change rate (when not directly setting temperature flux) (K/s). + + + + +#inputMode merge + +// ************************************************************************* // + diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs new file mode 100755 index 000000000..b4ab16ba4 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.cyclic b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.cyclic new file mode 100755 index 000000000..9d7df3a40 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.cyclic @@ -0,0 +1,238 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + U + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + k + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + kappat + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + nuSgs + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + p_rgh + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.east b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.east new file mode 100755 index 000000000..75ea86de5 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.east @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.north b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.north new file mode 100755 index 000000000..ab34b5c5a --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.north @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + south + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + south + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + south + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + north + { + type fixedFluxPressure; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.northeast b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.northeast new file mode 100755 index 000000000..9ef569c78 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.northeast @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + south + { + type zeroGradient; + value uniform 300; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + south + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + south + { + type zeroGradient; + value uniform 0.1; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + north + { + type fixedFluxPressure; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.northwest b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.northwest new file mode 100755 index 000000000..f62b02acb --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.northwest @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + south + { + type zeroGradient; + value uniform 300; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + east + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + south + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + south + { + type zeroGradient; + value uniform 0.1; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + east + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + north + { + type fixedFluxPressure; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedFluxPressure; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.south b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.south new file mode 100755 index 000000000..b4ab16ba4 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.south @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.southeast b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.southeast new file mode 100755 index 000000000..88a7ebf76 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.southeast @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.southwest b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.southwest new file mode 100755 index 000000000..6e9078e8e --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.southwest @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + east + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + east + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedFluxPressure; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.west b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.west new file mode 100755 index 000000000..7dec20912 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/changeDictionaryDict.updateBCs.west @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + east + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + east + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + west + { + type fixedFluxPressure; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/controlDict.1 b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/controlDict.1 new file mode 100755 index 000000000..92a8952aa --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/controlDict.1 @@ -0,0 +1,66 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + application ABLSolver; + + libs ("libuserfiniteVolume.so" "libuserincompressibleLESModels.so"); + + startFrom startTime; + + startTime 0.0; + + stopAt endTime; + + endTime 1000.0; + + deltaT 0.5; + + writeControl adjustableRunTime; + + writeInterval 99000.0; + + purgeWrite 0; + + writeFormat ascii; + + writePrecision 8; + + writeCompression compressed; + + timeFormat general; + + timePrecision 8; + + runTimeModifiable yes; + + adjustTimeStep no; + + maxCo 0.75; + + maxDeltaT 25.0; + + startTimeMean 1000.0; + + startTimeCorr 1000.0; + + functions + { + #include "sampling/sliceDataInstantaneous" + } + +// ************************************************************************* // + diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/decomposeParDict b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/decomposeParDict new file mode 100755 index 000000000..c7bea2ee8 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/decomposeParDict @@ -0,0 +1,76 @@ +/*-------------------------------*- C++ -*---------------------------------*\ +| ========= | +| \\ / OpenFOAM | +| \\ / | +| \\ / The Open Source CFD Toolbox | +| \\/ http://www.OpenFOAM.org | +\*-------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + location "system"; + object decomposeParDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +numberOfSubdomains $nCores; +method $decompType; +//preservePatches (north south east west); + +simpleCoeffs +{ + n $decompOrder; + delta 0.001; +} + +hierarchicalCoeffs +{ + n (1 1 3); + delta 0.001; + order xyz; +} + +metisCoeffs +{ + processorWeights + ( + ); +} + +scotchCoeffs +{ + //processorWeights + //( + // 1 + // 1 + // 1 + // 1 + //); + //writeGraph true; + //strategy "b"; +} + +manualCoeffs +{ + dataFile "decompositionData"; +} + + +//// Is the case distributed +distributed no; +//// Per slave (so nProcs-1 entries) the directory above the case. +//roots +//( +// "/tmp" +// "/tmp" +//); + + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/fvSchemes b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/fvSchemes new file mode 100755 index 000000000..ead2aeb21 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/fvSchemes @@ -0,0 +1,85 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default backward; +// default CrankNicolson 1.0; +} + +gradSchemes +{ + default Gauss linear; + grad(U) Gauss linear; +} + +divSchemes +{ + default Gauss linear; + //div(phi,U) Gauss linear; + //div(phi,T) Gauss linear; + div(phi,U) Gauss localBlended linear upwind; + div(phi,T) Gauss localBlended linear upwind; + div(R) Gauss linear; + div(U) Gauss linear; + div((nuEff*dev(grad(U).T()))) Gauss linear; + div(B) Gauss linear; + div(phi,B) Gauss linear; + div(phi,k) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; + laplacian(rUA,p) Gauss linear uncorrected; + laplacian((1|A(U)),p) Gauss linear uncorrected; + laplacian(interpolate((1|A(U))),p) Gauss linear uncorrected; + laplacian(interpolate((1|A(U))),pd) Gauss linear uncorrected; + laplacian(nu,U) Gauss linear uncorrected; + laplacian(nuEff,U) Gauss linear uncorrected; + laplacian(kappaEff,T) Gauss linear uncorrected; + laplacian(DBEff,B) Gauss linear uncorrected; + laplacian(nuSgs,U) Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +fluxRequired +{ + default no; + p ; +} + +schemeBlending +{ + xBlending1 -10.0; + xBlending2 0.0; + xBlending3 60.0; + xBlending4 70.0; + blendingFactor1 0.85; + blendingFactor2 1.00; +} + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/fvSolution b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/fvSolution new file mode 100755 index 000000000..b3f1a7e4a --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/fvSolution @@ -0,0 +1,102 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "(p_rgh|p)" + { + solver PCG; + preconditioner + { + preconditioner GAMG; + tolerance 1e-05; + relTol 0.01; + smoother DICGaussSeidel; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 100; + agglomerator faceAreaPair; + mergeLevels 2; + } + tolerance 1e-06; + relTol 0.01; + maxIter 1000; + } + + "(p_rghFinal|pFinal)" + { + $p; + relTol 0.0; + } + + "(U|T|k|epsilon|R)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + maxIter 1000; + } + + "(U|T|k|epsilon|R)Final" + { + $U; + relTol 0.0; + } + + "(flm|fmm)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + } + + "(flm|fmm)Final" + { + $flm; + relTol 0.0; + } + + +} + +PISO +{ + momentumPredictor yes; + nOuterCorrectors 1; + nCorrectors 3; + nNonOrthogonalCorrectors 0; + pRefPoint (-39.0 0 11.5); + pRefValue 0; +} + +relaxationFactors +{ + fields + { + } + equations + { + "(U|T|k|epsilon|R)" 1.0; + "(U|T|k|epsilon|R)Final" 1.0; + } +} + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/sampling/sliceDataInstantaneous b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/sampling/sliceDataInstantaneous new file mode 100755 index 000000000..d80b1da9d --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/sampling/sliceDataInstantaneous @@ -0,0 +1,59 @@ + sliceDataInstantaneous + { + type surfaces; + functionObjectLibs ("libsampling.so"); + enabled true; + interpolationScheme cell; + outputControl adjustableTime; + writeInterval 5; + surfaceFormat vtk; + fields + ( + U + ); + surfaces + ( + slice_horizontal + { + type plane; + basePoint (1500.01 1500.01 90.01); + normalVector (0 0 1); + triangulate false; + } + slice_vertical_x500 + { + type plane; + basePoint (500.01 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x3D + { + type plane; + basePoint (1379.2 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x5D + { + type plane; + basePoint (1632.0 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x7D + { + type plane; + basePoint (1884.8 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x10D + { + type plane; + basePoint (2264.0 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + ); + } diff --git a/exampleCases/example.ALMAdvanced.ssc.timeTable/system/setFieldsABLDict b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/setFieldsABLDict new file mode 100755 index 000000000..11b48e0bc --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.timeTable/system/setFieldsABLDict @@ -0,0 +1,504 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object setFieldsABLDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +// Extents of the domain. +xMin $xMin; +yMin $yMin; +zMin $zMin; + +xMax $xMax; +yMax $yMax; +zMax $zMax; + +zRef $zMax; + +// Specify if distance from wall should be used as z. +useWallDistZ false; +scaleVelocityWithHeight false; + + +// Specify how to initialze the base velocity and temperature profile. +velocityInitType "table"; +//velocityInitType "log"; +//velocityInitType "geostrophic"; +temperatureInitType "table"; +//temperatureInitType "simple"; + +// Maximum perturbation of streamwise/spanwise flow near surface. +deltaU 0.25; +deltaV 0.25; + +// Total periods of perturbations in streamwise/spanwise in the domain. +Uperiods 12.0; +Vperiods 12.0; + +// Percentage of domain height (zMax) where peak in perturbation +// magnitude occurs. +zPeak 0.015; + +// Initial height of the center of the capping inversion. +zInversion $zInversion; + +// Width of the capping inversion. +widthInversion $inversionWidth; + +// Potential temperature at the bottom and top of the capping inversion. +Tbottom $TBottom; +Ttop $TTop; + +// Maximum temperature fluctuation size below capping inversion. +TPrimeScale 0.0; + +// Height rate of change of potential temperature above the inversion. +dTdz $TGradUpper; + +// Geostrophic wind speed magnitude. +Ug $U0Mag; + +// Geostrophic wind speed direction. +UgDir $dir; + +// Aerodynamic roughness height of surface. +z0 $z0; + +// von Karman constant. +kappa $kappa; + +// Vertical profile table. +profileTable +( +// z U V T + (0.0 0.0 0.0 273.121917725) + (5.0 1.82671529027 1.98969371553 282.524156211) + (10.0 2.52983624172 2.77228242751 283.156504284) + (15.0 3.01282071998 3.35521702288 283.64108812) + (20.0 3.35996148006 3.78823607698 284.090761147) + (25.0 3.8038057643 4.37960852586 284.554077196) + (30.0 4.03596125279 4.70538923119 284.966777157) + (35.0 4.38133296535 5.23253766126 285.360167677) + (40.0 4.56992779673 5.53523659867 285.747101612) + (45.0 4.80994398595 5.96180841679 286.095879197) + (50.0 5.00816921409 6.32774876853 286.444585293) + (55.0 5.14154903327 6.60160807137 286.787914506) + (60.0 5.36818530188 7.08896005703 287.063199891) + (65.0 5.44703987742 7.27484159809 287.379906732) + (70.0 5.57604433164 7.60608624795 287.638417176) + (75.0 5.72370142776 7.99632935101 287.863981004) + (80.0 5.77619905069 8.15139018101 288.127106742) + (85.0 5.87149793296 8.46369430537 288.331005696) + (90.0 5.98111916718 8.83268873958 288.509035882) + (95.0 6.01697152506 8.97407895539 288.724664101) + (100.0 6.06967854005 9.19927028309 288.909565287) + (105.0 6.1450628792 9.53721293929 289.053124377) + (110.0 6.19167607924 9.76288104253 289.198531813) + (115.0 6.22489630605 9.93628531022 289.344799656) + (120.0 6.27421288656 10.216282683 289.462005) + (125.0 6.32645248876 10.5156368594 289.57393273) + (130.0 6.34668810144 10.6457361726 289.712125634) + (135.0 6.36434613795 10.762203832 289.852433913) + (140.0 6.39842793739 11.0196195883 289.95191863) + (145.0 6.4342454375 11.2919310606 290.047089019) + (150.0 6.45180421766 11.4367005351 290.150649381) + (155.0 6.46406875681 11.544488333 290.256642472) + (160.0 6.48170756073 11.7056278368 290.348224267) + (165.0 6.50382814701 11.9112591447 290.427787992) + (170.0 6.52550956366 12.1127414485 290.506470121) + (175.0 6.54550549533 12.298300329 290.581768788) + (180.0 6.56550142701 12.4838592096 290.657067454) + (185.0 6.58511534034 12.6567515091 290.735008491) + (190.0 6.6045979288 12.8252894701 290.813857884) + (195.0 6.62432001649 12.9896812983 290.892328604) + (200.0 6.64532587961 13.1318488244 290.968769537) + (205.0 6.66633174272 13.2740163505 291.045210471) + (210.0 6.69104111181 13.4098514016 291.117435921) + (215.0 6.72036475996 13.5377966838 291.184409209) + (220.0 6.74968840812 13.6657419659 291.251382497) + (225.0 6.77805691412 13.7640369251 291.318657013) + (230.0 6.80578882059 13.8425700289 291.386132296) + (235.0 6.83352072706 13.9211031327 291.453607578) + (240.0 6.86307156947 13.9862481909 291.518273832) + (245.0 6.89380511232 14.0426881336 291.581113612) + (250.0 6.92453865516 14.0991280764 291.643953391) + (255.0 6.95361693104 14.1462680315 291.704700258) + (260.0 6.98077095142 14.1825967081 291.763014104) + (265.0 7.0079249718 14.2189253847 291.82132795) + (270.0 7.03507703408 14.2541299666 291.879606535) + (275.0 7.0622194383 14.283790106 291.937711201) + (280.0 7.08936184253 14.3134502454 291.995815867) + (285.0 7.11650424675 14.3431103848 292.053920533) + (290.0 7.1430391081 14.369131837 292.11328027) + (295.0 7.16932392788 14.3936557439 292.173156546) + (300.0 7.19560874767 14.4181796507 292.233032822) + (305.0 7.22180906756 14.4424461024 292.292838021) + (310.0 7.24680913749 14.4630556198 292.351633627) + (315.0 7.27180920741 14.4836651372 292.410429232) + (320.0 7.29680927734 14.5042746546 292.469224837) + (325.0 7.32153609499 14.5243042572 292.528664796) + (330.0 7.34543057757 14.5425674214 292.590067475) + (335.0 7.36932506015 14.5608305855 292.651470155) + (340.0 7.39321954273 14.5790937496 292.712872834) + (345.0 7.41696733387 14.597025575 292.773542958) + (350.0 7.44026003553 14.6139294685 292.831940429) + (355.0 7.46355273718 14.6308333621 292.890337899) + (360.0 7.48684543884 14.6477372556 292.94873537) + (365.0 7.51013186129 14.6646271523 293.007149353) + (370.0 7.53322339247 14.68108262 293.066075821) + (375.0 7.55631492366 14.6975380877 293.12500229) + (380.0 7.57940645484 14.7139935554 293.183928758) + (385.0 7.60249798603 14.7304490231 293.242855226) + (390.0 7.6257582057 14.7463924565 293.301506178) + (395.0 7.64912373233 14.7620162427 293.359985132) + (400.0 7.67248925896 14.7776400289 293.418464087) + (405.0 7.69585478559 14.7932638151 293.476943042) + (410.0 7.71922031222 14.8088876013 293.535421996) + (415.0 7.74300228036 14.8230663689 293.592791002) + (420.0 7.7667927399 14.8372156721 293.650137374) + (425.0 7.79058319945 14.8513649753 293.707483747) + (430.0 7.81437365899 14.8655142784 293.76483012) + (435.0 7.83815083397 14.8793492717 293.821767406) + (440.0 7.86181714661 14.8905612872 293.875290779) + (445.0 7.88548345926 14.9017733027 293.928814153) + (450.0 7.9091497719 14.9129853182 293.982337526) + (455.0 7.93281608455 14.9241973336 294.035860899) + (460.0 7.95648239719 14.9354093491 294.089384273) + (465.0 7.97905964048 14.9423301431 294.14128451) + (470.0 8.0016312311 14.9492286641 294.193176323) + (475.0 8.02420282171 14.956127185 294.245068135) + (480.0 8.04677441233 14.9630257059 294.296959948) + (485.0 8.06934600294 14.9699242269 294.34885176) + (490.0 8.0912068028 14.9742300558 294.40025773) + (495.0 8.11235909886 14.9759515346 294.45117942) + (500.0 8.13351139492 14.9776730134 294.502101111) + (505.0 8.15466369098 14.9793944922 294.553022801) + (510.0 8.17581598704 14.981115971 294.603944491) + (515.0 8.19696828309 14.9828374498 294.654866181) + (520.0 8.21724149816 14.9808198644 294.704354156) + (525.0 8.2364694612 14.9743564264 294.752137402) + (530.0 8.25569742424 14.9678929884 294.799920649) + (535.0 8.27492538727 14.9614295505 294.847703896) + (540.0 8.29415335031 14.9549661125 294.895487143) + (545.0 8.31338131334 14.9485026745 294.943270389) + (550.0 8.33260927638 14.9420392365 294.991053636) + (555.0 8.35050488468 14.9266129312 295.036341098) + (560.0 8.36808840645 14.9090871924 295.081043956) + (565.0 8.38567192822 14.8915614535 295.125746813) + (570.0 8.40325544999 14.8740357147 295.170449671) + (575.0 8.42083897176 14.8565099758 295.215152528) + (580.0 8.43842249352 14.838984237 295.259855386) + (585.0 8.45600601529 14.8214584982 295.304558243) + (590.0 8.47264685758 14.7968218302 295.348171206) + (595.0 8.48834031368 14.765038729 295.390688832) + (600.0 8.50403376979 14.7332556278 295.433206459) + (605.0 8.51972722589 14.7014725265 295.475724085) + (610.0 8.53542068199 14.6696894253 295.518241712) + (615.0 8.55111413809 14.6379063241 295.560759338) + (620.0 8.56680759419 14.6061232229 295.603276965) + (625.0 8.5825010503 14.5743401216 295.645794591) + (630.0 8.59715715424 14.5346556613 295.689519112) + (635.0 8.61058749747 14.4856347615 295.734669729) + (640.0 8.62401784069 14.4366138617 295.779820347) + (645.0 8.63744818391 14.3875929619 295.824970964) + (650.0 8.65087852713 14.338572062 295.870121581) + (655.0 8.66430887036 14.2895511622 295.915272198) + (660.0 8.67773921358 14.2405302624 295.960422815) + (665.0 8.6911695568 14.1915093626 296.005573433) + (670.0 8.70459990003 14.1424884628 296.05072405) + (675.0 8.71498597608 14.0837507537 296.096336227) + (680.0 8.72352399234 14.0191143362 296.142228601) + (685.0 8.7320620086 13.9544779188 296.188120975) + (690.0 8.74060002486 13.8898415013 296.234013348) + (695.0 8.74913804112 13.8252050838 296.279905722) + (700.0 8.75767605739 13.7605686663 296.325798096) + (705.0 8.76621407365 13.6959322489 296.371690469) + (710.0 8.77475208991 13.6312958314 296.417582843) + (715.0 8.78329010617 13.5666594139 296.463475217) + (720.0 8.79182812243 13.5020229965 296.50936759) + (725.0 8.79189547444 13.4277463368 296.562527014) + (730.0 8.79098910472 13.3523615098 296.616521801) + (735.0 8.79008273499 13.2769766828 296.670516587) + (740.0 8.78917636527 13.2015918559 296.724511374) + (745.0 8.78826999555 13.1262070289 296.778506161) + (750.0 8.78736362582 13.0508222019 296.832500948) + (755.0 8.7864572561 12.9754373749 296.886495735) + (760.0 8.78555088638 12.9000525479 296.940490522) + (765.0 8.78464451665 12.824667721 296.994485308) + (770.0 8.78373814693 12.749282894 297.048480095) + (775.0 8.78092431283 12.6731698157 297.101321687) + (780.0 8.77050848097 12.594154369 297.149567342) + (785.0 8.76009264911 12.5151389222 297.197812997) + (790.0 8.74967681725 12.4361234755 297.246058652) + (795.0 8.73926098539 12.3571080288 297.294304307) + (800.0 8.72884515353 12.278092582 297.342549962) + (805.0 8.71842932167 12.1990771353 297.390795617) + (810.0 8.70801348981 12.1200616885 297.439041272) + (815.0 8.69759765795 12.0410462418 297.487286927) + (820.0 8.68718182609 11.9620307951 297.535532582) + (825.0 8.67676599423 11.8830153483 297.583778237) + (830.0 8.66635016237 11.8039999016 297.632023892) + (835.0 8.65380285705 11.7267327361 297.688031136) + (840.0 8.63847548104 11.6517458454 297.754161782) + (845.0 8.62314810503 11.5767589547 297.820292429) + (850.0 8.60782072902 11.5017720641 297.886423076) + (855.0 8.59249335301 11.4267851734 297.952553722) + (860.0 8.57716597701 11.3517982828 298.018684369) + (865.0 8.561838601 11.2768113921 298.084815016) + (870.0 8.54651122499 11.2018245015 298.150945663) + (875.0 8.53118384898 11.1268376108 298.217076309) + (880.0 8.51585647297 11.0518507201 298.283206956) + (885.0 8.50052909696 10.9768638295 298.349337603) + (890.0 8.48520172096 10.9018769388 298.41546825) + (895.0 8.46987434495 10.8268900482 298.481598896) + (900.0 8.45883220551 10.7541011047 298.547345535) + (905.0 8.45238242046 10.6836676328 298.612680644) + (910.0 8.44593263542 10.6132341608 298.678015753) + (915.0 8.43948285037 10.5428006888 298.743350863) + (920.0 8.43303306533 10.4723672168 298.808685972) + (925.0 8.42658328028 10.4019337449 298.874021081) + (930.0 8.42013349524 10.3315002729 298.93935619) + (935.0 8.41368371019 10.2610668009 299.004691299) + (940.0 8.40723392515 10.190633329 299.070026409) + (945.0 8.4007841401 10.120199857 299.135361518) + (950.0 8.39433435506 10.049766385 299.200696627) + (955.0 8.38788457001 9.97933291304 299.266031736) + (960.0 8.38143478497 9.90889944107 299.331366845) + (965.0 8.37498499992 9.8384659691 299.396701955) + (970.0 8.37175628862 9.76984547069 299.458148741) + (975.0 8.3787220489 9.70696290595 299.507289259) + (980.0 8.38568780918 9.64408034121 299.556429777) + (985.0 8.39265356946 9.58119777647 299.605570296) + (990.0 8.39961932974 9.51831521173 299.654710814) + (995.0 8.40658509002 9.45543264699 299.703851332) + (1000.0 8.4135508503 9.39255008225 299.752991851) + (1005.0 8.42051661058 9.32966751751 299.802132369) + (1010.0 8.42748237086 9.26678495277 299.851272887) + (1015.0 8.43444813113 9.20390238803 299.900413405) + (1020.0 8.44141389141 9.14101982329 299.949553924) + (1025.0 8.44837965169 9.07813725854 299.998694442) + (1030.0 8.45534541197 9.0152546938 300.04783496) + (1035.0 8.46231117225 8.95237212906 300.096975478) + (1040.0 8.46927693253 8.88948956432 300.146115997) + (1045.0 8.47624269281 8.82660699958 300.195256515) + (1050.0 8.48495783258 8.77319458603 300.238852282) + (1055.0 8.49495774699 8.72673721576 300.278375887) + (1060.0 8.5049576614 8.6802798455 300.317899492) + (1065.0 8.51495757581 8.63382247523 300.357423097) + (1070.0 8.52495749023 8.58736510496 300.396946702) + (1075.0 8.53495740464 8.5409077347 300.436470307) + (1080.0 8.54495731905 8.49445036443 300.475993912) + (1085.0 8.55495723346 8.44799299416 300.515517517) + (1090.0 8.56495714787 8.4015356239 300.555041122) + (1095.0 8.57495706228 8.35507825363 300.594564727) + (1100.0 8.58495697669 8.30862088336 300.634088332) + (1105.0 8.5949568911 8.2621635131 300.673611937) + (1110.0 8.60495680552 8.21570614283 300.713135542) + (1115.0 8.61495671993 8.16924877256 300.752659147) + (1120.0 8.62495663434 8.1227914023 300.792182752) + (1125.0 8.63495654875 8.07633403203 300.831706357) + (1130.0 8.64495646316 8.02987666176 300.871229962) + (1135.0 8.65360052964 7.98996489564 300.907704255) + (1140.0 8.65972902324 7.96219751809 300.938521005) + (1145.0 8.66585751685 7.93443014055 300.969337756) + (1150.0 8.67198601045 7.906662763 301.000154506) + (1155.0 8.67811450406 7.87889538546 301.030971256) + (1160.0 8.68424299766 7.85112800791 301.061788006) + (1165.0 8.69037149126 7.82336063037 301.092604757) + (1170.0 8.69649998487 7.79559325282 301.123421507) + (1175.0 8.70262847847 7.76782587527 301.154238257) + (1180.0 8.70875697208 7.74005849773 301.185055007) + (1185.0 8.71488546568 7.71229112018 301.215871758) + (1190.0 8.72101395929 7.68452374264 301.246688508) + (1195.0 8.72714245289 7.65675636509 301.277505258) + (1200.0 8.7332709465 7.62898898755 301.308322009) + (1205.0 8.7393994401 7.60122161 301.339138759) + (1210.0 8.74552793371 7.57345423246 301.369955509) + (1215.0 8.75165642731 7.54568685491 301.400772259) + (1220.0 8.75778492092 7.51791947737 301.43158901) + (1225.0 8.76391341452 7.49015209982 301.46240576) + (1230.0 8.76818252215 7.46990516883 301.489568668) + (1235.0 8.76988179508 7.46005215541 301.511681645) + (1240.0 8.771581068 7.45019914198 301.533794623) + (1245.0 8.77328034093 7.44034612856 301.5559076) + (1250.0 8.77497961385 7.43049311513 301.578020578) + (1255.0 8.77667888677 7.42064010171 301.600133555) + (1260.0 8.7783781597 7.41078708828 301.622246532) + (1265.0 8.78007743262 7.40093407485 301.64435951) + (1270.0 8.78177670555 7.39108106143 301.666472487) + (1275.0 8.78347597847 7.381228048 301.688585464) + (1280.0 8.7851752514 7.37137503458 301.710698442) + (1285.0 8.78687452432 7.36152202115 301.732811419) + (1290.0 8.78857379725 7.35166900773 301.754924397) + (1295.0 8.79027307017 7.3418159943 301.777037374) + (1300.0 8.7919723431 7.33196298088 301.799150351) + (1305.0 8.79367161602 7.32210996745 301.821263329) + (1310.0 8.79537088895 7.31225695402 301.843376306) + (1315.0 8.79707016187 7.3024039406 301.865489283) + (1320.0 8.79876943479 7.29255092717 301.887602261) + (1325.0 8.80046870772 7.28269791375 301.909715238) + (1330.0 8.80216798064 7.27284490032 301.931828216) + (1335.0 8.80345002487 7.27037429336 301.950702634) + (1340.0 8.80449597234 7.27208116099 301.967744453) + (1345.0 8.8055419198 7.27378802862 301.984786271) + (1350.0 8.80658786727 7.27549489624 302.00182809) + (1355.0 8.80763381473 7.27720176387 302.018869908) + (1360.0 8.8086797622 7.2789086315 302.035911727) + (1365.0 8.80972570966 7.28061549913 302.052953545) + (1370.0 8.81077165713 7.28232236676 302.069995364) + (1375.0 8.81181760459 7.28402923439 302.087037182) + (1380.0 8.81286355206 7.28573610202 302.104079001) + (1385.0 8.81390949952 7.28744296965 302.121120819) + (1390.0 8.81495544699 7.28914983727 302.138162638) + (1395.0 8.81600139445 7.2908567049 302.155204456) + (1400.0 8.81704734192 7.29256357253 302.172246275) + (1405.0 8.81809328938 7.29427044016 302.189288094) + (1410.0 8.81913923685 7.29597730779 302.206329912) + (1415.0 8.82018518431 7.29768417542 302.223371731) + (1420.0 8.82123113178 7.29939104305 302.240413549) + (1425.0 8.82227707924 7.30109791068 302.257455368) + (1430.0 8.82332302671 7.30280477831 302.274497186) + (1435.0 8.82436897417 7.30451164593 302.291539005) + (1440.0 8.82541492164 7.30621851356 302.308580823) + (1445.0 8.8264608691 7.30792538119 302.325622642) + (1450.0 8.82980499965 7.31411337437 302.342200633) + (1455.0 8.83363827328 7.32125512601 302.358679903) + (1460.0 8.83747154691 7.32839687764 302.375159173) + (1465.0 8.84130482054 7.33553862927 302.391638443) + (1470.0 8.84513809417 7.34268038091 302.408117713) + (1475.0 8.8489713678 7.34982213254 302.424596984) + (1480.0 8.85280464143 7.35696388418 302.441076254) + (1485.0 8.85663791506 7.36410563581 302.457555524) + (1490.0 8.86047118869 7.37124738745 302.474034794) + (1495.0 8.86430446231 7.37838913908 302.490514064) + (1500.0 8.86813773594 7.38553089071 302.506993334) + (1505.0 8.87197100957 7.39267264235 302.523472605) + (1510.0 8.8758042832 7.39981439398 302.539951875) + (1515.0 8.87963755683 7.40695614562 302.556431145) + (1520.0 8.88347083046 7.41409789725 302.572910415) + (1525.0 8.88730410409 7.42123964888 302.589389685) + (1530.0 8.89113737772 7.42838140052 302.605868955) + (1535.0 8.89497065135 7.43552315215 302.622348226) + (1540.0 8.89880392498 7.44266490379 302.638827496) + (1545.0 8.90263719861 7.44980665542 302.655306766) + (1550.0 8.90647047224 7.45694840705 302.671786036) + (1555.0 8.91030374586 7.46409015869 302.688265306) + (1560.0 8.91413701949 7.47123191032 302.704744577) + (1565.0 8.91797029312 7.47837366196 302.721223847) + (1570.0 8.92180356675 7.48551541359 302.737703117) + (1575.0 8.92995697971 7.48958529161 302.756743245) + (1580.0 8.93926578965 7.49283361431 302.77646826) + (1585.0 8.94857459959 7.496081937 302.796193275) + (1590.0 8.95788340953 7.49933025969 302.81591829) + (1595.0 8.96719221947 7.50257858238 302.835643305) + (1600.0 8.97650102941 7.50582690508 302.85536832) + (1605.0 8.98580983935 7.50907522777 302.875093335) + (1610.0 8.9951186493 7.51232355046 302.89481835) + (1615.0 9.00442745924 7.51557187315 302.914543365) + (1620.0 9.01373626918 7.51882019585 302.93426838) + (1625.0 9.02304507912 7.52206851854 302.953993395) + (1630.0 9.03235388906 7.52531684123 302.973718411) + (1635.0 9.041662699 7.52856516392 302.993443426) + (1640.0 9.05097150894 7.53181348662 303.013168441) + (1645.0 9.06028031888 7.53506180931 303.032893456) + (1650.0 9.06958912882 7.538310132 303.052618471) + (1655.0 9.07889793876 7.5415584547 303.072343486) + (1660.0 9.0882067487 7.54480677739 303.092068501) + (1665.0 9.09751555864 7.54805510008 303.111793516) + (1670.0 9.10682436858 7.55130342277 303.131518531) + (1675.0 9.11613317852 7.55455174547 303.151243546) + (1680.0 9.12544198846 7.55780006816 303.170968561) + (1685.0 9.1347507984 7.56104839085 303.190693576) + (1690.0 9.14405960834 7.56429671354 303.210418591) + (1695.0 9.15336841829 7.56754503624 303.230143606) + (1700.0 9.16267722823 7.57079335893 303.249868621) + (1705.0 9.17198603817 7.57404168162 303.269593636) + (1710.0 9.18349377603 7.57239347669 303.290540127) + (1715.0 9.19922226437 7.56134659115 303.31383119) + (1720.0 9.2149507527 7.55029970561 303.337122252) + (1725.0 9.23067924103 7.53925282007 303.360413315) + (1730.0 9.24640772936 7.52820593453 303.383704377) + (1735.0 9.2621362177 7.51715904899 303.40699544) + (1740.0 9.27786470603 7.50611216345 303.430286502) + (1745.0 9.29359319436 7.49506527791 303.453577565) + (1750.0 9.3093216827 7.48401839237 303.476868627) + (1755.0 9.32505017103 7.47297150683 303.50015969) + (1760.0 9.34077865936 7.46192462129 303.523450752) + (1765.0 9.35650714769 7.45087773575 303.546741815) + (1770.0 9.37223563603 7.43983085021 303.570032877) + (1775.0 9.38796412436 7.42878396467 303.59332394) + (1780.0 9.40369261269 7.41773707912 303.616615003) + (1785.0 9.41942110102 7.40669019358 303.639906065) + (1790.0 9.43514958936 7.39564330804 303.663197128) + (1795.0 9.45087807769 7.3845964225 303.68648819) + (1800.0 9.46660656602 7.37354953696 303.709779253) + (1805.0 9.48233505436 7.36250265142 303.733070315) + (1810.0 9.49806354269 7.35145576588 303.756361378) + (1815.0 9.51379203102 7.34040888034 303.77965244) + (1820.0 9.52952051935 7.3293619948 303.802943503) + (1825.0 9.54524900769 7.31831510926 303.826234565) + (1830.0 9.56097749602 7.30726822372 303.849525628) + (1835.0 9.57670598435 7.29622133818 303.87281669) + (1840.0 9.59243447268 7.28517445264 303.896107753) + (1845.0 9.60816296102 7.2741275671 303.919398815) + (1850.0 9.62389144935 7.26308068156 303.942689878) + (1855.0 9.63961993768 7.25203379602 303.96598094) + (1860.0 9.65432709188 7.2376578099 303.988680381) + (1865.0 9.66596304977 7.21327107309 304.009600791) + (1870.0 9.67759900765 7.18888433629 304.0305212) + (1875.0 9.68923496554 7.16449759948 304.051441609) + (1880.0 9.70087092342 7.14011086267 304.072362018) + (1885.0 9.71250688131 7.11572412587 304.093282427) + (1890.0 9.72414283919 7.09133738906 304.114202836) + (1895.0 9.73577879708 7.06695065226 304.135123245) + (1900.0 9.74741475497 7.04256391545 304.156043654) + (1905.0 9.75905071285 7.01817717864 304.176964064) + (1910.0 9.77068667074 6.99379044184 304.197884473) + (1915.0 9.78232262862 6.96940370503 304.218804882) + (1920.0 9.79395858651 6.94501696822 304.239725291) + (1925.0 9.8055945444 6.92063023142 304.2606457) + (1930.0 9.81723050228 6.89624349461 304.281566109) + (1935.0 9.82886646017 6.8718567578 304.302486518) + (1940.0 9.84050241805 6.847470021 304.323406928) + (1945.0 9.85213837594 6.82308328419 304.344327337) + (1950.0 9.86377433382 6.79869654738 304.365247746) + (1955.0 9.87541029171 6.77430981058 304.386168155) + (1960.0 9.8870462496 6.74992307377 304.407088564) + (1965.0 9.89868220748 6.72553633696 304.428008973) + (1970.0 9.91031816537 6.70114960016 304.448929382) + (1975.0 9.92195412325 6.67676286335 304.469849792) + (1980.0 9.93359008114 6.65237612654 304.490770201) + (1985.0 9.94522603903 6.62798938974 304.51169061) + (1990.0 9.95686199691 6.60360265293 304.532611019) + (1995.0 9.9684979548 6.57921591612 304.553531428) + (2000.0 9.98013391268 6.55482917932 304.574451837) +); + +// Update internal field. +updateInternalFields true; + +// Update boundary field. +updateBoundaryFields false; + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/0.original/U b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/0.original/U new file mode 100755 index 000000000..6dbf85ec5 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/0.original/U @@ -0,0 +1,58 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform ($U0Mag 0 0); + +boundaryField +{ + lower + { + type slip; + } + upper + { + type slip; + } + west + { + type fixedValue; + value uniform ($U0Mag 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform ($U0Mag 0 0); + } + south + { + type slip; + } + north + { + type slip; + } +} + + + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/0.original/k b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/0.original/k new file mode 100755 index 000000000..c76a7e261 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/0.original/k @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k ; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.0; + +boundaryField +{ + lower + { + type zeroGradient; + value uniform 0.0; + } + upper + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedValue; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/0.original/nuSgs b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/0.original/nuSgs new file mode 100755 index 000000000..18e32f76e --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/0.original/nuSgs @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nuSgs; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform $nuSgs0; + +boundaryField +{ + lower + { + type zeroGradient; + value uniform 0.0; + } + upper + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedValue; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/0.original/p b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/0.original/p new file mode 100755 index 000000000..d77aa1268 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/0.original/p @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0000"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + lower + { + type zeroGradient; + value uniform 0; + } + upper + { + type zeroGradient; + value uniform 0; + } + east + { + type fixedValue; + value uniform 0; + } + west + { + type zeroGradient; + value uniform 0; + } + south + { + type zeroGradient; + value uniform 0; + } + north + { + type zeroGradient; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/SC_INPUT.txt b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/SC_INPUT.txt new file mode 100644 index 000000000..b54f8800d --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/SC_INPUT.txt @@ -0,0 +1,7 @@ +Time(s) Turbine Yaw(degCompass) Pitch(deg) +0 0 270 0.0 +5 0 260 0.0 +20 0 250 0.0 +30 0 240 0.0 +0 1 270 0.0 +10 1 280 0.0 \ No newline at end of file diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/LESProperties b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/LESProperties new file mode 100755 index 000000000..5fcbb46e9 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/LESProperties @@ -0,0 +1,124 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object LESProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#include "../setUp" + + +LESModel $LESModel; +//LESModel SmagorinskyABL; +//LESModel Smagorinsky; +//LESModel dynLagrangianCsBound; + +delta smooth; + +SmagorinskyCoeffs +{ + ce $ce; + ck $ck; +} + +SmagorinskyABLCoeffs +{ + ce $ce; + ck $ck; + TName "T"; + kappatName "kappat"; +} + +oneEqEddyABLCoeffs +{ + ce $ce; + ck $ck; + TName "T"; + kappatName "kappat"; +} + +oneEqEddyCoeffs +{ + ce $ce; + ck $ck; +} + +printCoeffs on; + +dynLagrangianCsBoundCoeffs +{ + filter simple; +} + +cubeRootVolCoeffs +{ + deltaCoeff 1; +} + +PrandtlCoeffs +{ + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + smoothCoeffs + { + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + maxDeltaRatio 1.1; + } + + Cdelta 0.158; +} + +vanDriestCoeffs +{ + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + smoothCoeffs + { + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + maxDeltaRatio 1.1; + } + + Aplus 26; + Cdelta 0.158; +} + +smoothCoeffs +{ + delta cubeRootVol; + cubeRootVolCoeffs + { + deltaCoeff 1; + } + + maxDeltaRatio 1.1; +} + + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/Cylinder1 b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/Cylinder1 new file mode 100644 index 000000000..7106c17d0 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/Cylinder1 @@ -0,0 +1,23 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.5000) + ( 0.00 0.000 0.5000) + ( 180.00 0.000 0.5000) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/Cylinder2 b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/Cylinder2 new file mode 100644 index 000000000..b2e7923f1 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/Cylinder2 @@ -0,0 +1,23 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.3500) + ( 0.00 0.000 0.3500) + ( 180.00 0.000 0.3500) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU21_A17 b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU21_A17 new file mode 100644 index 000000000..17eb9de96 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU21_A17 @@ -0,0 +1,162 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180 0 0.0185) + (-175 0.394 0.0332) + (-170 0.788 0.0945) + (-160 0.67 0.2809) + (-155 0.749 0.3932) + (-150 0.797 0.5112) + (-145 0.818 0.6309) + (-140 0.813 0.7485) + (-135 0.786 0.8612) + (-130 0.739 0.9665) + (-125 0.675 1.0625) + (-120 0.596 1.1476) + (-115 0.505 1.2206) + (-110 0.403 1.2805) + (-105 0.294 1.3265) + (-100 0.179 1.3582) + (-95 0.06 1.3752) + (-90 -0.06 1.3774) + (-85 -0.179 1.3648) + (-80 -0.295 1.3376) + (-75 -0.407 1.2962) + (-70 -0.512 1.2409) + (-65 -0.608 1.1725) + (-60 -0.693 1.0919) + (-55 -0.764 1.0002) + (-50 -0.82 0.899 ) + (-45 -0.857 0.79 ) + (-40 -0.875 0.6754) + (-35 -0.869 0.5579) + (-30 -0.838 0.4405) + (-25 -0.791 0.3256) + (-24 -0.794 0.3013) + (-23 -0.805 0.2762) + (-22 -0.821 0.2506) + (-21 -0.843 0.2246) + (-20 -0.869 0.1983) + (-19 -0.899 0.172 ) + (-18 -0.931 0.1457) + (-17 -0.964 0.1197) + (-16 -0.999 0.094 ) + (-15 -1.033 0.0689) + (-14.5 -1.05 0.0567) + (-12.01 -0.953 0.0271) + (-11 -0.9 0.0303) + (-9.98 -0.827 0.0287) + (-8.12 -0.536 0.0124) + (-7.62 -0.467 0.0109) + (-7.11 -0.393 0.0092) + (-6.6 -0.323 0.0083) + (-6.5 -0.311 0.0089) + (-6 -0.245 0.0082) + (-5.5 -0.178 0.0074) + (-5 -0.113 0.0069) + (-4.5 -0.048 0.0065) + (-4 0.016 0.0063) + (-3.5 0.08 0.0061) + (-3 0.145 0.0058) + (-2.5 0.208 0.0057) + (-2 0.27 0.0057) + (-1.5 0.333 0.0057) + (-1 0.396 0.0057) + (-0.5 0.458 0.0057) + ( 0 0.521 0.0057) + ( 0.5 0.583 0.0057) + ( 1 0.645 0.0058) + ( 1.5 0.706 0.0058) + ( 2 0.768 0.0059) + ( 2.5 0.828 0.0061) + ( 3 0.888 0.0063) + ( 3.5 0.948 0.0066) + ( 4 0.996 0.0071) + ( 4.5 1.046 0.0079) + ( 5 1.095 0.009 ) + ( 5.5 1.145 0.0103) + ( 6 1.192 0.0113) + ( 6.5 1.239 0.0122) + ( 7 1.283 0.0131) + ( 7.5 1.324 0.0139) + ( 8 1.358 0.0147) + ( 8.5 1.385 0.0158) + ( 9 1.403 0.0181) + ( 9.5 1.401 0.0211) + ( 10 1.358 0.0255) + ( 10.5 1.313 0.0301) + ( 11 1.287 0.0347) + ( 11.5 1.274 0.0401) + ( 12 1.272 0.0468) + ( 12.5 1.273 0.0545) + ( 13 1.273 0.0633) + ( 13.5 1.273 0.0722) + ( 14 1.272 0.0806) + ( 14.5 1.273 0.09 ) + ( 15 1.275 0.0987) + ( 15.5 1.281 0.1075) + ( 16 1.284 0.117 ) + ( 16.5 1.296 0.127 ) + ( 17 1.306 0.1368) + ( 17.5 1.308 0.1464) + ( 18 1.308 0.1562) + ( 18.5 1.308 0.1664) + ( 19 1.308 0.177 ) + ( 19.5 1.307 0.1878) + ( 20 1.311 0.1987) + ( 20.5 1.325 0.21 ) + ( 21 1.324 0.2214) + ( 22 1.277 0.2499) + ( 23 1.229 0.2786) + ( 24 1.182 0.3077) + ( 25 1.136 0.3371) + ( 26 1.093 0.3664) + ( 28 1.017 0.4246) + ( 30 0.962 0.4813) + ( 32 0.937 0.5356) + ( 35 0.947 0.6127) + ( 40 0.95 0.7396) + ( 45 0.928 0.8623) + ( 50 0.884 0.9781) + ( 55 0.821 1.0846) + ( 60 0.74 1.1796) + ( 65 0.646 1.2617) + ( 70 0.54 1.3297) + ( 75 0.425 1.3827) + ( 80 0.304 1.4202) + ( 85 0.179 1.4423) + ( 90 0.053 1.4512) + ( 95 -0.073 1.448 ) + ( 100 -0.198 1.4294) + ( 105 -0.319 1.3954) + ( 110 -0.434 1.3464) + ( 115 -0.541 1.2829) + ( 120 -0.637 1.2057) + ( 125 -0.72 1.1157) + ( 130 -0.787 1.0144) + ( 135 -0.836 0.9033) + ( 140 -0.864 0.7845) + ( 145 -0.869 0.6605) + ( 150 -0.847 0.5346) + ( 155 -0.795 0.4103) + ( 160 -0.711 0.2922) + ( 170 -0.788 0.0969) + ( 175 -0.394 0.0334) + ( 180 0 0.0185) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU25_A17 b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU25_A17 new file mode 100644 index 000000000..56981e639 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU25_A17 @@ -0,0 +1,161 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0202) + (-175.00 0.368 0.0324) + (-170.00 0.735 0.0943) + (-160.00 0.695 0.2848) + (-155.00 0.777 0.4001) + (-150.00 0.828 0.5215) + (-145.00 0.850 0.6447) + (-140.00 0.846 0.7660) + (-135.00 0.818 0.8823) + (-130.00 0.771 0.9911) + (-125.00 0.705 1.0905) + (-120.00 0.624 1.1787) + (-115.00 0.530 1.2545) + (-110.00 0.426 1.3168) + (-105.00 0.314 1.3650) + (-100.00 0.195 1.3984) + ( -95.00 0.073 1.4169) + ( -90.00 -0.050 1.4201) + ( -85.00 -0.173 1.4081) + ( -80.00 -0.294 1.3811) + ( -75.00 -0.409 1.3394) + ( -70.00 -0.518 1.2833) + ( -65.00 -0.617 1.2138) + ( -60.00 -0.706 1.1315) + ( -55.00 -0.780 1.0378) + ( -50.00 -0.839 0.9341) + ( -45.00 -0.879 0.8221) + ( -40.00 -0.898 0.7042) + ( -35.00 -0.893 0.5829) + ( -30.00 -0.862 0.4616) + ( -25.00 -0.803 0.3441) + ( -24.00 -0.792 0.3209) + ( -23.00 -0.789 0.2972) + ( -22.00 -0.792 0.2730) + ( -21.00 -0.801 0.2485) + ( -20.00 -0.815 0.2237) + ( -19.00 -0.833 0.1990) + ( -18.00 -0.854 0.1743) + ( -17.00 -0.879 0.1498) + ( -16.00 -0.905 0.1256) + ( -15.00 -0.932 0.1020) + ( -14.00 -0.959 0.0789) + ( -13.00 -0.985 0.0567) + ( -13.00 -0.985 0.0567) + ( -12.01 -0.953 0.0271) + ( -11.00 -0.900 0.0303) + ( -9.98 -0.827 0.0287) + ( -8.98 -0.753 0.0271) + ( -8.47 -0.691 0.0264) + ( -7.45 -0.555 0.0114) + ( -6.42 -0.413 0.0094) + ( -5.40 -0.271 0.0086) + ( -5.00 -0.220 0.0073) + ( -4.50 -0.152 0.0071) + ( -4.00 -0.084 0.0070) + ( -3.50 -0.018 0.0069) + ( -3.00 0.049 0.0068) + ( -2.50 0.115 0.0068) + ( -2.00 0.181 0.0068) + ( -1.50 0.247 0.0067) + ( -1.00 0.312 0.0067) + ( -0.50 0.377 0.0067) + ( 0.00 0.444 0.0065) + ( 0.50 0.508 0.0065) + ( 1.00 0.573 0.0066) + ( 1.50 0.636 0.0067) + ( 2.00 0.701 0.0068) + ( 2.50 0.765 0.0069) + ( 3.00 0.827 0.0070) + ( 3.50 0.890 0.0071) + ( 4.00 0.952 0.0073) + ( 4.50 1.013 0.0076) + ( 5.00 1.062 0.0079) + ( 6.00 1.161 0.0099) + ( 6.50 1.208 0.0117) + ( 7.00 1.254 0.0132) + ( 7.50 1.301 0.0143) + ( 8.00 1.336 0.0153) + ( 8.50 1.369 0.0165) + ( 9.00 1.400 0.0181) + ( 9.50 1.428 0.0211) + ( 10.00 1.442 0.0262) + ( 10.50 1.427 0.0336) + ( 11.00 1.374 0.0420) + ( 11.50 1.316 0.0515) + ( 12.00 1.277 0.0601) + ( 12.50 1.250 0.0693) + ( 13.00 1.246 0.0785) + ( 13.50 1.247 0.0888) + ( 14.00 1.256 0.1000) + ( 14.50 1.260 0.1108) + ( 15.00 1.271 0.1219) + ( 15.50 1.281 0.1325) + ( 16.00 1.289 0.1433) + ( 16.50 1.294 0.1541) + ( 17.00 1.304 0.1649) + ( 17.50 1.309 0.1754) + ( 18.00 1.315 0.1845) + ( 18.50 1.320 0.1953) + ( 19.00 1.330 0.2061) + ( 19.50 1.343 0.2170) + ( 20.00 1.354 0.2280) + ( 20.50 1.359 0.2390) + ( 21.00 1.360 0.2536) + ( 22.00 1.325 0.2814) + ( 23.00 1.288 0.3098) + ( 24.00 1.251 0.3386) + ( 25.00 1.215 0.3678) + ( 26.00 1.181 0.3972) + ( 28.00 1.120 0.4563) + ( 30.00 1.076 0.5149) + ( 32.00 1.056 0.5720) + ( 35.00 1.066 0.6548) + ( 40.00 1.064 0.7901) + ( 45.00 1.035 0.9190) + ( 50.00 0.980 1.0378) + ( 55.00 0.904 1.1434) + ( 60.00 0.810 1.2333) + ( 65.00 0.702 1.3055) + ( 70.00 0.582 1.3587) + ( 75.00 0.456 1.3922) + ( 80.00 0.326 1.4063) + ( 85.00 0.197 1.4042) + ( 90.00 0.072 1.3985) + ( 95.00 -0.050 1.3973) + ( 100.00 -0.170 1.3810) + ( 105.00 -0.287 1.3498) + ( 110.00 -0.399 1.3041) + ( 115.00 -0.502 1.2442) + ( 120.00 -0.596 1.1709) + ( 125.00 -0.677 1.0852) + ( 130.00 -0.743 0.9883) + ( 135.00 -0.792 0.8818) + ( 140.00 -0.821 0.7676) + ( 145.00 -0.826 0.6481) + ( 150.00 -0.806 0.5264) + ( 155.00 -0.758 0.4060) + ( 160.00 -0.679 0.2912) + ( 170.00 -0.735 0.0995) + ( 175.00 -0.368 0.0356) + ( 180.00 0.000 0.0202) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU30_A17 b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU30_A17 new file mode 100644 index 000000000..35fb11988 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU30_A17 @@ -0,0 +1,163 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0267) + (-175.00 0.274 0.0370) + (-170.00 0.547 0.0968) + (-160.00 0.685 0.2876) + (-155.00 0.766 0.4025) + (-150.00 0.816 0.5232) + (-145.00 0.836 0.6454) + (-140.00 0.832 0.7656) + (-135.00 0.804 0.8807) + (-130.00 0.756 0.9882) + (-125.00 0.690 1.0861) + (-120.00 0.609 1.1730) + (-115.00 0.515 1.2474) + (-110.00 0.411 1.3084) + (-105.00 0.300 1.3552) + (-100.00 0.182 1.3875) + ( -95.00 0.061 1.4048) + ( -90.00 -0.061 1.4070) + ( -85.00 -0.183 1.3941) + ( -80.00 -0.302 1.3664) + ( -75.00 -0.416 1.3240) + ( -70.00 -0.523 1.2676) + ( -65.00 -0.622 1.1978) + ( -60.00 -0.708 1.1156) + ( -55.00 -0.781 1.0220) + ( -50.00 -0.838 0.9187) + ( -45.00 -0.877 0.8074) + ( -40.00 -0.895 0.6904) + ( -35.00 -0.889 0.5703) + ( -30.00 -0.858 0.4503) + ( -25.00 -0.832 0.3357) + ( -24.00 -0.852 0.3147) + ( -23.00 -0.882 0.2946) + ( -22.00 -0.919 0.2752) + ( -21.00 -0.963 0.2566) + ( -20.00 -1.013 0.2388) + ( -19.00 -1.067 0.2218) + ( -18.00 -1.125 0.2056) + ( -17.00 -1.185 0.1901) + ( -16.00 -1.245 0.1754) + ( -15.25 -1.290 0.1649) + ( -14.24 -1.229 0.1461) + ( -13.24 -1.148 0.1263) + ( -12.22 -1.052 0.1051) + ( -11.22 -0.965 0.0886) + ( -10.19 -0.867 0.0740) + ( -9.70 -0.822 0.0684) + ( -9.18 -0.769 0.0605) + ( -8.18 -0.756 0.0270) + ( -7.19 -0.690 0.0180) + ( -6.65 -0.616 0.0166) + ( -6.13 -0.542 0.0152) + ( -6.00 -0.525 0.0117) + ( -5.50 -0.451 0.0105) + ( -5.00 -0.382 0.0097) + ( -4.50 -0.314 0.0092) + ( -4.00 -0.251 0.0091) + ( -3.50 -0.189 0.0089) + ( -3.00 -0.120 0.0089) + ( -2.50 -0.051 0.0088) + ( -2.00 0.017 0.0088) + ( -1.50 0.085 0.0088) + ( -1.00 0.152 0.0088) + ( -0.50 0.219 0.0088) + ( 0.00 0.288 0.0087) + ( 0.50 0.354 0.0087) + ( 1.00 0.421 0.0088) + ( 1.50 0.487 0.0089) + ( 2.00 0.554 0.0090) + ( 2.50 0.619 0.0091) + ( 3.00 0.685 0.0092) + ( 3.50 0.749 0.0093) + ( 4.00 0.815 0.0095) + ( 4.50 0.879 0.0096) + ( 5.00 0.944 0.0097) + ( 5.50 1.008 0.0099) + ( 6.00 1.072 0.0101) + ( 6.50 1.135 0.0103) + ( 7.00 1.197 0.0107) + ( 7.50 1.256 0.0112) + ( 8.00 1.305 0.0125) + ( 9.00 1.390 0.0155) + ( 9.50 1.424 0.0171) + ( 10.00 1.458 0.0192) + ( 10.50 1.488 0.0219) + ( 11.00 1.512 0.0255) + ( 11.50 1.533 0.0307) + ( 12.00 1.549 0.0370) + ( 12.50 1.558 0.0452) + ( 13.00 1.470 0.0630) + ( 13.50 1.398 0.0784) + ( 14.00 1.354 0.0931) + ( 14.50 1.336 0.1081) + ( 15.00 1.333 0.1239) + ( 15.50 1.326 0.1415) + ( 16.00 1.329 0.1592) + ( 16.50 1.326 0.1743) + ( 17.00 1.321 0.1903) + ( 17.50 1.331 0.2044) + ( 18.00 1.333 0.2186) + ( 18.50 1.340 0.2324) + ( 19.00 1.362 0.2455) + ( 19.50 1.382 0.2584) + ( 20.00 1.398 0.2689) + ( 20.50 1.426 0.2814) + ( 21.00 1.437 0.2943) + ( 22.00 1.418 0.3246) + ( 23.00 1.397 0.3557) + ( 24.00 1.376 0.3875) + ( 25.00 1.354 0.4198) + ( 26.00 1.332 0.4524) + ( 28.00 1.293 0.5183) + ( 30.00 1.265 0.5843) + ( 32.00 1.253 0.6492) + ( 35.00 1.264 0.7438) + ( 40.00 1.258 0.8970) + ( 45.00 1.217 1.0402) + ( 50.00 1.146 1.1686) + ( 55.00 1.049 1.2779) + ( 60.00 0.932 1.3647) + ( 65.00 0.799 1.4267) + ( 70.00 0.657 1.4621) + ( 75.00 0.509 1.4708) + ( 80.00 0.362 1.4544) + ( 85.00 0.221 1.4196) + ( 90.00 0.092 1.3938) + ( 95.00 -0.030 1.3943) + ( 100.00 -0.150 1.3798) + ( 105.00 -0.267 1.3504) + ( 110.00 -0.379 1.3063) + ( 115.00 -0.483 1.2481) + ( 120.00 -0.578 1.1763) + ( 125.00 -0.660 1.0919) + ( 130.00 -0.727 0.9962) + ( 135.00 -0.777 0.8906) + ( 140.00 -0.807 0.7771) + ( 145.00 -0.815 0.6581) + ( 150.00 -0.797 0.5364) + ( 155.00 -0.750 0.4157) + ( 160.00 -0.673 0.3000) + ( 170.00 -0.547 0.1051) + ( 175.00 -0.274 0.0388) + ( 180.00 0.000 0.0267) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU35_A17 b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU35_A17 new file mode 100644 index 000000000..041013e24 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU35_A17 @@ -0,0 +1,155 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0407) + (-175.00 0.223 0.0507) + (-170.00 0.405 0.1055) + (-160.00 0.658 0.2982) + (-155.00 0.733 0.4121) + (-150.00 0.778 0.5308) + (-145.00 0.795 0.6503) + (-140.00 0.787 0.7672) + (-135.00 0.757 0.8785) + (-130.00 0.708 0.9819) + (-125.00 0.641 1.0756) + (-120.00 0.560 1.1580) + (-115.00 0.467 1.2280) + (-110.00 0.365 1.2847) + (-105.00 0.255 1.3274) + (-100.00 0.139 1.3557) + ( -95.00 0.021 1.3692) + ( -90.00 -0.098 1.3680) + ( -85.00 -0.216 1.3521) + ( -80.00 -0.331 1.3218) + ( -75.00 -0.441 1.2773) + ( -70.00 -0.544 1.2193) + ( -65.00 -0.638 1.1486) + ( -60.00 -0.720 1.0660) + ( -55.00 -0.788 0.9728) + ( -50.00 -0.840 0.8705) + ( -45.00 -0.875 0.7611) + ( -40.00 -0.889 0.6466) + ( -35.00 -0.880 0.5299) + ( -30.00 -0.846 0.4141) + ( -25.00 -0.784 0.3030) + ( -24.00 -0.768 0.2817) + ( -23.00 -0.751 0.2608) + ( -22.00 -0.733 0.2404) + ( -21.00 -0.714 0.2205) + ( -20.00 -0.693 0.2011) + ( -19.00 -0.671 0.1822) + ( -18.00 -0.648 0.1640) + ( -17.00 -0.624 0.1465) + ( -16.00 -0.601 0.1300) + ( -15.00 -0.579 0.1145) + ( -14.00 -0.559 0.1000) + ( -13.00 -0.539 0.0867) + ( -12.00 -0.519 0.0744) + ( -11.00 -0.499 0.0633) + ( -10.00 -0.480 0.0534) + ( -5.54 -0.385 0.0245) + ( -5.04 -0.359 0.0225) + ( -4.54 -0.360 0.0196) + ( -4.04 -0.355 0.0174) + ( -3.54 -0.307 0.0162) + ( -3.04 -0.246 0.0144) + ( -3.00 -0.240 0.0240) + ( -2.50 -0.163 0.0188) + ( -2.00 -0.091 0.0160) + ( -1.50 -0.019 0.0137) + ( -1.00 0.052 0.0118) + ( -0.50 0.121 0.0104) + ( 0.00 0.196 0.0094) + ( 0.50 0.265 0.0096) + ( 1.00 0.335 0.0098) + ( 1.50 0.404 0.0099) + ( 2.00 0.472 0.0100) + ( 2.50 0.540 0.0102) + ( 3.00 0.608 0.0103) + ( 3.50 0.674 0.0104) + ( 4.00 0.742 0.0105) + ( 4.50 0.809 0.0107) + ( 5.00 0.875 0.0108) + ( 5.50 0.941 0.0109) + ( 6.00 1.007 0.0110) + ( 6.50 1.071 0.0113) + ( 7.00 1.134 0.0115) + ( 7.50 1.198 0.0117) + ( 8.00 1.260 0.0120) + ( 8.50 1.318 0.0126) + ( 9.00 1.368 0.0133) + ( 9.50 1.422 0.0143) + ( 10.00 1.475 0.0156) + ( 10.50 1.523 0.0174) + ( 11.00 1.570 0.0194) + ( 11.50 1.609 0.0227) + ( 12.00 1.642 0.0269) + ( 12.50 1.675 0.0319) + ( 13.00 1.700 0.0398) + ( 13.50 1.717 0.0488) + ( 14.00 1.712 0.0614) + ( 14.50 1.703 0.0786) + ( 15.50 1.671 0.1173) + ( 16.00 1.649 0.1377) + ( 16.50 1.621 0.1600) + ( 17.00 1.598 0.1814) + ( 17.50 1.571 0.2042) + ( 18.00 1.549 0.2316) + ( 19.00 1.544 0.2719) + ( 19.50 1.549 0.2906) + ( 20.00 1.565 0.3085) + ( 21.00 1.565 0.3447) + ( 22.00 1.563 0.3820) + ( 23.00 1.558 0.4203) + ( 24.00 1.552 0.4593) + ( 25.00 1.546 0.4988) + ( 26.00 1.539 0.5387) + ( 28.00 1.527 0.6187) + ( 30.00 1.522 0.6978) + ( 32.00 1.529 0.7747) + ( 35.00 1.544 0.8869) + ( 40.00 1.529 1.0671) + ( 45.00 1.471 1.2319) + ( 50.00 1.376 1.3747) + ( 55.00 1.249 1.4899) + ( 60.00 1.097 1.5728) + ( 65.00 0.928 1.6202) + ( 70.00 0.750 1.6302) + ( 75.00 0.570 1.6031) + ( 80.00 0.396 1.5423) + ( 85.00 0.237 1.4598) + ( 90.00 0.101 1.4041) + ( 95.00 -0.022 1.4053) + ( 100.00 -0.143 1.3914) + ( 105.00 -0.261 1.3625) + ( 110.00 -0.374 1.3188) + ( 115.00 -0.480 1.2608) + ( 120.00 -0.575 1.1891) + ( 125.00 -0.659 1.1046) + ( 130.00 -0.727 1.0086) + ( 135.00 -0.778 0.9025) + ( 140.00 -0.809 0.7883) + ( 145.00 -0.818 0.6684) + ( 150.00 -0.800 0.5457) + ( 155.00 -0.754 0.4236) + ( 160.00 -0.677 0.3066) + ( 170.00 -0.417 0.1085) + ( 175.00 -0.229 0.0510) + ( 180.00 0.000 0.0407) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU40_A17 b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU40_A17 new file mode 100644 index 000000000..6138a98dd --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/DU40_A17 @@ -0,0 +1,156 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0602) + (-175.00 0.218 0.0699) + (-170.00 0.397 0.1107) + (-160.00 0.642 0.3045) + (-155.00 0.715 0.4179) + (-150.00 0.757 0.5355) + (-145.00 0.772 0.6535) + (-140.00 0.762 0.7685) + (-135.00 0.731 0.8777) + (-130.00 0.680 0.9788) + (-125.00 0.613 1.0700) + (-120.00 0.532 1.1499) + (-115.00 0.439 1.2174) + (-110.00 0.337 1.2716) + (-105.00 0.228 1.3118) + (-100.00 0.114 1.3378) + ( -95.00 -0.002 1.3492) + ( -90.00 -0.120 1.3460) + ( -85.00 -0.236 1.3283) + ( -80.00 -0.349 1.2964) + ( -75.00 -0.456 1.2507) + ( -70.00 -0.557 1.1918) + ( -65.00 -0.647 1.1204) + ( -60.00 -0.727 1.0376) + ( -55.00 -0.792 0.9446) + ( -50.00 -0.842 0.8429) + ( -45.00 -0.874 0.7345) + ( -40.00 -0.886 0.6215) + ( -35.00 -0.875 0.5067) + ( -30.00 -0.839 0.3932) + ( -25.00 -0.777 0.2849) + ( -24.00 -0.761 0.2642) + ( -23.00 -0.744 0.2440) + ( -22.00 -0.725 0.2242) + ( -21.00 -0.706 0.2049) + ( -20.00 -0.685 0.1861) + ( -19.00 -0.662 0.1687) + ( -18.00 -0.635 0.1533) + ( -17.00 -0.605 0.1398) + ( -16.00 -0.571 0.1281) + ( -15.00 -0.534 0.1183) + ( -14.00 -0.494 0.1101) + ( -13.00 -0.452 0.1036) + ( -12.00 -0.407 0.0986) + ( -11.00 -0.360 0.0951) + ( -10.00 -0.311 0.0931) + ( -8.00 -0.208 0.0930) + ( -6.00 -0.111 0.0689) + ( -5.50 -0.090 0.0614) + ( -5.00 -0.072 0.0547) + ( -4.50 -0.065 0.0480) + ( -4.00 -0.054 0.0411) + ( -3.50 -0.017 0.0349) + ( -3.00 0.003 0.0299) + ( -2.50 0.014 0.0255) + ( -2.00 0.009 0.0198) + ( -1.50 0.004 0.0164) + ( -1.00 0.036 0.0147) + ( -0.50 0.073 0.0137) + ( 0.00 0.137 0.0113) + ( 0.50 0.213 0.0114) + ( 1.00 0.292 0.0118) + ( 1.50 0.369 0.0122) + ( 2.00 0.444 0.0124) + ( 2.50 0.514 0.0124) + ( 3.00 0.580 0.0123) + ( 3.50 0.645 0.0120) + ( 4.00 0.710 0.0119) + ( 4.50 0.776 0.0122) + ( 5.00 0.841 0.0125) + ( 5.50 0.904 0.0129) + ( 6.00 0.967 0.0135) + ( 6.50 1.027 0.0144) + ( 7.00 1.084 0.0158) + ( 7.50 1.140 0.0174) + ( 8.00 1.193 0.0198) + ( 8.50 1.242 0.0231) + ( 9.00 1.287 0.0275) + ( 9.50 1.333 0.0323) + ( 10.00 1.368 0.0393) + ( 10.50 1.400 0.0475) + ( 11.00 1.425 0.0580) + ( 11.50 1.449 0.0691) + ( 12.00 1.473 0.0816) + ( 12.50 1.494 0.0973) + ( 13.00 1.513 0.1129) + ( 13.50 1.538 0.1288) + ( 14.50 1.587 0.1650) + ( 15.00 1.614 0.1845) + ( 15.50 1.631 0.2052) + ( 16.00 1.649 0.2250) + ( 16.50 1.666 0.2467) + ( 17.00 1.681 0.2684) + ( 17.50 1.699 0.2900) + ( 18.00 1.719 0.3121) + ( 19.00 1.751 0.3554) + ( 19.50 1.767 0.3783) + ( 20.50 1.798 0.4212) + ( 21.00 1.810 0.4415) + ( 22.00 1.830 0.4830) + ( 23.00 1.847 0.5257) + ( 24.00 1.861 0.5694) + ( 25.00 1.872 0.6141) + ( 26.00 1.881 0.6593) + ( 28.00 1.894 0.7513) + ( 30.00 1.904 0.8441) + ( 32.00 1.915 0.9364) + ( 35.00 1.929 1.0722) + ( 40.00 1.903 1.2873) + ( 45.00 1.820 1.4796) + ( 50.00 1.690 1.6401) + ( 55.00 1.522 1.7609) + ( 60.00 1.323 1.8360) + ( 65.00 1.106 1.8614) + ( 70.00 0.880 1.8347) + ( 75.00 0.658 1.7567) + ( 80.00 0.449 1.6334) + ( 85.00 0.267 1.4847) + ( 90.00 0.124 1.3879) + ( 95.00 0.002 1.3912) + ( 100.00 -0.118 1.3795) + ( 105.00 -0.235 1.3528) + ( 110.00 -0.348 1.3114) + ( 115.00 -0.453 1.2557) + ( 120.00 -0.549 1.1864) + ( 125.00 -0.633 1.1041) + ( 130.00 -0.702 1.0102) + ( 135.00 -0.754 0.9060) + ( 140.00 -0.787 0.7935) + ( 145.00 -0.797 0.6750) + ( 150.00 -0.782 0.5532) + ( 155.00 -0.739 0.4318) + ( 160.00 -0.664 0.3147) + ( 170.00 -0.410 0.1144) + ( 175.00 -0.226 0.0702) + ( 180.00 0.000 0.0602) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/NACA64_A17 b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/NACA64_A17 new file mode 100644 index 000000000..11fa618d0 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/airfoilProperties/NACA64_A17 @@ -0,0 +1,147 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object airfoilProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +airfoilData +( +// alpha C_l C_d + (-180.00 0.000 0.0198) + (-175.00 0.374 0.0341) + (-170.00 0.749 0.0955) + (-160.00 0.659 0.2807) + (-155.00 0.736 0.3919) + (-150.00 0.783 0.5086) + (-145.00 0.803 0.6267) + (-140.00 0.798 0.7427) + (-135.00 0.771 0.8537) + (-130.00 0.724 0.9574) + (-125.00 0.660 1.0519) + (-120.00 0.581 1.1355) + (-115.00 0.491 1.2070) + (-110.00 0.390 1.2656) + (-105.00 0.282 1.3104) + (-100.00 0.169 1.3410) + ( -95.00 0.052 1.3572) + ( -90.00 -0.067 1.3587) + ( -85.00 -0.184 1.3456) + ( -80.00 -0.299 1.3181) + ( -75.00 -0.409 1.2765) + ( -70.00 -0.512 1.2212) + ( -65.00 -0.606 1.1532) + ( -60.00 -0.689 1.0731) + ( -55.00 -0.759 0.9822) + ( -50.00 -0.814 0.8820) + ( -45.00 -0.850 0.7742) + ( -40.00 -0.866 0.6610) + ( -35.00 -0.860 0.5451) + ( -30.00 -0.829 0.4295) + ( -25.00 -0.853 0.3071) + ( -24.00 -0.870 0.2814) + ( -23.00 -0.890 0.2556) + ( -22.00 -0.911 0.2297) + ( -21.00 -0.934 0.2040) + ( -20.00 -0.958 0.1785) + ( -19.00 -0.982 0.1534) + ( -18.00 -1.005 0.1288) + ( -17.00 -1.082 0.1037) + ( -16.00 -1.113 0.0786) + ( -15.00 -1.105 0.0535) + ( -14.00 -1.078 0.0283) + ( -13.50 -1.053 0.0158) + ( -13.00 -1.015 0.0151) + ( -12.00 -0.904 0.0134) + ( -11.00 -0.807 0.0121) + ( -10.00 -0.711 0.0111) + ( -9.00 -0.595 0.0099) + ( -8.00 -0.478 0.0091) + ( -7.00 -0.375 0.0086) + ( -6.00 -0.264 0.0082) + ( -5.00 -0.151 0.0079) + ( -4.00 -0.017 0.0072) + ( -3.00 0.088 0.0064) + ( -2.00 0.213 0.0054) + ( -1.00 0.328 0.0052) + ( 0.00 0.442 0.0052) + ( 1.00 0.556 0.0052) + ( 2.00 0.670 0.0053) + ( 3.00 0.784 0.0053) + ( 4.00 0.898 0.0054) + ( 5.00 1.011 0.0058) + ( 6.00 1.103 0.0091) + ( 7.00 1.181 0.0113) + ( 8.00 1.257 0.0124) + ( 8.50 1.293 0.0130) + ( 9.00 1.326 0.0136) + ( 9.50 1.356 0.0143) + ( 10.00 1.382 0.0150) + ( 10.50 1.400 0.0267) + ( 11.00 1.415 0.0383) + ( 11.50 1.425 0.0498) + ( 12.00 1.434 0.0613) + ( 12.50 1.443 0.0727) + ( 13.00 1.451 0.0841) + ( 13.50 1.453 0.0954) + ( 14.00 1.448 0.1065) + ( 14.50 1.444 0.1176) + ( 15.00 1.445 0.1287) + ( 15.50 1.447 0.1398) + ( 16.00 1.448 0.1509) + ( 16.50 1.444 0.1619) + ( 17.00 1.438 0.1728) + ( 17.50 1.439 0.1837) + ( 18.00 1.448 0.1947) + ( 18.50 1.452 0.2057) + ( 19.00 1.448 0.2165) + ( 19.50 1.438 0.2272) + ( 20.00 1.428 0.2379) + ( 21.00 1.401 0.2590) + ( 22.00 1.359 0.2799) + ( 23.00 1.300 0.3004) + ( 24.00 1.220 0.3204) + ( 25.00 1.168 0.3377) + ( 26.00 1.116 0.3554) + ( 28.00 1.015 0.3916) + ( 30.00 0.926 0.4294) + ( 32.00 0.855 0.4690) + ( 35.00 0.800 0.5324) + ( 40.00 0.804 0.6452) + ( 45.00 0.793 0.7573) + ( 50.00 0.763 0.8664) + ( 55.00 0.717 0.9708) + ( 60.00 0.656 1.0693) + ( 65.00 0.582 1.1606) + ( 70.00 0.495 1.2438) + ( 75.00 0.398 1.3178) + ( 80.00 0.291 1.3809) + ( 85.00 0.176 1.4304) + ( 90.00 0.053 1.4565) + ( 95.00 -0.074 1.4533) + ( 100.00 -0.199 1.4345) + ( 105.00 -0.321 1.4004) + ( 110.00 -0.436 1.3512) + ( 115.00 -0.543 1.2874) + ( 120.00 -0.640 1.2099) + ( 125.00 -0.723 1.1196) + ( 130.00 -0.790 1.0179) + ( 135.00 -0.840 0.9064) + ( 140.00 -0.868 0.7871) + ( 145.00 -0.872 0.6627) + ( 150.00 -0.850 0.5363) + ( 155.00 -0.798 0.4116) + ( 160.00 -0.714 0.2931) + ( 170.00 -0.749 0.0971) + ( 175.00 -0.374 0.0334) + ( 180.00 0.000 0.0198) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/polyMesh/blockMeshDict b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/polyMesh/blockMeshDict new file mode 100755 index 000000000..463f233e0 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/polyMesh/blockMeshDict @@ -0,0 +1,101 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../../setUp" + + + + +convertToMeters 1.0; + +vertices +( + ( $xMin $yMin $zMin) + ( $xMax $yMin $zMin) + ( $xMax $yMax $zMin) + ( $xMin $yMax $zMin) + ( $xMin $yMin $zMax) + ( $xMax $yMin $zMax) + ( $xMax $yMax $zMax) + ( $xMin $yMax $zMax) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + lower + { + type wall; + faces + ( + (0 3 2 1) + ); + } + upper + { + type wall; + faces + ( + (4 5 6 7) + ); + } + west + { + type patch; + faces + ( + (0 4 7 3) + ); + } + east + { + type patch; + faces + ( + (1 2 6 5) + ); + } + north + { + type wall; + faces + ( + (3 7 6 2) + ); + } + south + { + type wall; + faces + ( + (0 1 5 4) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/transportProperties b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/transportProperties new file mode 100755 index 000000000..3ee719c86 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/transportProperties @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object transportProperties; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +transportModel Newtonian; + +// Molecular viscosity +nu nu [0 2 -1 0 0 0 0] $nu; + +// Reference temperature +TRef TRef [0 0 0 1 0 0 0] $TRef; + +// Prandtl numbers +Pr Pr [0 0 0 0 0 0 0] $Pr; +Prt Prt [0 0 0 0 0 0 0] $Prt; +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/turbineArrayProperties b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/turbineArrayProperties new file mode 100644 index 000000000..870751321 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/turbineArrayProperties @@ -0,0 +1,108 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbineArrayProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +globalProperties +{ + outputControl "timeStep"; + outputInterval 1; +} + +// _SSC_ +sscProperties +{ + sscEnabled true; //Enable/disable ssc, if not present defaults to False + nInputsToSSC 3; // Number of inputs EACH turbine passes to the super controller + nOutputsFromSSC 2; // Number of outputs the super controller sends to EACH turbine + sscControllerType "zeromqSSC"; // The type of SSC + sscMeasurementsFunction "default"; // Measurements function + zmqAddress "tcp://localhost:5553"; // zeroMQ connection port +} + +turbine0 +{ + turbineType "NREL5MWRef"; + includeNacelle true; + includeTower true; + baseLocation (1000.0 1500.0 0.0); + numBladePoints 40; + numNacellePoints 10; + numTowerPoints 40; + forceScalar 1.0; + bladePointDistType "uniform"; + nacellePointDistType "uniform"; + towerPointDistType "uniform"; + bladeSearchCellMethod "disk"; + bladeActuatorPointInterpType "integral"; + nacelleActuatorPointInterpType "linear"; + towerActuatorPointInterpType "linear"; + actuatorUpdateType "oldPosition"; + bladeForceProjectionType "uniformGaussian"; + nacelleForceProjectionType "diskGaussian"; + towerForceProjectionType "advanced"; + bladeForceProjectionDirection "localVelocityAligned"; + bladeEpsilon (20.0 0.0 0.0); + nacelleEpsilon (20.0 20.0 0.0); + towerEpsilon (20.0 20.0 0.0); + nacelleSampleDistance 1.0; + towerSampleDistance 3.5; + tipRootLossCorrType "Glauert"; + rotationDir "cw"; + Azimuth 0.0; + RotSpeed 9.1552; + TorqueGen 0.0; + Pitch 0.0; + NacYaw 270.0; + fluidDensity 1.23; + velocityDragCorrType "none"; +} + +turbine1 +{ + turbineType "NREL5MWRef"; + includeNacelle true; + includeTower true; + baseLocation (2000.0 1500.0 0.0); + numBladePoints 40; + numNacellePoints 10; + numTowerPoints 40; + forceScalar 1.0; + bladePointDistType "uniform"; + nacellePointDistType "uniform"; + towerPointDistType "uniform"; + bladeSearchCellMethod "disk"; + bladeActuatorPointInterpType "integral"; + nacelleActuatorPointInterpType "linear"; + towerActuatorPointInterpType "linear"; + actuatorUpdateType "oldPosition"; + bladeForceProjectionType "uniformGaussian"; + nacelleForceProjectionType "diskGaussian"; + towerForceProjectionType "advanced"; + bladeForceProjectionDirection "localVelocityAligned"; + bladeEpsilon (20.0 0.0 0.0); + nacelleEpsilon (20.0 20.0 0.0); + towerEpsilon (20.0 20.0 0.0); + nacelleSampleDistance 1.0; + towerSampleDistance 3.5; + tipRootLossCorrType "Glauert"; + rotationDir "cw"; + Azimuth 0.0; + RotSpeed 9.1552; + TorqueGen 0.0; + Pitch 0.0; + NacYaw 270.0; + fluidDensity 1.23; + velocityDragCorrType "none"; +} \ No newline at end of file diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/turbineProperties/NREL5MWRef b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/turbineProperties/NREL5MWRef new file mode 100644 index 000000000..60ef6953c --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/turbineProperties/NREL5MWRef @@ -0,0 +1,130 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbineProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +NumBl 3; +TipRad 63.0; +HubRad 1.5; +UndSling 0.0; +OverHang -5.01910; +NacelleLength 8; +NacelleFrontalArea 2; +NacelleCd 0.5; +TowerHt 87.6; +Twr2Shft 1.96256; +ShftTilt -5.0; +PreCone (-2.5 -2.5 -2.5); +GBRatio 97.0; +GBEfficiency 1.0; +GenEfficiency 0.944; +RatedRotSpeed 12.1; +GenIner 534.116; +HubIner 115.926E3; +BladeIner 11.776047E6; +GenTorqueControllerType "fiveRegion"; +//GenTorqueControllerType "speedTorqueTable"; +//GenTorqueControllerType "none"; +BladePitchControllerType "PID"; +//BladePitchControllerType "none"; +NacYawControllerType "yawSC"; +RotSpeedLimiter false; +GenTorqueRateLimiter true; +NacYawRateLimiter true; +BladePitchRateLimiter true; +SpeedFilterCornerFrequency 2.0; + + +GenTorqueControllerParams +{ + RateLimitGenTorque 15.0E3; + SpeedTorqueTable + ( + // gen speed (RPM) gen torque (N-m) + ( 670.00 0.0 ) + ( 871.00 20000.0 ) + ( 1161.96 32000.0 ) + ( 1173.70 43093.6 ) + ); + CutInGenSpeed 670.0; + Region2StartGenSpeed 871.0; + Region2EndGenSpeed 1161.963; + CutInGenTorque 0.0; + RatedGenTorque 43.09355E3; + KGen 2.55764E-2; +} + +BladePitchControllerParams +{ + RateLimitBladePitch 8.000; + PitchMin 0.000; + PitchMax 90.000; + PitchK 6.302336; + PitchControlKP 1.82620057; + PitchControlKI 0.78265750; + PitchControlKD 0.000; +} + +NacYawControllerParams +{ + RateLimitNacYaw 2.0; +} + + + + +Airfoils +( + "Cylinder1" + "Cylinder2" + "DU40_A17" + "DU35_A17" + "DU30_A17" + "DU25_A17" + "DU21_A17" + "NACA64_A17" +); + + +BladeData +( +// radius(m) c(m) twist(deg) thickness(% of c) userDef airfoil + (2.8667 3.542 13.308 1.0 0 0) + (5.6 3.854 13.308 1.0 0 0) + (8.3333 4.167 13.308 1.0 0 1) + (11.75 4.557 13.308 0.4 0 2) + (15.85 4.652 11.48 0.35 0 3) + (19.95 4.458 10.162 0.35 0 3) + (24.05 4.249 9.011 0.30 0 4) + (28.15 4.007 7.795 0.25 0 5) + (32.25 3.748 6.544 0.25 0 5) + (36.35 3.502 5.361 0.21 0 6) + (40.45 3.256 4.188 0.21 0 6) + (44.55 3.01 3.125 0.18 0 7) + (48.65 2.764 2.319 0.18 0 7) + (52.75 2.518 1.526 0.18 0 7) + (56.1667 2.313 0.863 0.18 0 7) + (58.9 2.086 0.37 0.18 0 7) + (61.6333 1.419 0.106 0.18 0 7) +); + + +TowerData +( +// height(m) c(m) twist(deg) thickness(% of c) userDef airfoil + (0.0 6.00 0.0 1.0 0 0) + (50.0 6.00 0.0 1.0 0 0) + (87.6 3.87 0.0 1.0 0 0) +); diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/turbulenceProperties b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/turbulenceProperties new file mode 100755 index 000000000..f8a545e0c --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/constant/turbulenceProperties @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// simulationType RASModel; + simulationType LESModel; +// simulationType laminar; + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/runscript.preprocess b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/runscript.preprocess new file mode 100755 index 000000000..4ca8ac963 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/runscript.preprocess @@ -0,0 +1,155 @@ +#!/bin/bash +#PBS -N ALMAdv_pisoFoam_preprocess +#PBS -l nodes=1:ppn=1 + + +# User Input. +OpenFOAMversion=2.4.x_SSC # OpenFOAM version +startTime=0 # Start time +updateBCType=0 # Boolean for whether or not the boundary condition types will be updated over + # what is in the initial conditions files. Leave it 0 for precursors. +inflowDir='west' # For inflow/outflow cases, specify the inflow direction. Choices are 'west', + # 'east', 'south', 'west', 'southWest', 'northWest', 'southEast', and + # 'northEast'. +refineMeshLocal=0 # Number of levels of local refinement (requires system/topoSetDict and + # system/refineHexMeshDict). +refineMeshGlobal=0 # Number of levels of global refinement. +parallel=0 # parallel untested! # Boolean for whether or not the preprocessing is run in parallel. +cores=1 # Enter the number of cores you will preprocess on. + + + + + + +# Define some functions for mesh refinement. +# Local refinement performed on one core. +refineMeshLocal() +{ + i=$1 + while [ $i -ge 1 ] + do + echo " -Performing level $i local refinement with topoSet/refineHexMesh" + echo " *selecting cells to refine..." + topoSet -dict system/topoSetDict.local.$i > log.topoSet.local.$i 2>&1 + + echo " *refining cells..." + refineHexMesh local -overwrite > log.refineHexMesh.local.$i 2>&1 + + let i=i-1 + done +} + +# Global refinement performed in parallel. +refineMeshGlobal() +{ + i=1 + while [ $i -le $1 ] + do + echo " -Performing level $i global refinement with refineMesh" + echo " *refining cells..." + mpirun -np $cores refineMesh -parallel -overwrite > log.refineMesh.global.$i 2>&1 + + let i=i+1 + done +} + + +# If running in parallel, cd to job launch directory +if [ $parallel -eq 1 ] + then + cd $PBS_O_WORKDIR +fi + + +# Source the bash profile and then call the appropriate OpenFOAM version function +# so that all the modules and environment variables get set. +echo "Sourcing the bash profile, loading modules, and setting the OpenFOAM environment variables..." +source $HOME/.bash_profile +OpenFOAM-$OpenFOAMversion + + +# Copy the controlDict.1 (assuming this is the one the actual solver will start +# out with) to controlDict. OpenFOAM reads "controlDict", not the numbered ones. +echo "Getting the control dictionary ready..." +cp system/controlDict.1 system/controlDict + + +# Copy the "clean" .original initial fields to a working copy. OpenFOAM does not +# read the ".original" initial fields--that's why they remain clean. +echo "Getting the initial condition directory ready..." +rm -rf $startTime +cp -rf $startTime.original $startTime + + +# Build the mesh. +echo "Using blockMesh to create the base mesh..." +cp constant/polyMesh/blockMeshDict ./ +rm -rf constant/polyMesh/* +mv ./blockMeshDict constant/polyMesh +blockMesh > log.blockMesh 2>&1 + + +# The initial fields come from the precursor which is periodic on all sides. The turbine +# case has inflow and outflow. Call the changeDictionary utility to make the south and +# north sides inflow and outflow. +if [ $updateBCType -eq 1 ] + then + echo "Using changeDictionary to update boundary conditions..." + changeDictionary -dict system/changeDictionaryDict.updateBCs.$inflowDir > log.changeDictionary.updateBCs.$inflowDir.1 2>&1 +fi + + +# Do serial local refinement +echo "Using refineHexMesh to perform " $refineMeshLocal " of local refinement..." +refineMeshLocal $refineMeshLocal + + +# If running in paralle from this point forward, then do the following: +if [ $cores -gt 1 ] + then + # Decompose the mesh and solution files (serial) + echo "Using decomposePar to decompose the problem for parallel processing..." + decomposePar -cellDist -force > log.decomposePar 2>&1 + + # Check the mesh + echo "Running checkMesh to report mesh diagnostics..." + mpirun -np $cores checkMesh -parallel > log.checkMesh.1 2>&1 + + # Perform global refinement to desired resolution. + echo "Using refineMesh to perform " $refineMeshGlobal " of global refinement..." + refineMeshGlobal $refineMeshGlobal + + # The mesh got globally refined, but the solution file did not, so + # the boundary fields may not have the correct number of entries. + # Use the changeDictionary utility to overwrite the spatially varying + # boundary data to a uniform single value. + if [ $updateBCType -eq 1 ] + then + echo "Using changeDictionary to ensure that the boundaries have the correct number of faces..." + mpirun -np $cores changeDictionary -dict system/changeDictionaryDict.updateBCs.$inflowDir -parallel > log.changeDictionary.updateBCs.$inflowDir.1 2>&1 + fi + + # Renumber the mesh for better matrix solver performance. + echo "Using renumberMesh to renumber the mesh for better matrix conditioning..." + mpirun -np $cores renumberMesh -parallel -overwrite > log.renumberMesh 2>&1 + + # Do one last check on the mesh. + echo "Running checkMesh to report mesh diagnostics..." + mpirun -np $cores checkMesh -parallel > log.checkMesh.3 2>&1 + + +# Otherwise, run in serial as follows: +else + # Renumber the mesh. + echo "Using renumberMesh to renumber the mesh for better matrix conditioning..." + renumberMesh -overwrite > log.renumberMesh 2>&1 + + # Decompose the mesh and solution files (serial) + echo "Using decomposePar to decompose the problem for parallel processing..." + decomposePar -cellDist -force > log.decomposePar 2>&1 + + # Check the mesh. + echo "Running checkMesh to report mesh diagnostics..." + checkMesh > log.checkMesh.1 2>&1 +fi diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/runscript.removeAll b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/runscript.removeAll new file mode 100755 index 000000000..463332f98 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/runscript.removeAll @@ -0,0 +1,21 @@ +#!/bin/bash + +# Remove initial conditions and temporary files +rm -rf 0 +rm -rf system/controlDict + +# Remove logs +rm -rf log.* +rm -rf runscript.solve.1.o* runscript.solve.1.e* + +# Remove processor files and folders +rm -rf processor* + +# Remove simulation output +rm -rf postProcessing +rm -rf turbineOutput + +# Remove polyMesh data +cp constant/polyMesh/blockMeshDict ./ +rm -rf constant/polyMesh/* +mv ./blockMeshDict constant/polyMesh \ No newline at end of file diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/runscript.solve.1 b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/runscript.solve.1 new file mode 100755 index 000000000..45fb775e5 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/runscript.solve.1 @@ -0,0 +1,41 @@ +#!/bin/bash +#PBS -l walltime=48:00:00 +#PBS -l nodes=1:ppn=8 +#PBS -N "ALMAdv.ssc.zeroMQ" + + + +cd $PBS_O_WORKDIR + + + + +# User Input. +OpenFOAMversion=2.4.x_SSC # OpenFOAM version +startTime=0 # Start time +cores=8 # Enter the number of cores you will preprocess on. +runNumber=1 # Enter the run number (useful for keeping track of restarts). +solver=pisoFoamTurbine.ALMAdvanced # Enter the name of the flow solver. + + + +echo "Starting OpenFOAM job at: " $(date) +echo "using " $cores " cores" + + +# Source the bash profile and then call the appropriate OpenFOAM version function +# so that all the modules and environment variables get set. +echo "Sourcing the bash profile, loading modules, and setting the OpenFOAM environment variables..." +source $HOME/.bash_profile +OpenFOAM-$OpenFOAMversion + + +# Get the control dictionary for this particular run. +cp system/controlDict.$runNumber system/controlDict + + +# Run the solver. +(mpirun -np $cores $solver -parallel > log.$runNumber.$solver 2>&1) & +(cd zeromqSSC; matlab -nodisplay -noFigureWindows -logfile 'zeromqSSC_MATLAB.log' -r exampleSSC) + +echo "Ending OpenFOAM job at: " $(date) \ No newline at end of file diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/setUp b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/setUp new file mode 100755 index 000000000..4ad533e07 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/setUp @@ -0,0 +1,93 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.4.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +// Domain size and number of cells. +xMin 0.0; // Minimum x-extent of domain (m). +yMin 0.0; // Minimum y-extent of domain (m). +zMin 0.0; // Minimum z-extent of domain (m). +xMax 3000.0; // Maximum x-extent of domain (m). +yMax 3000.0; // Maximum y-extent of domain (m). +zMax 1000.0; // Maximum z-extent of domain (m). +nx 100; // Number of cells in x-direction. +ny 100; // Number of cells in y-direction. +nz 33; // Number of cells in z-direction. + + + + +// Number of cores and domain decomposition information. +nCores 8; // Number of cores on which to run this case. +decompType simple; // Decomposition algorithm. "simple" and "scotch" are good choices. +decompOrder (4 2 1); // Order of the decomposition number of partitions in (x y z)-directions. + + + + +// Planar averaging and source term statistics options. +statisticsOn true; // Gather planar-averaged flow statistics. +statisticsFrequency 5; // Frequency in time steps of statistics gathering. + + + + +// Initial values for the variables. +// Note that U and T get overwritten if setFieldsABL is called. +U0Mag 8.00; // Initial condition for wind speed (m/s). +dir 270.0; // Initial condition for wind direction (deg). +windHeight 90.0; // Height at which to drive mean wind to U0Mag/dir (m). +p_rgh0 0.0; // Initial pressure (minus the hydrostatic variation and normalized by density) (m^2/s^2). +nuSgs0 0.0; // Initial SGS viscosity (m^2/s). +k0 0.1; // Initial SGS turbulent kinetic energy (m^2/s^2). +kappat0 0.0; // Initial SGS temperature diffusivity (m^2/s). +TGradUpper 0.003; // Potential temperature gradient above the strong inversion (K/m). +zInversion 750.0; // Height of the middle of the initial strong capping inversion (m). +inversionWidth 100.0; // Vertical width of the intial strong capping inversion (m). +TBottom 300.0; // Initial potential temperature at bottom of strong capping inversion (K). +TTop 305.0; // Initial potential temperature at top of strong capping inversion (K). + + + + +// General conditions and parameters. +Pr 0.7; // Molecular Prandtl number. +Prt 0.33333333; // Turbulent Prandtl number. +nu 1.0E-5; // Molecular viscosity (m^2/s). +TRef 300.0; // Reference potential temperature (K). +latitude 41.3; // Latitude on the Earth of the site (deg). +EarthPeriod 24.0; // Earth's rotation period (hr). + + + + +// SGS model inputs. +LESModel oneEqEddy; // SGS model selection. +ce 0.93; // SGS model constant. +ck 0.0673; // SGS model constant. + + + + +// Surface conditions. +qwall (0.0 0.0 0.0); // Temperature flux at wall (modify the z-value). A negative value is flux into domain (K-m/s). +Rwall (0.0 0.0 0.0 0.0 0.0 0.0); // Initial wall shear stress (m^2/s^2). +kappa 0.4; // von Karman constant. +z0 0.01; // Surface roughness (m). +betaM 16.0; // Monin-Obukhov wall shear stress model constant. +gammaM 5.0; // Monin-Obukhov wall shear stress model constant. +betaH 9.0; // Monin-Obukhov wall temperature flux model constant. +gammaH 7.8; // Monin-Obukhov wall temperature flux model constant. +alphaH 1.0; // Monin-Obukhov wall temperature flux model constant. +heatingRate 0.0; // Surface temperature change rate (when not directly setting temperature flux) (K/s). + + + + +#inputMode merge + +// ************************************************************************* // + diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs new file mode 100755 index 000000000..b4ab16ba4 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.cyclic b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.cyclic new file mode 100755 index 000000000..9d7df3a40 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.cyclic @@ -0,0 +1,238 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + U + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + k + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + kappat + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + nuSgs + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + } + } + p_rgh + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + west + { + type cyclic; + } + east + { + type cyclic; + } + south + { + type cyclic; + } + north + { + type cyclic; + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.east b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.east new file mode 100755 index 000000000..75ea86de5 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.east @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.north b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.north new file mode 100755 index 000000000..ab34b5c5a --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.north @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + south + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + south + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + south + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + north + { + type fixedFluxPressure; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.northeast b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.northeast new file mode 100755 index 000000000..9ef569c78 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.northeast @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + south + { + type zeroGradient; + value uniform 300; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + south + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + south + { + type zeroGradient; + value uniform 0.1; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + north + { + type fixedFluxPressure; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.northwest b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.northwest new file mode 100755 index 000000000..f62b02acb --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.northwest @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + south + { + type zeroGradient; + value uniform 300; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + east + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + south + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + north + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + south + { + type zeroGradient; + value uniform 0.1; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + east + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + north + { + type zeroGradient; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + north + { + type fixedFluxPressure; + value uniform 0.0; + } + south + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedFluxPressure; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.south b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.south new file mode 100755 index 000000000..b4ab16ba4 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.south @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.southeast b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.southeast new file mode 100755 index 000000000..88a7ebf76 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.southeast @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + west + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + west + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + east + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + west + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + east + { + type fixedFluxPressure; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.southwest b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.southwest new file mode 100755 index 000000000..6e9078e8e --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.southwest @@ -0,0 +1,290 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + north + { + type zeroGradient; + value uniform 300; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + east + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + north + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + south + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + north + { + type zeroGradient; + value uniform 0.1; + } + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + east + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + south + { + type zeroGradient; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + south + { + type fixedFluxPressure; + value uniform 0.0; + } + north + { + type zeroGradient; + value uniform 0.0; + } + west + { + type fixedFluxPressure; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + south + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + north + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.west b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.west new file mode 100755 index 000000000..7dec20912 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/changeDictionaryDict.updateBCs.west @@ -0,0 +1,200 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + + // Specify + // - all fvPatchFields with potential non-uniform values + // - all fvPatchFields originating from meshing + // - all fvPatchFields originating from mesh-redistribution + + + T + { + boundaryField + { + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 300; + } + east + { + type zeroGradient; + value uniform 300; + } + } + } + U + { + boundaryField + { + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset (0 0 0); + value uniform (0 0 0); + } + east + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + } + } + k + { + boundaryField + { + west + { + type timeVaryingMappedFixedValue; + setAverage 0; + peturb 1e-05; + offset 0; + value uniform 0.1; + } + east + { + type zeroGradient; + value uniform 0.1; + } + } + } + kappat + { + boundaryField + { + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + nuSgs + { + boundaryField + { + west + { + type zeroGradient; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + } + } + p_rgh + { + boundaryField + { + west + { + type fixedFluxPressure; + value uniform 0.0; + } + east + { + type zeroGradient; + value uniform 0.0; + } + lower + { + type fixedFluxPressure; + value uniform 0.0; + } + upper + { + type fixedFluxPressure; + value uniform 0.0; + } + } + } + qwall + { + boundaryField + { + west + { + type fixedValue; + value uniform (0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0); + } + lower + { + type fixedValue; + value uniform (0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0); + } + } + } + Rwall + { + boundaryField + { + west + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + east + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + lower + { + type SchumannGrotzbach; + kappa 0.4; + z0 uniform 0.01; + betaM 16.0; + gammaM 5.0; + averageType "local"; + value uniform (0 0 0 0 0 0); + } + upper + { + type fixedValue; + value uniform (0 0 0 0 0 0); + } + } + } +} +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/controlDict.1 b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/controlDict.1 new file mode 100755 index 000000000..92a8952aa --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/controlDict.1 @@ -0,0 +1,66 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + application ABLSolver; + + libs ("libuserfiniteVolume.so" "libuserincompressibleLESModels.so"); + + startFrom startTime; + + startTime 0.0; + + stopAt endTime; + + endTime 1000.0; + + deltaT 0.5; + + writeControl adjustableRunTime; + + writeInterval 99000.0; + + purgeWrite 0; + + writeFormat ascii; + + writePrecision 8; + + writeCompression compressed; + + timeFormat general; + + timePrecision 8; + + runTimeModifiable yes; + + adjustTimeStep no; + + maxCo 0.75; + + maxDeltaT 25.0; + + startTimeMean 1000.0; + + startTimeCorr 1000.0; + + functions + { + #include "sampling/sliceDataInstantaneous" + } + +// ************************************************************************* // + diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/decomposeParDict b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/decomposeParDict new file mode 100755 index 000000000..c7bea2ee8 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/decomposeParDict @@ -0,0 +1,76 @@ +/*-------------------------------*- C++ -*---------------------------------*\ +| ========= | +| \\ / OpenFOAM | +| \\ / | +| \\ / The Open Source CFD Toolbox | +| \\/ http://www.OpenFOAM.org | +\*-------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + location "system"; + object decomposeParDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +numberOfSubdomains $nCores; +method $decompType; +//preservePatches (north south east west); + +simpleCoeffs +{ + n $decompOrder; + delta 0.001; +} + +hierarchicalCoeffs +{ + n (1 1 3); + delta 0.001; + order xyz; +} + +metisCoeffs +{ + processorWeights + ( + ); +} + +scotchCoeffs +{ + //processorWeights + //( + // 1 + // 1 + // 1 + // 1 + //); + //writeGraph true; + //strategy "b"; +} + +manualCoeffs +{ + dataFile "decompositionData"; +} + + +//// Is the case distributed +distributed no; +//// Per slave (so nProcs-1 entries) the directory above the case. +//roots +//( +// "/tmp" +// "/tmp" +//); + + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/fvSchemes b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/fvSchemes new file mode 100755 index 000000000..ead2aeb21 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/fvSchemes @@ -0,0 +1,85 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default backward; +// default CrankNicolson 1.0; +} + +gradSchemes +{ + default Gauss linear; + grad(U) Gauss linear; +} + +divSchemes +{ + default Gauss linear; + //div(phi,U) Gauss linear; + //div(phi,T) Gauss linear; + div(phi,U) Gauss localBlended linear upwind; + div(phi,T) Gauss localBlended linear upwind; + div(R) Gauss linear; + div(U) Gauss linear; + div((nuEff*dev(grad(U).T()))) Gauss linear; + div(B) Gauss linear; + div(phi,B) Gauss linear; + div(phi,k) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; + laplacian(rUA,p) Gauss linear uncorrected; + laplacian((1|A(U)),p) Gauss linear uncorrected; + laplacian(interpolate((1|A(U))),p) Gauss linear uncorrected; + laplacian(interpolate((1|A(U))),pd) Gauss linear uncorrected; + laplacian(nu,U) Gauss linear uncorrected; + laplacian(nuEff,U) Gauss linear uncorrected; + laplacian(kappaEff,T) Gauss linear uncorrected; + laplacian(DBEff,B) Gauss linear uncorrected; + laplacian(nuSgs,U) Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +fluxRequired +{ + default no; + p ; +} + +schemeBlending +{ + xBlending1 -10.0; + xBlending2 0.0; + xBlending3 60.0; + xBlending4 70.0; + blendingFactor1 0.85; + blendingFactor2 1.00; +} + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/fvSolution b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/fvSolution new file mode 100755 index 000000000..b3f1a7e4a --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/fvSolution @@ -0,0 +1,102 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "(p_rgh|p)" + { + solver PCG; + preconditioner + { + preconditioner GAMG; + tolerance 1e-05; + relTol 0.01; + smoother DICGaussSeidel; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 100; + agglomerator faceAreaPair; + mergeLevels 2; + } + tolerance 1e-06; + relTol 0.01; + maxIter 1000; + } + + "(p_rghFinal|pFinal)" + { + $p; + relTol 0.0; + } + + "(U|T|k|epsilon|R)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + maxIter 1000; + } + + "(U|T|k|epsilon|R)Final" + { + $U; + relTol 0.0; + } + + "(flm|fmm)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + } + + "(flm|fmm)Final" + { + $flm; + relTol 0.0; + } + + +} + +PISO +{ + momentumPredictor yes; + nOuterCorrectors 1; + nCorrectors 3; + nNonOrthogonalCorrectors 0; + pRefPoint (-39.0 0 11.5); + pRefValue 0; +} + +relaxationFactors +{ + fields + { + } + equations + { + "(U|T|k|epsilon|R)" 1.0; + "(U|T|k|epsilon|R)Final" 1.0; + } +} + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/sampling/sliceDataInstantaneous b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/sampling/sliceDataInstantaneous new file mode 100755 index 000000000..d80b1da9d --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/sampling/sliceDataInstantaneous @@ -0,0 +1,59 @@ + sliceDataInstantaneous + { + type surfaces; + functionObjectLibs ("libsampling.so"); + enabled true; + interpolationScheme cell; + outputControl adjustableTime; + writeInterval 5; + surfaceFormat vtk; + fields + ( + U + ); + surfaces + ( + slice_horizontal + { + type plane; + basePoint (1500.01 1500.01 90.01); + normalVector (0 0 1); + triangulate false; + } + slice_vertical_x500 + { + type plane; + basePoint (500.01 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x3D + { + type plane; + basePoint (1379.2 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x5D + { + type plane; + basePoint (1632.0 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x7D + { + type plane; + basePoint (1884.8 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + slice_vertical_x10D + { + type plane; + basePoint (2264.0 1500.01 90.01); + normalVector (1 0 0); + triangulate false; + } + ); + } diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/setFieldsABLDict b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/setFieldsABLDict new file mode 100755 index 000000000..11b48e0bc --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/system/setFieldsABLDict @@ -0,0 +1,504 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.0.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object setFieldsABLDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../setUp" + + +// Extents of the domain. +xMin $xMin; +yMin $yMin; +zMin $zMin; + +xMax $xMax; +yMax $yMax; +zMax $zMax; + +zRef $zMax; + +// Specify if distance from wall should be used as z. +useWallDistZ false; +scaleVelocityWithHeight false; + + +// Specify how to initialze the base velocity and temperature profile. +velocityInitType "table"; +//velocityInitType "log"; +//velocityInitType "geostrophic"; +temperatureInitType "table"; +//temperatureInitType "simple"; + +// Maximum perturbation of streamwise/spanwise flow near surface. +deltaU 0.25; +deltaV 0.25; + +// Total periods of perturbations in streamwise/spanwise in the domain. +Uperiods 12.0; +Vperiods 12.0; + +// Percentage of domain height (zMax) where peak in perturbation +// magnitude occurs. +zPeak 0.015; + +// Initial height of the center of the capping inversion. +zInversion $zInversion; + +// Width of the capping inversion. +widthInversion $inversionWidth; + +// Potential temperature at the bottom and top of the capping inversion. +Tbottom $TBottom; +Ttop $TTop; + +// Maximum temperature fluctuation size below capping inversion. +TPrimeScale 0.0; + +// Height rate of change of potential temperature above the inversion. +dTdz $TGradUpper; + +// Geostrophic wind speed magnitude. +Ug $U0Mag; + +// Geostrophic wind speed direction. +UgDir $dir; + +// Aerodynamic roughness height of surface. +z0 $z0; + +// von Karman constant. +kappa $kappa; + +// Vertical profile table. +profileTable +( +// z U V T + (0.0 0.0 0.0 273.121917725) + (5.0 1.82671529027 1.98969371553 282.524156211) + (10.0 2.52983624172 2.77228242751 283.156504284) + (15.0 3.01282071998 3.35521702288 283.64108812) + (20.0 3.35996148006 3.78823607698 284.090761147) + (25.0 3.8038057643 4.37960852586 284.554077196) + (30.0 4.03596125279 4.70538923119 284.966777157) + (35.0 4.38133296535 5.23253766126 285.360167677) + (40.0 4.56992779673 5.53523659867 285.747101612) + (45.0 4.80994398595 5.96180841679 286.095879197) + (50.0 5.00816921409 6.32774876853 286.444585293) + (55.0 5.14154903327 6.60160807137 286.787914506) + (60.0 5.36818530188 7.08896005703 287.063199891) + (65.0 5.44703987742 7.27484159809 287.379906732) + (70.0 5.57604433164 7.60608624795 287.638417176) + (75.0 5.72370142776 7.99632935101 287.863981004) + (80.0 5.77619905069 8.15139018101 288.127106742) + (85.0 5.87149793296 8.46369430537 288.331005696) + (90.0 5.98111916718 8.83268873958 288.509035882) + (95.0 6.01697152506 8.97407895539 288.724664101) + (100.0 6.06967854005 9.19927028309 288.909565287) + (105.0 6.1450628792 9.53721293929 289.053124377) + (110.0 6.19167607924 9.76288104253 289.198531813) + (115.0 6.22489630605 9.93628531022 289.344799656) + (120.0 6.27421288656 10.216282683 289.462005) + (125.0 6.32645248876 10.5156368594 289.57393273) + (130.0 6.34668810144 10.6457361726 289.712125634) + (135.0 6.36434613795 10.762203832 289.852433913) + (140.0 6.39842793739 11.0196195883 289.95191863) + (145.0 6.4342454375 11.2919310606 290.047089019) + (150.0 6.45180421766 11.4367005351 290.150649381) + (155.0 6.46406875681 11.544488333 290.256642472) + (160.0 6.48170756073 11.7056278368 290.348224267) + (165.0 6.50382814701 11.9112591447 290.427787992) + (170.0 6.52550956366 12.1127414485 290.506470121) + (175.0 6.54550549533 12.298300329 290.581768788) + (180.0 6.56550142701 12.4838592096 290.657067454) + (185.0 6.58511534034 12.6567515091 290.735008491) + (190.0 6.6045979288 12.8252894701 290.813857884) + (195.0 6.62432001649 12.9896812983 290.892328604) + (200.0 6.64532587961 13.1318488244 290.968769537) + (205.0 6.66633174272 13.2740163505 291.045210471) + (210.0 6.69104111181 13.4098514016 291.117435921) + (215.0 6.72036475996 13.5377966838 291.184409209) + (220.0 6.74968840812 13.6657419659 291.251382497) + (225.0 6.77805691412 13.7640369251 291.318657013) + (230.0 6.80578882059 13.8425700289 291.386132296) + (235.0 6.83352072706 13.9211031327 291.453607578) + (240.0 6.86307156947 13.9862481909 291.518273832) + (245.0 6.89380511232 14.0426881336 291.581113612) + (250.0 6.92453865516 14.0991280764 291.643953391) + (255.0 6.95361693104 14.1462680315 291.704700258) + (260.0 6.98077095142 14.1825967081 291.763014104) + (265.0 7.0079249718 14.2189253847 291.82132795) + (270.0 7.03507703408 14.2541299666 291.879606535) + (275.0 7.0622194383 14.283790106 291.937711201) + (280.0 7.08936184253 14.3134502454 291.995815867) + (285.0 7.11650424675 14.3431103848 292.053920533) + (290.0 7.1430391081 14.369131837 292.11328027) + (295.0 7.16932392788 14.3936557439 292.173156546) + (300.0 7.19560874767 14.4181796507 292.233032822) + (305.0 7.22180906756 14.4424461024 292.292838021) + (310.0 7.24680913749 14.4630556198 292.351633627) + (315.0 7.27180920741 14.4836651372 292.410429232) + (320.0 7.29680927734 14.5042746546 292.469224837) + (325.0 7.32153609499 14.5243042572 292.528664796) + (330.0 7.34543057757 14.5425674214 292.590067475) + (335.0 7.36932506015 14.5608305855 292.651470155) + (340.0 7.39321954273 14.5790937496 292.712872834) + (345.0 7.41696733387 14.597025575 292.773542958) + (350.0 7.44026003553 14.6139294685 292.831940429) + (355.0 7.46355273718 14.6308333621 292.890337899) + (360.0 7.48684543884 14.6477372556 292.94873537) + (365.0 7.51013186129 14.6646271523 293.007149353) + (370.0 7.53322339247 14.68108262 293.066075821) + (375.0 7.55631492366 14.6975380877 293.12500229) + (380.0 7.57940645484 14.7139935554 293.183928758) + (385.0 7.60249798603 14.7304490231 293.242855226) + (390.0 7.6257582057 14.7463924565 293.301506178) + (395.0 7.64912373233 14.7620162427 293.359985132) + (400.0 7.67248925896 14.7776400289 293.418464087) + (405.0 7.69585478559 14.7932638151 293.476943042) + (410.0 7.71922031222 14.8088876013 293.535421996) + (415.0 7.74300228036 14.8230663689 293.592791002) + (420.0 7.7667927399 14.8372156721 293.650137374) + (425.0 7.79058319945 14.8513649753 293.707483747) + (430.0 7.81437365899 14.8655142784 293.76483012) + (435.0 7.83815083397 14.8793492717 293.821767406) + (440.0 7.86181714661 14.8905612872 293.875290779) + (445.0 7.88548345926 14.9017733027 293.928814153) + (450.0 7.9091497719 14.9129853182 293.982337526) + (455.0 7.93281608455 14.9241973336 294.035860899) + (460.0 7.95648239719 14.9354093491 294.089384273) + (465.0 7.97905964048 14.9423301431 294.14128451) + (470.0 8.0016312311 14.9492286641 294.193176323) + (475.0 8.02420282171 14.956127185 294.245068135) + (480.0 8.04677441233 14.9630257059 294.296959948) + (485.0 8.06934600294 14.9699242269 294.34885176) + (490.0 8.0912068028 14.9742300558 294.40025773) + (495.0 8.11235909886 14.9759515346 294.45117942) + (500.0 8.13351139492 14.9776730134 294.502101111) + (505.0 8.15466369098 14.9793944922 294.553022801) + (510.0 8.17581598704 14.981115971 294.603944491) + (515.0 8.19696828309 14.9828374498 294.654866181) + (520.0 8.21724149816 14.9808198644 294.704354156) + (525.0 8.2364694612 14.9743564264 294.752137402) + (530.0 8.25569742424 14.9678929884 294.799920649) + (535.0 8.27492538727 14.9614295505 294.847703896) + (540.0 8.29415335031 14.9549661125 294.895487143) + (545.0 8.31338131334 14.9485026745 294.943270389) + (550.0 8.33260927638 14.9420392365 294.991053636) + (555.0 8.35050488468 14.9266129312 295.036341098) + (560.0 8.36808840645 14.9090871924 295.081043956) + (565.0 8.38567192822 14.8915614535 295.125746813) + (570.0 8.40325544999 14.8740357147 295.170449671) + (575.0 8.42083897176 14.8565099758 295.215152528) + (580.0 8.43842249352 14.838984237 295.259855386) + (585.0 8.45600601529 14.8214584982 295.304558243) + (590.0 8.47264685758 14.7968218302 295.348171206) + (595.0 8.48834031368 14.765038729 295.390688832) + (600.0 8.50403376979 14.7332556278 295.433206459) + (605.0 8.51972722589 14.7014725265 295.475724085) + (610.0 8.53542068199 14.6696894253 295.518241712) + (615.0 8.55111413809 14.6379063241 295.560759338) + (620.0 8.56680759419 14.6061232229 295.603276965) + (625.0 8.5825010503 14.5743401216 295.645794591) + (630.0 8.59715715424 14.5346556613 295.689519112) + (635.0 8.61058749747 14.4856347615 295.734669729) + (640.0 8.62401784069 14.4366138617 295.779820347) + (645.0 8.63744818391 14.3875929619 295.824970964) + (650.0 8.65087852713 14.338572062 295.870121581) + (655.0 8.66430887036 14.2895511622 295.915272198) + (660.0 8.67773921358 14.2405302624 295.960422815) + (665.0 8.6911695568 14.1915093626 296.005573433) + (670.0 8.70459990003 14.1424884628 296.05072405) + (675.0 8.71498597608 14.0837507537 296.096336227) + (680.0 8.72352399234 14.0191143362 296.142228601) + (685.0 8.7320620086 13.9544779188 296.188120975) + (690.0 8.74060002486 13.8898415013 296.234013348) + (695.0 8.74913804112 13.8252050838 296.279905722) + (700.0 8.75767605739 13.7605686663 296.325798096) + (705.0 8.76621407365 13.6959322489 296.371690469) + (710.0 8.77475208991 13.6312958314 296.417582843) + (715.0 8.78329010617 13.5666594139 296.463475217) + (720.0 8.79182812243 13.5020229965 296.50936759) + (725.0 8.79189547444 13.4277463368 296.562527014) + (730.0 8.79098910472 13.3523615098 296.616521801) + (735.0 8.79008273499 13.2769766828 296.670516587) + (740.0 8.78917636527 13.2015918559 296.724511374) + (745.0 8.78826999555 13.1262070289 296.778506161) + (750.0 8.78736362582 13.0508222019 296.832500948) + (755.0 8.7864572561 12.9754373749 296.886495735) + (760.0 8.78555088638 12.9000525479 296.940490522) + (765.0 8.78464451665 12.824667721 296.994485308) + (770.0 8.78373814693 12.749282894 297.048480095) + (775.0 8.78092431283 12.6731698157 297.101321687) + (780.0 8.77050848097 12.594154369 297.149567342) + (785.0 8.76009264911 12.5151389222 297.197812997) + (790.0 8.74967681725 12.4361234755 297.246058652) + (795.0 8.73926098539 12.3571080288 297.294304307) + (800.0 8.72884515353 12.278092582 297.342549962) + (805.0 8.71842932167 12.1990771353 297.390795617) + (810.0 8.70801348981 12.1200616885 297.439041272) + (815.0 8.69759765795 12.0410462418 297.487286927) + (820.0 8.68718182609 11.9620307951 297.535532582) + (825.0 8.67676599423 11.8830153483 297.583778237) + (830.0 8.66635016237 11.8039999016 297.632023892) + (835.0 8.65380285705 11.7267327361 297.688031136) + (840.0 8.63847548104 11.6517458454 297.754161782) + (845.0 8.62314810503 11.5767589547 297.820292429) + (850.0 8.60782072902 11.5017720641 297.886423076) + (855.0 8.59249335301 11.4267851734 297.952553722) + (860.0 8.57716597701 11.3517982828 298.018684369) + (865.0 8.561838601 11.2768113921 298.084815016) + (870.0 8.54651122499 11.2018245015 298.150945663) + (875.0 8.53118384898 11.1268376108 298.217076309) + (880.0 8.51585647297 11.0518507201 298.283206956) + (885.0 8.50052909696 10.9768638295 298.349337603) + (890.0 8.48520172096 10.9018769388 298.41546825) + (895.0 8.46987434495 10.8268900482 298.481598896) + (900.0 8.45883220551 10.7541011047 298.547345535) + (905.0 8.45238242046 10.6836676328 298.612680644) + (910.0 8.44593263542 10.6132341608 298.678015753) + (915.0 8.43948285037 10.5428006888 298.743350863) + (920.0 8.43303306533 10.4723672168 298.808685972) + (925.0 8.42658328028 10.4019337449 298.874021081) + (930.0 8.42013349524 10.3315002729 298.93935619) + (935.0 8.41368371019 10.2610668009 299.004691299) + (940.0 8.40723392515 10.190633329 299.070026409) + (945.0 8.4007841401 10.120199857 299.135361518) + (950.0 8.39433435506 10.049766385 299.200696627) + (955.0 8.38788457001 9.97933291304 299.266031736) + (960.0 8.38143478497 9.90889944107 299.331366845) + (965.0 8.37498499992 9.8384659691 299.396701955) + (970.0 8.37175628862 9.76984547069 299.458148741) + (975.0 8.3787220489 9.70696290595 299.507289259) + (980.0 8.38568780918 9.64408034121 299.556429777) + (985.0 8.39265356946 9.58119777647 299.605570296) + (990.0 8.39961932974 9.51831521173 299.654710814) + (995.0 8.40658509002 9.45543264699 299.703851332) + (1000.0 8.4135508503 9.39255008225 299.752991851) + (1005.0 8.42051661058 9.32966751751 299.802132369) + (1010.0 8.42748237086 9.26678495277 299.851272887) + (1015.0 8.43444813113 9.20390238803 299.900413405) + (1020.0 8.44141389141 9.14101982329 299.949553924) + (1025.0 8.44837965169 9.07813725854 299.998694442) + (1030.0 8.45534541197 9.0152546938 300.04783496) + (1035.0 8.46231117225 8.95237212906 300.096975478) + (1040.0 8.46927693253 8.88948956432 300.146115997) + (1045.0 8.47624269281 8.82660699958 300.195256515) + (1050.0 8.48495783258 8.77319458603 300.238852282) + (1055.0 8.49495774699 8.72673721576 300.278375887) + (1060.0 8.5049576614 8.6802798455 300.317899492) + (1065.0 8.51495757581 8.63382247523 300.357423097) + (1070.0 8.52495749023 8.58736510496 300.396946702) + (1075.0 8.53495740464 8.5409077347 300.436470307) + (1080.0 8.54495731905 8.49445036443 300.475993912) + (1085.0 8.55495723346 8.44799299416 300.515517517) + (1090.0 8.56495714787 8.4015356239 300.555041122) + (1095.0 8.57495706228 8.35507825363 300.594564727) + (1100.0 8.58495697669 8.30862088336 300.634088332) + (1105.0 8.5949568911 8.2621635131 300.673611937) + (1110.0 8.60495680552 8.21570614283 300.713135542) + (1115.0 8.61495671993 8.16924877256 300.752659147) + (1120.0 8.62495663434 8.1227914023 300.792182752) + (1125.0 8.63495654875 8.07633403203 300.831706357) + (1130.0 8.64495646316 8.02987666176 300.871229962) + (1135.0 8.65360052964 7.98996489564 300.907704255) + (1140.0 8.65972902324 7.96219751809 300.938521005) + (1145.0 8.66585751685 7.93443014055 300.969337756) + (1150.0 8.67198601045 7.906662763 301.000154506) + (1155.0 8.67811450406 7.87889538546 301.030971256) + (1160.0 8.68424299766 7.85112800791 301.061788006) + (1165.0 8.69037149126 7.82336063037 301.092604757) + (1170.0 8.69649998487 7.79559325282 301.123421507) + (1175.0 8.70262847847 7.76782587527 301.154238257) + (1180.0 8.70875697208 7.74005849773 301.185055007) + (1185.0 8.71488546568 7.71229112018 301.215871758) + (1190.0 8.72101395929 7.68452374264 301.246688508) + (1195.0 8.72714245289 7.65675636509 301.277505258) + (1200.0 8.7332709465 7.62898898755 301.308322009) + (1205.0 8.7393994401 7.60122161 301.339138759) + (1210.0 8.74552793371 7.57345423246 301.369955509) + (1215.0 8.75165642731 7.54568685491 301.400772259) + (1220.0 8.75778492092 7.51791947737 301.43158901) + (1225.0 8.76391341452 7.49015209982 301.46240576) + (1230.0 8.76818252215 7.46990516883 301.489568668) + (1235.0 8.76988179508 7.46005215541 301.511681645) + (1240.0 8.771581068 7.45019914198 301.533794623) + (1245.0 8.77328034093 7.44034612856 301.5559076) + (1250.0 8.77497961385 7.43049311513 301.578020578) + (1255.0 8.77667888677 7.42064010171 301.600133555) + (1260.0 8.7783781597 7.41078708828 301.622246532) + (1265.0 8.78007743262 7.40093407485 301.64435951) + (1270.0 8.78177670555 7.39108106143 301.666472487) + (1275.0 8.78347597847 7.381228048 301.688585464) + (1280.0 8.7851752514 7.37137503458 301.710698442) + (1285.0 8.78687452432 7.36152202115 301.732811419) + (1290.0 8.78857379725 7.35166900773 301.754924397) + (1295.0 8.79027307017 7.3418159943 301.777037374) + (1300.0 8.7919723431 7.33196298088 301.799150351) + (1305.0 8.79367161602 7.32210996745 301.821263329) + (1310.0 8.79537088895 7.31225695402 301.843376306) + (1315.0 8.79707016187 7.3024039406 301.865489283) + (1320.0 8.79876943479 7.29255092717 301.887602261) + (1325.0 8.80046870772 7.28269791375 301.909715238) + (1330.0 8.80216798064 7.27284490032 301.931828216) + (1335.0 8.80345002487 7.27037429336 301.950702634) + (1340.0 8.80449597234 7.27208116099 301.967744453) + (1345.0 8.8055419198 7.27378802862 301.984786271) + (1350.0 8.80658786727 7.27549489624 302.00182809) + (1355.0 8.80763381473 7.27720176387 302.018869908) + (1360.0 8.8086797622 7.2789086315 302.035911727) + (1365.0 8.80972570966 7.28061549913 302.052953545) + (1370.0 8.81077165713 7.28232236676 302.069995364) + (1375.0 8.81181760459 7.28402923439 302.087037182) + (1380.0 8.81286355206 7.28573610202 302.104079001) + (1385.0 8.81390949952 7.28744296965 302.121120819) + (1390.0 8.81495544699 7.28914983727 302.138162638) + (1395.0 8.81600139445 7.2908567049 302.155204456) + (1400.0 8.81704734192 7.29256357253 302.172246275) + (1405.0 8.81809328938 7.29427044016 302.189288094) + (1410.0 8.81913923685 7.29597730779 302.206329912) + (1415.0 8.82018518431 7.29768417542 302.223371731) + (1420.0 8.82123113178 7.29939104305 302.240413549) + (1425.0 8.82227707924 7.30109791068 302.257455368) + (1430.0 8.82332302671 7.30280477831 302.274497186) + (1435.0 8.82436897417 7.30451164593 302.291539005) + (1440.0 8.82541492164 7.30621851356 302.308580823) + (1445.0 8.8264608691 7.30792538119 302.325622642) + (1450.0 8.82980499965 7.31411337437 302.342200633) + (1455.0 8.83363827328 7.32125512601 302.358679903) + (1460.0 8.83747154691 7.32839687764 302.375159173) + (1465.0 8.84130482054 7.33553862927 302.391638443) + (1470.0 8.84513809417 7.34268038091 302.408117713) + (1475.0 8.8489713678 7.34982213254 302.424596984) + (1480.0 8.85280464143 7.35696388418 302.441076254) + (1485.0 8.85663791506 7.36410563581 302.457555524) + (1490.0 8.86047118869 7.37124738745 302.474034794) + (1495.0 8.86430446231 7.37838913908 302.490514064) + (1500.0 8.86813773594 7.38553089071 302.506993334) + (1505.0 8.87197100957 7.39267264235 302.523472605) + (1510.0 8.8758042832 7.39981439398 302.539951875) + (1515.0 8.87963755683 7.40695614562 302.556431145) + (1520.0 8.88347083046 7.41409789725 302.572910415) + (1525.0 8.88730410409 7.42123964888 302.589389685) + (1530.0 8.89113737772 7.42838140052 302.605868955) + (1535.0 8.89497065135 7.43552315215 302.622348226) + (1540.0 8.89880392498 7.44266490379 302.638827496) + (1545.0 8.90263719861 7.44980665542 302.655306766) + (1550.0 8.90647047224 7.45694840705 302.671786036) + (1555.0 8.91030374586 7.46409015869 302.688265306) + (1560.0 8.91413701949 7.47123191032 302.704744577) + (1565.0 8.91797029312 7.47837366196 302.721223847) + (1570.0 8.92180356675 7.48551541359 302.737703117) + (1575.0 8.92995697971 7.48958529161 302.756743245) + (1580.0 8.93926578965 7.49283361431 302.77646826) + (1585.0 8.94857459959 7.496081937 302.796193275) + (1590.0 8.95788340953 7.49933025969 302.81591829) + (1595.0 8.96719221947 7.50257858238 302.835643305) + (1600.0 8.97650102941 7.50582690508 302.85536832) + (1605.0 8.98580983935 7.50907522777 302.875093335) + (1610.0 8.9951186493 7.51232355046 302.89481835) + (1615.0 9.00442745924 7.51557187315 302.914543365) + (1620.0 9.01373626918 7.51882019585 302.93426838) + (1625.0 9.02304507912 7.52206851854 302.953993395) + (1630.0 9.03235388906 7.52531684123 302.973718411) + (1635.0 9.041662699 7.52856516392 302.993443426) + (1640.0 9.05097150894 7.53181348662 303.013168441) + (1645.0 9.06028031888 7.53506180931 303.032893456) + (1650.0 9.06958912882 7.538310132 303.052618471) + (1655.0 9.07889793876 7.5415584547 303.072343486) + (1660.0 9.0882067487 7.54480677739 303.092068501) + (1665.0 9.09751555864 7.54805510008 303.111793516) + (1670.0 9.10682436858 7.55130342277 303.131518531) + (1675.0 9.11613317852 7.55455174547 303.151243546) + (1680.0 9.12544198846 7.55780006816 303.170968561) + (1685.0 9.1347507984 7.56104839085 303.190693576) + (1690.0 9.14405960834 7.56429671354 303.210418591) + (1695.0 9.15336841829 7.56754503624 303.230143606) + (1700.0 9.16267722823 7.57079335893 303.249868621) + (1705.0 9.17198603817 7.57404168162 303.269593636) + (1710.0 9.18349377603 7.57239347669 303.290540127) + (1715.0 9.19922226437 7.56134659115 303.31383119) + (1720.0 9.2149507527 7.55029970561 303.337122252) + (1725.0 9.23067924103 7.53925282007 303.360413315) + (1730.0 9.24640772936 7.52820593453 303.383704377) + (1735.0 9.2621362177 7.51715904899 303.40699544) + (1740.0 9.27786470603 7.50611216345 303.430286502) + (1745.0 9.29359319436 7.49506527791 303.453577565) + (1750.0 9.3093216827 7.48401839237 303.476868627) + (1755.0 9.32505017103 7.47297150683 303.50015969) + (1760.0 9.34077865936 7.46192462129 303.523450752) + (1765.0 9.35650714769 7.45087773575 303.546741815) + (1770.0 9.37223563603 7.43983085021 303.570032877) + (1775.0 9.38796412436 7.42878396467 303.59332394) + (1780.0 9.40369261269 7.41773707912 303.616615003) + (1785.0 9.41942110102 7.40669019358 303.639906065) + (1790.0 9.43514958936 7.39564330804 303.663197128) + (1795.0 9.45087807769 7.3845964225 303.68648819) + (1800.0 9.46660656602 7.37354953696 303.709779253) + (1805.0 9.48233505436 7.36250265142 303.733070315) + (1810.0 9.49806354269 7.35145576588 303.756361378) + (1815.0 9.51379203102 7.34040888034 303.77965244) + (1820.0 9.52952051935 7.3293619948 303.802943503) + (1825.0 9.54524900769 7.31831510926 303.826234565) + (1830.0 9.56097749602 7.30726822372 303.849525628) + (1835.0 9.57670598435 7.29622133818 303.87281669) + (1840.0 9.59243447268 7.28517445264 303.896107753) + (1845.0 9.60816296102 7.2741275671 303.919398815) + (1850.0 9.62389144935 7.26308068156 303.942689878) + (1855.0 9.63961993768 7.25203379602 303.96598094) + (1860.0 9.65432709188 7.2376578099 303.988680381) + (1865.0 9.66596304977 7.21327107309 304.009600791) + (1870.0 9.67759900765 7.18888433629 304.0305212) + (1875.0 9.68923496554 7.16449759948 304.051441609) + (1880.0 9.70087092342 7.14011086267 304.072362018) + (1885.0 9.71250688131 7.11572412587 304.093282427) + (1890.0 9.72414283919 7.09133738906 304.114202836) + (1895.0 9.73577879708 7.06695065226 304.135123245) + (1900.0 9.74741475497 7.04256391545 304.156043654) + (1905.0 9.75905071285 7.01817717864 304.176964064) + (1910.0 9.77068667074 6.99379044184 304.197884473) + (1915.0 9.78232262862 6.96940370503 304.218804882) + (1920.0 9.79395858651 6.94501696822 304.239725291) + (1925.0 9.8055945444 6.92063023142 304.2606457) + (1930.0 9.81723050228 6.89624349461 304.281566109) + (1935.0 9.82886646017 6.8718567578 304.302486518) + (1940.0 9.84050241805 6.847470021 304.323406928) + (1945.0 9.85213837594 6.82308328419 304.344327337) + (1950.0 9.86377433382 6.79869654738 304.365247746) + (1955.0 9.87541029171 6.77430981058 304.386168155) + (1960.0 9.8870462496 6.74992307377 304.407088564) + (1965.0 9.89868220748 6.72553633696 304.428008973) + (1970.0 9.91031816537 6.70114960016 304.448929382) + (1975.0 9.92195412325 6.67676286335 304.469849792) + (1980.0 9.93359008114 6.65237612654 304.490770201) + (1985.0 9.94522603903 6.62798938974 304.51169061) + (1990.0 9.95686199691 6.60360265293 304.532611019) + (1995.0 9.9684979548 6.57921591612 304.553531428) + (2000.0 9.98013391268 6.55482917932 304.574451837) +); + +// Update internal field. +updateInternalFields true; + +// Update boundary field. +updateBoundaryFields false; + +// ************************************************************************* // diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/zeromqSSC/exampleSSC.m b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/zeromqSSC/exampleSSC.m new file mode 100644 index 000000000..b956b8f09 --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/zeromqSSC/exampleSSC.m @@ -0,0 +1,63 @@ +% clear all; close all; clc; +% +% MATLAB can use zeroMQ, but it is not necessarily so straight-forward. The easiest solution found was +% using "jeroMQ", which can be downloaded from https://github.com/zeromq/jeromq. After installation, +% Update the path below and you should be all set. +% +% For more information, check out: +% https://mathworks.com/matlabcentral/answers/269061-how-do-i-integrate-zeromq-library-with-matlab-i-want-my-matlab-program-to-be-a-subscriber-of-zeromq +% +% Note: to install jeroMQ, you need to have 'maven' installed. When using Maven to install jeroMQ, +% you may run into an error about the unit testing. If so, disable them and run again using +% 'mvn install -DskipTests' +% +% Recommended Java JDK version: 1.8.0_171 (tested by excluding unit tests) +% +% + +% Setup zeroMQ server +zmqJar = '/home/bmdoekemeijer/OpenFOAM/zeroMQ/jeromq-0.4.4-SNAPSHOT.jar'; +zmqPort = 5553; % Port to connect to (must match turbineArrayProperies) +zmqTimeout = 3600; % [s] +zmqVerbose = true; % Output text +zmqServer = zeromqObj(zmqJar,zmqPort,zmqTimeout,zmqVerbose); + +disp(['Entering wind farm controller loop...']); +measurementVector = []; +while 1 + % Receive information from SOWFA + dataReceived = zmqServer.receive(); + currentTime = dataReceived(1,1); + measurementVector = [measurementVector;dataReceived(1,2:end)]; + + if currentTime < 10 + yawAngleArrayOut = [270.0 270.0]; + pitchAngleArrayOut = [ 0.0 0.0]; + elseif currentTime < 20 + yawAngleArrayOut = [260.0 270.0]; + pitchAngleArrayOut = [ 0.0 0.0]; + elseif currentTime < 30 + yawAngleArrayOut = [260.0 280.0]; + pitchAngleArrayOut = [ 0.0 0.0]; + elseif currentTime < 50 + yawAngleArrayOut = [263.0 285.0]; + pitchAngleArrayOut = [ 0.0 0.0]; + else + yawAngleArrayOut = [240.0 270.0]; + pitchAngleArrayOut = [ 0.0 0.0]; + end + disp([datestr(rem(now,1)) '__ Synthesizing message string.']); + dataSend = setupZmqSignal(yawAngleArrayOut,pitchAngleArrayOut); + + % Send a message (control action) back to SOWFA + zmqServer.send(dataSend); +end +% Close connection +zmqServer.disconnect() + +function [dataOut] = setupZmqSignal(yawAngles,pitchAngles) +dataOut = []; +for i = 1:length(yawAngles) + dataOut = [dataOut yawAngles(i) pitchAngles(i)]; +end +end \ No newline at end of file diff --git a/exampleCases/example.ALMAdvanced.ssc.zeroMQ/zeromqSSC/zeromqObj.m b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/zeromqSSC/zeromqObj.m new file mode 100644 index 000000000..47a5a505f --- /dev/null +++ b/exampleCases/example.ALMAdvanced.ssc.zeroMQ/zeromqSSC/zeromqObj.m @@ -0,0 +1,121 @@ +classdef zeromqObj < handle + + properties (Access = public) + port + status + timeoutBuffer + verbose + lastMessageSent_string + lastMessageSent_data + lastMessageRecvd_string + lastMessageRecvd_data + end + + properties (Access = private) + context + socket + end + methods + function obj = zeromqObj(jeromqPath,port,timeoutBuffer,verbose) + % Import path and set-up zeroMQ commands + javaaddpath(jeromqPath,'-dpath'); + + % Setup connection details + obj.port = port; + obj.timeoutBuffer = timeoutBuffer; + obj.verbose = verbose; + + % Initialize empty strings and vectors + obj.lastMessageSent_string = ''; + obj.lastMessageSent_data = []; + obj.lastMessageRecvd_string = ''; + obj.lastMessageRecvd_data = []; + obj.status = 'initialized'; + + % Setup connection + obj.connect(); + end + + function [] = connect(obj) + import org.zeromq.* + + % Setup connection + if obj.verbose + disp([datestr(rem(now,1)) '__ Connecting to tcp://*:' num2str(obj.port) '.']); + end + + obj.context = zmq.Ctx(); + obj.socket = obj.context.createSocket(ZMQ.REP); + obj.socket.bind(['tcp://*:' num2str(obj.port)]); + obj.status = 'connected'; + end + + function [] = disconnect(obj) + if obj.verbose + disp([datestr(rem(now,1)) '__ Disconnecting from tcp://*:' num2str(obj.port) '.']); + end + obj.socket.close(); + obj.status = 'disconnected'; + end + + + function [dataReceived] = receive(obj) + message = ''; + timeoutTimer = tic; + while length(message) <= 0 + message = obj.socket.recv(1); % Receive information + if toc(timeoutTimer) > obj.timeoutBuffer % Time-out + obj.socket.close() + error([datestr(rem(now,1)) '__No message received within timeoutBuffer: ' ... + num2str(obj.timeoutBuffer) ' s. Exiting...']); + end + pause(0.010); % wait 10 ms + end + + % Once message received: convert to floats + json_data = native2unicode(message.data)'; % Received message + + % cut down json_data to remove all non-used bytes + sortedFloats = textscan( json_data, '%f', 'Delimiter',' ' ); + dataReceived = sortedFloats{1}'; % row vector with data + + obj.lastMessageRecvd_string = json_data; + obj.lastMessageRecvd_data = dataReceived; + + if obj.verbose + tmp_recvData_string = strjoin(arrayfun(@(x) num2str(x),dataReceived,'UniformOutput',false),' '); + disp([datestr(rem(now,1)) '__ Received data: [' num2str(tmp_recvData_string) ']']); + end + end + + function [] = send(obj,data) + if (size(data,1)>1 && size(data,2)>1) + error('Currently, we only support sending data in vector format.'); + end + + % Create string from data vector + str_send = num2str(data(1)); + for i = 2:length(data) + str_send = [str_send ' ' num2str(data(i))]; + end + + % Send a message + message = zmq.Msg(length(str_send)); + message.put(unicode2native(str_send)); + obj.socket.send(message, 0); + + obj.lastMessageSent_string = str_send; + obj.lastMessageSent_data = data; + + if obj.verbose + disp([datestr(rem(now,1)) '__ Sent message: [' str_send ']']); + end + end + + end + + methods (Hidden) + % + end +end + diff --git a/src/turbineModels/turbineModelsStandard/Make/options b/src/turbineModels/turbineModelsStandard/Make/options index 0f2f6d19d..99d10aee6 100755 --- a/src/turbineModels/turbineModelsStandard/Make/options +++ b/src/turbineModels/turbineModelsStandard/Make/options @@ -1,11 +1,13 @@ EXE_INC = \ + -D COMPILEZEROMQ=$(COMPILEZEROMQ) \ -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/turbulenceModels \ -I$(LIB_SRC)/turbulenceModels/LES/LESdeltas/lnInclude \ -I$(LIB_SRC)/turbulenceModels/LES/LESfilters/lnInclude \ - -I$(LIB_SRC)/transportModels + -I$(LIB_SRC)/transportModels \ + -I$(ZEROMQ_INCLUDE) LIB_LIBS = \ -ltriSurface \ @@ -13,5 +15,6 @@ LIB_LIBS = \ -lmeshTools \ -lincompressibleTurbulenceModel \ -lLESdeltas \ - -lLESfilters - + -lLESfilters \ + -L $(ZEROMQ_LIB) \ + -lzmq diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/bladePitchControllers/PIDSC.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/bladePitchControllers/PIDSC.H new file mode 100644 index 000000000..7dbdbb349 --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/bladePitchControllers/PIDSC.H @@ -0,0 +1,48 @@ + //_SSC_ version of PID where min pitch is set by super controller + + // If past first call to controller, apply control. + if (pastFirstTimeStep) + { + // Set the gain scheduling variable. + GK = 1.0 / (1.0 + (pitch[i]*degRad)/PitchK[j]); + + // Store the old value of speed error. + scalar speedErrorLast = speedError[i]; + + // Compute the low speed shaft speed error. + speedError[i] = rotSpeedF[i] - RatedRotSpeed[j]; + + // Numerically integrate the speed error over time. + intSpeedError[i] += speedError[i] * dt; + + // Numerically take the deriviative of speed error w.r.t time. + scalar derivSpeedError = (speedError[i] - speedErrorLast) / dt; + + // SSC: Convert superInfoFromSSC blade pitch angles from degrees to radians + float lbPitch = superInfoFromSSC[i*nOutputsFromSSC+1]; // Lower bound on the pitch angle + lbPitch = lbPitch * degRad; // Degrees to radians + + // Saturate the integrated speed error based on pitch saturation. + intSpeedError[i] = min(max(intSpeedError[i], lbPitch/(GK*PitchControlKI[j])), PitchMax[j]/(GK*PitchControlKI[j])); + + // Compute the pitch components from the proportional, integral, + // and derivative parts and sum them. + scalar pitchP = GK * PitchControlKP[j] * speedError[i]; + scalar pitchI = GK * PitchControlKI[j] * intSpeedError[i]; + scalar pitchD = GK * PitchControlKD[j] * derivSpeedError; + pitchCommanded = pitchP + pitchI + pitchD; + + // Saturate the pitch based on the pitch limits of the pitch + // actuator. + pitchCommanded = min(max(pitchCommanded, superInfoFromSSC[i*nOutputsFromSSC+1]), PitchMax[j]); + } + // If first call to controller, initialize some values. + else + { + // set integrated speed error such that if there is no speed error + // on the first real control step (see the else section below), there + // will not be a change in pitch. + GK = 1.0 / (1.0 + (pitch[i]*degRad)/PitchK[j]); + intSpeedError[i] = (pitch[i]*degRad) / (GK * PitchControlKI[j]); + } + diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/genTorqueControllers/torqueSC.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/genTorqueControllers/torqueSC.H new file mode 100644 index 000000000..c50cf85d3 --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/genTorqueControllers/torqueSC.H @@ -0,0 +1 @@ +torqueGenCommanded = superInfoFromSSC[i * nOutputsFromSSC+2]; \ No newline at end of file diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/measurementFunctions/default.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/measurementFunctions/default.H new file mode 100644 index 000000000..7a4f45b7c --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/measurementFunctions/default.H @@ -0,0 +1,9 @@ +// Write measurements for the superController. In our example case, we have nInputsToSSC = 3 + +// Proceed turbine by turbine. + forAll(deltaNacYaw, i) + { + superInfoToSSC[i*nInputsToSSC+0] = powerGenerator[i]; // Generator power + superInfoToSSC[i*nInputsToSSC+1] = torqueRotor[i]; // Turbine rotor torque + superInfoToSSC[i*nInputsToSSC+2] = thrust[i]; // Turbine thrust force + } \ No newline at end of file diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/superControllers/timeTableSSC_ADM.C b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/superControllers/timeTableSSC_ADM.C new file mode 100644 index 000000000..4b6b39320 --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/superControllers/timeTableSSC_ADM.C @@ -0,0 +1,179 @@ +// _SSC_ +// file: timeTableSSC.C +// by Paul Fleming & Bart Doekemeijer +// Date: 05/03/2018 +// +// Info: A superController code that loads a table and applies the control settings +// at the relevant timesteps. +// +// this function will read an ascii text file defined by "char *inputFile", +// and apply the specified control settings at the specified time steps. This +// controller code is compatible with the "yawSC.H" and "PIDSC.H" turbine +// controller files, but can easily be extended or modified to one's needs. +// + +#include +#include +#include +#include + +// Read text file and format appropriately +void readInputSSC_ADM(char *inputFile, int nTurbs, int nControlVars, + std::vector &nTurbInputs, std::vector< std::vector >&timeArray, + std::vector< std::vector > > &controlArray) +{ + float controlTime; // Time at which the control action is applied + FILE *fp; // Input file handle + char buffer[500]; // Define variables for handling SC_Struct + int turbID; // Temporary turbine number + float temp; // Temporary variable for scanning over floats in the input file + + // Define temporary (multi-dimensional) vectors + std::vector tmpFloatVector; // Temporary float vector + std::vector< std::vector > tmpFloatMatrix; // Temporary float matrix + std::vector tmpControlVector(nControlVars, 0); // Temporary float vector + + //Open file for reading + if((fp=fopen(inputFile, "r")) == NULL) { + fprintf(stderr,"%s: line %d: Cannot find SSC Input File with path '%s'.\n",__FILE__,__LINE__,inputFile); + exit(1); + } + else { + fprintf(stderr,"Successfully opened SSC Input File '%s'.\n",inputFile); + } + + // Populate timeArray and controlArray for each turbine + for (int i = 0; i < nTurbs; i++){ + timeArray.push_back(tmpFloatVector); // Populate with nTurbs vectors + controlArray.push_back(tmpFloatMatrix); // Populate with nTurbs matrices + } + + //Read the tables until the file end is found + printf("SSC: Reading the input file line by line...\n"); + fgets(buffer,500,fp); //Advance past the first comment line + for (int i = 0; 1 > 0; i++) + { + if(fscanf (fp, "%f", &temp) < 1) + break; + controlTime = temp; // First entry should be the simulation time (s) + + fscanf (fp, "%f", &temp); + turbID = temp; // Second entry should be the turbine number + + // Check if turbID exceeds number of turbines defined + if (turbID > nTurbs-1) { + printf("SSC: ERROR. You have defined control inputs for undefined turbines (turbine[%d]). Ignoring this row of inputs.\n",turbID); + for (int cVar = 0; cVar < nControlVars; cVar++) { + fscanf (fp, "%f", &temp); + } + } + else { + // Process control settings for this row of text + timeArray[turbID].push_back(controlTime); // Append with controlTime + printf(" Turbine[%d], time: %f \n", turbID,timeArray[turbID][nTurbInputs[turbID]]); + for (int cVar = 0; cVar < nControlVars; cVar++) { + fscanf (fp, "%f", &temp); + tmpControlVector[cVar] = temp; + printf(" Control setting [%d]: %f \n", cVar,tmpControlVector[cVar]); + } + controlArray[turbID].push_back(tmpControlVector); // Append control vector to controlArray + nTurbInputs[turbID] = nTurbInputs[turbID]+1; // Add one to the nTurbInputs + } + + } + printf("Closing file...\n\n"); + fclose(fp); //Close the file +} + +// Function to determine next control setting +void lookupControlAction_ADM(float simTime, int nTurbs, int nControlVars, std::vector< std::vector >&timeArray, + std::vector< std::vector > > &controlArray, std::vector &nTurbInputs, + std::vector< std::vector >&nextControlAction) +{ + int controlIndex=0; + int controlSettingAvailable=0; + + // Determine next control setting for each turbine + for (int i = 0; i < nTurbs; i++){ + controlSettingAvailable=0; + + // Find most recent timestamp of control settings for turbine i + for (int j = 0; j < nTurbInputs[i]; j++){ + if(simTime >= timeArray[i][j]){ + controlIndex = j; + controlSettingAvailable=1; + } + } + + // Write control settings of most recent time instant to outputs for turbine i + if (controlSettingAvailable == 1){ + for (int cVar = 0; cVar < nControlVars; cVar++){ + nextControlAction[i][cVar] = controlArray[i][controlIndex][cVar]; + } + } else { + printf("SSC: WARNING: NO INITIAL CONDITIONS DEFINED FOR TURBINE %d. ASSUMING ZEROS.\n", i); + for (int cVar = 0; cVar < nControlVars; cVar++){ + nextControlAction[i][cVar] = 0.0; + } + } + } +} + +void SC_timeTable_ADM(int nTurbs,int nControlVars, std::vector< std::vector >&nextControlAction, float simTime) +{ + char *inputFile = "SC_INPUT.txt"; // Filename of input file/path address relative to main case folder + + static int isFirstCall = 1; + static std::vector nTurbInputs(nTurbs, 0); // Vector with number of input timestaps for each turbine + static std::vector< std::vector > timeArray; // Matrix with timestamps for each turbine + static std::vector< std::vector< std::vector > > controlArray; // Tensor (3D matrix) with control settings for each turbine at each timestamp + + // Read input SSC file if first time this function is called + if(isFirstCall == 1){ + readInputSSC_ADM(inputFile, nTurbs, nControlVars, nTurbInputs, timeArray, controlArray); + isFirstCall = 0; // disable for future calls + } + + // Retrieve control settings for time instant 'simTime' + lookupControlAction_ADM(simTime, nTurbs, nControlVars, timeArray,controlArray, nTurbInputs,nextControlAction); + + /* + // Print calculated control settings + for(int i=0; i < nTurbs; i++){ + for(int j=0; j tmpFloatVector(nControlVars, 0); // Vector with number of input timestaps for each turbine + std::vector< std::vector > nextControlAction(nTurbs,std::vector(nOutputsFromSSC)); // Matrix with current control actions for each turbine + + printf("TIME = 5.0 SECONDS.\n"); + simTime = 5.0; + SC_timeTable_ADM(nTurbs,nOutputsFromSSC,nextControlAction,simTime); + + printf("TIME = 11 SECONDS.\n"); + simTime = 11.0; + SC_timeTable_ADM(nTurbs,nOutputsFromSSC,nextControlAction,simTime); + + printf("TIME = 15 SECONDS.\n"); + simTime = 15.0; + SC_timeTable_ADM(nTurbs,nOutputsFromSSC,nextControlAction,simTime); + + printf("TIME = 21 SECONDS.\n"); + simTime = 21.0; + SC_timeTable_ADM(nTurbs,nOutputsFromSSC,nextControlAction,simTime); + + return 0; +}*/ \ No newline at end of file diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/superControllers/timeTableSSC_ADM.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/superControllers/timeTableSSC_ADM.H new file mode 100644 index 000000000..ab5b83e1a --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/superControllers/timeTableSSC_ADM.H @@ -0,0 +1,15 @@ +//_SSC_ + +// Define variables: Matrix with current control actions for each turbine +std::vector< std::vector > nextControlAction(numTurbines,std::vector(nOutputsFromSSC)); + +// Call the SC from external library +SC_timeTable_ADM(numTurbines,nOutputsFromSSC,nextControlAction,runTime_.value()); + +// Copy entries to global variable and print the to-be-applied control settings +for(int i=0; i < numTurbines; i++){ + for(int j=0; j // zeroMQ interface +#include +#include +#include +#include +#include +#include + +void SC_zeromq_ADM(std::string zmqAddress, float timeStep, std::vector infoToSC, std::vector &infoFromSC, int sizeInfoFromSSC ) +{ + static int isFirstCall = 1; + static void *context = zmq_ctx_new (); + static void *requester = zmq_socket (context, ZMQ_REQ); + std::string strToSSC; // String that gets sent to SSC + char charFromSSC [9900]; + + // Establish connection of this is the first call to the SC + if (isFirstCall){ + std::cout << "0mq client: Connecting to 0mq server on address: " << zmqAddress << " ... \n"; + zmq_connect (requester, zmqAddress.c_str()); + isFirstCall = 0; // disable for future calls + } + + // Format the to be transmitted data from std::vector to char + std::stringstream ssToSC; // stringStream used to construct strToSSC + ssToSC << timeStep; // First entry is always timestep + for(size_t i = 0; i < infoToSC.size(); ++i) { + ssToSC << " " << infoToSC[i]; + } + strToSSC = ssToSC.str(); + std::cout << "infoToSC: [" << strToSSC << "] \n"; + + // Send and receive from SSC through zeroMQ + zmq_send (requester, strToSSC.c_str(), 9900, 0); + zmq_recv (requester, charFromSSC, 9900, 0); + + // Format received char/string to std::vector + std::cout << "infoFromSC: [" << charFromSSC << "] \n"; + std::stringstream ss(charFromSSC); + for(int i=0;i> infoFromSC[i]; + //printf("infoFromSC[%d] = %f \n",i,infoFromSC[i]); + } +} + +/* +int main() +{ + float timeStep = 10.0; + static std::vector infoToSC; + static std::vector infoFromSC; + + const int numTurbines = 2; + const int nInputsToSSC = 2; + const int nOutputsFromSSC = 2; + + for(int i = 0; i < 3; i++){ + printf("Call %d.\n",i); + #include "zeromqSSC.H" + } + + return 0; +} +*/ \ No newline at end of file diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/superControllers/zeromqSSC_ADM.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/superControllers/zeromqSSC_ADM.H new file mode 100644 index 000000000..77b0c5361 --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/controllers/superControllers/zeromqSSC_ADM.H @@ -0,0 +1,41 @@ +// _SSC_ zeromqSSC.C +// +// This superController code serves as a zeroMQ client, which will communicate +// with a zeroMQ server. The zeroMQ server will be the remote controller, such as +// a MATLAB script, a Python script, or any other piece of software using the +// zeroMQ functionality. +// +// Authors: Bart Doekemeijer & Paul Fleming +// +static std::vector zeromqInfoToSC; +static std::vector zeromqInfoFromSC; +static int isFirstCall = 1; +int sizeInfoFromSSC = nOutputsFromSSC*numTurbines; + +if (isFirstCall == 1){ + // Initialize std::vectors with appropriate dimensions + for (int i=0; i < numTurbines*nInputsToSSC; i++){ + zeromqInfoToSC.push_back(0.0); // Initialize with zero values + // + } + for (int i=0; i < sizeInfoFromSSC; i++){ + zeromqInfoFromSC.push_back(0.0); // Initialize with zero values + } + isFirstCall = -1; // disable for future calls +} + +// Pass the SSC inputs to the local std::vector format +for(int i = 0; i < nInputsToSSC*numTurbines; i++){ + zeromqInfoToSC[i] = superInfoToSSC[i]; +} + +// Call the SC from external library +SC_zeromq_ADM(zmqAddress, runTime_.value(), zeromqInfoToSC, zeromqInfoFromSC, sizeInfoFromSSC ); + +// Copy entries to global variable and print the to-be-applied control settings +for(int i=0; i < numTurbines; i++){ + for(int j=0; j 1.0 * Foam::constant::mathematical::pi ) + yawError = yawError - 2.0 * Foam::constant::mathematical::pi; + +// Grab the absolute value +// Note, not using abs, because it rounds to int +if (yawError >= 0.0) + yawErrorAbs = yawError; +else + yawErrorAbs = -1 * yawError; + +// Decide if yawing, and set yaw delta at delta angle giving 1 Deg/s +if ( yawErrorAbs < Foam::constant::mathematical::pi / 180.0 * runTime_.deltaT().value() -.001) // small error + deltaNacYaw[i] = 0.0; // Do nothing +else if (yawError < 0) + deltaNacYaw[i] = -1 * Foam::constant::mathematical::pi / 180.0 * runTime_.deltaT().value(); // Yaw negative +else + deltaNacYaw[i] = Foam::constant::mathematical::pi / 180.0 * runTime_.deltaT().value(); // Yaw positive + +/* +// Write measurements for the superController. In our example case, we have nInputsToSSC = 3 +if (Pstream::master()) { + // Only write for 1 core to avoid the output being InfoToSSC*nCores + superInfoToSSC[i*nInputsToSSC+0] = powerGenerator[i]; // Generator power + superInfoToSSC[i*nInputsToSSC+1] = torqueRotor[i]; // Turbine rotor torque + superInfoToSSC[i*nInputsToSSC+2] = thrust[i]; // Turbine thrust force + } else { + // Important to set values to zero for other processors (!) + superInfoToSSC[i*nInputsToSSC+0] = 0.0; + superInfoToSSC[i*nInputsToSSC+1] = 0.0; + superInfoToSSC[i*nInputsToSSC+2] = 0.0; + } +//} +*/ \ No newline at end of file diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/horizontalAxisWindTurbinesADM.C b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/horizontalAxisWindTurbinesADM.C index 156e11899..ef2acb7b0 100755 --- a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/horizontalAxisWindTurbinesADM.C +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/horizontalAxisWindTurbinesADM.C @@ -33,9 +33,25 @@ License \*---------------------------------------------------------------------------*/ +// General inclusions #include "horizontalAxisWindTurbinesADM.H" #include "interpolateXY.H" +// SSC inclusions without dependencies +#include "controllers/superControllers/timeTableSSC_ADM.C" //_SSC_ inclusion + +// SSC inclusions with dependencies +#define DO_EXPAND(VAL) VAL ## 1 +#define EXPAND(VAL) DO_EXPAND(VAL) +#if !defined(COMPILEZEROMQ) || (EXPAND(COMPILEZEROMQ) == 1) // (Re)define if COMPILEZEROMQ undefined or empty string + #undef COMPILEZEROMQ + #define COMPILEZEROMQ 0 // Set default option to 0, meaning 'do not compile ZeroMQ interface' +#endif + +#if COMPILEZEROMQ == 1 // External definition for gcc compiler: '-D COMPILEZEROMQ=1' + #include "controllers/superControllers/zeromqSSC_ADM.C" //_SSC_ inclusion +#endif + namespace Foam { namespace turbineModels @@ -46,7 +62,7 @@ namespace turbineModels horizontalAxisWindTurbinesADM::horizontalAxisWindTurbinesADM ( const volVectorField& U -) +) : // Set the pointer to runTime runTime_(U.time()), @@ -124,22 +140,70 @@ horizontalAxisWindTurbinesADM::horizontalAxisWindTurbinesADM ) ); + // _SSC_ Import SSC setting from the turbineArrayProperties dictionary file // Read in the turbine array properties dictionary. This is the uppermost level dictionary // that describes where the turbines are, what kind they are, their initial state, and // information about how the actuator line method is applied to each turbine. { + sscEnabled = false; // _SSC_ Set default option to 'false' List listTemp = turbineArrayProperties.toc(); for (int i = 0; i < listTemp.size(); i++) { - if (listTemp[i] != "globalProperties") + if (listTemp[i] != "globalProperties" && listTemp[i] != "sscProperties") // _SSC_ Edit to ignore 'sscProperties' as a turbine { turbineName.append(listTemp[i]); } + + // _SSC_ Check for sscProperties subDict. If exists, import the 'sscEnabled' setting (backwards compatibility) + if (listTemp[i] == "sscProperties") + { + sscEnabled = turbineArrayProperties.subDict("sscProperties").lookupOrDefault("sscEnabled",false); + } + // } } numTurbines = turbineName.size(); + //_SSC_ If SSC enabled, read the number of inputs and outputs, and + // set up the dynamic arrays which will pass the memory between super controller and turbine controllers + if (sscEnabled) { + nInputsToSSC = int(readScalar(turbineArrayProperties.subDict("sscProperties").lookup("nInputsToSSC"))); + nOutputsFromSSC = int(readScalar(turbineArrayProperties.subDict("sscProperties").lookup("nOutputsFromSSC"))); + sscControllerType = word(turbineArrayProperties.subDict("sscProperties").lookup("sscControllerType")); + sscMeasurementsFunction = word(turbineArrayProperties.subDict("sscProperties").lookup("sscMeasurementsFunction")); + + if (sscControllerType == "zeromqSSC") { + zmqAddress = string(turbineArrayProperties.subDict("sscProperties").lookup("zmqAddress")); + } + + //Set up dynamic arrays + for (int si = 0; si < numTurbines * nInputsToSSC; si++) + { + superInfoToSSC.append(0.0); + } + for (int si = 0; si < numTurbines * nOutputsFromSSC; si++) + { + superInfoFromSSC.append(0.0); + } + + } + + // _SSC_ Report whether ssc has been enabled or disabled + if(Pstream::myProcNo() == 0) // Only print to log file for processor0, to avoid $nCores messages + { + if(sscEnabled) { + printf("The SSC is enabled.\n"); + printf(" The SSC is expecting %d inputs per turbine.\n",nInputsToSSC ); + printf(" The SSC is expecting %d outputs per turbine.\n",nOutputsFromSSC ); + } else { + printf("The SSC is disabled.\n"); + } + } + // + + + outputControl = turbineArrayProperties.subDict("globalProperties").lookupOrDefault("outputControl","timeStep"); outputInterval = turbineArrayProperties.subDict("globalProperties").lookupOrDefault("outputInterval",1); perturb = turbineArrayProperties.subDict("globalProperties").lookupOrDefault("perturb",1E-5); @@ -297,7 +361,7 @@ horizontalAxisWindTurbinesADM::horizontalAxisWindTurbinesADM { // Read nothing. } - else if (BladePitchControllerType[i] == "PID") + else if (BladePitchControllerType[i] == "PID" || BladePitchControllerType[i] == "PIDSC" ) //_SSC_ include PIDSC in init routine { PitchK.append(readScalar(turbineProperties.subDict("BladePitchControllerParams").lookup("PitchK"))); PitchMin.append(readScalar(turbineProperties.subDict("BladePitchControllerParams").lookup("PitchMin"))); @@ -560,8 +624,8 @@ horizontalAxisWindTurbinesADM::horizontalAxisWindTurbinesADM // Define the vector aligned with the tower pointing from // the ground to the nacelle. - uvTower.append(towerShaftIntersect[i] - baseLocation[i]); - uvTower[i] = uvTower[i]/mag(uvTower[i]); + uvTower.append(towerShaftIntersect[i] - baseLocation[i]); + uvTower[i] = uvTower[i]/mag(uvTower[i]); // Calculate the width of each actuator section. dr.append(DynamicList(0)); @@ -776,9 +840,9 @@ void horizontalAxisWindTurbinesADM::rotateBlades() { // Perform rotation turbine by turbine. forAll(uvShaft, i) - { + { // Check the rotation direction first and set the local delta azimuth - // variable accordingly. + // variable accordingly. //scalar deltaAzimuthI = 0.0; //if (rotationDir[i] == "cw") //{ @@ -789,7 +853,7 @@ void horizontalAxisWindTurbinesADM::rotateBlades() // deltaAzimuthI = -deltaAzimuth[i]; //} - // Rotate turbine blades, blade by blade, point by point. + // Rotate turbine blades, blade by blade, point by point. //forAll(bladePoints[i], j) //{ // forAll(bladePoints[i][j], k) @@ -798,11 +862,11 @@ void horizontalAxisWindTurbinesADM::rotateBlades() // } //} - // Calculate the new azimuth angle and make sure it isn't + // Calculate the new azimuth angle and make sure it isn't // bigger than 2*pi. if (pastFirstTimeStep) { - azimuth[i] = azimuth[i] + deltaAzimuth[i]; + azimuth[i] = azimuth[i] + deltaAzimuth[i]; if (azimuth[i] >= 2.0 * Foam::constant::mathematical::pi) { azimuth[i] -= 2.0 * Foam::constant::mathematical::pi; @@ -817,15 +881,15 @@ void horizontalAxisWindTurbinesADM::yawNacelle() // Perform rotation turbine by turbine. forAll(uvTower, i) { - // Rotate the rotor apex first. + // Rotate the rotor apex first. rotorApex[i] = rotatePoint(rotorApex[i], towerShaftIntersect[i], uvTower[i], deltaNacYaw[i]); - // Recompute the shaft unit vector since the shaft has rotated. - uvShaft[i] = rotorApex[i] - towerShaftIntersect[i]; - uvShaft[i] = (uvShaft[i]/mag(uvShaft[i])) * uvShaftDir[i]; - - // Rotate turbine blades, blade by blade, point by point. - forAll(bladePoints[i], j) + // Recompute the shaft unit vector since the shaft has rotated. + uvShaft[i] = rotorApex[i] - towerShaftIntersect[i]; + uvShaft[i] = (uvShaft[i]/mag(uvShaft[i])) * uvShaftDir[i]; + + // Rotate turbine blades, blade by blade, point by point. + forAll(bladePoints[i], j) { forAll(bladePoints[i][j], k) { @@ -833,11 +897,11 @@ void horizontalAxisWindTurbinesADM::yawNacelle() } } - // Compute the new yaw angle and make sure it isn't + // Compute the new yaw angle and make sure it isn't // bigger than 2*pi. if (pastFirstTimeStep) { - nacYaw[i] = nacYaw[i] + deltaNacYaw[i]; + nacYaw[i] = nacYaw[i] + deltaNacYaw[i]; if (nacYaw[i] >= 2.0 * Foam::constant::mathematical::pi) { nacYaw[i] -= 2.0 * Foam::constant::mathematical::pi; @@ -919,20 +983,25 @@ void horizontalAxisWindTurbinesADM::controlGenTorque() // Apply a controller to update the rotor speed. - if (GenTorqueControllerType[j] == "none") + if (GenTorqueControllerType[j] == "none") { #include "controllers/genTorqueControllers/none.H" } - - else if (GenTorqueControllerType[j] == "fiveRegion") + + else if (GenTorqueControllerType[j] == "fiveRegion") { #include "controllers/genTorqueControllers/fiveRegion.H" - } + } else if (GenTorqueControllerType[j] == "speedTorqueTable") { #include "controllers/genTorqueControllers/speedTorqueTable.H" } + else if (GenTorqueControllerType[j] == "torqueSC") + { + #include "controllers/genTorqueControllers/torqueSC.H" + } + // Limit the change in generator torque. if (GenTorqueRateLimiter[j]) @@ -954,13 +1023,11 @@ void horizontalAxisWindTurbinesADM::controlNacYaw() // Get the turbine type index. int j = turbineTypeID[i]; - - // Apply a controller to update the nacelle yaw position. if (NacYawControllerType[j] == "none") { // Do nothing. - deltaNacYaw[i] = 0.0; + deltaNacYaw[i] = 0.0; } else if (NacYawControllerType[j] == "simple") @@ -972,6 +1039,14 @@ void horizontalAxisWindTurbinesADM::controlNacYaw() { } + // _SSC_, set a case for yawSC + // simple function assumes the first entry per turbine in + // superInfoFromSSC is a yaw reference to seek + else if (NacYawControllerType[j] == "yawSC") + { + #include "controllers/yawControllers/yawSC.H" + } + // Limit the change in nacelle yaw angle. @@ -982,6 +1057,96 @@ void horizontalAxisWindTurbinesADM::controlNacYaw() } } +//_SSC_: define the super controller function +// The super controller code facilitates the exchangess +void horizontalAxisWindTurbinesADM::superController() +{ + Info << "Entering SuperController" << endl; + + //As a first step spool up the "To" data from each of the turbines + List superInfoLocalIn(nInputsToSSC*numTurbines,0.0); + List superInfoLocalOut(nOutputsFromSSC*numTurbines,0.0); + + for(int si = 0; si < nInputsToSSC * numTurbines; si++) + { + superInfoLocalIn[si] = superInfoToSSC[si]; + } + + //Gather and scatter across procs + Pstream::gather(superInfoLocalIn,sumOp >()); + Pstream::scatter(superInfoLocalIn); + + // Send back out + for(int si = 0; si < nInputsToSSC *numTurbines; si++) + { + superInfoToSSC[si] = superInfoLocalIn[si]; + } + + // if this is the master, call + if (Pstream::master()) + { + sscMeasurements(); // Gather measurements + callSuperController(); // Call the superController function + + // Send result local + for(int si = 0; si < nOutputsFromSSC *numTurbines; si++) + { + superInfoLocalOut[si] = superInfoFromSSC[si]; + } + + } else { + // If not master, set measurements to zero + for(int si = 0; si < nInputsToSSC *numTurbines; si++) + { + superInfoToSSC[si] = 0.0; + } + } + + //Gather and scatter across procs + Pstream::gather(superInfoLocalOut,sumOp >()); + Pstream::scatter(superInfoLocalOut); + + // Now reassign out/send back out + for(int si = 0; si < nOutputsFromSSC *numTurbines; si++) + { + superInfoFromSSC[si] = superInfoLocalOut[si]; + } + +} + +//_SSC_: define the call to the SSC measurement function +void horizontalAxisWindTurbinesADM::sscMeasurements() +{ + // _SSC_, specific measurement definition + if (sscMeasurementsFunction == "default") + { + #include "controllers/measurementFunctions/default.H" + } +} + +//_SSC_: define the call to the simple controller +// The super controller code facilitates the exchangess +void horizontalAxisWindTurbinesADM::callSuperController() +{ + // _SSC_, specific controller + if (sscControllerType == "timeTableSSC") + { + #include "controllers/superControllers/timeTableSSC_ADM.H" + } + + #if COMPILEZEROMQ == 1 + if (sscControllerType == "zeromqSSC") + { + #include "controllers/superControllers/zeromqSSC_ADM.H" + } + #else + if (sscControllerType == "zeromqSSC") + { + printf("\n \n ERROR: Please recompile SOWFA with the correct zeroMQ libraries to use the zeromqSSC controller functionality. \n\n"); + } + #endif +} + void horizontalAxisWindTurbinesADM::controlBladePitch() { @@ -1009,6 +1174,12 @@ void horizontalAxisWindTurbinesADM::controlBladePitch() { #include "controllers/bladePitchControllers/PID.H" } + + //_SSC_: allow a pidSC controller where the minimum pitch is chosen by super controller + else if (BladePitchControllerType[j] == "PIDSC") + { + #include "controllers/bladePitchControllers/PIDSC.H" + } // Apply pitch rate limiter. if (BladePitchRateLimiter[j]) @@ -1098,7 +1269,7 @@ void horizontalAxisWindTurbinesADM::findControlProcNo() } } } -} +} void horizontalAxisWindTurbinesADM::computeWindVectors() @@ -1631,6 +1802,10 @@ void horizontalAxisWindTurbinesADM::update() computeRotSpeed(); rotateBlades(); yawNacelle(); + //_SSC_ + if (sscEnabled){ + superController(); + } } else if(bladeUpdateType[0] == "newPosition") { @@ -1642,6 +1817,10 @@ void horizontalAxisWindTurbinesADM::update() computeRotSpeed(); rotateBlades(); yawNacelle(); + //_SSC_ + if (sscEnabled){ + superController(); + } // Find out which processor controls which actuator point, // and with that information sample the wind at the actuator @@ -1662,19 +1841,19 @@ void horizontalAxisWindTurbinesADM::update() if (outputControl == "timeStep") { if (outputIndex >= outputInterval) - { - outputIndex = 0; + { + outputIndex = 0; computeSectorAverage(); - printOutputFiles(); - } + printOutputFiles(); + } } else if (outputControl == "runTime") { if ((runTime_.value() - lastOutputTime) >= outputInterval) { - lastOutputTime += outputInterval; + lastOutputTime += outputInterval; computeSectorAverage(); - printOutputFiles(); + printOutputFiles(); } } else @@ -1760,6 +1939,10 @@ void horizontalAxisWindTurbinesADM::openOutputFiles() nacYawFile_ = new OFstream(rootDir/time/"nacYaw"); *nacYawFile_ << "#Turbine Time(s) dt(s) nacelle yaw angle (degrees)" << endl; + // _SSC_: Create a superInfo file. + superInfoFile_ = new OFstream(rootDir/time/"superInfo"); + *superInfoFile_ << "#Turbine Sector Time(s) dt(s) superInfo(fromThento)" << endl; + // Create an angle of attack file. alphaFile_ = new OFstream(rootDir/time/"alpha"); *alphaFile_ << "#Turbine Sector Time(s) dt(s) angle-of-attack(degrees)" << endl; @@ -1825,6 +2008,7 @@ void horizontalAxisWindTurbinesADM::printOutputFiles() *azimuthFile_ << i << " " << time << " " << dt << " "; *pitchFile_ << i << " " << time << " " << dt << " "; *nacYawFile_ << i << " " << time << " " << dt << " "; + *superInfoFile_ << i << " " << time << " " << dt << " "; //_SSC_ // Write out information for each turbine. *torqueRotorFile_ << torqueRotor[i]*fluidDensity[i] << endl; @@ -1838,6 +2022,17 @@ void horizontalAxisWindTurbinesADM::printOutputFiles() *pitchFile_ << pitch[i] << endl; *nacYawFile_ << standardToCompass(nacYaw[i]/degRad) << endl; + // _SSC_, print out superInfo for this turbine + for(int si = 0; si < nOutputsFromSSC; si++) + { + *superInfoFile_ << superInfoFromSSC[i * nOutputsFromSSC + si] << " "; + } + for(int si = 0; si < nInputsToSSC; si++) + { + *superInfoFile_ << superInfoToSSC[i * nInputsToSSC + si] << " "; + } + *superInfoFile_ << endl; //_SSC_ + // Proceed sector by sector. forAll(alphaSecAvg[i], j) { @@ -1892,6 +2087,7 @@ void horizontalAxisWindTurbinesADM::printOutputFiles() *azimuthFile_ << endl; *pitchFile_ << endl; *nacYawFile_ << endl; + *superInfoFile_ << endl; //_SSC_ *alphaFile_ << endl; *VmagFile_ << endl; diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/horizontalAxisWindTurbinesADM.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/horizontalAxisWindTurbinesADM.H index 9f1ee7042..7a57db44f 100755 --- a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/horizontalAxisWindTurbinesADM.H +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesADM/horizontalAxisWindTurbinesADM.H @@ -97,6 +97,8 @@ private: //- Revolutions per minute to radians per second conversion factor. const scalar rpmRadSec; + //- _SSC_ enabled option. + bool sscEnabled; //- Current time step size. @@ -338,6 +340,11 @@ private: // specified pitch). DynamicList BladePitchControllerType; + //_SSC_ Define the controller type and the IP address for the zeroMQ interface + word sscControllerType; + word sscMeasurementsFunction; + std::string zmqAddress; + //- Engage a rotor speed limiter (do not let rotor speed exceed rated // or become negative. DynamicList RotSpeedLimiter; @@ -593,7 +600,16 @@ private: // - Power on the generator. DynamicList powerGenerator; + //- _SSC_ size of arrays passed to and from super controller + // + // Note must be below superInfoBufferSize + int nInputsToSSC; + int nOutputsFromSSC; + //_SSC_ : Define a list for passing info between controllers and super controller + //List superInfo(1000,scalar::zero); + DynamicList superInfoFromSSC; // Array of data from the SSC + DynamicList superInfoToSSC; // Aray of data to the SSC //- Output Data File Information. @@ -660,7 +676,8 @@ private: //- List of output files for nacelle yaw angle. OFstream* nacYawFile_; - + //- _SSC_, List contents of superInfo + OFstream* superInfoFile_; @@ -685,6 +702,15 @@ private: //- Calculate the nacelle yaw position. void controlNacYaw(); + //- _SSC_: Define the super controller + void superController(); + + // _SSC_: Call the controller implementation + void callSuperController(); + + // _SSC_: Call the SSC measurement function + void sscMeasurements(); + //- Calculate the blade pitch. void controlBladePitch(); diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/bladePitchControllers/PIDSC.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/bladePitchControllers/PIDSC.H new file mode 100644 index 000000000..f9ab7ed49 --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/bladePitchControllers/PIDSC.H @@ -0,0 +1,44 @@ + //_SSC_ version of PID where min pitch is set by super controller + + // If past first call to controller, apply control. + if (pastFirstTimeStep) + { + // Set the gain scheduling variable. + GK = 1.0 / (1.0 + (bladePitch[i]*degRad)/PitchK[j]); + + // Store the old value of speed error. + scalar speedErrorLast = speedError[i]; + + // Compute the low speed shaft speed error. + speedError[i] = rotorSpeedF[i] - RatedRotSpeed[j]; + + // Numerically integrate the speed error over time. + intSpeedError[i] += speedError[i] * dt; + + // Numerically take the deriviative of speed error w.r.t time. + scalar derivSpeedError = (speedError[i] - speedErrorLast) / dt; + + // Saturate the integrated speed error based on pitch saturation. + intSpeedError[i] = min(max(intSpeedError[i], superInfoFromSSC[i*nOutputsFromSSC+1]/(GK*PitchControlKI[j])), PitchMax[j]/(GK*PitchControlKI[j])); + + // Compute the pitch components from the proportional, integral, + // and derivative parts and sum them. + scalar pitchP = GK * PitchControlKP[j] * speedError[i]; + scalar pitchI = GK * PitchControlKI[j] * intSpeedError[i]; + scalar pitchD = GK * PitchControlKD[j] * derivSpeedError; + bladePitchCommanded = pitchP + pitchI + pitchD; + + // Saturate the pitch based on the pitch limits of the pitch + // actuator. + bladePitchCommanded = min(max(bladePitchCommanded, superInfoFromSSC[i*nOutputsFromSSC+1]), PitchMax[j]); + } + // If first call to controller, initialize some values. + else + { + // set integrated speed error such that if there is no speed error + // on the first real control step (see the else section below), there + // will not be a change in pitch. + GK = 1.0 / (1.0 + (bladePitch[i]*degRad)/PitchK[j]); + intSpeedError[i] = (bladePitch[i]*degRad) / (GK * PitchControlKI[j]); + } + diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/genTorqueControllers/TorqueSC.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/genTorqueControllers/TorqueSC.H new file mode 100644 index 000000000..e4101437a --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/genTorqueControllers/TorqueSC.H @@ -0,0 +1 @@ +generatorTorqueCommanded = superInfoFromSSC[i * nOutputsFromSSC+2]; \ No newline at end of file diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/measurementFunctions/default.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/measurementFunctions/default.H new file mode 100644 index 000000000..7749daef1 --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/measurementFunctions/default.H @@ -0,0 +1,9 @@ +// Write measurements for the superController. In our example case, we have nInputsToSSC = 3 + +// Proceed turbine by turbine. + forAll(deltaNacYaw, i) + { + superInfoToSSC[i*nInputsToSSC+0] = generatorPower[i]; + superInfoToSSC[i*nInputsToSSC+1] = rotorSpeed[i]; + superInfoToSSC[i*nInputsToSSC+2] = rotorAxialForce[i]; + } \ No newline at end of file diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/nacYawControllers/yawSC.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/nacYawControllers/yawSC.H new file mode 100644 index 000000000..d17800ad8 --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/nacYawControllers/yawSC.H @@ -0,0 +1,7 @@ +// _SSC_ + +// Yaw controller: set commanded yaw angle in radians +float setpointYaw; +setpointYaw = superInfoFromSSC[i*nOutputsFromSSC]; +setpointYaw = compassToStandard(setpointYaw); // Rotate +nacYawCommanded = setpointYaw * degRad; // Degrees to radians diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/superControllers/timeTableSSC_ALMAdvanced.C b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/superControllers/timeTableSSC_ALMAdvanced.C new file mode 100644 index 000000000..cc2629ed4 --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/superControllers/timeTableSSC_ALMAdvanced.C @@ -0,0 +1,179 @@ +// _SSC_ +// file: timeTableSSC.C +// by Paul Fleming & Bart Doekemeijer +// Date: 05/03/2018 +// +// Info: A superController code that loads a table and applies the control settings +// at the relevant timesteps. +// +// this function will read an ascii text file defined by "char *inputFile", +// and apply the specified control settings at the specified time steps. This +// controller code is compatible with the "yawSC.H" and "PIDSC.H" turbine +// controller files, but can easily be extended or modified to one's needs. +// + +#include +#include +#include +#include + +// Read text file and format appropriately +void readInputSSC_ALMAdvanced(char *inputFile, int nTurbs, int nControlVars, + std::vector &nTurbInputs, std::vector< std::vector >&timeArray, + std::vector< std::vector > > &controlArray) +{ + float controlTime; // Time at which the control action is applied + FILE *fp; // Input file handle + char buffer[500]; // Define variables for handling SC_Struct + int turbID; // Temporary turbine number + float temp; // Temporary variable for scanning over floats in the input file + + // Define temporary (multi-dimensional) vectors + std::vector tmpFloatVector; // Temporary float vector + std::vector< std::vector > tmpFloatMatrix; // Temporary float matrix + std::vector tmpControlVector(nControlVars, 0); // Temporary float vector + + //Open file for reading + if((fp=fopen(inputFile, "r")) == NULL) { + fprintf(stderr,"%s: line %d: Cannot find SSC Input File with path '%s'.\n",__FILE__,__LINE__,inputFile); + exit(1); + } + else { + fprintf(stderr,"Successfully opened SSC Input File '%s'.\n",inputFile); + } + + // Populate timeArray and controlArray for each turbine + for (int i = 0; i < nTurbs; i++){ + timeArray.push_back(tmpFloatVector); // Populate with nTurbs vectors + controlArray.push_back(tmpFloatMatrix); // Populate with nTurbs matrices + } + + //Read the tables until the file end is found + printf("SSC: Reading the input file line by line...\n"); + fgets(buffer,500,fp); //Advance past the first comment line + for (int i = 0; 1 > 0; i++) + { + if(fscanf (fp, "%f", &temp) < 1) + break; + controlTime = temp; // First entry should be the simulation time (s) + + fscanf (fp, "%f", &temp); + turbID = temp; // Second entry should be the turbine number + + // Check if turbID exceeds number of turbines defined + if (turbID > nTurbs-1) { + printf("SSC: ERROR. You have defined control inputs for undefined turbines (turbine[%d]). Ignoring this row of inputs.\n",turbID); + for (int cVar = 0; cVar < nControlVars; cVar++) { + fscanf (fp, "%f", &temp); + } + } + else { + // Process control settings for this row of text + timeArray[turbID].push_back(controlTime); // Append with controlTime + printf(" Turbine[%d], time: %f \n", turbID,timeArray[turbID][nTurbInputs[turbID]]); + for (int cVar = 0; cVar < nControlVars; cVar++) { + fscanf (fp, "%f", &temp); + tmpControlVector[cVar] = temp; + printf(" Control setting [%d]: %f \n", cVar,tmpControlVector[cVar]); + } + controlArray[turbID].push_back(tmpControlVector); // Append control vector to controlArray + nTurbInputs[turbID] = nTurbInputs[turbID]+1; // Add one to the nTurbInputs + } + + } + printf("Closing file...\n\n"); + fclose(fp); //Close the file +} + +// Function to determine next control setting +void lookupControlAction_ALMAdvanced(float simTime, int nTurbs, int nControlVars, std::vector< std::vector >&timeArray, + std::vector< std::vector > > &controlArray, std::vector &nTurbInputs, + std::vector< std::vector >&nextControlAction) +{ + int controlIndex=0; + int controlSettingAvailable=0; + + // Determine next control setting for each turbine + for (int i = 0; i < nTurbs; i++){ + controlSettingAvailable=0; + + // Find most recent timestamp of control settings for turbine i + for (int j = 0; j < nTurbInputs[i]; j++){ + if(simTime >= timeArray[i][j]){ + controlIndex = j; + controlSettingAvailable=1; + } + } + + // Write control settings of most recent time instant to outputs for turbine i + if (controlSettingAvailable == 1){ + for (int cVar = 0; cVar < nControlVars; cVar++){ + nextControlAction[i][cVar] = controlArray[i][controlIndex][cVar]; + } + } else { + printf("SSC: WARNING: NO INITIAL CONDITIONS DEFINED FOR TURBINE %d. ASSUMING ZEROS.\n", i); + for (int cVar = 0; cVar < nControlVars; cVar++){ + nextControlAction[i][cVar] = 0.0; + } + } + } +} + +void SC_timeTable_ALMAdvanced(int nTurbs,int nControlVars, std::vector< std::vector >&nextControlAction, float simTime) +{ + char *inputFile = "SC_INPUT.txt"; // Filename of input file/path address relative to main case folder + + static int isFirstCall = 1; + static std::vector nTurbInputs(nTurbs, 0); // Vector with number of input timestaps for each turbine + static std::vector< std::vector > timeArray; // Matrix with timestamps for each turbine + static std::vector< std::vector< std::vector > > controlArray; // Tensor (3D matrix) with control settings for each turbine at each timestamp + + // Read input SSC file if first time this function is called + if(isFirstCall == 1){ + readInputSSC_ALMAdvanced(inputFile, nTurbs, nControlVars, nTurbInputs, timeArray, controlArray); + isFirstCall = 0; // disable for future calls + } + + // Retrieve control settings for time instant 'simTime' + lookupControlAction_ALMAdvanced(simTime, nTurbs, nControlVars, timeArray,controlArray, nTurbInputs,nextControlAction); + + /* + // Print calculated control settings + for(int i=0; i < nTurbs; i++){ + for(int j=0; j tmpFloatVector(nControlVars, 0); // Vector with number of input timestaps for each turbine + std::vector< std::vector > nextControlAction(nTurbs,std::vector(nOutputsFromSSC)); // Matrix with current control actions for each turbine + + printf("TIME = 5.0 SECONDS.\n"); + simTime = 5.0; + SC_timeTable_ALMAdvanced(nTurbs,nOutputsFromSSC,nextControlAction,simTime); + + printf("TIME = 11 SECONDS.\n"); + simTime = 11.0; + SC_timeTable_ALMAdvanced(nTurbs,nOutputsFromSSC,nextControlAction,simTime); + + printf("TIME = 15 SECONDS.\n"); + simTime = 15.0; + SC_timeTable_ALMAdvanced(nTurbs,nOutputsFromSSC,nextControlAction,simTime); + + printf("TIME = 21 SECONDS.\n"); + simTime = 21.0; + SC_timeTable_ALMAdvanced(nTurbs,nOutputsFromSSC,nextControlAction,simTime); + + return 0; +}*/ \ No newline at end of file diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/superControllers/timeTableSSC_ALMAdvanced.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/superControllers/timeTableSSC_ALMAdvanced.H new file mode 100644 index 000000000..93540b1e6 --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/superControllers/timeTableSSC_ALMAdvanced.H @@ -0,0 +1,15 @@ +//_SSC_ + +// Define variables: Matrix with current control actions for each turbine +std::vector< std::vector > nextControlAction(numTurbines,std::vector(nOutputsFromSSC)); + +// Call the SC from external library +SC_timeTable_ALMAdvanced(numTurbines,nOutputsFromSSC,nextControlAction,runTime_.value()); + +// Copy entries to global variable and print the to-be-applied control settings +for(int i=0; i < numTurbines; i++){ + for(int j=0; j // zeroMQ interface +#include +#include +#include +#include +#include +#include + +void SC_zeromq_ALMAdvanced(std::string zmqAddress, float timeStep, std::vector infoToSC, std::vector &infoFromSC, int sizeInfoFromSSC ) +{ + static int isFirstCall = 1; + static void *context = zmq_ctx_new (); + static void *requester = zmq_socket (context, ZMQ_REQ); + std::string strToSSC; // String that gets sent to SSC + char charFromSSC [9900]; + + // Establish connection of this is the first call to the SC + if (isFirstCall){ + std::cout << "0mq client: Connecting to 0mq server on address: " << zmqAddress << " ... \n"; + zmq_connect (requester, zmqAddress.c_str()); + isFirstCall = 0; // disable for future calls + } + + // Format the to be transmitted data from std::vector to char + std::stringstream ssToSC; // stringStream used to construct strToSSC + ssToSC << timeStep; // First entry is always timestep + for(size_t i = 0; i < infoToSC.size(); ++i) { + ssToSC << " " << infoToSC[i]; + } + strToSSC = ssToSC.str(); + std::cout << "infoToSC: [" << strToSSC << "] \n"; + + // Send and receive from SSC through zeroMQ + zmq_send (requester, strToSSC.c_str(), 9900, 0); + zmq_recv (requester, charFromSSC, 9900, 0); + + // Format received char/string to std::vector + std::cout << "infoFromSC: [" << charFromSSC << "] \n"; + std::stringstream ss(charFromSSC); + for(int i=0;i> infoFromSC[i]; + //printf("infoFromSC[%d] = %f \n",i,infoFromSC[i]); + } +} + +/* +int main() +{ + float timeStep = 10.0; + static std::vector infoToSC; + static std::vector infoFromSC; + + const int numTurbines = 2; + const int nInputsToSSC = 2; + const int nOutputsFromSSC = 2; + + for(int i = 0; i < 3; i++){ + printf("Call %d.\n",i); + #include "zeromqSSC.H" + } + + return 0; +} +*/ \ No newline at end of file diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/superControllers/zeromqSSC_ALMAdvanced.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/superControllers/zeromqSSC_ALMAdvanced.H new file mode 100644 index 000000000..b8304b7f6 --- /dev/null +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/controllers/superControllers/zeromqSSC_ALMAdvanced.H @@ -0,0 +1,41 @@ +// _SSC_ zeromqSSC.C +// +// This superController code serves as a zeroMQ client, which will communicate +// with a zeroMQ server. The zeroMQ server will be the remote controller, such as +// a MATLAB script, a Python script, or any other piece of software using the +// zeroMQ functionality. +// +// Authors: Bart Doekemeijer & Paul Fleming +// +static std::vector zeromqInfoToSC; +static std::vector zeromqInfoFromSC; +static int isFirstCall = 1; +int sizeInfoFromSSC = nOutputsFromSSC*numTurbines; + +if (isFirstCall == 1){ + // Initialize std::vectors with appropriate dimensions + for (int i=0; i < numTurbines*nInputsToSSC; i++){ + zeromqInfoToSC.push_back(0.0); // Initialize with zero values + // + } + for (int i=0; i < sizeInfoFromSSC; i++){ + zeromqInfoFromSC.push_back(0.0); // Initialize with zero values + } + isFirstCall = -1; // disable for future calls +} + +// Pass the SSC inputs to the local std::vector format +for(int i = 0; i < nInputsToSSC*numTurbines; i++){ + zeromqInfoToSC[i] = superInfoToSSC[i]; +} + +// Call the SC from external library +SC_zeromq_ALMAdvanced(zmqAddress, runTime_.value(), zeromqInfoToSC, zeromqInfoFromSC, sizeInfoFromSSC ); + +// Copy entries to global variable and print the to-be-applied control settings +for(int i=0; i < numTurbines; i++){ + for(int j=0; j. +And modified by the TUD to include: +- a matlab interface +- supercontroller +- forcescalar + \*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*\ @@ -36,6 +41,22 @@ License #include "horizontalAxisWindTurbinesALMAdvanced.H" #include "interpolateXY.H" + +// SSC inclusions without dependencies +#include "controllers/superControllers/timeTableSSC_ALMAdvanced.C" //_SSC_ inclusion + +// SSC inclusions with dependencies +#define DO_EXPAND(VAL) VAL ## 1 +#define EXPAND(VAL) DO_EXPAND(VAL) +#if !defined(COMPILEZEROMQ) || (EXPAND(COMPILEZEROMQ) == 1) // (Re)define if COMPILEZEROMQ undefined or empty string + #undef COMPILEZEROMQ + #define COMPILEZEROMQ 0 // Set default option to 0, meaning 'do not compile ZeroMQ interface' +#endif + +#if COMPILEZEROMQ == 1 // External definition for gcc compiler: '-D COMPILEZEROMQ=1' + #include "controllers/superControllers/zeromqSSC_ALMAdvanced.C" //_SSC_ inclusion +#endif + namespace Foam { namespace turbineModels @@ -184,22 +205,68 @@ horizontalAxisWindTurbinesALMAdvanced::horizontalAxisWindTurbinesALMAdvanced ) ); + // _SSC_ Import SSC setting from the turbineArrayProperties dictionary file // Read in the turbine array properties dictionary. This is the uppermost level dictionary // that describes where the turbines are, what kind they are, their initial state, and // information about how the actuator line method is applied to each turbine. { + sscEnabled = false; // _SSC_ Set default option to 'false' List listTemp = turbineArrayProperties.toc(); for (int i = 0; i < listTemp.size(); i++) { - if (listTemp[i] != "globalProperties") + if (listTemp[i] != "globalProperties" && listTemp[i] != "sscProperties") // _SSC_ Edit to ignore 'sscProperties' as a turbine { turbineName.append(listTemp[i]); } + + // _SSC_ Check for sscProperties subDict. If exists, import the 'sscEnabled' setting (backwards compatibility) + if (listTemp[i] == "sscProperties") + { + sscEnabled = turbineArrayProperties.subDict("sscProperties").lookupOrDefault("sscEnabled",false); + } + // } } numTurbines = turbineName.size(); + //_SSC_ If SSC enabled, read the number of inputs and outputs, and + // set up the dynamic arrays which will pass the memory between super controller and turbine controllers + if (sscEnabled) { + nInputsToSSC = int(readScalar(turbineArrayProperties.subDict("sscProperties").lookup("nInputsToSSC"))); + nOutputsFromSSC = int(readScalar(turbineArrayProperties.subDict("sscProperties").lookup("nOutputsFromSSC"))); + sscControllerType = word(turbineArrayProperties.subDict("sscProperties").lookup("sscControllerType")); + sscMeasurementsFunction = word(turbineArrayProperties.subDict("sscProperties").lookup("sscMeasurementsFunction")); + + if (sscControllerType == "zeromqSSC") { + zmqAddress = string(turbineArrayProperties.subDict("sscProperties").lookup("zmqAddress")); + } + + //Set up dynamic arrays + for (int si = 0; si < numTurbines * nInputsToSSC; si++) + { + superInfoToSSC.append(0.0); + } + for (int si = 0; si < numTurbines * nOutputsFromSSC; si++) + { + superInfoFromSSC.append(0.0); + } + + } + + // _SSC_ Report whether ssc has been enabled or disabled + if(Pstream::myProcNo() == 0) // Only print to log file for processor0, to avoid $nCores messages + { + if(sscEnabled) { + printf("The SSC is enabled.\n"); + printf(" The SSC is expecting %d inputs per turbine.\n",nInputsToSSC ); + printf(" The SSC is expecting %d outputs per turbine.\n",nOutputsFromSSC ); + } else { + printf("The SSC is disabled.\n"); + } + } + // + outputControl = turbineArrayProperties.subDict("globalProperties").lookupOrDefault("outputControl","timeStep"); outputInterval = turbineArrayProperties.subDict("globalProperties").lookupOrDefault("outputInterval",1); perturb = turbineArrayProperties.subDict("globalProperties").lookupOrDefault("perturb",1E-5); @@ -214,6 +281,7 @@ horizontalAxisWindTurbinesALMAdvanced::horizontalAxisWindTurbinesALMAdvanced turbineType.append(word(turbineArrayProperties.subDict(turbineName[i]).lookup("turbineType"))); includeNacelle.append(readBool(turbineArrayProperties.subDict(turbineName[i]).lookup("includeNacelle"))); includeTower.append(readBool(turbineArrayProperties.subDict(turbineName[i]).lookup("includeTower"))); + forceScalar.append(scalar(readScalar(turbineArrayProperties.subDict(turbineName[i]).lookup("forceScalar")))); baseLocation.append(vector(turbineArrayProperties.subDict(turbineName[i]).lookup("baseLocation"))); @@ -329,6 +397,7 @@ horizontalAxisWindTurbinesALMAdvanced::horizontalAxisWindTurbinesALMAdvanced } + // For each distinct turbine, read in properties of that turbine from separate // dictionaries. @@ -421,7 +490,7 @@ horizontalAxisWindTurbinesALMAdvanced::horizontalAxisWindTurbinesALMAdvanced { // Read nothing. } - else if (BladePitchControllerType[i] == "PID") + else if (BladePitchControllerType[i] == "PID"|| BladePitchControllerType[i] == "PIDSC" ) { PitchK.append(readScalar(turbineProperties.subDict("BladePitchControllerParams").lookup("PitchK"))); PitchMin.append(readScalar(turbineProperties.subDict("BladePitchControllerParams").lookup("PitchMin"))); @@ -460,8 +529,6 @@ horizontalAxisWindTurbinesALMAdvanced::horizontalAxisWindTurbinesALMAdvanced AirfoilType.append(turbineProperties.lookup("Airfoils")); - - BladeData.append(turbineProperties.lookup("BladeData")); { DynamicList station; @@ -561,6 +628,8 @@ horizontalAxisWindTurbinesALMAdvanced::horizontalAxisWindTurbinesALMAdvanced } } + + // Reassign airfoil type IDs to blades of each turbine based on the global // distinct list of airfoils. forAll(BladeAirfoilTypeID,i) @@ -638,6 +707,8 @@ horizontalAxisWindTurbinesALMAdvanced::horizontalAxisWindTurbinesALMAdvanced + + // Convert nacelle yaw from compass directions to the standard // convention of 0 degrees on the + x axis with positive degrees // in the counter-clockwise direction. @@ -1006,6 +1077,7 @@ horizontalAxisWindTurbinesALMAdvanced::horizontalAxisWindTurbinesALMAdvanced Pstream::scatter(towerPointsPerturbVector); + // Yaw the nacelle to initial position. deltaNacYaw = nacYaw; @@ -1554,7 +1626,8 @@ void horizontalAxisWindTurbinesALMAdvanced::controlGenTorque() scalar generatorTorqueCommanded = generatorTorque[i]; - + + // Apply a controller to update the rotor speed. if (GenTorqueControllerType[j] == "none") { @@ -1570,6 +1643,10 @@ void horizontalAxisWindTurbinesALMAdvanced::controlGenTorque() { #include "controllers/genTorqueControllers/speedTorqueTable.H" } + else if (GenTorqueControllerType[j] == "TorqueSC") + { + #include "controllers/genTorqueControllers/TorqueSC.H" + } // Limit the change in generator torque. if (GenTorqueRateLimiter[j]) @@ -1610,16 +1687,34 @@ void horizontalAxisWindTurbinesALMAdvanced::controlNacYaw() { #include "controllers/nacYawControllers/timeYawTable.H" } - + // _SSC_, set a case for yawSC + // simple function assumes the first entry per turbine in + // superInfoFromSSC is a yaw reference to seek + else if (NacYawControllerType[j] == "yawSC") + { + #include "controllers/nacYawControllers/yawSC.H" + } //Info << "nacYaw = " << nacYaw << endl; - if (((nacYawCommanded - nacYaw[i]) / degRad) <= 180.0) + deltaNacYaw[i] = nacYawCommanded - nacYaw[i]; // Standard calculation of delta yaw + // Ensure deltaNacYaw lies within [-360, 360] deg + if ((deltaNacYaw[i] / degRad) <= - 360.0) { - deltaNacYaw[i] = nacYawCommanded - nacYaw[i]; + deltaNacYaw[i] = deltaNacYaw[i] + (360.0*degRad); } - else + else if ((deltaNacYaw[i] / degRad) >= 360.0) { - deltaNacYaw[i] = nacYaw[i] - ((360.0*degRad) - nacYawCommanded); + deltaNacYaw[i] = deltaNacYaw[i] - (360.0*degRad); + } + + // Now find the shortest distance to the setpoint + if ((deltaNacYaw[i] / degRad) <= - 180.0) + { + deltaNacYaw[i] = deltaNacYaw[i] + (360.0*degRad); + } + else if ((deltaNacYaw[i] / degRad) >= 180.0) + { + deltaNacYaw[i] = deltaNacYaw[i] - (360.0*degRad); } //Info << "deltaNacYaw = " << deltaNacYaw / degRad << endl; @@ -1632,7 +1727,97 @@ void horizontalAxisWindTurbinesALMAdvanced::controlNacYaw() //Info << "deltaNacYaw = " << deltaNacYaw / degRad << endl; } } + +//_SSC_: define the super controller function +// The super controller code facilitates the exchangess +void horizontalAxisWindTurbinesALMAdvanced::superController() +{ + Info << "Entering SuperController" << endl; + + //As a first step spool up the "To" data from each of the turbines + List superInfoLocalIn(nInputsToSSC*numTurbines,0.0); + List superInfoLocalOut(nOutputsFromSSC*numTurbines,0.0); + + for(int si = 0; si < nInputsToSSC * numTurbines; si++) + { + superInfoLocalIn[si] = superInfoToSSC[si]; + } + + //Gather and scatter across procs + Pstream::gather(superInfoLocalIn,sumOp >()); + Pstream::scatter(superInfoLocalIn); + + // Send back out + for(int si = 0; si < nInputsToSSC *numTurbines; si++) + { + superInfoToSSC[si] = superInfoLocalIn[si]; + } + + // if this is the master, call + if (Pstream::master()) + { + sscMeasurements(); // Gather measurements + callSuperController(); // Call the superController function + + // Send result local + for(int si = 0; si < nOutputsFromSSC *numTurbines; si++) + { + superInfoLocalOut[si] = superInfoFromSSC[si]; + } + } else { + // If not master, set measurements to zero + for(int si = 0; si < nInputsToSSC *numTurbines; si++) + { + superInfoToSSC[si] = 0.0; + } + } + + //Gather and scatter across procs + Pstream::gather(superInfoLocalOut,sumOp >()); + Pstream::scatter(superInfoLocalOut); + + // Now reassign out/send back out + for(int si = 0; si < nOutputsFromSSC *numTurbines; si++) + { + superInfoFromSSC[si] = superInfoLocalOut[si]; + } + +} + +//_SSC_: define the call to the SSC measurement function +void horizontalAxisWindTurbinesALMAdvanced::sscMeasurements() +{ + // _SSC_, specific measurement definition + if (sscMeasurementsFunction == "default") + { + #include "controllers/measurementFunctions/default.H" + } +} + +//_SSC_: define the call to the simple controller +// The super controller code facilitates the exchangess +void horizontalAxisWindTurbinesALMAdvanced::callSuperController() +{ + // _SSC_, specific controller + if (sscControllerType == "timeTableSSC") + { + #include "controllers/superControllers/timeTableSSC_ALMAdvanced.H" + } + + #if COMPILEZEROMQ == 1 + if (sscControllerType == "zeromqSSC") + { + #include "controllers/superControllers/zeromqSSC_ALMAdvanced.H" + } + #else + if (sscControllerType == "zeromqSSC") + { + printf("\n \n ERROR: Please recompile SOWFA with the correct zeroMQ libraries to use the zeromqSSC controller functionality. \n\n"); + } + #endif +} + void horizontalAxisWindTurbinesALMAdvanced::controlBladePitch() { @@ -1660,7 +1845,11 @@ void horizontalAxisWindTurbinesALMAdvanced::controlBladePitch() { #include "controllers/bladePitchControllers/PID.H" } - + //_SSC_: allow a pidSC controller where the minimum pitch is chosen by super controller + else if (BladePitchControllerType[j] == "PIDSC") + { + #include "controllers/bladePitchControllers/PIDSC.H" + } // Apply pitch rate limiter. if (BladePitchRateLimiter[j]) { @@ -2364,8 +2553,8 @@ void horizontalAxisWindTurbinesALMAdvanced::computeBladePointForce() // Using Cl, Cd, wind velocity, chord, and actuator element width, calculate the // lift and drag per density. - bladePointCl[i][j][k] *= F; - bladePointCd[i][j][k] *= F; + bladePointCl[i][j][k] *= F* forceScalar[i]; + bladePointCd[i][j][k] *= F* forceScalar[i]; bladePointLift[i][j][k] = 0.5 * bladePointCl[i][j][k] * bladePointVmag[i][j][k] * bladePointVmag[i][j][k] * bladePointChord[i][j][k] * bladeDs[i][k]; bladePointDrag[i][j][k] = 0.5 * bladePointCd[i][j][k] * bladePointVmag[i][j][k] * bladePointVmag[i][j][k] * bladePointChord[i][j][k] * bladeDs[i][k]; @@ -3646,7 +3835,10 @@ void horizontalAxisWindTurbinesALMAdvanced::update() computeRotSpeed(); rotateBlades(); yawNacelle(); - + //_SSC_ + if (sscEnabled){ + superController(); + } // Find search cells. for(int i = 0; i < numTurbines; i++) { @@ -3689,7 +3881,10 @@ void horizontalAxisWindTurbinesALMAdvanced::update() computeRotSpeed(); rotateBlades(); yawNacelle(); - + //_SSC_ + if (sscEnabled){ + superController(); + } // Find search cells. for(int i = 0; i < numTurbines; i++) { diff --git a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/horizontalAxisWindTurbinesALMAdvanced.H b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/horizontalAxisWindTurbinesALMAdvanced.H old mode 100755 new mode 100644 index c6447b588..1ad12d866 --- a/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/horizontalAxisWindTurbinesALMAdvanced.H +++ b/src/turbineModels/turbineModelsStandard/horizontalAxisWindTurbinesALMAdvanced/horizontalAxisWindTurbinesALMAdvanced.H @@ -101,8 +101,8 @@ private: //- Revolutions per minute to radians per second conversion factor. const scalar rpmRadSec; - - + //- _SSC_ enabled option. + bool sscEnabled; //- Current time step size. scalar dt; @@ -249,7 +249,7 @@ private: DynamicList bladeEpsilon; DynamicList nacelleEpsilon; DynamicList towerEpsilon; - + DynamicList forceScalar; //- The velocity used to calculate tower and nacelle forces must be sampled // somewhere upstream of the actuator points. These variables describe how // far upstream the sampling occurs. @@ -418,6 +418,11 @@ private: // specified pitch). DynamicList BladePitchControllerType; + //_SSC_ Define the controller type and the IP address for the zeroMQ interface + word sscControllerType; + word sscMeasurementsFunction; + std::string zmqAddress; + //- Engage a rotor speed limiter (do not let rotor speed exceed rated // or become negative. DynamicList RotSpeedLimiter; @@ -769,7 +774,16 @@ private: DynamicList generatorPower; + //- _SSC_ size of arrays passed to and from super controller + // + // Note must be below superInfoBufferSize + int nInputsToSSC; + int nOutputsFromSSC; + //_SSC_ : Define a list for passing info between controllers and super controller + //List superInfo(1000,scalar::zero); + DynamicList superInfoFromSSC; // Array of data from the SSC + DynamicList superInfoToSSC; // Aray of data to the SSC //- Output Data File Information. //- List of output files for blade points. @@ -867,7 +881,8 @@ private: OFstream* generatorTorqueFile_; - + //- _SSC_, List contents of superInfo + OFstream* superInfoFile_; @@ -898,7 +913,16 @@ private: //- Calculate the nacelle yaw position. void controlNacYaw(); + + //- _SSC_: Define the super controller + void superController(); + // _SSC_: Call the simple controller implementation + void callSuperController(); + + // _SSC_: Call the SSC measurement function + void sscMeasurements(); + //- Calculate the blade pitch. void controlBladePitch();