Skip to content
Snippets Groups Projects
  1. May 23, 2024
  2. May 22, 2024
  3. May 20, 2024
  4. May 18, 2024
  5. May 08, 2024
  6. May 07, 2024
    • Andrew Heather's avatar
      Merge branch 'update-Pstream-large-sends' into 'develop' · 4fb85d1f
      Andrew Heather authored
      ENH: improve handling of multi-pass send/recv
      
      See merge request Development/openfoam!680
      4fb85d1f
    • 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
    • Mark OLESEN's avatar
      STYLE: use Perr instead of Pout for UPstream::debug and warnComm · e15d696a
      Mark OLESEN authored
      - avoids polluting standard output for utilities such as
        foamDictionary etc
      e15d696a
  7. May 06, 2024
    • Mark OLESEN's avatar
      ENH: add single-time handling to timeSelector · dbfd1f90
      Mark OLESEN authored
      - the timeSelector is often used to select single or multiple times
        (eg, for post-processing). However, there are a few applications
        where only a *single* time should be selected and set.
      
        These are now covered by this type of use:
      
            timeSelector::addOptions_singleTime();  // Single-time options
            ...
            // Allow override of time from specified time options, or no-op
            timeSelector::setTimeIfPresent(runTime, args);
      
         In some cases, if can be desirable to force starting from the
         initial Time=0 when no time options have been specified:
      
            // Set time from specified time options, or force start from Time=0
            timeSelector::setTimeIfPresent(runTime, args, true);
      
         These changes make a number of includes redundant:
      
           * addTimeOptions.H
           * checkConstantOption.H
           * checkTimeOption.H
           * checkTimeOptions.H
           * checkTimeOptionsNoConstant.H
      
      ENH: add time handling to setFields, setAlphaField (#3143)
      
          Co-authored-...
      dbfd1f90
  8. May 02, 2024
  9. Apr 29, 2024
    • Mattijs Janssens's avatar
      Merge branch 'update-Pstream-message-count' into 'develop' · 7dc9ccdc
      Mattijs Janssens authored
      Use MPI Get_elements_x() for message sizes
      
      See merge request !681
      7dc9ccdc
    • Mark OLESEN's avatar
      ENH: use MPI Get_elements_x() for message sizes (#3152) · b2bbc154
      Mark OLESEN authored
      - ensures more accurate values for message sizes than using
        MPI Get_count(), which trucates at INT_MAX
      
      - add more/better error messages when trying to receive messages
        that exceed INT_MAX or the char buffer lengths
      b2bbc154
    • Mark OLESEN's avatar
      STYLE: use PstreamBuffers default construct · 7b38b148
      Mark OLESEN authored
      - PstreamBuffers are nonBlocking by default, so no need to re-specify
      7b38b148
    • 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
  10. Apr 25, 2024
  11. Apr 24, 2024
    • mattijs's avatar
      690d02f9
    • Mattijs Janssens's avatar
      Merge branch 'update-fvsPatchFields-mappers' into 'develop' · 31b74cd6
      Mattijs Janssens authored
      Fix fvsPatchFields reading/writing the "value" entry
      
      See merge request Development/openfoam!679
      31b74cd6
    • Mark OLESEN's avatar
      ENH: improve code consistency for {cell,face,point}Mapper (#3147) · f04ccef5
      Mark OLESEN authored
      - robuster and more reliable determination of inserted objects
        (previous code could produce false positives).
      
        Now also determine the number of inserted objects within the
        constructor (instead of simply storing a bool). This allows reuse
        in the address calculations to reduce overheads there.
      
      BUG: dodgy short-circuit logic for insertedObjectLabels()
      
      - as a quick short-circuit it previously created as demand-driven
        pointer with a zero elements. However, this meant that if this code
        was called first (before any other addressing), subsequent calls to
        the addressing would fail.
      
      BUG: bad logic and lookup for faAreaMapper (#3147)
      
      - was using labelHashSet but returning a bool and set using the
        addressing using the unfiltered objects!
        This is a latent bug since interpolated/inserted faces not
        currently supported anyhow.
      
      ENH: use std::unique_ptr for demand-driven data
      f04ccef5
    • Mark OLESEN's avatar
      BUG: fvsPatchFields reading/writing the "value" entry (fixes #3144) · 8a8b5db9
      Mark OLESEN authored
      - manual revert for 44d0fbd5.
      
        Unless required for post-processing the "value" entry should not
        written if it is not mandatory for reading.
      
        This is especially crucial with an 'empty' patch field where the
        field (size 0) has a different size from the patch.
      
      - the changes made align fvsPatchField behaviour with fvPatchField
      8a8b5db9
  12. Apr 23, 2024
  13. Apr 22, 2024