Cosmetic improvements.
[OpenFOAM-1.6.x.git] / ReleaseNotes-1.6
blob545021a6b3ccc7b4c960a2c482e173e21f0c7c23
1 #                            -*- mode: org; -*-
3 #+TITLE:           OpenFOAM release notes for version 1.6
4 #+AUTHOR:                      OpenCFD Ltd.
5 #+DATE:                         July 2009
6 #+LINK:                  http://www.opencfd.co.uk
7 #+OPTIONS: author:nil ^:{}
9 * Overview
10   OpenFOAM-1.6 is a significant upgrade to version 1.5 in ways that are
11   outlined below.  This release passes all our standard tests and the
12   tutorials have been broadly checked.  If there are any bugs, please report
13   them using the instructions set out here:
14   http://www.OpenFOAM.org/bugs.html.
16 * GNU/Linux version
17   The 32bit and 64bit binary packs of the OpenFOAM release were compiled on
18   a machine running openSUSE GNU/Linux version 11.1 and also tested on
19   Ubuntu 9.  We recommend that users run OpenFOAM on one of these, or on a
20   similarly recent version of GNU/Linux.  This release has also been
21   successfully compiled and tested on older GNU/Linux releases, but this
22   requires the installation of Qt 4.3.? (the sources for which are supplied
23   with OpenFOAM-1.6, see README) for ParaView-3 to run.
25 * C++ Compiler version
26   + Release compiled with GCC 4.3.3.
27   + Built-in support for the Intel C++ 10.? compiler (untested).
28   + The choice of the compiler is controlled by the setting of the
29     ~$WM_COMPILER~ and ~$WM_COMPILER_ARCH~ environment variables in the
30     /OpenFOAM-1.6/etc/bashrc/ (or /cshrc/) file.
31   + The location of the compiler installation is controlled by the
32     ~$compilerInstall~ environment variable in the
33     /OpenFOAM-1.6/etc/settings.sh/ (or /settings.csh/) file.
35 * Library developments
37 *** Core library
39 ***** Dictionary improvements/changes
40       + Dictionaries can use words (unquoted) or regular expressions (quoted)
41         for their keywords. When searching, an exact match has priority over a
42         regular expression match.  Multiple regular expressions are matched in
43         reverse order.
44       + The *new* =#includeIfPresent= directive is similar to the =#include=
45         directive, but does not generate an error if the file does not exist.
46       + The default =#inputMode= is now '=merge=', which corresponds to the most
47         general usage. The =#inputMode warn= corresponds to the previous default
48         behaviour.
49       + The *new* =#inputMode protect= can be used to conditionally merge
50         default values into existing dictionaries.
51       + *New* =digest()= method to calculate and return the SHA1 message digest.
53 ***** Regular Expressions
54       The addition of regular expressions marks a major improvement in
55       usability.
56       + *New* =regExp= class provides support for accessing POSIX extended
57         regular expresssions from within OpenFOAM.
58       + *New* =wordRe= class can contain a =word= or a =regExp= .
59       + *New* =stringListOps= to search string lists based on regular
60         expressions, =wordRe= or =wordReList=.
61       + =Istream= and =Ostream= now retain backslashes when reading/writing
62         strings.
64 ***** Convenience changes
65       + =IOobject= has a *new* constructor for creating an =IOobject= from a
66         single-path specification (eg, see =blockMesh -dict= option).
67       + =argList= has *new* convenience methods for accessing options more
68         directly: =option()=, =optionFound()=, =optionLookup()=, =optionRead()=,
69         =optionReadIfPresent()=.
70       + The *new* =readList(Istream&)= can read a bracket-delimited list or
71         handle a single value as a list of size 1. This can be a useful
72         convenience when processing command-line options.
73       + Export *new* environment variable =FOAM_CASENAME= that contains the
74         name part of the =FOAM_CASE= environment variable.
76 *** Turbulence modelling
77     + Major development of turbulence model libraries to give extra flexibility
78       at the solver level.  For solvers that can support either RAS/LES
79       computations, the selection is made in the
80       /constant/turbulenceProperties/, by setting the =simulationType= keyword
81       to:
82       - =laminar=,
83       - =RASModel=,
84       - =LESModel=.
85     + Depending on the selection, the model is the instantiated from /constant//
86       - /RASProperties/,
87       - /LESProperties/.
89 ***** RAS wall functions
90       Wall functions are now run-time selectable per patch for RAS.
91       + Velocity:
92         - Apply to turbulent viscosities =nut= or =mut=,
93         - Apply to =k=, =Q=, =R=,
94         - Apply to =epsilon=, =omega=.
95       + Temperature:
96         - Apply to turbulent thermal diffusivity, =alphat= (compressible only).
97       + To apply wall functions:
98         - To recapture the functionality of previous OpenFOAM versions (v1.5 and
99           earlier) assign:
100           - for velocity:
101             - =nut=: =nutWallFunction=,
102             - =mut=: =muWallFunction=,
103             - =epsilon=: =epsilonWallFunction=,
104             - =omega=: =omegaWallFunction=,
105             - =k=, =q=, =R=: =kqRWallFunction=.
106           - for temperature:
107             - =alphat=: =alphatWallFunction=.
108         - New =alphaSgsJayatillekeWallFunction= thermal wall function for
109           compressible LES.
111 ***** *New* LES turbulence models
112       + Spalart-Allmaras DDES.
113       + Spalart-Allmaras IDDES.
115 ***** Upgrading:
116       + *New* utility - =applyWallFunctionBoundaryConditions=.
117       + Solvers will automatically update existing cases.
118         - New fields created based on the presence of the =nut/mut= field.
119         - Boundary conditions include scoping, i.e compressibility:: for
120           compressible solvers.
121         - Modified fields will be backed-up to /<field>.old/.
122       + NOTE:
123         - Fields are only updated for those fields associated with the current
124           turbulence model selection, i.e. if fields exist for use with other
125           models, they will not be updated.
126         - The new specification is not backwards compatible.
128 *** Thermo-physical Models
129     + Old compressibility-based thermo package renamed
130       =basicThermo= \rightarrow =basicPsiThermo=.
131     + *New* =basicRhoThermo= thermo package.
132       - Additional density field stored.
133       - General form - can be used for other types of media, e.g. liquids.
134       - Additional polynomial-based thermodynamics:
135         - Equation of state: =icoPolynomial=,
136         - Transport: =polynomialTransport=,
137         - Thermo: =hPolynomialThermo=.
138     + Removed earlier hard-coding of gas thermophysics for chemistry modelling:
139       - =reactingMixture= now templated on thermo package,
140       - =chemistryModel= now templated on thermo package,
141       - =chemistrySolver= now templated on thermo package.
142     + *New* =fvDOM= radition model
143       - finite volume, discrete ordinates method.
144     + *New* (reinstated) =eThermo= thermodynamics package
145       - internal energy-based thermodynamics.
147 *** Lagrangian
149 ***** Intermediate
150       + Overhaul of the underlying framework.
151       + Reacting now split into reacting and reacting multiphase.
152       + New structure for variable composition.
153       + Many new sub-models, including:
154         - Injection
155           - =PatchInjection= - injection local to patch face cells,
156           - =FieldActivatedInjection= - injection based on satisfying external
157             criterion,
158           - LookupTableInjection - explicity define injection locations and all
159             parcel properties.
160         - Post-processing
161           - patch post-processing - collect data for parcels impacting user,
162             defined patches.
163         - Patch interaction
164           - generalised behaviour for parcel interaction with patch.
165         - Phase change
166           - liquid evaporation.
168 ***** Coal combustion
169       + *New* library - extension of reacting-multiphase functionality.
170         - Surface reaction/combustion models.
172 *** Discrete methods
173     + *New* library offering DSMC simulation functionality - see =dsmcFoam=
174       below.
175     + Significant development of the libraries offering molecular dynamics
176       simulation functionality - see =mdFoam= and =mdEquilibrationFoam= below.
178 *** Numerics
179     + *new* polynomial-fit higher-order interpolation schemes:
180       - =biLinearFit=
181       - =linearFit=
182       - =quadraticLinearFit=
183       - =quadraticFit=
184       - =linearPureUpwindFit=
185       - =quadraticLinearPureUpwindFit=
186       - =quadraticLinearUpwindFit=
187       - =quadraticUpwindFit=
188       - =cubicUpwindFit=
189     + *new* polynomial-fit higher-order Sn-Grad: =quadraticFitSnGrad=.
191 *** *New* surfMesh library
192     Provides a more efficient storage mechanism than possible with =triSurface=
193     without restrictions on the shape of the face (templated parameter).
194     + =MeshedSurface= class - with zero or more contiguous =surfZones= .
195     + =UnsortedMeshedSurface= class - unordered surface zones (as per
196       =triSurface=).
197     + =surfMesh= class - for reading/writing in native OpenFOAM format.
199 * Solvers
200 *** Solver restructuring
201     The upgrade to the turbulence models means that the simulation type, i.e.
202     laminar, RAS or LES can be selected at run time. This has allowed a reduction
203     in the number of solvers, simplifying the overall code structure
204     + Solvers which support laminar, RAS and LES:
205       - =turbFoam=, =oodles= \rightarrow =pisoFoam=.
206       - =turbDyMFoam= \rightarrow =pimpleDyMFoam=.
207       - =rhoTurbFoam=, =coodles= \rightarrow =rhoPisoFoam=.
208       - =xoodles= \rightarrow absorbed into =XiFoam=.
209       - =buoyantFoam=, =lesBuoyantFoam= \rightarrow =buoyantPisoFoam=.
210       - =interFoam=, =rasInterFoam=, =lesInterFoam= \rightarrow =interFoam=.
211       - =lesCavitatingFoam=, =rasCavitatingFoam= \rightarrow =cavitatingFoam=.
212     + Solvers which support LES only:
213       - =channelOodles= \rightarrow =channelFoam= (LES).
214     + =pd= replaced by static pressure =p=.  All solvers in which buoyancy affects
215       might be strong have been converted from using =pd= to =p= with improved
216       numerics to give equally good accuracy and stability.  This change is
217       prompted by the need to remove the confusion surrounding the meaning and
218       purpose of =pd=.
219     + =g= (acceleration due to gravity) is now a *new*
220       =uniformDimensionedVectorField= which has the behaviour of a field, is
221       registered to an =objectRegistry=, but stores only a single value.  Thus
222       =g= and other =UniformDimensionedFields= can be created and looked-up
223       elsewhere in the code, /e.g./ in =fvPatchFields=.
225 *** Solver control improvements
226     Now uses consistent dictionary entries for the solver controls.
227     + This Allows dictionary substitutions and regular expressions in
228       /system/fvSolution/.
229     + The old solver control syntax is still supported (warning emitted), but
230       the *new* =foamUpgradeFvSolution= utility can be used to convert
231       /system/fvSolution/ to the new format.
233 *** *New* Solvers
234     + =buoyantBoussinesqSimpleFoam= Steady state heat transfer solver using a
235       Boussinesq approximation for buoyancy, with laminar, RAS or LES turbulence
236       modelling.
237     + =buoyantBoussinesqPisoFoam= Transient heat transfer solver using a
238       Boussinesq approximation for buoyancy, with laminar, RAS or LES turbulence
239       modelling.
240     + =coalChemistryFoam= Transient, reacting lagrangian solver, employing a coal
241       cloud and a thermo cloud, with chemistry, and laminar, RAS or LES turbulence
242       modelling.
243     + =porousExplicitSourceReactingParcelFoam= Transient, reacting lagrangian
244       solver, employing a single phase reacting cloud, with porous media, explicit
245       mass sources, and laminar, RAS or LES turbulence modelling.
246     + =rhoReactingFoam= Density-based thermodynamics variant of the reactingFoam
247       solver, i.e. now applicable to liquid systems.
248     + =dsmcFoam= DSMC (Direct Simulation Monte-Carlo) solver for rarefied gas
249       dynamics simulations, able to simulate mixtures of an arbitrary number of
250       gas species.  The variable hard sphere collision model with Larsen-Borgnakke
251       internal energy redistribution (see "Molecular Gas Dynamics and the Direct
252       Simulation of Gas Flows" G.A. Bird, 1994) is available; other run-time
253       selectable collision models can be easily added.
255 *** Updated solvers
256     + =mdFoam= Molecular Dynamics (MD) solver able to simulate a mixture of an
257       arbitrary number of mono-atomic and small, rigid polyatomic (i.e. H2O, N2)
258       molecular species, with 6 degree of freedom motion, in complex geometries. A
259       molecule of any species can be built by specifying its sites of mass and
260       charge. All molecules interact with short-range dispersion forces and
261       pairwise electrostatic interactions using methods described in: Fennell and
262       Gezelter, J. Chem. Phys. 124, 234104 (2006).
263     + =mdEquilibrationFoam= Similar to mdFoam, but employs velocity scaling to
264       adjust the simulation temperature to a target value. Useful to equilibrate a
265       case before simulation.
266     + =chtMultiRegionFoam= New boundary condition allows independent decomposition
267       of coupled regions without any constraint on the decomposition.
269 * Boundary conditions
270   + Improved set of direct mapped boundary conditions.
271   + =buoyantPressureFvPatchScalarField=, the *new* buoyancy pressure boundary
272     condition now supports =p= and =pd= for backward compatibility.
273   + =uniformDensityHydrostaticPressure= is an additional pressure boundary
274     condition to aid the transition from =pd= to =p= as it behaves similarly to
275     specifying a uniform =pd= at an outlet for example.
276   + =activeBaffleVelocity= dynamically combines cyclic and wall patches so that
277     the flow through the patch can be controlled /e.g./ by pressure drop.
278   + =rotatingWallVelocity= specifies a rotating velocity, given the rotational
279     speed, origin and axis.
281 * Utilities
283 *** Improvements
284    + =blockMesh= has a *new* =-dict= option for specifying an alternative
285      dictionary for the block mesh description. The '=convertToMeters=' entry
286      is now optional, and the alternative '=scale=' entry can be used for
287      less typing.
288    + =foamToEnsight= has a *new* =-noPatches= option to suppress generation
289      of patches.
290    + =foamToEnsightParts= has *new* =-noMesh= and =-index= options that can
291      be useful when post-processing results incrementally.
292    + =snappyHexMesh= has lower memory footprint. New distributed triangulated
293      surface type for meshing surfaces with extremely large triangle count.
294      Now supports multi-region meshing of arbitrarily complex regions.
296 *** *New* utilities
297    + =particleTracks= - generate particle tracks for lagrangian calculations.
298    + =dsmcInitialise= - preprocessing utility to create initial configurations
299      of DSMC particles in a geometry.
300    + =surfaceRedistributePar= - preprocessing utility to create distributed
301      triangulated surface.
303 *** *New* foamCalc functions
304     + =interpolate= performs fvc::interpolate(<field>).
305     + =randomise= randomises a <field> by a given perturbation.
306     + =addSubtract= provides simple add/subtract field functionality.
308 *** Usage
309    + =timeSelector= can now combine =-time ranges= and =-latestTime= options.
310      For example, -time '0.01:0.09' -latestTime vs. -time '0.01:'.
311      More reliable behaviour for cases missing /constant// or /0// directories.
312      When the =-noZero= option is enabled, =-latestTime= will not select the
313      =0/= directory unless the =-zeroTime= option is given.
314      This helps avoid ill effects caused by accidentally using the
315      /0// directory in certain utilities (eg, =reconstructPar=).
316    + =-region= option added to more utilities.
318 *** Improvements to Paraview reader module
319    + =PV3FoamReader= added mesh region handling. The region name is parsed
320      from the filename. Eg, /case{region}.OpenFOAM/.
321    + =paraFoam= with a *new* =-region= option for specifying an alternative
322      region. A *new* =-touch= option to generate the /.OpenFOAM/ file only.
323      Only creates (and removes) /.OpenFOAM/ files if they didn't already
324      exist, which is useful in connection with the =-touch= option.
326 * Post-processing
327   + Sampling on iso-surfaces, interpolated or non-interpolated.
328   + Sampling on surface defined by distance to surface (=distanceSurface=).
329   + Cutting planes for arbitrary meshes.
330   + Output to any surface geometry format supported by the =surfMesh= library.
332 *** Function objects
334 ***** Improvements for function objects and time-looping
335       + The =functionObjectList= retains the order of the =functionObject=
336         order, which allows a chaining of operations. It is thus internally more
337         efficient when /system/controlDict/ uses =functions {..}= instead of
338         =functions (..)=, but both forms are supported.
339       + The =functionObject= now has an additional =end()= method that is called
340         when =Time::loop()= or =Time::run()= determine that the time-loop exits.
341         Accordingly, one of these two idioms should be used in solver code:
342         1. =while (runTime.loop() { ... }=,
343         2. =while (runTime.run()) { runTime++; ... }=.
344       + *New* =functionObjectList= now tracks the SHA1 message digest of the
345         sub-directories. This avoids reloading a =functionObject= when
346         something unrelated in /system/controlDict/ changed.
348 ***** *New* function objects:
349        + =systemCall= - executes a list of system instructions.
350        + =fieldMinMax= - computes the min/max of a <field>.
351        + =staticPressure= - converts kinematic pressure to static pressure.
352        + =dsmcFields= - calculates intensive fields (velocity and temperature)
353          from averaged extensive fields (i.e. momentum and energy).
355 ***** Usage
356        + Improved output control: =timeStep= or =outputTime=.
358 * Tutorial restructuring
359   to reflect solver application structure.
361 * Third-party Software
362   + =gcc= upgraded to version 4.3.3.
363   + =OpenMPI= upgraded to version 1.3.3.
364   + =ParaView= upgraded to version 3.6.1.
365   + =Scotch= *new* decomposition method: \\
366     Scotch (http://gforge.inria.fr/projects/scotch/) is a general multi-level
367     decomposition method originating from the ScAlApplix project (Inria). It is
368     a framework for general recursive partitioning methods and a such comparable
369     to Metis but with a permissive licence.
371     The corresponding decomposition method (in =decomposeParDict=) is
372     =scotch=.  An optional =strategy= string can be supplied to change the
373     decomposition methods; initial testing shows the default strategy producing
374     decompositions comparable in quality to Metis.