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 # untracked configuration files
/etc/prefs.csh /etc/prefs.csh
/etc/prefs.sh /etc/prefs.sh
/etc/config/*.csh /etc/config/prefs.csh
/etc/config/*.sh /etc/config/prefs.sh
# source packages - anywhere # source packages - anywhere
*.tar.bz2 *.tar.bz2

View File

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

View File

@ -49,6 +49,10 @@ int main(int argc, char *argv[])
Info<< nl << "Calculating potential flow" << endl; 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); adjustPhi(phi, U, p);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
@ -99,6 +103,9 @@ int main(int argc, char *argv[])
p.write(); p.write();
} }
runTime.functionObjects().end();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s" << " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl; << nl << endl;

View File

@ -220,7 +220,7 @@ snapControls
//- Maximum relative distance for points to be attracted by surface. //- Maximum relative distance for points to be attracted by surface.
// True distance is this factor times local maximum edge length. // True distance is this factor times local maximum edge length.
// Note: changed(corrected) w.r.t 17x! (17x used 2* tolerance) // Note: changed(corrected) w.r.t 17x! (17x used 2* tolerance)
tolerance 2.0; tolerance 1.0;
//- Number of mesh displacement relaxation iterations. //- Number of mesh displacement relaxation iterations.
nSolveIter 30; nSolveIter 30;
@ -228,6 +228,10 @@ snapControls
//- Maximum number of snapping relaxation iterations. Should stop //- Maximum number of snapping relaxation iterations. Should stop
// before upon reaching a correct mesh. // before upon reaching a correct mesh.
nRelaxIter 5; 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 //- 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. // is the thickness of the layer furthest away from the wall.
// See relativeSizes parameter. // See relativeSizes parameter.
finalLayerThickness 0.3; finalLayerThickness 0.3;
@ -410,7 +417,7 @@ debug 0;
// Merge tolerance. Is fraction of overall bounding box of initial mesh. // Merge tolerance. Is fraction of overall bounding box of initial mesh.
// Note: the write tolerance needs to be higher than this. // 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[]) int main(int argc, char *argv[])
{ {
timeSelector::addOptions(); timeSelector::addOptions();
argList::addBoolOption
(
"noConstant",
"exclude the 'constant/' dir in the times list"
);
# include "addRegionOption.H" # include "addRegionOption.H"
# include "setRootCase.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" # include "createTime.H"
// Make sure we do not use the master-only reading since we read // Make sure we do not use the master-only reading since we read
// fields (different per processor) as dictionaries. // fields (different per processor) as dictionaries.
regIOobject::fileModificationChecking = regIOobject::timeStamp; regIOobject::fileModificationChecking = regIOobject::timeStamp;

View File

@ -98,6 +98,44 @@ autoPtr<fvMesh> createMesh
xferCopy(labelList()), xferCopy(labelList()),
false 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() //Pout<< "Writing dummy mesh to " << dummyMesh.polyMesh::objectPath()
// << endl; // << endl;
dummyMesh.write(); dummyMesh.write();
@ -239,7 +277,11 @@ autoPtr<fvMesh> createMesh
if (!haveMesh) 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()); List<pointZone*> pz(pointZoneNames.size());
forAll(pointZoneNames, i) forAll(pointZoneNames, i)
{ {
@ -389,6 +431,12 @@ void printMeshData(const polyMesh& mesh)
globalIndex globalBoundaryFaces(mesh.nFaces()-mesh.nInternalFaces()); 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++) for (label procI = 0; procI < Pstream::nProcs(); procI++)
{ {
Info<< endl Info<< endl
@ -413,7 +461,32 @@ void printMeshData(const polyMesh& mesh)
<< " Number of processor faces = " << nProcFaces << nl << " Number of processor faces = " << nProcFaces << nl
<< " Number of boundary faces = " << " Number of boundary faces = "
<< globalBoundaryFaces.localSize(procI) << endl; << 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" # 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 // Create processor directory if non-existing
if (!Pstream::master() && !isDir(args.path())) if (!Pstream::master() && !isDir(args.path()))
{ {
@ -906,7 +989,7 @@ int main(int argc, char *argv[])
// Debugging: Create additional volField that will be mapped. // Debugging: Create additional volField that will be mapped.
// Used to test correctness of mapping // Used to test correctness of mapping
volVectorField mapCc("mapCc", 1*mesh.C()); //volVectorField mapCc("mapCc", 1*mesh.C());
// Global matching tolerance // Global matching tolerance
const scalar tolDim = getMergeDistance const scalar tolDim = getMergeDistance
@ -948,7 +1031,7 @@ int main(int argc, char *argv[])
// Debugging: test mapped cellcentre field. // Debugging: test mapped cellcentre field.
compareFields(tolDim, mesh.C(), mapCc); //compareFields(tolDim, mesh.C(), mapCc);
// Print nice message // Print nice message
// ~~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~~

View File

@ -3,7 +3,7 @@
# ========= | # ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration | # \\ / O peration |
# \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. # \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
# \\/ M anipulation | # \\/ M anipulation |
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# License # 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 # Source tutorial functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions . $WM_PROJECT_DIR/bin/tools/RunFunctions
@ -62,13 +95,15 @@ else
fi fi
done done
# Recurse to subdirectories # Recurse to subdirectories
for caseName in * #for caseName in *
do #do
if [ -d $caseName ] # if [ -d $caseName ]
then # then
( cd $caseName && $thisScript ) # ( cd $caseName && $thisScript )
fi # fi
done #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 fi
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -37,7 +37,7 @@ usage() {
while [ "$#" -ge 1 ]; do echo "$1"; shift; done while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE cat<<USAGE
Usage: ${0##*/} [OPTION] Usage: ${0##*/} [OPTION] [PARAVIEW_OPTION]
options: options:
-block use blockMesh reader (uses .blockMesh extension) -block use blockMesh reader (uses .blockMesh extension)
-builtin use VTK builtin OpenFOAM reader (uses .foam extension) -builtin use VTK builtin OpenFOAM reader (uses .foam extension)
@ -47,6 +47,9 @@ options:
-touchAll create .blockMesh, .OpenFOAM files (and for all regions) -touchAll create .blockMesh, .OpenFOAM files (and for all regions)
-help print the usage -help print the usage
paraview options start with a double dashes
* start paraview $ParaView_VERSION with the OpenFOAM libraries * start paraview $ParaView_VERSION with the OpenFOAM libraries
USAGE USAGE
@ -57,7 +60,7 @@ USAGE
# to clean up # to clean up
unset FOAM_ABORT unset FOAM_ABORT
unset regionName touchOpt unset regionName optTouch
# reader extension # reader extension
extension=OpenFOAM extension=OpenFOAM
@ -88,19 +91,48 @@ do
shift 2 shift 2
;; ;;
-touch) -touch)
touchOpt=true optTouch=true
shift shift
;; ;;
-touchAll) -touchAll)
touchOpt=all optTouch=all
shift shift
;; ;;
--)
shift
break # stop here, treat balance as paraview options
;;
--*)
break # stop here, treat this and balance as paraview options
;;
*) *)
usage "unknown option/argument: '$*'" usage "unknown option/argument: '$*'"
;; ;;
esac esac
done 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 # get a sensible caseName from the directory name
caseName=${PWD##*/} caseName=${PWD##*/}
caseFile="$caseName.$extension" caseFile="$caseName.$extension"
@ -112,7 +144,7 @@ then
fvControls="$fvControls/$regionName" fvControls="$fvControls/$regionName"
fi fi
case "${touchOpt:-false}" in case "${optTouch:-false}" in
all) all)
extension=OpenFOAM extension=OpenFOAM
if [ -f constant/polyMesh/blockMeshDict ] if [ -f constant/polyMesh/blockMeshDict ]
@ -149,33 +181,56 @@ case "$caseName" in
esac esac
# if [ "${hasData:-false}" = true ]
# check existence of essential files then
#
case $extension in
blockMesh)
for check in system/controlDict constant/polyMesh/blockMeshDict
do
[ -s "$parentDir/$check" ] || usage "file does not exist: '$parentDir/$check'"
done
;;
builtin | OpenFOAM) # has --data=.., send directly to paraview
for check in system/controlDict $fvControls/fvSchemes $fvControls/fvSolution exec paraview "$@"
do
[ -s "$parentDir/$check" ] || usage "file does not exist: '$parentDir/$check'"
done
;;
esac
else
# only create/remove caseFile if it didn't already exist # check existence of essential files
[ -e $caseFile ] || { warn="WARN file does not exist:"
trap "rm -f $caseFile 2>/dev/null; exit 0" EXIT TERM INT case $extension in
touch "$caseFile" blockMesh)
echo "created temporary '$caseFile'" 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" paraviewInstall="$2"
# replace ParaView_DIR=... # replace ParaView_DIR=...
_inlineSed \ _inlineSed \
etc/apps/paraview3/bashrc \ etc/config/paraview.sh \
'/^[^#]/s@ParaView_DIR=.*@ParaView_DIR='"$paraviewInstall@" \ '/^[^#]/s@ParaView_DIR=.*@ParaView_DIR='"$paraviewInstall@" \
"Replacing ParaView_DIR setting by '$paraviewInstall'" "Replacing ParaView_DIR setting by '$paraviewInstall'"
shift 2 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 # Location of site-specific templates etc
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# unset is equivalent to $WM_PROJECT_INST_DIR/site # 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 # Location of user files
# ~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~
@ -177,7 +182,7 @@ _foamEval()
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh`
# Evaluate command-line parameters and record settings for later # 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="$@" export FOAM_SETTINGS="$@"
_foamEval $@ _foamEval $@
@ -200,14 +205,14 @@ export PATH LD_LIBRARY_PATH MANPATH
# Source project setup files # Source project setup files
# ~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamSource $WM_PROJECT_DIR/etc/settings.sh _foamSource $WM_PROJECT_DIR/etc/config/settings.sh
_foamSource $WM_PROJECT_DIR/etc/aliases.sh _foamSource $WM_PROJECT_DIR/etc/config/aliases.sh
# Source user setup files for optional packages # Source user setup files for optional packages
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile apps/paraview3/bashrc` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config/paraview.sh`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile apps/ensight/bashrc` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config/ensight.sh`
# Clean environment paths again. Only remove duplicates # 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/>. # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# #
# File # File
# etc/aliases.csh # etc/config/aliases.csh
# #
# Description # Description
# Aliases for working with OpenFOAM # Aliases for working with OpenFOAM
@ -39,7 +39,7 @@ alias wmSP 'wmSET WM_PRECISION_OPTION=SP'
alias wmDP 'wmSET WM_PRECISION_OPTION=DP' alias wmDP 'wmSET WM_PRECISION_OPTION=DP'
# clear env # 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 # Toggle wmakeScheduler on/off
# - also need to set WM_HOSTS # - also need to set WM_HOSTS
@ -49,7 +49,7 @@ alias wmSchedOFF 'unsetenv WM_SCHEDULER'
# Change ParaView version # 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 # Change directory aliases

View File

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

View File

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

View File

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

View File

@ -22,11 +22,11 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# #
# File # File
# config/compiler.csh # config/example/compiler.csh
# #
# Description # Description
# Fine tuning of ThirdParty compiler settings for OpenFOAM # Example of fine tuning ThirdParty compiler settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/settings.csh # 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/>. # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# #
# File # File
# config/compiler.sh # config/example/compiler.sh
# #
# Description # Description
# Fine tuning of ThirdParty compiler settings for OpenFOAM # Example of fine tuning ThirdParty compiler settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/settings.sh # 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/>. # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# #
# File # File
# config/openmpi.csh # config/example/openmpi.csh
# #
# Description # Description
# Fine tuning of openmpi settings for OpenFOAM # Example of fine tuning openmpi settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/settings.csh # 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/>. # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# #
# File # File
# config/openmpi.sh # config/example/openmpi.sh
# #
# Description # Description
# Fine tuning of openmpi settings for OpenFOAM # Example of fine tuning openmpi settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/settings.sh # 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/>. # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# #
# File # File
# paraview3/cshrc-EXAMPLE # config/example/paraview.csh
# #
# Description # 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 # different ParaView_VERSION
# #
# Note # 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 if ( $status == 0 ) source $foamFile ParaView_VERSION=3.9.0
unset foamFile unset foamFile

View File

@ -22,10 +22,10 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# #
# File # File
# paraview3/bashrc-EXAMPLE # config/example/paraview.sh
# #
# Description # 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 # different ParaView_VERSION
# #
# Note # 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 [ $? -eq 0 ] && . $foamFile ParaView_VERSION=3.9.0
unset foamFile unset foamFile

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# #
# File # File
# etc/prefs.csh # config/example/prefs.csh
# #
# Description # Description
# Preset variables for the OpenFOAM configuration - C-Shell shell syntax. # 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/>. # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# #
# File # File
# etc/prefs.sh # config/example/prefs.sh
# #
# Description # Description
# Preset variables for the OpenFOAM configuration - POSIX shell syntax. # 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/>. # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# #
# File # File
# paraview3/cshrc # config/paraview.csh
# #
# Description # Description
# Setup file for paraview-3.x # Setup file for paraview-3.x

View File

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

View File

@ -22,7 +22,7 @@
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# #
# File # File
# scotch/bashrc # config/scotch.sh
# #
# Description # Description
# Setup file for scotch include/libraries. # Setup file for scotch include/libraries.
@ -36,5 +36,4 @@
export SCOTCH_VERSION=scotch_5.1.11 export SCOTCH_VERSION=scotch_5.1.11
export SCOTCH_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$SCOTCH_VERSION 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/>. # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# #
# File # File
# etc/settings.csh # etc/config/settings.csh
# #
# Description # Description
# Startup file for OpenFOAM # Startup file for OpenFOAM
@ -193,7 +193,7 @@ unsetenv MPFR_ARCH_PATH GMP_ARCH_PATH
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if ( ! $?foamCompiler ) then if ( ! $?foamCompiler ) then
set foamCompiler=system 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'" echo " foamCompiler not set, using '$foamCompiler'"
endif endif
@ -241,7 +241,7 @@ case ThirdParty:
breaksw breaksw
default: default:
echo 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 " Unknown OpenFOAM compiler type '$WM_COMPILER'"
echo " Please check your settings" echo " Please check your settings"
echo echo
@ -262,7 +262,7 @@ case ThirdParty:
# Check that the compiler directory can be found # Check that the compiler directory can be found
if ( ! -d "$gccDir" ) then if ( ! -d "$gccDir" ) then
echo 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 " Cannot find $gccDir installation."
echo " Please install this compiler version or if you wish to use the system compiler," echo " Please install this compiler version or if you wish to use the system compiler,"
echo " change the 'foamCompiler' setting to 'system'" echo " change the 'foamCompiler' setting to 'system'"
@ -302,7 +302,7 @@ case ThirdParty:
# Check that the compiler directory can be found # Check that the compiler directory can be found
if ( ! -d "$clangDir" ) then if ( ! -d "$clangDir" ) then
echo 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 " Cannot find $clangDir installation."
echo " Please install this compiler version or if you wish to use the system compiler," echo " Please install this compiler version or if you wish to use the system compiler,"
echo " change the 'foamCompiler' setting to 'system'" echo " change the 'foamCompiler' setting to 'system'"

View File

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

View File

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

View File

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

View File

@ -107,9 +107,6 @@ if ( $?WM_PROJECT_INST_DIR ) then
set foamOldDirs="$WM_PROJECT_INST_DIR $foamOldDirs" set foamOldDirs="$WM_PROJECT_INST_DIR $foamOldDirs"
endif endif
endif endif
if ( $?WM_PROJECT_SITE ) then
set foamOldDirs="$WM_PROJECT_SITE $foamOldDirs"
endif
# Location of installation # 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 # Location of site-specific templates etc
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# unset is equivalent to $WM_PROJECT_INST_DIR/site # 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 # 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` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.csh`
# Evaluate command-line parameters and record settings for later # 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 "${*}" setenv FOAM_SETTINGS "${*}"
while ( $#argv > 0 ) while ( $#argv > 0 )
switch ($argv[1]) switch ($argv[1])
@ -194,13 +196,13 @@ if ( $status == 0 ) setenv MANPATH $cleaned
# Source project setup files # Source project setup files
# ~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamSource $WM_PROJECT_DIR/etc/settings.csh _foamSource $WM_PROJECT_DIR/etc/config/settings.csh
_foamSource $WM_PROJECT_DIR/etc/aliases.csh _foamSource $WM_PROJECT_DIR/etc/config/aliases.csh
# Source user setup files for optional packages # Source user setup files for optional packages
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile apps/paraview3/cshrc` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config/paraview.csh`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile apps/ensight/cshrc` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config/ensight.csh`
# Clean environment paths again. Only remove duplicates # Clean environment paths again. Only remove duplicates

View File

@ -71,6 +71,27 @@ void Foam::dynamicCode::checkSecurity
<< "using dlopen)" << "using dlopen)"
<< exit(FatalIOError); << 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; 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(); const label nFiles = compileFiles_.size() + copyFiles_.size();
DynamicList<fileName> resolvedFiles(nFiles); DynamicList<fileName> resolvedFiles(nFiles);

View File

@ -414,11 +414,11 @@ Foam::argList::argList
( (
( (
validOptions.found(optionName) validOptions.found(optionName)
&& validOptions[optionName] != "" && !validOptions[optionName].empty()
) )
|| ( || (
validParOptions.found(optionName) validParOptions.found(optionName)
&& validParOptions[optionName] != "" && !validParOptions[optionName].empty()
) )
) )
{ {
@ -833,6 +833,116 @@ Foam::argList::~argList()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * 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 void Foam::argList::printNotes() const
{ {
// output notes directly - no automatic text wrapping // output notes directly - no automatic text wrapping

View File

@ -334,6 +334,19 @@ public:
static void noParallel(); 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
//- Print notes (if any) //- Print notes (if any)

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -124,7 +124,7 @@ bool Foam::matchPoints
{ {
label faceI = pts1MagSqr.indices()[j]; label faceI = pts1MagSqr.indices()[j];
Pout<< "Compared coord:" << pts1[faceI] Pout<< " Compared coord:" << pts1[faceI]
<< " with difference to point " << " with difference to point "
<< mag(pts1[faceI] - pts0[face0I]) << endl; << 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 Foam::labelPairList Foam::globalPoints::addSendTransform
( (
const label patchI, const label patchI,
@ -67,6 +91,15 @@ Foam::labelPairList Foam::globalPoints::addSendTransform
forAll(info, i) 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 sendInfo[i] = globalIndexAndTransform::encode
( (
globalIndexAndTransform::processor(info[i]), globalIndexAndTransform::processor(info[i]),
@ -129,72 +162,63 @@ bool Foam::globalPoints::mergeInfo
{ {
bool anyChanged = false; bool anyChanged = false;
// Extend to make space for the nbrInfo (trimmed later)
labelPairList newInfo(myInfo); labelPairList newInfo(myInfo);
label newI = newInfo.size(); label newI = newInfo.size();
newInfo.setSize(newI + nbrInfo.size()); newInfo.setSize(newI + nbrInfo.size());
forAll(nbrInfo, i) 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 // Check if already have information about nbr point. There are two
// possibilities: // possibilities:
// - information found about same point but different transform. // - information found about same point but different transform.
// Combine transforms // Combine transforms
// - information not found. // - information not found.
label myIndex = -1; label index = findSamePoint(myInfo, nbrInfo[i]);
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]
);
// Combine mine and nbr transform if (index == -1)
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)
{ {
// New point // New point
newInfo[newI++] = nbrInfo[i]; newInfo[newI++] = nbrInfo[i];
anyChanged = true; 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); newInfo.setSize(newI);
@ -327,7 +351,7 @@ void Foam::globalPoints::printProcPoints
label index = globalIndexAndTransform::index(pointInfo[i]); label index = globalIndexAndTransform::index(pointInfo[i]);
label trafoI = globalIndexAndTransform::transformIndex(pointInfo[i]); label trafoI = globalIndexAndTransform::transformIndex(pointInfo[i]);
Pout<< "proc:" << procI; Pout<< " proc:" << procI;
Pout<< " localpoint:"; Pout<< " localpoint:";
Pout<< index; Pout<< index;
Pout<< " through transform:" Pout<< " through transform:"
@ -386,6 +410,10 @@ void Foam::globalPoints::initOwnPoints
) )
); );
//Pout<< "For point "<< pp.points()[meshPointI]
// << " inserting info " << knownInfo
// << endl;
// Update changedpoints info. // Update changedpoints info.
if (storeInitialInfo(knownInfo, localPointI)) if (storeInitialInfo(knownInfo, localPointI))
{ {
@ -613,80 +641,59 @@ void Foam::globalPoints::receivePatchPoints
label meshPointA = meshPoints[i]; label meshPointA = meshPoints[i];
label meshPointB = coupledMeshPoints[i]; label meshPointB = coupledMeshPoints[i];
//Pout<< "Connection between point " << meshPointA if (meshPointA != meshPointB)
// << " 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())
{ {
infoA = addSendTransform //Pout<< "Connection between point " << meshPointA
// << " at " << mesh_.points()[meshPointA]
// << " and " << meshPointB
// << " at " << mesh_.points()[meshPointB] << endl;
label localA = meshToLocalPoint
( (
cycPatch.index(), meshToPatchPoint,
procPoints_[procPointA()] meshPointA
); );
} label localB = meshToLocalPoint
// Same for info on pointB
Map<label>::iterator procPointB =
meshToProcPoint_.find(localB);
labelPairList infoB;
if (procPointB != meshToProcPoint_.end())
{
infoB = addSendTransform
( (
cycPatch.neighbPatchID(), meshToPatchPoint,
procPoints_[procPointB()] meshPointB
); );
}
if (infoA.size()) // Do we have information on pointA?
{ Map<label>::iterator procPointA =
if (mergeInfo(infoA, localB)) meshToProcPoint_.find(localA);
if (procPointA != meshToProcPoint_.end())
{ {
//Pout<< " Combined info at point " const labelPairList infoA = addSendTransform
// << mesh_.points()[meshPointB] (
// << " now " << endl; cycPatch.index(),
//printProcPoints procPoints_[procPointA()]
//( );
// patchToMeshPoint,
// procPoints_[meshToProcPoint_[localB]] if (mergeInfo(infoA, localB))
//); {
changedPoints.insert(localB); changedPoints.insert(localB);
}
} }
}
if (infoB.size()) // Same for info on pointB
{ Map<label>::iterator procPointB =
if (mergeInfo(infoB, localA)) meshToProcPoint_.find(localB);
if (procPointB != meshToProcPoint_.end())
{ {
//Pout<< " Combined info at point " const labelPairList infoB = addSendTransform
// << mesh_.points()[meshPointA] (
// << " now " << endl; cycPatch.neighbPatchID(),
//printProcPoints procPoints_[procPointB()]
//( );
// patchToMeshPoint,
// procPoints_[meshToProcPoint_[localA]] if (mergeInfo(infoB, localA))
//); {
changedPoints.insert(localA); changedPoints.insert(localA);
}
} }
} }
} }
@ -842,6 +849,9 @@ void Foam::globalPoints::calculateSharedPoints
{ {
Pout<< "globalPoints::calculateSharedPoints(..) : " Pout<< "globalPoints::calculateSharedPoints(..) : "
<< "doing processor to processor communication to get sharedPoints" << "doing processor to processor communication to get sharedPoints"
<< endl
<< " keepAllPoints :" << keepAllPoints << endl
<< " mergeSeparated:" << mergeSeparated << endl
<< endl; << endl;
} }
@ -948,7 +958,7 @@ void Foam::globalPoints::calculateSharedPoints
// printProcPoints(patchToMeshPoint, pointInfo); // printProcPoints(patchToMeshPoint, pointInfo);
// Pout<< endl; // Pout<< endl;
//} //}
//
// Remove direct neighbours from point equivalences. // Remove direct neighbours from point equivalences.
if (!keepAllPoints) if (!keepAllPoints)

View File

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

View File

@ -136,7 +136,19 @@ void Foam::globalIndexAndTransform::determineTransforms()
{ {
const polyPatch& pp = patches[patchI]; 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); const coupledPolyPatch& cpp = refCast<const coupledPolyPatch>(pp);
@ -164,21 +176,19 @@ void Foam::globalIndexAndTransform::determineTransforms()
) == 0 ) == 0
) )
{ {
if (nextTrans == 6)
{
FatalErrorIn
(
"void Foam::globalIndexAndTransform::"
"determineTransforms()"
) << "More than six unsigned transforms"
<< " detected:" << nl << transforms_
<< exit(FatalError);
}
transforms_[nextTrans] = transform; transforms_[nextTrans] = transform;
maxTol[nextTrans++] = cpp.matchTolerance(); 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 ) == 0
) )
{ {
if (nextTrans == 6)
{
FatalErrorIn
(
"void Foam::globalIndexAndTransform::"
"determineTransforms()"
) << "More than six unsigned transforms"
<< " detected:" << nl << transforms_
<< exit(FatalError);
}
transforms_[nextTrans] = transform; transforms_[nextTrans] = transform;
maxTol[nextTrans++] = cpp.matchTolerance(); 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; // 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 = const coupledPolyPatch& cpp =
refCast<const coupledPolyPatch>(pp); refCast<const coupledPolyPatch>(pp);
@ -480,26 +500,28 @@ Foam::globalIndexAndTransform::globalIndexAndTransform
determinePatchTransformSign(); determinePatchTransformSign();
if (debug && transforms_.size() > 1) if (debug && transforms_.size() > 0)
{ {
const polyBoundaryMesh& patches = mesh_.boundaryMesh();
Info<< "Determined global transforms :" << endl; Info<< "Determined global transforms :" << endl;
Info<< "\t\ttranslation\trotation" << endl; Info<< "\t\ttranslation\trotation" << endl;
forAll(transforms_, i) forAll(transforms_, i)
{ {
Info<< '\t' << i << '\t'; 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 else
{ {
Info<< transforms_[i].t() << '\t' << "---"; Info<< trafo.t() << '\t' << "---";
} }
Info<< endl; Info<< endl;
} }
Info<< endl; Info<< endl;
const polyBoundaryMesh& patches = mesh_.boundaryMesh();
Info<< "\tpatch\ttransform\tsign" << endl; Info<< "\tpatch\ttransform\tsign" << endl;
forAll(patchTransformSign_, patchI) forAll(patchTransformSign_, patchI)
@ -513,6 +535,26 @@ Foam::globalIndexAndTransform::globalIndexAndTransform
} }
} }
Info<< endl; 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 Foam::label Foam::globalIndexAndTransform::minimumTransformIndex
( (
const label transformIndex0, const label transformIndex0,
const label transformIndex1 const label transformIndex1
) const ) const
{ {
FixedList<label, 3> permutation0 = decodeTransformIndex(transformIndex0); if (transformIndex0 == transformIndex1)
FixedList<label, 3> permutation1 = decodeTransformIndex(transformIndex1); {
return transformIndex0;
}
// Count number of transforms
FixedList<label, 3> permutation0 = decodeTransformIndex(transformIndex0);
label n0 = 0;
forAll(permutation0, i) forAll(permutation0, i)
{ {
if (permutation0[i] == 0) if (permutation0[i] != 0)
{ {
// 0 wins. n0++;
}
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);
} }
} }
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 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License 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 * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::dynamicFvMesh::~dynamicFvMesh() Foam::dynamicFvMesh::~dynamicFvMesh()

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -85,6 +85,29 @@ public:
//- Construct from objectRegistry, and read/write options //- Construct from objectRegistry, and read/write options
explicit dynamicFvMesh(const IOobject& io); 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 // Selectors

View File

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

View File

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

View File

@ -399,7 +399,7 @@ void kOmegaSSTSAS::correct(const tmp<volTensorField>& gradU)
*max *max
( (
dimensionedScalar("zero",dimensionSet(0, 0, -2, 0, 0), 0.0), 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 - 2.0/alphaPhi_*k_*grad_omega_k
) )
); );

View File

@ -27,22 +27,12 @@ Class
Description Description
kOmegaSSTSAS LES turbulence model for incompressible flows 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: DESider A European Effort on Hybrid RANS-LES Modelling:
Results of the European-Union Funded Project, 2004 - 2007 Results of the European-Union Funded Project, 2004 - 2007
(Notes on Numerical Fluid Mechanics and Multidisciplinary Design). (Notes on Numerical Fluid Mechanics and Multidisciplinary Design).
Chapter 8 Formulation of the Scale-Adaptive Simulation (SAS) Model during 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. F. R. Menter and Y. Egorov.
SourceFiles SourceFiles

View File

@ -37,23 +37,62 @@ edges
( (
); );
patches boundary
( (
cyclic patch0 patch0_half0
( {
(0 3 2 1) type cyclic;
(4 5 6 7) neighbourPatch patch0_half1;
) faces
cyclic patch1 (
( (0 3 2 1)
(0 4 7 3) );
(2 6 5 1) }
) patch0_half1
cyclic patch2 {
( type cyclic;
(3 7 6 2) neighbourPatch patch0_half0;
(1 5 4 0) 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 mergePatchPairs

View File

@ -22,6 +22,7 @@ FoamFile
type cyclic; type cyclic;
nFaces 256; nFaces 256;
startFace 11520; startFace 11520;
matchTolerance 0.0001;
neighbourPatch patch0_half1; neighbourPatch patch0_half1;
} }
patch0_half1 patch0_half1
@ -29,6 +30,7 @@ FoamFile
type cyclic; type cyclic;
nFaces 256; nFaces 256;
startFace 11776; startFace 11776;
matchTolerance 0.0001;
neighbourPatch patch0_half0; neighbourPatch patch0_half0;
} }
patch1_half0 patch1_half0
@ -36,6 +38,7 @@ FoamFile
type cyclic; type cyclic;
nFaces 256; nFaces 256;
startFace 12032; startFace 12032;
matchTolerance 0.0001;
neighbourPatch patch1_half1; neighbourPatch patch1_half1;
} }
patch1_half1 patch1_half1
@ -43,6 +46,7 @@ FoamFile
type cyclic; type cyclic;
nFaces 256; nFaces 256;
startFace 12288; startFace 12288;
matchTolerance 0.0001;
neighbourPatch patch1_half0; neighbourPatch patch1_half0;
} }
patch2_half0 patch2_half0
@ -50,6 +54,7 @@ FoamFile
type cyclic; type cyclic;
nFaces 256; nFaces 256;
startFace 12544; startFace 12544;
matchTolerance 0.0001;
neighbourPatch patch2_half1; neighbourPatch patch2_half1;
} }
patch2_half1 patch2_half1
@ -57,6 +62,7 @@ FoamFile
type cyclic; type cyclic;
nFaces 256; nFaces 256;
startFace 12800; startFace 12800;
matchTolerance 0.0001;
neighbourPatch patch2_half0; 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` application=`getApplication`
cp -r 0.org 0 > /dev/null 2>&1
runApplication blockMesh runApplication blockMesh
runApplication $application runApplication $application
compileApplication analyticalCylinder
runApplication analyticalCylinder
runApplication streamFunction runApplication streamFunction
# ----------------------------------------------------------------- end-of-file # ----------------------------------------------------------------- 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) arc 34 28 (-0.34202 0.939693 0.5)
); );
patches boundary
( (
symmetryPlane down down
( {
(0 1 20 19) type symmetryPlane;
(1 2 21 20) faces
(12 11 30 31) (
(13 12 31 32) (0 1 20 19)
) (1 2 21 20)
patch right (12 11 30 31)
( (13 12 31 32)
(2 3 22 21) );
(3 6 25 22) }
) right
symmetryPlane up {
( type patch;
(7 8 27 26) faces
(6 7 26 25) (
(8 18 37 27) (2 3 22 21)
(18 17 36 37) (3 6 25 22)
) );
patch left }
( up
(14 13 32 33) {
(17 14 33 36) type symmetryPlane;
) faces
symmetryPlane cylinder (
( (7 8 27 26)
(10 5 24 29) (6 7 26 25)
(5 0 19 24) (8 18 37 27)
(16 10 29 35) (18 17 36 37)
(11 16 35 30) );
) }
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 mergePatchPairs

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -37,29 +37,49 @@ edges
( (
); );
patches boundary
( (
wall top top
( {
(3 7 6 2) type wall;
) faces
wall inlet (
( (3 7 6 2)
(0 4 7 3) );
) }
wall outlet inlet
( {
(2 6 5 1) type patch;
) faces
wall bottom (
( (0 4 7 3)
(1 5 4 0) );
) }
empty frontAndBack outlet
( {
(0 3 2 1) type patch;
(4 5 6 7) 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 top
{ {
type patch; type wall;
physicalType inlet;
nFaces 60; nFaces 60;
startFace 3510; startFace 3510;
} }
inlet inlet
{ {
type patch; type patch;
physicalType supersonicInlet;
nFaces 30; nFaces 30;
startFace 3570; startFace 3570;
} }
outlet outlet
{ {
type patch; type patch;
physicalType extrapolatedOutlet;
nFaces 30; nFaces 30;
startFace 3600; startFace 3600;
} }
bottom bottom
{ {
type symmetryPlane; type symmetryPlane;
physicalType symmetryPlane;
nFaces 60; nFaces 60;
startFace 3630; startFace 3630;
} }
frontAndBack frontAndBack
{ {
type empty; type empty;
physicalType empty;
nFaces 3600; nFaces 3600;
startFace 3690; startFace 3690;
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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