1. 19 Feb, 2020 3 commits
  2. 18 Feb, 2020 8 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: adjustments to Switch · bb53e8ad
      Mark Olesen authored
      - align Switch more with Enum.
        Now have find(), found() static methods.
        Constructors with failsafe option.
      
        The find() method makes for clearer coding:
      
        OLD
      
           Switch sw(some_string, true); // NB: true = allowBad
      
           if (sw.valid()) ...
      
        NOW
      
           Switch sw = Switch::find(some_string);
      
           if (sw.good()) ...
      
        or
      
           if (Switch::found(some_string)) ...
      
      - improve construct from dictionary to handle all valid token types.
        Previously just read in a word.
      
      - Remove asText() method - replaced by c_str() and str() several
        versions ago.
      bb53e8ad
    • Mark Olesen's avatar
      4e1bc2d2
    • Mark Olesen's avatar
      STYLE: adjust names, locations for fileFormats · 4307e171
      Mark Olesen authored
      - renamed 'core/' -> 'base/' to avoid gitignore masking when re-adding
        files
      
      - rename 'nas/' to 'nastran/' for more clarity
      
      - relocated OBJstream from surfMesh to fileFormats
      
      STYLE: remove unused parseNASCoord. Was deprecated 2017-09
      4307e171
    • Kutalmis Bercin's avatar
      ENH: improve analytical eigendecompositions · 55e7da67
      Kutalmis Bercin authored and Andrew Heather's avatar Andrew Heather committed
        - `tensor` and `tensor2D` returns complex eigenvalues/vectors
        - `symmTensor` and `symmTensor2D` returns real eigenvalues/vectors
        - adds new test routines for eigendecompositions
        - improves numerical stability by:
          - using new robust algorithms,
          - reordering the conditional branches in root-type selection
      55e7da67
    • Kutalmis Bercin's avatar
      ENH: improve funcs and opers in Tensor types · 66b02ca5
      Kutalmis Bercin authored and Andrew Heather's avatar Andrew Heather committed
        - ensures each Tensor-container operates for the following base types:
          - floatScalar
          - doubleScalar
          - complex
      
        - adds/improves test applications for each container and base type:
          - constructors
          - member functions
          - global functions
          - global operators
      
        - misc:
          - silently removes `invariantIII()` for `tensor2D` and `symmTensor2D`
            since the 3rd invariant does not exist for 2x2 matrices
          - fixes `invariantII()` algorithm for `tensor2D` and `symmTensor2D`
          - adds `Cmpt` multiplication to `Vector2D` and `Vector`
          - adds missing access funcs for symmetric containers
          - improves func/header documentations
      66b02ca5
    • Kutalmis Bercin's avatar
      ENH: improve stability in polynomialEqns · 8ca724ff
      Kutalmis Bercin authored and Andrew Heather's avatar Andrew Heather committed
        - replaces floating-point equal comparisons in
          `linearEqn`, `quadraticEqn`, and `cubicEqn`,
        - ensures `quadraticEqn` and `cubicEqn` can return `complex` roots,
        - reorders if-branches in `quadraticEqn` and `cubicEqn` to avoid
          zero-equal comparison,
        - adds Kahan's cancellation-avoiding algorithm into `quadraticEqn` and
          `cubicEqn` for the numerically-sensitive discriminant computation,
      
        - adds/improves `polynomialEqns` tests:
          * adds Test-linearEqn.C
          * adds Test-quadraticEqn.C
          * improves Test-cubicEqn.C
      8ca724ff
    • Mark Olesen's avatar
      ENH: overhaul ensight handling (#1579) · a9762812
      Mark Olesen authored and Andrew Heather's avatar Andrew Heather committed
      - 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
  3. 12 Feb, 2020 3 commits
  4. 06 Feb, 2020 2 commits
  5. 31 Jan, 2020 2 commits
    • Mark Olesen's avatar
    • Mark Olesen's avatar
      ENH: added IndirectSubList · 822d052e
      Mark Olesen authored
      - provides an indirect access to a sub-section of a list that is
        somewhat less efficient than a Foam::SubList, but supports the
        following:
          * adjustment of its addressing range after construction
          * recovery of the original, underlying list at any time
      
        This can be more convenient for some coding cases.
        For example,
      
            template<class Addr>
            void renumberFaces(IndirectListBase<face, Addr>& faces, ...);
      
        which can be called for
      
            * Specific faces:
              UIndirectList<face>(mesh.faces(), facesToChange)
      
            * A sub-range of faces:
              IndirectSubList<face>(mesh.faces(), pp.range())
      
            * All faces:
              IndirectSubList<face>(mesh.faces())
      
      CONFIG: added IndirectListsFwd.H with some common forwarding
      822d052e
  6. 29 Jan, 2020 1 commit
  7. 28 Jan, 2020 2 commits
  8. 23 Jan, 2020 1 commit
  9. 21 Jan, 2020 1 commit
  10. 16 Jan, 2020 2 commits
    • Mark Olesen's avatar
      ENH: provide defaultName() static method for patches, zones · f0be8679
      Mark Olesen authored
      - consistent way of writing "patch" + Foam::name(id) etc.
      f0be8679
    • Mark Olesen's avatar
      ENH: consistency improvements for surface patch handling (fixes #483) · 2a98c4e6
      Mark Olesen authored
      - remove (unused) Istream constructors, prune some unused methods,
        rationalize write() vs writeDict().
        Deprecate inconsistent construction order.
      
      - handle empty names for ".ftr" surface patches (for plain triSurface
        format) with double-quoted strings for more reliable streaming.
        Written on a single line.
      
        This is _backward_ compatible, but if users have been parsing these
        files manually, they will need to adjust their code.
      
      Previously:
      ```
        (
        frt-fairing:001%1
        empty
      
        windshield:002%2
        empty
        ...
        )
      ```
      
      Updated (with example handling of empty name):
      ```
        (
        frt-fairing:001%1 empty
      
        windshield:002%2 ""
        ...
        )
      ```
      2a98c4e6
  11. 22 Jan, 2020 1 commit
  12. 16 Jan, 2020 1 commit
  13. 06 Jan, 2020 2 commits
  14. 03 Jan, 2020 1 commit
  15. 23 Dec, 2019 1 commit
  16. 19 Dec, 2019 4 commits
  17. 18 Dec, 2019 1 commit
  18. 17 Dec, 2019 2 commits
    • sergio's avatar
      INT: org integration · 6e8f0dbe
      sergio authored and Andrew Heather's avatar Andrew Heather committed
      1) rPolynomial Eq of State
      2) externalForce and softWall in rigidBodyDynamics
      
      INT: Several minor bug fixes plus
      6e8f0dbe
    • Mark Olesen's avatar
      ENH: use exprString expansions for #eval · 1cf795a4
      Mark Olesen authored
      - follows the principle of least surprise if the expansion behaviour
        for #eval and expressions (eg, exprFixedValue) are the same.  This
        is possible now that we harness the regular stringOps::expand()
        within exprString::expand()
      1cf795a4
  19. 16 Dec, 2019 2 commits
    • Mark Olesen's avatar
      ENH: PDRsetFields utility (#1216) · a60fe9c7
      Mark Olesen authored
      - the PDRsetFields utility processes a set of geometrical obstructions
        to determine the equivalent blockage effects.
      
        These fields are necessary inputs for PDRFoam calculations.
      
        After setting up the geometries, the -dry-run option can be used to
        generate a VTK file for diagnosis and post-processing purposes.
      
      - this is an initial release, with improvements slated for the future.
      
      NOTE
        - the field results may be less than fully reliable when run in
          single-precision. This howver does not represent a realistic
          restriction since the prepared fields target a combustion
          application which will invariably be double-precision.
      a60fe9c7
    • Mark Olesen's avatar
      COMP: compilation of Test-QRMatrix (clang, int64) · 1a16207e
      Mark Olesen authored
      - remove unused local functions from volumeExprDriver
      1a16207e