Skip to content
  • 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