Skip to content
Snippets Groups Projects
ReleaseNotes-1.6 18 KiB
Newer Older
  • Learn to ignore specific revisions
  • #                            -*- mode: org; -*-
    #
    
    #+TITLE:           OpenFOAM release notes for version 1.6
    
    #+AUTHOR:                      OpenCFD Ltd.
    
    #+LINK:                  http://www.opencfd.co.uk
    
    henry's avatar
    henry committed
    #+OPTIONS: author:nil ^:{}
    
      OpenFOAM-1.6 is a significant upgrade to version 1.5 in ways that are
      outlined below.  This release passes all our standard tests and the
      tutorials have been broadly checked.  If there are any bugs, please report
      them using the instructions set out here:
    
    henry's avatar
    henry committed
      http://www.OpenFOAM.org/bugs.html.
    
      The 32bit and 64bit binary packs of the OpenFOAM release were compiled on
      a machine running openSUSE GNU/Linux version 11.1 and also tested on
      Ubuntu 9.  We recommend that users run OpenFOAM on one of these, or on a
      similarly recent version of GNU/Linux.  This release has also been
      successfully compiled and tested on older GNU/Linux releases, but this
      requires the installation of Qt 4.3.? (the sources for which are supplied
      with OpenFOAM-1.6, see README) for ParaView-3 to run.
    
      + Release compiled with GCC 4.3.3.
    
      + Built-in support for the Intel C++ 10.? compiler (untested).
    
      + The choice of the compiler is controlled by the setting of the
        ~$WM_COMPILER~ and ~$WM_COMPILER_ARCH~ environment variables in the
        /OpenFOAM-1.6/etc/bashrc/ (or /cshrc/) file.
    
      + The location of the compiler installation is controlled by the
    
        ~$compilerInstall~ environment variable in the
        /OpenFOAM-1.6/etc/settings.sh/ (or /settings.csh/) file.
    
    * Library developments
    
    
    henry's avatar
    henry committed
    *** Core library
    
    ***** 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.  Multiple regular expressions are matched in
            reverse order.
          + The *new* =#includeIfPresent= directive is similar to the =#include=
            directive, but does not generate an error if the file does not exist.
          + 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.
    
    ***** Regular Expressions
          The addition of regular expressions marks a major improvement in
          usability.
          + *New* =regExp= class provides support for accessing POSIX extended
            regular expresssions from within OpenFOAM.
          + *New* =wordRe= class can contain a =word= or a =regExp= .
          + *New* =stringListOps= to search string lists based on regular
            expressions, =wordRe= or =wordReList=.
          + =Istream= and =Ostream= now retain backslashes when reading/writing
            strings.
    
    ***** Convenience changes
          + =IOobject= has a *new* constructor for creating an =IOobject= from a
            single-path specification (eg, see =blockMesh -dict= option).
          + =argList= has *new* convenience methods for accessing options more
            directly: =option()=, =optionFound()=, =optionLookup()=, =optionRead()=,
            =optionReadIfPresent()=.
          + The *new* =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.
          + Export *new* environment variable =FOAM_CASENAME= that contains the
            name part of the =FOAM_CASE= environment variable.
    
    *** Turbulence modelling
        + Major development of turbulence model libraries to give extra flexibility
          at the solver level.  For solvers that can support either RAS/LES
          computations, the selection is made in the
          /constant/turbulenceProperties/, by setting the =simulationType= keyword
          to:
          - =laminar=,
          - =RASModel=,
          - =LESModel=.
        + Depending on the selection, the model is the instantiated from /constant//
          - /RASProperties/,
          - /LESProperties/.
    
    ***** RAS wall functions
          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).
          + To apply wall functions:
            - To recapture the functionality of previous OpenFOAM versions (v1.5 and
              earlier) assign:
              - for velocity:
                - =nut=: =nutWallFunction=,
                - =mut=: =muWallFunction=,
                - =epsilon=: =epsilonWallFunction=,
                - =omega=: =omegaWallFunction=,
                - =k=, =q=, =R=: =kqRWallFunction=.
              - for temperature:
                - =alphat=: =alphatWallFunction=.
            - New =alphaSgsJayatillekeWallFunction= thermal wall function for
              compressible LES.
    
    ***** *New* LES turbulence models
          + Spalart-Allmaras DDES.
          + Spalart-Allmaras IDDES.
    
    ***** Upgrading:
          + *New* utility - =applyWallFunctionBoundaryConditions=.
          + Solvers will automatically update existing cases.
            - New fields created based on the presence of the =nut/mut= field.
            - Boundary conditions include scoping, i.e compressibility:: for
              compressible solvers.
            - Modified fields will be backed-up to /<field>.old/.
          + NOTE:
            - Fields are only updated for those fields associated with the current
              turbulence model selection, i.e. if fields exist for use with other
              models, they will not be updated.
            - The new specification is not backwards compatible.
    
    *** Thermo-physical Models
        + Old compressibility-based thermo package renamed
          =basicThermo= \rightarrow =basicPsiThermo=.
        + *New* =basicRhoThermo= thermo package.
          - Additional density field stored.
          - General form - can be used for other types of media, e.g. liquids.
          - Additional polynomial-based thermodynamics:
            - Equation of state: =icoPolynomial=,
            - Transport: =polynomialTransport=,
            - Thermo: =hPolynomialThermo=.
        + Removed earlier hard-coding of gas thermophysics for chemistry modelling:
          - =reactingMixture= now templated on thermo package,
          - =chemistryModel= now templated on thermo package,
          - =chemistrySolver= now templated on thermo package.
        + *New* =fvDOM= radition model
          - finite volume, discrete ordinates method.
        + *New* (reinstated) =eThermo= thermodynamics package
          - internal energy-based thermodynamics.
    
    *** Lagrangian
    
    ***** Intermediate
          + Overhaul of the underlying framework.
          + Reacting now split into reacting and reacting multiphase.
          + New structure for variable composition.
          + Many new sub-models, including:
            - Injection
              - =PatchInjection= - injection local to patch face cells,
              - =FieldActivatedInjection= - injection based on satisfying external
                criterion,
              - LookupTableInjection - explicity define injection locations and all
                parcel properties.
            - Post-processing
              - patch post-processing - collect data for parcels impacting user,
                defined patches.
            - Patch interaction
              - generalised behaviour for parcel interaction with patch.
            - Phase change
              - liquid evaporation.
    
    ***** Coal combustion
          + *New* library - extension of reacting-multiphase functionality.
            - Surface reaction/combustion models.
    
    *** Discrete methods
    
    henry's avatar
    henry committed
        + *New* library offering DSMC simulation functionality - see =dsmcFoam=
    
    henry's avatar
    henry committed
          below.
        + Significant development of the libraries offering molecular dynamics
          simulation functionality - see =mdFoam= and =mdEquilibrationFoam= below.
    
    
    henry's avatar
    henry committed
    *** Numerics
        + *new* polynomial-fit higher-order interpolation schemes:
          - =biLinearFit=
          - =linearFit=
          - =quadraticLinearFit=
          - =quadraticFit=
          - =linearPureUpwindFit=
          - =quadraticLinearPureUpwindFit=
          - =quadraticLinearUpwindFit=
          - =quadraticUpwindFit=
          - =cubicUpwindFit=
        + *new* polynomial-fit higher-order Sn-Grad: =quadraticFitSnGrad=.
    
    
    henry's avatar
    henry committed
    *** *New* surfMesh library
        Provides a more efficient storage mechanism than possible with =triSurface=
        without restrictions on the shape of the face (templated parameter).
        + =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.
    
    henry's avatar
    henry committed
    * Solvers
    *** Solver restructuring
        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
        in the number of solvers, simplifying the overall code structure
        + Solvers which support laminar, RAS and LES:
          - =turbFoam=, =oodles= \rightarrow =pisoFoam=.
          - =turbDyMFoam= \rightarrow =pimpleDyMFoam=.
          - =rhoTurbFoam=, =coodles= \rightarrow =rhoPisoFoam=.
          - =xoodles= \rightarrow absorbed into =XiFoam=.
          - =buoyantFoam=, =lesBuoyantFoam= \rightarrow =buoyantPisoFoam=.
          - =interFoam=, =rasInterFoam=, =lesInterFoam= \rightarrow =interFoam=.
          - =lesCavitatingFoam=, =rasCavitatingFoam= \rightarrow =cavitatingFoam=.
        + Solvers which support LES only:
          - =channelOodles= \rightarrow =channelFoam= (LES).
        + =pd= replaced by static pressure =p=.  All solvers in which buoyancy affects
          might be strong have been converted from using =pd= to =p= with improved
          numerics to give equally good accuracy and stability.  This change is
          prompted by the need to remove the confusion surrounding the meaning and
          purpose of =pd=.
        + =g= (acceleration due to gravity) is now a *new*
          =uniformDimensionedVectorField= which has the behaviour of a field, is
          registered to an =objectRegistry=, but stores only a single value.  Thus
          =g= and other =UniformDimensionedFields= can be created and looked-up
          elsewhere in the code, /e.g./ in =fvPatchFields=.
    
    *** Solver control improvements
        Now uses consistent dictionary entries for the solver controls.
        + This Allows dictionary substitutions and regular expressions in
          /system/fvSolution/.
        + The old solver control syntax is still supported (warning emitted), but
          the *new* =foamUpgradeFvSolution= utility can be used to convert
          /system/fvSolution/ to the new format.
    
    *** *New* Solvers
        + =buoyantBoussinesqSimpleFoam= Steady state heat transfer solver using a
          Boussinesq approximation for buoyancy, with laminar, RAS or LES turbulence
          modelling.
        + =buoyantBoussinesqPisoFoam= Transient heat transfer solver using a
          Boussinesq approximation for buoyancy, with laminar, RAS or LES turbulence
          modelling.
        + =coalChemistryFoam= Transient, reacting lagrangian solver, employing a coal
          cloud and a thermo cloud, with chemistry, and laminar, RAS or LES turbulence
          modelling.
        + =porousExplicitSourceReactingParcelFoam= Transient, reacting lagrangian
          solver, employing a single phase reacting cloud, with porous media, explicit
          mass sources, and laminar, RAS or LES turbulence modelling.
        + =rhoReactingFoam= Density-based thermodynamics variant of the reactingFoam
          solver, i.e. now applicable to liquid systems.
        + =dsmcFoam= DSMC (Direct Simulation Monte-Carlo) solver for rarefied gas
          dynamics simulations, able to simulate mixtures of an arbitrary number of
          gas species.  The variable hard sphere collision model with Larsen-Borgnakke
          internal energy redistribution (see "Molecular Gas Dynamics and the Direct
          Simulation of Gas Flows" G.A. Bird, 1994) is available; other run-time
          selectable collision models can be easily added.
    
    *** Updated solvers
        + =mdFoam= Molecular Dynamics (MD) solver able to simulate a mixture of an
          arbitrary number of mono-atomic and small, rigid polyatomic (i.e. H2O, N2)
          molecular species, with 6 degree of freedom motion, in complex geometries. A
          molecule of any species can be built by specifying its sites of mass and
          charge. All molecules interact with short-range dispersion forces and
          pairwise electrostatic interactions using methods described in: Fennell and
          Gezelter, J. Chem. Phys. 124, 234104 (2006).
        + =mdEquilibrationFoam= Similar to mdFoam, but employs velocity scaling to
          adjust the simulation temperature to a target value. Useful to equilibrate a
          case before simulation.
        + =chtMultiRegionFoam= New boundary condition allows independent decomposition
          of coupled regions without any constraint on the decomposition.
    
    henry's avatar
    henry committed
      + Improved set of direct mapped boundary conditions.
      + =buoyantPressureFvPatchScalarField=, the *new* buoyancy pressure boundary
        condition now supports =p= and =pd= for backward compatibility.
      + =uniformDensityHydrostaticPressure= is an additional pressure boundary
        condition to aid the transition from =pd= to =p= as it behaves similarly to
        specifying a uniform =pd= at an outlet for example.
    
    henry's avatar
    henry committed
      + =activeBaffleVelocity= dynamically combines cyclic and wall patches so that
        the flow through the patch can be controlled /e.g./ by pressure drop.
      + =rotatingWallVelocity= specifies a rotating velocity, given the rotational
        speed, origin and axis.
    
    henry's avatar
    henry committed
    *** Improvements
       + =blockMesh= has a *new* =-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= has a *new* =-noPatches= option to suppress generation
         of patches.
       + =foamToEnsightParts= has *new* =-noMesh= and =-index= options that can
         be useful when post-processing results incrementally.
       + =snappyHexMesh= has lower memory footprint. New distributed triangulated
         surface type for meshing surfaces with extremely large triangle count.
         Now supports multi-region meshing of arbitrarily complex regions.
    
    *** *New* utilities
       + =particleTracks= - generate particle tracks for lagrangian calculations.
       + =dsmcInitialise= - preprocessing utility to create initial configurations
         of DSMC particles in a geometry.
       + =surfaceRedistributePar= - preprocessing utility to create distributed
         triangulated surface.
    
    *** *New* foamCalc functions
    
    henry's avatar
    henry committed
        + =interpolate= performs fvc::interpolate(<field>).
        + =randomise= randomises a <field> by a given perturbation.
        + =addSubtract= provides simple add/subtract field functionality.
    
    *** Usage
       + =timeSelector= can now combine =-time ranges= and =-latestTime= options.
         For example, -time '0.01:0.09' -latestTime vs. -time '0.01:'.
         More reliable behaviour for cases missing /constant// or /0// directories.
         When the =-noZero= option is enabled, =-latestTime= will not select the
         =0/= directory unless the =-zeroTime= option is given.
         This helps avoid ill effects caused by accidentally using the
         /0// directory in certain utilities (eg, =reconstructPar=).
       + =-region= option added to more utilities.
    
    *** Improvements to Paraview reader module
       + =PV3FoamReader= added mesh region handling. The region name is parsed
         from the filename. Eg, /case{region}.OpenFOAM/.
       + =paraFoam= with a *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.
    
    
    henry's avatar
    henry committed
    * Post-processing
      + Sampling on iso-surfaces, interpolated or non-interpolated.
      + Sampling on surface defined by distance to surface (=distanceSurface=).
      + Cutting planes for arbitrary meshes.
      + Output to any surface geometry format supported by the =surfMesh= library.
    
    *** Function objects
    
    ***** Improvements for function objects 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 both forms are supported.
          + The =functionObject= now has an additional =end()= method that is called
            when =Time::loop()= or =Time::run()= determine 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++; ... }=.
          + *New* =functionObjectList= now tracks the SHA1 message digest of the
            sub-directories. This avoids reloading a =functionObject= when
            something unrelated in /system/controlDict/ changed.
    
    ***** *New* function objects:
           + =systemCall= - executes a list of system instructions.
           + =fieldMinMax= - computes the min/max of a <field>.
           + =staticPressure= - converts kinematic pressure to static pressure.
           + =dsmcFields= - calculates intensive fields (velocity and temperature)
             from averaged extensive fields (i.e. momentum and energy).
    
    ***** Usage
           + Improved output control: =timeStep= or =outputTime=.
    
    * Tutorial restructuring
      to reflect solver application structure.
    
    
    henry's avatar
    henry committed
    * Third-party Software
      + =gcc= upgraded to version 4.3.3.
      + =OpenMPI= upgraded to version 1.3.3.
      + =ParaView= upgraded to version 3.6.1.
      + =Scotch= *new* decomposition method: \\
        Scotch (http://gforge.inria.fr/projects/scotch/) is a general multi-level
        decomposition method originating from the ScAlApplix project (Inria). It is
        a framework for general recursive partitioning methods and a such comparable
        to Metis but with a permissive licence.
    
        The corresponding decomposition method (in =decomposeParDict=) is
        =scotch=.  An optional =strategy= string can be supplied to change the
        decomposition methods; initial testing shows the default strategy producing
        decompositions comparable in quality to Metis.