Merge commit 'OpenCFD/master' into olesenm

This commit is contained in:
Mark Olesen
2009-07-15 12:29:07 +02:00

View File

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