1. 07 Mar, 2018 1 commit
    • Mark OLESEN's avatar
      ENH: new bitSet class and improved PackedList class (closes #751) · bac943e6
      Mark OLESEN authored
      - The bitSet class replaces the old PackedBoolList class.
        The redesign provides better block-wise access and reduced method
        calls. This helps both in cases where the bitSet may be relatively
        sparse, and in cases where advantage of contiguous operations can be
        made. This makes it easier to work with a bitSet as top-level object.
      
        In addition to the previously available count() method to determine
        if a bitSet is being used, now have simpler queries:
      
          - all()  - true if all bits in the addressable range are empty
          - any()  - true if any bits are set at all.
          - none() - true if no bits are set.
      
        These are faster than count() and allow early termination.
      
        The new test() method tests the value of a single bit position and
        returns a bool without any ambiguity caused by the return type
        (like the get() method), nor the const/non-const access (like
        operator[] has). The name corresponds to what std::bitset uses.
      
        The new find_first(), find_last(), find_next() methods provide a faster
        means of searching for bits that are set.
      
        This can be especially useful when using a bitSet to control an
        conditional:
      
        OLD (with macro):
      
            forAll(selected, celli)
            {
                if (selected[celli])
                {
                    sumVol += mesh_.cellVolumes()[celli];
                }
            }
      
        NEW (with const_iterator):
      
            for (const label celli : selected)
            {
                sumVol += mesh_.cellVolumes()[celli];
            }
      
            or manually
      
            for
            (
                label celli = selected.find_first();
                celli != -1;
                celli = selected.find_next()
            )
            {
                sumVol += mesh_.cellVolumes()[celli];
            }
      
      - When marking up contiguous parts of a bitset, an interval can be
        represented more efficiently as a labelRange of start/size.
        For example,
      
        OLD:
      
            if (isA<processorPolyPatch>(pp))
            {
                forAll(pp, i)
                {
                    ignoreFaces.set(i);
                }
            }
      
        NEW:
      
            if (isA<processorPolyPatch>(pp))
            {
                ignoreFaces.set(pp.range());
            }
      bac943e6
  2. 12 Apr, 2018 1 commit
    • Mark OLESEN's avatar
      STYLE: reorder/refactor stream format options · 4cf932b2
      Mark OLESEN authored
      - IOstreamOption class to encapsulate format, compression, version.
        This is ordered to avoid internal padding in the structure, which
        reduces several bytes of memory overhead for stream objects
        and other things using this combination of data.
      
        Byte-sizes:
            old  IOstream:48  PstreamBuffers:88  Time:928
            new  IOstream:24  PstreamBuffers:72  Time:904
      
      ====
      
      STYLE: remove support for deprecated uncompressed/compressed selectors
      
      In older versions, the system/controlDict used these types of
      specifications:
      
          writeCompression uncompressed;
          writeCompression compressed;
      
      As of DEC-2009, these were deprecated in favour of using normal switch
      names:
      
          writeCompression true;
          writeCompression false;
          writeCompression on;
          writeCompression off;
      
      Now removed these deprecated names and treat like any other unknown
      input and issue a warning. Eg,
      
         Unknown compression specifier 'compressed', assuming no compression
      
      ====
      
      STYLE: provide Enum of stream format names (ascii, binary)
      
      ====
      
      COMP: fixed incorrect IFstream construct in FIREMeshReader
      
      - spurious bool argument (presumably meant as uncompressed) was being
        implicitly converted to a versionNumber. Now caught by making
        IOstreamOption::versionNumber constructor explicit.
      
      - bad version specifier in changeDictionary
      4cf932b2
  3. 26 Mar, 2018 1 commit
    • Mark OLESEN's avatar
      STYLE: consistent lookupOrDefault template parameters · 36719bf5
      Mark OLESEN authored
      - in many cases can just use lookupOrDefault("key", bool) instead of
        lookupOrDefault<bool> or lookupOrDefault<Switch> since reading a
        bool from an Istream uses the Switch(Istream&) anyhow
      
      STYLE: relocated Switch string names into file-local scope
      36719bf5
  4. 13 Mar, 2018 1 commit
    • Mark OLESEN's avatar
      ENH: code reduction in PackedList, PackedBoolList (issue #751) · 5d1fb235
      Mark OLESEN authored
      - eliminate iterators from PackedList since they were unused, had
        lower performance than direct access and added unneeded complexity.
      
      - eliminate auto-vivify for the PackedList '[] operator.
        The set() method provides any required auto-vivification and
        removing this ability from the '[]' operator allows for a lower
        when accessing the values. Replaced the previous cascade of iterators
        with simpler reference class.
      
      PackedBoolList:
      
      - (temporarily) eliminate logic and addition operators since
        these contained partially unclear semantics.
      
      - the new test() method tests the value of a single bit position and
        returns a bool without any ambiguity caused by the return type
        (like the get() method), nor the const/non-const access (like
        operator[] has). The name corresponds to what std::bitset uses.
      
      - more consistent use of PackedBoolList test(), set(), unset() methods
        for fewer operation and clearer code. Eg,
      
            if (list.test(index)) ...    |  if (list[index]) ...
            if (!list.test(index)) ...   |  if (list[index] == 0u) ...
            list.set(index);             |  list[index] = 1u;
            list.unset(index);           |  list[index] = 0u;
      
      - deleted the operator=(const labelUList&) and replaced with a setMany()
        method for more clarity about the intended operation and to avoid any
        potential inadvertent behaviour.
      5d1fb235
  5. 05 Mar, 2018 1 commit
  6. 26 Feb, 2018 1 commit
    • 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
  7. 21 Feb, 2018 1 commit
    • Mark OLESEN's avatar
      ENH: improve consistency of ListOps and stringListOps · f9599279
      Mark OLESEN authored
      - subsetList, inplaceSubsetList with optional inverted logic.
      
      - use moveable elements where possible.
      
      - allow optional starting offset for the identity global function.
        Eg,  'identity(10, start)' vs 'identity(10) + start'
      f9599279
  8. 05 Nov, 2017 1 commit
  9. 19 Nov, 2017 1 commit
  10. 24 Oct, 2017 1 commit
  11. 03 Jul, 2017 1 commit
  12. 29 May, 2017 1 commit
    • Mark OLESEN's avatar
      ENH: cleanup of NamedEnum · fb497164
      Mark OLESEN authored
      - Remove the unused enums() method since it delivers wholly unreliable
        results. It is not guaranteed to cover the full enumeration range,
        but only the listed names.
      
      - Remove the unused strings() method.
        Duplicated functionality of the words(), but was never used.
      
      - Change access of words() method from static to object.
        Better code isolation. Permits the constructor to take over
        as the single point of failure for bad input.
      
      - Add values() method
      
      - do not expose internal (HashTable) lookup since it makes it more
        difficult to enforce constness and the implementation detail should
        not be exposed. However leave toc() and sortedToc() for the interface.
      
      STYLE: relocated NamedEnum under primitives (was containers)
      
      - internal typedef as 'value_type' for some consistency with STL conventions
      fb497164
  13. 28 Nov, 2016 1 commit
  14. 05 Aug, 2016 1 commit
  15. 15 May, 2016 1 commit
    • Henry Weller's avatar
      Patches contributed by Mattijs Janssens: · ce0cd351
      Henry Weller authored
      splitMeshRegions: handle flipping of faces for surface fields
      
      subsetMesh: subset dimensionedFields
      
      decomposePar: use run-time selection of decomposition constraints. Used to
          keep cells on particular processors. See the decomposeParDict in
      
      $FOAM_UTILITIES/parallel/decomposePar:
        - preserveBaffles: keep baffle faces on same processor
        - preserveFaceZones: keep faceZones owner and neighbour on same processor
        - preservePatches: keep owner and neighbour on same processor. Note: not
          suitable for cyclicAMI since these are not coupled on the patch level
        - singleProcessorFaceSets: keep complete faceSet on a single processor
        - refinementHistory: keep cells originating from a single cell on the
          same processor.
      
      decomposePar: clean up decomposition of refinement data from snappyHexMesh
      
      reconstructPar: reconstruct refinement data (refineHexMesh, snappyHexMesh)
      
      reconstructParMesh: reconstruct refinement data (refineHexMesh, snappyHexMesh)
      
      redistributePar:
        - corrected mapping surfaceFields
        - adding processor patches in order consistent with decomposePar
      
      argList: check that slaves are running same version as master
      
      fvMeshSubset: move to dynamicMesh library
      
      fvMeshDistribute:
        - support for mapping dimensionedFields
        - corrected mapping of surfaceFields
      
      parallel routines: allow parallel running on single processor
      
      Field: support for
        - distributed mapping
        - mapping with flipping
      
      mapDistribute: support for flipping
      
      AMIInterpolation: avoid constructing localPoints
      ce0cd351
  16. 25 Apr, 2016 2 commits
  17. 16 Apr, 2016 1 commit
  18. 22 Mar, 2016 1 commit
  19. 14 Mar, 2016 1 commit
  20. 26 Feb, 2016 1 commit
  21. 20 Jan, 2016 1 commit
  22. 10 Jan, 2016 1 commit
  23. 19 Dec, 2015 1 commit
  24. 17 Nov, 2015 2 commits
    • mattijs's avatar
      ENH: parallel: overhaul of parallel mapping · 916dcb86
      mattijs authored
      - redistributePar to have almost (complete) functionality of decomposePar+reconstructPar
      - low-level distributed Field mapping
      - support for mapping surfaceFields (including flipping faces)
      - support for decomposing/reconstructing refinement data
      916dcb86
    • mattijs's avatar
      ENH: parallel: overhaul of parallel mapping · 436902f5
      mattijs authored
      - redistributePar to have almost (complete) functionality of decomposePar+reconstructPar
      - low-level distributed Field mapping
      - support for mapping surfaceFields (including flipping faces)
      - support for decomposing/reconstructing refinement data
      436902f5
  25. 11 Nov, 2015 1 commit
  26. 25 Feb, 2015 1 commit
  27. 30 Sep, 2014 1 commit
  28. 20 Mar, 2014 1 commit
  29. 15 Jan, 2014 1 commit
  30. 12 Dec, 2013 1 commit
  31. 21 Nov, 2013 2 commits
  32. 13 Nov, 2013 1 commit
  33. 12 Nov, 2013 1 commit
  34. 13 Aug, 2013 1 commit
  35. 12 Apr, 2013 1 commit
  36. 09 Jan, 2013 1 commit
  37. 05 Sep, 2012 1 commit