Skip to content
Snippets Groups Projects
Commit ccee5806 authored by Mark Olesen's avatar Mark Olesen
Browse files

added first draft of ReleaseNotes-1.6

- IMO we should retain ReleaseNotes-1.5 and distribute it with OpenFOAM-1.6
  as well.
parent 5b09b44b
Branches
Tags
No related merge requests found
# -*- mode: org; -*-
#
#+TITLE: OpenFOAM release notes for version 1.6
#+AUTHOR: OpenCFD Ltd.
#+DATE: 29 August 2009
#+LINK: http://www.opencfd.co.uk
#+OPTIONS: author:nil ^:{}
* Regular Expressions
+ new regExp class: support for accessing POSIX extended regular
expresssions from within OpenFOAM.
+ new wordRe class: can contain a word or a regExp.
The match() method matches appropriately (as word or regExp).
+ new stringListOps: 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.
* 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.
+ 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
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.
+ 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.
+ 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, lazy evaluation and 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.
+ 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 OSHA1stream
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.
+ HashSet has additional operators '+=', '-=', '&=' to add, remove or
intersect keys, respectively.
* Improved bool/Switch
+ Switch: reduced the storage to be on par with bool.
It is now more flexible and behaves much more like a bool.
+ bool: IO uses Switch internally so the end-user doesn't need to know if
a particular class used bool or Switch internally.
* Miscellaneous container class improvments
+ boost-style StaticAssert added.
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 than !size() or !valid().
+ various containers now have an xfer() method for yielding their contents
to a corresponding Xfer class.
* 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.
+ MeshedSurface class: with zero or more contiguous surfZones.
+ UnsortedMeshedSurface class: unordered surface zones (as per triSurface)
+ surfMesh class: for reading/writing in native OpenFOAM format
* 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.
* Improvements for functionObjects and time-looping
+ The functionObjectList retains the order of the functionObject order,
which allows a chaining of operations. It is thus internally more
efficient when system/controlDict uses functions {..} instead of
functions (..), but the both forms are supported.
+ The functionObjects now have an additional end() method that gets called
when Time::loop() or Time::run() determines 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++; ... }
+ functionObjectList now tracks the SHA1 message digest of the
sub-directories. This avoids reloading a functionObject when something
unrelated in system/controlDict changed.
* Solver control improvments
Use dictionary entries instead of an Istream for the solver controls.
+ allows dictionary substitutions and regular expressions in
system/fvSolution
+ old solver control syntax is still supported (warning emitted), but the
foamUpgradeFvSolution application can be used to convert
system/fvSolution to the new format.
* Convenience changes
+ IOobject: new constructor for creating an IOobject from a
single-path specification (eg, see blockMesh -dict option).
+ argList: convenience methods for accessing options more directly.
option(), optionFound(), optionLookup(), optionRead(),
optionReadIfPresent().
+ 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)
* Improvements to utilities
+ blockMesh: -dict option for specifying an alternative dictionary for the
block mesh description. The 'convertToMeters' entry is now optional, and
the alternative 'scale' entry can be used for less typing.
+ foamToEnsight: the -noPatches option suppresses generation of patches
+ foamToEnsightParts: the -noMesh option and the -index option can
be used when post-processing incrementally.
+ timeSelector: can combine -time ranges and -latestTime options. More
reliable behaviour for cases missing constant/ or 0/ directories. When
the -noZero option is available, -latestTime will not select the 0/
directory unless the -zeroTime option is also given. This helps avoid
ill effects caused by accidentally using the 0/ directory for certain
utilities (eg, reconstructPar).
* Improvements to Paraview reader module
+ PV3FoamReader: added mesh region handling. The region name is parsed
from the filename. Eg, case{region}.OpenFOAM
+ paraFoam: 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.
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment