1. 26 Jun, 2019 1 commit
  2. 25 Jun, 2019 1 commit
  3. 19 Jun, 2019 1 commit
  4. 05 Jun, 2019 1 commit
  5. 25 Apr, 2019 1 commit
  6. 23 Feb, 2019 1 commit
  7. 18 Feb, 2019 1 commit
  8. 15 Feb, 2019 1 commit
  9. 13 Feb, 2019 1 commit
    • Mark Olesen's avatar
      ENH: extended runTimePostProcessing (#1206) · 42fbf6d3
      Mark Olesen authored
      - Extended runTimePostProcessing to include access to "live"
        simulation objects such a geometry patches and sampled surfaces
        stored on the "functionObjectObjects" registry.
      
      - Add 'live' runTimePostProcessing of cloud data.
        Extracts position and fields from the cloud via its objectRegistry writer
      
      - For the "live" simulation objects, there are two new volume filters
        that work directly with the OpenFOAM volume fields:
            * iso-surface
            * cutting planes
        Both use the VTK algorithms directly and support multiple values.
        Eg, can make multiple iso-levels or multiple planes parallel to each
        other.
      
      - When VTK has been compiled with MPI-support, parallel rendering will
        be used.
      
      - Additional title text properties (shadow, italic etc)
      
      - Simplified handling of scalar-bar and visibility switches
      
      - Support multiple text positions. Eg, for adding watermark text.
      42fbf6d3
  10. 12 Feb, 2019 1 commit
  11. 15 May, 2019 2 commits
  12. 12 Feb, 2019 1 commit
  13. 08 Feb, 2019 1 commit
  14. 21 Jan, 2019 1 commit
  15. 19 Dec, 2018 2 commits
  16. 18 Dec, 2018 1 commit
  17. 10 Dec, 2018 1 commit
  18. 13 Dec, 2018 2 commits
  19. 08 Dec, 2018 1 commit
  20. 21 Jan, 2019 1 commit
  21. 04 Dec, 2018 1 commit
    • Mark Olesen's avatar
      ENH: momentum field function (issue #1105) · 07791062
      Mark Olesen authored
          Calculates linear/angular momentum, reporting integral values
          and optionally writing the fields.
      
      Example
          momentum1
          {
              type        momentum;
              libs        ("libfieldFunctionObjects.so");
              ...
              writeMomentum   yes;
              writeVelocity   no;
      
              cylindrical     true;
              origin  (0 0 0);
              e1      (1 0 0);
              e3      (0 0 1);
          }
      07791062
  22. 02 Dec, 2018 1 commit
    • Mark Olesen's avatar
      TUT: use defaultPatch for naming instead of explicit Default_Boundary_Region · 1116ba80
      Mark Olesen authored
      - tutorials based on squareBend used Default_Boundary_Region explicitly
        defined since they predated the defaultPatch renaming (2008).
        The name 'Default_Boundary_Region' was for convenience as the default
        name when converting to PROSTAR or CCM formation, but can now be
        changed to something more generic.
      
      - define wall boundary conditions for squareBend using a general regex
        to allow future splitting of wall types by name.
      1116ba80
  23. 22 Nov, 2018 1 commit
  24. 16 Nov, 2018 1 commit
  25. 16 Oct, 2018 1 commit
  26. 09 Oct, 2018 1 commit
    • Mark Olesen's avatar
      ENH: improvements for vtkWrite function object (issue #926) · 42bb4970
      Mark Olesen authored
      - parallel output.
      
        The output is now postProcessing/<name> for similar reasoning as
        mentioned in #866 - better alignment with other function objects, no
        collision with foamToVTK output.
      
      - align the input parameters with those of vtkCloud so that we can
        specify the ASCII precision and the padding width for the output
        file names as well.
      
      - emit TimeValue field, support file series generation
      
      - support internal or boundary meshes, combining the result into a vtm
        file.
      
      - can restrict conversion based on zone names, enclosing volumes,
        bounding box
      42bb4970
  27. 07 Nov, 2018 1 commit
    • Mark Olesen's avatar
      ENH: make sourceInfo sub-dictionary optional for topoSet (#1060) · 5f556ffb
      Mark Olesen authored
      - helps reduce clutter in the topoSetDict files.
      
        Caveats when using this.
      
        The older specification styles using "name" will conflict with the
        set name. Eg,
      
          {
              name    f0
              type    faceSet;
              action  add;
              source  patchToFace;
              sourceInfo
              {
                  name   inlet;
              }
          }
      
          would flattened to the following
          {
              name    f0
              type    faceSet;
              action  add;
              source  patchToFace;
              name   inlet;
          }
          which overwrites the "name" used for the faceSet.
      
          The solution is to use the updated syntax:
      
          {
              name    f0
              type    faceSet;
              action  add;
              source  patchToFace;
              patch   inlet;
          }
      5f556ffb
  28. 30 Oct, 2018 2 commits
  29. 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-dependent tensors when
          transforming vectors and tensors.
      
      For some coordinate systems (currently the cylindrical coordinate system),
      the rotation tensor required for rotating a vector or tensor is
      position-dependent.
      
      The new coordinateSystem and its derivates (cartesian, cylindrical,
      indirect) now provide a uniform() method to define if the rotation
      tensor is position dependent/independent.
      
      The coordinateSystem transform and invTransform methods are now
      available in two-parameter forms for obtaining position-dependent
      rotation tensors. Eg,
      
            ... = cs.transform(globalPt, someVector);
      
      In some cases it can be useful to use query uniform() to avoid
      storage of redundant values.
      
            if (cs.uniform())
            {
                vector xx = cs.transform(someVector);
            }
            else
            {
                List<vector> xx = cs.transform(manyPoints, someVector);
            }
      
      Support transform/invTransform for common data types:
         (scalar, vector, sphericalTensor, symmTensor, tensor).
      
      ====================
        Breaking Changes
      ====================
      
      - These changes to coordinate systems and rotations may represent
        a breaking change for existing user coding.
      
      - Relocating the rotation tensor into coordinateSystem itself means
        that the coordinate system 'R()' method now returns the rotation
        directly instead of the coordinateRotation. The method name 'R()'
        was chosen for consistency with other low-level entities (eg,
        quaternion).
      
        The following changes will be needed in coding:
      
            Old:  tensor rot = cs.R().R();
            New:  tensor rot = cs.R();
      
            Old:  cs.R().transform(...);
            New:  cs.transform(...);
      
        Accessing the runTime selectable coordinateRotation
        has moved to the rotation() method:
      
            Old:  Info<< "Rotation input: " << cs.R() << nl;
            New:  Info<< "Rotation input: " << cs.rotation() << nl;
      
      - Naming consistency changes may also cause code to break.
      
            Old:  transformVector()
            New:  transformPrincipal()
      
        The old method name transformTensor() now simply becomes transform().
      
      ====================
        New methods
      ====================
      
      For operations requiring caching of the coordinate rotations, the
      'R()' method can be used with multiple input points:
      
             tensorField rots(cs.R(somePoints));
      
         and later
      
             Foam::transformList(rots, someVectors);
      
      The rotation() method can also be used to change the rotation tensor
      via a new coordinateRotation definition (issue #879).
      
      The new methods transformPoint/invTransformPoint provide
      transformations with an origin offset using Cartesian for both local
      and global points. These can be used to determine the local position
      based on the origin/rotation without interpreting it as a r-theta-z
      value, for example.
      
      ================
        Input format
      ================
      
      - Streamline dictionary input requirements
      
        * The default type is cartesian.
        * The default rotation type is the commonly used axes rotation
          specification (with e1/e2/3), which is assumed if the 'rotation'
          sub-dictionary does not exist.
      
          Example,
      
          Compact specification:
      
              coordinateSystem
              {
                  origin  (0 0 0);
                  e2      (0 1 0);
                  e3      (0.5 0 0.866025);
              }
      
          Full specification (also accepts the longer 'coordinateRotation'
          sub-dictionary name):
      
              coordinateSystem
              {
                  type    cartesian;
                  origin  (0 0 0);
      
                  rotation
                  {
                      type    axes;
                      e2      (0 1 0);
                      e3      (0.5 0 0.866025);
                  }
              }
      
         This simplifies the input for many cases.
      
      - Additional rotation specification 'none' (an identity rotation):
      
            coordinateSystem
            {
                origin  (0 0 0);
                rotation { type none; }
            }
      
      - Additional rotation specification 'axisAngle', which is similar
        to the -rotate-angle option for transforming points (issue #660).
        For some cases this can be more intuitive.
      
        For example,
      
            rotation
            {
                type    axisAngle;
                axis    (0 1 0);
                angle   30;
            }
        vs.
            rotation
            {
                type    axes;
                e2      (0 1 0);
                e3      (0.5 0 0.866025);
            }
      
      - shorter names (or older longer names) for the coordinate rotation
        specification.
      
           euler         EulerRotation
           starcd        STARCDRotation
           axes          axesRotation
      
      ================
        Coding Style
      ================
      - use Foam::coordSystem namespace for categories of coordinate systems
        (cartesian, cylindrical, indirect). This reduces potential name
        clashes and makes a clearer declaration. Eg,
      
            coordSystem::cartesian csys_;
      
        The older names (eg, cartesianCS, etc) remain available via typedefs.
      
      - added coordinateRotations namespace for better organization and
        reduce potential name clashes.
      6697bb47
  30. 18 Jul, 2018 1 commit
  31. 28 Jun, 2018 1 commit
  32. 26 Jun, 2018 4 commits
  33. 22 Jun, 2018 1 commit