1. 11 Jun, 2020 1 commit
  2. 02 Jun, 2020 1 commit
    • Mark Olesen's avatar
      ENH: unify use of dictionary method names · 3e43edf0
      Mark Olesen authored
      - previously introduced `getOrDefault` as a dictionary _get_ method,
        now complete the transition and use it everywhere instead of
        `lookupOrDefault`. This avoids mixed usage of the two methods that
        are identical in behaviour, makes for shorter names, and promotes
        the distinction between "lookup" access (ie, return a token stream,
        locate and return an entry) and "get" access (ie, the above with
        conversion to concrete types such as scalar, label etc).
      3e43edf0
  3. 14 May, 2020 1 commit
  4. 04 May, 2020 1 commit
  5. 03 Apr, 2020 4 commits
    • Mark Olesen's avatar
      ENH: refine geometry and field scaling for nastran and raw surfaces (#1600) · eeb050cc
      Mark Olesen authored
      - enhancement and potential breaking change.
      
        Nastran surface writer previously used the keyword 'scale' for
        field scaling, which was applied uniformly to all output fields.
      
        Change the meaning of 'scale' to be geometric scaling
        (consistent with reading triSurfaceMesh etc).
      
        New 'fieldScale' entry is an optional dictionary of scaling
        parameters.
      
        Example,
      
            nastran
            {
                scale   1000;     // [m] -> [mm]
                fieldScale
                {
                   "p.*"   0.01;  // [Pa] -> [mbar]
                }
            }
      eeb050cc
    • Mark Olesen's avatar
    • Mark Olesen's avatar
      ENH: support independent specification of surface read/write format (#1600) · 560c053b
      Mark Olesen authored
      - adjustments to internal handling to improve run-time addition of
        other formats (eg, with additional user library)
      
        For example, to write a binary STL with a '.stl' extension:
      
          $ surfaceMeshConvert input.obj  -write-format stlb  output.stl
      
        Or in a sampler,
        to specify the input type without ambiguity:
      
        surf
        {
            type        meshedSurface;
            surface     sampling.inp;
      
            fileType    starcd;
            scale       0.001;
            ...
        }
      
      STYLE: regularize naming for input/output scaling
      
        * -read-scale   (compat: -scaleIn)
        * -write-scale  (compat: -scaleOut)
      
      CONFIG: change edge/surface selection name for STARCD format
      
      - now select as "starcd" instead of "inp" to avoid naming ambiguity
        with abaqus
      560c053b
    • Mark Olesen's avatar
      BUG: potential divide-by-zero in x3d surface output (#1212) · a88e67f2
      Mark Olesen authored
      - eg, for a uniform field and auto range.
      a88e67f2
  6. 27 Feb, 2020 1 commit
    • Mark Olesen's avatar
      ENH: improvements for nastran surface writer (#1571) · b476dd92
      Mark Olesen authored
      - avoid face copying.
        Maintain separate offsets/list for non tri/quad face decomposition,
        which eliminates copying for tri/quad types that represent the bulk
        of geometries
      
      - report inappropriate use of PLOAD2 for higher-ranks only once per
        field instead of per face.  For this case, write its magnitude
        instead of 0.
      
      - perform field output scaling prior to calling the write face
        function. This will make it easier to handle different per-field
        scaling in the future (#1612)
      
      BUG: nastran quad written as "CTRIA3" instead of "CQUAD4"
      b476dd92
  7. 19 Feb, 2020 1 commit
  8. 18 Feb, 2020 2 commits
    • Mark Olesen's avatar
      ENH: improvements to IOstreamOption · 33f9ae50
      Mark Olesen authored
      * Support default values for format/compress enum lookups.
      
        - Avoids situations where the preferred default format is not ASCII.
          For example, with dictionary input:
      
              format binar;
      
          The typing mistake would previously have caused formatEnum to
          default to ASCII. We can now properly control its behaviour.
      
              IOstream::formatEnum
              (
                  dict.get<word>("format"), IOstream::BINARY
              );
      
          Allowing us to switch ascii/binary, using BINARY by default even in
          the case of spelling mistakes. The mistakes are flagged, but the
          return value can be non-ASCII.
      
      * The format/compression lookup behave as pass-through if the lookup
        string is empty.
      
        - Allows the following to work without complaint
      
            IOstream::formatEnum
            (
                dict.getOrDefault("format", word::null), IOstream::BINARY
            );
      
        - Or use constructor-like failsafe method
      
            IOstream::formatEnum("format", dict, IOstream::BINARY);
      
        - Apply the same behaviour with setting stream format/compression
          from a word.
      
             is.format("binar");
      
          will emit a warning, but leave the stream format UNCHANGED
      
      * Rationalize versionNumber construction
      
        - constexpr constructors where possible.
          Default construct is the "currentVersion"
      
        - Construct from token to shift the burden to versionNumber.
          Support token as argument to version().
      
          Now:
      
              is.version(headerDict.get<token>("version"));
      
          or failsafe constructor method
      
              is.version
              (
                  IOstreamOption::versionNumber("version", headerDict)
              );
      
          Before (controlled input):
      
              is.version
              (
                  IOstreamOption::versionNumber
                  (
                      headerDict.get<float>("version")
                  )
              );
      
          Old, uncontrolled input - has been removed:
      
              is.version(headerDict.lookup("version"));
      
      * improve consistency, default behaviour for IOstreamOption construct
      
        - constexpr constructors where possible
      
        - add copy construct with change of format.
      
        - construct IOstreamOption from streamFormat is now non-explicit.
          This is a commonly expected result with no ill-effects
      33f9ae50
    • Mark Olesen's avatar
      ENH: overhaul ensight handling (#1579) · a9762812
      Mark Olesen authored
      - includes restructuring and simplification of low-level ensight part
        handling and refactor of backends to improve code reuse.
      
      foamToEnsight
      -------------
      
        * new cellZone support.
          This was previously only possible via a separate foamToEnsightParts
          utility that was not parallelized.
      
        * support for point fields.
      
        * `-nearCellValue` option (as per foamToVTK)
      
        * data indexing now uses values from the time index.
          This is consistent with the ensightWrite function object and
          can help with restarts.
      
        * existing ensight directories are removed, unless the -no-overwrite
          option is supplied
      
      foamToEnsightParts
      ------------------
        * now redundant and removed.
      
      ensightOutputSurface (new class)
      --------------------------------
        * a lightweight wrapper for point/face references that is tailored
          for the ensightSurfaceWriter. It uses compact face/point information
          and is serial only, since this is the format requirements from the
          surfaceWriter class.
      
      ensightMesh (revised class)
      ---------------------------
        * now only holds a polyMesh reference, which removes its dependency
          on finiteVolume and allows it to be relocated under fileFormats
          instead of conversion.
      
      Removed classes: ensightParts, ensighPartFaces, ensightPartCells
      
      - these were used by foamToEnsightParts, but not needed anymore.
      a9762812
  9. 27 Jan, 2020 1 commit
  10. 31 Oct, 2019 1 commit
  11. 29 Sep, 2019 1 commit
  12. 31 Aug, 2019 1 commit
  13. 02 Aug, 2019 1 commit
  14. 06 Jun, 2019 1 commit
  15. 04 Jun, 2019 1 commit
  16. 06 May, 2019 1 commit
  17. 08 Apr, 2019 1 commit
  18. 05 Apr, 2019 1 commit
  19. 13 Mar, 2019 1 commit
    • Mark Olesen's avatar
      ENH: surface writers now track their own write status · 1a35a3ef
      Mark Olesen authored
      - instead of deciding beforehand if a surface format requires a separate
        geometry file (or if a geometry file should be written if no fields were
        written) now determine afterwards if something was written.
      
        This improves the overall reliability (consistency) and is more
        convenient for the caller as well.
      1a35a3ef
  20. 11 Mar, 2019 1 commit
    • Mark Olesen's avatar
      ENH: improved consistency of surface writers (#1232) · 773ec00d
      Mark Olesen authored
      - remove writeGeometry() in favour of write() and make it pure virtual
        so that all writers must explicitly deal with it.
      
      - establish proxy extension at construction time and treated as an
        invariant thereafter. This avoids potentially surprising changes in
        behaviour when writing.
      773ec00d
  21. 22 Feb, 2019 2 commits
  22. 07 Feb, 2019 1 commit
    • Mark Olesen's avatar
      ENH: improved sample surfaces and surface writers (#1206) · 181c974b
      Mark Olesen authored
      - The writers have changed from being a generic state-less set of
        routines to more properly conforming to the normal notion of a writer.
        These changes allow us to combine output fields (eg, in a single
        VTK/vtp file for each timestep).
      
        Parallel data reduction and any associated bookkeeping is now part
        of the surface writers.
        This improves their re-usability and avoids unnecessary
        and premature data reduction at the sampling stage.
      
        It is now possible to have different output formats on a per-surface
        basis.
      
      - A new feature of the surface sampling is the ability to "store" the
        sampled surfaces and fields onto a registry for reuse by other
        function objects.
      
        Additionally, the "store" can be triggered at the execution phase
        as well
      181c974b