Compare commits

..

2 Commits

16507 changed files with 3051449 additions and 404401 deletions

View File

@ -49,7 +49,7 @@
<!-- <!--
Providing details of your set-up can help us identify any issues, e.g. Providing details of your set-up can help us identify any issues, e.g.
OpenFOAM version : v2206|v2112|v2106|v2012|v2006 etc OpenFOAM version : v1806|v1812|v1906 etc
Operating system : ubuntu|openSUSE|centos etc Operating system : ubuntu|openSUSE|centos etc
Hardware info : any info that may help? Hardware info : any info that may help?
Compiler : gcc|intel|clang etc Compiler : gcc|intel|clang etc

View File

@ -8,7 +8,7 @@ wmake -check-dir "$WM_PROJECT_DIR" 2>/dev/null || {
} }
if [ -f "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments ] if [ -f "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments ]
then . "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments || \ then . "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments || \
echo "Argument parse error" echo "Argument parse error";
else else
echo "Error (${0##*/}) : WM_PROJECT_DIR appears to be incorrect" echo "Error (${0##*/}) : WM_PROJECT_DIR appears to be incorrect"
echo " Check your OpenFOAM environment and installation" echo " Check your OpenFOAM environment and installation"
@ -23,23 +23,23 @@ else
echo "mpirun=$(command -v mpirun || true)" echo "mpirun=$(command -v mpirun || true)"
fi fi
echo echo
# Report compiler information. First non-blank line from --version output # Report compiler information
compiler="$(wmake -show-path-cxx 2>/dev/null || true)" compiler="$(wmake -show-path-cxx 2>/dev/null || true)"
if [ -x "$compiler" ] if [ -x "$compiler" ]
then then
echo "compiler=$compiler" echo "compiler=$compiler"
"$compiler" --version 2>/dev/null | sed -e '/^$/d;q' "$compiler" --version 2>/dev/null | sed -ne '1p'
else else
echo "compiler=unknown" echo "compiler=unknown"
fi fi
echo echo
echo ======================================== echo "========================================"
date "+%Y-%m-%d %H:%M:%S %z" 2>/dev/null || echo "date is unknown" date "+%Y-%m-%d %H:%M:%S %z" 2>/dev/null || echo "date is unknown"
echo "Starting compile ${WM_PROJECT_DIR##*/} ${0##*/}" echo "Starting compile ${WM_PROJECT_DIR##*/} ${0##*/}"
echo " $WM_COMPILER ${WM_COMPILER_TYPE:-system} compiler [${WM_COMPILE_CONTROL}]" echo " $WM_COMPILER ${WM_COMPILER_TYPE:-system} compiler"
echo " ${WM_OPTIONS}, with ${WM_MPLIB} ${FOAM_MPI}" echo " ${WM_OPTIONS}, with ${WM_MPLIB} ${FOAM_MPI}"
echo ======================================== echo "========================================"
echo echo
# Compile tools for wmake # Compile tools for wmake
@ -62,24 +62,26 @@ else
echo "Skip ThirdParty (no directory)" echo "Skip ThirdParty (no directory)"
fi fi
# OpenFOAM libraries echo "========================================"
echo "Compile OpenFOAM libraries"
echo
src/Allwmake $targetType $* src/Allwmake $targetType $*
# OpenFOAM applications echo "========================================"
echo "Compile OpenFOAM applications"
echo
applications/Allwmake $targetType $* applications/Allwmake $targetType $*
# Additional components/modules # Additional components/modules
case "$FOAM_MODULE_PREFIX" in if [ "$FOAM_MODULE_PREFIX" = false ]
(false | none) then
echo ======================================== echo "========================================"
echo "OpenFOAM modules disabled (prefix=${FOAM_MODULE_PREFIX})" echo "OpenFOAM modules disabled (prefix=false)"
echo echo
;; elif [ -d "$WM_PROJECT_DIR/modules" ]
(*) then
# Use wmake -all instead of Allwmake to allow for overrides (cd "$WM_PROJECT_DIR/modules" 2>/dev/null && wmake -all)
( cd "$WM_PROJECT_DIR/modules" 2>/dev/null && wmake -all ) fi
esac
# Count files in given directory. Ignore "Test-*" binaries. # Count files in given directory. Ignore "Test-*" binaries.
_foamCountDirEntries() _foamCountDirEntries()
@ -91,7 +93,7 @@ _foamCountDirEntries()
# Some summary information # Some summary information
echo echo
date "+%Y-%m-%d %H:%M:%S %z" 2>/dev/null || echo "date is unknown" date "+%Y-%m-%d %H:%M:%S %z" 2>/dev/null || echo "date is unknown"
echo ======================================== echo "========================================"
echo " ${WM_PROJECT_DIR##*/}" echo " ${WM_PROJECT_DIR##*/}"
echo " $WM_COMPILER ${WM_COMPILER_TYPE:-system} compiler" echo " $WM_COMPILER ${WM_COMPILER_TYPE:-system} compiler"
echo " ${WM_OPTIONS}, with ${WM_MPLIB} ${FOAM_MPI}" echo " ${WM_OPTIONS}, with ${WM_MPLIB} ${FOAM_MPI}"
@ -101,6 +103,6 @@ echo " patch = $(etc/openfoam -show-patch 2>/dev/null)"
echo " bin = $(_foamCountDirEntries "$FOAM_APPBIN") entries" echo " bin = $(_foamCountDirEntries "$FOAM_APPBIN") entries"
echo " lib = $(_foamCountDirEntries "$FOAM_LIBBIN") entries" echo " lib = $(_foamCountDirEntries "$FOAM_LIBBIN") entries"
echo echo
echo ======================================== echo "========================================"
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -1,12 +1,10 @@
# Contributors to OpenFOAM # Contributors to OpenFOAM
The following is a list of known contributors to OpenFOAM. The following is an list of known contributors to OpenFOAM.
It is likely incomplete... It is likely incomplete...
## Contributors (alphabetical by surname) ## Contributors (alphabetical by surname)
- Tetsuo Aoyagi
- Akira Azami
- William Bainbridge - William Bainbridge
- Gabriel Barajas - Gabriel Barajas
- Kutalmis Bercin - Kutalmis Bercin
@ -21,13 +19,11 @@ It is likely incomplete...
- Bernhard Gschaider - Bernhard Gschaider
- Andrew Heather - Andrew Heather
- David Hill - David Hill
- Yoshiaki Inoue
- Mattijs Janssens - Mattijs Janssens
- Andrew Jackson - Andrew Jackson
- Hrvoje Jasak - Hrvoje Jasak
- Alexander Kabat vel Job - Alexander Kabat vel Job
- Thilo Knacke - Thilo Knacke
- Shannon Leakey
- Tommaso Lucchini - Tommaso Lucchini
- Graham Macpherson - Graham Macpherson
- Alexey Matveichev - Alexey Matveichev
@ -54,7 +50,7 @@ It is likely incomplete...
- Norbert Weber - Norbert Weber
- Henry Weller - Henry Weller
- Niklas Wikstrom - Niklas Wikstrom
- Guanyang Xue
- Thorsten Zirwes - Thorsten Zirwes
<!-----------------------------------------------------------------------------> <!----------------------------------------------------------------------------->

View File

@ -3,9 +3,8 @@
Meta-information is generally for OpenFOAM internal use only. Meta-information is generally for OpenFOAM internal use only.
The format, content and meaning may be changed at anytime without The format, content and meaning may be changed at anytime without
prior notice. notice. If any of these are changed, these are some of places that
If any of these are changed, these are some of places that will need will need to be updated accordingly:
to be updated accordingly:
- bin/foamEtcFile - bin/foamEtcFile
- bin/tools/foamConfigurePaths - bin/tools/foamConfigurePaths
@ -39,7 +38,7 @@ Format: `date +%y%m`
- 4-digit year-month (YYMM) integer corresponding to the major - 4-digit year-month (YYMM) integer corresponding to the major
release or in unusual cases an intermediate release. release or in unusual cases an intermediate release.
Example, `2106` for the June-2021 release. Example, `1712` for the Dec-2017 release.
#### patch #### patch
@ -79,9 +78,9 @@ the saved information needs synchronization. The command
### Notes ### Notes
The saved information is split into two separate files. The saved information is split into two separate files. The `api-info`
The `api-info` file contains more permanent information, contains more permanent information, whereas the `build-info` is more
whereas the `build-info` is more transient in nature. transient in nature.
---- ----
2021-06-09 2020-06-23

View File

@ -1,2 +1,2 @@
api=2206 api=2012
patch=0 patch=0

View File

@ -11,7 +11,7 @@ individual and group contributors, integrations
[governance guided activities](https://www.openfoam.com/governance/). [governance guided activities](https://www.openfoam.com/governance/).
## License ## Copyright
OpenFOAM is free software: you can redistribute it and/or modify it 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 under the terms of the GNU General Public License as published by the
@ -27,11 +27,10 @@ may redistribute files.
OpenCFD Ltd grants use of its OpenFOAM trademark by Third Parties on a OpenCFD Ltd grants use of its OpenFOAM trademark by Third Parties on a
licence basis. ESI Group and OpenFOAM Foundation Ltd are currently licence basis. ESI Group and OpenFOAM Foundation Ltd are currently
permitted to use the Name and agreed Domain Name. For information on permitted to use the Name and agreed Domain Name. For information on
trademark use, please refer to the trademark use, please refer to the [trademark policy guidelines](http://www.openfoam.com/legal/trademark-policy.php).
[trademark policy guidelines][link trademark].
Please [contact OpenCFD](http://www.openfoam.com/contact) if you have Please [contact OpenCFD](http://www.openfoam.com/contact) if you have
any questions about the use of the OpenFOAM trademark. any questions on the use of the OpenFOAM trademark.
Violations of the Trademark are monitored, and will be duly prosecuted. Violations of the Trademark are monitored, and will be duly prosecuted.
@ -40,9 +39,9 @@ Violations of the Trademark are monitored, and will be duly prosecuted.
If OpenFOAM has already been compiled on your system, simply source If OpenFOAM has already been compiled on your system, simply source
the appropriate `etc/bashrc` or `etc/cshrc` file and get started. the appropriate `etc/bashrc` or `etc/cshrc` file and get started.
For example, for the OpenFOAM-v2206 version: For example, for the OpenFOAM-v1912 version:
``` ```
source /installation/path/OpenFOAM-v2206/etc/bashrc source /installation/path/OpenFOAM-v1912/etc/bashrc
``` ```
## Compiling OpenFOAM ## Compiling OpenFOAM
@ -56,11 +55,6 @@ guides:
| [ThirdParty][repo third] | [readme][link third-readme] | [system requirements][link third-require] | [build][link third-build] | | [ThirdParty][repo third] | [readme][link third-readme] | [system requirements][link third-require] | [build][link third-build] |
If you need to modify the versions or locations of ThirdParty
software, please read how the
[OpenFOAM configuration][wiki-config] is structured.
## How do I know which version I am currently using? ## How do I know which version I am currently using?
The value of the `$WM_PROJECT_DIR` or even `$WM_PROJECT_VERSION` are The value of the `$WM_PROJECT_DIR` or even `$WM_PROJECT_VERSION` are
@ -69,19 +63,19 @@ not guaranteed to have any correspondence to the OpenFOAM release
information is embedded into each application. For example, as information is embedded into each application. For example, as
displayed from `blockMesh -help`: displayed from `blockMesh -help`:
``` ```
Using: OpenFOAM-com (2012) - visit www.openfoam.com Using: OpenFOAM-v1812.local (1812) - visit www.openfoam.com
Build: b830beb5ea-20210429 (patch=210414) Build: 65d6551ff7-20190530 (patch=190531)
Arch: LSB;label=32;scalar=64 Arch: LSB;label=32;scalar=64
``` ```
This output contains all of the more interesting information that we need: This output contains all of the more interesting information that we need:
| item | value | | item | value |
|-----------------------|---------------| |-----------------------|---------------|
| version | com (eg, local development branch) | | version | v1812.local |
| api | 2012 | | api | 1812 |
| commit | b830beb5ea | | commit | 65d6551ff7 |
| author date | 20210429 | | author date | 20190530 |
| patch-level | (20)210414 | | patch-level | (20)190531 |
| label/scalar size | 32/64 bits | | label/scalar size | 32/64 bits |
The Arch information may also include the `solveScalar` size The Arch information may also include the `solveScalar` size
@ -96,19 +90,19 @@ when OpenFOAM has not yet been compiled:
``` ```
$ wmake -build-info $ wmake -build-info
make make
api = 2012 api = 1812
patch = 210414 patch = 190531
branch = master branch = master
build = 308af39136-20210426 build = 65d6551ff7-20190530
``` ```
Similar information is available with `foamEtcFile`, using the Similar information is available with `foamEtcFile`, using the
`-show-api` or `-show-patch` options. For example, `-show-api` or `-show-patch` options. For example,
``` ```
$ foamEtcFile -show-api $ foamEtcFile -show-api
2012 1812
$ foamEtcFile -show-patch $ foamEtcFile -show-patch
210414 190531
``` ```
This output will generally be the easiest to parse for scripts. This output will generally be the easiest to parse for scripts.
The `$FOAM_API` convenience environment variable may not reflect the The `$FOAM_API` convenience environment variable may not reflect the
@ -127,8 +121,8 @@ These 3rd-party sources are normally located in a directory parallel
to the OpenFOAM directory. For example, to the OpenFOAM directory. For example,
``` ```
/path/parent /path/parent
|-- OpenFOAM-v2206 |-- OpenFOAM-v1912
\-- ThirdParty-v2206 \-- ThirdParty-v1912
``` ```
There are, however, many cases where this simple convention is inadequate: There are, however, many cases where this simple convention is inadequate:
@ -136,7 +130,7 @@ There are, however, many cases where this simple convention is inadequate:
operating system or cluster installation provides it) operating system or cluster installation provides it)
* When we have changed the OpenFOAM directory name to some arbitrary * When we have changed the OpenFOAM directory name to some arbitrary
directory name, e.g. openfoam-sandbox2206, etc.. directory name, e.g. openfoam-sandbox1912, etc..
* When we would like any additional 3rd party software to be located * When we would like any additional 3rd party software to be located
inside of the OpenFOAM directory to ensure that the installation is inside of the OpenFOAM directory to ensure that the installation is
@ -156,14 +150,17 @@ when locating the ThirdParty directory with the following precedence:
2. PREFIX/ThirdParty-VERSION 2. PREFIX/ThirdParty-VERSION
* this corresponds to the traditional approach * this corresponds to the traditional approach
3. PREFIX/ThirdParty-vAPI 3. PREFIX/ThirdParty-vAPI
* allows for an updated value of VERSION, *eg*, `v2206-myCustom`, * allows for an updated value of VERSION, *eg*, `v1912-myCustom`,
without requiring a renamed ThirdParty. The API value would still without requiring a renamed ThirdParty. The API value would still
be `2206` and the original `ThirdParty-v2206/` would be found. be `1912` and the original `ThirdParty-v1912/` would be found.
4. PREFIX/ThirdParty-API 4. PREFIX/ThirdParty-API
* same as the previous example, but using an unadorned API value. * this is the same as the previous example, but using an unadorned
API value. This also makes sense if the chosen version name also
uses the unadorned API value in its naming, *eg*,
`1912-patch190131`, `1912.19W03`
5. PREFIX/ThirdParty-common 5. PREFIX/ThirdParty-common
* permits maximum reuse for various versions, for experienced * permits maximum reuse for various versions, for experienced user
users who are aware of potential version incompatibilities who are aware of potential version incompatibilities
If none of these directories are found to be suitable, it reverts to If none of these directories are found to be suitable, it reverts to
using PROJECT/ThirdParty as a dummy location (even if the directory using PROJECT/ThirdParty as a dummy location (even if the directory
@ -187,21 +184,18 @@ ThirdParty directory will contain either an `Allwmake` file or a
<!-- OpenFOAM --> <!-- OpenFOAM -->
[link trademark]: https://www.openfoam.com/opencfd-limited-trade-mark-policy
[repo openfoam]: https://develop.openfoam.com/Development/openfoam/ [repo openfoam]: https://develop.openfoam.com/Development/openfoam/
[repo third]: https://develop.openfoam.com/Development/ThirdParty-common/ [repo third]: https://develop.openfoam.com/Development/ThirdParty-common/
[link openfoam-readme]: https://develop.openfoam.com/Development/openfoam/blob/develop/README.md [link openfoam-readme]: https://develop.openfoam.com/Development/openfoam/blob/develop/README.md
[link openfoam-issues]: https://develop.openfoam.com/Development/openfoam/blob/develop/doc/BuildIssues.md [link openfoam-issues]: https://develop.openfoam.com/Development/openfoam/blob/develop/doc/BuildIssues.md
[link openfoam-config]: https://develop.openfoam.com/Development/openfoam/blob/develop/doc/Config.md
[link openfoam-build]: https://develop.openfoam.com/Development/openfoam/blob/develop/doc/Build.md [link openfoam-build]: https://develop.openfoam.com/Development/openfoam/blob/develop/doc/Build.md
[link openfoam-require]: https://develop.openfoam.com/Development/openfoam/blob/develop/doc/Requirements.md [link openfoam-require]: https://develop.openfoam.com/Development/openfoam/blob/develop/doc/Requirements.md
[link third-readme]: https://develop.openfoam.com/Development/ThirdParty-common/blob/develop/README.md [link third-readme]: https://develop.openfoam.com/Development/ThirdParty-common/blob/develop/README.md
[link third-build]: https://develop.openfoam.com/Development/ThirdParty-common/blob/develop/BUILD.md [link third-build]: https://develop.openfoam.com/Development/ThirdParty-common/blob/develop/BUILD.md
[link third-require]: https://develop.openfoam.com/Development/ThirdParty-common/blob/develop/Requirements.md [link third-require]: https://develop.openfoam.com/Development/ThirdParty-common/blob/develop/Requirements.md
[wiki-config]: https://develop.openfoam.com/Development/openfoam/-/wikis/configuring
## Useful Links ## Useful Links
@ -209,8 +203,8 @@ ThirdParty directory will contain either an `Allwmake` file or a
- [Documentation](http://www.openfoam.com/documentation) - [Documentation](http://www.openfoam.com/documentation)
- [Reporting bugs/issues/feature requests](http://www.openfoam.com/code/bug-reporting.php) - [Reporting bugs/issues/feature requests](http://www.openfoam.com/code/bug-reporting.php)
- [Issue tracker](https://develop.openfoam.com/Development/openfoam/-/issues) - [Issue tracker](https://develop.openfoam.com/Development/openfoam/-/issues)
- [Code wiki](https://develop.openfoam.com/Development/openfoam/-/wikis/) and [General wiki](http://wiki.openfoam.com/) - [Code wiki](https://develop.openfoam.com/Development/openfoam/-/wikis/) and [general wiki](http://wiki.openfoam.com/)
- [Governance](http://www.openfoam.com/governance/), [Governance Projects](https://www.openfoam.com/governance/projects) - [Community](http://www.openfoam.com/community/), [Governance](http://www.openfoam.com/governance/)
- [Contacting OpenCFD](http://www.openfoam.com/contact/) - [Contacting OpenCFD](http://www.openfoam.com/contact/)
Copyright 2016-2022 OpenCFD Ltd Copyright 2016-2020 OpenCFD Ltd

View File

@ -8,29 +8,19 @@ wmake -check-dir "$WM_PROJECT_DIR/applications" 2>/dev/null || {
} }
if [ -f "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments ] if [ -f "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments ]
then . "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments || \ then . "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments || \
echo "Argument parse error" echo "Argument parse error";
else else
echo "Error (${0##*/}) : WM_PROJECT_DIR appears to be incorrect" echo "Error (${0##*/}) : WM_PROJECT_DIR appears to be incorrect"
echo " Check your OpenFOAM environment and installation" echo " Check your OpenFOAM environment and installation"
exit 1 exit 1
fi fi
echo ========================================
echo Compile OpenFOAM applications
echo ========================================
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
wmake -all $targetType utilities
wmake -all $targetType solvers wmake -all $targetType solvers
wmake -all $targetType utilities
# Extra tools (optional) # Optional
## wmake -all $targetType tools ## wmake -all $targetType tools
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
echo ========================================
echo Done OpenFOAM applications
echo ========================================
#------------------------------------------------------------------------------

View File

@ -25,7 +25,6 @@ EXE_LIBS = \
-lengine \ -lengine \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-lcompressibleTransportModels \ -lcompressibleTransportModels \
-lfluidThermophysicalModels \ -lfluidThermophysicalModels \
-lreactionThermophysicalModels \ -lreactionThermophysicalModels \

View File

@ -160,7 +160,7 @@ int main(int argc, char *argv[])
runTime.printExecutionTime(Info); runTime.printExecutionTime(Info);
} }
Info<< "End\n"; Info<< "\n end\n";
return 0; return 0;
} }

View File

@ -207,7 +207,7 @@ int main(int argc, char *argv[])
runTime.printExecutionTime(Info); runTime.printExecutionTime(Info);
} }
Info<< "End\n"; Info<< "\n end\n";
return 0; return 0;
} }

View File

@ -6,7 +6,7 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2019-2021 OpenCFD Ltd. Copyright (C) 2019 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -43,9 +43,9 @@ Foam::autoPtr<Foam::PDRDragModel> Foam::PDRDragModel::New
Info<< "Selecting drag model " << modelType << endl; Info<< "Selecting drag model " << modelType << endl;
auto* ctorPtr = dictionaryConstructorTable(modelType); auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
if (!ctorPtr) if (!cstrIter.found())
{ {
FatalIOErrorInLookup FatalIOErrorInLookup
( (
@ -57,9 +57,7 @@ Foam::autoPtr<Foam::PDRDragModel> Foam::PDRDragModel::New
} }
return autoPtr<PDRDragModel> return autoPtr<PDRDragModel>
( (cstrIter()(dict, turbulence, rho, U, phi));
ctorPtr(dict, turbulence, rho, U, phi)
);
} }

View File

@ -6,7 +6,7 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2019-2021 OpenCFD Ltd. Copyright (C) 2019 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -42,9 +42,9 @@ Foam::autoPtr<Foam::XiEqModel> Foam::XiEqModel::New
Info<< "Selecting flame-wrinkling model " << modelType << endl; Info<< "Selecting flame-wrinkling model " << modelType << endl;
auto* ctorPtr = dictionaryConstructorTable(modelType); auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
if (!ctorPtr) if (!cstrIter.found())
{ {
FatalIOErrorInLookup FatalIOErrorInLookup
( (
@ -55,7 +55,7 @@ Foam::autoPtr<Foam::XiEqModel> Foam::XiEqModel::New
) << exit(FatalIOError); ) << exit(FatalIOError);
} }
return autoPtr<XiEqModel>(ctorPtr(dict, thermo, turbulence, Su)); return autoPtr<XiEqModel>(cstrIter()(dict, thermo, turbulence, Su));
} }

View File

@ -6,7 +6,7 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2019-2021 OpenCFD Ltd. Copyright (C) 2019 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -42,9 +42,9 @@ Foam::autoPtr<Foam::XiGModel> Foam::XiGModel::New
Info<< "Selecting flame-wrinkling model " << modelType << endl; Info<< "Selecting flame-wrinkling model " << modelType << endl;
auto* ctorPtr = dictionaryConstructorTable(modelType); auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
if (!ctorPtr) if (!cstrIter.found())
{ {
FatalIOErrorInLookup FatalIOErrorInLookup
( (
@ -55,7 +55,7 @@ Foam::autoPtr<Foam::XiGModel> Foam::XiGModel::New
) << exit(FatalIOError); ) << exit(FatalIOError);
} }
return autoPtr<XiGModel>(ctorPtr(dict, thermo, turbulence, Su)); return autoPtr<XiGModel>(cstrIter()(dict, thermo, turbulence, Su));
} }

View File

@ -6,7 +6,7 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2019-2021 OpenCFD Ltd. Copyright (C) 2019 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -45,9 +45,9 @@ Foam::autoPtr<Foam::XiModel> Foam::XiModel::New
Info<< "Selecting flame-wrinkling model " << modelType << endl; Info<< "Selecting flame-wrinkling model " << modelType << endl;
auto* ctorPtr = dictionaryConstructorTable(modelType); auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
if (!ctorPtr) if (!cstrIter.found())
{ {
FatalIOErrorInLookup FatalIOErrorInLookup
( (
@ -59,9 +59,7 @@ Foam::autoPtr<Foam::XiModel> Foam::XiModel::New
} }
return autoPtr<XiModel> return autoPtr<XiModel>
( (cstrIter()(dict, thermo, turbulence, Su, rho, b, phi));
ctorPtr(dict, thermo, turbulence, Su, rho, b, phi)
);
} }

View File

@ -19,7 +19,6 @@ EXE_LIBS = \
-lengine \ -lengine \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-lcompressibleTransportModels \ -lcompressibleTransportModels \
-lfluidThermophysicalModels \ -lfluidThermophysicalModels \
-lreactionThermophysicalModels \ -lreactionThermophysicalModels \

View File

@ -26,7 +26,6 @@ EXE_LIBS = \
-lengine \ -lengine \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-lcompressibleTransportModels \ -lcompressibleTransportModels \
-lfluidThermophysicalModels \ -lfluidThermophysicalModels \
-lreactionThermophysicalModels \ -lreactionThermophysicalModels \

View File

@ -20,7 +20,6 @@ EXE_LIBS = \
-lengine \ -lengine \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-lcompressibleTransportModels \ -lcompressibleTransportModels \
-lfluidThermophysicalModels \ -lfluidThermophysicalModels \
-lreactionThermophysicalModels \ -lreactionThermophysicalModels \

View File

@ -6,13 +6,11 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude
-I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude
EXE_LIBS = \ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
-lmeshTools \ -lmeshTools \
-lfluidThermophysicalModels \ -lfluidThermophysicalModels \
-lreactionThermophysicalModels \ -lreactionThermophysicalModels \
-lchemistryModel \ -lchemistryModel
-lthermophysicalProperties

View File

@ -20,7 +20,6 @@ EXE_LIBS = \
-lengine \ -lengine \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-lcompressibleTransportModels \ -lcompressibleTransportModels \
-lfluidThermophysicalModels \ -lfluidThermophysicalModels \
-lspecie -lspecie

View File

@ -1,6 +1,5 @@
EXE_INC = \ EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I${LIB_SRC}/meshTools/lnInclude \ -I${LIB_SRC}/meshTools/lnInclude \
-I${LIB_SRC}/sampling/lnInclude \ -I${LIB_SRC}/sampling/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
@ -15,6 +14,7 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/solidChemistryModel/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/solidChemistryModel/lnInclude \
-I$(LIB_SRC)/combustionModels/lnInclude \ -I$(LIB_SRC)/combustionModels/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
@ -23,9 +23,7 @@ EXE_INC = \
-I$(LIB_SRC)/regionModels/pyrolysisModels/lnInclude \ -I$(LIB_SRC)/regionModels/pyrolysisModels/lnInclude \
-I$(LIB_SRC)/lagrangian/basic/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude \
-I$(LIB_SRC)/lagrangian/intermediate/lnInclude \ -I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
-I$(LIB_SRC)/ODE/lnInclude \ -I$(LIB_SRC)/ODE/lnInclude
-I$(LIB_SRC)/regionFaModels/lnInclude \
-I$(LIB_SRC)/faOptions/lnInclude
EXE_LIBS = \ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
@ -34,7 +32,6 @@ EXE_LIBS = \
-lsampling \ -lsampling \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-lspecie \ -lspecie \
-lcompressibleTransportModels \ -lcompressibleTransportModels \
-lfluidThermophysicalModels \ -lfluidThermophysicalModels \
@ -53,7 +50,4 @@ EXE_LIBS = \
-llagrangian \ -llagrangian \
-llagrangianIntermediate \ -llagrangianIntermediate \
-llagrangianTurbulence \ -llagrangianTurbulence \
-lODE \ -lODE
-lregionFaModels \
-lfiniteArea \
-lfaOptions

View File

@ -1,9 +1,9 @@
Info<< "\nConstructing reacting cloud" << endl; Info<< "\nConstructing reacting cloud" << endl;
reactingCloud parcels basicReactingCloud parcels
( (
"reactingCloud1", "reactingCloud1",
g,
rho, rho,
U, U,
g,
slgThermo slgThermo
); );

View File

@ -1,4 +1,4 @@
const volScalarField& psi = thermo.psi(); const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T(); const volScalarField& T = thermo.T();
regionModels::surfaceFilmModel& surfaceFilm = tsurfaceFilm(); regionModels::surfaceFilmModel& surfaceFilm = tsurfaceFilm();
const label inertIndex(composition.species().find(inertSpecie)); const label inertIndex(composition.species()[inertSpecie]);

View File

@ -37,7 +37,7 @@ Description
#include "fvCFD.H" #include "fvCFD.H"
#include "turbulentFluidThermoModel.H" #include "turbulentFluidThermoModel.H"
#include "reactingCloud.H" #include "basicReactingCloud.H"
#include "surfaceFilmModel.H" #include "surfaceFilmModel.H"
#include "pyrolysisModelCollection.H" #include "pyrolysisModelCollection.H"
#include "radiationModel.H" #include "radiationModel.H"

View File

@ -19,7 +19,6 @@ EXE_LIBS = \
-lsampling \ -lsampling \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-lreactionThermophysicalModels \ -lreactionThermophysicalModels \
-lspecie \ -lspecie \
-lcompressibleTransportModels \ -lcompressibleTransportModels \

View File

@ -1,3 +1,3 @@
const volScalarField& psi = thermo.psi(); const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T(); const volScalarField& T = thermo.T();
const label inertIndex(composition.species().find(inertSpecie)); const label inertIndex(composition.species()[inertSpecie]);

View File

@ -20,7 +20,6 @@ EXE_LIBS = \
-lsampling \ -lsampling \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-lreactionThermophysicalModels \ -lreactionThermophysicalModels \
-lspecie \ -lspecie \
-lcompressibleTransportModels \ -lcompressibleTransportModels \

View File

@ -1,3 +1,3 @@
const volScalarField& psi = thermo.psi(); const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T(); const volScalarField& T = thermo.T();
const label inertIndex(composition.species().find(inertSpecie)); const label inertIndex(composition.species()[inertSpecie]);

View File

@ -20,7 +20,6 @@ EXE_LIBS = \
-lsampling \ -lsampling \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-lreactionThermophysicalModels \ -lreactionThermophysicalModels \
-lspecie \ -lspecie \
-lcompressibleTransportModels \ -lcompressibleTransportModels \

View File

@ -1,3 +1,3 @@
const volScalarField& psi = thermo.psi(); const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T(); const volScalarField& T = thermo.T();
const label inertIndex(composition.species().find(inertSpecie)); const label inertIndex(composition.species()[inertSpecie]);

View File

@ -4,5 +4,6 @@ cd "${0%/*}" || exit # Run from this directory
wclean libso BCs wclean libso BCs
wclean wclean
wclean rhoCentralDyMFoam
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -5,7 +5,8 @@ cd "${0%/*}" || exit # Run from this directory
( (
wmake $targetType BCs \ wmake $targetType BCs \
&& wmake $targetType && wmake $targetType \
&& wmake $targetType rhoCentralDyMFoam \
) )
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -7,7 +7,7 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude -I$(LIB_SRC)/dynamicMesh/lnInclude
EXE_LIBS = \ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
@ -18,7 +18,4 @@ EXE_LIBS = \
-lspecie \ -lspecie \
-lrhoCentralFoam \ -lrhoCentralFoam \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels
-lthermoTools \
-ldynamicFvMesh \
-ltopoChangerFvMesh

View File

@ -0,0 +1,3 @@
rhoCentralDyMFoam.C
EXE = $(FOAM_APPBIN)/rhoCentralDyMFoam

View File

@ -0,0 +1,26 @@
EXE_INC = \
-I.. \
-I../BCs/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude
EXE_LIBS = \
-lfiniteVolume \
-lfvOptions \
-lmeshTools \
-lcompressibleTransportModels \
-lfluidThermophysicalModels \
-lspecie \
-lrhoCentralFoam \
-lturbulenceModels \
-lcompressibleTurbulenceModels \
-ldynamicMesh \
-ldynamicFvMesh \
-ltopoChangerFvMesh

View File

@ -0,0 +1,288 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
-------------------------------------------------------------------------------
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/>.
Application
rhoCentralDyMFoam
Group
grpCompressibleSolvers grpMovingMeshSolvers
Description
Density-based compressible flow solver based on central-upwind
schemes of Kurganov and Tadmor
with support for mesh-motion and topology changes.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "psiThermo.H"
#include "turbulentFluidThermoModel.H"
#include "fixedRhoFvPatchScalarField.H"
#include "directionInterpolate.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
#include "motionSolver.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
argList::addNote
(
"Density-based compressible flow solver based on central-upwind"
" schemes of Kurganov and Tadmor.\n"
"With support for mesh-motion and topology changes."
);
#define NO_CONTROL
#include "postProcess.H"
#include "setRootCaseLists.H"
#include "createTime.H"
#include "createDynamicFvMesh.H"
#include "createFields.H"
#include "createFieldRefs.H"
#include "createTimeControls.H"
turbulence->validate();
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include "readFluxScheme.H"
const dimensionedScalar v_zero(dimVolume/dimTime, Zero);
// Courant numbers used to adjust the time-step
scalar CoNum = 0.0;
scalar meanCoNum = 0.0;
Info<< "\nStarting time loop\n" << endl;
while (runTime.run())
{
#include "readTimeControls.H"
#include "setDeltaT.H"
++runTime;
Info<< "Time = " << runTime.timeName() << nl << endl;
// Do any mesh changes
mesh.update();
// --- Directed interpolation of primitive fields onto faces
surfaceScalarField rho_pos(interpolate(rho, pos));
surfaceScalarField rho_neg(interpolate(rho, neg));
surfaceVectorField rhoU_pos(interpolate(rhoU, pos, U.name()));
surfaceVectorField rhoU_neg(interpolate(rhoU, neg, U.name()));
volScalarField rPsi("rPsi", 1.0/psi);
surfaceScalarField rPsi_pos(interpolate(rPsi, pos, T.name()));
surfaceScalarField rPsi_neg(interpolate(rPsi, neg, T.name()));
surfaceScalarField e_pos(interpolate(e, pos, T.name()));
surfaceScalarField e_neg(interpolate(e, neg, T.name()));
surfaceVectorField U_pos("U_pos", rhoU_pos/rho_pos);
surfaceVectorField U_neg("U_neg", rhoU_neg/rho_neg);
surfaceScalarField p_pos("p_pos", rho_pos*rPsi_pos);
surfaceScalarField p_neg("p_neg", rho_neg*rPsi_neg);
surfaceScalarField phiv_pos("phiv_pos", U_pos & mesh.Sf());
surfaceScalarField phiv_neg("phiv_neg", U_neg & mesh.Sf());
// Make fluxes relative to mesh-motion
if (mesh.moving())
{
phiv_pos -= mesh.phi();
phiv_neg -= mesh.phi();
}
// Note: extracted out the orientation so becomes unoriented
phiv_pos.setOriented(false);
phiv_neg.setOriented(false);
volScalarField c("c", sqrt(thermo.Cp()/thermo.Cv()*rPsi));
surfaceScalarField cSf_pos
(
"cSf_pos",
interpolate(c, pos, T.name())*mesh.magSf()
);
surfaceScalarField cSf_neg
(
"cSf_neg",
interpolate(c, neg, T.name())*mesh.magSf()
);
surfaceScalarField ap
(
"ap",
max(max(phiv_pos + cSf_pos, phiv_neg + cSf_neg), v_zero)
);
surfaceScalarField am
(
"am",
min(min(phiv_pos - cSf_pos, phiv_neg - cSf_neg), v_zero)
);
surfaceScalarField a_pos("a_pos", ap/(ap - am));
surfaceScalarField amaxSf("amaxSf", max(mag(am), mag(ap)));
surfaceScalarField aSf("aSf", am*a_pos);
if (fluxScheme == "Tadmor")
{
aSf = -0.5*amaxSf;
a_pos = 0.5;
}
surfaceScalarField a_neg("a_neg", 1.0 - a_pos);
phiv_pos *= a_pos;
phiv_neg *= a_neg;
surfaceScalarField aphiv_pos("aphiv_pos", phiv_pos - aSf);
surfaceScalarField aphiv_neg("aphiv_neg", phiv_neg + aSf);
// Reuse amaxSf for the maximum positive and negative fluxes
// estimated by the central scheme
amaxSf = max(mag(aphiv_pos), mag(aphiv_neg));
#include "centralCourantNo.H"
phi = aphiv_pos*rho_pos + aphiv_neg*rho_neg;
surfaceVectorField phiU(aphiv_pos*rhoU_pos + aphiv_neg*rhoU_neg);
// Note: reassembled orientation from the pos and neg parts so becomes
// oriented
phiU.setOriented(true);
surfaceVectorField phiUp(phiU + (a_pos*p_pos + a_neg*p_neg)*mesh.Sf());
surfaceScalarField phiEp
(
"phiEp",
aphiv_pos*(rho_pos*(e_pos + 0.5*magSqr(U_pos)) + p_pos)
+ aphiv_neg*(rho_neg*(e_neg + 0.5*magSqr(U_neg)) + p_neg)
+ aSf*p_pos - aSf*p_neg
);
// Make flux for pressure-work absolute
if (mesh.moving())
{
surfaceScalarField phia(a_pos*p_pos + a_neg*p_neg);
phia.setOriented(true);
phiEp += mesh.phi()*phia;
}
volScalarField muEff("muEff", turbulence->muEff());
volTensorField tauMC("tauMC", muEff*dev2(Foam::T(fvc::grad(U))));
// --- Solve density
solve(fvm::ddt(rho) + fvc::div(phi));
// --- Solve momentum
solve(fvm::ddt(rhoU) + fvc::div(phiUp));
U.ref() =
rhoU()
/rho();
U.correctBoundaryConditions();
rhoU.boundaryFieldRef() == rho.boundaryField()*U.boundaryField();
if (!inviscid)
{
solve
(
fvm::ddt(rho, U) - fvc::ddt(rho, U)
- fvm::laplacian(muEff, U)
- fvc::div(tauMC)
);
rhoU = rho*U;
}
// --- Solve energy
surfaceScalarField sigmaDotU
(
"sigmaDotU",
(
fvc::interpolate(muEff)*mesh.magSf()*fvc::snGrad(U)
+ fvc::dotInterpolate(mesh.Sf(), tauMC)
)
& (a_pos*U_pos + a_neg*U_neg)
);
solve
(
fvm::ddt(rhoE)
+ fvc::div(phiEp)
- fvc::div(sigmaDotU)
);
e = rhoE/rho - 0.5*magSqr(U);
e.correctBoundaryConditions();
thermo.correct();
rhoE.boundaryFieldRef() ==
rho.boundaryField()*
(
e.boundaryField() + 0.5*magSqr(U.boundaryField())
);
if (!inviscid)
{
solve
(
fvm::ddt(rho, e) - fvc::ddt(rho, e)
- fvm::laplacian(turbulence->alphaEff(), e)
);
thermo.correct();
rhoE = rho*(e + 0.5*magSqr(U));
}
p.ref() =
rho()
/psi();
p.correctBoundaryConditions();
rho.boundaryFieldRef() == psi.boundaryField()*p.boundaryField();
turbulence->correct();
runTime.write();
runTime.printExecutionTime(Info);
}
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -6,7 +6,6 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -31,14 +30,12 @@ Group
grpCompressibleSolvers grpCompressibleSolvers
Description Description
Density-based compressible flow solver based on Density-based compressible flow solver based on central-upwind
central-upwind schemes of Kurganov and Tadmor with schemes of Kurganov and Tadmor.
support for mesh-motion and topology changes.
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "fvCFD.H" #include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "psiThermo.H" #include "psiThermo.H"
#include "turbulentFluidThermoModel.H" #include "turbulentFluidThermoModel.H"
#include "fixedRhoFvPatchScalarField.H" #include "fixedRhoFvPatchScalarField.H"
@ -52,9 +49,8 @@ int main(int argc, char *argv[])
{ {
argList::addNote argList::addNote
( (
"Density-based compressible flow solver based on" "Density-based compressible flow solver based on central-upwind"
" central-upwind schemes of Kurganov and Tadmor with" " schemes of Kurganov and Tadmor."
" support for mesh-motion and topology changes."
); );
#define NO_CONTROL #define NO_CONTROL
@ -63,7 +59,7 @@ int main(int argc, char *argv[])
#include "addCheckCaseOptions.H" #include "addCheckCaseOptions.H"
#include "setRootCaseLists.H" #include "setRootCaseLists.H"
#include "createTime.H" #include "createTime.H"
#include "createDynamicFvMesh.H" #include "createMesh.H"
#include "createFields.H" #include "createFields.H"
#include "createFieldRefs.H" #include "createFieldRefs.H"
#include "createTimeControls.H" #include "createTimeControls.H"
@ -84,18 +80,6 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readTimeControls.H"
if (!LTS)
{
#include "setDeltaT.H"
++runTime;
// Do any mesh changes
mesh.update();
}
// --- Directed interpolation of primitive fields onto faces // --- Directed interpolation of primitive fields onto faces
surfaceScalarField rho_pos(interpolate(rho, pos)); surfaceScalarField rho_pos(interpolate(rho, pos));
@ -123,15 +107,6 @@ int main(int argc, char *argv[])
surfaceScalarField phiv_neg("phiv_neg", U_neg & mesh.Sf()); surfaceScalarField phiv_neg("phiv_neg", U_neg & mesh.Sf());
phiv_neg.setOriented(false); phiv_neg.setOriented(false);
// Make fluxes relative to mesh-motion
if (mesh.moving())
{
surfaceScalarField meshPhi(mesh.phi());
meshPhi.setOriented(false);
phiv_pos -= meshPhi;
phiv_neg -= meshPhi;
}
volScalarField c("c", sqrt(thermo.Cp()/thermo.Cv()*rPsi)); volScalarField c("c", sqrt(thermo.Cp()/thermo.Cv()*rPsi));
surfaceScalarField cSf_pos surfaceScalarField cSf_pos
( (
@ -182,13 +157,18 @@ int main(int argc, char *argv[])
amaxSf = max(mag(aphiv_pos), mag(aphiv_neg)); amaxSf = max(mag(aphiv_pos), mag(aphiv_neg));
#include "centralCourantNo.H" #include "centralCourantNo.H"
#include "readTimeControls.H"
if (LTS) if (LTS)
{ {
#include "setRDeltaT.H" #include "setRDeltaT.H"
++runTime;
} }
else
{
#include "setDeltaT.H"
}
++runTime;
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
@ -209,14 +189,6 @@ int main(int argc, char *argv[])
+ aSf*p_pos - aSf*p_neg + aSf*p_pos - aSf*p_neg
); );
// Make flux for pressure-work absolute
if (mesh.moving())
{
surfaceScalarField meshPhi(mesh.phi());
meshPhi.setOriented(false);
phiEp += meshPhi*(a_pos*p_pos + a_neg*p_neg);
}
volScalarField muEff("muEff", turbulence->muEff()); volScalarField muEff("muEff", turbulence->muEff());
volTensorField tauMC("tauMC", muEff*dev2(Foam::T(fvc::grad(U)))); volTensorField tauMC("tauMC", muEff*dev2(Foam::T(fvc::grad(U))));

View File

@ -6,7 +6,7 @@ EXE_INC = \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
EXE_LIBS = \ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
@ -17,5 +17,4 @@ EXE_LIBS = \
-lfluidThermophysicalModels \ -lfluidThermophysicalModels \
-lspecie \ -lspecie \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels
-lthermoTools

View File

@ -8,8 +8,7 @@ EXE_INC = \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude
-I$(LIB_SRC)/regionFaModels\lnInclude
EXE_LIBS = \ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
@ -20,10 +19,8 @@ EXE_LIBS = \
-lspecie \ -lspecie \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-ldynamicMesh \ -ldynamicMesh \
-ldynamicFvMesh \ -ldynamicFvMesh \
-ltopoChangerFvMesh \ -ltopoChangerFvMesh \
-lsampling \ -lsampling \
-latmosphericModels \ -latmosphericModels
-lregionFaModels

View File

@ -21,7 +21,6 @@ EXE_LIBS = \
-lspecie \ -lspecie \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-ldynamicFvMesh \ -ldynamicFvMesh \
-ltopoChangerFvMesh \ -ltopoChangerFvMesh \
-loverset -loverset

View File

@ -49,7 +49,7 @@
); );
} }
// Update the boundary values of the reciprocal time-step // Update tho boundary values of the reciprocal time-step
rDeltaT.correctBoundaryConditions(); rDeltaT.correctBoundaryConditions();
Info<< "Flow time scale min/max = " Info<< "Flow time scale min/max = "

View File

@ -7,7 +7,6 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/regionFaModels\lnInclude
EXE_LIBS = \ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
@ -19,6 +18,4 @@ EXE_LIBS = \
-lspecie \ -lspecie \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \ -latmosphericModels
-latmosphericModels \
-lregionFaModels

View File

@ -0,0 +1,26 @@
{
volScalarField& he = thermo.he();
fvScalarMatrix EEqn
(
fvm::div(phi, he)
+ (
he.name() == "e"
? fvc::div(phi, volScalarField("Ekp", 0.5*magSqr(U) + p/rho))
: fvc::div(phi, volScalarField("K", 0.5*magSqr(U)))
)
- fvm::laplacian(turbulence->alphaEff(), he)
==
fvOptions(rho, he)
);
EEqn.relax();
fvOptions.constrain(EEqn);
EEqn.solve();
fvOptions.correct(he);
thermo.correct();
}

View File

@ -0,0 +1,3 @@
SRFrhoSimpleFoam.C
EXE = $(FOAM_APPBIN)/SRFrhoSimpleFoam

View File

@ -0,0 +1,21 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/cfdTools \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
EXE_LIBS = \
-lfiniteVolume \
-lfvOptions \
-lmeshTools \
-lsampling \
-lcompressibleTransportModels \
-lfluidThermophysicalModels \
-lspecie \
-lturbulenceModels \
-lcompressibleTurbulenceModels \
-latmosphericModels

View File

@ -0,0 +1,99 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
-------------------------------------------------------------------------------
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/>.
Application
SRFSimpleFoam
Group
grpIncompressibleSolvers
Description
Steady-state solver for incompressible, turbulent flow of non-Newtonian
fluids in a single rotating frame.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "fluidThermo.H"
#include "turbulentFluidThermoModel.H"
#include "simpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
#include "SRFModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
argList::addNote
(
"Steady-state solver for compressible, turbulent flow"
" of non-Newtonian fluids in a single rotating frame."
);
#include "postProcess.H"
#include "addCheckCaseOptions.H"
#include "setRootCaseLists.H"
#include "createTime.H"
#include "createMesh.H"
#include "createControl.H"
#include "createFields.H"
#include "createFieldRefs.H"
#include "initContinuityErrs.H"
turbulence->validate();
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl;
while (simple.loop())
{
Info<< "Time = " << runTime.timeName() << nl << endl;
// --- Pressure-velocity SIMPLE corrector
{
#include "UrelEqn.H"
#include "EEqn.H"
#include "pEqn.H"
}
U = Urel + SRF->U();
turbulence->correct();
runTime.write();
runTime.printExecutionTime(Info);
}
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -0,0 +1,22 @@
// Relative momentum predictor
tmp<fvVectorMatrix> tUrelEqn
(
fvm::div(phi, Urel)
+ turbulence->divDevRhoReff(Urel)
+ rho*SRF->Su()
==
fvOptions(rho, Urel)
);
fvVectorMatrix& UrelEqn = tUrelEqn.ref();
UrelEqn.relax();
fvOptions.constrain(UrelEqn);
if (simple.momentumPredictor())
{
solve(UrelEqn == -fvc::grad(p));
fvOptions.correct(Urel);
}

View File

@ -0,0 +1 @@
const volScalarField& psi = thermo.psi();

View File

@ -0,0 +1,89 @@
Info<< "Reading thermophysical properties\n" << endl;
autoPtr<fluidThermo> pThermo
(
fluidThermo::New(mesh)
);
fluidThermo& thermo = pThermo();
thermo.validate(args.executable(), "h", "e");
volScalarField& p = thermo.p();
volScalarField rho
(
IOobject
(
"rho",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
thermo.rho()
);
Info<< "Reading field Urel\n" << endl;
volVectorField Urel
(
IOobject
(
"Urel",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
Info<< "Reading/calculating face flux field phi\n" << endl;
surfaceScalarField phi
(
IOobject
(
"phi",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
linearInterpolate(rho*Urel) & mesh.Sf()
);
pressureControl pressureControl(p, rho, simple.dict());
mesh.setFluxRequired(p.name());
Info<< "Creating SRF model\n" << endl;
autoPtr<SRF::SRFModel> SRF(SRF::SRFModel::New(Urel));
// Construct the absolute velocity
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
Urel + SRF->U()
);
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence
(
compressible::turbulenceModel::New
(
rho,
U,
phi,
thermo
)
);
dimensionedScalar initialMass = fvc::domainIntegrate(rho);
#include "createFvOptions.H"

View File

@ -0,0 +1,109 @@
volScalarField rAUrel(1.0/UrelEqn.A());
surfaceScalarField rhorAUrelf("rhorAUf", fvc::interpolate(rho*rAUrel));
volVectorField HbyA(constrainHbyA(rAUrel*UrelEqn.H(), Urel, p));
tUrelEqn.clear();
bool closedVolume = false;
surfaceScalarField phiHbyA("phiHbyA", fvc::interpolate(rho)*fvc::flux(HbyA));
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, Urel, phiHbyA, rhorAUrelf);
if (simple.transonic())
{
surfaceScalarField phid
(
"phid",
(fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
);
phiHbyA -= fvc::interpolate(psi*p)*phiHbyA/fvc::interpolate(rho);
while (simple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvc::div(phiHbyA)
+ fvm::div(phid, p)
- fvm::laplacian(rhorAUrelf, p)
==
fvOptions(psi, p, rho.name())
);
// Relax the pressure equation to ensure diagonal-dominance
pEqn.relax();
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
else
{
closedVolume = adjustPhi(phiHbyA, Urel, p);
while (simple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvc::div(phiHbyA)
- fvm::laplacian(rhorAUrelf, p)
==
fvOptions(psi, p, rho.name())
);
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
#include "incompressible/continuityErrs.H"
// Explicitly relax pressure for momentum corrector
p.relax();
Urel = HbyA - rAUrel*fvc::grad(p);
Urel.correctBoundaryConditions();
fvOptions.correct(Urel);
bool pLimited = pressureControl.limit(p);
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if (closedVolume)
{
p += (initialMass - fvc::domainIntegrate(psi*p))
/fvc::domainIntegrate(psi);
}
if (pLimited || closedVolume)
{
p.correctBoundaryConditions();
}
rho = thermo.rho();
if (!simple.transonic())
{
rho.relax();
}

View File

@ -21,7 +21,6 @@ EXE_LIBS = \
-lspecie \ -lspecie \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-ldynamicFvMesh \ -ldynamicFvMesh \
-ltopoChangerFvMesh \ -ltopoChangerFvMesh \
-lsampling \ -lsampling \

View File

@ -1,52 +1,22 @@
/*---------------------------------------------------------------------------*\ Info<< "Create dynamic mesh for time = "
========= | << runTime.timeName() << nl << endl;
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
Description autoPtr<dynamicFvMesh> meshPtr
Create a dynamicFvMesh, with init()
Required Variables
- runTime [Time]
Provided Variables
- mesh [dynamicFvMesh], meshPtr
\*---------------------------------------------------------------------------*/
Foam::autoPtr<Foam::dynamicFvMesh> meshPtr;
{
Foam::Info << "Create dynamic mesh for time = "
<< runTime.timeName() << Foam::nl;
meshPtr = dynamicFvMesh::New
( (
IOobject dynamicFvMesh::New
( (
polyMesh::defaultRegion, IOobject
runTime.timeName(), (
runTime, dynamicFvMesh::defaultRegion,
IOobject::MUST_READ runTime.timeName(),
runTime,
IOobject::MUST_READ
)
) )
); );
}
dynamicFvMesh& mesh = meshPtr();
dynamicFvMesh& mesh = meshPtr(); // Calculate initial mesh-to-mesh mapping. Note that this should be
// done under the hood, e.g. as a MeshObject
// Calculate initial mesh-to-mesh mapping. Note that this should be mesh.update();
// done under the hood, e.g. as a MeshObject
mesh.update();
Foam::Info << Foam::endl;
// ************************************************************************* //

View File

@ -18,5 +18,4 @@ EXE_LIBS = \
-lfluidThermophysicalModels \ -lfluidThermophysicalModels \
-lspecie \ -lspecie \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels
-lthermoTools

View File

@ -16,5 +16,4 @@ EXE_LIBS = \
-lfluidThermophysicalModels \ -lfluidThermophysicalModels \
-lspecie \ -lspecie \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels
-lthermoTools

View File

@ -21,7 +21,6 @@ EXE_LIBS = \
-lspecie \ -lspecie \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-ldynamicMesh \ -ldynamicMesh \
-ldynamicFvMesh \ -ldynamicFvMesh \
-ltopoChangerFvMesh \ -ltopoChangerFvMesh \

View File

@ -1,11 +1,8 @@
EXE_INC = \ EXE_INC = \
-I../buoyantBoussinesqSimpleFoam \ -I../buoyantBoussinesqSimpleFoam \
-I../../incompressible/pimpleFoam \
-I$(LIB_SRC)/sampling/lnInclude \ -I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \
-I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels \
@ -16,8 +13,6 @@ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
-lfvOptions \ -lfvOptions \
-lmeshTools \ -lmeshTools \
-ldynamicMesh \
-ldynamicFvMesh \
-lsampling \ -lsampling \
-lturbulenceModels \ -lturbulenceModels \
-lincompressibleTurbulenceModels \ -lincompressibleTurbulenceModels \

View File

@ -6,7 +6,6 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -31,8 +30,7 @@ Group
grpHeatTransferSolvers grpHeatTransferSolvers
Description Description
Transient solver for buoyant, turbulent flow of incompressible fluids, Transient solver for buoyant, turbulent flow of incompressible fluids.
with optional mesh motion and mesh topology changes.
Uses the Boussinesq approximation: Uses the Boussinesq approximation:
\f[ \f[
@ -53,11 +51,9 @@ Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "fvCFD.H" #include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "singlePhaseTransportModel.H" #include "singlePhaseTransportModel.H"
#include "turbulentTransportModel.H" #include "turbulentTransportModel.H"
#include "radiationModel.H" #include "radiationModel.H"
#include "CorrectPhi.H"
#include "fvOptions.H" #include "fvOptions.H"
#include "pimpleControl.H" #include "pimpleControl.H"
@ -68,8 +64,7 @@ int main(int argc, char *argv[])
argList::addNote argList::addNote
( (
"Transient solver for buoyant, turbulent flow" "Transient solver for buoyant, turbulent flow"
" of incompressible fluids, with optional mesh" " of incompressible fluids.\n"
" motion and mesh topology changes.\n"
"Uses the Boussinesq approximation." "Uses the Boussinesq approximation."
); );
@ -78,10 +73,10 @@ int main(int argc, char *argv[])
#include "addCheckCaseOptions.H" #include "addCheckCaseOptions.H"
#include "setRootCaseLists.H" #include "setRootCaseLists.H"
#include "createTime.H" #include "createTime.H"
#include "createDynamicFvMesh.H" #include "createMesh.H"
#include "createDyMControls.H" #include "createControl.H"
#include "createFields.H" #include "createFields.H"
#include "createUfIfPresent.H" #include "createTimeControls.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "setInitialDeltaT.H" #include "setInitialDeltaT.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
@ -94,7 +89,7 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readDyMControls.H" #include "readTimeControls.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
@ -105,34 +100,6 @@ int main(int argc, char *argv[])
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop
while (pimple.loop()) while (pimple.loop())
{ {
if (pimple.firstIter() || moveMeshOuterCorrectors)
{
// Do any mesh changes
mesh.controlledUpdate();
if (mesh.changing())
{
MRF.update();
if (correctPhi)
{
// Calculate absolute flux
// from the mapped surface velocity
phi = mesh.Sf() & Uf();
#include "correctPhi.H"
// Make the flux relative to the mesh motion
fvc::makeRelative(phi, U);
}
if (checkMeshCourantNo)
{
#include "meshCourantNo.H"
}
}
}
#include "UEqn.H" #include "UEqn.H"
#include "TEqn.H" #include "TEqn.H"

View File

@ -42,12 +42,6 @@
U = HbyA + rAU*fvc::reconstruct((phig - p_rghEqn.flux())/rAUf); U = HbyA + rAU*fvc::reconstruct((phig - p_rghEqn.flux())/rAUf);
U.correctBoundaryConditions(); U.correctBoundaryConditions();
fvOptions.correct(U); fvOptions.correct(U);
// Correct Uf if the mesh is moving
fvc::correctUf(Uf, U, phi);
// Make the fluxes relative to the mesh motion
fvc::makeRelative(phi, U);
} }
} }

View File

@ -1,5 +1,4 @@
EXE_INC = \ EXE_INC = \
-I../../compressible/rhoPimpleFoam \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \ -I$(LIB_SRC)/sampling/lnInclude \
@ -7,10 +6,7 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/regionFaModels\lnInclude
EXE_LIBS = \ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
@ -23,9 +19,4 @@ EXE_LIBS = \
-lspecie \ -lspecie \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \ -latmosphericModels
-latmosphericModels \
-ldynamicMesh \
-ldynamicFvMesh \
-ltopoChangerFvMesh \
-lregionFaModels

View File

@ -6,7 +6,6 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -31,9 +30,8 @@ Group
grpHeatTransferSolvers grpHeatTransferSolvers
Description Description
Transient solver for buoyant, turbulent flow of compressible fluids Transient solver for buoyant, turbulent flow of compressible fluids for
for ventilation and heat-transfer, with optional mesh motion ventilation and heat-transfer.
and mesh topology changes.
Turbulence is modelled using a run-time selectable compressible RAS or Turbulence is modelled using a run-time selectable compressible RAS or
LES model. LES model.
@ -41,16 +39,12 @@ Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "fvCFD.H" #include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "rhoThermo.H" #include "rhoThermo.H"
#include "turbulentFluidThermoModel.H" #include "turbulentFluidThermoModel.H"
#include "radiationModel.H" #include "radiationModel.H"
#include "CorrectPhi.H"
#include "fvOptions.H" #include "fvOptions.H"
#include "pimpleControl.H" #include "pimpleControl.H"
#include "pressureControl.H" #include "pressureControl.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -59,8 +53,7 @@ int main(int argc, char *argv[])
argList::addNote argList::addNote
( (
"Transient solver for buoyant, turbulent fluid flow" "Transient solver for buoyant, turbulent fluid flow"
" of compressible fluids, including radiation," " of compressible fluids, including radiation."
" with optional mesh motion and mesh topology changes."
); );
#include "postProcess.H" #include "postProcess.H"
@ -68,105 +61,36 @@ int main(int argc, char *argv[])
#include "addCheckCaseOptions.H" #include "addCheckCaseOptions.H"
#include "setRootCaseLists.H" #include "setRootCaseLists.H"
#include "createTime.H" #include "createTime.H"
#include "createDynamicFvMesh.H" #include "createMesh.H"
#include "createDyMControls.H" #include "createControl.H"
#include "initContinuityErrs.H"
#include "createFields.H" #include "createFields.H"
#include "createFieldRefs.H" #include "createFieldRefs.H"
#include "createRhoUfIfPresent.H" #include "initContinuityErrs.H"
#include "createTimeControls.H"
#include "compressibleCourantNo.H"
#include "setInitialDeltaT.H"
turbulence->validate(); turbulence->validate();
if (!LTS)
{
#include "compressibleCourantNo.H"
#include "setInitialDeltaT.H"
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.run()) while (runTime.run())
{ {
#include "readDyMControls.H" #include "readTimeControls.H"
#include "compressibleCourantNo.H"
// Store divrhoU from the previous mesh #include "setDeltaT.H"
// so that it can be mapped and used in correctPhi
// to ensure the corrected phi has the same divergence
autoPtr<volScalarField> divrhoU;
if (correctPhi)
{
divrhoU.reset
(
new volScalarField
(
"divrhoU",
fvc::div(fvc::absolute(phi, rho, U))
)
);
}
if (LTS)
{
#include "setRDeltaT.H"
}
else
{
#include "compressibleCourantNo.H"
#include "setDeltaT.H"
}
++runTime; ++runTime;
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
#include "rhoEqn.H"
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop
while (pimple.loop()) while (pimple.loop())
{ {
if (pimple.firstIter() || moveMeshOuterCorrectors)
{
// Store momentum to set rhoUf for introduced faces.
autoPtr<volVectorField> rhoU;
if (rhoUf.valid())
{
rhoU.reset(new volVectorField("rhoU", rho*U));
}
// Do any mesh changes
mesh.update();
if (mesh.changing())
{
gh = (g & mesh.C()) - ghRef;
ghf = (g & mesh.Cf()) - ghRef;
MRF.update();
if (correctPhi)
{
// Calculate absolute flux
// from the mapped surface velocity
phi = mesh.Sf() & rhoUf();
#include "correctPhi.H"
// Make the fluxes relative to the mesh-motion
fvc::makeRelative(phi, rho, U);
}
if (checkMeshCourantNo)
{
#include "meshCourantNo.H"
}
}
}
if (pimple.firstIter() && !pimple.SIMPLErho())
{
#include "rhoEqn.H"
}
#include "UEqn.H" #include "UEqn.H"
#include "EEqn.H" #include "EEqn.H"

View File

@ -1,5 +1,3 @@
#include "createRDeltaT.H"
Info<< "Reading thermophysical properties\n" << endl; Info<< "Reading thermophysical properties\n" << endl;
autoPtr<rhoThermo> pThermo(rhoThermo::New(mesh)); autoPtr<rhoThermo> pThermo(rhoThermo::New(mesh));

View File

@ -24,7 +24,6 @@ EXE_LIBS = \
-lspecie \ -lspecie \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-latmosphericModels \ -latmosphericModels \
-loverset \ -loverset \
-ldynamicFvMesh \ -ldynamicFvMesh \

View File

@ -28,8 +28,6 @@ MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency // Update the pressure BCs to ensure flux consistency
constrainPressure(p_rgh, rho, U, phiHbyA, rhorAUf, MRF); constrainPressure(p_rgh, rho, U, phiHbyA, rhorAUf, MRF);
fvc::makeRelative(phiHbyA, rho, U);
fvScalarMatrix p_rghDDtEqn fvScalarMatrix p_rghDDtEqn
( (
fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh)) fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
@ -106,15 +104,7 @@ else
rho = thermo.rho(); rho = thermo.rho();
// Correct rhoUf if the mesh is moving
fvc::correctRhoUf(rhoUf, rho, U, phi);
if (thermo.dpdt()) if (thermo.dpdt())
{ {
dpdt = fvc::ddt(p); dpdt = fvc::ddt(p);
if (mesh.moving())
{
dpdt -= fvc::div(fvc::meshPhi(rho, U), p);
}
} }

View File

@ -6,8 +6,7 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude
-I$(LIB_SRC)/regionFaModels\lnInclude
EXE_LIBS = \ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
@ -20,6 +19,4 @@ EXE_LIBS = \
-lradiationModels \ -lradiationModels \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \ -latmosphericModels
-latmosphericModels \
-lregionFaModels

View File

@ -18,9 +18,7 @@ EXE_INC = \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \ -I$(LIB_SRC)/regionModels/regionModel/lnInclude
-I$(LIB_SRC)/regionFaModels\lnInclude
EXE_LIBS = \ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
@ -37,7 +35,5 @@ EXE_LIBS = \
-lcombustionModels \ -lcombustionModels \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-lradiationModels \ -lradiationModels \
-lregionModels \ -lregionModels
-lregionFaModels

View File

@ -6,7 +6,7 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2017-2019,2022 OpenCFD Ltd. Copyright (C) 2017 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -54,7 +54,6 @@ Description
#include "loopControl.H" #include "loopControl.H"
#include "pressureControl.H" #include "pressureControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[]) int main(int argc, char *argv[])
@ -70,7 +69,6 @@ int main(int argc, char *argv[])
#define CREATE_MESH createMeshesPostProcess.H #define CREATE_MESH createMeshesPostProcess.H
#include "postProcess.H" #include "postProcess.H"
#include "addCheckCaseOptions.H"
#include "setRootCaseLists.H" #include "setRootCaseLists.H"
#include "createTime.H" #include "createTime.H"
#include "createMeshes.H" #include "createMeshes.H"
@ -82,8 +80,6 @@ int main(int argc, char *argv[])
#include "solidRegionDiffusionNo.H" #include "solidRegionDiffusionNo.H"
#include "setInitialMultiRegionDeltaT.H" #include "setInitialMultiRegionDeltaT.H"
#include "createCoupledRegions.H"
while (runTime.run()) while (runTime.run())
{ {
#include "readTimeControls.H" #include "readTimeControls.H"
@ -113,6 +109,8 @@ int main(int argc, char *argv[])
forAll(fluidRegions, i) forAll(fluidRegions, i)
{ {
Info<< "\nSolving for fluid region "
<< fluidRegions[i].name() << endl;
#include "setRegionFluidFields.H" #include "setRegionFluidFields.H"
#include "readFluidMultiRegionPIMPLEControls.H" #include "readFluidMultiRegionPIMPLEControls.H"
#include "solveFluid.H" #include "solveFluid.H"
@ -120,41 +118,13 @@ int main(int argc, char *argv[])
forAll(solidRegions, i) forAll(solidRegions, i)
{ {
Info<< "\nSolving for solid region "
<< solidRegions[i].name() << endl;
#include "setRegionSolidFields.H" #include "setRegionSolidFields.H"
#include "readSolidMultiRegionPIMPLEControls.H" #include "readSolidMultiRegionPIMPLEControls.H"
#include "solveSolid.H" #include "solveSolid.H"
} }
if (coupled)
{
Info<< "\nSolving energy coupled regions " << endl;
fvMatrixAssemblyPtr->solve();
#include "correctThermos.H"
forAll(fluidRegions, i)
{
#include "setRegionFluidFields.H"
#include "readFluidMultiRegionPIMPLEControls.H"
if (!frozenFlow)
{
Info<< "\nSolving for fluid region "
<< fluidRegions[i].name() << endl;
// --- PISO loop
for (int corr=0; corr<nCorr; corr++)
{
#include "pEqn.H"
}
turbulence.correct();
}
rho = thermo.rho();
Info<< "Min/max T:" << min(thermo.T()).value() << ' '
<< max(thermo.T()).value() << endl;
}
fvMatrixAssemblyPtr->clear();
}
// Additional loops for energy solution only // Additional loops for energy solution only
if (!oCorr && nOuterCorr > 1) if (!oCorr && nOuterCorr > 1)
{ {
@ -182,21 +152,6 @@ int main(int argc, char *argv[])
#include "readSolidMultiRegionPIMPLEControls.H" #include "readSolidMultiRegionPIMPLEControls.H"
#include "solveSolid.H" #include "solveSolid.H"
} }
if (coupled)
{
Info<< "\nSolving energy coupled regions " << endl;
fvMatrixAssemblyPtr->solve();
#include "correctThermos.H"
forAll(fluidRegions, i)
{
#include "setRegionFluidFields.H"
rho = thermo.rho();
}
fvMatrixAssemblyPtr->clear();
}
} }
} }
} }

View File

@ -3,7 +3,6 @@ EXE_INC = \
-I./fluid \ -I./fluid \
-I./solid \ -I./solid \
-I../solid \ -I../solid \
-I./../include \
-I$(LIB_SRC)/finiteVolume/cfdTools \ -I$(LIB_SRC)/finiteVolume/cfdTools \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \
@ -30,11 +29,9 @@ EXE_LIBS = \
-lspecie \ -lspecie \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \
-lthermoTools \
-lradiationModels \ -lradiationModels \
-lfvOptions \ -lfvOptions \
-lfaOptions \ -lfaOptions \
-lregionModels \ -lregionModels \
-lsampling \ -lsampling \
-lregionFaModels -lregionFaModels

View File

@ -6,7 +6,7 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2017-2019,2022 OpenCFD Ltd. Copyright (C) 2017 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -62,12 +62,10 @@ int main(int argc, char *argv[])
#define CREATE_MESH createMeshesPostProcess.H #define CREATE_MESH createMeshesPostProcess.H
#include "postProcess.H" #include "postProcess.H"
#include "addCheckCaseOptions.H"
#include "setRootCaseLists.H" #include "setRootCaseLists.H"
#include "createTime.H" #include "createTime.H"
#include "createMeshes.H" #include "createMeshes.H"
#include "createFields.H" #include "createFields.H"
#include "createCoupledRegions.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
while (runTime.loop()) while (runTime.loop())
@ -85,32 +83,13 @@ int main(int argc, char *argv[])
forAll(solidRegions, i) forAll(solidRegions, i)
{ {
Info<< "\nSolving for solid region "
<< solidRegions[i].name() << endl;
#include "setRegionSolidFields.H" #include "setRegionSolidFields.H"
#include "readSolidMultiRegionSIMPLEControls.H" #include "readSolidMultiRegionSIMPLEControls.H"
#include "solveSolid.H" #include "solveSolid.H"
} }
if (coupled)
{
Info<< "\nSolving energy coupled regions" << endl;
fvMatrixAssemblyPtr->solve();
#include "correctThermos.H"
forAll(fluidRegions, i)
{
#include "setRegionFluidFields.H"
#include "readSolidMultiRegionSIMPLEControls.H"
if (!frozenFlow)
{
#include "pEqn.H"
turb.correct();
}
}
fvMatrixAssemblyPtr->clear();
}
// Additional loops for energy solution only // Additional loops for energy solution only
{ {
loopControl looping(runTime, "SIMPLE", "energyCoupling"); loopControl looping(runTime, "SIMPLE", "energyCoupling");
@ -137,15 +116,6 @@ int main(int argc, char *argv[])
#include "readSolidMultiRegionSIMPLEControls.H" #include "readSolidMultiRegionSIMPLEControls.H"
#include "solveSolid.H" #include "solveSolid.H"
} }
if (coupled)
{
Info<< "\nSolving energy coupled regions.. " << endl;
fvMatrixAssemblyPtr->solve();
#include "correctThermos.H"
fvMatrixAssemblyPtr->clear();
}
} }
} }

View File

@ -20,20 +20,13 @@
fvOptions.constrain(EEqn); fvOptions.constrain(EEqn);
if (coupled) EEqn.solve();
{
fvMatrixAssemblyPtr->addFvMatrix(EEqn);
}
else
{
EEqn.solve();
fvOptions.correct(he); fvOptions.correct(he);
thermo.correct(); thermo.correct();
rad.correct(); rad.correct();
Info<< "Min/max T:" << min(thermo.T()).value() << ' ' Info<< "Min/max T:" << min(thermo.T()).value() << ' '
<< max(thermo.T()).value() << endl; << max(thermo.T()).value() << endl;
}
} }

View File

@ -2,7 +2,7 @@
MRF.correctBoundaryVelocity(U); MRF.correctBoundaryVelocity(U);
UEqn = tmp<fvVectorMatrix> tUEqn
( (
fvm::div(phi, U) fvm::div(phi, U)
+ MRF.DDt(rho, U) + MRF.DDt(rho, U)
@ -10,6 +10,7 @@
== ==
fvOptions(rho, U) fvOptions(rho, U)
); );
fvVectorMatrix& UEqn = tUEqn.ref();
UEqn.relax(); UEqn.relax();

View File

@ -21,8 +21,6 @@ PtrList<dimensionedScalar> rhoMin(fluidRegions.size());
PtrList<IOMRFZoneList> MRFfluid(fluidRegions.size()); PtrList<IOMRFZoneList> MRFfluid(fluidRegions.size());
PtrList<fv::options> fluidFvOptions(fluidRegions.size()); PtrList<fv::options> fluidFvOptions(fluidRegions.size());
PtrList<fvVectorMatrix> UEqFluid(fluidRegions.size());
const uniformDimensionedVectorField& g = meshObjects::gravity::New(runTime); const uniformDimensionedVectorField& g = meshObjects::gravity::New(runTime);
// Populate fluid field pointer lists // Populate fluid field pointer lists
@ -224,11 +222,5 @@ forAll(fluidRegions, i)
new fv::options(fluidRegions[i]) new fv::options(fluidRegions[i])
); );
UEqFluid.set
(
i,
new fvVectorMatrix(UFluid[i], dimForce)
);
turbulence[i].validate(); turbulence[i].validate();
} }

View File

@ -4,61 +4,21 @@
forAll(fluidNames, i) forAll(fluidNames, i)
{ {
if (args.dryRun() || args.found("dry-run-write")) Info<< "Create fluid mesh for region " << fluidNames[i]
{ << " for time = " << runTime.timeName() << nl << endl;
Info
<< "Operating in 'dry-run' mode:"
<< " case will run for 1 time step. "
<< "All checks assumed OK on a clean exit" << endl;
FieldBase::allowConstructFromLargerSize = true; fluidRegions.set
(
// Create a simplified 1D mesh and attempt to re-create boundary i,
// conditions new fvMesh
fluidRegions.set
( (
i, IOobject
new simplifiedMeshes::columnFvMesh(runTime, fluidNames[i])
);
// Stop after 1 iteration of the simplified mesh
if (args.found("dry-run-write"))
{
// Using saWriteNow triggers function objects execute(), write()
runTime.stopAt(Time::saWriteNow);
// Make sure mesh gets output to the current time (since
// instance no longer constant)
fluidRegions[i].setInstance(runTime.timeName());
}
else
{
// Using saNoWriteNow triggers function objects execute(),
// but not write()
runTime.stopAt(Time::saNoWriteNow);
}
functionObject::outputPrefix = "postProcessing-dry-run";
}
else
{
Info<< "Create fluid mesh for region " << fluidNames[i]
<< " for time = " << runTime.timeName() << nl << endl;
fluidRegions.set
(
i,
new fvMesh
( (
IOobject fluidNames[i],
( runTime.timeName(),
fluidNames[i], runTime,
runTime.timeName(), IOobject::MUST_READ
runTime,
IOobject::MUST_READ
)
) )
); )
} );
} }

View File

@ -2,7 +2,7 @@
volScalarField rAU("rAU", 1.0/UEqn.A()); volScalarField rAU("rAU", 1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU)); surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p_rgh)); volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p_rgh));
//tUEqn.clear(); tUEqn.clear();
surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf()); surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());

View File

@ -22,8 +22,6 @@
IOMRFZoneList& MRF = MRFfluid[i]; IOMRFZoneList& MRF = MRFfluid[i];
fv::options& fvOptions = fluidFvOptions[i]; fv::options& fvOptions = fluidFvOptions[i];
fvVectorMatrix& UEqn = UEqFluid[i];
const dimensionedScalar initialMass const dimensionedScalar initialMass
( (
"initialMass", "initialMass",

View File

@ -12,10 +12,8 @@
#include "UEqn.H" #include "UEqn.H"
#include "EEqn.H" #include "EEqn.H"
if (!coupled) #include "pEqn.H"
{
#include "pEqn.H" turb.correct();
turb.correct();
}
} }
} }

View File

@ -16,21 +16,13 @@
fvOptions.constrain(hEqn); fvOptions.constrain(hEqn);
if (coupled) hEqn.solve();
{
fvMatrixAssemblyPtr->addFvMatrix(hEqn);
}
else
{
Info<< "\nSolving for solid region "
<< solidRegions[i].name() << endl;
hEqn.solve(); fvOptions.correct(h);
fvOptions.correct(h);
thermo.correct();
Info<< "Min/max T:" << min(thermo.T()).value() << ' '
<< max(thermo.T()).value() << endl;
}
} }
thermo.correct();
Info<< "Min/max T:" << min(thermo.T()).value() << ' '
<< max(thermo.T()).value() << endl;
} }

View File

@ -7,7 +7,6 @@ EXE_INC = \
-I${phaseSystem}/twoPhaseCompressibleTurbulenceModels/lnInclude \ -I${phaseSystem}/twoPhaseCompressibleTurbulenceModels/lnInclude \
-I${phaseSystem}/multiphaseSystem/lnInclude \ -I${phaseSystem}/multiphaseSystem/lnInclude \
-I./fluid \ -I./fluid \
-I./solid \
-I../solid \ -I../solid \
-I../fluid \ -I../fluid \
-I../include \ -I../include \

View File

@ -67,7 +67,6 @@ int main(int argc, char *argv[])
#define CREATE_MESH createMeshesPostProcess.H #define CREATE_MESH createMeshesPostProcess.H
#include "postProcess.H" #include "postProcess.H"
#include "addCheckCaseOptions.H"
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
#include "createMeshes.H" #include "createMeshes.H"

View File

@ -1,39 +0,0 @@
if (finalIter)
{
mesh.data::add("finalIteration", true);
}
{
for (int nonOrth=0; nonOrth<=nNonOrthCorr; ++nonOrth)
{
fvScalarMatrix hEqn
(
fvm::ddt(betav*rho, h)
- (
thermo.isotropic()
? fvm::laplacian(betav*thermo.alpha(), h, "laplacian(alpha,h)")
: fvm::laplacian(betav*taniAlpha(), h, "laplacian(alpha,h)")
)
==
fvOptions(rho, h)
);
hEqn.relax();
fvOptions.constrain(hEqn);
hEqn.solve(mesh.solver(h.select(finalIter)));
fvOptions.correct(h);
}
thermo.correct();
Info<< "Min/max T:" << min(thermo.T()).value() << ' '
<< max(thermo.T()).value() << endl;
}
if (finalIter)
{
mesh.data::remove("finalIteration");
}

View File

@ -27,19 +27,13 @@
fvOptions.constrain(EEqn); fvOptions.constrain(EEqn);
if (coupled) EEqn.solve(mesh.solver(he.select(finalIter)));
{
fvMatrixAssemblyPtr->addFvMatrix(EEqn);
}
else
{
EEqn.solve(mesh.solver(he.select(finalIter)));
fvOptions.correct(he);
thermo.correct(); fvOptions.correct(he);
rad.correct();
Info<< "Min/max T:" << min(thermo.T()).value() << ' ' thermo.correct();
<< max(thermo.T()).value() << endl; rad.correct();
}
Info<< "Min/max T:" << min(thermo.T()).value() << ' '
<< max(thermo.T()).value() << endl;
} }

View File

@ -2,7 +2,7 @@
MRF.correctBoundaryVelocity(U); MRF.correctBoundaryVelocity(U);
UEqn = tmp<fvVectorMatrix> tUEqn
( (
fvm::ddt(rho, U) + fvm::div(phi, U) fvm::ddt(rho, U) + fvm::div(phi, U)
+ MRF.DDt(rho, U) + MRF.DDt(rho, U)
@ -10,6 +10,7 @@
== ==
fvOptions(rho, U) fvOptions(rho, U)
); );
fvVectorMatrix& UEqn = tUEqn.ref();
UEqn.relax(); UEqn.relax();

View File

@ -16,8 +16,6 @@ PtrList<multivariateSurfaceInterpolationScheme<scalar>::fieldTable>
fieldsFluid(fluidRegions.size()); fieldsFluid(fluidRegions.size());
PtrList<volScalarField> QdotFluid(fluidRegions.size()); PtrList<volScalarField> QdotFluid(fluidRegions.size());
PtrList<fvVectorMatrix> UEqFluid(fluidRegions.size());
List<scalar> initialMassFluid(fluidRegions.size()); List<scalar> initialMassFluid(fluidRegions.size());
List<bool> frozenFlowFluid(fluidRegions.size(), false); List<bool> frozenFlowFluid(fluidRegions.size(), false);
@ -295,12 +293,6 @@ forAll(fluidRegions, i)
new fv::options(fluidRegions[i]) new fv::options(fluidRegions[i])
); );
UEqFluid.set
(
i,
new fvVectorMatrix(UFluid[i], dimForce)
);
turbulenceFluid[i].validate(); turbulenceFluid[i].validate();
pRefCellFluid[i] = -1; pRefCellFluid[i] = -1;

View File

@ -4,61 +4,21 @@
forAll(fluidNames, i) forAll(fluidNames, i)
{ {
if (args.dryRun() || args.found("dry-run-write")) Info<< "Create fluid mesh for region " << fluidNames[i]
{ << " for time = " << runTime.timeName() << nl << endl;
Info
<< "Operating in 'dry-run' mode:"
<< " case will run for 1 time step. "
<< "All checks assumed OK on a clean exit" << endl;
FieldBase::allowConstructFromLargerSize = true; fluidRegions.set
(
// Create a simplified 1D mesh and attempt to re-create boundary i,
// conditions new fvMesh
fluidRegions.set
( (
i, IOobject
new simplifiedMeshes::columnFvMesh(runTime, fluidNames[i])
);
// Stop after 1 iteration of the simplified mesh
if (args.found("dry-run-write"))
{
// Using saWriteNow triggers function objects execute(), write()
runTime.stopAt(Time::saWriteNow);
// Make sure mesh gets output to the current time (since
// instance no longer constant)
fluidRegions[i].setInstance(runTime.timeName());
}
else
{
// Using saNoWriteNow triggers function objects execute(),
// but not write()
runTime.stopAt(Time::saNoWriteNow);
}
functionObject::outputPrefix = "postProcessing-dry-run";
}
else
{
Info<< "Create fluid mesh for region " << fluidNames[i]
<< " for time = " << runTime.timeName() << nl << endl;
fluidRegions.set
(
i,
new fvMesh
( (
IOobject fluidNames[i],
( runTime.timeName(),
fluidNames[i], runTime,
runTime.timeName(), IOobject::MUST_READ
runTime,
IOobject::MUST_READ
)
) )
); )
} );
} }

View File

@ -12,15 +12,15 @@
if (Y.size()) if (Y.size())
{ {
const word inertSpecie(thermo.get<word>("inertSpecie")); const word inertSpecie(thermo.get<word>("inertSpecie"));
inertIndex = composition.species().find(inertSpecie); if (!composition.species().found(inertSpecie))
if (inertIndex < 0)
{ {
FatalIOErrorIn(args.executable().c_str(), thermo) FatalIOErrorIn(args.executable().c_str(), thermo)
<< "Inert specie " << inertSpecie << "Inert specie " << inertSpecie
<< " not found in available species " << " not found in available species "
<< flatOutput(composition.species()) << composition.species()
<< exit(FatalIOError); << exit(FatalIOError);
} }
inertIndex = composition.species()[inertSpecie];
} }
volScalarField& rho = rhoFluid[i]; volScalarField& rho = rhoFluid[i];
@ -49,8 +49,6 @@
IOMRFZoneList& MRF = MRFfluid[i]; IOMRFZoneList& MRF = MRFfluid[i];
fv::options& fvOptions = fluidFvOptions[i]; fv::options& fvOptions = fluidFvOptions[i];
fvVectorMatrix& UEqn = UEqFluid[i];
const dimensionedScalar initialMass const dimensionedScalar initialMass
( (
"initialMass", "initialMass",

View File

@ -18,20 +18,15 @@ else
#include "YEqn.H" #include "YEqn.H"
#include "EEqn.H" #include "EEqn.H"
if (!coupled) // --- PISO loop
for (int corr=0; corr<nCorr; corr++)
{ {
Info<< "\nSolving for fluid region " << fluidRegions[i].name() << endl; #include "pEqn.H"
// --- PISO loop
for (int corr=0; corr<nCorr; corr++)
{
#include "pEqn.H"
}
turbulence.correct();
rho = thermo.rho();
} }
turbulence.correct();
rho = thermo.rho();
} }
if (finalIter) if (finalIter)

View File

@ -1,20 +0,0 @@
forAll(fluidRegions, i)
{
rhoThermo& thermo = thermoFluid[i];
radiation::radiationModel& rad = radiation[i];
fv::options& fvOptions = fluidFvOptions[i];
volScalarField& he = thermo.he();
fvOptions.correct(he);
thermo.correct();
rad.correct();
}
forAll(solidRegions, i)
{
solidThermo& thermo = thermos[i];
fv::options& fvOptions = solidHeatSources[i];
volScalarField& h = thermo.he();
fvOptions.correct(h);
thermo.correct();
}

View File

@ -1,69 +0,0 @@
fvSolution solutionDict(runTime);
bool coupled(solutionDict.getOrDefault("coupledEnergyField", false));
autoPtr<fvMatrix<scalar>> fvMatrixAssemblyPtr;
forAll(fluidRegions, i)
{
const rhoThermo& thermo = refCast<const rhoThermo>(thermoFluid[i]);
const auto& bpsi = thermo.T().boundaryField();
forAll(bpsi, patchI)
{
if (bpsi[patchI].useImplicit())
{
coupled = true;
}
}
}
forAll(solidRegions, i)
{
solidThermo& thermo = thermos[i];
const auto& bpsi = thermo.T().boundaryField();
forAll(bpsi, patchI)
{
if (bpsi[patchI].useImplicit())
{
coupled = true;
}
}
}
forAll(fluidRegions, i)
{
const rhoThermo& thermo = refCast<const rhoThermo>(thermoFluid[i]);
if (coupled)
{
Info<< "Create fvMatrixAssembly." << endl;
fvMatrixAssemblyPtr.reset
(
new fvMatrix<scalar>
(
thermo.he(),
dimEnergy/dimTime
)
);
break;
}
}
if (coupled && !fvMatrixAssemblyPtr)
{
forAll(solidRegions, i)
{
solidThermo& thermo = thermos[i];
Info<< "Create fvMatrixAssembly." << endl;
fvMatrixAssemblyPtr.reset
(
new fvMatrix<scalar>
(
thermo.he(),
dimEnergy/dimTime
)
);
break;
}
}

View File

@ -4,67 +4,26 @@
forAll(solidNames, i) forAll(solidNames, i)
{ {
if (args.dryRun() || args.found("dry-run-write")) Info<< "Create solid mesh for region " << solidNames[i]
{ << " for time = " << runTime.timeName() << nl << endl;
Info
<< "Operating in 'dry-run' mode:"
<< " case will run for 1 time step. "
<< "All checks assumed OK on a clean exit" << endl;
FieldBase::allowConstructFromLargerSize = true; solidRegions.set
(
// Create a simplified 1D mesh and attempt to re-create boundary i,
// conditions new fvMesh
solidRegions.set
( (
i, IOobject
new simplifiedMeshes::columnFvMesh(runTime, solidNames[i])
);
// Stop after 1 iteration of the simplified mesh
if (args.found("dry-run-write"))
{
// Using saWriteNow triggers function objects execute(), write()
runTime.stopAt(Time::saWriteNow);
// Make sure mesh gets output to the current time (since
// instance no longer constant)
solidRegions[i].setInstance(runTime.timeName());
}
else
{
// Using saNoWriteNow triggers function objects execute(),
// but not write()
runTime.stopAt(Time::saNoWriteNow);
}
functionObject::outputPrefix = "postProcessing-dry-run";
}
else
{
Info<< "Create solid mesh for region " << solidNames[i]
<< " for time = " << runTime.timeName() << nl << endl;
solidRegions.set
(
i,
new fvMesh
( (
IOobject solidNames[i],
( runTime.timeName(),
solidNames[i], runTime,
runTime.timeName(), IOobject::MUST_READ
runTime,
IOobject::MUST_READ
)
) )
); )
);
// Force calculation of geometric properties to prevent it being // Force calculation of geometric properties to prevent it being done
// done // later in e.g. some boundary evaluation
// later in e.g. some boundary evaluation //(void)solidRegions[i].weights();
//(void)solidRegions[i].weights(); //(void)solidRegions[i].deltaCoeffs();
//(void)solidRegions[i].deltaCoeffs();
}
} }

View File

@ -1,45 +1,39 @@
if (finalIter)
{ {
fvScalarMatrix hEqn mesh.data::add("finalIteration", true);
( }
fvm::ddt(betav*rho, h)
- (
thermo.isotropic()
? fvm::laplacian(betav*thermo.alpha(), h, "laplacian(alpha,h)")
: fvm::laplacian(betav*taniAlpha(), h, "laplacian(alpha,h)")
)
==
fvOptions(rho, h)
);
hEqn.relax(); {
for (int nonOrth=0; nonOrth<=nNonOrthCorr; ++nonOrth)
fvOptions.constrain(hEqn);
if (coupled)
{ {
fvMatrixAssemblyPtr->addFvMatrix(hEqn); fvScalarMatrix hEqn
} (
else fvm::ddt(betav*rho, h)
{ - (
Info<< "\nSolving for solid region "<< solidRegions[i].name() << endl; thermo.isotropic()
? fvm::laplacian(betav*thermo.alpha(), h, "laplacian(alpha,h)")
: fvm::laplacian(betav*taniAlpha(), h, "laplacian(alpha,h)")
)
==
fvOptions(rho, h)
);
if (finalIter) hEqn.relax();
{
mesh.data::add("finalIteration", true); fvOptions.constrain(hEqn);
}
hEqn.solve(mesh.solver(h.select(finalIter))); hEqn.solve(mesh.solver(h.select(finalIter)));
fvOptions.correct(h); fvOptions.correct(h);
thermo.correct();
Info<< "Min/max T:" << min(thermo.T()).value() << ' '
<< max(thermo.T()).value() << endl;
if (finalIter)
{
mesh.data::remove("finalIteration");
}
} }
thermo.correct();
Info<< "Min/max T:" << min(thermo.T()).value() << ' '
<< max(thermo.T()).value() << endl;
}
if (finalIter)
{
mesh.data::remove("finalIteration");
} }

View File

@ -1,4 +1,3 @@
solidRegionDiffNo.C
solidFoam.C solidFoam.C
EXE = $(FOAM_APPBIN)/solidFoam EXE = $(FOAM_APPBIN)/solidFoam

View File

@ -1,6 +1,4 @@
EXE_INC = \ EXE_INC = \
-I../chtMultiRegionFoam/include \
-I../chtMultiRegionFoam/solid \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \
@ -23,5 +21,4 @@ EXE_LIBS = \
-lfluidThermophysicalModels \ -lfluidThermophysicalModels \
-lsolidThermo \ -lsolidThermo \
-lradiationModels \ -lradiationModels \
-lspecie \ -lspecie
-lthermoTools

View File

@ -90,24 +90,5 @@ else
); );
} }
// Consider mesh flux to correct for mesh deformation
bool meshFluxCorr(false);
if (mesh.solutionDict().found("SIMPLE"))
{
meshFluxCorr =
mesh.solutionDict().subDict("SIMPLE").getOrDefault<bool>
(
"meshFluxCorrection", false
);
}
else if (mesh.solutionDict().found("PIMPLE"))
{
meshFluxCorr =
mesh.solutionDict().subDict("PIMPLE").getOrDefault<bool>
(
"meshFluxCorrection", false
);
}
#include "createRadiationModel.H" #include "createRadiationModel.H"
#include "createFvOptions.H" #include "createFvOptions.H"

View File

@ -1,36 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2022 OpenCFD Ltd.
-------------------------------------------------------------------------------
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/>.
Global
CourantNo
Description
Dummy (fluid) Courant number.
\*---------------------------------------------------------------------------*/
scalar CoNum = 0.0;
// ************************************************************************* //

View File

@ -11,14 +11,14 @@
fvOptions(rho, h) fvOptions(rho, h)
); );
if (meshFluxCorr) if (mesh.changing())
{ {
surfaceScalarField phihMesh surfaceScalarField phihMesh
( (
fvc::interpolate(betav*rho*h)*mesh.phi() fvc::interpolate(betav*rho*h)*mesh.phi()
); );
hEqn -= fvc::div(phihMesh); hEqn -= fvc::div(phihMesh);
} }
hEqn.relax(); hEqn.relax();

View File

@ -1,31 +0,0 @@
scalar DiNum = -GREAT;
{
tmp<volScalarField> magKappa;
if (thermo.isotropic())
{
magKappa = thermo.kappa();
}
else
{
magKappa = mag(thermo.Kappa());
}
tmp<volScalarField> tcp = thermo.Cp();
const volScalarField& cp = tcp();
tmp<volScalarField> trho = thermo.rho();
const volScalarField& rho = trho();
DiNum = max
(
solidRegionDiffNo
(
mesh,
runTime,
rho*cp,
magKappa()
),
DiNum
);
}

View File

@ -41,8 +41,6 @@ Description
#include "fvOptions.H" #include "fvOptions.H"
#include "simpleControl.H" #include "simpleControl.H"
#include "pimpleControl.H" #include "pimpleControl.H"
#include "dummyCourantNo.H"
#include "solidRegionDiffNo.H"
#include "coordinateSystem.H" #include "coordinateSystem.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -90,31 +88,17 @@ int main(int argc, char *argv[])
{ {
pimpleControl pimple(mesh); pimpleControl pimple(mesh);
#include "createDyMControls.H"
while (runTime.run()) while (runTime.run())
{ {
#include "readDyMControls.H"
#include "readSolidTimeControls.H"
#include "solidDiffusionNo.H"
#include "setMultiRegionDeltaT.H"
++runTime; ++runTime;
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
while (pimple.loop()) while (pimple.loop())
{ {
if (pimple.firstIter() || moveMeshOuterCorrectors) if (pimple.firstIter())
{ {
// Do any mesh changes mesh.update();
mesh.controlledUpdate();
if (mesh.changing() && checkMeshCourantNo)
{
#include "meshCourantNo.H"
}
} }
while (pimple.correct()) while (pimple.correct())

View File

@ -1 +0,0 @@
../chtMultiRegionFoam/solid/solidRegionDiffNo.C

View File

@ -1 +0,0 @@
../chtMultiRegionFoam/solid/solidRegionDiffNo.H

View File

@ -18,5 +18,4 @@ EXE_LIBS = \
-lradiationModels \ -lradiationModels \
-lspecie \ -lspecie \
-lturbulenceModels \ -lturbulenceModels \
-lcompressibleTurbulenceModels \ -lcompressibleTurbulenceModels
-lthermoTools

View File

@ -5,8 +5,8 @@
\\ / A nd | www.openfoam.com \\ / A nd | www.openfoam.com
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2007-2021 PCOpt/NTUA Copyright (C) 2007-2019 PCOpt/NTUA
Copyright (C) 2013-2021 FOSS GP Copyright (C) 2013-2019 FOSS GP
Copyright (C) 2019 OpenCFD Ltd. Copyright (C) 2019 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -71,6 +71,9 @@ int main(int argc, char *argv[])
// Solve all adjoint equations // Solve all adjoint equations
om.solveAdjointEquations(); om.solveAdjointEquations();
// Compute all sensitivities
om.computeSensitivities();
} }
Info<< "End\n" << endl; Info<< "End\n" << endl;

View File

@ -7,8 +7,7 @@ EXE_INC = \
-I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \ -I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
-I$(LIB_SRC)/dynamicMesh/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \ -I$(LIB_SRC)/dynamicFvMesh/lnInclude
-I$(LIB_SRC)/regionFaModels\lnInclude
EXE_LIBS = \ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
@ -21,5 +20,4 @@ EXE_LIBS = \
-ldynamicMesh \ -ldynamicMesh \
-ldynamicFvMesh \ -ldynamicFvMesh \
-ltopoChangerFvMesh \ -ltopoChangerFvMesh \
-latmosphericModels \ -latmosphericModels
-lregionFaModels

Some files were not shown because too many files have changed in this diff Show More