Skip to content
Snippets Groups Projects

refactor coordSet writers (#2347)

Merged Mark OLESEN requested to merge feature-coordSets into develop
  1. Mar 10, 2022
    • Mark OLESEN's avatar
      ENH: support 'probes' style of ensemble output for sampledSets (#2389) · 010ebadb
      Mark OLESEN authored
      - with the special setFormat "probes", all of the sampled sets are
        treated more similarly to probes, with an ensemble output to raw
        probed format.
      
        This is of course less useful when the number of sampled points
        becomes very large.
      010ebadb
    • Mark OLESEN's avatar
      TUT: update tutorials to use dictionary-style sets · 8a7221cf
      Mark OLESEN authored
      - can now specify sampled sets as dictionary entries instead of a list
        entry.
          can now use:  sets { ... }
          instead of:   sets ( ... );
      
        This is similar to sampled surfaces and makes it easier to
        manage with dictionary manipulation tools.
      
      TUT: update to use writeTime instead of outputTime
      8a7221cf
    • Mark OLESEN's avatar
      ENH: ensemble results for sampleSets (#2388) · 87db3ce4
      Mark OLESEN authored
      - in v2112 the functionObject results were only delivering values from
        the last set listed (ie, overwritten).
      
        Now that the values are properly scoped by the name of the set itself
        Eg, `average(lines,p)` for the average for 'lines' set, existing
        workflows will break.
      
        It thus makes reasonble sense to also handle results without a
        qualifier as ensemble values.
      
            average(p)    // Ensemble average of all listed sets
      87db3ce4
    • Mark OLESEN's avatar
      ENH: refactor coordSet writers (#2347) · c3e14ffd
      Mark OLESEN authored
      - the very old 'writer' class was fully stateless and always templated
        on an particular output type.
      
        This is now replaced with a 'coordSetWriter' with similar concepts
        as previously introduced for surface writers (#1206).
      
        - writers change from being a generic state-less set of routines to
          more properly conforming to the normal notion of a writer.
      
        - Parallel data is done *outside* of the writers, since they are used
          in a wide variety of contexts and the caller is currently still in
          a better position for deciding how to combine parallel data.
      
      ENH: update sampleSets to sample on per-field basis (#2347)
      
      - sample/write a field in a single step.
      
      - support for 'sampleOnExecute' to obtain values at execution
        intervals without writing.
      
      - support 'sets' input as a dictionary entry (as well as a list),
        which is similar to the changes for sampled-surface and permits use
        of changeDictionary to modify content.
      
      - globalIndex for gather to reduce parallel communication, less code
      
      - qualify the sampleSet results (properties) with the name of the set.
        The sample results were previously without a qualifier, which meant
        that only the last property value was actually saved (previous ones
        overwritten).
      
        For example,
        ```
          sample1
          {
              scalar
              {
                  average(line,T) 349.96521;
                  min(line,T)     349.9544281;
                  max(line,T)     350;
                  average(cells,T) 349.9854619;
                  min(cells,T)    349.6589286;
                  max(cells,T)    350.4967271;
                  average(line,epsilon) 0.04947733869;
                  min(line,epsilon) 0.04449639927;
                  max(line,epsilon) 0.06452856475;
              }
              label
              {
                  size(line,T)    79;
                  size(cells,T)   1720;
                  size(line,epsilon) 79;
              }
          }
        ```
      
      ENH: update particleTracks application
      
      - use globalIndex to manage original parcel addressing and
        for gathering. Simplify code by introducing a helper class,
        storing intermediate fields in hash tables instead of
        separate lists.
      
      ADDITIONAL NOTES:
      
      - the regionSizeDistribution largely retains separate writers since
        the utility of placing sum/dev/count for all fields into a single file
        is questionable.
      
      - the streamline writing remains a "soft" upgrade, which means that
        scalar and vector fields are still collected a priori and not
        on-the-fly.  This is due to how the streamline infrastructure is
        currently handled (should be upgraded in the future).
      c3e14ffd