Skip to content
Snippets Groups Projects
  1. Dec 24, 2024
  2. Dec 16, 2024
  3. Dec 12, 2024
  4. Nov 21, 2024
  5. Oct 24, 2024
  6. Sep 18, 2024
  7. Jun 24, 2024
  8. Jun 20, 2024
  9. Jun 13, 2024
  10. Jun 12, 2024
  11. Jun 11, 2024
  12. May 07, 2024
    • Mark OLESEN's avatar
      ENH: improve handling of multi-pass send/recv (#3152) · d9c73ae4
      Mark OLESEN authored
      - the maxCommsSize variable is used to 'chunk' large data transfers
        (eg, with PstreamBuffers) into a multi-pass send/recv sequence.
      
        The send/recv windows for chunk-wise transfers:
      
            iter    data window
            ----    -----------
            0       [0, 1*chunk]
            1       [1*chunk, 2*chunk]
            2       [2*chunk, 3*chunk]
            ...
      
        Since we mostly send/recv in bytes, the current internal limit
        for MPI counts (INT_MAX) can be hit rather quickly.
      
        The chunking limit should thus also be INT_MAX, but since it is
        rather tedious to specify such large numbers, can instead use
      
            maxCommsSize = -1
      
        to specify (INT_MAX-1) as the limit.
        The default value of maxCommsSize = 0 (ie, no chunking).
      
      Note
      ~~~~
        In previous versions, the number of chunks was determined by the
        sender sizes. This required an additional MPI_Allreduce to establish
        an overall consistent number of chunks to walk. This additional
        overhead each time meant that max...
      d9c73ae4
  13. Apr 29, 2024
    • Mark OLESEN's avatar
      STYLE: communication name "buffered" instead of "blocking" · 7f355ba3
      Mark OLESEN authored
      - "buffered" corresponds to MPI_Bsend (buffered send),
        whereas the old name "blocking" is misleading since the
        regular MPI_Send also blocks until completion
        (ie, buffer can be reused).
      
      ENH: IPstream::read() returns std::streamsize instead of label (#3152)
      
      - previously returned a 'label' but std::streamsize is consistent with
        the input parameter and will help with later adjustments.
      
      - use <label> instead of <int> for internal accounting of the message
        size, for consistency with the underyling List<char> buffers used.
      
      - improve handling for corner case of IPstream receive with
        non-blocking, although this combination is not used anywhere
      7f355ba3
  14. Mar 27, 2024
  15. Mar 10, 2024
    • Mark OLESEN's avatar
      ENH: refine renumberMesh and renumberMethod (addenda to !669) · 0c84e505
      Mark OLESEN authored
      - provide no_topology() characteristic to avoid triggering potentially
        expensive mesh connectivity calculations when they are not required.
      
      - remove/deprecate unused pointField references from the renumber
        methods. These appear to have crept in from outer similarities
        with decompositionMethod, but have no meaning for renumbering.
      
      - remove/deprecate various unused aggregation renumberings since these
        have been previously replaced by pre-calling calcCellCells, or
        using bandCompression directly.
      
      - make regionFaceOrder for block-wise renumbering optional and
        treat as experimental (ie, default is now disabled).
      
        The original idea was to sort the intra-region and inter-region faces
        separately. However, this will mostly lead to non-upper triangular
        ordering between regions, which checkMesh and others don't really like.
      
      ENH: add timing information for various renumberMesh stages
      
      ENH: add reset of clockTime and cpuTime increment
      
      ...
      0c84e505
  16. Mar 06, 2024
    • Mark OLESEN's avatar
      ENH: adjust renumbering methods, extend renumberMesh options · 61aaacd0
      Mark OLESEN authored
      - renumberMesh now has -dry-run, -write-maps, -no-fields,
        -renumber-method, -renumber-coeffs options.
      
        * Use -dry-run with -write-maps to visualize the before/after
          effects of renumbering (creates a VTK file).
      
        * -no-fields to renumber the mesh only.
          This is useful and faster when the input fields are uniform
          and the -overwrite option is specified.
      
        * -renumber-method allows a quick means of specifying a different
          default renumber method (instead of Cuthill-McKee).
      
          The -renumber-coeffs option allows passing of dictionary content
          for the method.
      
          Examples,
      
             // Different ways to specify reverse Cuthill-McKee
      
             *  -renumber-method RCM
             *  -renumber-coeffs 'reverse true;'
             *  -renumber-method CuthillMcKee
             *  -renumber-coeffs 'reverse true;'
             *  -renumber-coeffs 'method CuthillMcKee; reverse true;'
      
             // Other (without dictionary coefficients)
             *  renumberMesh -renu...
      61aaacd0
  17. Feb 28, 2024
  18. Feb 22, 2024
  19. Feb 07, 2024
  20. Feb 06, 2024
  21. Jan 23, 2024
  22. Jan 09, 2024
  23. Dec 21, 2023
  24. Dec 20, 2023
  25. Dec 15, 2023
    • Mark OLESEN's avatar
      CONFIG: support explicit selection of 'ld' linker · 79993bba
      Mark OLESEN authored
      - for clang-based compilers the default linker may be lld or simply ld.
        Support '+link-ld' to explicitly select use of the ld linker.
      
      - consolidate linker rules into single files
      
      STYLE: adjust SPDX Identifier
      79993bba
  26. Dec 11, 2023
  27. Nov 24, 2023
  28. Nov 20, 2023
    • Mark OLESEN's avatar
      ENH: extend mpiAllGather to include integer and float types · 88182011
      Mark OLESEN authored
      - was previously limited to 'char' whereas gatherv/scatterv
        already supported various integer and float types
      
      STYLE: rebundle allToAll declarations with macros
      
      ENH: provide a version of allToAllConsensus returning the Map
      
      - simplifies use and avoids ambiguities in the send/recv parameters
      
      - the Map version will now also transmit zero value data if they exist
        in the Map. Unlike the List version, zero values are not necessary to
        signal connectivity with a Map.
      
      COMP: forwarding template parameters for NBX routines
      
      ENH: consolidate PstreamBuffers size exchange options
      
      - had a variety of nearly identical backends for all-to-all,
        gather/scatter. Now combined internally with a dispatch enumeration
        which provides better control over which size exchange algorithm
        is used.
      
      DEFEATURE: remove experimental full-NBX PstreamBuffers variant
      
      - no advantages seen compared to the hybrid NBX/PEX approach.
        Removal reduces some code cruft.
      
      DEFEATURE: remove experimental "double non-blocking" NBX version
      
      - the idea was to avoid blocking receives for very large data transfers,
        but that is usually better accomplished with a hybrid NBX/PEX approach
        like PstreamBuffers allows
      88182011
  29. Nov 16, 2023
  30. Oct 20, 2023
  31. Oct 17, 2023
    • Mark OLESEN's avatar
      ENH: zone improvements · 6aa8b827
      Mark OLESEN authored
      - retain group information when copying zones
      - support construct empty (add details later)
      - improve consistency for zone and boundaryMesh construction
      
      - support front/back/both selection for faceZoneToCell
      
      STYLE: prefer faceZone patch() method instead of operator()
      
      STYLE: use std::unique_ptr instead of manual pointer management
      
      - for zones and core patch types.
        Easier data management, allows default destructors (for example)
      6aa8b827
  32. Sep 14, 2023
  33. Aug 21, 2023
    • Mark OLESEN's avatar
      CONFIG: enable use of stricter deprecation warnings · 77879685
      Mark OLESEN authored
      - selected with '+strict' in WM_COMPILE_CONTROL or 'wmake -strict', it
        enables the FOAM_DEPRECATED_STRICT() macro, which can be used to
        mark methods that are implicitly deprecated, but are not yet marked
        as full deprecated (eg, API modification is too recent, generates
        too many warnings).  Can be considered a developer option.
      77879685
  34. Aug 18, 2023
    • Mark OLESEN's avatar
      CONFIG: enable xcrun with cc/c++ based on WM_COMPILE_CONTROL (#2965) · 224c3199
      Mark OLESEN authored
      - adding in +xcrun into WM_COMPILE_CONTROL changes the compiler
        settings as follows (for MacOS)
      
            cc         := xcrun cc
            CC         := xcrun c++ -std=c++14
      224c3199
    • Alexey Matveichev's avatar
      COMP: add rpath information to MacOS compilation rules (#2948) · e4f2efec
      Alexey Matveichev authored and Mark OLESEN's avatar Mark OLESEN committed
      - since the Apple SIP (System Integrity Protection) clears environment
        variables such as DYLD_LIBRARY_PATH, a number of workarounds have
        been used to provide shadow values. However, for a more robust
        installation using -rpath at compilation time appears to be the
        better solution.
      
        In addition to the usual -rpath specification with absolute file
        paths, MacOS supports (@loader_path, @executable_path) as well.
        Now default to link with rpath information for MacOS, which can be
        disabled by adding `~rpath` in WM_COMPILE_CONTROL
      
        Explicit library paths handled:
          - FOAM_FOAM_EXT_LIBBIN, FOAM_EXT_LIBBIN/FOAM_MPI
      
        The executable rpaths are handled assuming a structure of
           install-path/bin
           install-path/lib/$(FOAM_MPI)
           install-path/lib
      
        Absolute compile-time paths for FOAM_USER_LIBBIN, FOAM_SITE_LIBBIN
        and FOAM_LIBBIN are not handled since these are either too fragile
        (FOAM_USER_LIBBIN and FOAM_SITE_LIBBIN values) or covered via
        @loader_path anyhow (FOAM_LIBBIN).
      
        Since the value of FOAM_MPI is a compile-time value, this rpath
        treatment makes the installation less suitable for runtime changes
        to the MPI vendor/version.
      
        Note: no rpath added for c-only compilations since there are
        currently no c-only libraries or executables with dynamic loading
      e4f2efec