1. 07 Oct, 2020 1 commit
  2. 05 Oct, 2020 1 commit
    • Mark Olesen's avatar
      ENH: support arc edge specification with origin point · 1d08ed9b
      Mark Olesen authored
      - The arc will frequently enclose an angle less than 180 degrees.
        For the case, it is possible to define the arc by its endpoints
        and its centre (origin) point. For example,
      
            arc 0 1 origin (0 0 0);
      
        When defined in the way, any discrepancy in the arc radius for the
        endpoints is resolved by adjusting the origin to ensure that the
        average radius is satisfied.
      
        It is also possible to specify a \em flatness factor as a multiplier
        of the radius. For example,
      
            arc 0 1 origin 1.1 (0 0 0);
      
      ENH: minor code cleanup for block edges
      
      ENH: expose point appending as polyList::concat
      1d08ed9b
  3. 16 Jul, 2020 1 commit
  4. 13 Mar, 2020 1 commit
  5. 31 Oct, 2019 1 commit
  6. 16 Jul, 2019 1 commit
  7. 12 Jul, 2019 1 commit
  8. 21 Feb, 2019 1 commit
    • Mark Olesen's avatar
      ENH: trap negative blockMesh expansions and treat as their inverse · 7da0b5be
      Mark Olesen authored
      - A negative expansion ratio is geometrically invalid and will
        normally cause issues (FatalError).
        However, we can trap this type of input and interpret it as the
        inverse expansion ratio - ie, the expansion ratio in the opposite
        direction. This can be especially convenient when generating a blockMesh
        with a symmetrical expansion. It permits using the same expansion
        ratio (with a sign change) instead of providing the reciprocal values
        manually.
      
      COMP: revert demand-driven point creation in blockMesh (db9b35b5)
      
      - appears to have caused a dangling reference on some systems
      
      ENH: add a lightweight ijkAddressing class
      
      - it can be used for an i-j-k to linear lookup of meshes or fields,
        where applicable.
      7da0b5be
  9. 17 Feb, 2019 1 commit
    • Mark Olesen's avatar
      ENH: minor blockMesh improvements · 48e3590b
      Mark Olesen authored
      - avoid potential ambiguities in naming of mesh faces/edges
        vs. block faces/edges
      
      - additional methods characterizing the number of faces
        (internal, boundary, total) associated with a blockDescriptor
      
      - cellLabel() accessor and checkIndex() methods
      
      - restore demand-driven behaviour of block, cache the calculated cells
        and refactor generation of block boundary faces to improve potential
        reuse.
      48e3590b
  10. 07 Jan, 2019 1 commit
  11. 06 Feb, 2019 1 commit
  12. 11 Dec, 2018 1 commit
    • Mark Olesen's avatar
      ENH: use Zero when zero-initializing types · 1d85fecf
      Mark Olesen authored
      - makes the intent clearer and avoids the need for additional
        constructor casting. Eg,
      
            labelList(10, Zero)    vs.  labelList(10, 0)
            scalarField(10, Zero)  vs.  scalarField(10, scalar(0))
            vectorField(10, Zero)  vs.  vectorField(10, vector::zero)
      1d85fecf
  13. 01 Oct, 2018 1 commit
    • Mark Olesen's avatar
      ENH: improve, simplify, rationalize coordinate system handling (issue #863) · 6697bb47
      Mark Olesen authored
      Previously the coordinate system functionality was split between
      coordinateSystem and coordinateRotation. The coordinateRotation stored
      the rotation tensor and handled all tensor transformations.
      
      The functionality has now been revised and consolidated into the
      coordinateSystem classes. The sole purpose of coordinateRotation
      is now just to provide a selectable mechanism of how to define the
      rotation tensor (eg, axis-angle, euler angles, local axes) for user
      input, but after providing the appropriate rotation tensor it has
      no further influence on the transformations.
      
      --
      
      The coordinateSystem class now contains an origin and a base rotation
      tensor directly and various transformation methods.
      
        - The origin represents the "shift" for a local coordinate system.
      
        - The base rotation tensor represents the "tilt" or orientation
          of the local coordinate system in general (eg, for mapping
          positions), but may require position-dep...
      6697bb47
  14. 24 Sep, 2018 1 commit
    • Mark Olesen's avatar
      ENH: cylindricalCS is now in radians only (issue #863) · dcc1dc13
      Mark Olesen authored
      - this provides internal consistency and allows direct use of the
        coordinate angle with sin(), cos() functions.
        It eliminates potential issues that could otherwise arise from
        alternative user input.
      
        Eg, in mixerFvMesh it would have previously been possible to specify
        the coordinate system to use degrees or radians, but these units were
        not checked when determining the tangential sweep positions.
      
      NOTE: this may represent a breaking change if user coding has been
      relying on cylindrical coordinate system in degrees.
      dcc1dc13
  15. 19 Sep, 2018 1 commit
  16. 30 May, 2018 1 commit
  17. 27 Apr, 2018 1 commit
  18. 21 Mar, 2018 1 commit
  19. 26 Feb, 2018 1 commit
    • Mark Olesen's avatar
      ENH: cleanup autoPtr class (issue #639) · 660f3e54
      Mark Olesen authored
      Improve alignment of its behaviour with std::unique_ptr
      
        - element_type typedef
        - release() method - identical to ptr() method
        - get() method to get the pointer without checking and without releasing it.
        - operator*() for dereferencing
      
      Method name changes
      
        - renamed rawPtr() to get()
        - renamed rawRef() to ref(), removed unused const version.
      
      Removed methods/operators
      
        - assignment from a raw pointer was deleted (was rarely used).
          Can be convenient, but uncontrolled and potentially unsafe.
          Do allow assignment from a literal nullptr though, since this
          can never leak (and also corresponds to the unique_ptr API).
      
      Additional methods
      
        - clone() method: forwards to the clone() method of the underlying
          data object with argument forwarding.
      
        - reset(autoPtr&&) as an alternative to operator=(autoPtr&&)
      
      STYLE: avoid implicit conversion from autoPtr to object type in many places
      
      - existing implementation has the following:
      
           operator const T&() const { return operator*(); }
      
        which means that the following code works:
      
             autoPtr<mapPolyMesh> map = ...;
             updateMesh(*map);    // OK: explicit dereferencing
             updateMesh(map());   // OK: explicit dereferencing
             updateMesh(map);     // OK: implicit dereferencing
      
        for clarity it may preferable to avoid the implicit dereferencing
      
      - prefer operator* to operator() when deferenced a return value
        so it is clearer that a pointer is involve and not a function call
        etc    Eg,   return *meshPtr_;  vs.  return meshPtr_();
      660f3e54
  20. 03 Jul, 2017 1 commit
  21. 25 May, 2017 1 commit
  22. 19 May, 2017 1 commit
  23. 12 Dec, 2016 1 commit
  24. 09 Dec, 2016 1 commit
  25. 28 Nov, 2016 1 commit
  26. 11 Nov, 2016 1 commit
  27. 04 Nov, 2016 1 commit
  28. 31 Oct, 2016 1 commit
    • Henry Weller's avatar
      blockMesh: Added edge projection · 9a155dd0
      Henry Weller authored
      New functionality contributed by Mattijs Janssens:
        - new edge projection: projectCurve for use with new geometry
          'searchableCurve'
        - new tutorial 'pipe'
        - naming of vertices and blocks (see pipe tutorial). Including back
          substitution for error messages.
      9a155dd0
  29. 21 Oct, 2016 1 commit
  30. 18 Oct, 2016 1 commit
    • Henry Weller's avatar
      blockMesh: Added projected vertices and edges · 3773db53
      Henry Weller authored
      Patch contributed by Mattijs Janssens
      
          - Added projected vertices
          - Added projected edges
          - Change of blockEdges API (operate on list lambdas)
          - Change of blockFaces API (pass in blockDescriptor and blockFacei)
          - Added sphere7ProjectedEdges tutorial to demonstrate vertex and edge projection
      3773db53
  31. 15 Oct, 2016 2 commits
  32. 13 Oct, 2016 1 commit
    • Henry Weller's avatar
      blockMesh: New experimental support for projecting block face point to geometric surfaces · 00920318
      Henry Weller authored
      For example, to mesh a sphere with a single block the geometry is defined in the
      blockMeshDict as a searchableSurface:
      
          geometry
          {
              sphere
              {
                  type searchableSphere;
                  centre (0 0 0);
                  radius 1;
              }
          }
      
      The vertices, block topology and curved edges are defined in the usual
      way, for example
      
          v 0.5773502;
          mv -0.5773502;
      
          a 0.7071067;
          ma -0.7071067;
      
          vertices
          (
              ($mv $mv $mv)
              ( $v $mv $mv)
              ( $v  $v $mv)
              ($mv  $v $mv)
              ($mv $mv  $v)
              ( $v $mv  $v)
              ( $v  $v  $v)
              ($mv  $v  $v)
          );
      
          blocks
          (
              hex (0 1 2 3 4 5 6 7) (10 10 10) simpleGrading (1 1 1)
          );
      
          edges
          (
              arc 0 1 (0 $ma $ma)
              arc 2 3 (0 $a $ma)
              arc 6 7 (0 $a $a)
              arc 4 5 (0 $ma $a)
      
              arc 0 3 ($ma 0 $ma)
              arc 1 2 ($a 0 $ma)
              arc 5 6 ($a 0 $a)
              arc 4 7 ($ma 0 $a)
      
              arc 0 4 ($ma $ma 0)
              arc 1 5 ($a $ma 0)
              arc 2 6 ($a $a 0)
              arc 3 7 ($ma $a 0)
          );
      
      which will produce a mesh in which the block edges conform to the sphere
      but the faces of the block lie somewhere between the original cube and
      the spherical surface which is a consequence of the edge-based
      transfinite interpolation.
      
      Now the projection of the block faces to the geometry specified above
      can also be specified:
      
          faces
          (
              project (0 4 7 3) sphere
              project (2 6 5 1) sphere
              project (1 5 4 0) sphere
              project (3 7 6 2) sphere
              project (0 3 2 1) sphere
              project (4 5 6 7) sphere
          );
      
      which produces a mesh that actually conforms to the sphere.
      
      See OpenFOAM-dev/tutorials/mesh/blockMesh/sphere
      
      This functionality is experimental and will undergo further development
      and generalization in the future to support more complex surfaces,
      feature edge specification and extraction etc.  Please get involved if
      you would like to see blockMesh become a more flexible block-structured
      mesher.
      
      Henry G. Weller, CFD Direct.
      00920318
  33. 08 Oct, 2016 1 commit