1. 15 Dec, 2021 2 commits
  2. 19 Apr, 2021 1 commit
    • Mark OLESEN's avatar
      ENH: improve hashing overloads of string-types and HashTable/HashSet · 95cd8ee7
      Mark OLESEN authored and Andrew Heather's avatar Andrew Heather committed
      - additional dummy template parameter to assist with supporting
        derived classes. Currently just used for string types, but can be
        extended.
      
      - provide hash specialization for various integer types.
        Removes the need for any forwarding.
      
      - change default hasher for HashSet/HashTable from 'string::hash'
        to `Hash<Key>`. This avoids questionable hashing calls and/or
        avoids compiler resolution problems.
      
        For example,
        HashSet<label>::hasher and labelHashSet::hasher now both properly
        map to Hash<label> whereas previously HashSet<label> would have
        persistently mapped to string::hash, which was incorrect.
      
      - standardize internal hashing functors.
      
        Functor name is 'hasher', as per STL set/map and the OpenFOAM
        HashSet/HashTable definitions.
      
        Older code had a local templated name, which added unnecessary
        clutter and the template parameter was always defaulted.
        For example,
      
            Old:  `FixedList<label, 3>::Hash<>()`
           ...
      95cd8ee7
  3. 05 Aug, 2020 2 commits
  4. 06 May, 2020 1 commit
    • Mark OLESEN's avatar
      COMP: use -iquotedir for including the local '.' directory · 595579e0
      Mark OLESEN authored
      - adds into the include-quoted search list instead the general (-Idir)
        search list.
      
        * makes it less subject to ordering (since it will now generally be
          searched first) and makes it less subject to how duplicate removal
          is implemented. In some compilers (#1627), the last instance of
          a duplicate directory would be used and not the first instance.
      
        * removes clutter in some Make/options files
      
      COMP: add missing linkage libraries
      595579e0
  5. 04 May, 2020 1 commit
  6. 13 Nov, 2019 1 commit
  7. 31 Oct, 2019 1 commit
  8. 06 Nov, 2019 1 commit
  9. 24 Sep, 2019 1 commit
  10. 07 Jun, 2019 1 commit
    • Sergio Ferraris's avatar
      INT: Org integration of VOF, Euler phase solvers and models. · 8170f2ad
      Sergio Ferraris authored
      Integration of VOF MULES new interfaces. Update of VOF solvers and all instances
      of MULES in the code.
      Integration of reactingTwoPhaseEuler and reactingMultiphaseEuler solvers and sub-models
      Updating reactingEuler tutorials accordingly (most of them tested)
      
      New eRefConst thermo used in tutorials. Some modifications at thermo specie level
      affecting mostly eThermo. hThermo mostly unaffected
      
      New chtMultiRegionTwoPhaseEulerFoam solver for quenching and tutorial.
      
      Phases sub-models for reactingTwoPhaseEuler and reactingMultiphaseEuler were moved
      to src/phaseSystemModels/reactingEulerFoam in order to be used by BC for
      chtMultiRegionTwoPhaseEulerFoam.
      
      Update of interCondensatingEvaporatingFoam solver.
      8170f2ad
  11. 28 Apr, 2019 1 commit
  12. 06 Feb, 2019 1 commit
  13. 07 Jan, 2019 1 commit
  14. 09 Jan, 2019 1 commit
  15. 11 Dec, 2018 1 commit
  16. 13 Dec, 2018 1 commit
    • Mark OLESEN's avatar
      ENH: consolidate handling of mandatory/optional command arguments · 5d9e278e
      Mark OLESEN authored
      - for some special cases we wish to mark command-line arguments as
        being optional, in order to do our own treatment. For example,
        when an arbitrary number of arguments should be allowed.
      
        Now tag this situation with argList::noMandatoryArgs().
        The argList::argsMandatory() query can then be used in any further
        logic, including the standard default argument checking.
      
      - with the new default check, can consolidate the special-purpose
      
            "setRootCaseNonMandatoryArgs.H"
      
        into the regular
      
            "setRootCase.H"
      
      - revert to a simple "setRootCase.H" and move all the listing related
        bits to a "setRootCaseLists.H" file. This leaves the information
        available for solvers, or whoever else wishes, without being
        introduced everywhere.
      
      - add include guards and scoping to the listing files and rename to
        something less generic.
      
           listOptions.H -> setRootCaseListOptions.H
           listOutput.H  -> setRootCaseListOutput.H
      5d9e278e
  17. 03 Nov, 2018 1 commit
  18. 19 Oct, 2018 1 commit
    • Mark OLESEN's avatar
      STYLE: use range-for when looping dictionary entries. · 07dafe7b
      Mark OLESEN authored
      - as part of the cleanup of dictionary access methods (c6520033)
        made the dictionary class single inheritance from IDLList<entry>.
      
        This eliminates any ambiguities for iterators and allows
        for simple use of range-for looping.
      
        Eg,
            for (const entry& e : topDict))
            {
                Info<< "entry:" << e.keyword() << " is dict:" << e.isDict() << nl;
            }
      
         vs
      
            forAllConstIter(dictionary, topDict, iter))
            {
                Info<< "entry:" << iter().keyword()
                    << " is dict:" << iter().isDict() << nl;
            }
      07dafe7b
  19. 16 Oct, 2018 1 commit
  20. 12 Oct, 2018 1 commit
    • Mark OLESEN's avatar
      ENH: avoid readScalar, readLabel etc from dictionary (#762, #1033) · 8eddcc07
      Mark OLESEN authored
      - use the dictionary 'get' methods instead of readScalar for
        additional checking
      
           Unchecked:  readScalar(dict.lookup("key"));
           Checked:    dict.get<scalar>("key");
      
      - In templated classes that also inherit from a dictionary, an additional
        'template' keyword will be required. Eg,
      
           this->coeffsDict().template get<scalar>("key");
      
        For this common use case, the predefined getXXX shortcuts may be
        useful. Eg,
      
           this->coeffsDict().getScalar("key");
      8eddcc07
  21. 27 Apr, 2018 1 commit
    • Mark OLESEN's avatar
      ENH: make format of ExecutionTime = ... output configurable (issue #788) · dd8341f6
      Mark OLESEN authored
      - controlled by the the 'printExecutionFormat' InfoSwitch in
        etc/controlDict
      
            // Style for "ExecutionTime = " output
            // - 0 = seconds (with trailing 's')
            // - 1 = day-hh:mm:ss
      
         ExecutionTime = 112135.2 s  ClockTime = 113017 s
      
         ExecutionTime = 1-07:08:55.20  ClockTime = 1-07:23:37
      
      - Callable via the new Time::printExecutionTime() method,
        which also helps to reduce clutter in the applications.
        Eg,
      
           runTime.printExecutionTime(Info);
      
        vs
      
           Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
               << "  ClockTime = " << runTime.elapsedClockTime() << " s"
               << nl << endl;
      
      --
      
      ENH: return elapsedClockTime() and clockTimeIncrement as double
      
      - previously returned as time_t, which is less portable.
      dd8341f6
  22. 24 Apr, 2018 1 commit
    • Mark OLESEN's avatar
      ENH: improve handling of ThirdParty packages · b4d38ab4
      Mark OLESEN authored
      - generalize some of the library extensions (.so vs .dylib).
        Provide as wmake 'sysFunctions'
      
      - added note about unsupported/incomplete system support
      
      - centralize detection of ThirdParty packages into wmake/ subdirectory
        by providing a series of scripts in the spirit of GNU autoconfig.
        For example,
      
            have_boost, have_readline, have_scotch, ...
      
        Each of the `have_<package>` scripts will generally provide the
        following type of functions:
      
            have_<package>          # detection
            no_<package>            # reset
            echo_<package>          # echoing
      
        and the following type of variables:
      
            HAVE_<package>          # unset or 'true'
            <package>_ARCH_PATH     # root for <package>
            <package>_INC_DIR       # include directory for <package>
            <package>_LIB_DIR       # library directory for <package>
      
        This simplifies the calling scripts:
      
            if have_metis
            then
                wmake metisDecomp
            fi
      
        As well as reducing clutter in the corresponding Make/options:
      
            EXE_INC = \
                -I$(METIS_INC_DIR) \
                -I../decompositionMethods/lnInclude
      
            LIB_LIBS = \
                -L$(METIS_LIB_DIR) -lmetis
      
        Any additional modifications (platform-specific or for an external build
        system) can now be made centrally.
      b4d38ab4
  23. 28 Mar, 2018 1 commit
  24. 21 Mar, 2018 1 commit
  25. 16 Mar, 2018 1 commit
    • Mark OLESEN's avatar
      STYLE: more consistent use of dimensioned Zero · 2f86cdc7
      Mark OLESEN authored
      - when constructing dimensioned fields that are to be zero-initialized,
        it is preferrable to use a form such as
      
            dimensionedScalar(dims, Zero)
            dimensionedVector(dims, Zero)
      
        rather than
      
            dimensionedScalar("0", dims, 0)
            dimensionedVector("zero", dims, vector::zero)
      
        This reduces clutter and also avoids any suggestion that the name of
        the dimensioned quantity has any influence on the field's name.
      
        An even shorter version is possible. Eg,
      
            dimensionedScalar(dims)
      
        but reduces the clarity of meaning.
      
      - NB: UniformDimensionedField is an exception to these style changes
        since it does use the name of the dimensioned type (instead of the
        regIOobject).
      2f86cdc7
  26. 26 Feb, 2018 2 commits
    • Mark OLESEN's avatar
    • Mark OLESEN's avatar
      ENH: cleanup autoPtr class (issue #639) · 660f3e54
      Mark OLESEN authored
      Improve alignment of its behaviour with std::unique_ptr
      
        - element_type typedef
        - release() method - identical to ptr() method
        - get() method to get the pointer without checking and without releasing it.
        - operator*() for dereferencing
      
      Method name changes
      
        - renamed rawPtr() to get()
        - renamed rawRef() to ref(), removed unused const version.
      
      Removed methods/operators
      
        - assignment from a raw pointer was deleted (was rarely used).
          Can be convenient, but uncontrolled and potentially unsafe.
          Do allow assignment from a literal nullptr though, since this
          can never leak (and also corresponds to the unique_ptr API).
      
      Additional methods
      
        - clone() method: forwards to the clone() method of the underlying
          data object with argument forwarding.
      
        - reset(autoPtr&&) as an alternative to operator=(autoPtr&&)
      
      STYLE: avoid implicit conversion from autoPtr to object type in many places
      
      - existing implementation has the following:
      
           operator const T&() const { return operator*(); }
      
        which means that the following code works:
      
             autoPtr<mapPolyMesh> map = ...;
             updateMesh(*map);    // OK: explicit dereferencing
             updateMesh(map());   // OK: explicit dereferencing
             updateMesh(map);     // OK: implicit dereferencing
      
        for clarity it may preferable to avoid the implicit dereferencing
      
      - prefer operator* to operator() when deferenced a return value
        so it is clearer that a pointer is involve and not a function call
        etc    Eg,   return *meshPtr_;  vs.  return meshPtr_();
      660f3e54
  27. 09 Feb, 2018 1 commit
    • Mark OLESEN's avatar
      STYLE: simplify hashing to use struct instead of class · 3e3c9739
      Mark OLESEN authored
      - more consistent with STL practices for function classes.
      
      - string::hash function class now operates on std::string rather
        than Foam::string since we have now avoided inadvertent use of
        string conversion from int in more places.
      3e3c9739
  28. 05 Nov, 2017 1 commit
  29. 02 Jul, 2018 1 commit
    • Mark OLESEN's avatar
      ENH: improve controls for Time (issue #910) · 2662042d
      Mark OLESEN authored
      - relocate some standard functionality to TimePaths to allow a lighter
        means of managing time directories without using the entire Time
        mechanism.
      
      - optional enableLibs for Time construction (default is on)
        and a corresponding argList::noLibs() and "-no-libs" option
      
      STYLE:
      
      - mark Time::outputTime() as deprecated MAY-2016
      
      - use pre-increment for runTime, although there is no difference in
        behaviour or performance.
      2662042d
  30. 11 Jan, 2018 1 commit
  31. 23 Nov, 2017 1 commit
    • Will Bainbridge's avatar
      ENH: combustionModels: Changed the construction order · 22aae281
      Will Bainbridge authored and Andrew Heather's avatar Andrew Heather committed
      The combustion and chemistry models no longer select and own the
      thermodynamic model; they hold a reference instead. The construction of
      the combustion and chemistry models has been changed to require a
      reference to the thermodyanmics, rather than the mesh and a phase name.
      
      At the solver-level the thermo, turbulence and combustion models are now
      selected in sequence. The cyclic dependency between the three models has
      been resolved, and the raw-pointer based post-construction step for the
      combustion model has been removed.
      
      The old solver-level construction sequence (typically in createFields.H)
      was as follows:
      
          autoPtr<combustionModels::psiCombustionModel> combustion
          (
              combustionModels::psiCombustionModel::New(mesh)
          );
      
          psiReactionThermo& thermo = combustion->thermo();
      
          // Create rho, U, phi, etc...
      
          autoPtr<compressible::turbulenceModel> turbulence
          (
              compressible::turbulenceModel::New(rho, U, phi, thermo)
          );
      
          combustion->setTurbulence(*turbulence);
      
      The new sequence is:
      
          autoPtr<psiReactionThermo> thermo(psiReactionThermo::New(mesh));
      
          // Create rho, U, phi, etc...
      
          autoPtr<compressible::turbulenceModel> turbulence
          (
              compressible::turbulenceModel::New(rho, U, phi, *thermo)
          );
      
          autoPtr<combustionModels::psiCombustionModel> combustion
          (
              combustionModels::psiCombustionModel::New(*thermo, *turbulence)
          );
      
      ENH: combustionModel, chemistryModel: Simplified model selection
      
      The combustion and chemistry model selection has been simplified so
      that the user does not have to specify the form of the thermodynamics.
      
      Examples of new combustion and chemistry entries are as follows:
      
          In constant/combustionProperties:
      
              combustionModel PaSR;
      
              combustionModel FSD;
      
          In constant/chemistryProperties:
      
              chemistryType
              {
                  solver          ode;
                  method          TDAC;
              }
      
      All the angle bracket parts of the model names (e.g.,
      <psiThermoCombustion,gasHThermoPhysics>) have been removed as well as
      the chemistryThermo entry.
      
      The changes are mostly backward compatible. Only support for the
      angle bracket form of chemistry solver names has been removed. Warnings
      will print if some of the old entries are used, as the parts relating to
      thermodynamics are now ignored.
      
      ENH: combustionModel, chemistryModel: Simplified model selection
      
      Updated all tutorials to the new format
      
      STYLE: combustionModel: Namespace changes
      
      Wrapped combustion model make macros in the Foam namespace and removed
      combustion model namespace from the base classes. This fixes a namespace
      specialisation bug in gcc 4.8. It is also somewhat less verbose in the
      solvers.
      
      This resolves bug report https://bugs.openfoam.org/view.php?id=2787
      
      ENH: combustionModels: Default to the "none" model
      
      When the constant/combustionProperties dictionary is missing, the solver
      will now default to the "none" model. This is consistent with how
      radiation models are selected.
      22aae281
  32. 29 Aug, 2017 1 commit
  33. 01 Dec, 2017 1 commit
  34. 04 Jul, 2017 1 commit
  35. 22 Jun, 2017 1 commit
  36. 21 Jun, 2017 1 commit
  37. 24 May, 2017 1 commit