Skip to content
Snippets Groups Projects
  1. Oct 29, 2021
    • Mark OLESEN's avatar
      CONFIG: increment API level to 2108 · 08e66a64
      Mark OLESEN authored
      - reflects updates for List, globalIndex handling etc
      08e66a64
    • Mark OLESEN's avatar
    • Mark OLESEN's avatar
      ENH: add fallback behaviour for distanceSurface proximity regions (#1631) · 0c891547
      Mark OLESEN authored
      - using the proximityRegions filter when there is no enclosing surface
        to segregate domains causes a surface of zero-faces to be created.
      
        In most cases, this means that a simpler proximityFaces filter would
        have been more appropriate. To increase overall robustness, revert
        to the simpler proximityFaces filter logic when the proximityRegions
        would otherwise result in zero faces (globally seen).
      0c891547
    • Mark OLESEN's avatar
      ENH: reduces buffer use / blocking in Ensight output · 048166c3
      Mark OLESEN authored
      - reuse single component buffer within an Ensight output method.
        Use direct UPstream read/write to avoid Pstream char buffers
      
      - replace blocking transfer with scheduled for Ensight cloud output
      048166c3
    • Mark OLESEN's avatar
      ENH: replace PstreamBuffers with scheduled read/writes for VTK output · 33ff3201
      Mark OLESEN authored
      - use the new updates to globalIndex to manage the bookkeeping
      33ff3201
    • Mark OLESEN's avatar
      ENH: additional MPI gather/scatter routines, globalIndex gather methods · b6539cd0
      Mark OLESEN authored
      - UPstream::mpiGather (MPI_Gather)   - used by Pstream::listGatherValues
      - UPstream::mpiScatter (MPI_Scatter) - used by Pstream::listScatterValues
      
        These are much simpler forms for gather/scatter of fixed-sized
        contiguous types data types (eg, primitives, simple pairs etc).
      
        In the gather form, creates a list of gathered values on the master
        process. The subranks have a list size of zero.
      
        Similarly, scatter will distribute a list of values to single values
        on each process.
      
        Instead of
      
            labelList sendSizes(Pstream::nProcs());
            sendSizes[Pstream::myProcNo()] = sendData.size();
            Pstream::gatherList(sendSizes);
      
        Can write
      
            const labelList sendSizes
            (
                UPstream::listGatherValues<label>(sendData.size())
            );
      
        // Less code, lower overhead and list can be const.
      
        For scattering an individual value only,
        instead of
      
            labelList someValues;
            if (Pstream::master()) someValues = ...;
      
            Pstream::gatherList(sendSizes);
            const label localValue
            (
                someValues[Pstream::myProcNo()]
            );
      
        Can write
      
            labelList someValues;
            if (Pstream::master()) someValues = ...;
      
            Pstream::gatherList(sendSizes);
            const label localValue
            (
                UPstream::listScatterValues<label>(someValues)
            );
      
         Can of course also mix listGatherValues to assemble a list on master
         and use Pstream::scatterList to distribute.
      
      ENH: adjusted globalIndex gather methods
      
      - added mpiGather() method [contiguous data only] using MPI_Gatherv
      
      - respect localSize if gathering master data to ensure that a
        request for 0 master elements is properly handled.
      b6539cd0
    • Mark OLESEN's avatar
      ENH: cleanup Pstream internal names, cull unneeded parameters · 1f20747b
      Mark OLESEN authored
      - Pstreams can be ascii/binary but are always currentVersion
      
      - rename UIPstream externalBuf_ to 'recvBuf_' for similar naming as
        PstreamBuffers and symmetry with UOPstream::sendBuf_
      
      - specific enum size for commsType (for more compact structures in the
        future). Default construct lists items.
      
      BUG: possible incidental indexing in UIPstream::read(char*, std::streamsize)
      
      - raw reading had been split into beginRawRead(), readRaw().
        However, this could change the current input position (due to word
        boundary alignment), even if the expected count is zero. Make a
        no-op for count == 0. This mirrors UOPstream::write behaviour.
      1f20747b
    • Mark OLESEN's avatar
      ENH: improve flexibilty of globalIndex · 609fb366
      Mark OLESEN authored
      - construct or reset from a list of local sizes. It is generally
        easier and safer to assemble sizes and let globalIndex determine the
        corresponding offsets, when working with raw values.
      
      - Can use reset() from sizes or fine-tune offsets with setLocalSize()
        instead of using the potentially more fragile non-const access to
        the offsets.
      
      - add globalIndex const_iterator to iterate across the access ranges.
        This is makes it simpler to use with the List slice() method to
        access or operate on a sub-section of list.
      
        For example,
            scalarField allValues = ...;
            globalIndex procAccess = ...;
      
            for (const labelRange& range : procAccess)
            {
                someOutput(allValues.slice(range));
            }
      609fb366
    • Mark OLESEN's avatar
      ENH: additional 'nocopy' methods for List resize/reserve methods · b8a4b7e8
      Mark OLESEN authored
      - the size of a List often requires adjustment prior to an operation,
        but old values (if any) are not of interest and will be overwritten.
      
        In these cases can use the _nocopy versions to avoid additional memory
        overhead of the intermediate list and the copy/move overhead of
        retaining the old values (that we will subsequently discard anyhow).
      
        No equivalent for PtrList/UPtrList - this would be too fragile.
      
      - add swap DynamicField with DynamicList
      
      BUG: fixed Dynamic{Field,List} setCapacity corner case
      
      - for the case when the newly requested capacity coincides with the
        current addressable size, the resize of the underlying list would have
        been bypassed - ie, the real capacity was not actually changed.
      
      - remove (unused) PtrDynList setCapacity method as too fragile
      b8a4b7e8
    • Mark OLESEN's avatar
      ENH: return UList range slice as a SubList · e2861cc2
      Mark OLESEN authored
      - previously returned the range slice as a UList,
        but this prevents convenient assignment.
        Apply similar handling for Field/SubField
      
        Allows the following
      
           labelRange range(...);
           fullList.slice(range) = identity(range.size());
      
        and
      
           fullList.slice(range) = UIndirectList<T>(other, addr);
      
      ENH: create SubList from full FixedList (simplifies interface)
      
      - allow default constructed SubList. Use shallowCopy to 'reset' later
      e2861cc2
    • Mark OLESEN's avatar
      ENH: add '_bytes()' versions of List data(), cdata() · 3781f17e
      Mark OLESEN authored
      - simply adds in the reinterpret_cast, which simplifies coding for
        binary data movement.
        Name complements the size_bytes() method for contiguous data
      
      STYLE: container IO.C files into main headers for better visibility
      
      STYLE: include CompactListList.H in polyTopoChange
      
      - avoids future mismatches if the CompactListList template signature
        changes
      
      GIT: relocate CompactListList into CompactLists/ directory
      3781f17e
    • Mark OLESEN's avatar
      ENH: additional tests in {cell,face}SetOption · 3d3d2874
      Mark OLESEN authored
      - useSubMesh() - name as per fvMeshSubsetProxy.
        Setter methods take a parameter instead of direct access.
      3d3d2874
    • Mark OLESEN's avatar
      ENH: add static set/get dimensionSet::checking() method · f5058bca
      Mark OLESEN authored
       - encapsulates toggling
      
      STYLE: noexcept for some Time methods
      f5058bca
    • Mark OLESEN's avatar
    • Mark OLESEN's avatar
      BUG: face flips lost on foamToVTK faceZone output · 120e4a46
      Mark OLESEN authored
      - previously used an indirect patch to get the sampling locations,
        but this doesn't take account of the face flips. Now use
        the faceZone intrinsic for generating a properly flipped patch
        and provide the sampling locations separately.
      
      STYLE: adjust compatiblity header for surfaceMeshWriter
      120e4a46
    • Mark OLESEN's avatar
      a98d5ebf
    • Mark OLESEN's avatar
      CONFIG: improve flexibility of MPI specification · 435be2e5
      Mark OLESEN authored
      - it is now possible to include the selected mpi version in the
        top-level bashrc or prefs.sh file. For example,
      
            WM_MPLIB=OPENMPI-4.1.1  or  WM_MPLIB=openmpi-4.1.1
      
        after evaluation of the config.sh/mpi, this will define
      
            WM_MPLIB=OPENMPI-4.1.1  and  FOAM_MPI=openmpi-4.1.1
      
        During the wmake, the mpi-rules will first load the MPI 'family'
        rules (OPENMPI in this example) before trying to load
        version-specific rules if they exist.
      
        NOTE: the regular user-defined prefs system is unaffected by this
        change. This means it is still possible to use a file such as
        'prefs.openmpi' to define the preferred version instead or as well.
        However, it does mean inconsistent naming can be specified.
        For example, specify WM_MPLIB=OPENMPI-4.1.1 at the top-level but
        actually have FOAM_MPI=openmpi-4.0.6 in the prefs.openmpi file.
        This will make the value of WM_MPLIB misleading.
      
      CONFIG: foamConfigurePaths support for sys-openmpi major version
      
      CONFIG: cleanup any shadow env variables
      435be2e5
  2. Oct 28, 2021
  3. Oct 22, 2021
  4. Oct 21, 2021
  5. Oct 20, 2021
  6. Oct 19, 2021
  7. Oct 18, 2021
    • mattijs's avatar
      ENH: Added contact resistance to multi-world. See #1535. · 2a2edf5f
      mattijs authored
      - added contact resistance to turbulentTemperatureCoupledBaffleMixed
      - added basic multi-world to turbulentTemperatureRadCoupledMixed
      - added unit-testcase to $FOAM_APP/test/multiWorld
      2a2edf5f
    • Mark OLESEN's avatar
      3e026783
    • Tatsuya Shimizu's avatar
      COMP: added arm64 support for OSX fpe handling (#2240) · 85760cbc
      Tatsuya Shimizu authored and Mark OLESEN's avatar Mark OLESEN committed
      85760cbc
    • Mark OLESEN's avatar
      BUG: Foam::cp inadvertently creates recursive directories (fixes #2235) · fe8c6309
      Mark OLESEN authored
      - noticed by Robin Knowles with `decomposePar -fields -copyZero`
      
        The internals for the Foam:cp method combine the behaviour of
        a regular `cp` and `cp -R` combined.
      
        When source and target are both directories, the old implementation
        created a subdirectory for the contents.
        This normally fine,
      
            ok:  cp "path1/0/" to "path2/1" -> "path2/1/2"
            BUT: cp "path1/0/" to "path2/0" -> "path2/0/0" !!
      
        Now add check for the basenames first.
        If they are identical, we probably meant to copy directory contents
        only, without the additional subdir layer.
      
      BUG: decomposePar -fields -copyZero copies the wrong directory
      
      - was using the current time name (usually latest) instead of copying
        the 0 directory
      
      ENH: accept 0.orig directories as a fallback to copy if the 0 directory
      is missing
      fe8c6309
    • Mark OLESEN's avatar
      CONFIG: accept '-lib' for foamCleanPath · 4a064645
      Mark OLESEN authored
      - simplfies differences for OSX
      4a064645
    • Mark OLESEN's avatar
      CONFIG: improve robustness/flexibility for MPI config handling · 16d48ed0
      Mark OLESEN authored
      - use orte-info to determine prefix/libdir for openmpi.
        This removes a run-time dependency on mpicc, which is actually
        only needed for building with MPI (not running with MPI).
        The corresponding openmpi devel package (deb/rpm) will not
        necessarily be installed on a particular system.
      
      - retain mpicc logic if the new logic using orte-info does not
        deliver an answer. Final fallback to using 'orterun' to
        infer prefix/libdir.
      
      - Additional logic for intel and msmpi to make it easier to
        locate these vendor packages within ThirdParty
        (ie, under ThirdParty/opt/...)
      
      CONFIG: improve robustness
      
      - add check for absolute path when adding PATH/LD_LIBRARY_PATH etc.
      
      - prefix more variables with '_foam*' to prevent accidental overwrite
        of userspace shell variables when sourcing
      16d48ed0
  8. Oct 15, 2021
  9. Oct 14, 2021
  10. Oct 12, 2021
  11. Oct 08, 2021
  12. Oct 07, 2021