ReleaseNotes-dev 13.4 KB
Newer Older
1
2
3
4
5
6
7
#                            -*- mode: org; -*-
#
#+TITLE:  OpenFOAM release notes for version dev
#+AUTHOR:                      OpenCFD Ltd.
#+DATE:                            TBA
#+LINK:                  http://www.openfoam.com
#+OPTIONS: author:nil ^:{}
mattijs's avatar
mattijs committed
8
# Copyright (c) 2011 OpenCFD Ltd.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

* Overview
  OpenFOAM-dev is the latest major release of OpenFOAM including many new
  developments a number of bug-fixes.  This release passes our standard tests
  and the tutorials have been broadly checked.  Please report any bugs by
  following the link: http://www.openfoam.com/bugs.

* GNU/Linux version
  This release of OpenFOAM is distributed primarily in 2 ways: (1) as a Debian
  pack containing binaries and source; (2) from the SourceForge source code
  repository (see [[./README.org][README]]).

  The Ubuntu/Debian pack is available for 32 and 64 bit versions of the 10.04
  LTS operating system using the system compiler and libraries that will be
  installed automatically from standard Debian packs.

  To use the source version from the SourceForge repository, we provide a source
  pack of third-party packages that can be compiled on the user's system.  This
  does not include =gcc=, since the system installed version is typically
  sufficient, but includes =paraview-3.8.0=, =openmpi-1.4.1=, =scotch_5.1=,
  =metis-5.0pre2=, =ParMetis-3.1= and =ParMGridGen-1.0=.

* Library developments
mattijs's avatar
mattijs committed
32

33
34
35
36
37
  There have been a number of developments to the libraries to support the
  extension of functionality in solver and utility applications.
*** Core library
    + Large number of code refinements and consistency improvements to support
      other developments.
38
    + Parallel : using non-blocking communications wherever possible. This will
mattijs's avatar
mattijs committed
39
40
      lead to lower requirements for MPI_BUFFER_SIZE and possibly better
      start-up performance on larger numbers of processors.
41
*** Turbulence modelling
42
43
44
*** *Updated* thermophysical libraries
    + Now use the more descriptive dictionary input format, e.g. for a single
      component mixture:
45
46
      #+BEGIN_SRC c++
      thermoType      hPsiThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>>;
47

48
49
50
51
52
53
54
55
56
57
      mixture
      {
          nMoles      1;
          molWeight   28.9;
          Cp          1007;
          Hf          0;
          As          1.4792e-06;
          Ts          116;
      }
      #+END_SRC
58
*** Lagrangian intermediate library
59
60
61
62
63
64
65
66
67
68
69
    + Extensively updated
    + *Updated* input format
    + Extended to include steady cloud tracking
    + *New* collision modelling
    + *Coupled* to new surface film modelling library
    + *New* sub-models
      + NonSphereDrag: drag model to account for non-spherical particles
      + ParticleTracks: post-processing model to generate track data, typically
        during steady calculations
    + *Updated* sub-models
      + Devolatilisation models: now act on a per-specie basis
70

71
72
73
*** DSMC
*** Dynamic Mesh
*** Numerics
Andrew Heather's avatar
Andrew Heather committed
74
*** *Updated* command line help, e.g. `snappyHexMesh -help' now gives:
75
    #+BEGIN_SRC c++
Andrew Heather's avatar
Andrew Heather committed
76
77
78
79
80
81
82
83
    Usage: snappyHexMesh [OPTIONS]
    options:
      -case <dir>       specify alternate case directory, default is the cwd
      -overwrite        overwrite existing mesh/results files
      -parallel         run in parallel
      -srcDoc           display source code in browser
      -doc              display application documentation in browser
      -help             print the usage
84
    #+END_SRC
mattijs's avatar
mattijs committed
85
86
87
88
*** *New* basicSolidThermo solids thermophysical library
    + Used in all conjugate heat transfer solvers
      + constant properties
      + temperature dependent properties
89
90
      + temperature and direction (in local coordinate system) dependent
        properties
Andrew Heather's avatar
Andrew Heather committed
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
*** *New* Surface film library
    + Creation of films by particle addition, or initial film distribution
    + Coupled with the lagrangian/intermediate cloud hierarchy library
    + Hierarchical design, consisting of
      + kinematic film: mass, momentum
        + constant thermodynamic properties
      + thermodynamic film: mass, momentum and enthalpy
        + constant, or temperature dependant thermodynamic properties
    + Sub-models:
      + detachment/dripping whereby particles (re)enter the originating cloud
        + particle sizes set according to PDF
        + other properties set to ensure mass, momentum and energy conservation
      + heat transfer to/from walls and film surface
      + film evaporation and boiling
    + Additional wall functions for primary region momentum and temperature
      taking film into account
    + Parallel aware
mattijs's avatar
mattijs committed
108
*** *New* ptscotch decomposition method
109
110
111
112
113
*** *Updated* scotch decomposition method to run in parallel by doing
    decomposition on the master. Unfortunately scotch and ptscotch cannot
    be linked in to the same executable.
*** *Updated* simple decomposition method to run in parallel by doing
    decomposition on the master.
114
115
*** *Updated* decomposePar maps polyPatches instead of recreating them so
    polyPatches holding data can map the data.
Andrew Heather's avatar
Andrew Heather committed
116
*** *Updated* particle tracking algorithm
mattijs's avatar
mattijs committed
117
    + uses non-blocking parallel transfers
118
119
    + does 'minimum-tet' decomposition of face to work with warped faces
      (snappyHexMesh!)
mattijs's avatar
mattijs committed
120
    + reuses tracking state in interpolation - improves consistency and speed
121
122
*** *Updated* split cyclics into two separate patches.
    See [[./doc/changes/splitCyclic.txt]]
123
124
  * *New* cyclics (and all coupled patches) have optional
    matchTolerance entry to allow looser area matching tolerance.
mattijs's avatar
mattijs committed
125
126
127
  * *Updated* interpolation (volPointInterpolation) now works without the
    globalPointPatch. Moving mesh cases can now be run non-parallel and
    continued in parallel and reconstructed without any limitation.
128
129
*** *New* compact binary I/O for faces and cells.
    This speeds up reading/writing meshes in binary.
mattijs's avatar
mattijs committed
130
*** *Updated* runTimeModifiable
mattijs's avatar
mattijs committed
131
    + user selectable model to use for checking run-time modifiable
mattijs's avatar
mattijs committed
132
      dictionaries (see also doc/changes/inotify.txt):
mattijs's avatar
mattijs committed
133
134
135
136
137
138
      + timeStamp : use time stamp as before
      + inotify : use inotify instead of time stamp
      + timeStampMaster : only master checks and reads file. Slaves get file
        contents from master.
      + inotifyMaster : only master checks and reads file. Slaves get file
        contents from master.
139
140
    + on linux optionally uses inotify instead of time stamps - more efficient
      for large numbers of monitored files. No more fileModificationSkew needed.
mattijs's avatar
mattijs committed
141
    + single integer reduction instead of one reduction per monitored file.
mattijs's avatar
mattijs committed
142
143
    + only files that can be re-read are being checked. Drastic reduction of
      number of files to check.
144
*** *New* #codeStream dictionary entry
145
    Uses dynamic compilation of OpenFOAM C++ code to construct dictionary.
mattijs's avatar
mattijs committed
146
    E.g. in blockMeshDict:
147
148
    #+BEGIN_SRC c++
    convertToMeters 0.001;
mattijs's avatar
mattijs committed
149

150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
    vertices #codeStream
    {
        code
        #{
            label nVerts =
                readLabel(dict.lookup("nx"))
               *readLabel(dict.lookup("ny"))
               *readLabel(dict.lookup("nz"));
            pointField verts(nVerts);
            // Now fill verts here
            // ..
            os  << verts;
        #};
    }
    #+END_SRC
165
    See also ./[[doc/changes/dynamicCode.org]]
mattijs's avatar
mattijs committed
166

167
168
169
170
171
* Solvers
  A number of new solvers have been developed for a range of engineering
  applications.  There has been a set of improvements to certain classes of
  solver that are introduced in this release.
*** *New* Solvers
Andrew Heather's avatar
Andrew Heather committed
172
173
    + =reactingParcelFilmFoam=: Lagrangian cloud and film transport in a
      reacting gas phase system
174
175
    + =steadyReactingParcelFoam=: Steady solution of cloud and reacting systems
      using local time stepping methods
176
177
178
179
180
181
182
183
184
185
186
187
*** Modifications to multiphase and buoyant solvers
    + ...
*** Modifications to solvers for sensible enthalpy
    + ...
*** Modifications to steady-state compressible solvers
    + ...
*** Other modifications
    + ...

* Boundary conditions
  New boundary conditions have been introduced to support new applications in
  OpenFOAM.
Andrew Heather's avatar
Andrew Heather committed
188
189
  + *New* wall functions:
    + kappatJayatillekeWallFunction: incompressible RAS thermal wall function
190
191
192
193
194
195
  + directMappedFixedValue:
    + takes interpolationScheme so can interpolate instead of always getting
      cell value
    + takes optional fieldName to sample
    + directMapped patch added 'normal' method to calculate sample points
      to e.g. sample fields just above wall (e.g. for streaklines)
196
  + *New* codedFixedValue: Uses the dynamic code compilation from #codeStream
mattijs's avatar
mattijs committed
197
    to provide an in-line fixedValueFvPatchScalarField. E.g.
198
    #+BEGIN_SRC c++
mattijs's avatar
mattijs committed
199
200
    outlet
    {
201
        type            codedFixedValue;
mattijs's avatar
mattijs committed
202
        value           uniform 0;
mattijs's avatar
mattijs committed
203
        redirectType    ramped;
mattijs's avatar
mattijs committed
204
205
206
207
208
209

        code
        #{
            operator==(min(10, 0.1*this->db().time().value()));
        #};
    }
210
    #+END_SRC
211
    See also [[./doc/changes/dynamicCode.org]]
mattijs's avatar
mattijs committed
212

213
214
215
* Utilities
  There have been some utilities added and updated in this release.
*** *New* utilities
Andrew Heather's avatar
Andrew Heather committed
216
217
218
219
220
221
222
223
224
225
226
227
228
    + =extrudeToRegionMesh=: Extrude faceZones into separate mesh (as a
      different region)
      + used to e.g. extrude baffles (extrude internal faces) or create
        liquid film regions
      + if extruding internal faces:
         + create baffles in original mesh with directMappedWall patches
      + if extruding boundary faces:
        + convert boundary faces to directMappedWall patches
      + extrude edges of faceZone as a <zone>_sidePatch
      + extrude edges inbetween different faceZones as a
        (nonuniformTransform)cyclic <zoneA>_<zoneB>
      + extrudes into master direction (i.e. away from the owner cell
        if flipMap is false)
mattijs's avatar
mattijs committed
229
230
    + =topoSet=: replacement of cellSet,faceSet,pointSet utilities.
      Comparable to a dictionary driven =setSet= utility.
231
*** Updated utilities
232
233
    + =setFields=: optionally use faceSets to set patch values (see
      e.g. =hotRoom= tutorial).
mattijs's avatar
mattijs committed
234
    + =blockMesh=: specify patches via dictionary instead of type only. This
235
      makes rereading the boundary file superfluous. see
mattijs's avatar
mattijs committed
236
      e.g. pitzDailyDirectMapped tutorial.
237
238
    + =setSet=: allows time range (e.g. 0:100) in combination with -batch
    argument to execute the commands for multiple times.
239
    + =extrudeMesh=:
240
241
      - option to add extrusion to existing mesh.
      - works in parallel
242
    + =snappyHexMesh=:
243
      + extrude across multi-processor boundaries
mattijs's avatar
mattijs committed
244
245
      + preserve faceZones shape during layering
      + combining coincident patch faces is now default after snapping
246
      + *Warning*:
mattijs's avatar
mattijs committed
247
248
            - snapControls::tolerance setting fixed w.r.t. 17x. Is the
              multiplication to calculate the local search distance for nearest.
249
250
251
252
            - minMedianAxisAngle angle fixed w.r.t. 17x. Set to
              90 to get same behaviour as 130 in 17x.
            - nGrow did not work in 17x. Set to 0
              to get same behaviour as 130 in 17x.
253
254
            - nSolveIter reinstated to smooth internal mesh. Set to 0
              to get same behaviour at 17x.
255
256
            - new minTetQuality setting (see tracking). Disable for 17x
              compatibility.
257
* Post-processing
mattijs's avatar
mattijs committed
258
259
  + =paraFoam=, =foamToVTK=: full support for polyhedral cell type in recent
     Paraview versions.
260
261
  + =foamToEnsight=: parallel continuous data. new =-nodeValues= option to
    generate and output nodal field data.
mattijs's avatar
mattijs committed
262
263
  + =singleCellMesh=: new utility to convert mesh and fields to a single cell
    mesh. Great for postprocessing.
264
265
  + =steadyParticleTracks=: Generates VTK tracks from the output of the cloud
    =ParticleTracks= post-processing sub-model
mattijs's avatar
mattijs committed
266
267
268
269
  + Sampling:
    + =patchInternalField=: new sampledSurface - like 'patch' but samples
    internal field instead of boundary field.
    + =ensight=: new output format for all sampledSurfaces.
Andrew Heather's avatar
Andrew Heather committed
270
271
272
273
274
275
276
  + Function objects:
    + =abortCalculation=: watches for presence of the named file in the
    $FOAM_CASE directory and aborts the calculation if it is present
    + =timeActivatedFileUpdate=: performs a file copy/replacement once a
    specified time has been reached, e.g. to automagically change fvSchemes and
    fvSolution during a calculation
    + =streamLine=: generate streamlines; ouputs both trajectory and field data
277
278
279
280
281
    + =surfaceInterpolateFields=: constructs face interpolate of registered
       volFields for any future functionObjects that need surfaceFields.
    + =readFields=: reads field if not yet registered. Makes functionObjects
      useable through standalone execFlowFunctionObjects.
    + =faceSource=: can now calculate on a sampledSurface (e.g. flow through a
mattijs's avatar
mattijs committed
282
283
284
       triSurfaceMesh).
    + =nearWallFields=: constructs field with on selected patches interpolated
       internal field for further postprocessing.
285
286
287
288
    + =coded=: uses the dynamic code compilation from =#codeStream=
    to provide an in-line functionObject. E.g.
    #+BEGIN_SRC c++
    functions
289
    {
290
291
292
293
294
295
296
        pAverage
        {
            functionObjectLibs ("libutilityFunctionObjects.so");
            type coded;
            redirectType average;
            code
            #{
297
                const volScalarField& p = mesh().lookupObject<volScalarField>("p");
298
299
300
                Info<<"p avg:" << average(p) << endl;
            #};
        }
301
    }
302
303
304
    #+END_SRC
    See also [[./doc/changes/dynamicCode.org]]

305
306

* New tutorials
mattijs's avatar
mattijs committed
307
  There is a large number of new tutorials for existing and new solvers in the
308
  release.
Andrew Heather's avatar
Andrew Heather committed
309
310
  + =reactingParcelFilmFoam= tutorials:
    + multipleBoxes, hotBoxes, panel, evaporationTest
mattijs's avatar
mattijs committed
311
312
  + =interDyMFoam= tutorials:
    + testTubeMixer: showcases =solidBodyMotionFunction=
mattijs's avatar
mattijs committed
313
314
  + =snappyHexMesh= tutorials:
    + flange: demonstration of feature lines in snappyHexMesh
315
316
317
318

* Other
  + compilable with =clang=
    In your prefs.sh set the WM_COMPILER to Clang