Skip to content
Snippets Groups Projects
  1. Dec 22, 2023
    • Sergey Lesnik's avatar
      INT: coherent: enable serial write of volFields · 9e87754c
      Sergey Lesnik authored
      - Tested by writing volFields with the icoFoam's cavity test case
      (boundary file is still needed in polyMesh)
      
      - ASCII field files have some formatting issues (writing is done with
      dictionary::write)
      
      - OFCstream now inherits from OCharStream; rename foam-extend flavored
      member functions to OF equivalents
      
      - New regIOobject virtual member function "writeToStream" allows to
      construct OFCstream within GeometricField
      
      - The heavy data is now given to an OFCstream in the Field class, not UList.
      Doing this makes it simple to ensure that every rank will call
      OFCstream::write for every field.
      9e87754c
  2. Dec 13, 2023
  3. Nov 24, 2023
  4. Nov 22, 2023
    • Sergey Lesnik's avatar
      INT: initial integration of IFCstream, OFCstream code · c2badf51
      Sergey Lesnik authored and Mark OLESEN's avatar Mark OLESEN committed
      c2badf51
    • Mark OLESEN's avatar
    • Mark OLESEN's avatar
      ENH: CoherentMesh improvements · 5f11d2f0
      Mark OLESEN authored
      - reduced overhead and bookkeeping
      - non-blocking communication of slices and shared points
      - use globalIndex for all internal accounting
      5f11d2f0
    • Mark OLESEN's avatar
      ENH: update/extend coherentMeshPolyMapper · 24e71283
      Mark OLESEN authored
      - extracts more relevant information during construct or reset
        to allow inexpensive queries such as the number of
        internal/boundary faces and (non-processor) patch sizes etc.
      
        By consolidating more bookkeeping and functionality can
        greatly reduce the number of scans of input data performed.
      24e71283
    • Mark OLESEN's avatar
      ENH: robuster coherentProcessorPatch handling · 9a5fb090
      Mark OLESEN authored
      - avoid fragile instance counter in favour of construct with index
      
      - support two-stage construction, hide some functions, remove unused
        variables
      
      - align naming more with OpenFOAM conventions.
      9a5fb090
    • Mark OLESEN's avatar
      INT: initial ideas for integrating polyMesh reading · 97d75f87
      Mark OLESEN authored
      - include sanity checks on boundary reading, PtrList management
      
      - ensure that "boundary" information does not have more patches
        than known from the coherent format
      
      - polyPatchList instead of List of raw pointers for additional safety.
        Avoids memory leaks, even if the caller doesn't use the data.
      97d75f87
    • Gregor Weiss's avatar
      INT: initial polyMesh read construct from coherent (work-in-progress) · c4435f8b
      Gregor Weiss authored and Mark OLESEN's avatar Mark OLESEN committed
      - integration notes (Mark Olesen):
      
        * left the MUST_READ/READ_IF_PRESENT flags untouched in the
          initializer to reduce noise of the commit (to be addressed)
      c4435f8b
    • Mark OLESEN's avatar
      27e16b8c
    • Mark OLESEN's avatar
    • Mark OLESEN's avatar
      ENH: polyMeshCoherentMapper writing in parallel · 8fcdc809
      Mark OLESEN authored
      - also generates a "polyMesh/coherent" dictionary with some boundary
        information etc. Can be useful for later detection of coherent vs
        non-coherent formats etc.
      8fcdc809
    • Mark OLESEN's avatar
      ENH: SliceStream improvements · fe75bd8b
      Mark OLESEN authored
      General
      -------
      
      - avoid parameter copying, more stringent test on bad input
      
      - support writing primitives with globalIndex reference and labelPair
      
      - obtain underlying component type and number from VectorSpace members
        instead of assuming that these are only 'scalar' and that the data
        buffer is non-null!
      
      - add Reader(), Writer() factory methods for creating streams.
        * Simpler code and few header dependencies.
      
      - style: method name sync_buffer() instead of bufferSync()
      
      - support SYNC mode when reading/writing slice contents.
        Avoids using deferred and then sync on the entire buffer.
        Use get(), get_sync() methods instead of readToContainer helper
      
      Repo
      ----
      
      - make SliceStreamRepo singleton a std::unique_ptr.
        (avoids leakage on closure).
      
      - add closeInstance() and endInstance() for extra management
        of the singleton
      
      ENH: robuster handling of ADIOS config file
      
      - use "system/adios-config.xml" or "system/adios-config.yaml"
        (was "system/config.xml") to make its intended purpose more transparent.
      
      - although ADIOS does not require a config file, it will fail if the
        config file is specified and missing. Now check the availability of
        the config file(s) and unset if missing.
      
        NB: checks use the absolute global case-path for additional safety.
      
      ENH: split off read buffer creation and size querying
      
      - add missing totalSize() method
      
      - replace the size() method, which was actually the local size
        with a range() method for querying the local dimensions
      
        range()     : queries the first component of Start() and Count()
        totalSize() : queries the first component of the Shape()
      
      - add clear(), reset(), clone() methods to InitFromADIOS to simplify
        reuse and multiple queries etc.
      
      ENH: add version (api) and sizes (label,scalar) as attributes
      
      ENH: handle writing of multi-component types directly from SliceStream
      
      - the sliceWritePrimitives helper routines should now be redundant
      fe75bd8b
    • Mark OLESEN's avatar
      ENH: code improvements to initialization strategies · caf1ac9e
      Mark OLESEN authored
      - cleaner integration of globalIndex:
        * support extract to globalIndex
        * use globalIndex at the components level (for gradual phase-out)
      
      - global end-offsets are directly calculated (using MPI Allgather)
      
      - global start-offsets are calculated with globalIndex::calcOffsets,
        without an intermediate list
      
      - provide constant() DataComponent functor
      
        * simply returns the constant value with which it was constructed.
          Replace special-purpose start_from_myProcNo, count_two functions
          with equivalent constant() functors
      
      - pass and return strings by reference
      
      ENH: use factory forwarding for InitStrategies to simplify code
      
      - std::unique_ptr ownership passed by move reference
      
      STYLE: place DataComponent functions into OffsetStrategies namespace
      
      - reduces clutter of the Foam namespace
      - document their functionality
      
      - replace internal labelPair typedef (std::pair<label,label>, not
        Foam::labelPair) with range_type to avoid possible confusion
      
      - use internal typedefs for OffsetStrategy and DataComponent::base_ptr
        to avoid additional clutter in Foam namespace.
      
      - use class instead of struct with private/protected content
      caf1ac9e
    • Mark OLESEN's avatar
      ENH: combine sliceMap into Slice directly · ceb91ee5
      Mark OLESEN authored
      - use OpenFOAM containers and naming conventions.
      
      INT: add transitional methods to Offsets
      
      - Offsets is slated for future removal since it is largely identically
        to what globalIndex provides, but provide compilation path for now
      
      STYLE: simplify/extend sliceMeshHelper
      ceb91ee5
    • Mark OLESEN's avatar
      ENH: introduce coherentMeshTools with various routines · 5668ce64
      Mark OLESEN authored
      - a namespace with some static functions and/or algorithms for
        handling some of the coherent mesh format details.
      
       * basic extraction for slice faces / points
      
       * categorization of upper-connected face neighbours
      
       * serialize/deserialize owners/faces :
         somewhat similar to CompactListList pack/unpack but
         templated on parameters to support std::vector etc.
      5668ce64
    • Mark OLESEN's avatar
      ENH: unify coherent namings · d7fef168
      Mark OLESEN authored
        - partition-offsets  (was partitionStarts)
        - owner-offsets      (was ownerStarts)
        - neighbour          (was neighbours)
        - face-offsets       (was faceStarts)
        - face-points        (was faces)
      
      STYLE: adjust class naming to reflect (current/future) purpose
      
      - coherentMeshPolyMapper (old: FragmentPermutation)
      - coherentProcessorPatch (old: ProcessorPatch)
      - polyMeshCoherentMapper (old: SlicePermutation)
      
      STYLE: use contains() for slice maps
      d7fef168
    • Mark OLESEN's avatar
      COMP: compilation cleanup : SliceStreams, meshes/coherent · 1cbace41
      Mark OLESEN authored
      - combine DataComponentFree into DataComponent
      
      - make sliceMap header-only (will be removed)
      
      GIT: remove remnant OffsetDecorator header
      1cbace41
    • Gregor Weiss's avatar
      INT: initial integration of SliceStreams, meshes/coherent · 50533599
      Gregor Weiss authored and Mark OLESEN's avatar Mark OLESEN committed
      50533599
    • Mark OLESEN's avatar
      COMP: add adios dependencies to libOpenFOAM · 237c23ca
      Mark OLESEN authored
      - this will presumably change again in the future
      237c23ca
    • Mark OLESEN's avatar
    • Mark OLESEN's avatar
      ENH: improve/simplify streaming of exprValue · 8ef8a5ce
      Mark OLESEN authored
      - ensure that operator<< and operator>> behave symmetrically
      8ef8a5ce
    • Mark OLESEN's avatar
    • Mark OLESEN's avatar
  5. Nov 21, 2023
  6. Nov 20, 2023