Skip to content
Snippets Groups Projects
  1. Nov 22, 2018
  2. Nov 21, 2018
  3. Nov 06, 2018
  4. Oct 10, 2018
    • Mark OLESEN's avatar
      BUG: wmkdepend sometimes throws (closes #1036) · aafbb672
      Mark OLESEN authored
      - local token shifting was missing when getting the next file chunk
        (while in the middle of parsing that text).
      
        As well as adding the correct shifting, also tag the local buffer
        with nullptr when it is done. Be extra paranoid and check the
        raw buffer range before passing off to std::string.
      aafbb672
  5. Oct 09, 2018
  6. Oct 01, 2018
    • 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
  7. Sep 12, 2018
  8. Jul 31, 2018
  9. Jul 30, 2018
  10. Jul 24, 2018
    • Mark OLESEN's avatar
      COMP: reduce compiler warnings for gcc-7 · 94a89d53
      Mark OLESEN authored
      - ignore implicit-fallthrough for ragel generated code.
      
      - add -Wno-deprecated-declarations for c++LESSWARN.
        These principally associated with older CGAL versions and their use
        of particular mpfr routines.
      94a89d53
  11. Jun 25, 2018
    • Mark OLESEN's avatar
      CONFIG: eliminate most occurances of outdated FOAM_INST_DIR (issue #444) · 831a47b8
      Mark OLESEN authored
      - since 1612, FOAM_INST_DIR and foamInstDir longer have any
        special meanings when sourcing the bashrc or cshrc files.
        Thus no need for special treatment in any of the dispatch wrappers.
      
        Retained FOAM_INST_DIR as (unexported) variable in etc/bashrc,
        just in case people are using patched versions of etc/bashrc
        as part of their installation.
      
      ENH: relax prefix restrictions on foamCreateVideo (issue #904)
      
      - shift the implicit '.' to be part of the default prefix. This allows
        things like "-image myimages_00" to work as might be expected.
      831a47b8
  12. Jun 19, 2018
  13. Jun 01, 2018
  14. May 30, 2018
  15. May 28, 2018
  16. May 16, 2018
  17. Feb 28, 2018
  18. Dec 19, 2017
  19. Dec 17, 2017
  20. Dec 15, 2017
  21. May 07, 2018
    • Mark OLESEN's avatar
      ENH: improvements in the surface sampling infrastructure · b0648f2b
      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.
      b0648f2b
  22. Apr 27, 2018
  23. Apr 26, 2018
    • Mark OLESEN's avatar
      CONFIG: bump API version number to 1804 to account for bitSet · 497dde2b
      Mark OLESEN authored
      - since PackedBoolList is now a compatibility typedef for bitSet,
        it is useful to have an additional means of distinction.
      
      STYLE: simplify internal version tests and compiler defines.
      
      - the API version is now conveyed via the OPENFOAM define directly.
        The older OPENFOAM_PLUS define is provided for existing code.
      497dde2b
  24. Apr 25, 2018
    • Mark OLESEN's avatar
      STYLE: improve wmkdepend parse error message · ebfe4650
      Mark OLESEN authored
      - parsing error state only arises from a missing final newline
        in the file (which the dnl macro does not capture).
        Report with a warning instead of modifying the dnl macro since
        we generally wish to know about this anyhow.
      
      - add missing newline to YEqn.H file.
      ebfe4650
  25. Apr 24, 2018
    • Mark OLESEN's avatar
      CONFIG: adjust make scripts for darwin · 76cb38fb
      Mark OLESEN authored
      - handling of dead links (find -L -delete unsupported)
      
      - remove ignore case flag on 's/../../i' used in have_scotch script.
        It is unneeded and not tolerated by Darwin's sed.
      
      - avoid embedded comments in EXE_INC (Make/options files), which do
        not work well with the OSX LLVM cpp.
        It strips out the comments but also removes the continuation char.
      
      STYLE: adjust notes about paraview library locations
      76cb38fb
    • Mark OLESEN's avatar
      CONFIG: remove WM_LINK_LANGUAGE env variable (always c++) · 2768500d
      Mark OLESEN authored
      - was somewhat redundant in wmake/rules/General/general anyhow
      2768500d
    • Mark OLESEN's avatar
      ENH: improve handling of ThirdParty packages · b4d38ab4
      Mark OLESEN authored
      - generalize some of the library extensions (.so vs .dylib).
        Provide as wmake 'sysFunctions'
      
      - added note about unsupported/incomplete system support
      
      - centralize detection of ThirdParty packages into wmake/ subdirectory
        by providing a series of scripts in the spirit of GNU autoconfig.
        For example,
      
            have_boost, have_readline, have_scotch, ...
      
        Each of the `have_<package>` scripts will generally provide the
        following type of functions:
      
            have_<package>          # detection
            no_<package>            # reset
            echo_<package>          # echoing
      
        and the following type of variables:
      
            HAVE_<package>          # unset or 'true'
            <package>_ARCH_PATH     # root for <package>
            <package>_INC_DIR       # include directory for <package>
            <package>_LIB_DIR       # library directory for <package>
      
        This simplifies the calling scripts:
      
            if have_metis
            then
                wmake metisDecomp
            fi
      
        As well as reducing clutter in the corresponding Make/options:
      
            EXE_INC = \
                -I$(METIS_INC_DIR) \
                -I../decompositionMethods/lnInclude
      
            LIB_LIBS = \
                -L$(METIS_LIB_DIR) -lmetis
      
        Any additional modifications (platform-specific or for an external build
        system) can now be made centrally.
      b4d38ab4
    • Mark OLESEN's avatar
      COMP: sinclude platform-specific CGAL rules · 29c020f5
      Mark OLESEN authored
      - permits platform-specific override of the general CGAL rules
      29c020f5
  26. Apr 20, 2018
    • Mark OLESEN's avatar
      BUG: wmkdepend finds 'include' in multi-line comments (closes #784) · 1f25c597
      Mark OLESEN authored
      - the previous grammar used
      
            '/*' { fgoto comment; }
      
        to start processing multi-line comments and
      
            comment := any* :>> '*/' @{ fgoto main; };
      
        as a finishing action to return to normal lexing, but seemed not to
        have been triggered properly.
      
        Now simply trap in a single rule:
      
            '/*' any* :>> '*/';             # Multi-line comment
      
      STYLE: use more compact dnl (delete to newline)
      
        OLD:   [^\n]* '\n'
        NEW:   (any* -- '\n') '\n'
      
        eliminates the intermediate state
      1f25c597
  27. Apr 17, 2018
  28. Apr 13, 2018
  29. Apr 12, 2018
    • Mark OLESEN's avatar
      ENH: make it easier to switch between the various make dependencies programs. · de72a04a
      Mark OLESEN authored
      - However, the new ragel-based parser is much faster
        than the others, and does not cause 'too many open files' error
        that the flex-based parser does (issue #784).
      
        The timings (using src/sampling as being somewhat representative)
      
          $ wclean; wmakeLnInclude -u .; time wmake -s dep
      
              3.4s  wmkdepend (ragel) [now default]
              5.7s  wmkdep (flex)
              6.1s  cpp -M
      
      - The makeDepend script is for testing purposes only, but could used as
        a hook for other dependency generation systems (eg, ninja).
        It simply wraps 'cpp -M' in a form that is calling compatible with
        wmkdepend.
      
      BUG: wmkdepend parser was missing optional leading space on #include match
      
      STYLE: use -G2 (goto-based) option for wmkdepend state machine
      
      - the machine is compact with few states and lends itself to this
      de72a04a
  30. Apr 09, 2018
  31. Apr 11, 2018
    • Mark OLESEN's avatar
      ENH: replace flex-based wmkdep with ragel-based parser (issue #784) · 1676bd40
      Mark OLESEN authored
        This is similar to efforts (Feb 2010) but using ragel
        (https://en.wikipedia.org/wiki/Ragel) instead of the now defunct
        coco/r. The modified commit message from 2010:
      
      ENH: add C++-based wmkdepend parser (uses ragel grammar).
      
      - This avoids dependency on lex/flex and provides better encapsulation
        for buffer switching. As a result, the maximum number of open files
        only corresponds to the include depth.
      
      --
      
      Note that the flex source and rules are still available, but are not
      deactivate (see wmake/rules/General/transform)
      1676bd40
  32. Apr 08, 2018
  33. Mar 28, 2018
  34. Mar 21, 2018
  35. Mar 05, 2018