1. 25 Jun, 2019 1 commit
  2. 19 Jun, 2019 1 commit
  3. 06 Jun, 2019 1 commit
  4. 20 Feb, 2019 1 commit
  5. 12 Feb, 2019 1 commit
  6. 11 Feb, 2019 1 commit
  7. 08 Feb, 2019 1 commit
  8. 20 Dec, 2018 1 commit
  9. 13 Dec, 2018 1 commit
  10. 12 Dec, 2018 1 commit
    • Mark OLESEN's avatar
      ENH: extend flexibility of abort function object (#1119) · b49c8fcc
      Mark OLESEN authored
      - Now also responds to the contents of the trigger file,
        processing action= contents similar to used with external coupling.
        Previously it only handled an action that was defined in the
        dictionary. With this update, the user can chose a diferent action
        simply by echoing the appropriate action string into the trigger
  11. 02 Dec, 2018 1 commit
    • Mark OLESEN's avatar
      TUT: use defaultPatch for naming instead of explicit Default_Boundary_Region · a04f472f
      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.
  12. 05 Oct, 2018 1 commit
    • Mark OLESEN's avatar
      ENH: improve, simplify, rationalize coordinate system handling (issue #863) · c75d5118
      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
      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);
                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,
        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.
          Compact specification:
                  origin  (0 0 0);
                  e2      (0 1 0);
                  e3      (0.5 0 0.866025);
          Full specification (also accepts the longer 'coordinateRotation'
          sub-dictionary name):
                  type    cartesian;
                  origin  (0 0 0);
                      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):
                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,
                type    axisAngle;
                axis    (0 1 0);
                angle   30;
                type    axes;
                e2      (0 1 0);
                e3      (0.5 0 0.866025);
      - shorter names (or older longer names) for the coordinate rotation
           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.
  13. 19 Sep, 2018 2 commits
    • Mark OLESEN's avatar
      ENH: new sampling type "surfaceCut" · a7f3eb06
      Mark OLESEN authored
      - an alternative to distanceSurface (with distance zero) that uses
        a cell cutting approach instead of an iso-surface.
    • Mark OLESEN's avatar
      ENH: improve distanceSurface handling (issue #1012) · 0183fb13
      Mark OLESEN authored
      - 'signed' input parameter only mandatory for distance > 0.
        A distance <= 0 is always signed and the input parameter is ignored.
      - Use normal distance when distance == 0. This has no effect when
        the surface has no open edges, but improves on rounding issues
        around the zero crossing when the surface has open edges.
        This may still need future revisiting.
  14. 07 Aug, 2018 1 commit
    • Mark OLESEN's avatar
      ENH: new cuttingPlane cutting scheme · 73ce991b
      Mark OLESEN authored
      - takes a direct approach of determining which cells are cut and walks
        the cell faces directly to build the resulting surface.
      - better handling of corner cases.
        * Avoids redundant points when the cut passes exactly through a
          mesh point.
        * Supresses generation of duplicates faces when the plane cut
          coincides exactly with a mesh face.
      - for severely concave cells where the plane cuts a face multiple times
        there is currently no remedial action taken, except to note the
        failure and unwind the insertion of the corresponding points and
  15. 18 Jul, 2018 1 commit
  16. 11 Jul, 2018 1 commit
  17. 28 Jun, 2018 2 commits
  18. 26 Jun, 2018 1 commit
  19. 22 Jun, 2018 3 commits
  20. 21 Jun, 2018 2 commits
  21. 12 Jun, 2018 1 commit
  22. 16 May, 2018 1 commit
  23. 07 May, 2018 2 commits
    • Mark OLESEN's avatar
      BUG: collated ensight not working with isosurfaces (closes #318) · b07abfc7
      Mark OLESEN authored
      - the problem arises since the various surface writers are stateless.
        The collated output format hacks around this limitation by adding in
        its own fieldDict caching (to disk).
        Now include an updateMesh() method to hook into geometry changes.
        This is considered a stop-gap measure until the surface output
        handling is improved.
    • Mark OLESEN's avatar
      ENH: improvements in the surface sampling infrastructure · 6baffa13
      Mark OLESEN authored
      - improvement documentation for surface sampling.
      - can now specify alternative sampling scheme for obtaining the
        face values instead of just using the "cell" value. For example,
            sampleScheme    cellPoint;
        This can be useful for cases when the surface is close to a boundary
        cell and there are large gradients in the sampled field.
      - distanceSurface now handles non-closed surfaces more robustly.
        Unknown regions (not inside or outside) are marked internally and
        excluded from consideration. This allows use of 'signed' surfaces
        where not previously possible.
  24. 11 Apr, 2018 1 commit
    • Mark OLESEN's avatar
      ENH: additional text expansion shortcuts (issue #792) · 2761dfee
      Mark OLESEN authored
      Support the following expansions when they occur at the start of a
          Short-form       Equivalent
          =========       ===========
            <etc>/          ~OpenFOAM/   (as per foamEtcFile)
            <case>/         $FOAM_CASE/
            <constant>/     $FOAM_CASE/constant/
            <system>/       $FOAM_CASE/system/
      These can be used in fileName expansions to improve clarity and reduce
      some typing
           "<constant>/reactions"   vs  "$FOAM_CASE/constant/reactions"
  25. 22 Mar, 2018 1 commit
  26. 30 Nov, 2017 1 commit
    • Mark OLESEN's avatar
      ENH: region-wise decomposition specification for decomposeParDict · 0f3932b3
      Mark OLESEN authored
        Within decomposeParDict, it is now possible to specify a different
        decomposition method, methods coefficients or number of subdomains
        for each region individually.
        The top-level numberOfSubdomains remains mandatory, since this
        specifies the number of domains for the entire simulation.
        The individual regions may use the same number or fewer domains.
        Any optional method coefficients can be specified in a general
        "coeffs" entry or a method-specific one, eg "metisCoeffs".
        For multiLevel, only the method-specific "multiLevelCoeffs" dictionary
        is used, and is also mandatory.
      ENH: shortcut specification for multiLevel.
        In addition to the longer dictionary form, it is also possible to
        use a shorter notation for multiLevel decomposition when the same
        decomposition method applies to each level.
  27. 20 Oct, 2017 1 commit
  28. 03 Aug, 2017 1 commit
    • Mark OLESEN's avatar
      TUT: use general 'scale' instead of 'convertToMeters' in blockMeshDict · ab84869c
      Mark OLESEN authored
      - although this has been supported for many years, the tutorials
        continued to use "convertToMeters" entry, which is specific to blockMesh.
        The "scale" is more consistent with other dictionaries.
      - ignore "scale 0;" (treat as no scaling) for blockMeshDict,
        consistent with use elsewhere.
  29. 17 Jul, 2017 1 commit
  30. 07 Jul, 2017 1 commit
  31. 27 Jun, 2017 1 commit
  32. 21 Jun, 2017 1 commit
  33. 13 Apr, 2017 1 commit
    • Henry Weller's avatar
      fvOptions: The "<type>Coeffs" sub-dictionary is now optional · e3c67dc1
      Henry Weller authored
      For example the actuationDiskSource fvOption may now be specified
          type            actuationDiskSource;
          fields      (U);
          selectionMode   cellSet;
          cellSet         actuationDisk1;
          diskDir         (1 0 0);    // Orientation of the disk
          Cp              0.386;
          Ct              0.58;
          diskArea        40;
          upstreamPoint   (581849 4785810 1065);
      rather than
          type            actuationDiskSource;
          active          on;
              fields      (U);
              selectionMode   cellSet;
              cellSet         actuationDisk1;
              diskDir         (1 0 0);    // Orientation of the disk
              Cp              0.386;
              Ct              0.58;
              diskArea        40;
              upstreamPoint   (581849 4785810 1065);
      but this form is supported for backward compatibility.
  34. 03 Apr, 2017 1 commit