Skip to content
Snippets Groups Projects
  1. May 02, 2018
  2. Apr 30, 2018
  3. Mar 07, 2018
  4. Mar 05, 2018
    • Mark OLESEN's avatar
      STYLE: use direct iteration for HashSet · 4fe8ed82
      Mark OLESEN authored
      - The iterator for a HashSet dereferences directly to its key.
      
      - Eg,
      
            for (const label patchi : patchSet)
            {
                ...
            }
        vs.
            forAllConstIter(labelHashSet, patchSet, iter)
            {
                const label patchi = iter.key();
                ...
            }
      4fe8ed82
  5. Apr 30, 2018
  6. Apr 27, 2018
    • Mark OLESEN's avatar
      ENH: revert regionSplit to older algorithm (issue #805) · ed272274
      Mark OLESEN authored
      - the algorithm was last used in OpenFOAM-2.4, after which it was
        replaced with a FaceCellWave version.
      
        Whereas the original (2.4.x) version exhibited performance
        degradation on very large meshes (with explicit constraints), the
        FaceCellWave version exhibited performance issues with large numbers
        of blocked faces.
      
        With large numbers of blocked faces, the FaceCellWave regionSplit
        could take between 10 to 100 times longer due to the slow
        propagation speed through blocked faces.
      
        The 2.4 regionSplit has been revamped to avoid local memory
        allocations, which appears to have been the source of the original
        performance issues on large meshes.
      
        For additional performance, intermediate renumbering is also avoided
        during the consolidation of regions over processor domains.
      ed272274
    • 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
  7. Apr 26, 2018
  8. Apr 27, 2018
    • Mark OLESEN's avatar
      STYLE: remove old/dead decompositionMethod::calcCellCells code · 4dcd052f
      Mark OLESEN authored
      - alternative calcCellCells that handled explicitConnections was
        deactivated (2014 or earlier) and finally removed APR-2018.
      4dcd052f
    • Mark OLESEN's avatar
      ENH: ListOp::inplaceMapValue using a Map<label> for the mapping. · 10b69fa2
      Mark OLESEN authored
      For example, with some HashTable or Map container of models
      
          { model0 => 1, model1 => 4, model2 => 5, model3 => 12, model4 => 15, }
      
      specify the remapping
      
          Map<label> mapper({{1, 3}, {2, 6}, {3, 12}, {5, 8}});
      
      inplaceMapValue(mapper, models) then yields
      
          { model0 => 3, model1 => 4, model2 => 8, model3 => 12, model4 => 15, }
      
      --
      
      ENH: extend bitSet::count() to optionally count unset bits instead.
      
      --
      
      ENH: BitOps compatibility methods for boolList.
      
      - These ease coding that uses a boolList instead of bitSet and use
        short-circuit logic when possible.
      
        Eg, when 'bitset' and 'bools' contain the same information
      
            bitset.count()  <->  BitOps::count(bools)
            bitset.all()    <->  BitOps::all(bools)
            bitset.any()    <->  BitOps::any(bools)
            bitset.none()   <->  BitOps::none(bools)
      
        These methods can then be used directly in parameters or in logic.
        Eg,
      
            returnReduce(bitset.any(), orOp<bool>());
            returnReduce(BitOps::any(bools), orOp<bool>());
      
            if (BitOps::any(bools)) ...
      10b69fa2
    • Mark OLESEN's avatar
      c0766ce8
  9. Apr 26, 2018
  10. Apr 25, 2018
  11. Apr 26, 2018
  12. Apr 25, 2018
  13. Apr 24, 2018
    • Mark OLESEN's avatar
      CONFIG: adjust make scripts for darwin · 76cb38fb
      Mark OLESEN authored
      - handling of dead links (find -L -delete unsupported)
      
      - remove ignore case flag on 's/../../i' used in have_scotch script.
        It is unneeded and not tolerated by Darwin's sed.
      
      - avoid embedded comments in EXE_INC (Make/options files), which do
        not work well with the OSX LLVM cpp.
        It strips out the comments but also removes the continuation char.
      
      STYLE: adjust notes about paraview library locations
      76cb38fb
    • Mark OLESEN's avatar
      COMP: fix Darwin size ambiguities · 0dfda5f7
      Mark OLESEN authored
      - size ambiguity for Foam::min(string::size_type, label)
      
      - stream operators for int16/uint16 which are needed for mode_t (Darwin)
      0dfda5f7
  14. Apr 25, 2018
  15. Apr 23, 2018
  16. Apr 24, 2018
    • Mark OLESEN's avatar
      CONFIG: remove WM_LINK_LANGUAGE env variable (always c++) · 2768500d
      Mark OLESEN authored
      - was somewhat redundant in wmake/rules/General/general anyhow
      2768500d
    • 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
    • Mark OLESEN's avatar
      672f0574
    • Mark OLESEN's avatar
      COMP: sinclude platform-specific CGAL rules · 29c020f5
      Mark OLESEN authored
      - permits platform-specific override of the general CGAL rules
      29c020f5
    • Mark OLESEN's avatar
      ENH: error handling for Ragel STL parsing · 5af5bfa1
      Mark OLESEN authored
      - also simplify parsing by accepting any case on keywords.
        This implies that something like "sOlId", "SoLiD" will also
        be accepted. Although nobody should really count on this rather
        generous behaviour, it does simplfy the state machine even further.
      5af5bfa1
  17. Apr 23, 2018
    • Mark OLESEN's avatar
      ENH: improve memory allocations for explicit connections (issue #805) · 591a1a0c
      Mark OLESEN authored
      STYLE: change access methods names in mesh wave algorithms
      
      - nUnvisitedCells(), nUnvisitedFaces() etc instead of
        getUnsetCells(), getUnsetFaces()
      
      - simplify some coding with range-for
      591a1a0c
    • Mark OLESEN's avatar
      ENH: change findCell mode in meshRefinement (issue #805) · 857eed5b
      Mark OLESEN authored
      - in 2.4.x the general default for polyMesh::findCell was FACE_DIAG_TRIS,
        but this was changed to CELL_TETS for better handling of concave
        cells.
      
      - in snappyHexMesh meshRefinement, findCell is used to define
        locations in mesh and cells for closer refinement. Using CELL_TETS
        causes an octree rebuild when the mesh has changed and this adds
        considerable overhead. For this operation, the faster FACE_DIAG_TRIS
        mode can be used instead.
      857eed5b
  18. Apr 20, 2018