Merge branch 'master' of /home/noisy3/OpenFOAM/OpenFOAM-dev

This commit is contained in:
mattijs
2009-07-23 13:08:30 +01:00
1563 changed files with 3281 additions and 2424 deletions

22
README
View File

@ -1,8 +1,8 @@
# -*- mode: org; -*- # -*- mode: org; -*-
# #
#+TITLE: *OpenFOAM README for version 1.5* #+TITLE: OpenFOAM README for version 1.6
#+AUTHOR: OpenCFD Ltd. #+AUTHOR: OpenCFD Ltd.
#+DATE: 26 August 2008 #+DATE: July 2009
#+LINK: http://www.opencfd.co.uk #+LINK: http://www.opencfd.co.uk
#+OPTIONS: author:nil ^:{} #+OPTIONS: author:nil ^:{}
@ -62,7 +62,7 @@
in the OpenFOAM release. e.g. in in the OpenFOAM release. e.g. in
+ $HOME/OpenFOAM/OpenFOAM-<VERSION>/etc/ + $HOME/OpenFOAM/OpenFOAM-<VERSION>/etc/
+ where <VERSION> corresponds to the version 1.4, 1.5, ... + where <VERSION> corresponds to the version 1.5, 1.6, ...
1) EITHER, if running bash or ksh (if in doubt type 'echo $SHELL'), source the 1) EITHER, if running bash or ksh (if in doubt type 'echo $SHELL'), source the
etc/bashrc file by adding the following line to the end of your etc/bashrc file by adding the following line to the end of your
@ -135,7 +135,7 @@
* Getting Started * Getting Started
Create a project directory within the $HOME/OpenFOAM directory named Create a project directory within the $HOME/OpenFOAM directory named
<USER>-<VERSION> (e.g. 'chris-1.5' for user chris and OpenFOAM version 1.5) <USER>-<VERSION> (e.g. 'chris-1.6' for user chris and OpenFOAM version 1.6)
and create a directory named 'run' within it, e.g. by typing: and create a directory named 'run' within it, e.g. by typing:
+ mkdir -p $HOME/OpenFOAM/${USER}-${WM_PROJECT_VERSION}/run + mkdir -p $HOME/OpenFOAM/${USER}-${WM_PROJECT_VERSION}/run
@ -156,12 +156,13 @@
* Compiling Paraview 3.3 and the PV3FoamReader module * Compiling Paraview 3.3 and the PV3FoamReader module
A version of Qt 4.3.x must be installed to compile ParaView. The compilation A version of Qt 4.3.x must be installed to compile ParaView. The compilation
is a fairly simple process using the supplied buildParaView3.3-cvs script that is a fairly simple process using the supplied buildParaView script that
has worked is our tests with other packages supplied in the ThirdParty has worked in our tests with other packages supplied in the ThirdParty
directory, namely cmake-2.4.6 and gcc-4.3.1. Execute the following: directory, namely cmake-2.6.4 and gcc-4.3.3. Execute the following:
+ cd $FOAM_INST_DIR/ThirdParty + cd $WM_THIRD_PARTY_DIR
+ rm -rf ParaView3.3-cvs/platforms + rm -rf paraview-3.6/platforms
+ buildParaView3.3-cvs + buildParaView
The PV3FoamReader module is an OpenFOAM utility that can be compiled in the The PV3FoamReader module is an OpenFOAM utility that can be compiled in the
usual manner as follows: usual manner as follows:
@ -184,3 +185,4 @@
is the default mode on a 64-bit machine. To use an installed 32-bit version, is the default mode on a 64-bit machine. To use an installed 32-bit version,
the user must set the environment variable WM_ARCH_OPTION to 32 before the user must set the environment variable WM_ARCH_OPTION to 32 before
sourcing the etc/bashrc (or etc/cshrc) file. sourcing the etc/bashrc (or etc/cshrc) file.

View File

@ -145,6 +145,8 @@
+ The *new* =readList(Istream&)= can read a bracket-delimited list or handle + The *new* =readList(Istream&)= can read a bracket-delimited list or handle
a single value as a list of size 1. This can be a useful convenience when a single value as a list of size 1. This can be a useful convenience when
processing command-line options. processing command-line options.
+ Export *new* environment variable =FOAM_CASENAME= that contains the
name part of the =FOAM_CASE= environment variable
*** Misc. improvements *** Misc. improvements
+ Improved consistency and interoperability between =face= and =triFace= classes. + Improved consistency and interoperability between =face= and =triFace= classes.

View File

@ -1,5 +1,8 @@
#!/bin/sh #!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
set -x
wclean libso BCs wclean libso BCs
wclean wclean
# ----------------------------------------------------------------- end-of-file

View File

@ -1,4 +1,10 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
set -x
wclean libso phaseModel wclean libso phaseModel
wclean libso interfacialModels wclean libso interfacialModels
wclean libso kineticTheoryModels wclean libso kineticTheoryModels
wclean wclean
# ----------------------------------------------------------------- end-of-file

View File

@ -29,6 +29,7 @@ Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "argList.H"
#include "IOstreams.H" #include "IOstreams.H"
#include "IOobject.H" #include "IOobject.H"
#include "IFstream.H" #include "IFstream.H"
@ -41,6 +42,15 @@ using namespace Foam;
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
argList::noParallel();
argList args(argc, argv);
Info<< nl
<< "FOAM_CASE=" << getEnv("FOAM_CASE") << nl
<< "FOAM_CASENAME=" << getEnv("FOAM_CASENAME") << nl
<< endl;
{ {
dictionary dict1(IFstream("testDict")()); dictionary dict1(IFstream("testDict")());
Info<< "dict1: " << dict1 << nl Info<< "dict1: " << dict1 << nl

View File

@ -14,6 +14,9 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#inputMode merge #inputMode merge
#includeIfPresent "someUnknownFile"
#includeIfPresent "$FOAM_CASE/someUnknownFile"
#includeIfPresent "$FOAM_CASE/someUnknownFile-$FOAM_CASENAME"
internalField uniform 1; internalField uniform 1;
@ -78,7 +81,6 @@ boundaryField
// NB: the inputMode has a global scope // NB: the inputMode has a global scope
#inputMode merge #inputMode merge
#include "testDict2" #include "testDict2"
#includeIfPresent "SomeUnknownFile"
foo foo
{ {

View File

@ -1,6 +1,8 @@
#!/bin/sh #!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
set -x set -x
wclean libso extrudeModel wclean libso extrudeModel
wclean wclean
# ----------------------------------------------------------------- end-of-file

View File

@ -4,3 +4,5 @@ set -x
rm -rf PV3FoamReader/Make rm -rf PV3FoamReader/Make
wclean libso vtkPV3Foam wclean libso vtkPV3Foam
# ----------------------------------------------------------------- end-of-file

View File

@ -261,11 +261,15 @@ Foam::vtkPV3Foam::vtkPV3Foam
// Set the case as an environment variable - some BCs might use this // Set the case as an environment variable - some BCs might use this
if (fullCasePath.name().find("processor", 0) == 0) if (fullCasePath.name().find("processor", 0) == 0)
{ {
setEnv("FOAM_CASE", fullCasePath.path(), true); const fileName globalCase = fullCasePath.path();
setEnv("FOAM_CASE", globalCase, true);
setEnv("FOAM_CASENAME", globalCase.name(), true);
} }
else else
{ {
setEnv("FOAM_CASE", fullCasePath, true); setEnv("FOAM_CASE", fullCasePath, true);
setEnv("FOAM_CASENAME", fullCasePath.name(), true);
} }
// look for 'case{region}.OpenFOAM' // look for 'case{region}.OpenFOAM'
@ -299,6 +303,7 @@ Foam::vtkPV3Foam::vtkPV3Foam
{ {
Info<< "fullCasePath=" << fullCasePath << nl Info<< "fullCasePath=" << fullCasePath << nl
<< "FOAM_CASE=" << getEnv("FOAM_CASE") << nl << "FOAM_CASE=" << getEnv("FOAM_CASE") << nl
<< "FOAM_CASENAME=" << getEnv("FOAM_CASENAME") << nl
<< "region=" << meshRegion_ << endl; << "region=" << meshRegion_ << endl;
} }

View File

@ -2,10 +2,17 @@ EXE_INC = \
-I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/turbulenceModels \ -I$(LIB_SRC)/turbulenceModels \
-I$(LIB_SRC)/turbulenceModels/incompressible/RAS/RASModel \ -I$(LIB_SRC)/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions \
-I$(LIB_SRC)/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude -I$(LIB_SRC)/finiteVolume/lnInclude
EXE_LIBS = \ EXE_LIBS = \
-lincompressibleRASModels \
-lincompressibleTransportModels \ -lincompressibleTransportModels \
-lfiniteVolume -lincompressibleRASModels \
-lbasicThermophysicalModels \
-lspecie \
-lcompressibleRASModels \
-lfiniteVolume \
-lmeshTools \
-lsampling

View File

@ -26,25 +26,156 @@ Application
yPlusRAS yPlusRAS
Description Description
Calculates and reports yPlus for all wall patches, for the specified times. Calculates and reports yPlus for all wall patches, for the specified times
when using RAS turbulence models.
Default behaviour assumes operating in incompressible mode. To apply to
compressible RAS cases, use the -compressible option.
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "fvCFD.H" #include "fvCFD.H"
#include "incompressible/singlePhaseTransportModel/singlePhaseTransportModel.H" #include "incompressible/singlePhaseTransportModel/singlePhaseTransportModel.H"
#include "RASModel.H" #include "incompressible/RAS/RASModel/RASModel.H"
#include "wallFvPatch.H" #include "nutWallFunction/nutWallFunctionFvPatchScalarField.H"
#include "basicPsiThermo.H"
#include "compressible/RAS/RASModel/RASModel.H"
#include "mutWallFunction/mutWallFunctionFvPatchScalarField.H"
#include "wallDist.H" #include "wallDist.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
void calcIncompressibleYPlus
(
const fvMesh& mesh,
const Time& runTime,
const volVectorField& U,
volScalarField& yPlus
)
{
typedef incompressible::RASModels::nutWallFunctionFvPatchScalarField
wallFunctionPatchField;
#include "createPhi.H"
singlePhaseTransportModel laminarTransport(U, phi);
autoPtr<incompressible::RASModel> RASModel
(
incompressible::RASModel::New(U, phi, laminarTransport)
);
const volScalarField::GeometricBoundaryField nutPatches =
RASModel->nut()().boundaryField();
forAll(nutPatches, patchi)
{
if (isA<wallFunctionPatchField>(nutPatches[patchi]))
{
const wallFunctionPatchField& nutPw =
dynamic_cast<const wallFunctionPatchField&>
(nutPatches[patchi]);
yPlus.boundaryField()[patchi] = nutPw.yPlus();
const scalarField& Yp = yPlus.boundaryField()[patchi];
Info<< "Patch " << patchi
<< " named " << nutPw.patch().name()
<< " y+ : min: " << min(Yp) << " max: " << max(Yp)
<< " average: " << average(Yp) << nl << endl;
}
}
}
void calcCompressibleYPlus
(
const fvMesh& mesh,
const Time& runTime,
const volVectorField& U,
volScalarField& yPlus
)
{
typedef compressible::RASModels::mutWallFunctionFvPatchScalarField
wallFunctionPatchField;
IOobject rhoHeader
(
"rho",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
);
if (!rhoHeader.headerOk())
{
Info<< " no rho field" << endl;
return;
}
Info << "Reading field rho\n" << endl;
volScalarField rho(rhoHeader, mesh);
#include "compressibleCreatePhi.H"
autoPtr<basicPsiThermo> pThermo
(
basicPsiThermo::New(mesh)
);
basicPsiThermo& thermo = pThermo();
autoPtr<compressible::RASModel> RASModel
(
compressible::RASModel::New
(
rho,
U,
phi,
thermo
)
);
const volScalarField::GeometricBoundaryField mutPatches =
RASModel->mut()().boundaryField();
forAll(mutPatches, patchi)
{
if (isA<wallFunctionPatchField>(mutPatches[patchi]))
{
const wallFunctionPatchField& mutPw =
dynamic_cast<const wallFunctionPatchField&>
(mutPatches[patchi]);
yPlus.boundaryField()[patchi] = mutPw.yPlus();
const scalarField& Yp = yPlus.boundaryField()[patchi];
Info<< "Patch " << patchi
<< " named " << mutPw.patch().name()
<< " y+ : min: " << min(Yp) << " max: " << max(Yp)
<< " average: " << average(Yp) << nl << endl;
}
}
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
timeSelector::addOptions(); timeSelector::addOptions();
#include "addRegionOption.H"
argList::validOptions.insert("compressible","");
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
instantList timeDirs = timeSelector::select0(runTime, args); instantList timeDirs = timeSelector::select0(runTime, args);
# include "createMesh.H" #include "createNamedMesh.H"
bool compressible = args.optionFound("compressible");
forAll(timeDirs, timeI) forAll(timeDirs, timeI)
{ {
@ -76,49 +207,35 @@ int main(int argc, char *argv[])
dimensionedScalar("yPlus", dimless, 0.0) dimensionedScalar("yPlus", dimless, 0.0)
); );
Info << "Reading field U\n" << endl; IOobject UHeader
volVectorField U
(
IOobject
( (
"U", "U",
runTime.timeName(), runTime.timeName(),
mesh, mesh,
IOobject::MUST_READ, IOobject::MUST_READ,
IOobject::AUTO_WRITE IOobject::NO_WRITE
),
mesh
); );
# include "createPhi.H" if (UHeader.headerOk())
singlePhaseTransportModel laminarTransport(U, phi);
autoPtr<incompressible::RASModel> RASModel
(
incompressible::RASModel::New(U, phi, laminarTransport)
);
const fvPatchList& patches = mesh.boundary();
forAll(patches, patchi)
{ {
const fvPatch& currPatch = patches[patchi]; Info << "Reading field U\n" << endl;
volVectorField U(UHeader, mesh);
if (typeid(currPatch) == typeid(wallFvPatch)) if (compressible)
{ {
yPlus.boundaryField()[patchi] = RASModel->yPlus(patchi); calcCompressibleYPlus(mesh, runTime, U, yPlus);
const scalarField& Yp = yPlus.boundaryField()[patchi]; }
else
Info<< "Patch " << patchi {
<< " named " << currPatch.name() calcIncompressibleYPlus(mesh, runTime, U, yPlus);
<< " y+ : min: " << min(Yp) << " max: " << max(Yp)
<< " average: " << average(Yp) << nl << endl;
} }
} }
else
{
Info<< " no U field" << endl;
}
Info<< "Writing yPlus to field " Info<< "Writing yPlus to field " << yPlus.name() << nl << endl;
<< yPlus.name() << nl << endl;
yPlus.write(); yPlus.write();
} }
@ -128,4 +245,5 @@ int main(int argc, char *argv[])
return 0; return 0;
} }
// ************************************************************************* // // ************************************************************************* //

View File

@ -33,9 +33,9 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Base settings # Base settings
FOAM_VERSION=1.5 FOAM_VERSION=1.6
SUPPLIED_VERSION_GCC=4.3.1 SUPPLIED_VERSION_GCC=4.3.3
MIN_VERSION_GCC=4.2.0 MIN_VERSION_GCC=4.3.1
# General # General
WIDTH=20 WIDTH=20
@ -46,10 +46,8 @@ CRITICALERROR=0
SSHRSHOK=0 SSHRSHOK=0
# System variables # System variables
USER_SHELL=`basename $SHELL`
HOST_NAME=`uname -n` HOST_NAME=`uname -n`
OS=`uname -s` OS=`uname -s`
OS_VERSION=`uname -r`
USER_NAME=$LOGNAME USER_NAME=$LOGNAME
if [ ! -n $USER_NAME ]; then if [ ! -n $USER_NAME ]; then
USER_NAME=$USER USER_NAME=$USER
@ -125,7 +123,7 @@ reportEnv () {
SunOS) SunOS)
if /usr/bin/test -e $EXP_ENV ; then if /usr/bin/test -e $EXP_ENV ; then
EXISTS=" yes " EXISTS=" yes "
if [ "$2" != "noPath" ]; then if [ "$2" != noPath ]; then
ON_PATH=" no " ON_PATH=" no "
OLD_IFS=$IFS OLD_IFS=$IFS
IFS=':' IFS=':'
@ -152,7 +150,7 @@ reportEnv () {
*) *)
if [ -e "$EXP_ENV" ] ; then if [ -e "$EXP_ENV" ] ; then
EXISTS=" yes " EXISTS=" yes "
if [ "$2" != "noPath" ]; then if [ "$2" != noPath ]; then
ON_PATH=" no " ON_PATH=" no "
OLD_IFS=$IFS OLD_IFS=$IFS
IFS=':' IFS=':'
@ -182,10 +180,10 @@ reportEnv () {
fi fi
ERROR="false" ERROR="false"
if [ "$EXISTS" = "no" ] || [ "$ON_PATH" = "no" ]; then if [ "$EXISTS" = no ] || [ "$ON_PATH" = no ]; then
ERROR="true" ERROR="true"
fi fi
if [ "$3" = "yes" ] && [ "$ERROR" = "true" ]; then if [ "$3" = yes ] && [ "$ERROR" = true ]; then
CRITICALERROR=`expr $CRITICALERROR + 1` CRITICALERROR=`expr $CRITICALERROR + 1`
echo "WARNING: CRITICAL ERROR" echo "WARNING: CRITICAL ERROR"
echo echo
@ -312,9 +310,9 @@ pingTest () {
case $OS in case $OS in
SunOS) SunOS)
PINGTEST=`/usr/sbin/ping $1 2>&1` PINGTEST=`/usr/sbin/ping $1 2>&1`
if [ "`echo $PINGTEST | grep "alive"`" != "" ] ; then if [ "`echo $PINGTEST | grep alive`" != "" ] ; then
RESULT="Successful" RESULT="Successful"
elif [ "`echo $PINGTEST | grep "unknown host"`" != "" ] ; then elif [ "`echo $PINGTEST | grep 'unknown host'`" != "" ] ; then
RESULT="No_entry_for_\"$1\"_in_/etc/hosts" RESULT="No_entry_for_\"$1\"_in_/etc/hosts"
else else
RESULT="Networking_cannot_reach_$1" RESULT="Networking_cannot_reach_$1"
@ -322,9 +320,9 @@ pingTest () {
;; ;;
*) *)
PINGTEST=`/bin/ping -w 3 -c 1 $1 2>&1` PINGTEST=`/bin/ping -w 3 -c 1 $1 2>&1`
if [ "`echo $PINGTEST | grep "1 received"`" != "" ] ; then if [ "`echo $PINGTEST | grep '1 received'`" != "" ] ; then
RESULT="Successful" RESULT="Successful"
elif [ "`echo $PINGTEST | grep "unknown host"`" != "" ] ; then elif [ "`echo $PINGTEST | grep 'unknown host'`" != "" ] ; then
RESULT="No_entry_for_\"$1\"_in_/etc/hosts" RESULT="No_entry_for_\"$1\"_in_/etc/hosts"
else else
RESULT="Networking_cannot_reach_$1" RESULT="Networking_cannot_reach_$1"
@ -334,7 +332,7 @@ pingTest () {
echo "`fixlen "Pinging_$1" 25` `fixlen "$RESULT" 45` `fixlen "$2" 5`" echo "`fixlen "Pinging_$1" 25` `fixlen "$RESULT" 45` `fixlen "$2" 5`"
if [ "$2" = "yes" ] && [ "$RESULT" != "Successful" ]; then if [ "$2" = yes ] && [ "$RESULT" != Successful ]; then
CRITICALERROR=`expr $CRITICALERROR + 1` CRITICALERROR=`expr $CRITICALERROR + 1`
echo "WARNING: CRITICAL ERROR" echo "WARNING: CRITICAL ERROR"
echo echo
@ -361,7 +359,7 @@ checkTelnetPort () {
RESULT="Not_active*" RESULT="Not_active*"
fi fi
else else
RESULT='No_telnet_running:_cannot_check*' RESULT='No_telnet_installed:_cannot_check*'
fi fi
} }
@ -369,7 +367,7 @@ checkTelnetPort () {
checkRsh () { checkRsh () {
checkTelnetPort $HOST_NAME 222 checkTelnetPort $HOST_NAME 222
echo "`fixlen "Test_rsh:" 25` `fixlen "$RESULT" 45` "yes"" echo "`fixlen "Test_rsh:" 25` `fixlen "$RESULT" 45` "yes""
if [ "$RESULT" != 'Successful' ]; then if [ "$RESULT" != Successful ]; then
SSHRSHOK=`expr $SSHRSHOK + 1` SSHRSHOK=`expr $SSHRSHOK + 1`
fi fi
} }
@ -378,14 +376,14 @@ checkRsh () {
checkSsh () { checkSsh () {
checkTelnetPort $HOST_NAME 22 checkTelnetPort $HOST_NAME 22
echo "`fixlen "Test_ssh:" 25` `fixlen "$RESULT" 45` "yes"" echo "`fixlen "Test_ssh:" 25` `fixlen "$RESULT" 45` "yes""
if [ "$RESULT" != 'Successful' ]; then if [ "$RESULT" != Successful ]; then
SSHRSHOK=`expr $SSHRSHOK + 1` SSHRSHOK=`expr $SSHRSHOK + 1`
fi fi
} }
checkOpenFOAMEnvironment() { checkOpenFOAMEnvironment() {
if [ ! -d "$WM_PROJECT_INST_DIR" -o ! -d "$WM_THIRD_PARTY_DIR" ]; then [ -d "$WM_PROJECT_INST_DIR" ] && [ -d "$WM_THIRD_PARTY_DIR" ] || {
echo "" echo ""
echo "FATAL ERROR: OpenFOAM environment not configured." echo "FATAL ERROR: OpenFOAM environment not configured."
echo "" echo ""
@ -394,22 +392,23 @@ checkOpenFOAMEnvironment() {
echo " to source the OpenFOAM environment." echo " to source the OpenFOAM environment."
echo "" echo ""
exit 1 exit 1
fi }
} }
checkUserShell() { checkUserShell() {
case $USER_SHELL in case $SHELL in
csh | tcsh) */csh | */tcsh)
USER_CONFIG_TYPE="cshrc" # USER_CONFIG_TYPE="cshrc"
echo "`fixlen "Shell:" $WIDTH` ${USER_SHELL}" echo "`fixlen "Shell:" $WIDTH` ${SHELL##*/}"
;; ;;
bash | ksh) */bash | */ksh)
USER_CONFIG_TYPE="bashrc" # USER_CONFIG_TYPE="bashrc"
echo "`fixlen "Shell:" $WIDTH` ${USER_SHELL}" echo "`fixlen "Shell:" $WIDTH` ${SHELL##*/}"
;; ;;
*) USER_CONFIG_TYPE="" *)
echo "`fixlen "Shell:" $WIDTH` ${USER_SHELL}" # USER_CONFIG_TYPE=""
echo "`fixlen "Shell:" $WIDTH` ${SHELL##*/}"
echo "FATAL ERROR: Cannot identify the shell you are running." echo "FATAL ERROR: Cannot identify the shell you are running."
echo " OpenFOAM ${FOAM_VERSION} is compatible with " echo " OpenFOAM ${FOAM_VERSION} is compatible with "
echo " csh, tcsh, ksh and bash." echo " csh, tcsh, ksh and bash."
@ -435,15 +434,18 @@ checkHostName() {
checkOS () { checkOS () {
if [ "$OS" = "Linux" ] || [ "$OS" = "LinuxAMD64" ] || [ "$OS" = "SunOS" ]; then case "$OS" in
echo "`fixlen "OS:" $WIDTH` ${OS} version ${OS_VERSION}" Linux | LinuxAMD64 | SunOS )
else echo "`fixlen "OS:" $WIDTH` ${OS} version $(uname -r)"
;;
*)
echo "FATAL ERROR: Incompatible operating system \"$OS\"." echo "FATAL ERROR: Incompatible operating system \"$OS\"."
echo " OpenFOAM ${FOAM_VERSION} is currently " echo " OpenFOAM ${FOAM_VERSION} is currently "
echo " available for Linux and SunOS only." echo " available for Linux and SunOS only."
echo echo
FATALERROR=`expr $FATALERROR + 1` FATALERROR=`expr $FATALERROR + 1`
fi ;;
esac
} }
@ -485,6 +487,7 @@ hline
reportEnv '$WM_PROJECT_DIR' '$PATH' "yes" reportEnv '$WM_PROJECT_DIR' '$PATH' "yes"
echo "" echo ""
reportEnv '$FOAM_APPBIN' '$PATH' "yes" reportEnv '$FOAM_APPBIN' '$PATH' "yes"
reportEnv '$FOAM_SITE_APPBIN' '$PATH' "no"
reportEnv '$FOAM_USER_APPBIN' '$PATH' "no" reportEnv '$FOAM_USER_APPBIN' '$PATH' "no"
reportEnv '$WM_DIR' '$PATH' "yes" reportEnv '$WM_DIR' '$PATH' "yes"
hline hline
@ -495,6 +498,7 @@ hline
echo "$COL1 $COL2 $COL3 $COL4 $COL5" echo "$COL1 $COL2 $COL3 $COL4 $COL5"
hline hline
reportEnv '$FOAM_LIBBIN' '$LD_LIBRARY_PATH' "yes" reportEnv '$FOAM_LIBBIN' '$LD_LIBRARY_PATH' "yes"
reportEnv '$FOAM_SITE_LIBBIN' '$LD_LIBRARY_PATH' "no"
reportEnv '$FOAM_USER_LIBBIN' '$LD_LIBRARY_PATH' "no" reportEnv '$FOAM_USER_LIBBIN' '$LD_LIBRARY_PATH' "no"
reportEnv '$MPI_ARCH_PATH' '$LD_LIBRARY_PATH' "yes" reportEnv '$MPI_ARCH_PATH' '$LD_LIBRARY_PATH' "yes"
hline hline
@ -509,7 +513,7 @@ echo "$COL1 $COL2 $COL3"
hline hline
reportExecutable gcc "${WM_COMPILER_DIR}/bin/gcc" reportExecutable gcc "${WM_COMPILER_DIR}/bin/gcc"
reportExecutable gzip reportExecutable gzip
if [ "$OS" = "Linux" ] ; then if [ "$OS" = Linux ] ; then
reportExecutable tar reportExecutable tar
else else
reportExecutable gtar reportExecutable gtar

View File

@ -34,7 +34,7 @@
# STATIC VARIABLES # STATIC VARIABLES
# ~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~
FOAM_VERSION=1.5 FOAM_VERSION=1.6
HLINE="-----------------------------------------------------------------------" HLINE="-----------------------------------------------------------------------"
WIDTH=16 WIDTH=16

View File

@ -45,15 +45,19 @@ setenv WM_LINK_LANGUAGE c++
setenv WM_OPTIONS $WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_COMPILE_OPTION setenv WM_OPTIONS $WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_COMPILE_OPTION
# base configuration # base configuration
setenv FOAM_SRC $WM_PROJECT_DIR/src
setenv FOAM_LIB $WM_PROJECT_DIR/lib
setenv FOAM_LIBBIN $WM_PROJECT_DIR/lib/$WM_OPTIONS
setenv FOAM_APP $WM_PROJECT_DIR/applications setenv FOAM_APP $WM_PROJECT_DIR/applications
setenv FOAM_APPBIN $WM_PROJECT_DIR/applications/bin/$WM_OPTIONS setenv FOAM_APPBIN $WM_PROJECT_DIR/applications/bin/$WM_OPTIONS
setenv FOAM_LIB $WM_PROJECT_DIR/lib
setenv FOAM_LIBBIN $WM_PROJECT_DIR/lib/$WM_OPTIONS
setenv FOAM_SRC $WM_PROJECT_DIR/src
# shared site configuration - similar naming convention as ~OpenFOAM expansion
setenv FOAM_SITE_APPBIN $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/bin/$WM_OPTIONS
setenv FOAM_SITE_LIBBIN $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/lib/$WM_OPTIONS
# user configuration # user configuration
setenv FOAM_USER_LIBBIN $WM_PROJECT_USER_DIR/lib/$WM_OPTIONS
setenv FOAM_USER_APPBIN $WM_PROJECT_USER_DIR/applications/bin/$WM_OPTIONS setenv FOAM_USER_APPBIN $WM_PROJECT_USER_DIR/applications/bin/$WM_OPTIONS
setenv FOAM_USER_LIBBIN $WM_PROJECT_USER_DIR/lib/$WM_OPTIONS
# convenience # convenience
setenv FOAM_TUTORIALS $WM_PROJECT_DIR/tutorials setenv FOAM_TUTORIALS $WM_PROJECT_DIR/tutorials
@ -65,8 +69,10 @@ setenv FOAM_RUN $WM_PROJECT_USER_DIR/run
set path=($WM_DIR $WM_PROJECT_DIR/bin $path) set path=($WM_DIR $WM_PROJECT_DIR/bin $path)
_foamAddPath $FOAM_APPBIN _foamAddPath $FOAM_APPBIN
_foamAddPath $FOAM_SITE_APPBIN
_foamAddPath $FOAM_USER_APPBIN _foamAddPath $FOAM_USER_APPBIN
_foamAddLib $FOAM_LIBBIN _foamAddLib $FOAM_LIBBIN
_foamAddLib $FOAM_SITE_LIBBIN
_foamAddLib $FOAM_USER_LIBBIN _foamAddLib $FOAM_USER_LIBBIN

View File

@ -61,15 +61,19 @@ export WM_LINK_LANGUAGE=c++
export WM_OPTIONS=$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_COMPILE_OPTION export WM_OPTIONS=$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_COMPILE_OPTION
# base configuration # base configuration
export FOAM_SRC=$WM_PROJECT_DIR/src
export FOAM_LIB=$WM_PROJECT_DIR/lib
export FOAM_LIBBIN=$WM_PROJECT_DIR/lib/$WM_OPTIONS
export FOAM_APP=$WM_PROJECT_DIR/applications export FOAM_APP=$WM_PROJECT_DIR/applications
export FOAM_APPBIN=$WM_PROJECT_DIR/applications/bin/$WM_OPTIONS export FOAM_APPBIN=$WM_PROJECT_DIR/applications/bin/$WM_OPTIONS
export FOAM_LIB=$WM_PROJECT_DIR/lib
export FOAM_LIBBIN=$WM_PROJECT_DIR/lib/$WM_OPTIONS
export FOAM_SRC=$WM_PROJECT_DIR/src
# shared site configuration - similar naming convention as ~OpenFOAM expansion
export FOAM_SITE_APPBIN=$WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/bin/$WM_OPTIONS
export FOAM_SITE_LIBBIN=$WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/lib/$WM_OPTIONS
# user configuration # user configuration
export FOAM_USER_LIBBIN=$WM_PROJECT_USER_DIR/lib/$WM_OPTIONS
export FOAM_USER_APPBIN=$WM_PROJECT_USER_DIR/applications/bin/$WM_OPTIONS export FOAM_USER_APPBIN=$WM_PROJECT_USER_DIR/applications/bin/$WM_OPTIONS
export FOAM_USER_LIBBIN=$WM_PROJECT_USER_DIR/lib/$WM_OPTIONS
# convenience # convenience
export FOAM_TUTORIALS=$WM_PROJECT_DIR/tutorials export FOAM_TUTORIALS=$WM_PROJECT_DIR/tutorials
@ -80,8 +84,8 @@ export FOAM_RUN=$WM_PROJECT_USER_DIR/run
# add OpenFOAM scripts and wmake to the path # add OpenFOAM scripts and wmake to the path
export PATH=$WM_DIR:$WM_PROJECT_DIR/bin:$PATH export PATH=$WM_DIR:$WM_PROJECT_DIR/bin:$PATH
_foamAddPath $FOAM_APPBIN $FOAM_USER_APPBIN _foamAddPath $FOAM_APPBIN $FOAM_SITE_APPBIN $FOAM_USER_APPBIN
_foamAddLib $FOAM_LIBBIN $FOAM_USER_LIBBIN _foamAddLib $FOAM_LIBBIN $FOAM_SITE_LIBBIN $FOAM_USER_LIBBIN
# Compiler settings # Compiler settings

View File

@ -129,14 +129,18 @@ void Foam::argList::getRootCase()
casePath = iter(); casePath = iter();
casePath.removeRepeated('/'); casePath.removeRepeated('/');
casePath.removeTrailing('/'); casePath.removeTrailing('/');
// handle degenerate form and '-case .' like no -case specified
if (casePath.empty() || casePath == ".")
{
casePath = cwd();
options_.erase("case");
}
} }
else else
{ {
// nothing specified, use the current dir // nothing specified, use the current dir
casePath = cwd(); casePath = cwd();
// we could add this back in as '-case'?
// options_.set("case", casePath);
} }
rootPath_ = casePath.path(); rootPath_ = casePath.path();
@ -522,8 +526,25 @@ Foam::argList::argList
} }
jobInfo.write(); jobInfo.write();
// Set the case as an environment variable
// Set the case and case-name as an environment variable
if (rootPath_[0] == '/')
{
// absolute path
setEnv("FOAM_CASE", rootPath_/globalCase_, true); setEnv("FOAM_CASE", rootPath_/globalCase_, true);
}
else if (rootPath_ == ".")
{
// relative to the current working directory
setEnv("FOAM_CASE", cwd()/globalCase_, true);
}
else
{
// qualify relative path
setEnv("FOAM_CASE", cwd()/rootPath_/globalCase_, true);
}
setEnv("FOAM_CASENAME", globalCase_, true);
// Switch on signal trapping. We have to wait until after Pstream::init // Switch on signal trapping. We have to wait until after Pstream::init
// since this sets up its own ones. // since this sets up its own ones.

View File

@ -54,6 +54,8 @@ Description
The environment variable @b FOAM_CASE is set to the path of the The environment variable @b FOAM_CASE is set to the path of the
global case (same for serial and parallel jobs). global case (same for serial and parallel jobs).
The environment variable @b FOAM_CASENAME is set to the name of the
global case.
Note Note
- Adjustment of the valid (mandatory) arguments - Adjustment of the valid (mandatory) arguments

View File

@ -30,8 +30,8 @@ Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#ifndef createPhi_H #ifndef compressibleCreatePhi_H
#define createPhi_H #define compressibleCreatePhi_H
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -74,13 +74,7 @@ mutRoughWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF), mutWallFunctionFvPatchScalarField(p, iF),
rhoName_("rho"),
muName_("mu"),
kName_("k"),
Cmu_(0.09),
kappa_(0.41),
E_(9.8),
Ks_(p.size(), 0.0), Ks_(p.size(), 0.0),
Cs_(p.size(), 0.0) Cs_(p.size(), 0.0)
{} {}
@ -95,13 +89,7 @@ mutRoughWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), mutWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
rhoName_(ptf.rhoName_),
muName_(ptf.muName_),
kName_(ptf.kName_),
Cmu_(0.09),
kappa_(0.41),
E_(9.8),
Ks_(ptf.Ks_, mapper), Ks_(ptf.Ks_, mapper),
Cs_(ptf.Cs_, mapper) Cs_(ptf.Cs_, mapper)
{} {}
@ -115,13 +103,7 @@ mutRoughWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), mutWallFunctionFvPatchScalarField(p, iF, dict),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
muName_(dict.lookupOrDefault<word>("mu", "mu")),
kName_(dict.lookupOrDefault<word>("k", "k")),
Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)),
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
E_(dict.lookupOrDefault<scalar>("E", 9.8)),
Ks_("Ks", dict, p.size()), Ks_("Ks", dict, p.size()),
Cs_("Cs", dict, p.size()) Cs_("Cs", dict, p.size())
{} {}
@ -133,13 +115,7 @@ mutRoughWallFunctionFvPatchScalarField
const mutRoughWallFunctionFvPatchScalarField& rwfpsf const mutRoughWallFunctionFvPatchScalarField& rwfpsf
) )
: :
fixedValueFvPatchScalarField(rwfpsf), mutWallFunctionFvPatchScalarField(rwfpsf),
rhoName_(rwfpsf.rhoName_),
muName_(rwfpsf.muName_),
kName_(rwfpsf.kName_),
Cmu_(rwfpsf.Cmu_),
kappa_(rwfpsf.kappa_),
E_(rwfpsf.E_),
Ks_(rwfpsf.Ks_), Ks_(rwfpsf.Ks_),
Cs_(rwfpsf.Cs_) Cs_(rwfpsf.Cs_)
{} {}
@ -152,13 +128,7 @@ mutRoughWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(rwfpsf, iF), mutWallFunctionFvPatchScalarField(rwfpsf, iF),
rhoName_(rwfpsf.rhoName_),
muName_(rwfpsf.muName_),
kName_(rwfpsf.kName_),
Cmu_(rwfpsf.Cmu_),
kappa_(rwfpsf.kappa_),
E_(rwfpsf.E_),
Ks_(rwfpsf.Ks_), Ks_(rwfpsf.Ks_),
Cs_(rwfpsf.Cs_) Cs_(rwfpsf.Cs_)
{} {}
@ -171,7 +141,7 @@ void mutRoughWallFunctionFvPatchScalarField::autoMap
const fvPatchFieldMapper& m const fvPatchFieldMapper& m
) )
{ {
fixedValueFvPatchScalarField::autoMap(m); mutWallFunctionFvPatchScalarField::autoMap(m);
Ks_.autoMap(m); Ks_.autoMap(m);
Cs_.autoMap(m); Cs_.autoMap(m);
} }
@ -183,7 +153,7 @@ void mutRoughWallFunctionFvPatchScalarField::rmap
const labelList& addr const labelList& addr
) )
{ {
fixedValueFvPatchScalarField::rmap(ptf, addr); mutWallFunctionFvPatchScalarField::rmap(ptf, addr);
const mutRoughWallFunctionFvPatchScalarField& nrwfpsf = const mutRoughWallFunctionFvPatchScalarField& nrwfpsf =
refCast<const mutRoughWallFunctionFvPatchScalarField>(ptf); refCast<const mutRoughWallFunctionFvPatchScalarField>(ptf);
@ -193,23 +163,22 @@ void mutRoughWallFunctionFvPatchScalarField::rmap
} }
void mutRoughWallFunctionFvPatchScalarField::updateCoeffs() tmp<scalarField> mutRoughWallFunctionFvPatchScalarField::calcMut() const
{ {
const label patchI = patch().index();
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties"); const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
scalar yPlusLam = rasModel.yPlusLam(kappa_, E_); const scalar yPlusLam = rasModel.yPlusLam(kappa_, E_);
const scalarField& y = rasModel.y()[patch().index()]; const scalarField& y = rasModel.y()[patchI];
const scalarField& rhow = rasModel.rho().boundaryField()[patchI];
const tmp<volScalarField> tk = rasModel.k();
const volScalarField& k = tk();
const scalarField& muw = rasModel.mu().boundaryField()[patchI];
const scalar Cmu25 = pow(Cmu_, 0.25); const scalar Cmu25 = pow(Cmu_, 0.25);
const scalarField& rhow = tmp<scalarField> tmutw(new scalarField(patch().size(), 0.0));
patch().lookupPatchField<volScalarField, scalar>(rhoName_); scalarField& mutw = tmutw();
const scalarField& k = db().lookupObject<volScalarField>(kName_);
const scalarField& muw =
patch().lookupPatchField<volScalarField, scalar>(muName_);
scalarField& mutw = *this;
forAll(mutw, faceI) forAll(mutw, faceI)
{ {
@ -243,23 +212,15 @@ void mutRoughWallFunctionFvPatchScalarField::updateCoeffs()
mutw[faceI] = mutw[faceI] =
muw[faceI]*(yPlus*kappa_/log(max(Edash*yPlus, 1+1e-4)) - 1); muw[faceI]*(yPlus*kappa_/log(max(Edash*yPlus, 1+1e-4)) - 1);
} }
else
{
mutw[faceI] = 0.0;
}
} }
return tmutw;
} }
void mutRoughWallFunctionFvPatchScalarField::write(Ostream& os) const void mutRoughWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fvPatchField<scalar>::write(os); fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "mu", "mu", muName_);
writeEntryIfDifferent<word>(os, "k", "k", kName_);
os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;
Cs_.writeEntry("Cs", os); Cs_.writeEntry("Cs", os);
Ks_.writeEntry("Ks", os); Ks_.writeEntry("Ks", os);
writeEntry("value", os); writeEntry("value", os);

View File

@ -43,7 +43,7 @@ SourceFiles
#ifndef mutRoughWallFunctionFvPatchScalarField_H #ifndef mutRoughWallFunctionFvPatchScalarField_H
#define mutRoughWallFunctionFvPatchScalarField_H #define mutRoughWallFunctionFvPatchScalarField_H
#include "fixedValueFvPatchFields.H" #include "mutWallFunctionFvPatchScalarField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -60,27 +60,11 @@ namespace RASModels
class mutRoughWallFunctionFvPatchScalarField class mutRoughWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public mutWallFunctionFvPatchScalarField
{ {
// Private data protected:
//- Name of density field // Protected data
word rhoName_;
//- Name of laminar viscosity field
word muName_;
//- Name of turbulence kinetic energy field
word kName_;
//- Cmu coefficient
scalar Cmu_;
//- Von-karman constant
scalar kappa_;
//- E coefficient
scalar E_;
//- Roughness height //- Roughness height
scalarField Ks_; scalarField Ks_;
@ -92,7 +76,10 @@ class mutRoughWallFunctionFvPatchScalarField
// Private member functions // Private member functions
//- Compute the roughness function //- Compute the roughness function
scalar fnRough(const scalar KsPlus, const scalar Cs) const; virtual scalar fnRough(const scalar KsPlus, const scalar Cs) const;
//- Calculate the turbulence viscosity
virtual tmp<scalarField> calcMut() const;
public: public:
@ -181,16 +168,11 @@ public:
const labelList& const labelList&
); );
// Evaluation functions
//- Update the coefficients associated with the patch field
virtual void updateCoeffs();
// I-O // I-O
//- Write //- Write
void write(Ostream&) const; virtual void write(Ostream&) const;
}; };

View File

@ -27,6 +27,7 @@ License
#include "mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField.H" #include "mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField.H"
#include "fvPatchFieldMapper.H" #include "fvPatchFieldMapper.H"
#include "volFields.H" #include "volFields.H"
#include "RASModel.H"
#include "addToRunTimeSelectionTable.H" #include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -47,12 +48,7 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF), mutWallFunctionFvPatchScalarField(p, iF),
UName_("U"),
rhoName_("rho"),
muName_("mu"),
kappa_(0.41),
E_(9.8),
roughnessHeight_(pTraits<scalar>::zero), roughnessHeight_(pTraits<scalar>::zero),
roughnessConstant_(pTraits<scalar>::zero), roughnessConstant_(pTraits<scalar>::zero),
roughnessFudgeFactor_(pTraits<scalar>::zero) roughnessFudgeFactor_(pTraits<scalar>::zero)
@ -68,12 +64,7 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), mutWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
UName_(ptf.UName_),
rhoName_(ptf.rhoName_),
muName_(ptf.muName_),
kappa_(ptf.kappa_),
E_(ptf.E_),
roughnessHeight_(ptf.roughnessHeight_), roughnessHeight_(ptf.roughnessHeight_),
roughnessConstant_(ptf.roughnessConstant_), roughnessConstant_(ptf.roughnessConstant_),
roughnessFudgeFactor_(ptf.roughnessFudgeFactor_) roughnessFudgeFactor_(ptf.roughnessFudgeFactor_)
@ -88,12 +79,7 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), mutWallFunctionFvPatchScalarField(p, iF, dict),
UName_(dict.lookupOrDefault<word>("U", "U")),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
muName_(dict.lookupOrDefault<word>("mu", "mu")),
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
E_(dict.lookupOrDefault<scalar>("E", 9.8)),
roughnessHeight_(readScalar(dict.lookup("roughnessHeight"))), roughnessHeight_(readScalar(dict.lookup("roughnessHeight"))),
roughnessConstant_(readScalar(dict.lookup("roughnessConstant"))), roughnessConstant_(readScalar(dict.lookup("roughnessConstant"))),
roughnessFudgeFactor_(readScalar(dict.lookup("roughnessFudgeFactor"))) roughnessFudgeFactor_(readScalar(dict.lookup("roughnessFudgeFactor")))
@ -106,12 +92,7 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
const mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField& rwfpsf const mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField& rwfpsf
) )
: :
fixedValueFvPatchScalarField(rwfpsf), mutWallFunctionFvPatchScalarField(rwfpsf),
UName_(rwfpsf.UName_),
rhoName_(rwfpsf.rhoName_),
muName_(rwfpsf.muName_),
kappa_(rwfpsf.kappa_),
E_(rwfpsf.E_),
roughnessHeight_(rwfpsf.roughnessHeight_), roughnessHeight_(rwfpsf.roughnessHeight_),
roughnessConstant_(rwfpsf.roughnessConstant_), roughnessConstant_(rwfpsf.roughnessConstant_),
roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_) roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_)
@ -125,12 +106,7 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(rwfpsf, iF), mutWallFunctionFvPatchScalarField(rwfpsf, iF),
UName_(rwfpsf.UName_),
rhoName_(rwfpsf.rhoName_),
muName_(rwfpsf.muName_),
kappa_(rwfpsf.kappa_),
E_(rwfpsf.E_),
roughnessHeight_(rwfpsf.roughnessHeight_), roughnessHeight_(rwfpsf.roughnessHeight_),
roughnessConstant_(rwfpsf.roughnessConstant_), roughnessConstant_(rwfpsf.roughnessConstant_),
roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_) roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_)
@ -139,28 +115,24 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate tmp<scalarField>
( mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::calcMut() const
const Pstream::commsTypes
)
{ {
const scalar yPlusLam = 11.225; const label patchI = patch().index();
// The reciprical of the distance to the adjacent cell centre. const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
const scalarField& ry = patch().deltaCoeffs(); const scalar yPlusLam = rasModel.yPlusLam(kappa_, E_);
const scalarField& y = rasModel.y()[patchI];
const fvPatchVectorField& U = const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
patch().lookupPatchField<volVectorField, vector>(UName_); const scalarField& muw = rasModel.mu().boundaryField()[patchI];
const fvPatchScalarField& rho = scalarField magUp = mag(Uw.patchInternalField() - Uw);
patch().lookupPatchField<volScalarField, scalar>(rhoName_);
// The flow velocity at the adjacent cell centre. const fvPatchScalarField& rho = rasModel.rho().boundaryField()[patchI];
scalarField magUp = mag(U.patchInternalField() - U);
const scalarField& muw = tmp<scalarField> tmutw(new scalarField(patch().size(), 0.0));
patch().lookupPatchField<volScalarField, scalar>(muName_); scalarField& mutw = tmutw();
scalarField& mutw = *this;
if (roughnessHeight_ > 0.0) if (roughnessHeight_ > 0.0)
{ {
@ -177,7 +149,7 @@ void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
forAll(mutw, facei) forAll(mutw, facei)
{ {
const scalar magUpara = magUp[facei]; const scalar magUpara = magUp[facei];
const scalar Re = rho[facei]*magUpara/(muw[facei]*ry[facei]); const scalar Re = rho[facei]*magUpara*y[facei]/muw[facei];
const scalar kappaRe = kappa_*Re; const scalar kappaRe = kappa_*Re;
scalar yPlus = yPlusLam; scalar yPlus = yPlusLam;
@ -185,7 +157,7 @@ void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
int iter = 0; int iter = 0;
scalar yPlusLast = 0.0; scalar yPlusLast = 0.0;
scalar dKsPlusdYPlus = roughnessHeight_*ry[facei]; scalar dKsPlusdYPlus = roughnessHeight_/y[facei];
// Enforce the roughnessHeight to be less than the distance to // Enforce the roughnessHeight to be less than the distance to
// the first cell centre. // the first cell centre.
@ -194,18 +166,17 @@ void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
dKsPlusdYPlus = 1; dKsPlusdYPlus = 1;
} }
// Fudge factor to get results to be similar to fluent // Additional tuning parameter (fudge factor) - nominally = 1
// (at least difference between rough and smooth).
dKsPlusdYPlus *= roughnessFudgeFactor_; dKsPlusdYPlus *= roughnessFudgeFactor_;
do do
{ {
yPlusLast = yPlus; yPlusLast = yPlus;
// The non-dimensional roughness height. // The non-dimensional roughness height
scalar KsPlus = yPlus*dKsPlusdYPlus; scalar KsPlus = yPlus*dKsPlusdYPlus;
// The extra term in the law-of-the-wall. // The extra term in the law-of-the-wall
scalar G = 0.0; scalar G = 0.0;
scalar yPlusGPrime = 0.0; scalar yPlusGPrime = 0.0;
@ -238,7 +209,7 @@ void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
} }
else else
{ {
// Ensure immediate end and mutw = 0. // Ensure immediate end and mutw = 0
yPlus = 0; yPlus = 0;
} }
@ -253,20 +224,16 @@ void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
{ {
mutw[facei] = muw[facei]*(yPlus*yPlus/Re - 1); mutw[facei] = muw[facei]*(yPlus*yPlus/Re - 1);
} }
else
{
mutw[facei] = 0.0;
}
} }
} }
} }
else else
{ {
// Smooth Walls. // Smooth Walls
forAll(mutw, facei) forAll(mutw, facei)
{ {
const scalar magUpara = magUp[facei]; const scalar magUpara = magUp[facei];
const scalar Re = rho[facei]*magUpara/(muw[facei]*ry[facei]); const scalar Re = rho[facei]*magUpara*y[facei]/muw[facei];
const scalar kappaRe = kappa_*Re; const scalar kappaRe = kappa_*Re;
scalar yPlus = yPlusLam; scalar yPlus = yPlusLam;
@ -290,12 +257,23 @@ void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
{ {
mutw[facei] = muw[facei]*(yPlus*yPlus/Re - 1); mutw[facei] = muw[facei]*(yPlus*yPlus/Re - 1);
} }
else }
}
return tmutw;
}
tmp<scalarField>
mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::yPlus() const
{ {
mutw[facei] = 0.0; notImplemented
} (
} "mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::yPlus()"
} "const"
);
return tmp<scalarField>(NULL);
} }
@ -305,11 +283,6 @@ void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::write
) const ) const
{ {
fixedValueFvPatchScalarField::write(os); fixedValueFvPatchScalarField::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "mu", "mu", muName_);
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;
os.writeKeyword("roughnessHeight") os.writeKeyword("roughnessHeight")
<< roughnessHeight_ << token::END_STATEMENT << nl; << roughnessHeight_ << token::END_STATEMENT << nl;
os.writeKeyword("roughnessConstant") os.writeKeyword("roughnessConstant")

View File

@ -37,7 +37,7 @@ SourceFiles
#ifndef mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H #ifndef mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H
#define mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H #define mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H
#include "fixedValueFvPatchFields.H" #include "mutWallFunctionFvPatchScalarField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -54,25 +54,11 @@ Class mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField Declaration
class mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField class mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public mutWallFunctionFvPatchScalarField
{ {
// Private data protected:
//- Name of velocity field
word UName_;
//- Name of density field
word rhoName_;
//- Name of laminar viscosity field
word muName_;
//- Von Karman constant
scalar kappa_;
//- E coefficient
scalar E_;
// Protected data
// Roughness parameters // Roughness parameters
@ -86,6 +72,12 @@ class mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
scalar roughnessFudgeFactor_; scalar roughnessFudgeFactor_;
// Protected member functions
//- Calculate the turbulence viscosity
virtual tmp<scalarField> calcMut() const;
public: public:
//- Runtime type information //- Runtime type information
@ -206,13 +198,12 @@ public:
// Evaluation functions // Evaluation functions
//- Evaluate the patchField //- Calculate and return the yPlus at the boundary
virtual void evaluate virtual tmp<scalarField> yPlus() const;
(
const Pstream::commsTypes commsType=Pstream::blocking
);
// I-O
//- Write //- Write
virtual void write(Ostream& os) const; virtual void write(Ostream& os) const;
}; };

View File

@ -48,12 +48,7 @@ mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF), mutWallFunctionFvPatchScalarField(p, iF)
UName_("U"),
rhoName_("rho"),
muName_("mu"),
kappa_(0.41),
E_(9.8)
{} {}
@ -66,12 +61,7 @@ mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), mutWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
UName_(ptf.UName_),
rhoName_(ptf.rhoName_),
muName_(ptf.muName_),
kappa_(ptf.kappa_),
E_(ptf.E_)
{} {}
@ -83,12 +73,7 @@ mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), mutWallFunctionFvPatchScalarField(p, iF, dict)
UName_(dict.lookupOrDefault<word>("U", "U")),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
muName_(dict.lookupOrDefault<word>("mu", "mu")),
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
E_(dict.lookupOrDefault<scalar>("E", 9.8))
{} {}
@ -98,12 +83,7 @@ mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const mutSpalartAllmarasStandardWallFunctionFvPatchScalarField& sawfpsf const mutSpalartAllmarasStandardWallFunctionFvPatchScalarField& sawfpsf
) )
: :
fixedValueFvPatchScalarField(sawfpsf), mutWallFunctionFvPatchScalarField(sawfpsf)
UName_(sawfpsf.UName_),
rhoName_(sawfpsf.rhoName_),
muName_(sawfpsf.muName_),
kappa_(sawfpsf.kappa_),
E_(sawfpsf.E_)
{} {}
@ -114,46 +94,37 @@ mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(sawfpsf, iF), mutWallFunctionFvPatchScalarField(sawfpsf, iF)
UName_(sawfpsf.UName_),
rhoName_(sawfpsf.rhoName_),
muName_(sawfpsf.muName_),
kappa_(sawfpsf.kappa_),
E_(sawfpsf.E_)
{} {}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::evaluate tmp<scalarField>
( mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::calcMut() const
const Pstream::commsTypes
)
{ {
const label patchI = patch().index();
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties"); const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
scalar yPlusLam = rasModel.yPlusLam(kappa_, E_); const scalar yPlusLam = rasModel.yPlusLam(kappa_, E_);
const scalarField& y = rasModel.y()[patchI];
const scalarField& ry = patch().deltaCoeffs(); const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
const fvPatchVectorField& U = const scalarField magUp = mag(Uw.patchInternalField() - Uw);
patch().lookupPatchField<volVectorField, vector>(UName_);
scalarField magUp = mag(U.patchInternalField() - U); const fvPatchScalarField& rhow = rasModel.rho().boundaryField()[patchI];
const scalarField& rhow = const fvPatchScalarField& muw = rasModel.mu().boundaryField()[patchI];
patch().lookupPatchField<volScalarField, scalar>(rhoName_);
const scalarField& muw = tmp<scalarField> tmutw(new scalarField(patch().size(), 0.0));
patch().lookupPatchField<volScalarField, scalar>(muName_); scalarField& mutw = tmutw();
scalarField& mutw = *this;
scalarField magFaceGradU = mag(U.snGrad());
forAll(mutw, faceI) forAll(mutw, faceI)
{ {
scalar magUpara = magUp[faceI]; scalar magUpara = magUp[faceI];
scalar kappaRe = kappa_*magUpara/((muw[faceI]/rhow[faceI])*ry[faceI]); scalar kappaRe = kappa_*magUpara*y[faceI]/(muw[faceI]/rhow[faceI]);
scalar yPlus = yPlusLam; scalar yPlus = yPlusLam;
scalar ryPlusLam = 1.0/yPlus; scalar ryPlusLam = 1.0/yPlus;
@ -170,13 +141,24 @@ void mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::evaluate
if (yPlus > yPlusLam) if (yPlus > yPlusLam)
{ {
mutw[faceI] = muw[faceI]*(yPlus*kappa_/log(E_*yPlus) - 1); mutw[faceI] = muw[faceI]*(yPlus*kappa_/log(E_*yPlus) - 1.0);
} }
else }
return tmutw;
}
tmp<scalarField>
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::yPlus() const
{ {
mutw[faceI] = 0.0; notImplemented
} (
} "mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::yPlus() "
"const"
);
return tmp<scalarField>(NULL);
} }
@ -186,9 +168,6 @@ void mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::write
) const ) const
{ {
fvPatchField<scalar>::write(os); fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "mu", "mu", muName_);
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl; os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl; os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;
writeEntry("value", os); writeEntry("value", os);

View File

@ -37,7 +37,7 @@ SourceFiles
#ifndef mutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H #ifndef mutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H
#define mutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H #define mutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H
#include "fixedValueFvPatchFields.H" #include "mutWallFunctionFvPatchScalarField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -54,24 +54,14 @@ namespace RASModels
class mutSpalartAllmarasStandardWallFunctionFvPatchScalarField class mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public mutWallFunctionFvPatchScalarField
{ {
// Private data protected:
//- Name of velocity field // Protected member functions
word UName_;
//- Name of density field //- Calculate the turbulence viscosity
word rhoName_; virtual tmp<scalarField> calcMut() const;
//- Name of laminar viscosity field
word muName_;
//- Von Karman constant
scalar kappa_;
//- E coefficient
scalar E_;
public: public:
@ -154,11 +144,11 @@ public:
// Evaluation functions // Evaluation functions
//- Evaluate the patchField //- Calculate and return the yPlus at the boundary
virtual void evaluate virtual tmp<scalarField> yPlus() const;
(
const Pstream::commsTypes commsType=Pstream::blocking
); // I-O
//- Write //- Write
virtual void write(Ostream& os) const; virtual void write(Ostream& os) const;

View File

@ -27,6 +27,7 @@ License
#include "mutSpalartAllmarasWallFunctionFvPatchScalarField.H" #include "mutSpalartAllmarasWallFunctionFvPatchScalarField.H"
#include "fvPatchFieldMapper.H" #include "fvPatchFieldMapper.H"
#include "volFields.H" #include "volFields.H"
#include "RASModel.H"
#include "addToRunTimeSelectionTable.H" #include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -38,6 +39,72 @@ namespace compressible
namespace RASModels namespace RASModels
{ {
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
tmp<scalarField> mutSpalartAllmarasWallFunctionFvPatchScalarField::calcUTau
(
const scalarField& magGradU
) const
{
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
const scalarField& y = rasModel.y()[patch().index()];
const fvPatchVectorField& Uw =
rasModel.U().boundaryField()[patch().index()];
scalarField magUp = mag(Uw.patchInternalField() - Uw);
const fvPatchScalarField& rhow =
rasModel.rho().boundaryField()[patch().index()];
const fvPatchScalarField& muw =
rasModel.mu().boundaryField()[patch().index()];
const scalarField& mutw = *this;
tmp<scalarField> tuTau(new scalarField(patch().size(), 0.0));
scalarField& uTau = tuTau();
forAll(mutw, faceI)
{
scalar magUpara = magUp[faceI];
scalar ut =
sqrt((mutw[faceI] + muw[faceI])*magGradU[faceI]/rhow[faceI]);
if (ut > VSMALL)
{
int iter = 0;
scalar err = GREAT;
do
{
scalar kUu = min(kappa_*magUpara/ut, 50);
scalar fkUu = exp(kUu) - 1 - kUu*(1 + 0.5*kUu);
scalar f =
- ut*y[faceI]/(muw[faceI]/rhow[faceI])
+ magUpara/ut
+ 1/E_*(fkUu - 1.0/6.0*kUu*sqr(kUu));
scalar df =
y[faceI]/(muw[faceI]/rhow[faceI])
+ magUpara/sqr(ut)
+ 1/E_*kUu*fkUu/ut;
scalar uTauNew = ut + f/df;
err = mag((ut - uTauNew)/ut);
ut = uTauNew;
} while (ut > VSMALL && err > 0.01 && ++iter < 10);
uTau[faceI] = max(0.0, ut);
}
}
return tuTau;
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
mutSpalartAllmarasWallFunctionFvPatchScalarField:: mutSpalartAllmarasWallFunctionFvPatchScalarField::
@ -47,12 +114,7 @@ mutSpalartAllmarasWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF), mutWallFunctionFvPatchScalarField(p, iF)
UName_("U"),
rhoName_("rho"),
muName_("mu"),
kappa_(0.41),
E_(9.8)
{} {}
@ -65,12 +127,7 @@ mutSpalartAllmarasWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), mutWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
UName_(ptf.UName_),
rhoName_(ptf.rhoName_),
muName_(ptf.muName_),
kappa_(ptf.kappa_),
E_(ptf.E_)
{} {}
@ -82,12 +139,7 @@ mutSpalartAllmarasWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), mutWallFunctionFvPatchScalarField(p, iF, dict)
UName_(dict.lookupOrDefault<word>("U", "U")),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
muName_(dict.lookupOrDefault<word>("mu", "mu")),
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
E_(dict.lookupOrDefault<scalar>("E", 9.8))
{} {}
@ -97,12 +149,7 @@ mutSpalartAllmarasWallFunctionFvPatchScalarField
const mutSpalartAllmarasWallFunctionFvPatchScalarField& wfpsf const mutSpalartAllmarasWallFunctionFvPatchScalarField& wfpsf
) )
: :
fixedValueFvPatchScalarField(wfpsf), mutWallFunctionFvPatchScalarField(wfpsf)
UName_(wfpsf.UName_),
rhoName_(wfpsf.rhoName_),
muName_(wfpsf.muName_),
kappa_(wfpsf.kappa_),
E_(wfpsf.E_)
{} {}
@ -113,83 +160,45 @@ mutSpalartAllmarasWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(wfpsf, iF), mutWallFunctionFvPatchScalarField(wfpsf, iF)
UName_(wfpsf.UName_),
rhoName_(wfpsf.rhoName_),
muName_(wfpsf.muName_),
kappa_(wfpsf.kappa_),
E_(wfpsf.E_)
{} {}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void mutSpalartAllmarasWallFunctionFvPatchScalarField::evaluate tmp<scalarField>
( mutSpalartAllmarasWallFunctionFvPatchScalarField::calcMut() const
const Pstream::commsTypes
)
{ {
const scalarField& ry = patch().deltaCoeffs(); const label patchI = patch().index();
const fvPatchVectorField& U = const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
patch().lookupPatchField<volVectorField, vector>(UName_); const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
scalarField magUp = mag(U.patchInternalField() - U); const scalarField magGradU = mag(Uw.snGrad());
const scalarField& rhow = const scalarField& rhow = rasModel.rho().boundaryField()[patchI];
patch().lookupPatchField<volScalarField, scalar>(rhoName_);
const scalarField& muw = const scalarField& muw = rasModel.mu().boundaryField()[patchI];
patch().lookupPatchField<volScalarField, scalar>(muName_);
scalarField& mutw = *this; return max(0.0, rhow*sqr(calcUTau(magGradU))/magGradU - muw);
scalarField magFaceGradU = mag(U.snGrad());
forAll(mutw, faceI)
{
scalar magUpara = magUp[faceI];
scalar utau =
sqrt((mutw[faceI] + muw[faceI])*magFaceGradU[faceI]/rhow[faceI]);
if (utau > VSMALL)
{
int iter = 0;
scalar err = GREAT;
do
{
scalar kUu = min(kappa_*magUpara/utau, 50);
scalar fkUu = exp(kUu) - 1 - kUu*(1 + 0.5*kUu);
scalar f =
- utau/(ry[faceI]*(muw[faceI]/rhow[faceI]))
+ magUpara/utau
+ 1/E_*(fkUu - 1.0/6.0*kUu*sqr(kUu));
scalar df =
1.0/(ry[faceI]*(muw[faceI]/rhow[faceI]))
+ magUpara/sqr(utau)
+ 1/E_*kUu*fkUu/utau;
scalar utauNew = utau + f/df;
err = mag((utau - utauNew)/utau);
utau = utauNew;
} while (utau > VSMALL && err > 0.01 && ++iter < 10);
mutw[faceI] = max
(
rhow[faceI]*sqr(max(utau, 0))/magFaceGradU[faceI] - muw[faceI],
0.0
);
} }
else
tmp<scalarField>
mutSpalartAllmarasWallFunctionFvPatchScalarField::yPlus() const
{ {
mutw[faceI] = 0; const label patchI = patch().index();
}
} const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
const scalarField& y = rasModel.y()[patchI];
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
const scalarField& rhow = rasModel.rho().boundaryField()[patchI];
const scalarField& muw = rasModel.mu().boundaryField()[patchI];
return y*calcUTau(mag(Uw.snGrad()))/(muw/rhow);
} }
@ -199,9 +208,6 @@ void mutSpalartAllmarasWallFunctionFvPatchScalarField::write
) const ) const
{ {
fvPatchField<scalar>::write(os); fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "mu", "mu", muName_);
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl; os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl; os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;
writeEntry("value", os); writeEntry("value", os);

View File

@ -37,7 +37,7 @@ SourceFiles
#ifndef mutSpalartAllmarasWallFunctionFvPatchScalarField_H #ifndef mutSpalartAllmarasWallFunctionFvPatchScalarField_H
#define mutSpalartAllmarasWallFunctionFvPatchScalarField_H #define mutSpalartAllmarasWallFunctionFvPatchScalarField_H
#include "fixedValueFvPatchFields.H" #include "mutWallFunctionFvPatchScalarField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -54,24 +54,17 @@ namespace RASModels
class mutSpalartAllmarasWallFunctionFvPatchScalarField class mutSpalartAllmarasWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public mutWallFunctionFvPatchScalarField
{ {
// Private data protected:
//- Name of velocity field // Protected member functions
word UName_;
//- Name of density field //- Calculate the turbulence viscosity
word rhoName_; virtual tmp<scalarField> calcMut() const;
//- Name of laminar viscosity field //- Calculate the friction velocity
word muName_; virtual tmp<scalarField> calcUTau(const scalarField& magGradU) const;
//- Von Karman constant
scalar kappa_;
//- E coefficient
scalar E_;
public: public:
@ -147,11 +140,11 @@ public:
// Evaluation functions // Evaluation functions
//- Evaluate the patchField //- Calculate and return the yPlus at the boundary
virtual void evaluate virtual tmp<scalarField> yPlus() const;
(
const Pstream::commsTypes commsType=Pstream::blocking
); // I-O
//- Write //- Write
virtual void write(Ostream& os) const; virtual void write(Ostream& os) const;

View File

@ -28,6 +28,7 @@ License
#include "RASModel.H" #include "RASModel.H"
#include "fvPatchFieldMapper.H" #include "fvPatchFieldMapper.H"
#include "volFields.H" #include "volFields.H"
#include "wallFvPatch.H"
#include "addToRunTimeSelectionTable.H" #include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -39,27 +40,38 @@ namespace compressible
namespace RASModels namespace RASModels
{ {
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
void mutWallFunctionFvPatchScalarField::checkType()
{
if (!isA<wallFvPatch>(patch()))
{
FatalErrorIn("mutWallFunctionFvPatchScalarField::checkType()")
<< "Invalid wall function specification" << nl
<< " Patch type for patch " << patch().name()
<< " must be wall" << nl
<< " Current patch type is " << patch().type() << nl << endl
<< abort(FatalError);
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
mutWallFunctionFvPatchScalarField:: mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
mutWallFunctionFvPatchScalarField
( (
const fvPatch& p, const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF), fixedValueFvPatchScalarField(p, iF),
rhoName_("rho"),
muName_("mu"),
kName_("k"),
Cmu_(0.09), Cmu_(0.09),
kappa_(0.41), kappa_(0.41),
E_(9.8) E_(9.8)
{} {}
mutWallFunctionFvPatchScalarField:: mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
mutWallFunctionFvPatchScalarField
( (
const mutWallFunctionFvPatchScalarField& ptf, const mutWallFunctionFvPatchScalarField& ptf,
const fvPatch& p, const fvPatch& p,
@ -68,17 +80,13 @@ mutWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), fixedValueFvPatchScalarField(ptf, p, iF, mapper),
rhoName_(ptf.rhoName_),
muName_(ptf.muName_),
kName_(ptf.kName_),
Cmu_(ptf.Cmu_), Cmu_(ptf.Cmu_),
kappa_(ptf.kappa_), kappa_(ptf.kappa_),
E_(ptf.E_) E_(ptf.E_)
{} {}
mutWallFunctionFvPatchScalarField:: mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
mutWallFunctionFvPatchScalarField
( (
const fvPatch& p, const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF, const DimensionedField<scalar, volMesh>& iF,
@ -86,42 +94,31 @@ mutWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), fixedValueFvPatchScalarField(p, iF, dict),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
muName_(dict.lookupOrDefault<word>("mu", "mu")),
kName_(dict.lookupOrDefault<word>("k", "k")),
Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)), Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)),
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)), kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
E_(dict.lookupOrDefault<scalar>("E", 9.8)) E_(dict.lookupOrDefault<scalar>("E", 9.8))
{} {}
mutWallFunctionFvPatchScalarField:: mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
mutWallFunctionFvPatchScalarField
( (
const mutWallFunctionFvPatchScalarField& wfpsf const mutWallFunctionFvPatchScalarField& wfpsf
) )
: :
fixedValueFvPatchScalarField(wfpsf), fixedValueFvPatchScalarField(wfpsf),
rhoName_(wfpsf.rhoName_),
muName_(wfpsf.muName_),
kName_(wfpsf.kName_),
Cmu_(wfpsf.Cmu_), Cmu_(wfpsf.Cmu_),
kappa_(wfpsf.kappa_), kappa_(wfpsf.kappa_),
E_(wfpsf.E_) E_(wfpsf.E_)
{} {}
mutWallFunctionFvPatchScalarField:: mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
mutWallFunctionFvPatchScalarField
( (
const mutWallFunctionFvPatchScalarField& wfpsf, const mutWallFunctionFvPatchScalarField& wfpsf,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(wfpsf, iF), fixedValueFvPatchScalarField(wfpsf, iF),
rhoName_(wfpsf.rhoName_),
muName_(wfpsf.muName_),
kName_(wfpsf.kName_),
Cmu_(wfpsf.Cmu_), Cmu_(wfpsf.Cmu_),
kappa_(wfpsf.kappa_), kappa_(wfpsf.kappa_),
E_(wfpsf.E_) E_(wfpsf.E_)
@ -132,21 +129,27 @@ mutWallFunctionFvPatchScalarField
void mutWallFunctionFvPatchScalarField::updateCoeffs() void mutWallFunctionFvPatchScalarField::updateCoeffs()
{ {
operator==(calcMut());
fixedValueFvPatchScalarField::updateCoeffs();
}
tmp<scalarField> mutWallFunctionFvPatchScalarField::calcMut() const
{
const label patchI = patch().index();
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties"); const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
const scalar yPlusLam = rasModel.yPlusLam(kappa_, E_); const scalar yPlusLam = rasModel.yPlusLam(kappa_, E_);
const scalarField& y = rasModel.y()[patch().index()]; const scalarField& y = rasModel.y()[patchI];
const scalarField& rhow = rasModel.rho().boundaryField()[patchI];
const tmp<volScalarField> tk = rasModel.k();
const volScalarField& k = tk();
const scalarField& muw = rasModel.mu().boundaryField()[patchI];
const scalar Cmu25 = pow(Cmu_, 0.25); const scalar Cmu25 = pow(Cmu_, 0.25);
const scalarField& rhow = tmp<scalarField> tmutw(new scalarField(patch().size(), 0.0));
patch().lookupPatchField<volScalarField, scalar>(rhoName_); scalarField& mutw = tmutw();
const volScalarField& k = db().lookupObject<volScalarField>(kName_);
const scalarField& muw =
patch().lookupPatchField<volScalarField, scalar>(muName_);
scalarField& mutw = *this;
forAll(mutw, faceI) forAll(mutw, faceI)
{ {
@ -160,20 +163,32 @@ void mutWallFunctionFvPatchScalarField::updateCoeffs()
{ {
mutw[faceI] = muw[faceI]*(yPlus*kappa_/log(E_*yPlus) - 1); mutw[faceI] = muw[faceI]*(yPlus*kappa_/log(E_*yPlus) - 1);
} }
else }
return tmutw;
}
tmp<scalarField> mutWallFunctionFvPatchScalarField::yPlus() const
{ {
mutw[faceI] = 0.0; const label patchI = patch().index();
}
} const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
const scalarField& y = rasModel.y()[patchI];
const tmp<volScalarField> tk = rasModel.k();
const volScalarField& k = tk();
const scalarField kwc = k.boundaryField()[patchI].patchInternalField();
const scalarField& muw = rasModel.mu().boundaryField()[patchI];
const scalarField& rhow = rasModel.rho().boundaryField()[patchI];
return pow(Cmu_, 0.25)*y*sqrt(kwc)/(muw/rhow);
} }
void mutWallFunctionFvPatchScalarField::write(Ostream& os) const void mutWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fvPatchField<scalar>::write(os); fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "mu", "mu", muName_);
writeEntryIfDifferent<word>(os, "k", "k", kName_);
os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl; os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl; os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl; os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;

View File

@ -57,16 +57,9 @@ class mutWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public fixedValueFvPatchScalarField
{ {
// Private data protected:
//- Name of density field // Protected data
word rhoName_;
//- Name of laminar viscosity field
word muName_;
//- Name of turbulence kinetic energy field
word kName_;
//- Cmu coefficient //- Cmu coefficient
scalar Cmu_; scalar Cmu_;
@ -78,6 +71,15 @@ class mutWallFunctionFvPatchScalarField
scalar E_; scalar E_;
// Protected member functions
//- Check the type of the patch
virtual void checkType();
//- Calculate the turbulence viscosity
virtual tmp<scalarField> calcMut() const;
public: public:
//- Runtime type information //- Runtime type information
@ -151,6 +153,9 @@ public:
// Evaluation functions // Evaluation functions
//- Calculate and return the yPlus at the boundary
virtual tmp<scalarField> yPlus() const;
//- Update the coefficients associated with the patch field //- Update the coefficients associated with the patch field
virtual void updateCoeffs(); virtual void updateCoeffs();

View File

@ -39,7 +39,6 @@ namespace incompressible
namespace RASModels namespace RASModels
{ {
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
scalar nutRoughWallFunctionFvPatchScalarField::fnRough scalar nutRoughWallFunctionFvPatchScalarField::fnRough
@ -67,26 +66,19 @@ scalar nutRoughWallFunctionFvPatchScalarField::fnRough
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
nutRoughWallFunctionFvPatchScalarField:: nutRoughWallFunctionFvPatchScalarField::nutRoughWallFunctionFvPatchScalarField
nutRoughWallFunctionFvPatchScalarField
( (
const fvPatch& p, const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF), nutWallFunctionFvPatchScalarField(p, iF),
kName_("k"),
nuName_("nu"),
Cmu_(0.09),
kappa_(0.41),
E_(9.8),
Ks_(p.size(), 0.0), Ks_(p.size(), 0.0),
Cs_(p.size(), 0.0) Cs_(p.size(), 0.0)
{} {}
nutRoughWallFunctionFvPatchScalarField:: nutRoughWallFunctionFvPatchScalarField::nutRoughWallFunctionFvPatchScalarField
nutRoughWallFunctionFvPatchScalarField
( (
const nutRoughWallFunctionFvPatchScalarField& ptf, const nutRoughWallFunctionFvPatchScalarField& ptf,
const fvPatch& p, const fvPatch& p,
@ -94,66 +86,43 @@ nutRoughWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), nutWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
kName_(ptf.kName_),
nuName_(ptf.nuName_),
Cmu_(0.09),
kappa_(0.41),
E_(9.8),
Ks_(ptf.Ks_, mapper), Ks_(ptf.Ks_, mapper),
Cs_(ptf.Cs_, mapper) Cs_(ptf.Cs_, mapper)
{} {}
nutRoughWallFunctionFvPatchScalarField:: nutRoughWallFunctionFvPatchScalarField::nutRoughWallFunctionFvPatchScalarField
nutRoughWallFunctionFvPatchScalarField
( (
const fvPatch& p, const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF, const DimensionedField<scalar, volMesh>& iF,
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), nutWallFunctionFvPatchScalarField(p, iF, dict),
kName_(dict.lookupOrDefault<word>("k", "k")),
nuName_(dict.lookupOrDefault<word>("nu", "nu")),
Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)),
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
E_(dict.lookupOrDefault<scalar>("E", 9.8)),
Ks_("Ks", dict, p.size()), Ks_("Ks", dict, p.size()),
Cs_("Cs", dict, p.size()) Cs_("Cs", dict, p.size())
{} {}
nutRoughWallFunctionFvPatchScalarField:: nutRoughWallFunctionFvPatchScalarField::nutRoughWallFunctionFvPatchScalarField
nutRoughWallFunctionFvPatchScalarField
( (
const nutRoughWallFunctionFvPatchScalarField& rwfpsf const nutRoughWallFunctionFvPatchScalarField& rwfpsf
) )
: :
fixedValueFvPatchScalarField(rwfpsf), nutWallFunctionFvPatchScalarField(rwfpsf),
kName_(rwfpsf.kName_),
nuName_(rwfpsf.nuName_),
Cmu_(rwfpsf.Cmu_),
kappa_(rwfpsf.kappa_),
E_(rwfpsf.E_),
Ks_(rwfpsf.Ks_), Ks_(rwfpsf.Ks_),
Cs_(rwfpsf.Cs_) Cs_(rwfpsf.Cs_)
{} {}
nutRoughWallFunctionFvPatchScalarField:: nutRoughWallFunctionFvPatchScalarField::nutRoughWallFunctionFvPatchScalarField
nutRoughWallFunctionFvPatchScalarField
( (
const nutRoughWallFunctionFvPatchScalarField& rwfpsf, const nutRoughWallFunctionFvPatchScalarField& rwfpsf,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(rwfpsf, iF), nutWallFunctionFvPatchScalarField(rwfpsf, iF),
kName_(rwfpsf.kName_),
nuName_(rwfpsf.nuName_),
Cmu_(rwfpsf.Cmu_),
kappa_(rwfpsf.kappa_),
E_(rwfpsf.E_),
Ks_(rwfpsf.Ks_), Ks_(rwfpsf.Ks_),
Cs_(rwfpsf.Cs_) Cs_(rwfpsf.Cs_)
{} {}
@ -166,7 +135,7 @@ void nutRoughWallFunctionFvPatchScalarField::autoMap
const fvPatchFieldMapper& m const fvPatchFieldMapper& m
) )
{ {
fixedValueFvPatchScalarField::autoMap(m); nutWallFunctionFvPatchScalarField::autoMap(m);
Ks_.autoMap(m); Ks_.autoMap(m);
Cs_.autoMap(m); Cs_.autoMap(m);
} }
@ -178,30 +147,31 @@ void nutRoughWallFunctionFvPatchScalarField::rmap
const labelList& addr const labelList& addr
) )
{ {
fixedValueFvPatchScalarField::rmap(ptf, addr); nutWallFunctionFvPatchScalarField::rmap(ptf, addr);
const nutRoughWallFunctionFvPatchScalarField& nrwfpsf = const nutRoughWallFunctionFvPatchScalarField& nrwfpsf =
refCast<const nutRoughWallFunctionFvPatchScalarField>(ptf); refCast<const nutRoughWallFunctionFvPatchScalarField>(ptf);
Cs_.rmap(nrwfpsf.Cs_, addr);
Ks_.rmap(nrwfpsf.Ks_, addr); Ks_.rmap(nrwfpsf.Ks_, addr);
Cs_.rmap(nrwfpsf.Cs_, addr);
} }
void nutRoughWallFunctionFvPatchScalarField::updateCoeffs() tmp<scalarField> nutRoughWallFunctionFvPatchScalarField::calcNut() const
{ {
const RASModel& ras = db().lookupObject<RASModel>("RASProperties"); const label patchI = patch().index();
const scalar yPlusLam = ras.yPlusLam(kappa_, E_);
const scalarField& y = ras.y()[patch().index()]; const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
const scalar yPlusLam = rasModel.yPlusLam(kappa_, E_);
const scalarField& y = rasModel.y()[patchI];
const tmp<volScalarField> tk = rasModel.k();
const volScalarField& k = tk();
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
const scalar Cmu25 = pow(Cmu_, 0.25); const scalar Cmu25 = pow(Cmu_, 0.25);
const scalarField& k = db().lookupObject<volScalarField>(kName_); tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
scalarField& nutw = tnutw();
const scalarField& nuw =
patch().lookupPatchField<volScalarField, scalar>(nuName_);
scalarField& nutw = *this;
forAll(nutw, faceI) forAll(nutw, faceI)
{ {
@ -235,10 +205,6 @@ void nutRoughWallFunctionFvPatchScalarField::updateCoeffs()
), 0.5*limitingNutw ), 0.5*limitingNutw
); );
} }
else
{
nutw[faceI] = 0.0;
}
if (debug) if (debug)
{ {
@ -249,14 +215,14 @@ void nutRoughWallFunctionFvPatchScalarField::updateCoeffs()
<< endl; << endl;
} }
} }
return tnutw;
} }
void nutRoughWallFunctionFvPatchScalarField::write(Ostream& os) const void nutRoughWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fvPatchField<scalar>::write(os); fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "k", "k", kName_);
writeEntryIfDifferent<word>(os, "nu", "nu", nuName_);
os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl; os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl; os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl; os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;

View File

@ -43,7 +43,7 @@ SourceFiles
#ifndef nutRoughWallFunctionFvPatchScalarField_H #ifndef nutRoughWallFunctionFvPatchScalarField_H
#define nutRoughWallFunctionFvPatchScalarField_H #define nutRoughWallFunctionFvPatchScalarField_H
#include "fixedValueFvPatchFields.H" #include "nutWallFunctionFvPatchScalarField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -60,24 +60,11 @@ namespace RASModels
class nutRoughWallFunctionFvPatchScalarField class nutRoughWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public nutWallFunctionFvPatchScalarField
{ {
// Private data protected:
//- Name of turbulence kinetic energy field // Protected data
word kName_;
//- Name of laminar viscosity field
word nuName_;
//- Cmu coefficient
scalar Cmu_;
//- Von Karman constant
scalar kappa_;
//- E coefficient
scalar E_;
//- Roughness height //- Roughness height
scalarField Ks_; scalarField Ks_;
@ -86,10 +73,13 @@ class nutRoughWallFunctionFvPatchScalarField
scalarField Cs_; scalarField Cs_;
// Private member functions // Protected member functions
//- Compute the roughness function //- Compute the roughness function
scalar fnRough(const scalar KsPlus, const scalar Cs) const; virtual scalar fnRough(const scalar KsPlus, const scalar Cs) const;
//- Calculate the turbulence viscosity
virtual tmp<scalarField> calcNut() const;
public: public:
@ -166,10 +156,7 @@ public:
// Mapping functions // Mapping functions
//- Map (and resize as needed) from self given a mapping object //- Map (and resize as needed) from self given a mapping object
virtual void autoMap virtual void autoMap(const fvPatchFieldMapper&);
(
const fvPatchFieldMapper&
);
//- Reverse map the given fvPatchField onto this fvPatchField //- Reverse map the given fvPatchField onto this fvPatchField
virtual void rmap virtual void rmap
@ -178,16 +165,11 @@ public:
const labelList& const labelList&
); );
// Evaluation functions
//- Update the coefficients associated with the patch field
virtual void updateCoeffs();
// I-O // I-O
//- Write //- Write
void write(Ostream&) const; virtual void write(Ostream&) const;
}; };

View File

@ -25,6 +25,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField.H" #include "nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField.H"
#include "RASModel.H"
#include "fvPatchFieldMapper.H" #include "fvPatchFieldMapper.H"
#include "volFields.H" #include "volFields.H"
#include "addToRunTimeSelectionTable.H" #include "addToRunTimeSelectionTable.H"
@ -47,11 +48,7 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF), nutWallFunctionFvPatchScalarField(p, iF),
UName_("U"),
nuName_("nu"),
kappa_(0.41),
E_(9.8),
roughnessHeight_(pTraits<scalar>::zero), roughnessHeight_(pTraits<scalar>::zero),
roughnessConstant_(pTraits<scalar>::zero), roughnessConstant_(pTraits<scalar>::zero),
roughnessFudgeFactor_(pTraits<scalar>::zero) roughnessFudgeFactor_(pTraits<scalar>::zero)
@ -67,11 +64,7 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), nutWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
UName_(ptf.UName_),
nuName_(ptf.nuName_),
kappa_(ptf.kappa_),
E_(ptf.E_),
roughnessHeight_(ptf.roughnessHeight_), roughnessHeight_(ptf.roughnessHeight_),
roughnessConstant_(ptf.roughnessConstant_), roughnessConstant_(ptf.roughnessConstant_),
roughnessFudgeFactor_(ptf.roughnessFudgeFactor_) roughnessFudgeFactor_(ptf.roughnessFudgeFactor_)
@ -86,11 +79,7 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), nutWallFunctionFvPatchScalarField(p, iF, dict),
UName_(dict.lookupOrDefault<word>("U", "U")),
nuName_(dict.lookupOrDefault<word>("nu", "nu")),
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
E_(dict.lookupOrDefault<scalar>("E", 9.8)),
roughnessHeight_(readScalar(dict.lookup("roughnessHeight"))), roughnessHeight_(readScalar(dict.lookup("roughnessHeight"))),
roughnessConstant_(readScalar(dict.lookup("roughnessConstant"))), roughnessConstant_(readScalar(dict.lookup("roughnessConstant"))),
roughnessFudgeFactor_(readScalar(dict.lookup("roughnessFudgeFactor"))) roughnessFudgeFactor_(readScalar(dict.lookup("roughnessFudgeFactor")))
@ -103,11 +92,7 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
const nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField& rwfpsf const nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField& rwfpsf
) )
: :
fixedValueFvPatchScalarField(rwfpsf), nutWallFunctionFvPatchScalarField(rwfpsf),
UName_(rwfpsf.UName_),
nuName_(rwfpsf.nuName_),
kappa_(rwfpsf.kappa_),
E_(rwfpsf.E_),
roughnessHeight_(rwfpsf.roughnessHeight_), roughnessHeight_(rwfpsf.roughnessHeight_),
roughnessConstant_(rwfpsf.roughnessConstant_), roughnessConstant_(rwfpsf.roughnessConstant_),
roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_) roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_)
@ -121,11 +106,7 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(rwfpsf, iF), nutWallFunctionFvPatchScalarField(rwfpsf, iF),
UName_(rwfpsf.UName_),
nuName_(rwfpsf.nuName_),
kappa_(rwfpsf.kappa_),
E_(rwfpsf.E_),
roughnessHeight_(rwfpsf.roughnessHeight_), roughnessHeight_(rwfpsf.roughnessHeight_),
roughnessConstant_(rwfpsf.roughnessConstant_), roughnessConstant_(rwfpsf.roughnessConstant_),
roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_) roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_)
@ -134,31 +115,27 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate tmp<scalarField>
( nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::calcNut() const
const Pstream::commsTypes
)
{ {
const scalar yPlusLam = 11.225; const label patchI = patch().index();
// The reciprical of the distance to the adjacent cell centre. const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
const scalarField& ry = patch().deltaCoeffs(); const scalar yPlusLam = rasModel.yPlusLam(kappa_, E_);
const scalarField& y = rasModel.y()[patchI];
const fvPatchVectorField& U = const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
patch().lookupPatchField<volVectorField, vector>(UName_); const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
// The flow velocity at the adjacent cell centre. // The flow velocity at the adjacent cell centre
scalarField magUp = mag(U.patchInternalField() - U); scalarField magUp = mag(Uw.patchInternalField() - Uw);
const scalarField& nuw = tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
patch().lookupPatchField<volScalarField, scalar>(nuName_); scalarField& nutw = tnutw();
scalarField& nutw = *this;
scalarField magFaceGradU = mag(U.snGrad());
if (roughnessHeight_ > 0.0) if (roughnessHeight_ > 0.0)
{ {
// Rough Walls. // Rough Walls
const scalar c_1 = 1/(90 - 2.25) + roughnessConstant_; const scalar c_1 = 1/(90 - 2.25) + roughnessConstant_;
static const scalar c_2 = 2.25/(90 - 2.25); static const scalar c_2 = 2.25/(90 - 2.25);
static const scalar c_3 = 2.0*atan(1.0)/log(90/2.25); static const scalar c_3 = 2.0*atan(1.0)/log(90/2.25);
@ -171,7 +148,7 @@ void nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
forAll(nutw, facei) forAll(nutw, facei)
{ {
const scalar magUpara = magUp[facei]; const scalar magUpara = magUp[facei];
const scalar Re = magUpara/(nuw[facei]*ry[facei]); const scalar Re = magUpara*y[facei]/nuw[facei];
const scalar kappaRe = kappa_*Re; const scalar kappaRe = kappa_*Re;
scalar yPlus = yPlusLam; scalar yPlus = yPlusLam;
@ -179,17 +156,16 @@ void nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
int iter = 0; int iter = 0;
scalar yPlusLast = 0.0; scalar yPlusLast = 0.0;
scalar dKsPlusdYPlus = roughnessHeight_*ry[facei]; scalar dKsPlusdYPlus = roughnessHeight_/y[facei];
// Enforce the roughnessHeight to be less than the distance to // Enforce the roughnessHeight to be less than the distance to
// the first cell centre. // the first cell centre
if (dKsPlusdYPlus > 1) if (dKsPlusdYPlus > 1)
{ {
dKsPlusdYPlus = 1; dKsPlusdYPlus = 1;
} }
// Fudge factor to get results to be similar to fluent // Additional tuning parameter (fudge factor) - nominally = 1
// (at least difference between rough and smooth).
dKsPlusdYPlus *= roughnessFudgeFactor_; dKsPlusdYPlus *= roughnessFudgeFactor_;
do do
@ -243,10 +219,6 @@ void nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
{ {
nutw[facei] = nuw[facei]*(yPlus*yPlus/Re - 1); nutw[facei] = nuw[facei]*(yPlus*yPlus/Re - 1);
} }
else
{
nutw[facei] = 0.0;
}
} }
} }
} }
@ -256,7 +228,7 @@ void nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
forAll(nutw, facei) forAll(nutw, facei)
{ {
const scalar magUpara = magUp[facei]; const scalar magUpara = magUp[facei];
const scalar Re = magUpara/(nuw[facei]*ry[facei]); const scalar Re = magUpara*y[facei]/nuw[facei];
const scalar kappaRe = kappa_*Re; const scalar kappaRe = kappa_*Re;
scalar yPlus = yPlusLam; scalar yPlus = yPlusLam;
@ -276,12 +248,23 @@ void nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
{ {
nutw[facei] = nuw[facei]*(yPlus*yPlus/Re - 1); nutw[facei] = nuw[facei]*(yPlus*yPlus/Re - 1);
} }
else }
}
return tnutw;
}
tmp<scalarField>
nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::yPlus() const
{ {
nutw[facei] = 0.0; notImplemented
} (
} "nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::yPlus()"
} "const"
);
return tmp<scalarField>(NULL);
} }
@ -291,8 +274,6 @@ void nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::write
) const ) const
{ {
fixedValueFvPatchScalarField::write(os); fixedValueFvPatchScalarField::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "nu", "nu", nuName_);
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl; os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl; os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;
os.writeKeyword("roughnessHeight") os.writeKeyword("roughnessHeight")

View File

@ -37,7 +37,7 @@ SourceFiles
#ifndef nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H #ifndef nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H
#define nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H #define nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H
#include "fixedValueFvPatchFields.H" #include "nutWallFunctionFvPatchScalarField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -54,22 +54,10 @@ Class nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField Declaration
class nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField class nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public nutWallFunctionFvPatchScalarField
{ {
// Private data // Private data
//- Name of velocity field
word UName_;
//- Name of laminar viscosity field
word nuName_;
//- Von Karman constant
scalar kappa_;
//- E coefficient
scalar E_;
// Roughness model parameters // Roughness model parameters
//- Height //- Height
@ -82,6 +70,12 @@ class nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
scalar roughnessFudgeFactor_; scalar roughnessFudgeFactor_;
// Protected member functions
//- Calculate the turbulence viscosity
virtual tmp<scalarField> calcNut() const;
public: public:
//- Runtime type information //- Runtime type information
@ -201,15 +195,16 @@ public:
} }
// I-O
// Evaluation functions // Evaluation functions
//- Evaluate the patchField //- Calculate and return the yPlus at the boundary
virtual void evaluate virtual tmp<scalarField> yPlus() const;
(
const Pstream::commsTypes commsType=Pstream::blocking
);
// I-O
//- Write //- Write
virtual void write(Ostream& os) const; virtual void write(Ostream& os) const;
}; };

View File

@ -48,11 +48,7 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF), nutWallFunctionFvPatchScalarField(p, iF)
UName_("U"),
nuName_("nu"),
kappa_(0.41),
E_(9.8)
{} {}
@ -65,11 +61,7 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), nutWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
UName_(ptf.UName_),
nuName_(ptf.nuName_),
kappa_(ptf.kappa_),
E_(ptf.E_)
{} {}
@ -81,11 +73,7 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), nutWallFunctionFvPatchScalarField(p, iF, dict)
UName_(dict.lookupOrDefault<word>("U", "U")),
nuName_(dict.lookupOrDefault<word>("nu", "nu")),
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
E_(dict.lookupOrDefault<scalar>("E", 9.8))
{} {}
@ -95,11 +83,7 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const nutSpalartAllmarasStandardWallFunctionFvPatchScalarField& sawfpsf const nutSpalartAllmarasStandardWallFunctionFvPatchScalarField& sawfpsf
) )
: :
fixedValueFvPatchScalarField(sawfpsf), nutWallFunctionFvPatchScalarField(sawfpsf)
UName_(sawfpsf.UName_),
nuName_(sawfpsf.nuName_),
kappa_(sawfpsf.kappa_),
E_(sawfpsf.E_)
{} {}
@ -110,40 +94,33 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(sawfpsf, iF), nutWallFunctionFvPatchScalarField(sawfpsf, iF)
UName_(sawfpsf.UName_),
nuName_(sawfpsf.nuName_),
kappa_(sawfpsf.kappa_),
E_(sawfpsf.E_)
{} {}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::evaluate tmp<scalarField>
( nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::calcNut() const
const Pstream::commsTypes
)
{ {
const label patchI = patch().index();
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties"); const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
const scalar yPlusLam = rasModel.yPlusLam(kappa_, E_); const scalar yPlusLam = rasModel.yPlusLam(kappa_, E_);
const scalarField& y = rasModel.y()[patchI];
const scalarField& ry = patch().deltaCoeffs(); const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
const fvPatchVectorField& U = const scalarField magUp = mag(Uw.patchInternalField() - Uw);
patch().lookupPatchField<volVectorField, vector>(UName_);
scalarField magUp = mag(U.patchInternalField() - U); const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
const scalarField& nuw = tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
patch().lookupPatchField<volScalarField, scalar>(nuName_); scalarField& nutw = tnutw();
scalarField& nutw = *this;
forAll(nutw, facei) forAll(nutw, facei)
{ {
scalar magUpara = magUp[facei]; scalar kappaRe = kappa_*magUp[facei]*y[facei]/nuw[facei];
scalar kappaRe = kappa_*magUpara/(nuw[facei]*ry[facei]);
scalar yPlus = yPlusLam; scalar yPlus = yPlusLam;
scalar ryPlusLam = 1.0/yPlus; scalar ryPlusLam = 1.0/yPlus;
@ -160,13 +137,24 @@ void nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::evaluate
if (yPlus > yPlusLam) if (yPlus > yPlusLam)
{ {
nutw[facei] = nuw[facei]*(yPlus*kappa_/log(E_*yPlus) - 1); nutw[facei] = nuw[facei]*(yPlus*kappa_/log(E_*yPlus) - 1.0);
} }
else }
return tnutw;
}
tmp<scalarField>
nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::yPlus() const
{ {
nutw[facei] = 0.0; notImplemented
} (
} "nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::yPlus() "
"const"
);
return tmp<scalarField>(NULL);
} }
@ -176,8 +164,6 @@ void nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::write
) const ) const
{ {
fixedValueFvPatchScalarField::write(os); fixedValueFvPatchScalarField::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "nu", "nu", nuName_);
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl; os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl; os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;
} }

View File

@ -37,7 +37,7 @@ SourceFiles
#ifndef nutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H #ifndef nutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H
#define nutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H #define nutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H
#include "fixedValueFvPatchFields.H" #include "nutWallFunctionFvPatchScalarField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -54,21 +54,14 @@ namespace RASModels
class nutSpalartAllmarasStandardWallFunctionFvPatchScalarField class nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public nutWallFunctionFvPatchScalarField
{ {
// Private data protected:
//- Name of velocity field // Protected member functions
word UName_;
//- Name of laminar viscosity field //- Calculate the turbulence viscosity
word nuName_; virtual tmp<scalarField> calcNut() const;
//- Von Karman constant
scalar kappa_;
//- E coefficient
scalar E_;
public: public:
@ -151,11 +144,11 @@ public:
// Evaluation functions // Evaluation functions
//- Evaluate the patchField //- Calculate and return the yPlus at the boundary
virtual void evaluate virtual tmp<scalarField> yPlus() const;
(
const Pstream::commsTypes commsType=Pstream::blocking
); // I-O
//- Write //- Write
virtual void write(Ostream& os) const; virtual void write(Ostream& os) const;

View File

@ -25,6 +25,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "nutSpalartAllmarasWallFunctionFvPatchScalarField.H" #include "nutSpalartAllmarasWallFunctionFvPatchScalarField.H"
#include "RASModel.H"
#include "fvPatchFieldMapper.H" #include "fvPatchFieldMapper.H"
#include "volFields.H" #include "volFields.H"
#include "addToRunTimeSelectionTable.H" #include "addToRunTimeSelectionTable.H"
@ -38,6 +39,66 @@ namespace incompressible
namespace RASModels namespace RASModels
{ {
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
tmp<scalarField> nutSpalartAllmarasWallFunctionFvPatchScalarField::calcUTau
(
const scalarField& magGradU
) const
{
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
const scalarField& y = rasModel.y()[patch().index()];
const fvPatchVectorField& Uw =
rasModel.U().boundaryField()[patch().index()];
scalarField magUp = mag(Uw.patchInternalField() - Uw);
const scalarField& nuw = rasModel.nu().boundaryField()[patch().index()];
const scalarField& nutw = *this;
tmp<scalarField> tuTau(new scalarField(patch().size(), 0.0));
scalarField& uTau = tuTau();
forAll(uTau, facei)
{
scalar magUpara = magUp[facei];
scalar ut = sqrt((nutw[facei] + nuw[facei])*magGradU[facei]);
if (ut > VSMALL)
{
int iter = 0;
scalar err = GREAT;
do
{
scalar kUu = min(kappa_*magUpara/ut, 50);
scalar fkUu = exp(kUu) - 1 - kUu*(1 + 0.5*kUu);
scalar f =
- ut*y[facei]/nuw[facei]
+ magUpara/ut
+ 1/E_*(fkUu - 1.0/6.0*kUu*sqr(kUu));
scalar df =
y[facei]/nuw[facei]
+ magUpara/sqr(ut)
+ 1/E_*kUu*fkUu/ut;
scalar uTauNew = ut + f/df;
err = mag((ut - uTauNew)/ut);
ut = uTauNew;
} while (ut > VSMALL && err > 0.01 && ++iter < 10);
uTau[facei] = max(0.0, ut);
}
}
return tuTau;
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
nutSpalartAllmarasWallFunctionFvPatchScalarField:: nutSpalartAllmarasWallFunctionFvPatchScalarField::
@ -47,11 +108,7 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF), nutWallFunctionFvPatchScalarField(p, iF)
UName_("U"),
nuName_("nu"),
kappa_(0.41),
E_(9.8)
{} {}
@ -64,11 +121,7 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), nutWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
UName_(ptf.UName_),
nuName_(ptf.nuName_),
kappa_(ptf.kappa_),
E_(ptf.E_)
{} {}
@ -80,11 +133,7 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), nutWallFunctionFvPatchScalarField(p, iF, dict)
UName_(dict.lookupOrDefault<word>("U", "U")),
nuName_(dict.lookupOrDefault<word>("nu", "nu")),
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
E_(dict.lookupOrDefault<scalar>("E", 9.8))
{} {}
@ -94,11 +143,7 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField
const nutSpalartAllmarasWallFunctionFvPatchScalarField& wfpsf const nutSpalartAllmarasWallFunctionFvPatchScalarField& wfpsf
) )
: :
fixedValueFvPatchScalarField(wfpsf), nutWallFunctionFvPatchScalarField(wfpsf)
UName_(wfpsf.UName_),
nuName_(wfpsf.nuName_),
kappa_(wfpsf.kappa_),
E_(wfpsf.E_)
{} {}
@ -109,75 +154,41 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(wfpsf, iF), nutWallFunctionFvPatchScalarField(wfpsf, iF)
UName_(wfpsf.UName_),
nuName_(wfpsf.nuName_),
kappa_(wfpsf.kappa_),
E_(wfpsf.E_)
{} {}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void nutSpalartAllmarasWallFunctionFvPatchScalarField::evaluate tmp<scalarField>
( nutSpalartAllmarasWallFunctionFvPatchScalarField::calcNut() const
const Pstream::commsTypes
)
{ {
const scalarField& ry = patch().deltaCoeffs(); const label patchI = patch().index();
const fvPatchVectorField& U = const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
patch().lookupPatchField<volVectorField, vector>(UName_); const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
scalarField magUp = mag(U.patchInternalField() - U); const scalarField magGradU = mag(Uw.snGrad());
const scalarField& nuw = const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
patch().lookupPatchField<volScalarField, scalar>(nuName_);
scalarField& nutw = *this; return max(0.0, sqr(calcUTau(magGradU))/magGradU - nuw);
scalarField magFaceGradU = mag(U.snGrad());
forAll(nutw, facei)
{
scalar magUpara = magUp[facei];
scalar utau = sqrt((nutw[facei] + nuw[facei])*magFaceGradU[facei]);
if (utau > VSMALL)
{
int iter = 0;
scalar err = GREAT;
do
{
scalar kUu = min(kappa_*magUpara/utau, 50);
scalar fkUu = exp(kUu) - 1 - kUu*(1 + 0.5*kUu);
scalar f =
- utau/(ry[facei]*nuw[facei])
+ magUpara/utau
+ 1/E_*(fkUu - 1.0/6.0*kUu*sqr(kUu));
scalar df =
1.0/(ry[facei]*nuw[facei])
+ magUpara/sqr(utau)
+ 1/E_*kUu*fkUu/utau;
scalar utauNew = utau + f/df;
err = mag((utau - utauNew)/utau);
utau = utauNew;
} while (utau > VSMALL && err > 0.01 && ++iter < 10);
nutw[facei] =
max(sqr(max(utau, 0))/magFaceGradU[facei] - nuw[facei], 0.0);
} }
else
tmp<scalarField>
nutSpalartAllmarasWallFunctionFvPatchScalarField::yPlus() const
{ {
nutw[facei] = 0; const label patchI = patch().index();
}
} const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
const scalarField& y = rasModel.y()[patchI];
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
return y*calcUTau(mag(Uw.snGrad()))/nuw;
} }
@ -187,8 +198,6 @@ void nutSpalartAllmarasWallFunctionFvPatchScalarField::write
) const ) const
{ {
fixedValueFvPatchScalarField::write(os); fixedValueFvPatchScalarField::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "nu", "nu", nuName_);
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl; os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl; os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;
} }
@ -196,7 +205,11 @@ void nutSpalartAllmarasWallFunctionFvPatchScalarField::write
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makePatchTypeField(fvPatchScalarField, nutSpalartAllmarasWallFunctionFvPatchScalarField); makePatchTypeField
(
fvPatchScalarField,
nutSpalartAllmarasWallFunctionFvPatchScalarField
);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -37,7 +37,7 @@ SourceFiles
#ifndef nutSpalartAllmarasWallFunctionFvPatchScalarField_H #ifndef nutSpalartAllmarasWallFunctionFvPatchScalarField_H
#define nutSpalartAllmarasWallFunctionFvPatchScalarField_H #define nutSpalartAllmarasWallFunctionFvPatchScalarField_H
#include "fixedValueFvPatchFields.H" #include "nutWallFunctionFvPatchScalarField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -54,21 +54,17 @@ namespace RASModels
class nutSpalartAllmarasWallFunctionFvPatchScalarField class nutSpalartAllmarasWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public nutWallFunctionFvPatchScalarField
{ {
// Private data protected:
//- Name of velocity field // Protected member functions
word UName_;
//- Name of laminar viscosity field //- Calculate the turbulence viscosity
word nuName_; virtual tmp<scalarField> calcNut() const;
//- Von Karman constant //- Calculate the friction velocity
scalar kappa_; virtual tmp<scalarField> calcUTau(const scalarField& magGradU) const;
//- E coefficient
scalar E_;
public: public:
@ -144,11 +140,11 @@ public:
// Evaluation functions // Evaluation functions
//- Evaluate the patchField //- Calculate and return the yPlus at the boundary
virtual void evaluate virtual tmp<scalarField> yPlus() const;
(
const Pstream::commsTypes commsType=Pstream::blocking
); // I-O
//- Write //- Write
virtual void write(Ostream& os) const; virtual void write(Ostream& os) const;

View File

@ -28,6 +28,7 @@ License
#include "RASModel.H" #include "RASModel.H"
#include "fvPatchFieldMapper.H" #include "fvPatchFieldMapper.H"
#include "volFields.H" #include "volFields.H"
#include "wallFvPatch.H"
#include "addToRunTimeSelectionTable.H" #include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -39,26 +40,40 @@ namespace incompressible
namespace RASModels namespace RASModels
{ {
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
void nutWallFunctionFvPatchScalarField::checkType()
{
if (!isA<wallFvPatch>(patch()))
{
FatalErrorIn("nutWallFunctionFvPatchScalarField::checkType()")
<< "Invalid wall function specification" << nl
<< " Patch type for patch " << patch().name()
<< " must be wall" << nl
<< " Current patch type is " << patch().type() << nl << endl
<< abort(FatalError);
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
nutWallFunctionFvPatchScalarField:: nutWallFunctionFvPatchScalarField::nutWallFunctionFvPatchScalarField
nutWallFunctionFvPatchScalarField
( (
const fvPatch& p, const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF), fixedValueFvPatchScalarField(p, iF),
kName_("k"),
nuName_("nu"),
Cmu_(0.09), Cmu_(0.09),
kappa_(0.41), kappa_(0.41),
E_(9.8) E_(9.8)
{} {
checkType();
}
nutWallFunctionFvPatchScalarField:: nutWallFunctionFvPatchScalarField::nutWallFunctionFvPatchScalarField
nutWallFunctionFvPatchScalarField
( (
const nutWallFunctionFvPatchScalarField& ptf, const nutWallFunctionFvPatchScalarField& ptf,
const fvPatch& p, const fvPatch& p,
@ -67,16 +82,15 @@ nutWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), fixedValueFvPatchScalarField(ptf, p, iF, mapper),
kName_(ptf.kName_),
nuName_(ptf.nuName_),
Cmu_(ptf.Cmu_), Cmu_(ptf.Cmu_),
kappa_(ptf.kappa_), kappa_(ptf.kappa_),
E_(ptf.E_) E_(ptf.E_)
{} {
checkType();
}
nutWallFunctionFvPatchScalarField:: nutWallFunctionFvPatchScalarField::nutWallFunctionFvPatchScalarField
nutWallFunctionFvPatchScalarField
( (
const fvPatch& p, const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF, const DimensionedField<scalar, volMesh>& iF,
@ -84,61 +98,69 @@ nutWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), fixedValueFvPatchScalarField(p, iF, dict),
kName_(dict.lookupOrDefault<word>("k", "k")),
nuName_(dict.lookupOrDefault<word>("nu", "nu")),
Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)), Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)),
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)), kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
E_(dict.lookupOrDefault<scalar>("E", 9.8)) E_(dict.lookupOrDefault<scalar>("E", 9.8))
{} {
checkType();
}
nutWallFunctionFvPatchScalarField:: nutWallFunctionFvPatchScalarField::nutWallFunctionFvPatchScalarField
nutWallFunctionFvPatchScalarField
( (
const nutWallFunctionFvPatchScalarField& wfpsf const nutWallFunctionFvPatchScalarField& wfpsf
) )
: :
fixedValueFvPatchScalarField(wfpsf), fixedValueFvPatchScalarField(wfpsf),
kName_(wfpsf.kName_),
nuName_(wfpsf.nuName_),
Cmu_(wfpsf.Cmu_), Cmu_(wfpsf.Cmu_),
kappa_(wfpsf.kappa_), kappa_(wfpsf.kappa_),
E_(wfpsf.E_) E_(wfpsf.E_)
{} {
checkType();
}
nutWallFunctionFvPatchScalarField:: nutWallFunctionFvPatchScalarField::nutWallFunctionFvPatchScalarField
nutWallFunctionFvPatchScalarField
( (
const nutWallFunctionFvPatchScalarField& wfpsf, const nutWallFunctionFvPatchScalarField& wfpsf,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(wfpsf, iF), fixedValueFvPatchScalarField(wfpsf, iF),
kName_(wfpsf.kName_),
nuName_(wfpsf.nuName_),
Cmu_(wfpsf.Cmu_), Cmu_(wfpsf.Cmu_),
kappa_(wfpsf.kappa_), kappa_(wfpsf.kappa_),
E_(wfpsf.E_) E_(wfpsf.E_)
{} {
checkType();
}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void nutWallFunctionFvPatchScalarField::updateCoeffs() void nutWallFunctionFvPatchScalarField::updateCoeffs()
{ {
operator==(calcNut());
fixedValueFvPatchScalarField::updateCoeffs();
}
tmp<scalarField> nutWallFunctionFvPatchScalarField::calcNut() const
{
const label patchI = patch().index();
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties"); const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
const scalar yPlusLam = rasModel.yPlusLam(kappa_, E_); const scalar yPlusLam = rasModel.yPlusLam(kappa_, E_);
const scalarField& y = rasModel.y()[patch().index()]; const scalarField& y = rasModel.y()[patchI];
const tmp<volScalarField> tk = rasModel.k();
const volScalarField& k = tk();
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
const scalar Cmu25 = pow(Cmu_, 0.25); const scalar Cmu25 = pow(Cmu_, 0.25);
const volScalarField& k = db().lookupObject<volScalarField>(kName_);
const scalarField& nuw = tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
patch().lookupPatchField<volScalarField, scalar>(nuName_); scalarField& nutw = tnutw();
scalarField& nutw = *this;
forAll(nutw, faceI) forAll(nutw, faceI)
{ {
@ -148,21 +170,33 @@ void nutWallFunctionFvPatchScalarField::updateCoeffs()
if (yPlus > yPlusLam) if (yPlus > yPlusLam)
{ {
nutw[faceI] = nuw[faceI]*(yPlus*kappa_/log(E_*yPlus) - 1); nutw[faceI] = nuw[faceI]*(yPlus*kappa_/log(E_*yPlus) - 1.0);
} }
else }
return tnutw;
}
tmp<scalarField> nutWallFunctionFvPatchScalarField::yPlus() const
{ {
nutw[faceI] = 0.0; const label patchI = patch().index();
}
} const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
const scalarField& y = rasModel.y()[patchI];
const tmp<volScalarField> tk = rasModel.k();
const volScalarField& k = tk();
const scalarField kwc = k.boundaryField()[patchI].patchInternalField();
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
return pow(Cmu_, 0.25)*y*sqrt(kwc)/nuw;
} }
void nutWallFunctionFvPatchScalarField::write(Ostream& os) const void nutWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fvPatchField<scalar>::write(os); fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "k", "k", kName_);
writeEntryIfDifferent<word>(os, "nu", "nu", nuName_);
os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl; os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl; os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl; os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;

View File

@ -57,13 +57,9 @@ class nutWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public fixedValueFvPatchScalarField
{ {
//Private data protected:
//- Name of turbulence kinetic energy field // Protected data
word kName_;
//- Name of laminar viscosity field
word nuName_;
//- Cmu coefficient //- Cmu coefficient
scalar Cmu_; scalar Cmu_;
@ -75,6 +71,15 @@ class nutWallFunctionFvPatchScalarField
scalar E_; scalar E_;
// Protected member functions
//- Check the type of the patch
virtual void checkType();
//- Calculate the turbulence viscosity
virtual tmp<scalarField> calcNut() const;
public: public:
//- Runtime type information //- Runtime type information
@ -148,6 +153,9 @@ public:
// Evaluation functions // Evaluation functions
//- Calculate and return the yPlus at the boundary
virtual tmp<scalarField> yPlus() const;
//- Update the coefficients associated with the patch field //- Update the coefficients associated with the patch field
virtual void updateCoeffs(); virtual void updateCoeffs();
@ -155,7 +163,7 @@ public:
// I-O // I-O
//- Write //- Write
void write(Ostream&) const; virtual void write(Ostream&) const;
}; };

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev | | \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

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