Skip to content
Snippets Groups Projects
  1. May 08, 2016
    • Henry Weller's avatar
      89159e7f
    • Henry Weller's avatar
      applications/solvers/multiphase: Added -postProcess option · 38916e66
      Henry Weller authored
      See also commit cc455173
      38916e66
    • Henry Weller's avatar
    • Henry Weller's avatar
      interFoam: Added -postProcess option · fce8d031
      Henry Weller authored
      See also commit cc455173
      Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1301
      fce8d031
    • Henry Weller's avatar
      simpleFoam: Added experimental "-postProcess" option · cc455173
      Henry Weller authored
          Executes application functionObjects to post-process existing results.
      
          If the "dict" argument is specified the functionObjectList is constructed
          from that dictionary otherwise the functionObjectList is constructed from
          the "functions" sub-dictionary of "system/controlDict"
      
          Multiple time-steps may be processed and the standard utility time
          controls are provided.
      
      This functionality is equivalent to execFlowFunctionObjects but in a
      more efficient and general manner and will be included in all the
      OpenFOAM solvers if it proves effective and maintainable.
      
      The command-line options available with the "-postProcess" option may be
      obtained by
      
      simpleFoam -help -postProcess
      
      Usage: simpleFoam [OPTIONS]
      options:
        -case <dir>       specify alternate case directory, default is the cwd
        -constant         include the 'constant/' dir in the times list
        -dict <file>      read control dictionary from specified location
        -latestTime       select the latest time
        -newTimes         select the new times
        -noFunctionObjects
                          do not execute functionObjects
        -noZero           exclude the '0/' dir from the times list, has precedence
                          over the -withZero option
        -parallel         run in parallel
        -postProcess      Execute functionObjects only
        -region <name>    specify alternative mesh region
        -roots <(dir1 .. dirN)>
                          slave root directories for distributed running
        -time <ranges>    comma-separated time ranges - eg, ':10,20,40:70,1000:'
        -srcDoc           display source code in browser
        -doc              display application documentation in browser
        -help             print the usage
      
      Henry G. Weller
      CFD Direct Ltd.
      cc455173
  2. May 03, 2016
  3. May 01, 2016
  4. Apr 30, 2016
    • Henry Weller's avatar
      Updated headers · 81f31acb
      Henry Weller authored
      81f31acb
    • Henry Weller's avatar
      GeometricField: Renamed internalField() -> primitiveField() and... · 3c053c2f
      Henry Weller authored
      GeometricField: Renamed internalField() -> primitiveField() and dimensionedInternalField() -> internalField()
      
      These new names are more consistent and logical because:
      
      primitiveField():
      primitiveFieldRef():
          Provides low-level access to the Field<Type> (primitive field)
          without dimension or mesh-consistency checking.  This should only be
          used in the low-level functions where dimensional consistency is
          ensured by careful programming and computational efficiency is
          paramount.
      
      internalField():
      internalFieldRef():
          Provides access to the DimensionedField<Type, GeoMesh> of values on
          the internal mesh-type for which the GeometricField is defined and
          supports dimension and checking and mesh-consistency checking.
      3c053c2f
    • Henry Weller's avatar
      GeometricField::dimensionedInteralFieldRef() -> GeometricField::ref() · ccd958a8
      Henry Weller authored
      In order to simplify expressions involving dimensioned internal field it
      is preferable to use a simpler access convention.  Given that
      GeometricField is derived from DimensionedField it is simply a matter of
      de-referencing this underlying type unlike the boundary field which is
      peripheral information.  For consistency with the new convention in
      "tmp"  "dimensionedInteralFieldRef()" has been renamed "ref()".
      ccd958a8
    • Henry Weller's avatar
      GeometricField::internalField() -> GeometricField::internalFieldRef() · 5df2b964
      Henry Weller authored
      Non-const access to the internal field now obtained from a specifically
      named access function consistent with the new names for non-canst access
      to the boundary field boundaryFieldRef() and dimensioned internal field
      dimensionedInternalFieldRef().
      
      See also commit 22f4ad32
      5df2b964
  5. Apr 28, 2016
    • Henry Weller's avatar
      fireFoam: New additional controls switch "solvePyrolysisRegion" · 62c62abd
      Henry Weller authored
      provides optional control for solving the pyrolysis region.
      
      Patch contributed by Karl Meredith, FMGlobal.
      62c62abd
    • Henry Weller's avatar
      GeometricField::GeometricBoundaryField -> GeometricField::Boundary · ea5401c7
      Henry Weller authored
      When the GeometricBoundaryField template class was originally written it
      was a separate class in the Foam namespace rather than a sub-class of
      GeometricField as it is now.  Without loss of clarity and simplifying
      code which access the boundary field of GeometricFields it is better
      that GeometricBoundaryField be renamed Boundary for consistency with the
      new naming convention for the type of the dimensioned internal field:
      Internal, see commit 4a57b9be
      
      This is a very simple text substitution change which can be applied to
      any code which compiles with the OpenFOAM-dev libraries.
      ea5401c7
  6. Apr 27, 2016
    • Henry Weller's avatar
      GeometricField: Rationalized and simplified access to the dimensioned internal field · 4a57b9be
      Henry Weller authored
      Given that the type of the dimensioned internal field is encapsulated in
      the GeometricField class the name need not include "Field"; the type
      name is "Internal" so
      
      volScalarField::DimensionedInternalField -> volScalarField::Internal
      
      In addition to the ".dimensionedInternalField()" access function the
      simpler "()" de-reference operator is also provided to greatly simplify
      FV equation source term expressions which need not evaluate boundary
      conditions.  To demonstrate this kEpsilon.C has been updated to use
      dimensioned internal field expressions in the k and epsilon equation
      source terms.
      4a57b9be
  7. Apr 26, 2016
  8. Apr 25, 2016
    • Henry Weller's avatar
      Completed boundaryField() -> boundaryFieldRef() · 22f4ad32
      Henry Weller authored
      Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1938
      
      Because C++ does not support overloading based on the return-type there
      is a problem defining both const and non-const member functions which
      are resolved based on the const-ness of the object for which they are
      called rather than the intent of the programmer declared via the
      const-ness of the returned type.  The issue for the "boundaryField()"
      member function is that the non-const version increments the
      event-counter and checks the state of the stored old-time fields in case
      the returned value is altered whereas the const version has no
      side-effects and simply returns the reference.  If the the non-const
      function is called within the patch-loop the event-counter may overflow.
      To resolve this it in necessary to avoid calling the non-const form of
      "boundaryField()" if the results is not altered and cache the reference
      outside the patch-loop when mutation of the patch fields is needed.
      
      The most straight forward way of resolving this problem is to name the
      const and non-const forms of the member functions differently e.g. the
      non-const form could be named:
      
          mutableBoundaryField()
          mutBoundaryField()
          nonConstBoundaryField()
          boundaryFieldRef()
      
      Given that in C++ a reference is non-const unless specified as const:
      "T&" vs "const T&" the logical convention would be
      
          boundaryFieldRef()
          boundaryFieldConstRef()
      
      and given that the const form which is more commonly used is it could
      simply be named "boundaryField()" then the logical convention is
      
          GeometricBoundaryField& boundaryFieldRef();
      
          inline const GeometricBoundaryField& boundaryField() const;
      
      This is also consistent with the new "tmp" class for which non-const
      access to the stored object is obtained using the ".ref()" member function.
      
      This new convention for non-const access to the components of
      GeometricField will be applied to "dimensionedInternalField()" and "internalField()" in the
      future, i.e. "dimensionedInternalFieldRef()" and "internalFieldRef()".
      22f4ad32
    • Henry Weller's avatar
      43beb060
  9. Apr 24, 2016
  10. Apr 23, 2016
    • Henry Weller's avatar
      fireFoam: Added optional hydrostatic initialization of the pressure and density · 673e0d17
      Henry Weller authored
      Also added the new prghTotalHydrostaticPressure p_rgh BC which uses the
      hydrostatic pressure field as the reference state for the far-field
      which provides much more accurate entrainment is large open domains
      typical of many fire simulations.
      
      The hydrostatic field solution is controlled by the optional entries in
      the fvSolution.PIMPLE dictionary, e.g.
      
          hydrostaticInitialization yes;
          nHydrostaticCorrectors 5;
      
      and the solver must also be specified for the hydrostatic p_rgh field
      ph_rgh e.g.
      
          ph_rgh
          {
              $p_rgh;
          }
      
      Suitable boundary conditions for ph_rgh cannot always be derived from
      those for p_rgh and so the ph_rgh is read to provide them.
      
      To avoid accuracy issues with IO, restart and post-processing the p_rgh
      and ph_rgh the option to specify a suitable reference pressure is
      provided via the optional pRef file in the constant directory, e.g.
      
          dimensions      [1 -1 -2 0 0 0 0];
          value           101325;
      
      which is used in the relationship between p_rgh and p:
      
          p = p_rgh + rho*gh + pRef;
      
      Note that if pRef is specified all pressure BC specifications in the
      p_rgh and ph_rgh files are relative to the reference to avoid round-off
      errors.
      
      For examples of suitable BCs for p_rgh and ph_rgh for a range of
      fireFoam cases please study the tutorials in
      tutorials/combustion/fireFoam/les which have all been updated.
      
      Henry G. Weller
      CFD Direct Ltd.
      673e0d17
  11. Apr 22, 2016
  12. Apr 16, 2016
  13. Apr 06, 2016
  14. Apr 04, 2016
  15. Mar 22, 2016
  16. Mar 17, 2016
  17. Mar 15, 2016
  18. Mar 14, 2016
  19. Mar 08, 2016
  20. Mar 07, 2016
  21. Mar 06, 2016
  22. Feb 29, 2016
  23. Feb 26, 2016
    • Henry Weller's avatar
      OpenFOAM: Updated all libraries, solvers and utilities to use the new const-safe tmp · cd852be3
      Henry Weller authored
      The deprecated non-const tmp functionality is now on the compiler switch
      NON_CONST_TMP which can be enabled by adding -DNON_CONST_TMP to EXE_INC
      in the Make/options file.  However, it is recommended to upgrade all
      code to the new safer tmp by using the '.ref()' member function rather
      than the non-const '()' dereference operator when non-const access to
      the temporary object is required.
      
      Please report any problems on Mantis.
      
      Henry G. Weller
      CFD Direct.
      cd852be3
  24. Feb 24, 2016
  25. Feb 22, 2016
    • Henry Weller's avatar
      tmp: Updated to store and preserve the const-ness of the reference to a constant object · 15b7e87d
      Henry Weller authored
      This change requires that the de-reference operator '()' returns a
      const-reference to the object stored irrespective of the const-ness of
      object stored and the new member function 'ref()' is provided to return
      an non-const reference to stored object which throws a fatal error if the
      stored object is const.
      
      In order to smooth the transition to this new safer 'tmp' the now
      deprecated and unsafe non-const de-reference operator '()' is still
      provided by default but may be switched-off with the compilation switch
      'CONST_TMP'.
      
      The main OpenFOAM library has already been upgraded and '-DCONST_TMP'
      option specified in the 'options' file to switch to the new 'tmp'
      behavior.  The rest of OpenFOAM-dev will be upgraded over the following
      few weeks.
      
      Henry G. Weller
      CFD Direct
      15b7e87d
  26. Feb 20, 2016
    • Henry Weller's avatar
      Boundary conditions: Added extrapolatedCalculatedFvPatchField · 99a10ece
      Henry Weller authored
      To be used instead of zeroGradientFvPatchField for temporary fields for
      which zero-gradient extrapolation is use to evaluate the boundary field
      but avoiding fields derived from temporary field using field algebra
      inheriting the zeroGradient boundary condition by the reuse of the
      temporary field storage.
      
      zeroGradientFvPatchField should not be used as the default patch field
      for any temporary fields and should be avoided for non-temporary fields
      except where it is clearly appropriate;
      extrapolatedCalculatedFvPatchField and calculatedFvPatchField are
      generally more suitable defaults depending on the manner in which the
      boundary values are specified or evaluated.
      
      The entire OpenFOAM-dev code-base has been updated following the above
      recommendations.
      
      Henry G. Weller
      CFD Direct
      99a10ece