Skip to content
Snippets Groups Projects
  1. Aug 11, 2016
  2. Aug 10, 2016
  3. Aug 05, 2016
  4. Aug 02, 2016
    • Henry Weller's avatar
      List: Reinstated construction from two iterators and added construction from an initializer list · d01eb45c
      Henry Weller authored
      Until C++ supports 'concepts' the only way to support construction from
      two iterators is to provide a constructor of the form:
      
              template<class InputIterator>
              List(InputIterator first, InputIterator last);
      
      which for some types conflicts with
      
              //- Construct with given size and value for all elements
              List(const label, const T&);
      
      e.g. to construct a list of 5 scalars initialized to 0:
      
          List<scalar> sl(5, 0);
      
      causes a conflict because the initialization type is 'int' rather than
      'scalar'.  This conflict may be resolved by specifying the type of the
      initialization value:
      
          List<scalar> sl(5, scalar(0));
      
      The new initializer list contructor provides a convenient and efficient alternative
      to using 'IStringStream' to provide an initial list of values:
      
          List<vector> list4(IStringStream("((0 1 2) (3 4 5) (6 7 8))")());
      
      or
      
          List<vector> list4
          {
              vector(0, 1, 2),
              vector(3, 4, 5),
              vector(6, 7, 8)
          };
      d01eb45c
  5. Aug 01, 2016
  6. Jul 18, 2016
  7. Jul 17, 2016
    • Henry Weller's avatar
    • Henry Weller's avatar
      TDACChemistryModel: New chemistry model providing Tabulation of Dynamic Adaptive Chemistry · 1d572696
      Henry Weller authored
      Provides efficient integration of complex laminar reaction chemistry,
      combining the advantages of automatic dynamic specie and reaction
      reduction with ISAT (in situ adaptive tabulation).  The advantages grow
      as the complexity of the chemistry increases.
      
      References:
          Contino, F., Jeanmart, H., Lucchini, T., & D’Errico, G. (2011).
          Coupling of in situ adaptive tabulation and dynamic adaptive chemistry:
          An effective method for solving combustion in engine simulations.
          Proceedings of the Combustion Institute, 33(2), 3057-3064.
      
          Contino, F., Lucchini, T., D'Errico, G., Duynslaegher, C.,
          Dias, V., & Jeanmart, H. (2012).
          Simulations of advanced combustion modes using detailed chemistry
          combined with tabulation and mechanism reduction techniques.
          SAE International Journal of Engines,
          5(2012-01-0145), 185-196.
      
          Contino, F., Foucher, F., Dagaut, P., Lucchini, T., D’Errico, G., &
          Mounaïm-Rousselle, C. (2013).
          Experimental and numerical analysis of nitric oxide effect on the
          ignition of iso-octane in a single cylinder HCCI engine.
          Combustion and Flame, 160(8), 1476-1483.
      
          Contino, F., Masurier, J. B., Foucher, F., Lucchini, T., D’Errico, G., &
          Dagaut, P. (2014).
          CFD simulations using the TDAC method to model iso-octane combustion
          for a large range of ozone seeding and temperature conditions
          in a single cylinder HCCI engine.
          Fuel, 137, 179-184.
      
      Two tutorial cases are currently provided:
          + tutorials/combustion/chemFoam/ic8h18_TDAC
          + tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC
      
      the first of which clearly demonstrates the advantage of dynamic
      adaptive chemistry providing ~10x speedup,
      
      the second demonstrates ISAT on the modest complex GRI mechanisms for
      methane combustion, providing a speedup of ~4x.
      
      More tutorials demonstrating TDAC on more complex mechanisms and cases
      will be provided soon in addition to documentation for the operation and
      settings of TDAC.  Also further updates to the TDAC code to improve
      consistency and integration with the rest of OpenFOAM and further
      optimize operation can be expected.
      
      Original code providing all algorithms for chemistry reduction and
      tabulation contributed by Francesco Contino, Tommaso Lucchini, Gianluca
      D’Errico, Hervé Jeanmart, Nicolas Bourgeois and Stéphane Backaert.
      
      Implementation updated, optimized and integrated into OpenFOAM-dev by
      Henry G. Weller, CFD Direct Ltd with the help of Francesco Contino.
      1d572696
  8. Jul 12, 2016
  9. Jul 11, 2016
    • Henry Weller's avatar
      ODESolvers: Add support for efficient ODE solver resizing · a5d73747
      Henry Weller authored
      Note: this reuses the existing storage rather than costly reallocation
      which requires the initial allocation to be sufficient for the largest
      size the ODE system might have.  Attempt to set a size larger than the
      initial size is a fatal error.
      a5d73747
  10. Jun 24, 2016
  11. Jun 19, 2016
  12. Jun 17, 2016
  13. Jun 13, 2016
  14. May 30, 2016
  15. May 21, 2016
    • Henry Weller's avatar
      Standardized the selection of required and optional fields in BCs, fvOptions, functionObjects etc. · 3eec5854
      Henry Weller authored
      In most boundary conditions, fvOptions etc. required and optional fields
      to be looked-up from the objectRegistry are selected by setting the
      keyword corresponding to the standard field name in the BC etc. to the
      appropriate name in the objectRegistry.  Usually a default is provided
      with sets the field name to the keyword name, e.g. in the
      totalPressureFvPatchScalarField the velocity is selected by setting the
      keyword 'U' to the appropriate name which defaults to 'U':
      
              Property     | Description             | Required    | Default value
              U            | velocity field name     | no          | U
              phi          | flux field name         | no          | phi
              .
              .
              .
      
      However, in some BCs and functionObjects and many fvOptions another
      convention is used in which the field name keyword is appended by 'Name'
      e.g.
      
              Property     | Description             | Required    | Default value
              pName        | pressure field name     | no          | p
              UName        | velocity field name     | no          | U
      
      This difference in convention is unnecessary and confusing, hinders code
      and dictionary reuse and complicates code maintenance.  In this commit
      the appended 'Name' is removed from the field selection keywords
      standardizing OpenFOAM on the first convention above.
      3eec5854
  16. May 18, 2016
  17. May 16, 2016
  18. May 15, 2016
    • Henry Weller's avatar
      functionObjects: rewritten to all be derived from 'functionObject' · 78d2971b
      Henry Weller authored
        - Avoids the need for the 'OutputFilterFunctionObject' wrapper
        - Time-control for execution and writing is now provided by the
          'timeControlFunctionObject' which instantiates the processing
          'functionObject' and controls its operation.
        - Alternative time-control functionObjects can now be written and
          selected at run-time without the need to compile wrapped version of
          EVERY existing functionObject which would have been required in the
          old structure.
        - The separation of 'execute' and 'write' functions is now formalized in the
          'functionObject' base-class and all derived classes implement the
          two functions.
        - Unnecessary implementations of functions with appropriate defaults
          in the 'functionObject' base-class have been removed reducing
          clutter and simplifying implementation of new functionObjects.
        - The 'coded' 'functionObject' has also been updated, simplified and tested.
        - Further simplification is now possible by creating some general
          intermediate classes derived from 'functionObject'.
      78d2971b
  19. May 11, 2016
  20. May 02, 2016
  21. 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
    • Henry Weller's avatar
      functionObjectFile: Separated into functionObjectFile and functionObjectFiles · 67e2d028
      Henry Weller authored
      functionObjectFile provides basic directory, file and formatting functions
      functionObjectFiles provides multi-file cache
      67e2d028
  22. Apr 28, 2016
  23. 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
  24. Apr 26, 2016
  25. Apr 25, 2016