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

This commit is contained in:
andy
2011-05-27 12:36:40 +01:00
249 changed files with 5829 additions and 48011 deletions

4
.gitignore vendored
View File

@ -60,8 +60,8 @@ doc/[Dd]oxygen/man
# untracked configuration files
/etc/prefs.csh
/etc/prefs.sh
/etc/config/*.csh
/etc/config/*.sh
/etc/config/prefs.csh
/etc/config/prefs.sh
# source packages - anywhere
*.tar.bz2

View File

@ -126,7 +126,9 @@
globalPointPatch. Moving mesh cases can now be run non-parallel and
continued in parallel and reconstructed without any limitation.
*** *New* compact binary I/O for faces and cells.
This speeds up reading/writing meshes in binary.
This speeds up reading/writing meshes in binary. Binary mesh reading
is backwards (but not forwards) compatible. Use ascii mesh format or
foamFormatConvert.
*** *Updated* runTimeModifiable
+ user selectable model to use for checking run-time modifiable
dictionaries (see also doc/changes/inotify.txt):
@ -139,8 +141,9 @@
+ on linux optionally uses inotify instead of time stamps - more efficient
for large numbers of monitored files. No more fileModificationSkew needed.
+ single integer reduction instead of one reduction per monitored file.
+ only files that can be re-read are being checked. Drastic reduction of
number of files to check.
+ only files that can be re-read are being checked by specifying
in the IOobject constructor MUST_READ_IF_MODIFIED instead of
MUST_READ. Drastic reduction of number of files to check.
*** *New* #codeStream dictionary entry
Uses dynamic compilation of OpenFOAM C++ code to construct dictionary.
E.g. in blockMeshDict:
@ -241,9 +244,11 @@
- works in parallel
+ =snappyHexMesh=:
+ extrude across multi-processor boundaries
+ preserve faceZones during layering
+ combining patch faces after snapping
+ preserve faceZones shape during layering
+ combining coincident patch faces is now default after snapping
+ *Warning*:
- snapControls::tolerance setting fixed w.r.t. 17x. Is the
multiplication to calculate the local search distance for nearest.
- minMedianAxisAngle angle fixed w.r.t. 17x. Set to
90 to get same behaviour as 130 in 17x.
- nGrow did not work in 17x. Set to 0
@ -308,6 +313,8 @@
+ multipleBoxes, hotBoxes, panel, evaporationTest
+ =interDyMFoam= tutorials:
+ testTubeMixer: showcases =solidBodyMotionFunction=
+ =snappyHexMesh= tutorials:
+ flange: demonstration of feature lines in snappyHexMesh
* Other
+ compilable with =clang=

View File

@ -49,6 +49,10 @@ int main(int argc, char *argv[])
Info<< nl << "Calculating potential flow" << endl;
// Since solver contains no time loop it would never execute
// function objects so do it ourselves.
runTime.functionObjects().start();
adjustPhi(phi, U, p);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
@ -99,6 +103,9 @@ int main(int argc, char *argv[])
p.write();
}
runTime.functionObjects().end();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;

View File

@ -220,7 +220,7 @@ snapControls
//- Maximum relative distance for points to be attracted by surface.
// True distance is this factor times local maximum edge length.
// Note: changed(corrected) w.r.t 17x! (17x used 2* tolerance)
tolerance 2.0;
tolerance 1.0;
//- Number of mesh displacement relaxation iterations.
nSolveIter 30;
@ -228,6 +228,10 @@ snapControls
//- Maximum number of snapping relaxation iterations. Should stop
// before upon reaching a correct mesh.
nRelaxIter 5;
//- Highly experimental and wip: number of feature edge snapping
// iterations. Leave out altogether to disable.
//nFeatureSnapIter 10;
}
@ -258,6 +262,9 @@ addLayersControls
//- Wanted thickness of final added cell layer. If multiple layers
// is the
// thickness of the layer furthest away from the wall.
// Relative to undistorted size of cell outside layer.
// is the thickness of the layer furthest away from the wall.
// See relativeSizes parameter.
finalLayerThickness 0.3;
@ -410,7 +417,7 @@ debug 0;
// Merge tolerance. Is fraction of overall bounding box of initial mesh.
// Note: the write tolerance needs to be higher than this.
mergeTolerance 1E-6;
mergeTolerance 1e-6;
// ************************************************************************* //

View File

@ -144,10 +144,30 @@ bool writeZones(const word& name, const fileName& meshDir, Time& runTime)
int main(int argc, char *argv[])
{
timeSelector::addOptions();
argList::addBoolOption
(
"noConstant",
"exclude the 'constant/' dir in the times list"
);
# include "addRegionOption.H"
# include "setRootCase.H"
// enable noConstant by switching
if (!args.optionFound("noConstant"))
{
args.setOption("constant", "");
}
else
{
args.unsetOption("constant");
Info<< "Excluding the constant directory." << nl << endl;
}
# include "createTime.H"
// Make sure we do not use the master-only reading since we read
// fields (different per processor) as dictionaries.
regIOobject::fileModificationChecking = regIOobject::timeStamp;

View File

@ -98,6 +98,44 @@ autoPtr<fvMesh> createMesh
xferCopy(labelList()),
false
);
// Add some dummy zones so upon reading it does not read them
// from the undecomposed case. Should be done as extra argument to
// regIOobject::readStream?
List<pointZone*> pz
(
1,
new pointZone
(
"dummyPointZone",
labelList(0),
0,
dummyMesh.pointZones()
)
);
List<faceZone*> fz
(
1,
new faceZone
(
"dummyFaceZone",
labelList(0),
boolList(0),
0,
dummyMesh.faceZones()
)
);
List<cellZone*> cz
(
1,
new cellZone
(
"dummyCellZone",
labelList(0),
0,
dummyMesh.cellZones()
)
);
dummyMesh.addZones(pz, fz, cz);
//Pout<< "Writing dummy mesh to " << dummyMesh.polyMesh::objectPath()
// << endl;
dummyMesh.write();
@ -239,7 +277,11 @@ autoPtr<fvMesh> createMesh
if (!haveMesh)
{
// Add the zones
// Add the zones. Make sure to remove the old dummy ones first
mesh.pointZones().clear();
mesh.faceZones().clear();
mesh.cellZones().clear();
List<pointZone*> pz(pointZoneNames.size());
forAll(pointZoneNames, i)
{
@ -389,6 +431,12 @@ void printMeshData(const polyMesh& mesh)
globalIndex globalBoundaryFaces(mesh.nFaces()-mesh.nInternalFaces());
label maxProcCells = 0;
label totProcFaces = 0;
label maxProcPatches = 0;
label totProcPatches = 0;
label maxProcFaces = 0;
for (label procI = 0; procI < Pstream::nProcs(); procI++)
{
Info<< endl
@ -413,7 +461,32 @@ void printMeshData(const polyMesh& mesh)
<< " Number of processor faces = " << nProcFaces << nl
<< " Number of boundary faces = "
<< globalBoundaryFaces.localSize(procI) << endl;
maxProcCells = max(maxProcCells, globalCells.localSize(procI));
totProcFaces += nProcFaces;
totProcPatches += nei.size();
maxProcPatches = max(maxProcPatches, nei.size());
maxProcFaces = max(maxProcFaces, nProcFaces);
}
// Stats
scalar avgProcCells = scalar(globalCells.size())/Pstream::nProcs();
scalar avgProcPatches = scalar(totProcPatches)/Pstream::nProcs();
scalar avgProcFaces = scalar(totProcFaces)/Pstream::nProcs();
Info<< nl
<< "Number of processor faces = " << totProcFaces/2 << nl
<< "Max number of cells = " << maxProcCells
<< " (" << 100.0*(maxProcCells-avgProcCells)/avgProcCells
<< "% above average " << avgProcCells << ")" << nl
<< "Max number of processor patches = " << maxProcPatches
<< " (" << 100.0*(maxProcPatches-avgProcPatches)/avgProcPatches
<< "% above average " << avgProcPatches << ")" << nl
<< "Max number of faces between processors = " << maxProcFaces
<< " (" << 100.0*(maxProcFaces-avgProcFaces)/avgProcFaces
<< "% above average " << avgProcFaces << ")" << nl
<< endl;
}
@ -641,6 +714,16 @@ int main(int argc, char *argv[])
);
# include "setRootCase.H"
if (env("FOAM_SIGFPE"))
{
WarningIn(args.executable())
<< "Detected floating point exception trapping (FOAM_SIGFPE)."
<< " This might give" << nl
<< " problems when mapping fields. Switch it off in case"
<< " of problems." << endl;
}
// Create processor directory if non-existing
if (!Pstream::master() && !isDir(args.path()))
{
@ -906,7 +989,7 @@ int main(int argc, char *argv[])
// Debugging: Create additional volField that will be mapped.
// Used to test correctness of mapping
volVectorField mapCc("mapCc", 1*mesh.C());
//volVectorField mapCc("mapCc", 1*mesh.C());
// Global matching tolerance
const scalar tolDim = getMergeDistance
@ -948,7 +1031,7 @@ int main(int argc, char *argv[])
// Debugging: test mapped cellcentre field.
compareFields(tolDim, mesh.C(), mapCc);
//compareFields(tolDim, mesh.C(), mapCc);
// Print nice message
// ~~~~~~~~~~~~~~~~~~

View File

@ -3,7 +3,7 @@
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
# \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
@ -31,6 +31,39 @@
#
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
# Select the version of make to be used
#------------------------------------------------------------------------------
# normally use "make"
make="make"
# set WM_NCOMPPROCS automatically when both WM_HOSTS and WM_SCHEDULER are set
if [ -z "$WM_NCOMPPROCS" -a -n "$WM_HOSTS" -a -n "$WM_SCHEDULER" ]
then
WM_NCOMPPROCS=$(wmakeScheduler -count)
[ $? -eq 0 ] || unset WM_NCOMPPROCS
fi
if [ "$WM_NCOMPPROCS" ]
then
if [ "$WM_NCOMPPROCS" -gt 1 -a ! "$MAKEFLAGS" ]
then
lockDir=$HOME/.$WM_PROJECT/.wmake
if [ -d $lockDir ]
then
rm -f $lockDir/*
else
mkdir -p $lockDir
fi
make="make --no-print-directory -j "$WM_NCOMPPROCS
fi
fi
# Source tutorial functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
@ -62,13 +95,15 @@ else
fi
done
# Recurse to subdirectories
for caseName in *
do
if [ -d $caseName ]
then
( cd $caseName && $thisScript )
fi
done
#for caseName in *
#do
# if [ -d $caseName ]
# then
# ( cd $caseName && $thisScript )
# fi
#done
FOAM_TARGETS=$(for d in *; do [ -d "$d" ] && echo "$d"; done | xargs)
$make -k -f $WM_PROJECT_DIR/bin/tools/MakefileDirs FOAM_TARGETS="$FOAM_TARGETS" FOAM_APP=$thisScript
fi
#------------------------------------------------------------------------------

View File

@ -37,7 +37,7 @@ usage() {
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
Usage: ${0##*/} [OPTION]
Usage: ${0##*/} [OPTION] [PARAVIEW_OPTION]
options:
-block use blockMesh reader (uses .blockMesh extension)
-builtin use VTK builtin OpenFOAM reader (uses .foam extension)
@ -47,6 +47,9 @@ options:
-touchAll create .blockMesh, .OpenFOAM files (and for all regions)
-help print the usage
paraview options start with a double dashes
* start paraview $ParaView_VERSION with the OpenFOAM libraries
USAGE
@ -57,7 +60,7 @@ USAGE
# to clean up
unset FOAM_ABORT
unset regionName touchOpt
unset regionName optTouch
# reader extension
extension=OpenFOAM
@ -88,19 +91,48 @@ do
shift 2
;;
-touch)
touchOpt=true
optTouch=true
shift
;;
-touchAll)
touchOpt=all
optTouch=all
shift
;;
--)
shift
break # stop here, treat balance as paraview options
;;
--*)
break # stop here, treat this and balance as paraview options
;;
*)
usage "unknown option/argument: '$*'"
;;
esac
done
#
# check for --data=... argument
#
hasDataArg()
{
hasData=false
while [ "$#" -gt 0 ]
do
case "$1" in
(--data=*)
hasData=true
break
;;
esac
shift
done
}
hasDataArg $@
# get a sensible caseName from the directory name
caseName=${PWD##*/}
caseFile="$caseName.$extension"
@ -112,7 +144,7 @@ then
fvControls="$fvControls/$regionName"
fi
case "${touchOpt:-false}" in
case "${optTouch:-false}" in
all)
extension=OpenFOAM
if [ -f constant/polyMesh/blockMeshDict ]
@ -149,33 +181,56 @@ case "$caseName" in
esac
#
# check existence of essential files
#
case $extension in
blockMesh)
for check in system/controlDict constant/polyMesh/blockMeshDict
do
[ -s "$parentDir/$check" ] || usage "file does not exist: '$parentDir/$check'"
done
;;
if [ "${hasData:-false}" = true ]
then
builtin | OpenFOAM)
for check in system/controlDict $fvControls/fvSchemes $fvControls/fvSolution
do
[ -s "$parentDir/$check" ] || usage "file does not exist: '$parentDir/$check'"
done
;;
esac
# has --data=.., send directly to paraview
exec paraview "$@"
else
# only create/remove caseFile if it didn't already exist
[ -e $caseFile ] || {
trap "rm -f $caseFile 2>/dev/null; exit 0" EXIT TERM INT
touch "$caseFile"
echo "created temporary '$caseFile'"
}
# check existence of essential files
warn="WARN file does not exist:"
case $extension in
blockMesh)
for check in \
system/controlDict \
constant/polyMesh/blockMeshDict \
;
do
[ -s "$parentDir/$check" ] || {
[ -n "$warn" ] && echo "$warn" 1>&2
echo " $parentDir/$check" 1>&2
unset warn
}
done
;;
builtin | OpenFOAM)
for check in \
system/controlDict \
$fvControls/fvSchemes \
$fvControls/fvSolution \
;
do
[ -s "$parentDir/$check" ] || {
[ -n "$warn" ] && echo "$warn" 1>&2
echo " $parentDir/$check" 1>&2
unset warn
}
done
;;
esac
# only create/remove caseFile if it didn't already exist
[ -e $caseFile ] || {
trap "rm -f $caseFile 2>/dev/null; exit 0" EXIT TERM INT
touch "$caseFile"
echo "created temporary '$caseFile'"
}
paraview --data="$caseFile" "$@"
fi
paraview --data="$caseFile"
#------------------------------------------------------------------------------

42
bin/tools/MakefileDirs Normal file
View File

@ -0,0 +1,42 @@
#-------------------------------*- makefile -*---------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# MakefileDirs
#
# Description
# Makefile used by
# foamRunTutorials
# to call some script in subdirectories.
#
#------------------------------------------------------------------------------
.PHONY: application $(FOAM_TARGETS)
application: $(FOAM_TARGETS)
$(FOAM_TARGETS):
@(cd $@ && $(FOAM_APP))
#------------------------------------------------------------------------------

View File

@ -131,7 +131,7 @@ do
paraviewInstall="$2"
# replace ParaView_DIR=...
_inlineSed \
etc/apps/paraview3/bashrc \
etc/config/paraview.sh \
'/^[^#]/s@ParaView_DIR=.*@ParaView_DIR='"$paraviewInstall@" \
"Replacing ParaView_DIR setting by '$paraviewInstall'"
shift 2

View File

@ -120,7 +120,12 @@ export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
# Location of site-specific templates etc
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# unset is equivalent to $WM_PROJECT_INST_DIR/site
unset WM_PROJECT_SITE
if [ -d "$WM_PROJECT_SITE" ]
then
export WM_PROJECT_SITE
else
unset WM_PROJECT_SITE
fi
# Location of user files
# ~~~~~~~~~~~~~~~~~~~~~~
@ -177,7 +182,7 @@ _foamEval()
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh`
# Evaluate command-line parameters and record settings for later
# these can be used to set/unset values, or specify prefs files
# these can be used to set/unset values, or specify alternative pref files
export FOAM_SETTINGS="$@"
_foamEval $@
@ -200,14 +205,14 @@ export PATH LD_LIBRARY_PATH MANPATH
# Source project setup files
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamSource $WM_PROJECT_DIR/etc/settings.sh
_foamSource $WM_PROJECT_DIR/etc/aliases.sh
_foamSource $WM_PROJECT_DIR/etc/config/settings.sh
_foamSource $WM_PROJECT_DIR/etc/config/aliases.sh
# Source user setup files for optional packages
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile apps/paraview3/bashrc`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile apps/ensight/bashrc`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config/paraview.sh`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config/ensight.sh`
# Clean environment paths again. Only remove duplicates

51
etc/config/README Normal file
View File

@ -0,0 +1,51 @@
The main OpenFOAM settings are located in the parent etc/ directory
* bashrc, cshrc
entry point for sourcing
* prefs.csh, prefs.sh
these files are untracked and can be used for some site-defined
settings
The etc/config/ directory contains various configuration files in
sh/csh variants:
* settings.csh, settings.sh
core settings
* aliases.csh, aliases.sh
aliases for interactive shells
* unset.csh, unset.sh
sourced to clear as many OpenFOAM environment settings as possible
* ensight.csh, ensight.sh
application settings for EnSight
* paraview.csh, paraview.sh
application settings for ParaView
* scotch.sh
application settings for compiling against scotch
---
The config/example directory contains various example configuration files
in sh/csh variants
* compiler.csh, compiler.sh
an example of fine tuning ThirdParty compiler settings for OpenFOAM
* openmpi.csh, openmpi.sh
an example of fine tuning openmpi settings for OpenFOAM
* paraview.csh, paraview.sh
an example of chaining to the standard config/paraview.sh with a
different ParaView_VERSION
* prefs.csh, prefs.sh
an example of supplying alternative site-defined settings
---

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/aliases.csh
# etc/config/aliases.csh
#
# Description
# Aliases for working with OpenFOAM
@ -39,7 +39,7 @@ alias wmSP 'wmSET WM_PRECISION_OPTION=SP'
alias wmDP 'wmSET WM_PRECISION_OPTION=DP'
# clear env
alias wmUNSET='source $WM_PROJECT_DIR/etc/unset.csh'
alias wmUNSET='source $WM_PROJECT_DIR/etc/config/unset.csh'
# Toggle wmakeScheduler on/off
# - also need to set WM_HOSTS
@ -49,7 +49,7 @@ alias wmSchedOFF 'unsetenv WM_SCHEDULER'
# Change ParaView version
# ~~~~~~~~~~~~~~~~~~~~~~~
alias foamPV 'source `$WM_PROJECT_DIR/etc/apps/paraview3/cshrc` ParaView_VERSION=\!*; echo paraview-$ParaView_VERSION'
alias foamPV 'source `$WM_PROJECT_DIR/etc/config/paraview.csh` ParaView_VERSION=\!*; echo paraview-$ParaView_VERSION'
# Change directory aliases

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/aliases.sh
# etc/config/aliases.sh
#
# Description
# Aliases for working with OpenFOAM
@ -39,7 +39,7 @@ alias wmSP='wmSET WM_PRECISION_OPTION=SP'
alias wmDP='wmSET WM_PRECISION_OPTION=DP'
# clear env
alias wmUNSET='. $WM_PROJECT_DIR/etc/unset.sh'
alias wmUNSET='. $WM_PROJECT_DIR/etc/config/unset.sh'
# Toggle wmakeScheduler on/off
# - also need to set WM_HOSTS
@ -52,7 +52,7 @@ alias wmSchedOFF='unset WM_SCHEDULER'
unset foamPV
foamPV()
{
. $WM_PROJECT_DIR/etc/apps/paraview3/bashrc ParaView_VERSION=$1
. $WM_PROJECT_DIR/etc/config/paraview.sh ParaView_VERSION=$1
echo "paraview-$ParaView_VERSION (major: $ParaView_MAJOR)"
}

View File

@ -2,7 +2,7 @@
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
# \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
# \\/ M anipulation |
#-------------------------------------------------------------------------------
# License
@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# ensight/cshrc
# config/ensight.csh
#
# Description
# Setup file for Ensight

View File

@ -2,7 +2,7 @@
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
# \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# ensight/bashrc
# config/ensight.sh
#
# Description
# Setup file for Ensight

View File

@ -22,11 +22,11 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# config/compiler.csh
# config/example/compiler.csh
#
# Description
# Fine tuning of ThirdParty compiler settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/settings.csh
# Example of fine tuning ThirdParty compiler settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/config/settings.csh
#
#------------------------------------------------------------------------------

View File

@ -22,11 +22,11 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# config/compiler.sh
# config/example/compiler.sh
#
# Description
# Fine tuning of ThirdParty compiler settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/settings.sh
# Example of fine tuning ThirdParty compiler settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/config/settings.sh
#
#------------------------------------------------------------------------------

View File

@ -22,11 +22,11 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# config/openmpi.csh
# config/example/openmpi.csh
#
# Description
# Fine tuning of openmpi settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/settings.csh
# Example of fine tuning openmpi settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/config/settings.csh
#
#------------------------------------------------------------------------------

View File

@ -22,11 +22,11 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# config/openmpi.sh
# config/example/openmpi.sh
#
# Description
# Fine tuning of openmpi settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/settings.sh
# Example of fine tuning openmpi settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/config/settings.sh
#
#------------------------------------------------------------------------------

View File

@ -22,10 +22,10 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# paraview3/cshrc-EXAMPLE
# config/example/paraview.csh
#
# Description
# Example of chaining to the standard paraview3/cshrc with a
# Example of chaining to the standard config/paraview.csh with a
# different ParaView_VERSION
#
# Note
@ -35,10 +35,10 @@
#------------------------------------------------------------------------------
#
# Use other (shipped) cshrc with a different ParaView_VERSION
# Use other (shipped) paraview.csh with a different ParaView_VERSION
#
set foamFile=`$WM_PROJECT_DIR/bin/foamEtcFile -mode o apps/paraview3/cshrc`
set foamFile=`$WM_PROJECT_DIR/bin/foamEtcFile -mode o config/paraview.csh`
if ( $status == 0 ) source $foamFile ParaView_VERSION=3.9.0
unset foamFile

View File

@ -22,10 +22,10 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# paraview3/bashrc-EXAMPLE
# config/example/paraview.sh
#
# Description
# Example of chaining to the standard paraview3/bashrc with a
# Example of chaining to the standard config/paraview.sh with a
# different ParaView_VERSION
#
# Note
@ -35,10 +35,10 @@
#------------------------------------------------------------------------------
#
# Use other (shipped) bashrc with a different ParaView_VERSION
# Use other (shipped) paraview.sh with a different ParaView_VERSION
#
foamFile=$($WM_PROJECT_DIR/bin/foamEtcFile -mode o apps/paraview3/bashrc 2>/dev/null)
foamFile=$($WM_PROJECT_DIR/bin/foamEtcFile -mode o config/paraview.sh 2>/dev/null)
[ $? -eq 0 ] && . $foamFile ParaView_VERSION=3.9.0
unset foamFile

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/prefs.csh
# config/example/prefs.csh
#
# Description
# Preset variables for the OpenFOAM configuration - C-Shell shell syntax.

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/prefs.sh
# config/example/prefs.sh
#
# Description
# Preset variables for the OpenFOAM configuration - POSIX shell syntax.

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# paraview3/cshrc
# config/paraview.csh
#
# Description
# Setup file for paraview-3.x

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# paraview3/bashrc
# config/paraview.sh
#
# Description
# Setup file for paraview-3.x
@ -113,7 +113,6 @@ else
unset PV_PLUGIN_PATH
fi
unset _foamParaviewEval
unset cleaned cmake paraviewInstDir paraviewPython

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# scotch/bashrc
# config/scotch.sh
#
# Description
# Setup file for scotch include/libraries.
@ -36,5 +36,4 @@
export SCOTCH_VERSION=scotch_5.1.11
export SCOTCH_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$SCOTCH_VERSION
# -----------------------------------------------------------------------------

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/settings.csh
# etc/config/settings.csh
#
# Description
# Startup file for OpenFOAM
@ -193,7 +193,7 @@ unsetenv MPFR_ARCH_PATH GMP_ARCH_PATH
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if ( ! $?foamCompiler ) then
set foamCompiler=system
echo "Warning in $WM_PROJECT_DIR/etc/settings.csh:"
echo "Warning in $WM_PROJECT_DIR/etc/config/settings.csh:"
echo " foamCompiler not set, using '$foamCompiler'"
endif
@ -241,7 +241,7 @@ case ThirdParty:
breaksw
default:
echo
echo "Warning in $WM_PROJECT_DIR/etc/settings.csh:"
echo "Warning in $WM_PROJECT_DIR/etc/config/settings.csh:"
echo " Unknown OpenFOAM compiler type '$WM_COMPILER'"
echo " Please check your settings"
echo
@ -262,7 +262,7 @@ case ThirdParty:
# Check that the compiler directory can be found
if ( ! -d "$gccDir" ) then
echo
echo "Warning in $WM_PROJECT_DIR/etc/settings.csh:"
echo "Warning in $WM_PROJECT_DIR/etc/config/settings.csh:"
echo " Cannot find $gccDir installation."
echo " Please install this compiler version or if you wish to use the system compiler,"
echo " change the 'foamCompiler' setting to 'system'"
@ -302,7 +302,7 @@ case ThirdParty:
# Check that the compiler directory can be found
if ( ! -d "$clangDir" ) then
echo
echo "Warning in $WM_PROJECT_DIR/etc/settings.csh:"
echo "Warning in $WM_PROJECT_DIR/etc/config/settings.csh:"
echo " Cannot find $clangDir installation."
echo " Please install this compiler version or if you wish to use the system compiler,"
echo " change the 'foamCompiler' setting to 'system'"

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/settings.sh
# etc/config/settings.sh
#
# Description
# Startup file for OpenFOAM
@ -215,7 +215,7 @@ unset MPFR_ARCH_PATH GMP_ARCH_PATH
if [ -z "$foamCompiler" ]
then
foamCompiler=system
echo "Warning in $WM_PROJECT_DIR/etc/settings.sh:" 1>&2
echo "Warning in $WM_PROJECT_DIR/etc/config/settings.sh:" 1>&2
echo " foamCompiler not set, using '$foamCompiler'" 1>&2
fi
@ -258,7 +258,7 @@ OpenFOAM | ThirdParty)
;;
*)
echo
echo "Warning in $WM_PROJECT_DIR/etc/settings.sh:"
echo "Warning in $WM_PROJECT_DIR/etc/config/settings.sh:"
echo " Unknown OpenFOAM compiler type '$WM_COMPILER'"
echo " Please check your settings"
echo
@ -278,7 +278,7 @@ OpenFOAM | ThirdParty)
# Check that the compiler directory can be found
[ -d "$gccDir" ] || {
echo
echo "Warning in $WM_PROJECT_DIR/etc/settings.sh:"
echo "Warning in $WM_PROJECT_DIR/etc/config/settings.sh:"
echo " Cannot find $gccDir installation."
echo " Please install this compiler version or if you wish to use the system compiler,"
echo " change the 'foamCompiler' setting to 'system'"
@ -322,7 +322,7 @@ OpenFOAM | ThirdParty)
# Check that the compiler directory can be found
[ -d "$clangDir" ] || {
echo
echo "Warning in $WM_PROJECT_DIR/etc/settings.sh:"
echo "Warning in $WM_PROJECT_DIR/etc/config/settings.sh:"
echo " Cannot find $clangDir installation."
echo " Please install this compiler version or if you wish to use the system compiler,"
echo " change the 'foamCompiler' setting to 'system'"

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/unset.csh
# etc/config/unset.csh
#
# Description
# Clear as many OpenFOAM environment settings as possible

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/unset.sh
# etc/config/unset.sh
#
# Description
# Clear as many OpenFOAM environment settings as possible

View File

@ -492,6 +492,7 @@ DebugSwitches
geomCellLooper 0;
geometricSurfacePatch 0;
global 0;
globalIndexAndTransform 0;
globalMeshData 0;
globalPoints 0;
gnuplot 0;

View File

@ -107,9 +107,6 @@ if ( $?WM_PROJECT_INST_DIR ) then
set foamOldDirs="$WM_PROJECT_INST_DIR $foamOldDirs"
endif
endif
if ( $?WM_PROJECT_SITE ) then
set foamOldDirs="$WM_PROJECT_SITE $foamOldDirs"
endif
# Location of installation
@ -124,7 +121,12 @@ setenv WM_THIRD_PARTY_DIR $WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
# Location of site-specific templates etc
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# unset is equivalent to $WM_PROJECT_INST_DIR/site
unsetenv WM_PROJECT_SITE
if ( $?WM_PROJECT_SITE ) then
set foamOldDirs="$WM_PROJECT_SITE $foamOldDirs"
if ( ! -d "$WM_PROJECT_SITE" ) unsetenv WM_PROJECT_SITE
else
unsetenv WM_PROJECT_SITE
endif
# Location of user files
# ~~~~~~~~~~~~~~~~~~~~~~
@ -138,7 +140,7 @@ alias _foamSource 'if ($?FOAM_VERBOSE && $?prompt) echo "Sourcing: \!*"; if (\!*
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.csh`
# Evaluate command-line parameters and record settings for later
# these can be used to set/unset values, or specify prefs files
# these can be used to set/unset values, or specify alternative pref files
setenv FOAM_SETTINGS "${*}"
while ( $#argv > 0 )
switch ($argv[1])
@ -194,13 +196,13 @@ if ( $status == 0 ) setenv MANPATH $cleaned
# Source project setup files
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamSource $WM_PROJECT_DIR/etc/settings.csh
_foamSource $WM_PROJECT_DIR/etc/aliases.csh
_foamSource $WM_PROJECT_DIR/etc/config/settings.csh
_foamSource $WM_PROJECT_DIR/etc/config/aliases.csh
# Source user setup files for optional packages
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile apps/paraview3/cshrc`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile apps/ensight/cshrc`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config/paraview.csh`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config/ensight.csh`
# Clean environment paths again. Only remove duplicates

View File

@ -71,6 +71,27 @@ void Foam::dynamicCode::checkSecurity
<< "using dlopen)"
<< exit(FatalIOError);
}
if (!allowSystemOperations)
{
FatalIOErrorIn
(
title,
dict
) << "Loading a shared library using case-supplied code is not"
<< " enabled by default" << nl
<< "because of security issues. If you trust the code you can"
<< " enable this" << nl
<< "facility be adding to the InfoSwitches setting in the system"
<< " controlDict:" << nl << nl
<< " allowSystemOperations 1" << nl << nl
<< "The system controlDict is either" << nl << nl
<< " ~/.OpenFOAM/$WM_PROJECT_VERSION/controlDict" << nl << nl
<< "or" << nl << nl
<< " $WM_PROJECT_DIR/etc/controlDict" << nl
<< endl
<< exit(FatalIOError);
}
}
@ -400,26 +421,6 @@ bool Foam::dynamicCode::copyOrCreateFiles(const bool verbose) const
Info<< "Creating new library in " << this->libRelPath() << endl;
}
if (!allowSystemOperations)
{
FatalErrorIn
(
"dynamicCode::copyOrCreateFiles() const"
) << "Loading a shared library using case-supplied code is not"
<< " enabled by default" << nl
<< "because of security issues. If you trust the code you can"
<< " enable this" << nl
<< "facility be adding to the InfoSwitches setting in the system"
<< " controlDict:" << nl << nl
<< " allowSystemOperations 1" << nl << nl
<< "The system controlDict is either" << nl << nl
<< " ~/.OpenFOAM/$WM_PROJECT_VERSION/controlDict" << nl << nl
<< "or" << nl << nl
<< " $WM_PROJECT_DIR/etc/controlDict" << nl
<< endl
<< exit(FatalError);
}
const label nFiles = compileFiles_.size() + copyFiles_.size();
DynamicList<fileName> resolvedFiles(nFiles);

View File

@ -414,11 +414,11 @@ Foam::argList::argList
(
(
validOptions.found(optionName)
&& validOptions[optionName] != ""
&& !validOptions[optionName].empty()
)
|| (
validParOptions.found(optionName)
&& validParOptions[optionName] != ""
&& !validParOptions[optionName].empty()
)
)
{
@ -833,6 +833,116 @@ Foam::argList::~argList()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool Foam::argList::setOption(const word& opt, const string& param)
{
bool changed = false;
// only allow valid options
if (validOptions.found(opt))
{
// some options are to be protected
if
(
opt == "case"
|| opt == "parallel"
|| opt == "roots"
)
{
FatalError
<<"used argList::setOption on a protected option: '"
<< opt << "'" << endl;
FatalError.exit();
}
if (validOptions[opt].empty())
{
// bool option
if (!param.empty())
{
// disallow change of type
FatalError
<<"used argList::setOption to change bool to non-bool: '"
<< opt << "'" << endl;
FatalError.exit();
}
else
{
// did not previously exist
changed = !options_.found(opt);
}
}
else
{
// non-bool option
if (param.empty())
{
// disallow change of type
FatalError
<<"used argList::setOption to change non-bool to bool: '"
<< opt << "'" << endl;
FatalError.exit();
}
else
{
// existing value needs changing, or did not previously exist
changed = options_.found(opt) ? options_[opt] != param : true;
}
}
}
else
{
FatalError
<<"used argList::setOption on an invalid option: '"
<< opt << "'" << nl << "allowed are the following:"
<< validOptions << endl;
FatalError.exit();
}
// set/change the option as required
if (changed)
{
options_.set(opt, param);
}
return changed;
}
bool Foam::argList::unsetOption(const word& opt)
{
// only allow valid options
if (validOptions.found(opt))
{
// some options are to be protected
if
(
opt == "case"
|| opt == "parallel"
|| opt == "roots"
)
{
FatalError
<<"used argList::unsetOption on a protected option: '"
<< opt << "'" << endl;
FatalError.exit();
}
// remove the option, return true if state changed
return options_.erase(opt);
}
else
{
FatalError
<<"used argList::unsetOption on an invalid option: '"
<< opt << "'" << nl << "allowed are the following:"
<< validOptions << endl;
FatalError.exit();
}
return false;
}
void Foam::argList::printNotes() const
{
// output notes directly - no automatic text wrapping

View File

@ -334,6 +334,19 @@ public:
static void noParallel();
//- Set option directly (use with caution)
// An option with an empty param is a bool option.
// Not all valid options can also be set: eg, -case, -roots, ...
// Return true if the existing option value needed changing,
// or if the option did not previously exist.
bool setOption(const word& opt, const string& param = "");
//- Unset option directly (use with caution)
// Not all valid options can also be unset: eg, -case, -roots ...
// Return true if the option existed before being unset.
bool unsetOption(const word& opt);
// Print
//- Print notes (if any)

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -124,7 +124,7 @@ bool Foam::matchPoints
{
label faceI = pts1MagSqr.indices()[j];
Pout<< "Compared coord:" << pts1[faceI]
Pout<< " Compared coord:" << pts1[faceI]
<< " with difference to point "
<< mag(pts1[faceI] - pts0[face0I]) << endl;
}

View File

@ -57,6 +57,30 @@ Foam::label Foam::globalPoints::countPatchPoints
}
Foam::label Foam::globalPoints::findSamePoint
(
const labelPairList& allInfo,
const labelPair& info
) const
{
const label procI = globalIndexAndTransform::processor(info);
const label index = globalIndexAndTransform::index(info);
forAll(allInfo, i)
{
if
(
globalIndexAndTransform::processor(allInfo[i]) == procI
&& globalIndexAndTransform::index(allInfo[i]) == index
)
{
return i;
}
}
return -1;
}
Foam::labelPairList Foam::globalPoints::addSendTransform
(
const label patchI,
@ -67,6 +91,15 @@ Foam::labelPairList Foam::globalPoints::addSendTransform
forAll(info, i)
{
//Pout<< " adding send transform to" << nl
// << " proc:" << globalIndexAndTransform::processor(info[i])
// << nl
// << " index:" << globalIndexAndTransform::index(info[i]) << nl
// << " trafo:"
// << globalTransforms_.decodeTransformIndex
// (globalIndexAndTransform::transformIndex(info[i]))
// << endl;
sendInfo[i] = globalIndexAndTransform::encode
(
globalIndexAndTransform::processor(info[i]),
@ -129,72 +162,63 @@ bool Foam::globalPoints::mergeInfo
{
bool anyChanged = false;
// Extend to make space for the nbrInfo (trimmed later)
labelPairList newInfo(myInfo);
label newI = newInfo.size();
newInfo.setSize(newI + nbrInfo.size());
forAll(nbrInfo, i)
{
const labelPair& info = nbrInfo[i];
label nbrProcI = globalIndexAndTransform::processor(info);
label nbrIndex = globalIndexAndTransform::index(info);
label nbrTransform = globalIndexAndTransform::transformIndex(info);
// Check if already have information about nbr point. There are two
// possibilities:
// - information found about same point but different transform.
// Combine transforms
// - information not found.
label myIndex = -1;
forAll(myInfo, myI)
{
if (myInfo[myI] == info)
{
// Fully identical. We already have nbrInfo.
myIndex = myI;
}
else if
(
globalIndexAndTransform::processor(myInfo[myI]) == nbrProcI
&& globalIndexAndTransform::index(myInfo[myI]) == nbrIndex
)
{
// Only differing is the transform.
label myTransform = globalIndexAndTransform::transformIndex
(
myInfo[myI]
);
label index = findSamePoint(myInfo, nbrInfo[i]);
// Combine mine and nbr transform
label t = globalTransforms_.mergeTransformIndex
(
nbrTransform,
myTransform
);
myIndex = myI;
if (t != myTransform)
{
// Same point but different transformation
newInfo[myI] = globalIndexAndTransform::encode
(
nbrProcI,
nbrIndex,
t
);
anyChanged = true;
break;
}
}
}
if (myIndex == -1)
if (index == -1)
{
// New point
newInfo[newI++] = nbrInfo[i];
anyChanged = true;
}
else
{
// Same point. So we already have a connection between localPointI
// and the nbrIndex. Two situations:
// - same transform
// - one transform takes two steps, the other just a single.
if (myInfo[index] == nbrInfo[i])
{
// Everything same (so also transform). Nothing changed.
}
else
{
label myTransform = globalIndexAndTransform::transformIndex
(
myInfo[index]
);
label nbrTransform = globalIndexAndTransform::transformIndex
(
nbrInfo[i]
);
// Different transform. See which is 'simplest'.
label minTransform = globalTransforms_.minimumTransformIndex
(
myTransform,
nbrTransform
);
if (minTransform != myTransform)
{
// Use nbr info.
newInfo[index] = nbrInfo[i];
anyChanged = true;
}
}
}
}
newInfo.setSize(newI);
@ -327,7 +351,7 @@ void Foam::globalPoints::printProcPoints
label index = globalIndexAndTransform::index(pointInfo[i]);
label trafoI = globalIndexAndTransform::transformIndex(pointInfo[i]);
Pout<< "proc:" << procI;
Pout<< " proc:" << procI;
Pout<< " localpoint:";
Pout<< index;
Pout<< " through transform:"
@ -386,6 +410,10 @@ void Foam::globalPoints::initOwnPoints
)
);
//Pout<< "For point "<< pp.points()[meshPointI]
// << " inserting info " << knownInfo
// << endl;
// Update changedpoints info.
if (storeInitialInfo(knownInfo, localPointI))
{
@ -613,80 +641,59 @@ void Foam::globalPoints::receivePatchPoints
label meshPointA = meshPoints[i];
label meshPointB = coupledMeshPoints[i];
//Pout<< "Connection between point " << meshPointA
// << " at " << mesh_.points()[meshPointA]
// << " and " << meshPointB
// << " at " << mesh_.points()[meshPointB] << endl;
label localA = meshToLocalPoint
(
meshToPatchPoint,
meshPointA
);
label localB = meshToLocalPoint
(
meshToPatchPoint,
meshPointB
);
// Do we have information on pointA?
Map<label>::iterator procPointA =
meshToProcPoint_.find(localA);
labelPairList infoA;
if (procPointA != meshToProcPoint_.end())
if (meshPointA != meshPointB)
{
infoA = addSendTransform
//Pout<< "Connection between point " << meshPointA
// << " at " << mesh_.points()[meshPointA]
// << " and " << meshPointB
// << " at " << mesh_.points()[meshPointB] << endl;
label localA = meshToLocalPoint
(
cycPatch.index(),
procPoints_[procPointA()]
meshToPatchPoint,
meshPointA
);
}
// Same for info on pointB
Map<label>::iterator procPointB =
meshToProcPoint_.find(localB);
labelPairList infoB;
if (procPointB != meshToProcPoint_.end())
{
infoB = addSendTransform
label localB = meshToLocalPoint
(
cycPatch.neighbPatchID(),
procPoints_[procPointB()]
meshToPatchPoint,
meshPointB
);
}
if (infoA.size())
{
if (mergeInfo(infoA, localB))
// Do we have information on pointA?
Map<label>::iterator procPointA =
meshToProcPoint_.find(localA);
if (procPointA != meshToProcPoint_.end())
{
//Pout<< " Combined info at point "
// << mesh_.points()[meshPointB]
// << " now " << endl;
//printProcPoints
//(
// patchToMeshPoint,
// procPoints_[meshToProcPoint_[localB]]
//);
changedPoints.insert(localB);
const labelPairList infoA = addSendTransform
(
cycPatch.index(),
procPoints_[procPointA()]
);
if (mergeInfo(infoA, localB))
{
changedPoints.insert(localB);
}
}
}
if (infoB.size())
{
if (mergeInfo(infoB, localA))
// Same for info on pointB
Map<label>::iterator procPointB =
meshToProcPoint_.find(localB);
if (procPointB != meshToProcPoint_.end())
{
//Pout<< " Combined info at point "
// << mesh_.points()[meshPointA]
// << " now " << endl;
//printProcPoints
//(
// patchToMeshPoint,
// procPoints_[meshToProcPoint_[localA]]
//);
changedPoints.insert(localA);
const labelPairList infoB = addSendTransform
(
cycPatch.neighbPatchID(),
procPoints_[procPointB()]
);
if (mergeInfo(infoB, localA))
{
changedPoints.insert(localA);
}
}
}
}
@ -842,6 +849,9 @@ void Foam::globalPoints::calculateSharedPoints
{
Pout<< "globalPoints::calculateSharedPoints(..) : "
<< "doing processor to processor communication to get sharedPoints"
<< endl
<< " keepAllPoints :" << keepAllPoints << endl
<< " mergeSeparated:" << mergeSeparated << endl
<< endl;
}
@ -948,7 +958,7 @@ void Foam::globalPoints::calculateSharedPoints
// printProcPoints(patchToMeshPoint, pointInfo);
// Pout<< endl;
//}
//
// Remove direct neighbours from point equivalences.
if (!keepAllPoints)

View File

@ -143,6 +143,13 @@ class globalPoints
// information is collected.
static label countPatchPoints(const polyBoundaryMesh&);
//- Find index of same processor+index
label findSamePoint
(
const labelPairList& allInfo,
const labelPair& info
) const;
labelPairList addSendTransform
(
const label patchI,

View File

@ -136,7 +136,19 @@ void Foam::globalIndexAndTransform::determineTransforms()
{
const polyPatch& pp = patches[patchI];
if (isA<coupledPolyPatch>(pp))
// Note: special check for unordered cyclics. These are in fact
// transform bcs and should probably be split off.
if
(
isA<coupledPolyPatch>(pp)
&& !(
isA<cyclicPolyPatch>(pp)
&& (
refCast<const cyclicPolyPatch>(pp).transform()
== cyclicPolyPatch::NOORDERING
)
)
)
{
const coupledPolyPatch& cpp = refCast<const coupledPolyPatch>(pp);
@ -164,21 +176,19 @@ void Foam::globalIndexAndTransform::determineTransforms()
) == 0
)
{
if (nextTrans == 6)
{
FatalErrorIn
(
"void Foam::globalIndexAndTransform::"
"determineTransforms()"
) << "More than six unsigned transforms"
<< " detected:" << nl << transforms_
<< exit(FatalError);
}
transforms_[nextTrans] = transform;
maxTol[nextTrans++] = cpp.matchTolerance();
}
if (nextTrans > 6)
{
FatalErrorIn
(
"void Foam::globalIndexAndTransform::"
"determineTransforms()"
)
<< "More than six unsigned transforms detected:"
<< nl << transforms_
<< exit(FatalError);
}
}
}
}
@ -206,21 +216,19 @@ void Foam::globalIndexAndTransform::determineTransforms()
) == 0
)
{
if (nextTrans == 6)
{
FatalErrorIn
(
"void Foam::globalIndexAndTransform::"
"determineTransforms()"
) << "More than six unsigned transforms"
<< " detected:" << nl << transforms_
<< exit(FatalError);
}
transforms_[nextTrans] = transform;
maxTol[nextTrans++] = cpp.matchTolerance();
}
if (nextTrans > 6)
{
FatalErrorIn
(
"void Foam::globalIndexAndTransform::"
"determineTransforms()"
)
<< "More than six unsigned transforms detected:"
<< nl << transforms_
<< exit(FatalError);
}
}
}
}
@ -363,7 +371,19 @@ void Foam::globalIndexAndTransform::determinePatchTransformSign()
// Pout<< nl << patchI << " " << pp.name() << endl;
if (isA<coupledPolyPatch>(pp))
// Note: special check for unordered cyclics. These are in fact
// transform bcs and should probably be split off.
if
(
isA<coupledPolyPatch>(pp)
&& !(
isA<cyclicPolyPatch>(pp)
&& (
refCast<const cyclicPolyPatch>(pp).transform()
== cyclicPolyPatch::NOORDERING
)
)
)
{
const coupledPolyPatch& cpp =
refCast<const coupledPolyPatch>(pp);
@ -480,26 +500,28 @@ Foam::globalIndexAndTransform::globalIndexAndTransform
determinePatchTransformSign();
if (debug && transforms_.size() > 1)
if (debug && transforms_.size() > 0)
{
const polyBoundaryMesh& patches = mesh_.boundaryMesh();
Info<< "Determined global transforms :" << endl;
Info<< "\t\ttranslation\trotation" << endl;
forAll(transforms_, i)
{
Info<< '\t' << i << '\t';
if (transforms_[i].hasR())
const vectorTensorTransform& trafo = transforms_[i];
if (trafo.hasR())
{
Info<< transforms_[i].t() << '\t' << transforms_[i].R();
Info<< trafo.t() << '\t' << trafo.R();
}
else
{
Info<< transforms_[i].t() << '\t' << "---";
Info<< trafo.t() << '\t' << "---";
}
Info<< endl;
}
Info<< endl;
const polyBoundaryMesh& patches = mesh_.boundaryMesh();
Info<< "\tpatch\ttransform\tsign" << endl;
forAll(patchTransformSign_, patchI)
@ -513,6 +535,26 @@ Foam::globalIndexAndTransform::globalIndexAndTransform
}
}
Info<< endl;
Info<< "Permutations of transformations:" << endl
<< "\t\ttranslation\trotation" << endl;
forAll(transformPermutations_, i)
{
Info<< '\t' << i << '\t';
const vectorTensorTransform& trafo = transformPermutations_[i];
if (trafo.hasR())
{
Info<< trafo.t() << '\t' << trafo.R();
}
else
{
Info<< trafo.t() << '\t' << "---";
}
Info<< endl;
}
Info<< "nullTransformIndex:" << nullTransformIndex() << endl
<< endl;
}
}

View File

@ -267,85 +267,47 @@ Foam::label Foam::globalIndexAndTransform::addToTransformIndex
}
Foam::label Foam::globalIndexAndTransform::mergeTransformIndex
(
const label transformIndex0,
const label transformIndex1
) const
{
FixedList<label, 3> permutation0 = decodeTransformIndex(transformIndex0);
FixedList<label, 3> permutation1 = decodeTransformIndex(transformIndex1);
forAll(permutation0, i)
{
if (permutation0[i] == 0)
{
// Take over whatever sign 1 has
permutation0[i] = permutation1[i];
}
else if (permutation1[i] != 0 && permutation0[i] != permutation1[i])
{
FatalErrorIn
(
"Foam::label "
"Foam::globalIndexAndTransform::addToTransformIndex\n"
"(\n"
"const label,\n"
"const label\n"
") const\n"
) << "More than one patch accessing the same transform "
<< "but not of the same sign." << endl
<< "Trying to combine two transforms " << transformIndex0
<< " with signs " << permutation0
<< " and " << transformIndex1
<< " with signs " << permutation1
<< exit(FatalError);
}
}
return encodeTransformIndex(permutation0);
}
Foam::label Foam::globalIndexAndTransform::minimumTransformIndex
(
const label transformIndex0,
const label transformIndex1
) const
{
FixedList<label, 3> permutation0 = decodeTransformIndex(transformIndex0);
FixedList<label, 3> permutation1 = decodeTransformIndex(transformIndex1);
if (transformIndex0 == transformIndex1)
{
return transformIndex0;
}
// Count number of transforms
FixedList<label, 3> permutation0 = decodeTransformIndex(transformIndex0);
label n0 = 0;
forAll(permutation0, i)
{
if (permutation0[i] == 0)
if (permutation0[i] != 0)
{
// 0 wins.
}
else if (permutation1[i] == 0)
{
// 0 wins.
permutation0[i] = permutation1[i];
}
else if (permutation0[i] != permutation1[i])
{
FatalErrorIn
(
"Foam::label "
"Foam::globalIndexAndTransform::minimumTransformIndex\n"
"(\n"
"const label,\n"
"const label\n"
") const\n"
) << "More than one patch accessing the same transform "
<< "but not of the same sign." << endl
<< "Trying to combine two transforms " << transformIndex0
<< " with signs " << permutation0
<< " and " << transformIndex1
<< " with signs " << permutation1
<< exit(FatalError);
n0++;
}
}
return encodeTransformIndex(permutation0);
FixedList<label, 3> permutation1 = decodeTransformIndex(transformIndex1);
label n1 = 0;
forAll(permutation1, i)
{
if (permutation1[i] != 0)
{
n1++;
}
}
if (n0 <= n1)
{
return transformIndex0;
}
else
{
return transformIndex1;
}
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -40,6 +40,48 @@ Foam::dynamicFvMesh::dynamicFvMesh(const IOobject& io)
{}
Foam::dynamicFvMesh::dynamicFvMesh
(
const IOobject& io,
const Xfer<pointField>& points,
const Xfer<faceList>& faces,
const Xfer<labelList>& allOwner,
const Xfer<labelList>& allNeighbour,
const bool syncPar
)
:
fvMesh
(
io,
points,
faces,
allOwner,
allNeighbour,
syncPar
)
{}
Foam::dynamicFvMesh::dynamicFvMesh
(
const IOobject& io,
const Xfer<pointField>& points,
const Xfer<faceList>& faces,
const Xfer<cellList>& cells,
const bool syncPar
)
:
fvMesh
(
io,
points,
faces,
cells,
syncPar
)
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::dynamicFvMesh::~dynamicFvMesh()

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -85,6 +85,29 @@ public:
//- Construct from objectRegistry, and read/write options
explicit dynamicFvMesh(const IOobject& io);
//- Construct from components without boundary.
// Boundary is added using addFvPatches() member function
dynamicFvMesh
(
const IOobject& io,
const Xfer<pointField>& points,
const Xfer<faceList>& faces,
const Xfer<labelList>& allOwner,
const Xfer<labelList>& allNeighbour,
const bool syncPar = true
);
//- Construct without boundary from cells rather than owner/neighbour.
// Boundary is added using addPatches() member function
dynamicFvMesh
(
const IOobject& io,
const Xfer<pointField>& points,
const Xfer<faceList>& faces,
const Xfer<cellList>& cells,
const bool syncPar = true
);
// Selectors

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -149,6 +149,7 @@ Foam::octree<Type>::octree
// - has some guaranteed maximum size (maxShapeRatio)
label oldNLeaves = -1; // make test below pass first time.
label oldNNodes = -1;
deepestLevel_ = 1;
while
(
@ -169,11 +170,11 @@ Foam::octree<Type>::octree
break;
}
if (oldNLeaves == nLeaves())
if ((oldNLeaves == nLeaves()) && (oldNNodes == nNodes()))
{
if (debug & 1)
{
Pout<< "octree : exiting since nLeaves does not change"
Pout<< "octree : exiting since nLeaves and nNodes do not change"
<< endl;
}
break;
@ -185,6 +186,7 @@ Foam::octree<Type>::octree
}
oldNLeaves = nLeaves();
oldNNodes = nNodes();
topNode_->redistribute
(

View File

@ -3,13 +3,13 @@ cd ${0%/*} || exit 1 # run from this directory
makeType=${1:-libso}
# get SCOTCH_VERSION, SCOTCH_ARCH_PATH
if settings=`$WM_PROJECT_DIR/bin/foamEtcFile apps/scotch/bashrc`
if settings=`$WM_PROJECT_DIR/bin/foamEtcFile config/scotch.sh`
then
. $settings
echo "using SCOTCH_ARCH_PATH=$SCOTCH_ARCH_PATH"
else
echo
echo "Error: no apps/scotch/bashrc settings"
echo "Error: no config/scotch.sh settings"
echo
fi

View File

@ -399,7 +399,7 @@ void kOmegaSSTSAS::correct(const tmp<volTensorField>& gradU)
*max
(
dimensionedScalar("zero",dimensionSet(0, 0, -2, 0, 0), 0.0),
zetaTilda2_*kappa_*S2*(L/Lvk2(S2))
zetaTilda2_*kappa_*S2*sqr(L/Lvk2(S2))
- 2.0/alphaPhi_*k_*grad_omega_k
)
);

View File

@ -27,22 +27,12 @@ Class
Description
kOmegaSSTSAS LES turbulence model for incompressible flows
References:
Evaluation of the SST-SAS model: Channel flow, asymmetric diffuser and axi-
symmetric hill
European Conference on Computational Fluid Dynamics
ECCOMAS CFD 2006
Lars Davison
A Scale-Adaptive Simulation Model using Two-Equation Models
AIAA 2005-1095
F. R. Menter and Y. Egorov
DESider A European Effort on Hybrid RANS-LES Modelling:
Results of the European-Union Funded Project, 2004 - 2007
(Notes on Numerical Fluid Mechanics and Multidisciplinary Design).
Chapter 8 Formulation of the Scale-Adaptive Simulation (SAS) Model during
the DESIDER Project.
the DESIDER Project. Published in Springer-Verlag Berlin Heidelberg 2009.
F. R. Menter and Y. Egorov.
SourceFiles

View File

@ -16,7 +16,7 @@ FoamFile
convertToMeters 1;
vertices
vertices
(
(0 0 0)
(1 0 0)
@ -28,32 +28,71 @@ vertices
(0 1 1)
);
blocks
blocks
(
hex (0 1 2 3 4 5 6 7) (16 16 16) simpleGrading (1 1 1)
);
edges
edges
(
);
patches
boundary
(
cyclic patch0
(
(0 3 2 1)
(4 5 6 7)
)
cyclic patch1
(
(0 4 7 3)
(2 6 5 1)
)
cyclic patch2
(
(3 7 6 2)
(1 5 4 0)
)
patch0_half0
{
type cyclic;
neighbourPatch patch0_half1;
faces
(
(0 3 2 1)
);
}
patch0_half1
{
type cyclic;
neighbourPatch patch0_half0;
faces
(
(4 5 6 7)
);
}
patch1_half0
{
type cyclic;
neighbourPatch patch1_half1;
faces
(
(0 4 7 3)
);
}
patch1_half1
{
type cyclic;
neighbourPatch patch1_half0;
faces
(
(2 6 5 1)
);
}
patch2_half0
{
type cyclic;
neighbourPatch patch2_half1;
faces
(
(3 7 6 2)
);
}
patch2_half1
{
type cyclic;
neighbourPatch patch2_half0;
faces
(
(1 5 4 0)
);
}
);
mergePatchPairs

View File

@ -22,6 +22,7 @@ FoamFile
type cyclic;
nFaces 256;
startFace 11520;
matchTolerance 0.0001;
neighbourPatch patch0_half1;
}
patch0_half1
@ -29,6 +30,7 @@ FoamFile
type cyclic;
nFaces 256;
startFace 11776;
matchTolerance 0.0001;
neighbourPatch patch0_half0;
}
patch1_half0
@ -36,6 +38,7 @@ FoamFile
type cyclic;
nFaces 256;
startFace 12032;
matchTolerance 0.0001;
neighbourPatch patch1_half1;
}
patch1_half1
@ -43,6 +46,7 @@ FoamFile
type cyclic;
nFaces 256;
startFace 12288;
matchTolerance 0.0001;
neighbourPatch patch1_half0;
}
patch2_half0
@ -50,6 +54,7 @@ FoamFile
type cyclic;
nFaces 256;
startFace 12544;
matchTolerance 0.0001;
neighbourPatch patch2_half1;
}
patch2_half1
@ -57,6 +62,7 @@ FoamFile
type cyclic;
nFaces 256;
startFace 12800;
matchTolerance 0.0001;
neighbourPatch patch2_half0;
}
)

View File

@ -0,0 +1,11 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
# Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
rm -rf 0 > /dev/null 2>&1
cleanCase
# ----------------------------------------------------------------- end-of-file

View File

@ -6,10 +6,9 @@ cd ${0%/*} || exit 1 # run from this directory
application=`getApplication`
cp -r 0.org 0 > /dev/null 2>&1
runApplication blockMesh
runApplication $application
compileApplication analyticalCylinder
runApplication analyticalCylinder
runApplication streamFunction
# ----------------------------------------------------------------- end-of-file

View File

@ -1,3 +0,0 @@
analyticalCylinder.C
EXE = $(FOAM_USER_APPBIN)/analyticalCylinder

View File

@ -1,5 +0,0 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude
EXE_LIBS = \
-lfiniteVolume

View File

@ -1,70 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
analyticalCylinder
Description
Generates an analytical solution for potential flow around a cylinder.
Can be compared with the solution from the potentialFlow/cylinder example.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
# include "setRootCase.H"
# include "createTime.H"
# include "createMesh.H"
# include "createFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nEvaluating analytical solution" << endl;
volVectorField centres = UA.mesh().C();
volScalarField magCentres = mag(centres);
volScalarField theta = acos((centres & vector(1,0,0))/magCentres);
volVectorField cs2theta =
cos(2*theta)*vector(1,0,0)
+ sin(2*theta)*vector(0,1,0);
UA = uInfX*(dimensionedVector(vector(1,0,0))
- pow((radius/magCentres),2)*cs2theta);
// Force writing of UA (since time has not changed)
UA.write();
Info<< "end" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -1,45 +0,0 @@
Info<< "Reading field U\n" << endl;
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
),
mesh
);
Info<< "Reading inlet velocity uInfX\n" << endl;
dimensionedScalar uInfX
(
"uInfx",
dimensionSet(0, 1, -1, 0, 0),
U.boundaryField()[3][0].x()
);
Info << "U at inlet = " << uInfX.value() << " m/s" << endl;
dimensionedScalar radius
(
"radius",
dimensionSet(0, 1, 0, 0, 0),
mag(U.mesh().boundary()[4].Cf()[0])
);
Info << "Cylinder radius = " << radius.value() << " m" << endl;
volVectorField UA
(
IOobject
(
"UA",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
U
);

View File

@ -92,39 +92,59 @@ edges
arc 34 28 (-0.34202 0.939693 0.5)
);
patches
boundary
(
symmetryPlane down
(
(0 1 20 19)
(1 2 21 20)
(12 11 30 31)
(13 12 31 32)
)
patch right
(
(2 3 22 21)
(3 6 25 22)
)
symmetryPlane up
(
(7 8 27 26)
(6 7 26 25)
(8 18 37 27)
(18 17 36 37)
)
patch left
(
(14 13 32 33)
(17 14 33 36)
)
symmetryPlane cylinder
(
(10 5 24 29)
(5 0 19 24)
(16 10 29 35)
(11 16 35 30)
)
down
{
type symmetryPlane;
faces
(
(0 1 20 19)
(1 2 21 20)
(12 11 30 31)
(13 12 31 32)
);
}
right
{
type patch;
faces
(
(2 3 22 21)
(3 6 25 22)
);
}
up
{
type symmetryPlane;
faces
(
(7 8 27 26)
(6 7 26 25)
(8 18 37 27)
(18 17 36 37)
);
}
left
{
type patch;
faces
(
(14 13 32 33)
(17 14 33 36)
);
}
cylinder
{
type symmetryPlane;
faces
(
(10 5 24 29)
(5 0 19 24)
(16 10 29 35)
(11 16 35 30)
);
}
);
mergePatchPairs

View File

@ -45,5 +45,74 @@ timePrecision 6;
runTimeModifiable true;
functions
{
difference
{
functionObjectLibs ("libutilityFunctionObjects.so");
type coded;
redirectType error;
code
#{
// Lookup U
Info<< "Looking up field U\n" << endl;
const volVectorField& U = mesh().lookupObject<volVectorField>("U");
Info<< "Reading inlet velocity uInfX\n" << endl;
dimensionedScalar uInfX
(
"uInfx",
dimensionSet(0, 1, -1, 0, 0),
U.boundaryField()[3][0].x()
);
Info << "U at inlet = " << uInfX.value() << " m/s" << endl;
dimensionedScalar radius
(
"radius",
dimensionSet(0, 1, 0, 0, 0),
mag(U.mesh().boundary()[4].Cf()[0])
);
Info << "Cylinder radius = " << radius.value() << " m" << endl;
volVectorField UA
(
IOobject
(
"UA",
mesh().time().timeName(),
U.mesh(),
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
U
);
Info<< "\nEvaluating analytical solution" << endl;
volVectorField centres = UA.mesh().C();
volScalarField magCentres = mag(centres);
volScalarField theta = acos((centres & vector(1,0,0))/magCentres);
volVectorField cs2theta =
cos(2*theta)*vector(1,0,0)
+ sin(2*theta)*vector(0,1,0);
UA = uInfX*(dimensionedVector(vector(1,0,0))
- pow((radius/magCentres),2)*cs2theta);
// Force writing of UA (since time has not changed)
UA.write();
volScalarField error("error", mag(U-UA)/mag(UA));
Info<<"Writing relative error in U to " << error.objectPath()
<< endl;
error.write();
#};
}
}
// ************************************************************************* //

View File

@ -85,65 +85,85 @@ edges
(
);
patches
boundary
(
patch inlet
(
(0 22 23 1)
(1 23 24 2)
(2 24 25 3)
)
patch outlet
(
(16 17 39 38)
(17 18 40 39)
(18 19 41 40)
(19 20 42 41)
(20 21 43 42)
)
wall upperWall
(
(3 25 31 9)
(9 31 37 15)
(15 37 43 21)
)
wall lowerWall
(
(0 6 28 22)
(6 5 27 28)
(5 4 26 27)
(4 10 32 26)
(10 16 38 32)
)
empty frontAndBack
(
(22 28 29 23)
(23 29 30 24)
(24 30 31 25)
(26 32 33 27)
(27 33 34 28)
(28 34 35 29)
(29 35 36 30)
(30 36 37 31)
(32 38 39 33)
(33 39 40 34)
(34 40 41 35)
(35 41 42 36)
(36 42 43 37)
(0 1 7 6)
(1 2 8 7)
(2 3 9 8)
(4 5 11 10)
(5 6 12 11)
(6 7 13 12)
(7 8 14 13)
(8 9 15 14)
(10 11 17 16)
(11 12 18 17)
(12 13 19 18)
(13 14 20 19)
(14 15 21 20)
)
inlet
{
type patch;
faces
(
(0 22 23 1)
(1 23 24 2)
(2 24 25 3)
);
}
outlet
{
type patch;
faces
(
(16 17 39 38)
(17 18 40 39)
(18 19 41 40)
(19 20 42 41)
(20 21 43 42)
);
}
upperWall
{
type wall;
faces
(
(3 25 31 9)
(9 31 37 15)
(15 37 43 21)
);
}
lowerWall
{
type wall;
faces
(
(0 6 28 22)
(6 5 27 28)
(5 4 26 27)
(4 10 32 26)
(10 16 38 32)
);
}
frontAndBack
{
type empty;
faces
(
(22 28 29 23)
(23 29 30 24)
(24 30 31 25)
(26 32 33 27)
(27 33 34 28)
(28 34 35 29)
(29 35 36 30)
(30 36 37 31)
(32 38 39 33)
(33 39 40 34)
(34 40 41 35)
(35 41 42 36)
(36 42 43 37)
(0 1 7 6)
(1 2 8 7)
(2 3 9 8)
(4 5 11 10)
(5 6 12 11)
(6 7 13 12)
(7 8 14 13)
(8 9 15 14)
(10 11 17 16)
(11 12 18 17)
(12 13 19 18)
(13 14 20 19)
(14 15 21 20)
);
}
);
mergePatchPairs

View File

@ -85,65 +85,85 @@ edges
(
);
patches
boundary
(
patch inlet
(
(0 22 23 1)
(1 23 24 2)
(2 24 25 3)
)
patch outlet
(
(16 17 39 38)
(17 18 40 39)
(18 19 41 40)
(19 20 42 41)
(20 21 43 42)
)
wall upperWall
(
(3 25 31 9)
(9 31 37 15)
(15 37 43 21)
)
wall lowerWall
(
(0 6 28 22)
(6 5 27 28)
(5 4 26 27)
(4 10 32 26)
(10 16 38 32)
)
empty frontAndBack
(
(22 28 29 23)
(23 29 30 24)
(24 30 31 25)
(26 32 33 27)
(27 33 34 28)
(28 34 35 29)
(29 35 36 30)
(30 36 37 31)
(32 38 39 33)
(33 39 40 34)
(34 40 41 35)
(35 41 42 36)
(36 42 43 37)
(0 1 7 6)
(1 2 8 7)
(2 3 9 8)
(4 5 11 10)
(5 6 12 11)
(6 7 13 12)
(7 8 14 13)
(8 9 15 14)
(10 11 17 16)
(11 12 18 17)
(12 13 19 18)
(13 14 20 19)
(14 15 21 20)
)
inlet
{
type patch;
faces
(
(0 22 23 1)
(1 23 24 2)
(2 24 25 3)
);
}
outlet
{
type patch;
faces
(
(16 17 39 38)
(17 18 40 39)
(18 19 41 40)
(19 20 42 41)
(20 21 43 42)
);
}
upperWall
{
type wall;
faces
(
(3 25 31 9)
(9 31 37 15)
(15 37 43 21)
);
}
lowerWall
{
type wall;
faces
(
(0 6 28 22)
(6 5 27 28)
(5 4 26 27)
(4 10 32 26)
(10 16 38 32)
);
}
frontAndBack
{
type empty;
faces
(
(22 28 29 23)
(23 29 30 24)
(24 30 31 25)
(26 32 33 27)
(27 33 34 28)
(28 34 35 29)
(29 35 36 30)
(30 36 37 31)
(32 38 39 33)
(33 39 40 34)
(34 40 41 35)
(35 41 42 36)
(36 42 43 37)
(0 1 7 6)
(1 2 8 7)
(2 3 9 8)
(4 5 11 10)
(5 6 12 11)
(6 7 13 12)
(7 8 14 13)
(8 9 15 14)
(10 11 17 16)
(11 12 18 17)
(12 13 19 18)
(13 14 20 19)
(14 15 21 20)
);
}
);
mergePatchPairs

View File

@ -46,6 +46,7 @@ FoamFile
type cyclic;
nFaces 0;
startFace 24810;
matchTolerance 0.0001;
neighbourPatch baffleCyclic_half1;
}
baffleCyclic_half1
@ -53,6 +54,7 @@ FoamFile
type cyclic;
nFaces 0;
startFace 24810;
matchTolerance 0.0001;
neighbourPatch baffleCyclic_half0;
}
)

View File

@ -85,65 +85,85 @@ edges
(
);
patches
boundary
(
patch inlet
(
(0 22 23 1)
(1 23 24 2)
(2 24 25 3)
)
patch outlet
(
(16 17 39 38)
(17 18 40 39)
(18 19 41 40)
(19 20 42 41)
(20 21 43 42)
)
wall upperWall
(
(3 25 31 9)
(9 31 37 15)
(15 37 43 21)
)
wall lowerWall
(
(0 6 28 22)
(6 5 27 28)
(5 4 26 27)
(4 10 32 26)
(10 16 38 32)
)
empty frontAndBack
(
(22 28 29 23)
(23 29 30 24)
(24 30 31 25)
(26 32 33 27)
(27 33 34 28)
(28 34 35 29)
(29 35 36 30)
(30 36 37 31)
(32 38 39 33)
(33 39 40 34)
(34 40 41 35)
(35 41 42 36)
(36 42 43 37)
(0 1 7 6)
(1 2 8 7)
(2 3 9 8)
(4 5 11 10)
(5 6 12 11)
(6 7 13 12)
(7 8 14 13)
(8 9 15 14)
(10 11 17 16)
(11 12 18 17)
(12 13 19 18)
(13 14 20 19)
(14 15 21 20)
)
inlet
{
type patch;
faces
(
(0 22 23 1)
(1 23 24 2)
(2 24 25 3)
);
}
outlet
{
type patch;
faces
(
(16 17 39 38)
(17 18 40 39)
(18 19 41 40)
(19 20 42 41)
(20 21 43 42)
);
}
upperWall
{
type wall;
faces
(
(3 25 31 9)
(9 31 37 15)
(15 37 43 21)
);
}
lowerWall
{
type wall;
faces
(
(0 6 28 22)
(6 5 27 28)
(5 4 26 27)
(4 10 32 26)
(10 16 38 32)
);
}
frontAndBack
{
type empty;
faces
(
(22 28 29 23)
(23 29 30 24)
(24 30 31 25)
(26 32 33 27)
(27 33 34 28)
(28 34 35 29)
(29 35 36 30)
(30 36 37 31)
(32 38 39 33)
(33 39 40 34)
(34 40 41 35)
(35 41 42 36)
(36 42 43 37)
(0 1 7 6)
(1 2 8 7)
(2 3 9 8)
(4 5 11 10)
(5 6 12 11)
(6 7 13 12)
(7 8 14 13)
(8 9 15 14)
(10 11 17 16)
(11 12 18 17)
(12 13 19 18)
(13 14 20 19)
(14 15 21 20)
);
}
);
mergePatchPairs

View File

@ -40,11 +40,11 @@ boundaryField
{
type zeroGradient;
}
frontAndBack_half0
front
{
type cyclic;
}
frontAndBack_half1
back
{
type cyclic;
}

View File

@ -42,11 +42,11 @@ boundaryField
type fixedValue;
value uniform 570;
}
frontAndBack_half0
front
{
type cyclic;
}
frontAndBack_half1
back
{
type cyclic;
}

View File

@ -42,11 +42,11 @@ boundaryField
type fixedValue;
value uniform 570;
}
frontAndBack_half0
front
{
type cyclic;
}
frontAndBack_half1
back
{
type cyclic;
}

View File

@ -44,11 +44,11 @@ boundaryField
type fixedValue;
value uniform ( 0 0 0 );
}
frontAndBack_half0
front
{
type cyclic;
}
frontAndBack_half1
back
{
type cyclic;
}

View File

@ -40,11 +40,11 @@ boundaryField
{
type zeroGradient;
}
frontAndBack_half0
front
{
type cyclic;
}
frontAndBack_half1
back
{
type cyclic;
}

View File

@ -41,11 +41,11 @@ boundaryField
hs h;
value uniform 0;
}
frontAndBack_half0
front
{
type cyclic;
}
frontAndBack_half1
back
{
type cyclic;
}

View File

@ -40,11 +40,11 @@ boundaryField
{
type zeroGradient;
}
frontAndBack_half0
front
{
type cyclic;
}
frontAndBack_half1
back
{
type cyclic;
}

View File

@ -42,11 +42,11 @@ boundaryField
type zeroGradient;
value uniform 2e-05;
}
frontAndBack_half0
front
{
type cyclic;
}
frontAndBack_half1
back
{
type cyclic;
}

View File

@ -39,11 +39,11 @@ boundaryField
type muSgsUSpaldingWallFunction;
value uniform 0;
}
frontAndBack_half0
front
{
type cyclic;
}
frontAndBack_half1
back
{
type cyclic;
}

View File

@ -45,11 +45,11 @@ boundaryField
{
type zeroGradient;
}
frontAndBack_half0
front
{
type cyclic;
}
frontAndBack_half1
back
{
type cyclic;
}

View File

@ -16,7 +16,7 @@ FoamFile
convertToMeters 0.001;
vertices
vertices
(
(-20.6 0 0)
(-20.6 2 0)
@ -64,7 +64,7 @@ vertices
(290 16.6 38.1)
);
blocks
blocks
(
hex (0 6 7 1 22 28 29 23) (18 7 20) simpleGrading (1 1 1)
hex (1 7 8 2 23 29 30 24) (18 10 20) simpleGrading (1 4 1)
@ -81,69 +81,98 @@ blocks
hex (14 20 21 15 36 42 43 37) (25 13 20) simpleGrading (1 0.25 1)
);
edges
edges
(
);
patches
boundary
(
patch inlet
(
(0 22 23 1)
(1 23 24 2)
(2 24 25 3)
)
patch outlet
(
(16 17 39 38)
(17 18 40 39)
(18 19 41 40)
(19 20 42 41)
(20 21 43 42)
)
wall upperWall
(
(3 25 31 9)
(9 31 37 15)
(15 37 43 21)
)
wall lowerWall
(
(0 6 28 22)
(6 5 27 28)
(5 4 26 27)
(4 10 32 26)
(10 16 38 32)
)
cyclic frontAndBack
(
(22 28 29 23)
(23 29 30 24)
(24 30 31 25)
(26 32 33 27)
(27 33 34 28)
(28 34 35 29)
(29 35 36 30)
(30 36 37 31)
(32 38 39 33)
(33 39 40 34)
(34 40 41 35)
(35 41 42 36)
(36 42 43 37)
(0 1 7 6)
(1 2 8 7)
(2 3 9 8)
(4 5 11 10)
(5 6 12 11)
(6 7 13 12)
(7 8 14 13)
(8 9 15 14)
(10 11 17 16)
(11 12 18 17)
(12 13 19 18)
(13 14 20 19)
(14 15 21 20)
)
inlet
{
type patch;
faces
(
(0 22 23 1)
(1 23 24 2)
(2 24 25 3)
);
}
outlet
{
type patch;
faces
(
(16 17 39 38)
(17 18 40 39)
(18 19 41 40)
(19 20 42 41)
(20 21 43 42)
);
}
upperWall
{
type wall;
faces
(
(3 25 31 9)
(9 31 37 15)
(15 37 43 21)
);
}
lowerWall
{
type wall;
faces
(
(0 6 28 22)
(6 5 27 28)
(5 4 26 27)
(4 10 32 26)
(10 16 38 32)
);
}
front
{
type cyclic;
neighbourPatch back;
faces
(
(22 28 29 23)
(23 29 30 24)
(24 30 31 25)
(26 32 33 27)
(27 33 34 28)
(28 34 35 29)
(29 35 36 30)
(30 36 37 31)
(32 38 39 33)
(33 39 40 34)
(34 40 41 35)
(35 41 42 36)
(36 42 43 37)
);
}
back
{
type cyclic;
neighbourPatch front;
faces
(
(0 1 7 6)
(1 2 8 7)
(2 3 9 8)
(4 5 11 10)
(5 6 12 11)
(6 7 13 12)
(7 8 14 13)
(8 9 15 14)
(10 11 17 16)
(11 12 18 17)
(12 13 19 18)
(13 14 20 19)
(14 15 21 20)
);
}
);
mergePatchPairs

View File

@ -41,19 +41,21 @@ FoamFile
nFaces 5000;
startFace 721875;
}
frontAndBack_half0
front
{
type cyclic;
nFaces 12225;
startFace 726875;
neighbourPatch frontAndBack_half1;
matchTolerance 0.0001;
neighbourPatch back;
}
frontAndBack_half1
back
{
type cyclic;
nFaces 12225;
startFace 739100;
neighbourPatch frontAndBack_half0;
matchTolerance 0.0001;
neighbourPatch front;
}
)

View File

@ -37,29 +37,49 @@ edges
(
);
patches
boundary
(
symmetryPlane left
(
(0 4 5 1)
)
symmetryPlane right
(
(2 3 7 6)
)
symmetryPlane top
(
(1 5 7 3)
)
symmetryPlane bottom
(
(0 2 6 4)
)
empty frontAndBack
(
(4 5 7 6)
(0 1 3 2)
)
left
{
type symmetryPlane;
faces
(
(0 4 5 1)
);
}
right
{
type symmetryPlane;
faces
(
(2 3 7 6)
);
}
top
{
type symmetryPlane;
faces
(
(1 5 7 3)
);
}
bottom
{
type symmetryPlane;
faces
(
(0 2 6 4)
);
}
frontAndBack
{
type empty;
faces
(
(4 5 7 6)
(0 1 3 2)
);
}
);
mergePatchPairs

View File

@ -37,17 +37,21 @@ edges
(
);
patches
boundary
(
wall walls
(
(2 6 5 1)
(0 4 7 3)
(0 1 5 4)
(4 5 6 7)
(7 6 2 3)
(3 2 1 0)
)
walls
{
type wall;
faces
(
(2 6 5 1)
(0 4 7 3)
(0 1 5 4)
(4 5 6 7)
(7 6 2 3)
(3 2 1 0)
);
}
);
mergePatchPairs

View File

@ -38,26 +38,42 @@ edges
(
);
patches
boundary
(
patch base
(
(0 1 5 4)
)
patch outlet
(
(3 2 6 7)
)
patch sides
(
(1 5 6 2)
(0 4 7 3)
)
empty frontAndBack
(
(0 1 2 3)
(4 5 6 7)
)
base
{
type patch;
faces
(
(0 1 5 4)
);
}
outlet
{
type patch;
faces
(
(3 2 6 7)
);
}
sides
{
type patch;
faces
(
(1 5 6 2)
(0 4 7 3)
);
}
frontAndBack
{
type empty;
faces
(
(0 1 2 3)
(4 5 6 7)
);
}
);
mergePatchPairs

View File

@ -15,37 +15,31 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
5
4
(
base
{
type patch;
nFaces 134;
nFaces 150;
startFace 44700;
}
outlet
{
type patch;
nFaces 150;
startFace 44834;
startFace 44850;
}
sides
{
type patch;
nFaces 300;
startFace 44984;
startFace 45000;
}
frontAndBack
{
type empty;
nFaces 45000;
startFace 45284;
}
inlet
{
type patch;
nFaces 16;
startFace 90284;
startFace 45300;
}
)

View File

@ -38,23 +38,35 @@ edges
(
);
patches
boundary
(
patch base
(
(0 1 5 4)
)
patch outlet
(
(3 2 6 7)
)
patch sides
(
(0 4 7 3)
(0 1 2 3)
(1 5 6 2)
(4 5 6 7)
)
base
{
type patch;
faces
(
(0 1 5 4)
);
}
outlet
{
type patch;
faces
(
(3 2 6 7)
);
}
sides
{
type patch;
faces
(
(0 4 7 3)
(0 1 2 3)
(1 5 6 2)
(4 5 6 7)
);
}
);
mergePatchPairs

View File

@ -15,31 +15,25 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
4
3
(
base
{
type patch;
nFaces 3456;
nFaces 3600;
startFace 637200;
}
outlet
{
type patch;
nFaces 3600;
startFace 640656;
startFace 640800;
}
sides
{
type patch;
nFaces 14400;
startFace 644256;
}
inlet
{
type patch;
nFaces 144;
startFace 658656;
startFace 644400;
}
)

View File

@ -37,26 +37,42 @@ edges
(
);
patches
boundary
(
patch fuel
(
(0 4 7 3)
)
patch air
(
(1 2 6 5)
)
patch outlet
(
(0 1 5 4)
(7 6 2 3)
)
empty frontAndBack
(
(4 5 6 7)
(0 3 2 1)
)
fuel
{
type patch;
faces
(
(0 4 7 3)
);
}
air
{
type patch;
faces
(
(1 2 6 5)
);
}
outlet
{
type patch;
faces
(
(0 1 5 4)
(7 6 2 3)
);
}
frontAndBack
{
type empty;
faces
(
(4 5 6 7)
(0 3 2 1)
);
}
);
mergePatchPairs

View File

@ -40,40 +40,64 @@ edges
(
);
patches
boundary
(
patch inlet
(
(0 2 6 0)
)
inlet
{
type patch;
faces
(
(0 2 6 0)
);
}
patch outlet
(
(1 3 7 1)
(3 5 9 7)
)
outlet
{
type patch;
faces
(
(1 3 7 1)
(3 5 9 7)
);
}
patch freestreamInlet
(
(2 4 8 6)
)
freestreamInlet
{
type patch;
faces
(
(2 4 8 6)
);
}
patch freestream
(
(4 8 9 5)
)
freestream
{
type patch;
faces
(
(4 8 9 5)
);
}
wedge wedge1
(
(0 2 3 1)
(2 4 5 3)
)
wedge1
{
type wedge;
faces
(
(0 2 3 1)
(2 4 5 3)
);
}
wedge wedge2
(
(0 1 7 6)
(6 7 9 8)
)
wedge2
{
type wedge;
faces
(
(0 1 7 6)
(6 7 9 8)
);
}
);
mergePatchPairs

View File

@ -37,37 +37,61 @@ edges
(
);
patches
boundary
(
patch cone
(
(1 5 4 0)
)
patch outlet
(
(2 6 5 1)
)
cone
{
type patch;
faces
(
(1 5 4 0)
);
}
patch freestream
(
(3 7 6 2)
)
outlet
{
type patch;
faces
(
(2 6 5 1)
);
}
symmetryPlane centreLeft
(
(0 4 7 3)
)
patch wedge1
(
(0 3 2 1)
)
freestream
{
type patch;
faces
(
(3 7 6 2)
);
}
patch wedge2
(
(4 5 6 7)
)
centreLeft
{
type symmetryPlane;
faces
(
(0 4 7 3)
);
}
wedge1
{
type patch;
faces
(
(0 3 2 1)
);
}
wedge2
{
type patch;
faces
(
(4 5 6 7)
);
}
);
mergePatchPairs

View File

@ -47,31 +47,51 @@ edges
(
);
patches
boundary
(
patch inlet
(
(0 8 10 2)
(2 10 13 5)
)
patch outlet
(
(4 7 15 12)
)
symmetryPlane bottom
(
(0 1 9 8)
)
symmetryPlane top
(
(5 13 14 6)
(6 14 15 7)
)
patch obstacle
(
(1 3 11 9)
(3 4 12 11)
)
inlet
{
type patch;
faces
(
(0 8 10 2)
(2 10 13 5)
);
}
outlet
{
type patch;
faces
(
(4 7 15 12)
);
}
bottom
{
type symmetryPlane;
faces
(
(0 1 9 8)
);
}
top
{
type symmetryPlane;
faces
(
(5 13 14 6)
(6 14 15 7)
);
}
obstacle
{
type patch;
faces
(
(1 3 11 9)
(3 4 12 11)
);
}
);
mergePatchPairs

View File

@ -20,35 +20,30 @@ FoamFile
inlet
{
type patch;
physicalType supersonicInlet;
nFaces 80;
startFace 31936;
}
outlet
{
type patch;
physicalType pressureTransmissiveOutlet;
nFaces 64;
startFace 32016;
}
bottom
{
type symmetryPlane;
physicalType symmetryPlane;
nFaces 48;
startFace 32080;
}
top
{
type symmetryPlane;
physicalType symmetryPlane;
nFaces 240;
startFace 32128;
}
obstacle
{
type patch;
physicalType adiabaticWall;
nFaces 208;
startFace 32368;
}

View File

@ -20,28 +20,28 @@ internalField uniform 1;
boundaryField
{
top
top
{
type zeroGradient;
}
inlet
inlet
{
type fixedValue;
value uniform 1;
}
outlet
outlet
{
type zeroGradient;
}
bottom
bottom
{
type symmetryPlane;
}
frontAndBack
frontAndBack
{
type empty;
}

View File

@ -16,7 +16,7 @@ FoamFile
convertToMeters 1;
vertices
vertices
(
(0 0 0)
(4.1 0 0)
@ -28,41 +28,61 @@ vertices
(0 1 0.1)
);
blocks
blocks
(
hex (0 1 2 3 4 5 6 7) (60 30 1) simpleGrading (1 1 1)
);
edges
edges
(
);
patches
boundary
(
wall top
(
(3 7 6 2)
)
wall inlet
(
(0 4 7 3)
)
wall outlet
(
(2 6 5 1)
)
wall bottom
(
(1 5 4 0)
)
empty frontAndBack
(
(0 3 2 1)
(4 5 6 7)
)
top
{
type wall;
faces
(
(3 7 6 2)
);
}
inlet
{
type patch;
faces
(
(0 4 7 3)
);
}
outlet
{
type patch;
faces
(
(2 6 5 1)
);
}
bottom
{
type symmetryPlane;
faces
(
(1 5 4 0)
);
}
frontAndBack
{
type empty;
faces
(
(0 3 2 1)
(4 5 6 7)
);
}
);
mergePatchPairs
mergePatchPairs
(
);

View File

@ -19,36 +19,31 @@ FoamFile
(
top
{
type patch;
physicalType inlet;
type wall;
nFaces 60;
startFace 3510;
}
inlet
{
type patch;
physicalType supersonicInlet;
nFaces 30;
startFace 3570;
}
outlet
{
type patch;
physicalType extrapolatedOutlet;
nFaces 30;
startFace 3600;
}
bottom
{
type symmetryPlane;
physicalType symmetryPlane;
nFaces 60;
startFace 3630;
}
frontAndBack
{
type empty;
physicalType empty;
nFaces 3600;
startFace 3690;
}

View File

@ -37,20 +37,28 @@ edges
(
);
patches
boundary
(
patch sides
(
(1 2 6 5)
(0 4 7 3)
)
empty empty
(
(0 1 5 4)
(5 6 7 4)
(3 7 6 2)
(0 3 2 1)
)
sides
{
type patch;
faces
(
(1 2 6 5)
(0 4 7 3)
);
}
empty
{
type empty;
faces
(
(0 1 5 4)
(5 6 7 4)
(3 7 6 2)
(0 3 2 1)
);
}
);
mergePatchPairs

View File

@ -20,14 +20,12 @@ FoamFile
sides
{
type patch;
physicalType outletAdiabatic;
nFaces 2;
startFace 99;
}
empty
{
type empty;
physicalType empty;
nFaces 400;
startFace 101;
}

View File

@ -44,29 +44,49 @@ edges
(
);
patches
boundary
(
patch inlet
(
(0 6 9 3)
)
patch outlet
(
(2 5 11 8)
)
symmetryPlane bottom
(
(0 1 7 6)
)
symmetryPlane top
(
(3 9 10 4)
(4 10 11 5)
)
patch obstacle
(
(1 2 8 7)
)
inlet
{
type patch;
faces
(
(0 6 9 3)
);
}
outlet
{
type patch;
faces
(
(2 5 11 8)
);
}
bottom
{
type symmetryPlane;
faces
(
(0 1 7 6)
);
}
top
{
type symmetryPlane;
faces
(
(3 9 10 4)
(4 10 11 5)
);
}
obstacle
{
type patch;
faces
(
(1 2 8 7)
);
}
);
mergePatchPairs

View File

@ -85,65 +85,85 @@ edges
(
);
patches
boundary
(
patch inlet
(
(0 22 23 1)
(1 23 24 2)
(2 24 25 3)
)
patch outlet
(
(16 17 39 38)
(17 18 40 39)
(18 19 41 40)
(19 20 42 41)
(20 21 43 42)
)
wall upperWall
(
(3 25 31 9)
(9 31 37 15)
(15 37 43 21)
)
wall lowerWall
(
(0 6 28 22)
(6 5 27 28)
(5 4 26 27)
(4 10 32 26)
(10 16 38 32)
)
empty frontAndBack
(
(22 28 29 23)
(23 29 30 24)
(24 30 31 25)
(26 32 33 27)
(27 33 34 28)
(28 34 35 29)
(29 35 36 30)
(30 36 37 31)
(32 38 39 33)
(33 39 40 34)
(34 40 41 35)
(35 41 42 36)
(36 42 43 37)
(0 1 7 6)
(1 2 8 7)
(2 3 9 8)
(4 5 11 10)
(5 6 12 11)
(6 7 13 12)
(7 8 14 13)
(8 9 15 14)
(10 11 17 16)
(11 12 18 17)
(12 13 19 18)
(13 14 20 19)
(14 15 21 20)
)
inlet
{
type patch;
faces
(
(0 22 23 1)
(1 23 24 2)
(2 24 25 3)
);
}
outlet
{
type patch;
faces
(
(16 17 39 38)
(17 18 40 39)
(18 19 41 40)
(19 20 42 41)
(20 21 43 42)
);
}
upperWall
{
type wall;
faces
(
(3 25 31 9)
(9 31 37 15)
(15 37 43 21)
);
}
lowerWall
{
type wall;
faces
(
(0 6 28 22)
(6 5 27 28)
(5 4 26 27)
(4 10 32 26)
(10 16 38 32)
);
}
frontAndBack
{
type empty;
faces
(
(22 28 29 23)
(23 29 30 24)
(24 30 31 25)
(26 32 33 27)
(27 33 34 28)
(28 34 35 29)
(29 35 36 30)
(30 36 37 31)
(32 38 39 33)
(33 39 40 34)
(34 40 41 35)
(35 41 42 36)
(36 42 43 37)
(0 1 7 6)
(1 2 8 7)
(2 3 9 8)
(4 5 11 10)
(5 6 12 11)
(6 7 13 12)
(7 8 14 13)
(8 9 15 14)
(10 11 17 16)
(11 12 18 17)
(12 13 19 18)
(13 14 20 19)
(14 15 21 20)
);
}
);
mergePatchPairs

View File

@ -37,23 +37,35 @@ edges
(
);
patches
boundary
(
wall movingWall
(
(3 7 6 2)
)
wall fixedWalls
(
(0 4 7 3)
(2 6 5 1)
(1 5 4 0)
)
empty frontAndBack
(
(0 3 2 1)
(4 5 6 7)
)
movingWall
{
type wall;
faces
(
(3 7 6 2)
);
}
fixedWalls
{
type wall;
faces
(
(0 4 7 3)
(2 6 5 1)
(1 5 4 0)
);
}
frontAndBack
{
type empty;
faces
(
(0 3 2 1)
(4 5 6 7)
);
}
);
mergePatchPairs

View File

@ -8,7 +8,7 @@
FoamFile
{
version 2.0;
format ascii;
format binary;
class polyBoundaryMesh;
location "constant/polyMesh";
object boundary;

View File

@ -71,41 +71,53 @@ edges
arc 15 19 ( 53.033 -53.033 -25)
);
patches
boundary
(
// is there no way of defining all my 'defaultFaces' to be 'wall'?
wall Default_Boundary_Region
(
// block0
( 0 1 3 2 )
( 11 10 12 13 )
( 0 10 11 1 )
( 2 3 13 12 )
// block1
( 4 5 7 6 )
( 15 14 16 17 )
( 4 14 15 5 )
( 6 7 17 16 )
// block2
( 1 8 9 3 )
( 18 11 13 19 )
( 3 9 19 13 )
( 1 11 18 8 )
// block3
( 5 9 8 7 )
( 19 15 17 18 )
( 5 15 19 9 )
( 7 8 18 17 )
)
patch inlet
(
(0 2 12 10)
)
// is there no way of defining all my 'defaultFaces' to be 'wall'?
Default_Boundary_Region
{
type wall;
faces
(
// block0
( 0 1 3 2 )
( 11 10 12 13 )
( 0 10 11 1 )
( 2 3 13 12 )
// block1
( 4 5 7 6 )
( 15 14 16 17 )
( 4 14 15 5 )
( 6 7 17 16 )
// block2
( 1 8 9 3 )
( 18 11 13 19 )
( 3 9 19 13 )
( 1 11 18 8 )
// block3
( 5 9 8 7 )
( 19 15 17 18 )
( 5 15 19 9 )
( 7 8 18 17 )
);
}
inlet
{
type patch;
faces
(
(0 2 12 10)
);
}
patch outlet
(
(4 6 16 14)
)
outlet
{
type patch;
faces
(
(4 6 16 14)
);
}
);
mergePatchPairs

View File

@ -47,31 +47,51 @@ edges
(
);
patches
boundary
(
patch inlet
(
(0 8 10 2)
(2 10 13 5)
)
patch outlet
(
(4 7 15 12)
)
symmetryPlane bottom
(
(0 1 9 8)
)
symmetryPlane top
(
(5 13 14 6)
(6 14 15 7)
)
patch obstacle
(
(1 3 11 9)
(3 4 12 11)
)
inlet
{
type patch;
faces
(
(0 8 10 2)
(2 10 13 5)
);
}
outlet
{
type patch;
faces
(
(4 7 15 12)
);
}
bottom
{
type symmetryPlane;
faces
(
(0 1 9 8)
);
}
top
{
type symmetryPlane;
faces
(
(5 13 14 6)
(6 14 15 7)
);
}
obstacle
{
type patch;
faces
(
(1 3 11 9)
(3 4 12 11)
);
}
);
mergePatchPairs

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