Skip to content
Snippets Groups Projects
ReleaseNotes-dev 14.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • #                            -*- 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
    # Copyright (c) 2011 OpenCFD Ltd.
    
    
    * 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
    
      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.
    
        + Parallel : using non-blocking communications wherever possible. This will
    
    mattijs's avatar
    mattijs committed
          lead to lower requirements for MPI_BUFFER_SIZE and possibly better
          start-up performance on larger numbers of processors.
    
    *** Turbulence modelling
    
    *** *Updated* thermophysical libraries
        + Now use the more descriptive dictionary input format, e.g. for a single
          component mixture:
    
          #+BEGIN_SRC c++
          thermoType      hPsiThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>>;
    
          mixture
          {
              nMoles      1;
              molWeight   28.9;
              Cp          1007;
              Hf          0;
              As          1.4792e-06;
              Ts          116;
          }
          #+END_SRC
    
    *** Lagrangian intermediate library
    
        + 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
    
    *** DSMC
    *** Dynamic Mesh
    *** Numerics
    
    *** *Updated* command line help, e.g. `snappyHexMesh -help' now gives:
    
        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
    
    mattijs's avatar
    mattijs committed
    *** *New* basicSolidThermo solids thermophysical library
        + Used in all conjugate heat transfer solvers
          + constant properties
          + temperature dependent properties
    
          + temperature and direction (in local coordinate system) dependent
            properties
    
    *** *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
    
    *** *New* ptscotch decomposition method.
    *** *New* multiLevel decomposition method.
        Decomposes in levels, e.g. first decompose onto number of nodes and
        then onto number of cores per node. This will minimise off-node
        communication. Each level can use any of the other decomposition methods
    *** *New* structured decomposition method.
        Does a 2D decomposition of a mesh. Valid only for an 'extruded' mesh, i.e.
        columns of cells originating from a patch. Bases decomposition on this
        patch and assigns the cells according to the patch decomposition.
    
    *** *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.
    
    *** *Updated* decomposePar maps polyPatches instead of recreating them so
        polyPatches holding data can map the data.
    
    *** *Updated* particle tracking algorithm
    
    mattijs's avatar
    mattijs committed
        + uses non-blocking parallel transfers
    
        + does 'minimum-tet' decomposition of face to work with warped faces
          (snappyHexMesh!)
    
    mattijs's avatar
    mattijs committed
        + reuses tracking state in interpolation - improves consistency and speed
    
    *** *Updated* split cyclics into two separate patches.
        See [[./doc/changes/splitCyclic.txt]]
    
      * *New* cyclics (and all coupled patches) have optional
        matchTolerance entry to allow looser area matching tolerance.
    
    mattijs's avatar
    mattijs committed
      * *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.
    
    *** *New* compact binary I/O for faces and cells.
    
    mattijs's avatar
    mattijs committed
        This speeds up reading/writing meshes in binary. Binary mesh reading
        is backwards (but not forwards) compatible. Use ascii mesh format or
        foamFormatConvert.
    
    mattijs's avatar
    mattijs committed
    *** *Updated* runTimeModifiable
    
    mattijs's avatar
    mattijs committed
        + user selectable model to use for checking run-time modifiable
    
    mattijs's avatar
    mattijs committed
          dictionaries (see also doc/changes/inotify.txt):
    
    mattijs's avatar
    mattijs committed
          + 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.
    
        + 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
        + single integer reduction instead of one reduction per monitored file.
    
    mattijs's avatar
    mattijs committed
        + only files that can be re-read are being checked by specifying
          in the IOobject constructor MUST_READ_IF_MODIFIED instead of
          MUST_READ. Drastic reduction of number of files to check.
    
    *** *New* #codeStream dictionary entry
    
        Uses dynamic compilation of OpenFOAM C++ code to construct dictionary.
    
    mattijs's avatar
    mattijs committed
        E.g. in blockMeshDict:
    
        #+BEGIN_SRC c++
        convertToMeters 0.001;
    
        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
    
        See also ./[[doc/changes/dynamicCode.org]]
    
    * 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
    
        + =reactingParcelFilmFoam=: Lagrangian cloud and film transport in a
          reacting gas phase system
    
        + =steadyReactingParcelFoam=: Steady solution of cloud and reacting systems
          using local time stepping methods
    
    *** 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.
    
      + *New* wall functions:
        + kappatJayatillekeWallFunction: incompressible RAS thermal wall function
    
      + 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)
    
      + *New* codedFixedValue: Uses the dynamic code compilation from #codeStream
    
    mattijs's avatar
    mattijs committed
        to provide an in-line fixedValueFvPatchScalarField. E.g.
    
    mattijs's avatar
    mattijs committed
        outlet
        {
    
            type            codedFixedValue;
    
    mattijs's avatar
    mattijs committed
            value           uniform 0;
    
    mattijs's avatar
    mattijs committed
            redirectType    ramped;
    
    mattijs's avatar
    mattijs committed
    
            code
            #{
                operator==(min(10, 0.1*this->db().time().value()));
            #};
        }
    
        See also [[./doc/changes/dynamicCode.org]]
    
      + cyclicSlip: cyclic with point motion constrained to tangential plane.
        Can be used with any mesh movement, e.g. snapping in snappyHexMesh.
    
    * Utilities
      There have been some utilities added and updated in this release.
    *** *New* utilities
    
        + =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)
    
        + =topoSet=: replacement of cellSet,faceSet,pointSet utilities. Multiple
          commands operating on different sets.
    
    mattijs's avatar
    mattijs committed
          Comparable to a dictionary driven =setSet= utility.
    
    *** Updated utilities
    
        + =setFields=: optionally use faceSets to set patch values (see
          e.g. =hotRoom= tutorial).
    
        + =blockMesh=: specify patches via dictionary instead of type only. This
    
          makes rereading the boundary file superfluous. see
    
          e.g. pitzDailyDirectMapped tutorial.
    
        + =setSet=: allows time range (e.g. 0:100) in combination with -batch
        argument to execute the commands for multiple times.
    
          - option to add extrusion to existing mesh.
          - works in parallel
    
          + extrude across multi-processor boundaries
    
          + specify type of patches created during meshing
          + handle cyclics in initial mesh (non parallel meshing only)
    
    mattijs's avatar
    mattijs committed
          + preserve faceZones shape during layering
          + combining coincident patch faces is now default after snapping
    
    mattijs's avatar
    mattijs committed
                - snapControls::tolerance setting fixed w.r.t. 17x. Is the
                  multiplication to calculate the local search distance for nearest.
    
                - 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.
    
                - nSolveIter reinstated to smooth internal mesh. Set to 0
                  to get same behaviour at 17x.
    
                - new minTetQuality setting (see tracking). Disable for 17x
                  compatibility.
    
    * Post-processing
    
    mattijs's avatar
    mattijs committed
      + =paraFoam=, =foamToVTK=: full support for polyhedral cell type in recent
         Paraview versions.
    
      + =foamToEnsight=: parallel continuous data. new =-nodeValues= option to
        generate and output nodal field data.
    
    mattijs's avatar
    mattijs committed
      + =singleCellMesh=: new utility to convert mesh and fields to a single cell
        mesh. Great for postprocessing.
    
      + =steadyParticleTracks=: Generates VTK tracks from the output of the cloud
        =ParticleTracks= post-processing sub-model
    
    mattijs's avatar
    mattijs committed
      + Sampling:
        + =patchInternalField=: new sampledSurface - like 'patch' but samples
        internal field instead of boundary field.
        + =ensight=: new output format for all sampledSurfaces.
    
      + 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
    
        + =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
           triSurfaceMesh).
        + =nearWallFields=: constructs field with on selected patches interpolated
           internal field for further postprocessing.
    
        + =coded=: uses the dynamic code compilation from =#codeStream=
        to provide an in-line functionObject. E.g.
        #+BEGIN_SRC c++
        functions
    
            pAverage
            {
                functionObjectLibs ("libutilityFunctionObjects.so");
                type coded;
                redirectType average;
                code
                #{
    
                    const volScalarField& p = mesh().lookupObject<volScalarField>("p");
    
                    Info<<"p avg:" << average(p) << endl;
                #};
            }
    
        #+END_SRC
        See also [[./doc/changes/dynamicCode.org]]
    
    
    mattijs's avatar
    mattijs committed
      There is a large number of new tutorials for existing and new solvers in the
    
      + =reactingParcelFilmFoam= tutorials:
        + multipleBoxes, hotBoxes, panel, evaporationTest
    
    mattijs's avatar
    mattijs committed
      + =interDyMFoam= tutorials:
        + testTubeMixer: showcases =solidBodyMotionFunction=
    
    mattijs's avatar
    mattijs committed
      + =snappyHexMesh= tutorials:
        + flange: demonstration of feature lines in snappyHexMesh
    
    
    * Other
      + compilable with =clang=
        In your prefs.sh set the WM_COMPILER to Clang