Merge branch 'master' of ssh://noisy/home/noisy3/OpenFOAM/OpenFOAM-dev

This commit is contained in:
andy
2009-07-17 18:07:11 +01:00
116 changed files with 956 additions and 1457 deletions

8
.gitignore vendored
View File

@ -38,12 +38,8 @@ SiCortex*Gcc*/
solaris*Gcc*/
SunOS*Gcc*/
# reinstate wmake/rules that might look like build folders
!wmake/rules/*/
# but do continue to ignore the derived wmake files
wmake/rules/*/dirToString
wmake/rules/*/wmkdep
# all of the wmake wmkdep and dirToString binaries
wmake/bin
# doxygen generated documentation
doc/[Dd]oxygen/html

View File

@ -38,155 +38,122 @@
*** Regular Expressions
The addition of regular expressions marks a major improvement in usability.
+ *New* =regExp= class provides support for accessing POSIX extended regular
expresssions from within OpenFOAM.
See the manpages on your system (/man 7 regex/) for more information
about the extended regular expresssion syntax. Since entire strings are
matched, the =^= and =$= anchors are not required.
+ *New* =wordRe= class can contain a =word= or a =regExp= .
The match() method matches appropriately (as a =word= or as a =regExp=).
expresssions from within OpenFOAM. See the manpages on your system (/man
7 regex/) for more information about the extended regular expression
syntax. Since entire strings are matched, the =^= and =$= anchors are not
required.
+ *New* =wordRe= class can contain a =word= or a =regExp= . The match()
method matches appropriately (as a =word= or as a =regExp=).
+ *New* =stringListOps= to search string lists based on regular expressions,
=wordRe= or =wordReList= .
+ =Istream= and =Ostream= now retain backslashes when reading/writing strings.
The backslash continues to be used as an escape character for double-quote
and newline, but otherwise get passed through "as-is" without any other
special meaning (ie, they are /not/ C-style strings). This especially
helps with input/output of regular expressions.
+ =Istream= and =Ostream= now retain backslashes when reading/writing
strings. The backslash continues to be used as an escape character for
double-quote and newline, but otherwise get passed through "as-is" without
any other special meaning (ie, they are /not/ C-style strings). This
especially helps with input/output of regular expressions.
*** Dictionary improvements/changes
+ Dictionaries can use words (unquoted) or regular expressions (quoted)
for their keywords. When searching, an exact match has priority
over a regular expression match.
+ Dictionaries can use words (unquoted) or regular expressions (quoted) for
their keywords. When searching, an exact match has priority over a regular
expression match.
MJ: If multiple regular expressions they get matched in reverse order.
+ The default =#inputMode= is now '=merge=', which corresponds to the most
general usage. The =#inputMode warn= corresponds to the previous
default behaviour.
+ The *new* =#inputMode protect= can be used to conditionally merge default
general usage. The =#inputMode warn= corresponds to the previous default
behaviour.
+ The *new* =#inputMode protect= can be used to conditionally merge default
values into existing dictionaries.
+ *New* =digest()= method to calculate and return the SHA1 message digest
*** Improved list containers
+ It is now possible to append a =UList= to an existing =List= or
=DynamicList= .
+ =DynamicList= is now much more flexible. It can be used with the
=append()= method, or with the =setSize()= method and =operator[]=, as
per =List= . =DynamicList= also has more methods for adjusting the
space allocated.
=append()= method, or with the =setSize()= method and =operator[]=, as per
=List= . =DynamicList= also has more methods for adjusting the space
allocated.
+ =SortableList= now uses stable sort and allows =reverseSort()= as well.
=SortableList= is also more versatile - the indices mostly remain
unallocated until they are required in the =sort()= method.
The sort indices can be deallocated with the =shrink()= method.
Works as expected with =transfer()= and assignment from other lists.
unallocated until they are required in the =sort()= method. The sort
indices can be deallocated with the =shrink()= method. Works as expected
with =transfer()= and assignment from other lists.
+ Specialization for =UList<bool>::operator[](..) const= to return =false=
for out-of-range elements. This allows lazy evaluation with no noticeable
change in performance.
+ =PackedList= has much better performance, *new* lazy evaluation and
*new* auto-vivify of elements on assignment. Any auto-vivified
elements will also flood-fill the gaps with zero. The =append()= method
can be used like in =DynamicList= to append a single element. The =set()=
method can be used like in =labelHashSet= .
A =PackedBoolList= can thus replace =labelHashSet= in many places.
+ =PackedList= has much better performance, *new* lazy evaluation and *new*
auto-vivify of elements on assignment. Any auto-vivified elements will
also flood-fill the gaps with zero. The =append()= method can be used
like in =DynamicList= to append a single element. The =set()= method can
be used like in =labelHashSet= . A =PackedBoolList= can thus replace
=labelHashSet= in many places.
+ *New* =UIndirectList= for an indirect list without storing the addressing.
*** New hashing algorithms
+ Bob Jenkins' hash routine for performance improvement (5-10% faster for
string hashing than the previous algorithm) and fewer collisions.
+ SHA1 hashing and SHA1 message digests (NIST specification FIPS-180-1)
added. The SHA1 digest provides a compact (20 bytes) means of
determining if the contents of an object have changed. The *new*
=OSHA1stream= class can be used to calculate SHA1 digests for anything
that can write to an output stream.
added. The SHA1 digest provides a compact (20 bytes) means of determining
if the contents of an object have changed. The *new* =OSHA1stream= class
can be used to calculate SHA1 digests for anything that can write to an
output stream.
*** HashTable/HashSet improvements
+ Performance improvements for querying on empty tables
+ The =erase()= method can take a list of keys or the keys from any
another =HashTable=/=HashSet= .
+ =HashSet= has an =operator[]() const= that allows the same syntax
to be used for =boolList=, =PackedBoolList= and =labelHashSet= .
+ The =erase()= method can take a list of keys or the keys from any another
=HashTable=/=HashSet= .
+ =HashSet= has an =operator[]() const= that allows the same syntax to be
used for =boolList=, =PackedBoolList= and =labelHashSet= .
+ =HashSet has additional operators '+=', '-=', '&=' to add, remove or
intersect keys, respectively.
*** Improved bool/Switch
+ The =Switch= class has reduced the storage to be on par with =bool= .
It is now more flexible and behaves much more like a =bool= .
+ The =Switch= class has reduced the storage to be on par with =bool= . It
is now more flexible and behaves much more like a =bool= .
+ The IO for =bool= uses =Switch= internally for reading, so the end-user
doesn't need to know if a particular class used =bool= or =Switch= .
*** Miscellaneous container class improvments
+ *New* Boost-style =StaticAssert= added.
Which is useful to catch invalid template sizes, for example.
+ Various containers now have C++0x-style =cbegin()=, =cend()= iterator methods.
+ *New* Boost-style =StaticAssert= added. Which is useful to catch invalid
template sizes, for example.
+ Various containers now have C++0x-style =cbegin()=, =cend()= iterator
methods.
+ Various containers now have STL-style =empty()= method, which may be more
readable and universal than =!size()= or =!valid()= conditions.
+ various containers now have an =xfer()= method for yielding their contents
to a corresponding =Xfer= class.
*** *New* Xfer class
Provides finer grained control over copying or transferring objects with
very little overhead. It can be used for any object that has a =transfer()=
method and a =operator=()= copy method.
Since it is decided upon construction of the =Xfer= object whether the
parameter is to be copied or transferred, the contents of the resulting
Xfer object can be transferred unconditionally. This greatly simplifies
defining constructors or methods in other classes with mixed
transfer/copy semantics without requiring 2^N different versions.
+ =xferCopy()=, =xferMove()= and =xferCopyTo()=, =xferMoveTo()= functions
to ease the use of the =Xfer= class.
method and a =operator=()= copy method. Since it is decided upon
construction of the =Xfer= object whether the parameter is to be copied or
transferred, the contents of the resulting Xfer object can be transferred
unconditionally. This greatly simplifies defining constructors or methods in
other classes with mixed transfer/copy semantics without requiring 2^N
different versions.
+ =xferCopy()=, =xferMove()= and =xferCopyTo()=, =xferMoveTo()= functions to
ease the use of the =Xfer= class.
*** Convenience changes
+ =IOobject= has a *new* constructor for creating an =IOobject= from a
single-path specification (eg, see =blockMesh -dict= option).
+ =argList= has *new* convenience methods for accessing options more directly:
=option()=, =optionFound()=, =optionLookup()=, =optionRead()=,
+ =argList= has *new* convenience methods for accessing options more
directly: =option()=, =optionFound()=, =optionLookup()=, =optionRead()=,
=optionReadIfPresent()= .
+ The *new* =readList(Istream&)= can read a bracket-delimited list or
handle a single value as a list of size 1. This can be a useful
convenience when processing command-line options.
+ The *new* =readList(Istream&)= can read a bracket-delimited list or handle
a single value as a list of size 1. This can be a useful convenience when
processing command-line options.
*** Misc. improvements
+ Improved consistency and interoperability between =face= and =triFace= classes.
+ =face::triangles()= can split and append to a =DynamicList=
+ =coordinateSystems= can access global systems (similar to =MeshObject=)
** Turbulence modelling
+ Major development of turbulence model libraries to give extra flexibility
at the solver level. For solvers that can support either RAS/LES
computations, the selection is made in the
/constant/turbulenceProperties/,
computations, the selection is made in the /constant/turbulenceProperties/,
by setting the =simulationType= keyword to:
- =laminar=
- =RASModel=
@ -197,17 +164,15 @@
**** RAS wall functions
Wall functions are now run-time selectable per patch for RAS.
+ Velocity:
- Apply to turbulent viscosities =nut= or =mut=
- Apply to =k=, =Q=, =R=
- Apply to =epsilon=, =omega=
+ Temperature:
- Apply to turbulent thermal diffusivity, =alphat= (compressible only)
****** Velocity:
+ Apply to turbulent viscosities =nut= or =mut=
+ Apply to =k=, =Q=, =R=
+ Apply to =epsilon=, =omega=
****** Temperature:
+ Apply to turbulent thermal diffusivity, =alphat= (compressible only)
****** To apply wall functions:
+ To recapture the functionality of previous OpenFOAM versions (v1.5 and
+ To apply wall functions:
- To recapture the functionality of previous OpenFOAM versions (v1.5 and
earlier) assign:
- for velocity:
- =nut=: =nutWallFunction=
@ -217,7 +182,7 @@
- =k=, =Q=, =R=: =kQRWallFunction=
- for temperature:
- =alphat=: =alphatWallFunction=
+ New =alphaSgsJayatillekeWallFunction= thermal wall function for
- New =alphaSgsJayatillekeWallFunction= thermal wall function for
compressible LES
**** *New* LES turbulence models
@ -259,10 +224,10 @@
** Lagrangian
**** Intermediate
- Overhaul of the underlying framework
- Reacting now split into reacting and reacting multiphase
- New structure for variable composition
- Many new sub-models, including:
+ Overhaul of the underlying framework
+ Reacting now split into reacting and reacting multiphase
+ New structure for variable composition
+ Many new sub-models, including:
- Injection
- =PatchInjection= - injection local to patch face cells
- =FieldActivatedInjection= - injection based on satisfying external
@ -278,30 +243,24 @@
- liquid evaporation
**** Coal combustion
- *New* library - extension of reacting-multiphase functionality
+ *New* library - extension of reacting-multiphase functionality
- Surface reaction/combustion models
** Discrete methods
- *New* library offering DSMC simulation functionality - see =dsmcFoam=
+ *New* library offering DSMC simulation functionality - see =dsmcFoam=
below
- *New* libraries offering molecular dynamics simulation functionality - see
+ *New* libraries offering molecular dynamics simulation functionality - see
=mdFoam= and =mdEquilibrationFoam=: below.
** *New* surfMesh library
Provides a more efficient storage mechanism than possible with =triSurface=
without restrictions on the shape of the face (templated parameter).
It will however take quite some time before it can fully replace
=triSurface= .
without restrictions on the shape of the face (templated parameter). It will
however take quite some time before it can fully replace =triSurface= .
+ =MeshedSurface= class - with zero or more contiguous =surfZones= .
+ =UnsortedMeshedSurface= class - unordered surface zones
(as per =triSurface=)
+ =UnsortedMeshedSurface= class - unordered surface zones (as per
=triSurface=)
+ =surfMesh= class - for reading/writing in native OpenFOAM format
* Solver restructuring
The upgrade to the turbulence models means that the simulation type, i.e.
laminar, RAS or LES can be selected at run time. This has allowed a reduction
@ -318,48 +277,42 @@
- =channelOodles= \rightarrow =channelFoam= (LES)
* General changes
- pd to p ------------------------------------------------------------ [HENRY]
- gravity ------------------------------------------------------------ [HENRY]
+ pd to p ------------------------------------------------------------ [HENRY]
+ gravity ------------------------------------------------------------ [HENRY]
** Solver control improvments
** Solver control improvements
Use dictionary entries instead of an =Istream= for the solver controls.
+ This Allows dictionary substitutions and regular expressions in
/system/fvSolution/
+ The old solver control syntax is still supported (warning emitted), but
the *new* =foamUpgradeFvSolution= utility can be used to convert
/system/fvSolution/ to the new format.
* Tutorial restructuring
to reflect solver application structure
* Post-processing ---------------------------------------------------- [MATTIJS]
- SAMPLING - improved plane, iso-surface handling
- Output to any surface geometry format supported by the =surfMesh= library.
* sampling on iso-surfaces, interpolated or non-interpolated
* sampling on surface defined by distance to surface (distanceSurface)
* cutting planes on non-convex cells
* Output to any surface geometry format supported by the =surfMesh= library.
* *New* Solvers
+ =buoyantBoussinesqSimpleFoam=
Steady state heat transfer solver using a Boussinesq approximation for
buoyancy, with laminar, RAS or LES turbulence modelling
+ =buoyantBoussinesqPisoFoam=
Transient heat transfer solver using a Boussinesq approximation for
buoyancy, with laminar, RAS or LES turbulence modelling
+ =coalChemistryFoam=
Transient, reacting lagrangian solver, employing a coal cloud and a thermo
cloud, with chemistry, and laminar, RAS or LES turbulence modelling
+ =porousExplicitSourceReactingParcelFoam=
Transient, reacting lagrangian solver, employing a single phase reacting
cloud, with porous media, explicit mass sources, and laminar, RAS or LES
turbulence modelling
+ =rhoReactingFoam=
Density-based thermodynamics variant of the reactingFoam solver, i.e. now
applicable to liquid systems
+ =dsmcFoam=
DSMC (Direct Simulation Monte-Carlo) solver for rarefied gas dynamics
simulations, able to simulate mixtures of an arbitrary number of gas species.
@ -377,12 +330,15 @@
molecules interact with short-range dispersion forces and pairwise
electrostatic interactions using methods described in:
Fennell and Gezelter, J. Chem. Phys. 124, 234104 (2006)
+ =mdEquilibrationFoam=
Similar to mdFoam, but employs velocity scaling to adjust the simulation
temperature to a target value. Useful to equilibrate a case before
simulation.
+ =chtMultiRegionFoam=
New boundary condition allows independent decomposition of coupled regions
without any constraint on the decomposition.
* Function objects
** Improvements for function objects and time-looping
@ -390,30 +346,28 @@
which allows a chaining of operations. It is thus internally more
efficient when /system/controlDict/ uses =functions {..}= instead of
=functions (..)=, but both forms are supported.
+ The =functionObject= now has an additional =end()= method that is called
when =Time::loop()= or =Time::run()= determine that the time-loop exits.
Accordingly, one of these two idioms should be used in solver code:
1. =while (runTime.loop() { ... }=
2. =while (runTime.run()) { runTime++; ... }=
+ *New* - =functionObjectList= now tracks the SHA1 message digest of the
sub-directories. This avoids reloading a =functionObject= when
something unrelated in /system/controlDict/ changed.
** *New* function objects:
- =systemCall= - executes a list of system instructions
- =fieldMinMax= - computes the min/max of a <field>
- =staticPressure= - converts kinematic pressure to static pressure
- =dsmcFields= - calculates intensive fields (velocity and temperature) from
+ =systemCall= - executes a list of system instructions
+ =fieldMinMax= - computes the min/max of a <field>
+ =staticPressure= - converts kinematic pressure to static pressure
+ =dsmcFields= - calculates intensive fields (velocity and temperature) from
averaged extensive fields (i.e. momentum and energy)
** Usage
- Improved output control: =timeStep= or =outputTime=
+ Improved output control: =timeStep= or =outputTime=
* Boundary conditions
- Improved set of direct mapped boundary conditions
- Buoyancy boundary condition ---------------------------------------- [HENRY]
+ Improved set of direct mapped boundary conditions
+ Buoyancy boundary condition ---------------------------------------- [HENRY]
* Utilities
@ -429,30 +383,35 @@
+ =foamToEnsightParts= has *new* =-noMesh= and =-index= options that can
be useful when post-processing results incrementally.
+ =snappyHexMesh= has lower memory footprint. New distributed triangulated
surface type for meshing surfaces with extremely large triangle count.
** *New* utilities
- =particleTracks= - generate particle tracks for lagrangian calculations
- =dsmcInitialise= - preprocessing utility to create initial configurations of
+ =particleTracks= - generate particle tracks for lagrangian calculations
+ =dsmcInitialise= - preprocessing utility to create initial configurations of
DSMC particles in a geometry
+ =surfaceRedistributePar= - preprocessing utility to create distributed
triangulated surface.
*** *New* foamCalc functions
- =interpolate= - performs fvc::interpolate(<field>)
- =randomise= - randomises a <field> by a given perturbation
- =addSubtract= - simple add/subtract field functionality
+ =interpolate= - performs fvc::interpolate(<field>)
+ =randomise= - randomises a <field> by a given perturbation
+ =addSubtract= - simple add/subtract field functionality
** Usage
+ =timeSelector= can now combine =-time ranges= and =-latestTime= options.
+ =timeSelector= can now combine =-time ranges= and =-latestTime= options
(e.g. -time '0.01:0.09', -time '0.01:').
More reliable behaviour for cases missing /constant// or /0//
directories. When the =-noZero= option is enabled, =-latestTime= will not
select the =0/= directory unless the =-zeroTime= option is given.
This helps avoid ill effects caused by accidentally using the
/0// directory in certain utilities (eg, =reconstructPar=).
+ =-region= option added to more utilities.
** Improvements to Paraview reader module
+ =PV3FoamReader= added mesh region handling. The region name is parsed
from the filename. Eg, /case{region}.OpenFOAM/
+ =paraFoam= with a *new* =-region= option for specifying an alternative
region. A *new* =-touch= option to generate the /.OpenFOAM/ file only.
Only creates (and removes) /.OpenFOAM/ files if they didn't already
exist, which is useful in connection with the =-touch= option.

View File

@ -47,6 +47,7 @@ Description
#include "cyclicPolyPatch.H"
#include "Swap.H"
#include "IFstream.H"
#include "readHexLabel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -92,6 +93,9 @@ DynamicList<label> cellGroupStartIndex;
DynamicList<label> cellGroupEndIndex;
DynamicList<label> cellGroupType;
// Special parsing of (incorrect) Cubit files
bool cubitFile = false;
void uniquify(word& name, HashSet<word>& patchNames)
{
@ -622,11 +626,20 @@ endOfSection {space}")"{space}
BEGIN(readZoneGroupData);
}
<readZoneGroupData>{space}{label}{space}{word}{space}{word}{space}{label}? {
<readZoneGroupData>{space}{hexLabel}{space}{word}{space}{word}{space}{label}? {
IStringStream zoneDataStream(YYText());
// cell zone-ID not in hexadecimal!!! Inconsistency
label zoneID(readLabel(zoneDataStream));
label zoneID = -1;
if (cubitFile)
{
zoneID = readHexLabel(zoneDataStream);
}
else
{
zoneID = readLabel(zoneDataStream);
}
groupType.insert(zoneID, word(zoneDataStream));
groupName.insert(zoneID, word(zoneDataStream));
@ -752,6 +765,7 @@ int main(int argc, char *argv[])
argList::validOptions.insert("scale", "scale factor");
argList::validOptions.insert("ignoreCellGroups", "cell group names");
argList::validOptions.insert("ignoreFaceGroups", "face group names");
argList::validOptions.insert("cubit", "");
argList args(argc, argv);
@ -774,6 +788,17 @@ int main(int argc, char *argv[])
args.optionLookup("ignoreFaceGroups")() >> ignoreFaceGroups;
}
cubitFile = args.options().found("cubit");
if (cubitFile)
{
Info<< nl
<< "Assuming Cubit generated file"
<< " (incorrect face orientation; hexadecimal zoneIDs)."
<< nl << endl;
}
# include "createTime.H"
fileName fluentFile(args.additionalArgs()[0]);
@ -827,7 +852,10 @@ int main(int argc, char *argv[])
)
{
fm[facei] = true;
faces[facei] = faces[facei].reverseFace();
if (!cubitFile)
{
faces[facei] = faces[facei].reverseFace();
}
Swap(owner[facei], neighbour[facei]);
}
}

View File

@ -31,12 +31,11 @@ Description
#include "Time.H"
#include "polyMesh.H"
#include "globalMeshData.H"
#include "topoSetSource.H"
#include "topoSet.H"
#include "IStringStream.H"
#include "topoSet.H"
#include "cellSet.H"
#include "faceSet.H"
#include "pointSet.H"
#include "topoSetSource.H"
#include "OFstream.H"
#include "IFstream.H"
#include "demandDrivenData.H"

View File

@ -58,8 +58,6 @@ withQTSUPPORT=true
# Set the path to the Qt-4.3.? qmake if the system Qt is other than this version
QMAKE_PATH=""
#QMAKE_PATH=/usr/local/Trolltech/Qt-4.3.5/bin/qmake
#QMAKE_PATH=$WM_THIRD_PARTY_DIR/qt-x11-opensource-src-4.3.5/platforms/linux64GccDPOpt/bin/qmake
#
# No further editing below this line
@ -87,14 +85,14 @@ For finer control, the build stages can be also selected individually
-make
-makedoc
-install
[-envpath] alter absolute paths in CMake files to use env variables
-envpath alter absolute paths in CMake files to use env variables
Build and install paraview-$ParaView_VERSION
- run from folder above the ParaView source folder or place the ParaView
source under \$WM_THIRD_PARTY_DIR ($WM_THIRD_PARTY_DIR)
USAGE
exit 1
exit 1
}
#------------------------------------------------------------------------------
@ -114,7 +112,7 @@ runCONFIG=true
runMAKE=true
runMAKEDOC=true
runINSTALL=true
runENVPATH=false
runENVPATH=true
# parse options
@ -152,7 +150,7 @@ do
runINSTALL=true
shift
;;
-envpath) # optional: change cmake files to use env variables
-envpath) # stage 5: change cmake files to use env variables
runCONFIG=false
runMAKE=false
runMAKEDOC=false
@ -183,6 +181,11 @@ do
withQTSUPPORT=true
shift
;;
-qmake)
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
export QMAKE_PATH=$2
shift 2
;;
-verbose)
withVERBOSE=true
shift

View File

@ -204,24 +204,6 @@ else
#
echo "Parallel processing using $WM_MPLIB with $NPROCS processors"
case "$WM_MPLIB" in
LAM)
lamPid=`getPID lamd`
if [ ! "$lamPid" ] ; then
echo "No LAM daemon running."
if [ -r system/machines ] ; then
echo "system/machines file exists"
echo "Try starting the LAM multicomputer with \"lamboot -v system/machines\""
exit 1
else
echo "Cannot find a 'machines' file for LAM in system/"
echo "required to start a LAM multicomputer"
consultGuide
exit 1
fi
else
echo "LAM daemon running (PID $lamPid). Proceeding with MPI run."
fi
;;
OPENMPI)
# add hostfile info
for hostfile in \

View File

@ -86,9 +86,10 @@ find -H $packDir \
-a ! -name "log[0-9]*" \
-a ! -name "so_locations" \
| sed \
-e "\@$packDir/.git/@d" \
-e "\@$packDir/lib/@d" \
-e '\@applications/bin/@d' \
-e '\@/\.git/@d' \
-e '\@applications/bin/@d' \
-e '\@wmake/utilbin/@d' \
-e '\@/t/@d' \
-e '\@Make[.A-Za-z]*/[^/]*/@d' \
-e '\@doc/[Dd]oxygen/html@d' \
@ -100,7 +101,7 @@ find -H $packDir \
tar czpf $packFile --files-from $tmpFile
if [ $? = 0 ]
if [ $? -eq 0 ]
then
echo "Finished packing and compressing $packDir into file $packFile"
else

View File

@ -33,14 +33,17 @@
if [ $# -eq 0 ]
then
echo "Error: architecture type expected, exiting"
echo
echo "Usage : ${0##*/} <arch> [outputDir]"
echo
exit 1
echo "Error: architecture type expected, exiting"
echo
echo "Usage : ${0##*/} <arch> [outputDir]"
echo
exit 1
fi
arch=$1
# base arch (w/o precision, optimization, etc)
baseArch=$(echo "$arch" | sed -e 's@[DS]P.*$@@')
timeStamp=$(date +%Y-%m-%d)
packDir=$WM_PROJECT-$WM_PROJECT_VERSION
packFile=${packDir}.${arch}_${timeStamp}.gtgz
@ -48,49 +51,50 @@ packFile=${packDir}.${arch}_${timeStamp}.gtgz
# add optional output directory
if [ -d "$2" ]
then
packFile="$2/$packFile"
packFile="$2/$packFile"
fi
if [ -f $packFile ]
then
echo "Error: $packFile already exists"
exit 1
echo "Error: $packFile already exists"
exit 1
fi
# check for essential directories
for dir in $packDir $packDir/lib/$arch $packDir/applications/bin/$arch
do
if [ ! -d $dir ]
then
echo "Error: directory $dir does not exist"
exit 1
fi
if [ ! -d $dir ]
then
echo "Error: directory $dir does not exist"
exit 1
fi
done
# get list of directories
dirList=$(
for dir in \
$packDir/lib/$arch \
$packDir/applications/bin/$arch \
$packDir/wmake/rules \
;
do
[ -d $dir ] && echo $dir
done
for dir in \
$packDir/lib/$arch \
$packDir/applications/bin/$arch \
$packDir/wmake/rules \
$packDir/wmake/utilbin/$baseArch \
;
do
[ -d $dir ] && echo $dir
done
)
echo
echo "Packing $arch port of $packDir into $packFile"
echo "Packing $arch ($baseArch) port of $packDir into $packFile"
echo
tar czpf $packFile $dirList
if [ $? = 0 ]
if [ $? -eq 0 ]
then
echo "Finished packing and compressing file $packFile"
echo "Finished packing and compressing file $packFile"
else
echo "Error: failure packing $packFile"
rm -f $packFile 2>/dev/null
echo "Error: failure packing $packFile"
rm -f $packFile 2>/dev/null
fi
#------------------------------------------------------------------------------

View File

@ -34,14 +34,14 @@ packDir=$WM_PROJECT-$WM_PROJECT_VERSION
if [ ! -d $packDir ]
then
echo "Error: directory $packDir does not exist"
exit 1
echo "Error: directory $packDir does not exist"
exit 1
fi
# obtain arch types from lib/
for bin in $packDir/lib/*
do
foamPackBin ${bin##*/} $@
foamPackBin ${bin##*/} $@
done
#------------------------------------------------------------------------------

View File

@ -41,7 +41,7 @@ Usage: ${0##*/} [-prefix DIR] [-o outputDir]
Packs and compresses the OpenFOAM doxygen html for release
USAGE
exit 1
exit 1
}
unset prefix outputDir
@ -87,16 +87,16 @@ fi
#
if [ -d "$outputDir" ]
then
packFile="$outputDir/$packDir$packTag"
packFile="$outputDir/$packDir$packTag"
else
packFile="$packDir$packTag"
packFile="$packDir$packTag"
fi
if [ -f $packFile ]
then
echo "Error: $packFile already exists"
exit 1
echo "Error: $packFile already exists"
exit 1
fi
# Pack and compress the packFile using GNU tar
@ -107,16 +107,16 @@ echo
if [ -n "$prefix" ]
then
tar czpf $packFile --transform="s@^@$prefix/@" doc/Doxygen/html
tar czpf $packFile --transform="s@^@$prefix/@" doc/Doxygen/html
else
tar czpf $packFile $packDir/doc/Doxygen/html
tar czpf $packFile $packDir/doc/Doxygen/html
fi
if [ $? = 0 ]
if [ $? -eq 0 ]
then
echo "Finished packing doxygen html into file $packFile"
echo "Finished packing doxygen html into file $packFile"
else
echo "Error: failure packing doxygen html file $packFile"
echo "Error: failure packing doxygen html file $packFile"
fi
#------------------------------------------------------------------------------

View File

@ -37,20 +37,20 @@ packFile=${packDir}.General_${timeStamp}.gtgz
if [ ! -d $packDir ]
then
echo "Error: directory $packDir does not exist"
exit 1
echo "Error: directory $packDir does not exist"
exit 1
fi
# add optional output directory
if [ -d "$1" ]
then
packFile="$1/$packFile"
packFile="$1/$packFile"
fi
if [ -f $packFile ]
then
echo "Error: $packFile already exists"
exit 1
echo "Error: $packFile already exists"
exit 1
fi
# Create time stamp file
@ -62,7 +62,7 @@ echo $timeStamp 2>/dev/null > $packDir/.timeStamp
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo
echo "Packing $packDir into $packFile"
echo "Packing $packDir source files into $packFile"
echo
foamPackSource $packDir $packFile

View File

@ -35,12 +35,12 @@ tmpFile=${TMPDIR:-/tmp}/foamPackFiles.$$
if [ $# -ne 2 ]
then
echo "Usage : ${0##*/} directory tarFile"
echo ""
echo "Packs all .C and .H files and Make/options and Make/files into"
echo "<tarFile>"
echo ""
exit 1
echo "Usage : ${0##*/} directory tarFile"
echo ""
echo "Packs all .C and .H files and Make/options and Make/files into"
echo "<tarFile>"
echo ""
exit 1
fi
# canonical form (no double and no trailing dashes)
@ -49,14 +49,14 @@ packFile=$2
if [ ! -d $packDir ]
then
echo "Error: directory $packDir does not exist"
exit 1
echo "Error: directory $packDir does not exist"
exit 1
fi
if [ -f $packFile ]
then
echo "Error: $packFile already exists"
exit 1
echo "Error: $packFile already exists"
exit 1
fi
# Clean up on termination and on Ctrl-C
@ -78,24 +78,29 @@ find -H $packDir \
-a ! -name "log[0-9]*" \
-a ! -name "libccmio*" \
| sed \
-e "\@$packDir/.git/@d" \
-e "\@/.tags/@d" \
-e "\@$packDir/lib/@d" \
-e "\@libccmio.*/@d" \
-e '\@/\.git/@d' \
-e '\@/\.tags/@d' \
-e '\@applications/bin/@d' \
-e '\@wmake/utilbin/@d' \
-e '\@/t/@d' \
-e '\@/Make[.A-Za-z]*/[^/]*/@d'\
-e '\@/platforms/@d' \
-e '\@libccmio.*/@d' \
> $tmpFile
# provide some feedback
wc $tmpFile | awk '{print "Packing",$1,"files - this could take some time ..."}'
tar czpf $packFile --files-from $tmpFile
if [ $? = 0 ]
if [ $? -eq 0 ]
then
echo "Finished packing and compressing $packDir into file $packFile"
echo "Finished packing and compressing $packDir into file $packFile"
else
echo "Error: failure packing $packDir into file $packFile"
rm -f $packFile 2>/dev/null
echo "Error: failure packing $packDir into file $packFile"
rm -f $packFile 2>/dev/null
fi
#------------------------------------------------------------------------------

View File

@ -31,36 +31,43 @@
#
#------------------------------------------------------------------------------
if [ $# = 0 ]
if [ $# -eq 0 ]
then
echo "Error: archOptions type expected, exiting"
echo
echo "Usage : ${0##*/} <archOptions> [outputDir]"
echo
exit 1
echo "Error: archOptions type expected, exiting"
echo
echo "Usage : ${0##*/} <archOptions> [outputDir]"
echo
exit 1
fi
archOptions=$1
arch=${archOptions%%G*} # TODO: works for Gcc only
arch3264=$(echo "$arch" | sed 's@64@-64@')
arch3264=$(echo "$arch" | sed -e 's@64@-64@')
echo "archOptions=$archOptions"
echo "arch=$arch"
echo "arch3264=$arch3264"
timeStamp=$(date +%Y-%m-%d)
packDir=ThirdParty
packDir=${WM_THIRD_PARTY_DIR:-ThirdParty}
packDir=${packDir##*/}
packFile=${packDir}.${archOptions}_${timeStamp}.gtgz
if [ ! -d $packDir ]
then
echo "Error: directory $packDir does not exist"
exit 1
fi
# add optional output directory
if [ -d "$2" ]
then
packFile="$2/$packFile"
packFile="$2/$packFile"
fi
if [ -f $packFile ]
then
echo "Error: $packFile already exists"
exit 1
echo "Error: $packFile already exists"
exit 1
fi
# get list of directories
@ -71,12 +78,12 @@ echo
tar czpf $packFile $dirList
if [ $? = 0 ]
if [ $? -eq 0 ]
then
echo "Finished packing and compressing file $packFile"
echo "Finished packing and compressing file $packFile"
else
echo "Error: failure packing $packFile"
rm -f $packFile 2>/dev/null
echo "Error: failure packing $packFile"
rm -f $packFile 2>/dev/null
fi
#------------------------------------------------------------------------------

View File

@ -32,25 +32,26 @@
#------------------------------------------------------------------------------
timeStamp=$(date +%Y-%m-%d)
packDir=ThirdParty
packDir=${WM_THIRD_PARTY_DIR:-ThirdParty}
packDir=${packDir##*/}
packFile=${packDir}.General_${timeStamp}.gtgz
if [ ! -d $packDir ]
then
echo "Error: directory $packDir does not exist"
exit 1
echo "Error: directory $packDir does not exist"
exit 1
fi
# add optional output directory
if [ -d "$1" ]
then
packFile="$1/$packFile"
packFile="$1/$packFile"
fi
if [ -f $packFile ]
then
echo "Error: $packFile already exists"
exit 1
echo "Error: $packFile already exists"
exit 1
fi
# Create time stamp file
@ -62,7 +63,7 @@ echo $timeStamp 2>/dev/null > $packDir/.timeStamp
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo
echo "Packing $packDir into $packFile"
echo "Packing $packDir source files into $packFile"
echo
foamPackSource $packDir $packFile

View File

@ -162,10 +162,6 @@ do
if [ .$WM_MPLIB = .OPENMPI ]; then
node="-np 1 "
elif [ .$WM_MPLIB = .LAM ]; then
if [ "$spawn" -eq 2 ]; then
node="c${proc} "
fi
fi
echo "#!/bin/sh" > $procCmdFile
@ -210,8 +206,6 @@ done
cmd=""
if [ .$WM_MPLIB = .OPENMPI ]; then
cmd="mpirun -app $PWD/mpirun.schema </dev/null"
elif [ .$WM_MPLIB = .LAM ]; then
cmd="mpirun $PWD/mpirun.schema </dev/null"
fi
echo "Constructed $PWD/mpirun.schema file."

View File

@ -171,10 +171,13 @@ addQtSupport()
addCMakeVariable "PARAVIEW_BUILD_QT_GUI=ON"
qmakeExe=qmake
if [ -n "$QMAKE_PATH" ]
then
if [ -x "$QMAKE_PATH" ]
then
qmakeExe=$QMAKE_PATH
addCMakeVariable QT_QMAKE_EXECUTABLE:FILEPATH=$QMAKE_PATH
else
echo
@ -184,6 +187,28 @@ addQtSupport()
echo
fi
fi
# Check qmake can be found
if [ `which $qmakeExe` ]
then
# Check the Qt version selected
QtVersion=`$qmakeExe -v | grep Using | sed "s/.* version \(.\..\).*/\1/"`
QtMajor=`echo $QtVersion | sed "s/\(.\)\../\1/"`
QtMinor=`echo $QtVersion | sed "s/.\.\(.\)/\1/"`
if [ $QtMajor -lt 4 -o $QtMinor -lt 3 ]
then
echo "*** Error: Qt version provided < 4.3"
echo "*** Please use the -qmake option to specify the location of a version of Qt >= 4.3 "
echo "*** e.g."
echo "*** -qmake /usr/local/Trolltech/Qt-4.3.5/bin/qmake"
echo "*** -qmake $WM_THIRD_PARTY_DIR/qt-x11-opensource-src-4.3.5/platforms/$WM_OPTIONS/bin/qmake"
exit 1
fi
else
echo "*** Error: cannot find qmake either at \$QMAKE_PATH or in current \$PATH"
exit 1
fi
}

View File

@ -33,8 +33,7 @@
#------------------------------------------------------------------------------
export WM_PROJECT=OpenFOAM
# export WM_PROJECT_VERSION=1.5.x
: ${WM_PROJECT_VERSION:=dev}; export WM_PROJECT_VERSION
export WM_PROJECT_VERSION=1.6
################################################################################
# USER EDITABLE PART
@ -102,10 +101,7 @@ export WM_COMPILER_LIB_ARCH=
# WM_COMPILE_OPTION = Opt | Debug | Prof
: ${WM_COMPILE_OPTION:=Opt}; export WM_COMPILE_OPTION
# WM_JAVAC_OPTION = Opt | Debug
: ${WM_JAVAC_OPTION:=Opt}; export WM_JAVAC_OPTION
# WM_MPLIB = | OPENMPI | LAM | MPICH | MPICH-GM | HPMPI | GAMMA | MPI | QSMPI
# WM_MPLIB = | OPENMPI | MPICH | MPICH-GM | HPMPI | GAMMA | MPI | QSMPI
: ${WM_MPLIB:=OPENMPI}; export WM_MPLIB

View File

@ -32,8 +32,7 @@
#------------------------------------------------------------------------------
setenv WM_PROJECT OpenFOAM
# setenv WM_PROJECT_VERSION 1.5.x
if ( ! $?WM_PROJECT_VERSION ) setenv WM_PROJECT_VERSION dev
setenv WM_PROJECT_VERSION 1.6
################################################################################
# USER EDITABLE PART
@ -96,10 +95,7 @@ if ( ! $?WM_PRECISION_OPTION ) setenv WM_PRECISION_OPTION DP
# WM_COMPILE_OPTION = Opt | Debug | Prof
if ( ! $?WM_COMPILE_OPTION ) setenv WM_COMPILE_OPTION Opt
# WM_JAVAC_OPTION = Opt | Debug
if ( ! $?WM_JAVAC_OPTION ) setenv WM_JAVAC_OPTION Opt
# WM_MPLIB = | OPENMPI | LAM | MPICH | MPICH-GM | HPMPI | GAMMA | MPI | QSMPI
# WM_MPLIB = | OPENMPI | MPICH | MPICH-GM | HPMPI | GAMMA | MPI | QSMPI
if ( ! $?WM_MPLIB ) setenv WM_MPLIB OPENMPI

View File

@ -118,7 +118,7 @@ unset MPI_ARCH_PATH
switch ("$WM_MPLIB")
case OPENMPI:
set mpi_version=openmpi-1.3.2
set mpi_version=openmpi-1.3.3
setenv MPI_HOME $WM_THIRD_PARTY_DIR/$mpi_version
setenv MPI_ARCH_PATH $MPI_HOME/platforms/$WM_OPTIONS
@ -132,20 +132,6 @@ case OPENMPI:
unset mpi_version
breaksw
case LAM:
set mpi_version=lam-7.1.4
setenv MPI_HOME $WM_THIRD_PARTY_DIR/$mpi_version
setenv MPI_ARCH_PATH $MPI_HOME/platforms/$WM_OPTIONS
setenv LAMHOME $WM_THIRD_PARTY_DIR/$mpi_version
# note: LAMHOME is deprecated, should probably point to MPI_ARCH_PATH too
_foamAddPath $MPI_ARCH_PATH/bin
_foamAddLib $MPI_ARCH_PATH/lib
setenv FOAM_MPI_LIBBIN $FOAM_LIBBIN/$mpi_version
unset mpi_version
breaksw
case MPICH:
set mpi_version=mpich-1.2.4
setenv MPI_HOME $WM_THIRD_PARTY_DIR/$mpi_version

View File

@ -34,21 +34,21 @@
# prefix to PATH
_foamAddPath()
{
while [ $# -ge 1 ]
do
export PATH=$1:$PATH
shift
done
while [ $# -ge 1 ]
do
export PATH=$1:$PATH
shift
done
}
# prefix to LD_LIBRARY_PATH
_foamAddLib()
{
while [ $# -ge 1 ]
do
export LD_LIBRARY_PATH=$1:$LD_LIBRARY_PATH
shift
done
while [ $# -ge 1 ]
do
export LD_LIBRARY_PATH=$1:$LD_LIBRARY_PATH
shift
done
}
@ -142,7 +142,7 @@ unset MPI_ARCH_PATH
case "$WM_MPLIB" in
OPENMPI)
mpi_version=openmpi-1.3.2
mpi_version=openmpi-1.3.3
export MPI_HOME=$WM_THIRD_PARTY_DIR/$mpi_version
export MPI_ARCH_PATH=$MPI_HOME/platforms/$WM_OPTIONS
@ -156,20 +156,6 @@ OPENMPI)
unset mpi_version
;;
LAM)
mpi_version=lam-7.1.4
export MPI_HOME=$WM_THIRD_PARTY_DIR/$mpi_version
export MPI_ARCH_PATH=$MPI_HOME/platforms/$WM_OPTIONS
export LAMHOME=$WM_THIRD_PARTY_DIR/$mpi_version
# note: LAMHOME is deprecated, should probably point to MPI_ARCH_PATH too
_foamAddPath $MPI_ARCH_PATH/bin
_foamAddLib $MPI_ARCH_PATH/lib
export FOAM_MPI_LIBBIN=$FOAM_LIBBIN/$mpi_version
unset mpi_version
;;
MPICH)
mpi_version=mpich-1.2.4
export MPI_HOME=$WM_THIRD_PARTY_DIR/$mpi_version

View File

@ -5,7 +5,7 @@ set -x
wmake libso dummy
case "$WM_MPLIB" in
LAM | *MPI* )
*MPI*)
set +x
echo
echo "Note: ignore spurious warnings about missing mpicxx.h headers"

View File

@ -1,114 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 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 2 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, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Description
Read token and binary block from IPstream using pvm.
\*---------------------------------------------------------------------------*/
#include "error.H"
#include "IPstream.H"
#include <pvm3.h>
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * * Constructor * * * * * * * * * * * * * * * //
IPstream::IPstream
(
const int fromProcNo,
const label bufSize,
streamFormat format,
versionNumber version
)
:
Pstream(bufSize),
Istream(format, version),
fromProcNo_(fromProcNo),
messageSize_(0)
{
setOpened();
setGood();
int bufid, tag, tid;
// If the buffer size is not specified then probe the incomming message
if (!bufSize)
{
// Probe read buffer until message arrives.
while (!(bufid = pvm_probe(procID(fromProcNo_), msgType())));
// When the message arrives find its size
pvm_bufinfo(bufid, &messageSize_, &tag, &tid);
// Resize buffer to message size
buf_.setSize(messageSize_);
}
// Read message into buffer
if
(
pvm_precv
(
procID(fromProcNo_),
msgType(),
buf_.begin(),
buf_.size(),
PVM_BYTE,
&tid, &tag, &messageSize_
) != PvmOk
)
{
FatalErrorIn("IPstream::IPstream(const int fromProcNo)")
<< "pvm_precv cannot receive incomming message"
<< ::abort;
}
// Check size of message read
if (messageSize_ > buf_.size())
{
FatalErrorIn("IPstream::IPstream(const int fromProcNo)")
<< "buffer (" << buf_.size()
<< ") not large enough for incomming message ("
<< messageSize_ << ')'
<< ::abort;
}
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View File

@ -1,5 +0,0 @@
OPwrite.C
IPread.C
Pstream.C
LIB = $(FOAM_LIBBIN)/pvm-$(LAM_VERSION)/libPstream

View File

@ -1,4 +0,0 @@
include $(RULES)/mplib$(WM_MPLIB)
EXE_INC = $(PFLAGS) $(PINC)
LIB_LIBS = $(PLIBS)

View File

@ -1,68 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 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 2 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, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Description
Write primitive and binary block from OPstream using pvm.
\*---------------------------------------------------------------------------*/
#include "error.H"
#include "OPstream.H"
#include <pvm3.h>
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
OPstream::~OPstream()
{
if
(
pvm_psend
(
procID(toProcNo_),
msgType(),
buf_.begin(),
bufPosition_,
PVM_BYTE
) != PvmOk
)
{
FatalErrorIn("OPstream::~OPstream()")
<< "pvm_psend cannot send outgoing message"
<< ::abort;
}
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View File

@ -1,393 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 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 2 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, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
\*---------------------------------------------------------------------------*/
#include "Pstream.H"
#include "PstreamReduceOps.H"
#include <cstring>
#include <cstdlib>
#include <csignal>
#include <pvm3.h>
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
void Pstream::addValidParOptions(HashTable<string>& validParOptions)
{
validParOptions.insert("np", "");
validParOptions.insert("p4pg", "PI file");
validParOptions.insert("p4wd", "directory");
validParOptions.insert("p4amslave", "");
validParOptions.insert("p4yourname", "hostname");
}
bool Pstream::init(int& argc, char**& argv)
{
// Set the comunications options
pvm_setopt(PvmRoute, PvmRouteDirect);
// Get the ID of this processor
int mytid = pvm_mytid();
#ifdef USECRAYSHMEM
// Get the size of the NULL group
procIDs_.setSize(pvm_gsize(NULL));
// For each processor of the NULL group get its ID
for (int proci=0; proci<ProcIDs.size(); proci++)
{
procIDs_[proci] = pvm_gettid(NULL, proci);
}
#else
// Initialisation message type
int initMsgType = 0;
// If this is not a slave then it must be the master.
// Master spawns the rest of the child processes in the same manner as MPI
if (string(argv[argc-1]) != "-slave")
{
// Last argument is number of processors in parallel run
int nProcs = atoi(argv[argc-1]);
// If it is less than 2 this is not a parallel run!
if (nProcs < 2)
{
FatalErrorIn("Pstream::init(int& argc, char**& argv)")
<< "Attempt to run parallel on < 2 processors ... stopping."
<< abort(FatalError);
}
Info<< "Starting parallel run on " << nProcs << " processors ... "
<< nl << endl;
// set size of ID list
procIDs_.setSize(nProcs);
procIDs_ = 0;
// I am the master
myProcNo_ = 1;
// Put my ID in the list
procIDs_[0] = mytid;
// Setup arguments of children
typedef char* charPtr;
char** Argv = new charPtr[argc + 1];
for (int i=0; i<argc-1; i++)
{
Argv[i] = new char[strlen(argv[i+1] + 1)];
strcpy(Argv[i], argv[i+1]);
}
Argv[argc-1] = new char[7];
strcpy(Argv[argc-1], "-slave");
Argv[argc] = NULL;
// Spawn children as copies of me
if
(
pvm_spawn
(
argv[0],
Argv,
PvmTaskDefault,
"",
nProcs-1,
&(procIDs_[1])
) != nProcs-1
)
{
FatalErrorIn("Pstream::init(int& argc, char**& argv)")
<< "Unable to spawn processes ... stopping."
<< abort(FatalError);
}
// Broadcast task IDs to all children
pvm_setopt(PvmRoute, PvmRouteDirect);
pvm_initsend(PvmDataDefault);
pvm_pkint((int*)(&nProcs), 1, 1);
pvm_pkint(procIDs_.begin(), nProcs, 1);
pvm_mcast(procIDs_.begin(), nProcs, initMsgType);
Info<< "nProcs : " << nProcs << endl;
Info<< "TIDS : ";
for (int proci=0; proci<procIDs_.size(); proci++)
{
cout<< hex << procIDs_[proci] << ' ';
}
cout<< dec << nl << std::endl;
}
else
{
// Receive processor data from master
pvm_recv(-1, initMsgType);
// Should have received the number of processors in the run
int nProcs;
pvm_upkint(&nProcs, 1, 1);
// ... set size of ID list
procIDs_.setSize(nProcs);
// ... and unpack the processor IDs
pvm_upkint(procIDs_.begin(), nProcs, 1);
}
#endif
// Find which processor number this is
for (int proci=0; proci<procIDs_.size(); proci++)
{
if (procIDs_[proci] == mytid)
{
break;
}
}
// Set the processor numbers to start from 1
myProcNo_ = proci + 1;
/*
if (pvm_joingroup("foam") < 0)
{
FatalErrorIn("Pstream::init(int& argc, char**& argv)")
<< "Pstream::init(int*, char **[]) : "
<< "could not join group ... stopping."
<< abort(FatalError);
}
pvm_barrier("foam", nProcs());
*/
// Setup signal handler to catch an interupt (^C) and abort the run
// This doesn't work, it causes
// libpvm [t40003]: pvm_sendsig(): Not implemented
// libpvm [t40003]: pvm_kill(): Not implemented
// messages
//signal(SIGINT, stop);
if (master())
{
Sout<< "Master started successfully." << nl << endl;
}
else
{
Sout<< "Child " << myProcNo_ << " started successfully." << nl << endl;
}
setParRun();
// Everything is OK
return true;
}
void Pstream::exit(int errnum)
{
//pvm_lvgroup("foam");
if (errnum != 0)
{
for (int proci=1; proci<=procIDs_.size(); proci++)
{
if (proci != myProcNo())
{
pvm_kill(procID(proci));
}
}
}
pvm_exit();
::exit(errnum);
}
void Pstream::abort()
{
for (int proci=1; proci<=procIDs_.size(); proci++)
{
if (proci != myProcNo())
{
pvm_kill(procID(proci));
}
}
pvm_exit();
//::abort();
}
void reduce(scalar& Value, const sumOp<scalar>& bop)
{
if (Pstream::parRun())
{
# ifdef PVM_REDUCE
if
(
pvm_reduce
(
PvmSum,
&Value,
1,
PVM_DOUBLE,
Pstream::msgType(),
"foam",
0
) != PvmOk
)
{
FatalErrorIn
(
"reduce(scalar& Value, const sumOp<scalar>& sumOp)"
) << "pvm_reduce failed"
<< abort(FatalError);
}
# endif
if (Pstream::master())
{
for
(
int slave=Pstream::firstSlave();
slave<=Pstream::lastSlave();
slave++
)
{
scalar value;
int atid, atag, alen;
if
(
pvm_precv
(
Pstream::procID(slave),
Pstream::msgType(),
&value,
1,
PVM_DOUBLE,
&atid, &atag, &alen
) != PvmOk
)
{
FatalErrorIn
(
"reduce(scalar& Value, const sumOp<scalar>& sumOp)"
) << "pvm_precv failed"
<< abort(FatalError);
}
Value = bop(Value, value);
}
}
else
{
if
(
pvm_psend
(
Pstream::procID(Pstream::masterNo()),
Pstream::msgType(),
&Value,
1,
PVM_DOUBLE
) != PvmOk
)
{
FatalErrorIn
(
"reduce(scalar& Value, const sumOp<scalar>& sumOp)"
) << "pvm_psend failed"
<< abort(FatalError);
}
}
if (Pstream::master())
{
pvm_initsend(PvmDataDefault);
pvm_pkdouble(&Value, 1, 1);
if
(
pvm_mcast
(
(int*)Pstream::procIDs().begin(),
Pstream::nProcs(),
Pstream::msgType()
) != PvmOk
)
{
FatalErrorIn
(
"reduce(scalar& Value, const sumOp<scalar>& sumOp)"
) << "pvm_mcast failed"
<< abort(FatalError);
}
}
else
{
if
(
pvm_recv
(
Pstream::procID(Pstream::masterNo()),
Pstream::msgType()
) <= 0
)
{
FatalErrorIn
(
"reduce(scalar& Value, const sumOp<scalar>& sumOp)"
) << "pvm_psend failed"
<< abort(FatalError);
}
pvm_upkdouble(&Value, 1, 1);
}
}
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View File

@ -157,8 +157,15 @@ void Foam::activeBaffleVelocityFvPatchVectorField::autoMap
//- Note: cannot map field from cyclic patch anyway so just recalculate
// Areas should be consistent when doing autoMap except in case of
// topo changes.
initWallSf_ = patch().Sf();
initCyclicSf_ = patch().boundaryMesh()[cyclicPatchLabel_].Sf();
//- Note: we don't want to use Sf here since triggers rebuilding of
// fvMesh::S() which will give problems when mapped (since already
// on new mesh)
const vectorField& areas = patch().boundaryMesh().mesh().faceAreas();
initWallSf_ = patch().patchSlice(areas);
initCyclicSf_ = patch().boundaryMesh()
[
cyclicPatchLabel_
].patchSlice(areas);
}
void Foam::activeBaffleVelocityFvPatchVectorField::rmap
@ -169,10 +176,13 @@ void Foam::activeBaffleVelocityFvPatchVectorField::rmap
{
fixedValueFvPatchVectorField::rmap(ptf, addr);
//- Note: cannot map field from cyclic patch anyway so just recalculate
// Areas should be consistent when doing rmap (mainly reconstructPar)
initWallSf_ = patch().Sf();
initCyclicSf_ = patch().boundaryMesh()[cyclicPatchLabel_].Sf();
// See autoMap.
const vectorField& areas = patch().boundaryMesh().mesh().faceAreas();
initWallSf_ = patch().patchSlice(areas);
initCyclicSf_ = patch().boundaryMesh()
[
cyclicPatchLabel_
].patchSlice(areas);
}

View File

@ -1,5 +0,0 @@
[Dolphin]
AdditionalInfo=3
SortOrder=0
Timestamp=2009,6,10,15,58,20
ViewMode=1

View File

@ -33,13 +33,13 @@ Class
Foam::compressible::LESModel
Description
Class for all compressible flow LES SGS models.
Base class for all compressible flow LES SGS models.
This class defines the basic interface for a compressible flow SGS model,
and encapsulates data of value to all possible models. In particular
this includes references to all the dependent fields (rho, U, phi),
the physical viscosity mu, and the LESProperties dictionary,
which contains the model selection and model coefficients.
This class defines the basic interface for a compressible flow SGS
model, and encapsulates data of value to all possible models.
In particular this includes references to all the dependent fields
(rho, U, phi), the physical viscosity mu, and the LESProperties
dictionary, which contains the model selection and model coefficients.
SourceFiles
LESModel.C

View File

@ -9,6 +9,8 @@ dynOneEqEddy/dynOneEqEddy.C
DeardorffDiffStress/DeardorffDiffStress.C
SpalartAllmaras/SpalartAllmaras.C
vanDriestDelta/vanDriestDelta.C
/* Wall functions */
wallFunctions=derivedFvPatchFields/wallFunctions

View File

@ -0,0 +1,160 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 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 2 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, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
\*---------------------------------------------------------------------------*/
#include "vanDriestDelta.H"
#include "LESModel.H"
#include "wallFvPatch.H"
#include "wallDistData.H"
#include "wallPointYPlus.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace compressible
{
namespace LESModels
{
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(vanDriestDelta, 0);
addToRunTimeSelectionTable(LESdelta, vanDriestDelta, dictionary);
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
void vanDriestDelta::calcDelta()
{
const LESModel& lesModel = mesh_.lookupObject<LESModel>("LESProperties");
const volVectorField& U = lesModel.U();
const volScalarField& rho = lesModel.rho();
const volScalarField& mu = lesModel.mu();
tmp<volScalarField> muSgs = lesModel.muSgs();
volScalarField ystar
(
IOobject
(
"ystar",
mesh_.time().constant(),
mesh_
),
mesh_,
dimensionedScalar("ystar", dimLength, GREAT)
);
const fvPatchList& patches = mesh_.boundary();
forAll(patches, patchi)
{
if (isType<wallFvPatch>(patches[patchi]))
{
const fvPatchVectorField& Uw = U.boundaryField()[patchi];
const scalarField& rhow = rho.boundaryField()[patchi];
const scalarField& muw = mu.boundaryField()[patchi];
const scalarField& muSgsw = muSgs().boundaryField()[patchi];
ystar.boundaryField()[patchi] =
muw/(rhow*sqrt((muw + muSgsw)*mag(Uw.snGrad())/rhow + VSMALL));
}
}
wallPointYPlus::yPlusCutOff = 500;
wallDistData<wallPointYPlus> y(mesh_, ystar);
delta_ = min
(
static_cast<const volScalarField&>(geometricDelta_()),
(kappa_/Cdelta_)*((scalar(1) + SMALL) - exp(-y/ystar/Aplus_))*y
);
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
vanDriestDelta::vanDriestDelta
(
const word& name,
const fvMesh& mesh,
const dictionary& dd
)
:
LESdelta(name, mesh),
geometricDelta_
(
LESdelta::New("geometricDelta", mesh, dd.subDict(type() + "Coeffs"))
),
kappa_(dd.lookupOrDefault<scalar>("kappa", 0.4187)),
Aplus_
(
dd.subDict(type() + "Coeffs").lookupOrDefault<scalar>("Aplus", 26.0)
),
Cdelta_
(
dd.subDict(type() + "Coeffs").lookupOrDefault<scalar>("Cdelta", 0.158)
),
calcInterval_
(
dd.subDict(type() + "Coeffs").lookupOrDefault<label>("calcInterval", 1)
)
{
delta_ = geometricDelta_();
}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void vanDriestDelta::read(const dictionary& d)
{
const dictionary& dd(d.subDict(type() + "Coeffs"));
geometricDelta_().read(dd);
d.readIfPresent<scalar>("kappa", kappa_);
dd.readIfPresent<scalar>("Aplus", Aplus_);
dd.readIfPresent<scalar>("Cdelta", Cdelta_);
dd.readIfPresent<label>("calcInterval", calcInterval_);
calcDelta();
}
void vanDriestDelta::correct()
{
if (mesh().time().timeIndex() % calcInterval_ == 0)
{
geometricDelta_().correct();
calcDelta();
}
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace LESModels
} // End namespace compressible
} // End namespace Foam
// ************************************************************************* //

View File

@ -0,0 +1,114 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 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 2 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, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Class
Foam::compressible::LESModels::vanDriestDelta
Description
Simple cube-root of cell volume delta used in compressible LES models.
SourceFiles
vanDriestDelta.C
\*---------------------------------------------------------------------------*/
#ifndef vanDriestDelta_H
#define vanDriestDelta_H
#include "LESdelta.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace compressible
{
namespace LESModels
{
/*---------------------------------------------------------------------------*\
Class vanDriestDelta Declaration
\*---------------------------------------------------------------------------*/
class vanDriestDelta
:
public LESdelta
{
// Private data
autoPtr<LESdelta> geometricDelta_;
scalar kappa_;
scalar Aplus_;
scalar Cdelta_;
label calcInterval_;
// Private Member Functions
//- Disallow default bitwise copy construct and assignment
vanDriestDelta(const vanDriestDelta&);
void operator=(const vanDriestDelta&);
// Calculate the delta values
void calcDelta();
public:
//- Runtime type information
TypeName("vanDriest");
// Constructors
//- Construct from name, mesh and IOdictionary
vanDriestDelta(const word& name, const fvMesh& mesh, const dictionary&);
//- Destructor
virtual ~vanDriestDelta()
{}
// Member Functions
//- Read the LESdelta dictionary
virtual void read(const dictionary&);
// Correct values
virtual void correct();
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace LESModels
} // End namespace compressible
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -51,8 +51,8 @@ void kQRWallFunctionFvPatchField<Type>::checkType()
<< "Invalid wall function specification" << nl
<< " Patch type for patch " << this->patch().name()
<< " must be wall" << nl
<< " Current patch type is " << this->patch().type()
<< nl << endl << abort(FatalError);
<< " Current patch type is " << this->patch().type() << nl << endl
<< abort(FatalError);
}
}

View File

@ -30,12 +30,11 @@ Description
SourceFiles
laminar.C
laminarCorrect.C
\*---------------------------------------------------------------------------*/
#ifndef compressibleLaminar_H
#define compressibleLaminar_H
#ifndef compressibleRasLaminar_H
#define compressibleRasLaminar_H
#include "RASModel.H"
@ -82,42 +81,42 @@ public:
// Member Functions
//- Return the turbulence viscosity, i.e. 0 for laminar flow
tmp<volScalarField> mut() const;
virtual tmp<volScalarField> mut() const;
//- Return the effective viscosity, i.e. the laminar viscosity
tmp<volScalarField> muEff() const
virtual tmp<volScalarField> muEff() const
{
return tmp<volScalarField>(new volScalarField("muEff", mu()));
}
//- Return the effective turbulent thermal diffusivity,
// i.e. the laminar thermal diffusivity
tmp<volScalarField> alphaEff() const
virtual tmp<volScalarField> alphaEff() const
{
return tmp<volScalarField>(new volScalarField("alphaEff", alpha()));
}
//- Return the turbulence kinetic energy, i.e. 0 for laminar flow
tmp<volScalarField> k() const;
virtual tmp<volScalarField> k() const;
//- Return the turbulence kinetic energy dissipation rate,
// i.e. 0 for laminar flow
tmp<volScalarField> epsilon() const;
virtual tmp<volScalarField> epsilon() const;
//- Return the Reynolds stress tensor, i.e. 0 for laminar flow
tmp<volSymmTensorField> R() const;
virtual tmp<volSymmTensorField> R() const;
//- Return the effective stress tensor, i.e. the laminar stress
tmp<volSymmTensorField> devRhoReff() const;
virtual tmp<volSymmTensorField> devRhoReff() const;
//- Return the source term for the momentum equation
tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
//- Correct the laminar viscosity
void correct();
virtual void correct();
//- Read RASProperties dictionary
bool read();
virtual bool read();
};

View File

@ -1,5 +1,6 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/turbulenceModels \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude
LIB_LIBS = \

View File

@ -52,10 +52,10 @@ laminar::laminar
const volScalarField& rho,
const volVectorField& U,
const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel
const basicThermo& thermophysicalModel
)
:
turbulenceModel(rho, U, phi, thermoPhysicalModel)
turbulenceModel(rho, U, phi, thermophysicalModel)
{}
@ -66,10 +66,10 @@ autoPtr<laminar> laminar::New
const volScalarField& rho,
const volVectorField& U,
const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel
const basicThermo& thermophysicalModel
)
{
return autoPtr<laminar>(new laminar(rho, U, phi, thermoPhysicalModel));
return autoPtr<laminar>(new laminar(rho, U, phi, thermophysicalModel));
}
@ -96,18 +96,6 @@ tmp<volScalarField> laminar::mut() const
}
tmp<volScalarField> laminar::muEff() const
{
return tmp<volScalarField>(new volScalarField("muEff", mu()));
}
tmp<volScalarField> laminar::alphaEff() const
{
return tmp<volScalarField>(new volScalarField("alphaEff", alpha()));
}
tmp<volScalarField> laminar::k() const
{
return tmp<volScalarField>

View File

@ -33,8 +33,8 @@ SourceFiles
\*---------------------------------------------------------------------------*/
#ifndef laminar_H
#define laminar_H
#ifndef compressibleLaminar_H
#define compressibleLaminar_H
#include "turbulenceModel.H"
@ -67,7 +67,7 @@ public:
const volScalarField& rho,
const volVectorField& U,
const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel
const basicThermo& thermophysicalModel
);
@ -79,7 +79,7 @@ public:
const volScalarField& rho,
const volVectorField& U,
const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel
const basicThermo& thermophysicalModel
);
@ -94,10 +94,17 @@ public:
virtual tmp<volScalarField> mut() const;
//- Return the effective viscosity, i.e. the laminar viscosity
virtual tmp<volScalarField> muEff() const;
virtual tmp<volScalarField> muEff() const
{
return tmp<volScalarField>(new volScalarField("muEff", mu()));
}
//- Return the effective turbulent thermal diffusivity
virtual tmp<volScalarField> alphaEff() const;
//- Return the effective turbulent thermal diffusivity,
// i.e. the laminar thermal diffusivity
virtual tmp<volScalarField> alphaEff() const
{
return tmp<volScalarField>(new volScalarField("alphaEff", alpha()));
}
//- Return the turbulence kinetic energy, i.e. 0 for laminar flow
virtual tmp<volScalarField> k() const;
@ -109,7 +116,7 @@ public:
//- Return the Reynolds stress tensor, i.e. 0 for laminar flow
virtual tmp<volSymmTensorField> R() const;
//- Return the effective stress tensor including the laminar stress
//- Return the effective stress tensor, i.e. the laminar stress
virtual tmp<volSymmTensorField> devRhoReff() const;
//- Return the source term for the momentum equation

View File

@ -117,12 +117,6 @@ autoPtr<turbulenceModel> turbulenceModel::New
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
turbulenceModel::~turbulenceModel()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void turbulenceModel::correct()

View File

@ -65,7 +65,7 @@ namespace compressible
{
/*---------------------------------------------------------------------------*\
Class turbulenceModel Declaration
Class turbulenceModel Declaration
\*---------------------------------------------------------------------------*/
class turbulenceModel
@ -144,7 +144,8 @@ public:
//- Destructor
virtual ~turbulenceModel();
virtual ~turbulenceModel()
{}
// Member Functions

View File

@ -124,8 +124,8 @@ autoPtr<LESModel> LESModel::New
{
FatalErrorIn
(
"LESModel::select(const volVectorField&, const "
"surfaceScalarField&, transportModel&)"
"LESModel::New(const volVectorField& U, const "
"surfaceScalarField& phi, transportModel&)"
) << "Unknown LESModel type " << modelName
<< endl << endl
<< "Valid LESModel types are :" << endl
@ -137,12 +137,6 @@ autoPtr<LESModel> LESModel::New
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
LESModel::~LESModel()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void LESModel::correct(const tmp<volTensorField>&)

View File

@ -35,10 +35,10 @@ Description
Base class for all incompressible flow LES SGS models.
This class defines the basic interface for an incompressible flow SGS
model, and encapsulates data of value to all possible models. In
particular this includes references to all the dependent fields (U,
phi), the physical viscosity nu, and the LESProperties
dictionary which contains the model selection and model coefficients.
model, and encapsulates data of value to all possible models.
In particular this includes references to all the dependent fields
(U, phi), the physical viscosity nu, and the LESProperties
dictionary, which contains the model selection and model coefficients.
SourceFiles
LESModel.C
@ -151,7 +151,8 @@ public:
//- Destructor
virtual ~LESModel();
virtual ~LESModel()
{}
// Member Functions
@ -240,14 +241,14 @@ public:
}
//- Correct Eddy-Viscosity and related properties
virtual void correct(const tmp<volTensorField>& gradU);
//- Correct Eddy-Viscosity and related properties.
// This calls correct(const tmp<volTensorField>& gradU) by supplying
// gradU calculated locally.
void correct();
//- Correct Eddy-Viscosity and related properties
virtual void correct(const tmp<volTensorField>& gradU);
//- Read LESProperties dictionary
virtual bool read() = 0;
};

View File

@ -133,12 +133,6 @@ dynOneEqEddy::dynOneEqEddy
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
dynOneEqEddy::~dynOneEqEddy()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void dynOneEqEddy::correct(const tmp<volTensorField>& gradU)

View File

@ -116,7 +116,8 @@ public:
//- Destructor
virtual ~dynOneEqEddy();
virtual ~dynOneEqEddy()
{}
// Member Functions

View File

@ -124,12 +124,6 @@ dynSmagorinsky::dynSmagorinsky
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
dynSmagorinsky::~dynSmagorinsky()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void dynSmagorinsky::correct(const tmp<volTensorField>& gradU)

View File

@ -125,7 +125,8 @@ public:
//- Destructor
virtual ~dynSmagorinsky();
virtual ~dynSmagorinsky()
{}
// Member Functions

View File

@ -34,8 +34,8 @@ SourceFiles
\*---------------------------------------------------------------------------*/
#ifndef laminar_H
#define laminar_H
#ifndef lesLaminar_H
#define lesLaminar_H
#include "LESModel.H"
#include "volFields.H"

View File

@ -126,12 +126,6 @@ locDynOneEqEddy::locDynOneEqEddy
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
locDynOneEqEddy::~locDynOneEqEddy()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void locDynOneEqEddy::correct(const tmp<volTensorField>& gradU)

View File

@ -138,7 +138,8 @@ public:
//- Destructor
virtual ~locDynOneEqEddy();
virtual ~locDynOneEqEddy()
{}
// Member Functions

View File

@ -56,12 +56,6 @@ scaleSimilarity::scaleSimilarity
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
scaleSimilarity::~scaleSimilarity()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
tmp<volScalarField> scaleSimilarity::k() const

View File

@ -90,7 +90,8 @@ public:
//- Destructor
virtual ~scaleSimilarity();
virtual ~scaleSimilarity()
{}
// Member Functions

View File

@ -174,14 +174,9 @@ autoPtr<RASModel> RASModel::New
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
RASModel::~RASModel()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
scalar RASModel::yPlusLam(const scalar kappa, const scalar E) const
{
scalar ypl = 11.0;

View File

@ -182,7 +182,8 @@ public:
//- Destructor
virtual ~RASModel();
virtual ~RASModel()
{}
// Member Functions
@ -310,9 +311,6 @@ public:
);
}
//- Return yPlus for the given patch
virtual tmp<scalarField> yPlus(const label patchI) const;
//- Return the turbulence kinetic energy
virtual tmp<volScalarField> k() const = 0;
@ -328,6 +326,9 @@ public:
//- Return the source term for the momentum equation
virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const = 0;
//- Return yPlus for the given patch
virtual tmp<scalarField> yPlus(const label patchI) const;
//- Solve the turbulence equations and correct the turbulence viscosity
virtual void correct() = 0;

View File

@ -77,12 +77,6 @@ tmp<volScalarField> laminar::nut() const
}
tmp<volScalarField> laminar::nuEff() const
{
return tmp<volScalarField>(new volScalarField("nuEff", nu()));
}
tmp<volScalarField> laminar::k() const
{
return tmp<volScalarField>

View File

@ -33,8 +33,8 @@ SourceFiles
\*---------------------------------------------------------------------------*/
#ifndef laminar_H
#define laminar_H
#ifndef rasLaminar_H
#define rasLaminar_H
#include "RASModel.H"
@ -83,7 +83,10 @@ public:
virtual tmp<volScalarField> nut() const;
//- Return the effective viscosity, i.e. the laminar viscosity
virtual tmp<volScalarField> nuEff() const;
virtual tmp<volScalarField> nuEff() const
{
return tmp<volScalarField>(new volScalarField("nuEff", nu()));
}
//- Return the turbulence kinetic energy, i.e. 0 for laminar flow
virtual tmp<volScalarField> k() const;
@ -95,7 +98,7 @@ public:
//- Return the Reynolds stress tensor, i.e. 0 for laminar flow
virtual tmp<volSymmTensorField> R() const;
//- Return the effective stress tensor including the laminar stress
//- Return the effective stress tensor, i.e. the laminar stress
virtual tmp<volSymmTensorField> devReff() const;
//- Return the source term for the momentum equation

View File

@ -1,5 +1,6 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/turbulenceModels \
-I$(LIB_SRC)/transportModels
LIB_LIBS = \

View File

@ -104,7 +104,7 @@ public:
//- Return the Reynolds stress tensor, i.e. 0 for laminar flow
virtual tmp<volSymmTensorField> R() const;
//- Return the effective stress tensor including the laminar stress
//- Return the effective stress tensor, i.e. the laminar stress
virtual tmp<volSymmTensorField> devReff() const;
//- Return the source term for the momentum equation

View File

@ -110,12 +110,6 @@ autoPtr<turbulenceModel> turbulenceModel::New
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
turbulenceModel::~turbulenceModel()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void turbulenceModel::correct()

View File

@ -139,7 +139,8 @@ public:
//- Destructor
virtual ~turbulenceModel();
virtual ~turbulenceModel()
{}
// Member Functions

View File

@ -42,7 +42,7 @@ boundaryField
lowerWall
{
type fixedValue;
value uniform 293;
value uniform 570;
}
frontAndBack

View File

@ -42,7 +42,7 @@ boundaryField
lowerWall
{
type fixedValue;
value uniform 293;
value uniform 570;
}
frontAndBack

View File

@ -32,15 +32,13 @@ boundaryField
upperWall
{
type zeroGradient;
//type compressible::alphaSgsWallFunction;
type compressible::alphaSgsJayatillekeWallFunction;
value uniform 0;
}
lowerWall
{
type zeroGradient;
//type compressible::alphaSgsWallFunction;
type compressible::alphaSgsJayatillekeWallFunction;
value uniform 0;
}

View File

@ -32,15 +32,13 @@ boundaryField
upperWall
{
type zeroGradient;
//type compressible::muSgsWallFunction;
type compressible::muSgsWallFunction;
value uniform 0;
}
lowerWall
{
type zeroGradient;
//type compressible::muSgsWallFunction;
type compressible::muSgsWallFunction;
value uniform 0;
}

View File

@ -16,7 +16,7 @@ FoamFile
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 100000;
internalField uniform 1e5;
boundaryField
{
@ -27,8 +27,15 @@ boundaryField
outlet
{
type fixedValue;
value uniform 100000;
type waveTransmissive;
field p;
phi phi;
rho rho;
psi psi;
gamma 1.3;
fieldInf 1e5;
lInf 0.3;
value uniform 1e5;
}
upperWall

View File

@ -19,6 +19,8 @@ LESModel oneEqEddy;
delta cubeRootVol;
turbulence on;
printCoeffs on;
laminarCoeffs
@ -123,6 +125,7 @@ kappa 0.4187;
wallFunctionCoeffs
{
E 9;
Prt 0.85;
}

View File

@ -21,7 +21,7 @@ fuel Propane;
Su Su [0 1 -1 0 0 0 0] 0.135;
SuModel unstrained;
SuModel transport;
equivalenceRatio equivalenceRatio [0 0 0 0 0 0 0] 0.6;
@ -68,7 +68,7 @@ GuldersCoeffs
}
}
ignite yes;
ignite yes;
ignitionSites
(
@ -76,8 +76,8 @@ ignitionSites
location (0.005 -0.02 0);
diameter 0.003;
start 0;
duration 0.1;
strength 40;
duration 0.05;
strength 20;
}
);

View File

@ -16,55 +16,55 @@ FoamFile
convertToMeters 0.001;
vertices
vertices
(
(-20.6 0 -0.5)
(-20.6 3 -0.5)
(-20.6 12.7 -0.5)
(-20.6 25.4 -0.5)
(0 -25.4 -0.5)
(0 -5 -0.5)
(0 0 -0.5)
(0 3 -0.5)
(0 12.7 -0.5)
(0 25.4 -0.5)
(206 -25.4 -0.5)
(206 -8.5 -0.5)
(206 0 -0.5)
(206 6.5 -0.5)
(206 17 -0.5)
(206 25.4 -0.5)
(290 -16.6 -0.5)
(290 -6.3 -0.5)
(290 0 -0.5)
(290 4.5 -0.5)
(290 11 -0.5)
(290 16.6 -0.5)
(-20.6 0 0.5)
(-20.6 3 0.5)
(-20.6 12.7 0.5)
(-20.6 25.4 0.5)
(0 -25.4 0.5)
(0 -5 0.5)
(0 0 0.5)
(0 3 0.5)
(0 12.7 0.5)
(0 25.4 0.5)
(206 -25.4 0.5)
(206 -8.5 0.5)
(206 0 0.5)
(206 6.5 0.5)
(206 17 0.5)
(206 25.4 0.5)
(290 -16.6 0.5)
(290 -6.3 0.5)
(290 0 0.5)
(290 4.5 0.5)
(290 11 0.5)
(290 16.6 0.5)
(-20.6 0 0)
(-20.6 3 0)
(-20.6 12.7 0)
(-20.6 25.4 0)
(0 -25.4 0)
(0 -5 0)
(0 0 0)
(0 3 0)
(0 12.7 0)
(0 25.4 0)
(206 -25.4 0)
(206 -8.5 0)
(206 0 0)
(206 6.5 0)
(206 17 0)
(206 25.4 0)
(290 -16.6 0)
(290 -6.3 0)
(290 0 0)
(290 4.5 0)
(290 11 0)
(290 16.6 0)
(-20.6 0 38.1)
(-20.6 3 38.1)
(-20.6 12.7 38.1)
(-20.6 25.4 38.1)
(0 -25.4 38.1)
(0 -5 38.1)
(0 0 38.1)
(0 3 38.1)
(0 12.7 38.1)
(0 25.4 38.1)
(206 -25.4 38.1)
(206 -8.5 38.1)
(206 0 38.1)
(206 6.5 38.1)
(206 17 38.1)
(206 25.4 38.1)
(290 -16.6 38.1)
(290 -6.3 38.1)
(290 0 38.1)
(290 4.5 38.1)
(290 11 38.1)
(290 16.6 38.1)
);
blocks
blocks
(
hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1)
hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1)
@ -81,19 +81,19 @@ blocks
hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1)
);
edges
edges
(
);
patches
patches
(
patch inlet
patch inlet
(
(0 22 23 1)
(1 23 24 2)
(2 24 25 3)
)
patch outlet
patch outlet
(
(16 17 39 38)
(17 18 40 39)
@ -101,13 +101,13 @@ patches
(19 20 42 41)
(20 21 43 42)
)
wall upperWall
wall upperWall
(
(3 25 31 9)
(9 31 37 15)
(15 37 43 21)
)
wall lowerWall
wall lowerWall
(
(0 6 28 22)
(6 5 27 28)
@ -115,7 +115,7 @@ patches
(4 10 32 26)
(10 16 38 32)
)
empty frontAndBack
empty frontAndBack
(
(22 28 29 23)
(23 29 30 24)

View File

@ -15,19 +15,44 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType hhuMixtureThermo<homogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>;
thermoType
hhuMixtureThermo<homogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>;
stoichiometricAirFuelMassRatio stoichiometricAirFuelMassRatio [ 0 0 0 0 0 0 0 ] 15.675;
stoichiometricAirFuelMassRatio
stoichiometricAirFuelMassRatio [0 0 0 0 0 0 0] 15.675;
fuel fuel 1 44.0962 200 5000 1000 7.53414 0.0188722 -6.27185e-06 9.14756e-10 -4.78381e-14 -16467.5 -17.8923 0.933554 0.0264246 6.10597e-06 -2.19775e-08 9.51493e-12 -13958.5 19.2017 1.67212e-06 170.672;
// phi = 0.57
// ft = 0.0352993
// Tad = 1650.1
oxidant oxidant 1 28.8504 200 6000 1000 3.10205 0.00123963 -4.17512e-07 6.60292e-11 -3.87448e-15 -985.517 5.35187 3.58378 -0.0007269 1.66985e-06 -1.08452e-10 -4.31951e-13 -1050.53 3.11223 1.67212e-06 170.672;
fuel fuel 1 44.0962
100 5000 1000
7.53414 0.0188722 -6.27185e-06 9.14756e-10 -4.78381e-14 -16467.5 -17.8923
0.933554 0.0264246 6.10597e-06 -2.19775e-08 9.51493e-12 -13958.5 19.2017
1.67212e-06 170.672;
reactants reactants 24.8095 29.4649 200 5000 1000 3.28069 0.00195035 -6.53483e-07 1.00239e-10 -5.64653e-15 -1609.55 4.41496 3.47696 0.000367499 1.84866e-06 -9.8993e-10 -3.10214e-14 -1570.81 3.76075 1.67212e-06 170.672;
oxidant oxidant 1 28.8504
100 6000 1000
3.10131 0.00124137 -4.18816e-07 6.64158e-11 -3.91274e-15 -985.266 5.35597
3.58378 -0.000727005 1.67057e-06 -1.09203e-10 -4.31765e-13 -1050.53 3.11239
1.67212e-06 170.672;
products products 1 28.3233 200 5000 1000 3.106 0.00179682 -5.94382e-07 9.04998e-11 -5.08033e-15 -11003.7 5.11872 3.49612 0.000650364 -2.08029e-07 1.2291e-09 -7.73697e-13 -11080.3 3.18978 1.67212e-06 170.672;
reactants reactants 1 29.2068
100 5000 1000
3.20495 0.00165359 -5.55661e-07 8.62503e-11 -4.93973e-15 -1347.25 4.81241
3.52181 -9.21936e-05 1.77427e-06 -6.2049e-10 -1.99209e-13 -1352.32 3.48856
1.67212e-06 170.672;
burntProducts burntProducts 25.8095 28.3233 200 6000 1000 3.106 0.00179682 -5.94382e-07 9.04998e-11 -5.08033e-15 -11003.7 5.11872 3.49612 0.000650364 -2.08029e-07 1.2291e-09 -7.73697e-13 -11080.3 3.18978 1.67212e-06 170.672;
burntProducts burntProducts 1 28.3233
100 6000 1000
3.10558 0.00179747 -5.94696e-07 9.05605e-11 -5.08443e-15 -11003.6 5.12104
3.49796 0.000638555 -1.83881e-07 1.20989e-09 -7.68691e-13 -11080.5 3.18188
1.67212e-06 170.672;
products products 1 28.5396
100 5000 1000
3.10383 0.00156927 -5.22523e-07 8.06527e-11 -4.60363e-15 -6892.54 5.21744
3.53318 7.81943e-05 5.77097e-07 6.68595e-10 -6.30433e-13 -6964.71 3.15336
1.67212e-06 170.672;
// ************************************************************************* //

View File

@ -23,7 +23,7 @@ startTime 0;
stopAt endTime;
endTime 10;
endTime 0.5;
deltaT 5e-06;

View File

@ -17,34 +17,29 @@ FoamFile
ddtSchemes
{
default Euler;
default backward;
}
gradSchemes
{
default Gauss linear;
grad(p) Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss limitedLinearV 1;
div(phid,p) Gauss linear;
div(phi,U) Gauss linear;
div(phiU,p) Gauss linear;
div(phi,k) Gauss limitedLinear 1;
div(phi,B) Gauss limitedLinear 1;
div(B) Gauss linear;
div(phiXi,Xi) Gauss limitedLinear 1;
div(phiXi,Su) Gauss limitedLinear 1;
div(phiSt,b) Gauss limitedLinear01 1;
div(phi,k) Gauss limitedLinear 0.1;
div(phiXi,Xi) Gauss limitedLinear01 0.1;
div(phiXi,Su) Gauss limitedLinear01 0.1;
div(phiSt,b) Gauss limitedLinear01 0.1;
div(phi,ft_b_h_hu) Gauss multivariateSelection
{
fu limitedLinear01 1;
ft limitedLinear01 1;
b limitedLinear01 1;
h limitedLinear 1;
hu limitedLinear 1;
ft limitedLinear01 0.1;
b limitedLinear01 0.1;
h limitedLinear 0.1;
hu limitedLinear 0.1;
};
div(U) Gauss linear;
div((Su*grad(b))) Gauss linear;

View File

@ -124,8 +124,8 @@ solvers
PISO
{
nOuterCorrectors 1;
nCorrectors 2;
nOuterCorrectors 2;
nCorrectors 1;
nNonOrthogonalCorrectors 0;
}

View File

@ -1,50 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volTensorField;
object B;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform (0 0 0 0 0 0 0 0 0);
boundaryField
{
inlet
{
type fixedValue;
value uniform (0 0 0 0 0 0 0 0 0);
}
outlet
{
type zeroGradient;
}
upperWall
{
type zeroGradient;
}
lowerWall
{
type zeroGradient;
}
frontAndBack
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -20,30 +20,30 @@ internalField uniform 0.135;
boundaryField
{
inlet
inlet
{
type fixedValue;
value uniform 0.135;
}
outlet
outlet
{
type inletOutlet;
inletValue uniform 0.135;
value uniform 0.135;
}
upperWall
upperWall
{
type zeroGradient;
}
lowerWall
lowerWall
{
type zeroGradient;
}
frontAndBack
frontAndBack
{
type cyclic;
}

View File

@ -20,32 +20,32 @@ internalField uniform 293;
boundaryField
{
inlet
inlet
{
type fixedValue;
value uniform 293;
}
outlet
outlet
{
type inletOutlet;
inletValue uniform 293;
value uniform 293;
}
upperWall
upperWall
{
type fixedValue;
value uniform 293;
}
lowerWall
lowerWall
{
type fixedValue;
value uniform 293;
value uniform 570;
}
frontAndBack
frontAndBack
{
type cyclic;
}

View File

@ -20,32 +20,32 @@ internalField uniform 293;
boundaryField
{
inlet
inlet
{
type fixedValue;
value uniform 293;
}
outlet
outlet
{
type inletOutlet;
inletValue uniform 293;
value uniform 293;
}
upperWall
upperWall
{
type fixedValue;
value uniform 293;
}
lowerWall
lowerWall
{
type fixedValue;
value uniform 293;
value uniform 570;
}
frontAndBack
frontAndBack
{
type cyclic;
}

View File

@ -20,33 +20,33 @@ internalField uniform (0 0 0);
boundaryField
{
inlet
inlet
{
type turbulentInlet;
referenceField uniform (13.3 0 0);
fluctuationScale (0.04 0.02 0.02);
}
outlet
outlet
{
type inletOutlet;
inletValue uniform (0 0 0);
value uniform (0 0 0);
}
upperWall
upperWall
{
type fixedValue;
value uniform (0 0 0);
}
lowerWall
lowerWall
{
type fixedValue;
value uniform (0 0 0);
}
frontAndBack
frontAndBack
{
type cyclic;
}

View File

@ -20,30 +20,30 @@ internalField uniform 1;
boundaryField
{
inlet
inlet
{
type fixedValue;
value uniform 1;
}
outlet
outlet
{
type inletOutlet;
inletValue uniform 1;
value uniform 1;
}
upperWall
upperWall
{
type zeroGradient;
}
lowerWall
lowerWall
{
type zeroGradient;
}
frontAndBack
frontAndBack
{
type cyclic;
}

View File

@ -20,27 +20,29 @@ internalField uniform 0;
boundaryField
{
inlet
inlet
{
type zeroGradient;
}
outlet
outlet
{
type zeroGradient;
}
upperWall
upperWall
{
type zeroGradient;
type compressible::alphaSgsJayatillekeWallFunction;
value uniform 0;
}
lowerWall
lowerWall
{
type zeroGradient;
type compressible::alphaSgsJayatillekeWallFunction;
value uniform 0;
}
frontAndBack
frontAndBack
{
type cyclic;
}

View File

@ -20,30 +20,30 @@ internalField uniform 1;
boundaryField
{
inlet
inlet
{
type fixedValue;
value uniform 1;
}
outlet
outlet
{
type inletOutlet;
inletValue uniform 1;
value uniform 1;
}
upperWall
upperWall
{
type zeroGradient;
}
lowerWall
lowerWall
{
type zeroGradient;
}
frontAndBack
frontAndBack
{
type cyclic;
}

View File

@ -1,52 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object ft;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
inlet
{
type fixedValue;
value uniform 0;
}
outlet
{
type inletOutlet;
inletValue uniform 0;
value uniform 0;
}
upperWall
{
type zeroGradient;
}
lowerWall
{
type zeroGradient;
}
frontAndBack
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -35,14 +35,14 @@ boundaryField
upperWall
{
type fixedValue;
value uniform 1e-8;
type zeroGradient;
value uniform 2e-05;
}
lowerWall
{
type fixedValue;
value uniform 1e-8;
type zeroGradient;
value uniform 2e-05;
}
frontAndBack

View File

@ -20,27 +20,29 @@ internalField uniform 0;
boundaryField
{
inlet
inlet
{
type zeroGradient;
}
outlet
outlet
{
type zeroGradient;
}
upperWall
upperWall
{
type zeroGradient;
type compressible::muSgsWallFunction;
value uniform 0;
}
lowerWall
lowerWall
{
type zeroGradient;
type compressible::muSgsWallFunction;
value uniform 0;
}
frontAndBack
frontAndBack
{
type cyclic;
}

View File

@ -16,32 +16,39 @@ FoamFile
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 100000;
internalField uniform 1e5;
boundaryField
{
inlet
inlet
{
type zeroGradient;
}
outlet
outlet
{
type fixedValue;
value uniform 100000;
type waveTransmissive;
field p;
phi phi;
rho rho;
psi psi;
gamma 1.3;
fieldInf 1e5;
lInf 0.3;
value uniform 1e5;
}
upperWall
upperWall
{
type zeroGradient;
}
lowerWall
lowerWall
{
type zeroGradient;
}
frontAndBack
frontAndBack
{
type cyclic;
}

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@ -19,6 +19,8 @@ LESModel oneEqEddy;
delta cubeRootVol;
turbulence on;
printCoeffs on;
laminarCoeffs
@ -123,6 +125,7 @@ kappa 0.4187;
wallFunctionCoeffs
{
E 9;
Prt 0.85;
}

View File

@ -68,16 +68,16 @@ GuldersCoeffs
}
}
ignite yes;
ignite yes;
ignitionSites
(
{
location (0 0 0);
location (0.005 -0.02 0.01905);
diameter 0.003;
start 0;
duration 0.001;
strength 2;
duration 0.1;
strength 200;
}
);

View File

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

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@ -15,19 +15,44 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType hhuMixtureThermo<homogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>;
thermoType
hhuMixtureThermo<homogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>;
stoichiometricAirFuelMassRatio stoichiometricAirFuelMassRatio [ 0 0 0 0 0 0 0 ] 15.675;
stoichiometricAirFuelMassRatio
stoichiometricAirFuelMassRatio [0 0 0 0 0 0 0] 15.675;
fuel fuel 1 44.0962 200 5000 1000 7.53414 0.0188722 -6.27185e-06 9.14756e-10 -4.78381e-14 -16467.5 -17.8923 0.933554 0.0264246 6.10597e-06 -2.19775e-08 9.51493e-12 -13958.5 19.2017 1.67212e-06 170.672;
// phi = 0.57
// ft = 0.0352993
// Tad = 1650.1
oxidant oxidant 1 28.8504 200 6000 1000 3.10205 0.00123963 -4.17512e-07 6.60292e-11 -3.87448e-15 -985.517 5.35187 3.58378 -0.0007269 1.66985e-06 -1.08452e-10 -4.31951e-13 -1050.53 3.11223 1.67212e-06 170.672;
fuel fuel 1 44.0962
100 5000 1000
7.53414 0.0188722 -6.27185e-06 9.14756e-10 -4.78381e-14 -16467.5 -17.8923
0.933554 0.0264246 6.10597e-06 -2.19775e-08 9.51493e-12 -13958.5 19.2017
1.67212e-06 170.672;
reactants reactants 24.8095 29.4649 200 5000 1000 3.28069 0.00195035 -6.53483e-07 1.00239e-10 -5.64653e-15 -1609.55 4.41496 3.47696 0.000367499 1.84866e-06 -9.8993e-10 -3.10214e-14 -1570.81 3.76075 1.67212e-06 170.672;
oxidant oxidant 1 28.8504
100 6000 1000
3.10131 0.00124137 -4.18816e-07 6.64158e-11 -3.91274e-15 -985.266 5.35597
3.58378 -0.000727005 1.67057e-06 -1.09203e-10 -4.31765e-13 -1050.53 3.11239
1.67212e-06 170.672;
products products 1 28.3233 200 5000 1000 3.106 0.00179682 -5.94382e-07 9.04998e-11 -5.08033e-15 -11003.7 5.11872 3.49612 0.000650364 -2.08029e-07 1.2291e-09 -7.73697e-13 -11080.3 3.18978 1.67212e-06 170.672;
reactants reactants 1 29.2068
100 5000 1000
3.20495 0.00165359 -5.55661e-07 8.62503e-11 -4.93973e-15 -1347.25 4.81241
3.52181 -9.21936e-05 1.77427e-06 -6.2049e-10 -1.99209e-13 -1352.32 3.48856
1.67212e-06 170.672;
burntProducts burntProducts 25.8095 28.3233 200 6000 1000 3.106 0.00179682 -5.94382e-07 9.04998e-11 -5.08033e-15 -11003.7 5.11872 3.49612 0.000650364 -2.08029e-07 1.2291e-09 -7.73697e-13 -11080.3 3.18978 1.67212e-06 170.672;
burntProducts burntProducts 1 28.3233
100 6000 1000
3.10558 0.00179747 -5.94696e-07 9.05605e-11 -5.08443e-15 -11003.6 5.12104
3.49796 0.000638555 -1.83881e-07 1.20989e-09 -7.68691e-13 -11080.5 3.18188
1.67212e-06 170.672;
products products 1 28.5396
100 5000 1000
3.10383 0.00156927 -5.22523e-07 8.06527e-11 -4.60363e-15 -6892.54 5.21744
3.53318 7.81943e-05 5.77097e-07 6.68595e-10 -6.30433e-13 -6964.71 3.15336
1.67212e-06 170.672;
// ************************************************************************* //

View File

@ -17,13 +17,13 @@ FoamFile
application XiFoam;
startFrom startTime;
startFrom latestTime;
startTime 0;
stopAt endTime;
endTime 0.02;
endTime 0.5;
deltaT 5e-06;

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@ -17,28 +17,30 @@ FoamFile
ddtSchemes
{
default Euler;
default backward;
}
gradSchemes
{
default Gauss linear;
grad(p) Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss limitedLinearV 1;
div(phid,p) Gauss linear;
div(phi,U) Gauss linear;
div(phiU,p) Gauss linear;
div(phi,k) Gauss limitedLinear 1;
div(phi,B) Gauss limitedLinear 1;
div(B) Gauss linear;
div(phiXi,Xi) Gauss limitedLinear 1;
div(phiXi,Su) Gauss limitedLinear 1;
div(phiSt,b) Gauss limitedLinear01 1;
div(phi,ft_b_h_hu) Gauss multivariateSelection { fu limitedLinear01 1 ; ft limitedLinear01 1 ; b limitedLinear01 1 ; h limitedLinear 1 ; hu limitedLinear 1 ; };
div(phi,k) Gauss limitedLinear 0.1;
div(phiXi,Xi) Gauss limitedLinear01 0.1;
div(phiXi,Su) Gauss limitedLinear01 0.1;
div(phiSt,b) Gauss limitedLinear01 0.1;
div(phi,ft_b_h_hu) Gauss multivariateSelection
{
ft limitedLinear01 0.1;
b limitedLinear01 0.1;
h limitedLinear 0.1;
hu limitedLinear 0.1;
};
div(U) Gauss linear;
div((Su*grad(b))) Gauss linear;
div((U+((Su*Xi)*grad(b)))) Gauss linear;
@ -52,8 +54,8 @@ laplacianSchemes
laplacian(DkEff,k) Gauss linear corrected;
laplacian(DBEff,B) Gauss linear corrected;
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
laplacian(muEff,b) Gauss linear corrected;
laplacian(muEff,ft) Gauss linear corrected;
laplacian(alphaEff,b) Gauss linear corrected;
laplacian(alphaEff,ft) Gauss linear corrected;
laplacian(alphaEff,h) Gauss linear corrected;
laplacian(alphaEff,hu) Gauss linear corrected;
}

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@ -124,7 +124,8 @@ solvers
PISO
{
nCorrectors 2;
nOuterCorrectors 2;
nCorrectors 1;
nNonOrthogonalCorrectors 0;
}

View File

@ -17,6 +17,8 @@ FoamFile
LESModel oneEqEddy;
turbulence on;
printCoeffs on;
delta cubeRootVol;

View File

@ -106,7 +106,7 @@ SEXE = a.out
GENERAL_RULES = $(WM_DIR)/rules/General
RULES = $(WM_DIR)/rules/$(WM_ARCH)$(WM_COMPILER)
UTILBIN = $(WM_DIR)/utilbin/$(WM_ARCH)$(WM_COMPILER)
BIN = $(WM_DIR)/bin/$(WM_ARCH)$(WM_COMPILER)
include $(GENERAL_RULES)/general
include $(RULES)/general

View File

@ -1,10 +0,0 @@
.SUFFIXES: .java .class
javac = javac
include $(GENERAL_RULES)/java$(WM_JAVAC_OPTION)
javaFLAGS = -classpath $(CLASS_PATH):$(CLASSES_DIR):. $(EXE_INC) $(javaOPT) $(javaDBUG) -d $(CLASSES_DIR) -deprecation
javatoclass = mkdir -p $(CLASSES_DIR) ; \
( $(javac) $(javaFLAGS) $$SOURCE || ( rm -f $@ ) )

View File

@ -1,2 +0,0 @@
javaDBUG = -g
javaOPT =

View File

@ -1,2 +0,0 @@
javaDBUG =
javaOPT = -O

View File

@ -1,4 +1,4 @@
.SUFFIXES: .c .cc .cxx .cpp .C .java .F .f .dep
.SUFFIXES: .c .cc .cxx .cpp .C .F .f .dep
MKDEP = $(UTILBIN)/wmkdep -I$(*D) $(LIB_HEADER_DIRS)
@ -17,9 +17,6 @@ MKDEP = $(UTILBIN)/wmkdep -I$(*D) $(LIB_HEADER_DIRS)
.C.dep:
$(MAKE_DEP)
.java.dep:
$(MAKE_DEP)
.F.dep:
$(MAKE_DEP)

View File

@ -2,7 +2,6 @@ include $(GENERAL_RULES)/version
include $(GENERAL_RULES)/sourceToDep
include $(GENERAL_RULES)/java
include $(GENERAL_RULES)/flex
include $(GENERAL_RULES)/flex++
#include $(GENERAL_RULES)/byacc

View File

@ -1,3 +0,0 @@
PFLAGS =
PINC = -I$(MPI_ARCH_PATH)/include
PLIBS = -L$(MPI_ARCH_PATH)/lib -lmpi -llam -lpthread -lutil

View File

@ -1,3 +0,0 @@
PFLAGS =
PINC = -I$(MPI_ARCH_PATH)/include
PLIBS = -L$(MPI_ARCH_PATH)/lib -lmpi -llam -lpthread -lutil

View File

@ -1,3 +0,0 @@
PFLAGS =
PINC = -I$(MPI_ARCH_PATH)/include
PLIBS = -L$(MPI_ARCH_PATH)/lib -lmpi -llam -lpthread -lutil

View File

@ -1,3 +0,0 @@
PFLAGS =
PINC = -I$(MPI_ARCH_PATH)/include
PLIBS = -L$(MPI_ARCH_PATH)/lib -lmpi -llam -lutil

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