diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/Allclean b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/Allclean new file mode 100755 index 0000000000..59040dddba --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/Allclean @@ -0,0 +1,7 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +#------------------------------------------------------------------------------ + +rm -rf parcelInBox-* *.png + +#------------------------------------------------------------------------------ diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/Allrun b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/Allrun new file mode 100755 index 0000000000..ea47f8f617 --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/Allrun @@ -0,0 +1,16 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +#------------------------------------------------------------------------------ + +BASE="parcelInBox" + +for cont in "pure" "slight" "full" +do + cp -rf "$BASE" "$BASE-$cont" + + (cd ./$BASE-$cont && ./Allrun $cont) +done + +./plot + +#------------------------------------------------------------------------------ diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/Alltest b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/Alltest new file mode 100755 index 0000000000..0258ca10a1 --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/Alltest @@ -0,0 +1,7 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +#------------------------------------------------------------------------------ + +echo "--- Skipping testing of tutorials in : $PWD" 1>&2 + +#------------------------------------------------------------------------------ diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/README.md b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/README.md new file mode 100644 index 0000000000..53665d87ec --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/README.md @@ -0,0 +1,14 @@ +Test case for Tomiyama particle drag model + +Based on the `parcelInBox` tutorial + +- Makes use of the `FreezeParticles` cloud function object to keep the particle + location fixed in space +- Iterates across a range of particle velocities for different contamination + levels to reproduce the validation figure from the reference publication + +Reference + + Tomiyama, A., Kataoka, I., Zun, I., & Sakaguchi, T. (1998). + Drag coefficients of single bubbles under normal and micro gravity conditions. + JSME International Journal Series B Fluids and Thermal Engineering, 41(2), 472-479. diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/0.orig/U b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/0.orig/U new file mode 100644 index 0000000000..fc7e26ea44 --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/0.orig/U @@ -0,0 +1,51 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2312 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + back + { + type symmetryPlane; + } + + front + { + type symmetryPlane; + } + + walls + { + type noSlip; + } + + outlet + { + type zeroGradient; + } + + inlet + { + type fixedValue; + value uniform (0 0 0); + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/0.orig/p b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/0.orig/p new file mode 100644 index 0000000000..95a6b1a7a9 --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/0.orig/p @@ -0,0 +1,51 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2312 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + back + { + type symmetryPlane; + } + + front + { + type symmetryPlane; + } + + inlet + { + type zeroGradient; + } + + outlet + { + type fixedValue; + value uniform 0; + } + + walls + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/Allclean b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/Allclean new file mode 100755 index 0000000000..2a0e02b0ec --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/Allclean @@ -0,0 +1,10 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions +#------------------------------------------------------------------------------ + +cleanCase0 + +rm -rf logs D_VS_U.txt *.png + +#------------------------------------------------------------------------------ diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/Allrun b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/Allrun new file mode 100755 index 0000000000..e6131eed5d --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/Allrun @@ -0,0 +1,41 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions +#------------------------------------------------------------------------------ + +./Allclean + +mkdir logs + +D_VS_U="D_VS_U.txt" + +contamination="${1:-pure}" + +runApplication blockMesh + +APP=$(getApplication) + +for d in $(seq -f "%06.4f" 0.0002 0.0002 0.04) +do + foamListTimes -rm + + restore0Dir + + echo "Setting diameter: $d" + + sed -e "s/DIAMETER/$d/g" -e "s/CONTAMINATION/$contamination/g" constant/kinematicCloudProperties.TEMPLATE > constant/kinematicCloudProperties + + runApplication $APP + + mv log.$APP logs/log.${APP}_t$d + + ./process > logs/log.velocity_t$d + + #U=$(tail -5 logs/log.velocity_t$d | awk '{SUM += $2; if (++C == 5) {print SUM/C; exit}}') + U=$(tail -1 logs/log.velocity_t$d | awk '{print $2}') + + echo "$d $U" >> $D_VS_U +done + + +#------------------------------------------------------------------------------ diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/g b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/g new file mode 100644 index 0000000000..881915bac2 --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/g @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2312 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + +// ************************************************************************* // diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/kinematicCloudProperties.TEMPLATE b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/kinematicCloudProperties.TEMPLATE new file mode 100644 index 0000000000..8641367cbb --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/kinematicCloudProperties.TEMPLATE @@ -0,0 +1,106 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2312 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object kinematicCloudProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solution +{ + active true; + coupled no; + transient yes; + cellValueSourceCorrection no; + maxCo 0.3; + + sourceTerms + { + schemes + { + U semiImplicit 1; + } + } + + interpolationSchemes + { + rho cell; + U cellPoint; + muc cell; + p cell; + curlUcDt cellPoint; + } + + integrationSchemes + { + U Euler; + } +} + +constantProperties +{ + rho0 1.2; +} + +subModels +{ + particleForces + { + gravity; + TomiyamaDrag + { + sigma 0.07; + contamination CONTAMINATION; + } + } + + injectionModels + { + model1 + { + type manualInjection; + massTotal 1; // unused - calculated by number of particles + parcelBasisType fixed; + nParticle 1; + SOI 0; + positionsFile "parcelPositions"; + U0 (0 0 0); + sizeDistribution + { + type fixedValue; + fixedValueDistribution + { + value DIAMETER; + } + } + } + } + + dispersionModel none; + + patchInteractionModel none; + + stochasticCollisionModel none; + + surfaceFilmModel none; +} + + +cloudFunctions +{ + FreezeParticles + { + type FreezeParticles; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/parcelPositions b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/parcelPositions new file mode 100644 index 0000000000..4ad02f9731 --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/parcelPositions @@ -0,0 +1,19 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2312 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class vectorField; + object parcelPositions; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +( +(0.05 0.05 0.005) +) +// ************************************************************************* // diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/transportProperties b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/transportProperties new file mode 100644 index 0000000000..224305c9fb --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/transportProperties @@ -0,0 +1,23 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2312 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +transportModel Newtonian; + +nu 1e-06; + +rhoInf 1000; + +// ************************************************************************* // diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/turbulenceProperties b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/turbulenceProperties new file mode 100644 index 0000000000..0e4214acde --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/constant/turbulenceProperties @@ -0,0 +1,19 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2312 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/plot b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/plot new file mode 100755 index 0000000000..4bc1b6d415 --- /dev/null +++ b/tutorials/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox/plot @@ -0,0 +1,21 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +#------------------------------------------------------------------------------ + +gnuplot</dev/null || { + echo "FOAM FATAL ERROR: gnuplot not found - skipping graph creation" 1>&2 + exit 1 +} + +#------------------------------------------------------------------------------ + +gnuplot<