Provides efficient integration of complex laminar reaction chemistry, combining the advantages of automatic dynamic specie and reaction reduction with ISAT (in situ adaptive tabulation). The advantages grow as the complexity of the chemistry increases. References: Contino, F., Jeanmart, H., Lucchini, T., & D’Errico, G. (2011). Coupling of in situ adaptive tabulation and dynamic adaptive chemistry: An effective method for solving combustion in engine simulations. Proceedings of the Combustion Institute, 33(2), 3057-3064. Contino, F., Lucchini, T., D'Errico, G., Duynslaegher, C., Dias, V., & Jeanmart, H. (2012). Simulations of advanced combustion modes using detailed chemistry combined with tabulation and mechanism reduction techniques. SAE International Journal of Engines, 5(2012-01-0145), 185-196. Contino, F., Foucher, F., Dagaut, P., Lucchini, T., D’Errico, G., & Mounaïm-Rousselle, C. (2013). Experimental and numerical analysis of nitric oxide effect on the ignition of iso-octane in a single cylinder HCCI engine. Combustion and Flame, 160(8), 1476-1483. Contino, F., Masurier, J. B., Foucher, F., Lucchini, T., D’Errico, G., & Dagaut, P. (2014). CFD simulations using the TDAC method to model iso-octane combustion for a large range of ozone seeding and temperature conditions in a single cylinder HCCI engine. Fuel, 137, 179-184. Two tutorial cases are currently provided: + tutorials/combustion/chemFoam/ic8h18_TDAC + tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC the first of which clearly demonstrates the advantage of dynamic adaptive chemistry providing ~10x speedup, the second demonstrates ISAT on the modest complex GRI mechanisms for methane combustion, providing a speedup of ~4x. More tutorials demonstrating TDAC on more complex mechanisms and cases will be provided soon in addition to documentation for the operation and settings of TDAC. Also further updates to the TDAC code to improve consistency and integration with the rest of OpenFOAM and further optimize operation can be expected. Original code providing all algorithms for chemistry reduction and tabulation contributed by Francesco Contino, Tommaso Lucchini, Gianluca D’Errico, Hervé Jeanmart, Nicolas Bourgeois and Stéphane Backaert. Implementation updated, optimized and integrated into OpenFOAM-dev by Henry G. Weller, CFD Direct Ltd with the help of Francesco Contino.
124 lines
3.3 KiB
Bash
124 lines
3.3 KiB
Bash
#---------------------------------*- sh -*-------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
|
# \\/ M anipulation |
|
|
#------------------------------------------------------------------------------
|
|
# License
|
|
# This file is part of OpenFOAM.
|
|
#
|
|
# OpenFOAM is free software: you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
# for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
# Script
|
|
# CleanFunctions
|
|
#
|
|
# Description
|
|
# Miscellaneous cleanup functions for tutorial cases
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
cleanTimeDirectories()
|
|
{
|
|
echo "Cleaning $PWD case"
|
|
zeros=""
|
|
while [ ${#zeros} -lt 8 ]
|
|
do
|
|
timeDir="0.${zeros}[1-9]*"
|
|
rm -rf ./${timeDir} ./-${timeDir} > /dev/null 2>&1
|
|
zeros="0$zeros"
|
|
done
|
|
rm -rf ./[1-9]* ./-[1-9]* ./log ./log.* ./log-* ./logSummary.* ./*.xml ./ParaView* ./paraFoam* ./*.OpenFOAM ./*.blockMesh ./.setSet > /dev/null 2>&1
|
|
}
|
|
|
|
cleanDynamicCode()
|
|
{
|
|
if [ -d system -a -d dynamicCode ]
|
|
then
|
|
rm -rf dynamicCode > /dev/null 2>&1
|
|
fi
|
|
}
|
|
|
|
cleanCase()
|
|
{
|
|
cleanTimeDirectories
|
|
cleanDynamicCode
|
|
|
|
rm -rf processor* > /dev/null 2>&1
|
|
rm -rf postProcessing > /dev/null 2>&1
|
|
rm -rf TDAC > /dev/null 2>&1
|
|
rm -rf probes* > /dev/null 2>&1
|
|
rm -rf forces* > /dev/null 2>&1
|
|
rm -rf graphs* > /dev/null 2>&1
|
|
rm -rf sets > /dev/null 2>&1
|
|
rm -rf surfaceSampling > /dev/null 2>&1
|
|
rm -rf cuttingPlane > /dev/null 2>&1
|
|
rm -rf system/machines > /dev/null 2>&1
|
|
|
|
if [ -d constant/polyMesh ]
|
|
then
|
|
(cd constant/polyMesh && \
|
|
rm -rf \
|
|
allOwner* cell* face* meshModifiers* \
|
|
owner* neighbour* point* edge* \
|
|
cellLevel* pointLevel* refinementHistory* level0Edge* surfaceIndex* sets \
|
|
boundary \
|
|
> /dev/null 2>&1 \
|
|
)
|
|
fi
|
|
if [ -d constant ]
|
|
then
|
|
(cd constant && \
|
|
rm -rf \
|
|
cellToRegion cellLevel* pointLevel* \
|
|
> /dev/null 2>&1 \
|
|
)
|
|
fi
|
|
|
|
rm -rf constant/tetDualMesh > /dev/null 2>&1
|
|
|
|
rm -rf VTK > /dev/null 2>&1
|
|
rm -f 0/cellLevel 0/pointLevel 0/cellDist constant/cellDecomposition
|
|
|
|
if [ -e system/blockMeshDict.m4 ]
|
|
then
|
|
rm -f system/blockMeshDict > /dev/null 2>&1
|
|
fi
|
|
}
|
|
|
|
removeCase()
|
|
{
|
|
echo "Removing ${1:-unknown} case"
|
|
rm -rf $1
|
|
}
|
|
|
|
cleanSamples()
|
|
{
|
|
rm -rf ./sets ./samples ./sampleSurfaces > /dev/null 2>&1
|
|
}
|
|
|
|
cleanUcomponents()
|
|
{
|
|
rm -rf 0/Ux 0/Uy 0/Uz > /dev/null 2>&1
|
|
}
|
|
|
|
cleanApplication()
|
|
{
|
|
echo "Cleaning $PWD application"
|
|
wclean
|
|
}
|
|
|
|
|
|
#------------------------------------------------------------------------------
|