1. 02 Aug, 2019 1 commit
  2. 28 Apr, 2019 1 commit
  3. 25 May, 2019 1 commit
    • Mark Olesen's avatar
      COMP: force dlOpen for windows application binaries (#1238) · 66a10099
      Mark Olesen authored
      - when windows portable executables (.exe or .dll) files are loaded,
        their dependent libraries not fully loaded. For OpenFOAM this means
        that the static constructors which are responsible for populating
        run-time selection tables are not triggered, and most of the run-time
        selectable models will simply not be available.
      
      Possible Solution
      =================
      
        Avoid this problem by defining an additional library symbol such as
        the following:
      
            extern "C" void libName_Load() {}
      
        in the respective library, and tag this symbol as 'unresolved' for
        the linker so that it will attempt to resolve it at run-time by
        loading the known libraries until it finds it. The link line would
        resemble the following:
      
            -L/some/path -llibName -ulibName_Load
      
        Pros:
          - Allows precise control of forced library loading
      
        Cons:
          - Moderately verbose adjustment of some source files (even with macro
            wrapping for the declaration).
          - Adjustment of numerous Make/options files and somewhat ad hoc
            in nature.
          - Requires additional care when implementing future libraries and/or
            applications.
      
        - This is the solution taken by the symscape patches (Richard Smith)
      
      Possible Solution
      =================
      
        Avoid this problem by simply force loading all linked libraries.
        This is done by "scraping" the information out of the respective
        Make/options file (after pre-processing) and using that to define
        the library list that will be passed to Foam::dlOpen() at run-time.
      
        Pros:
          - One-time (very) minimal adjustment of the sources and wmake toolchain
          - Automatically applies to future applications
      
        Cons:
          - Possibly larger memory footprint of application (since all dependent
            libraries are loaded).
          - Possible impact on startup time (while loading libraries)
          - More sensitive to build failures. Since the options files are
            read and modified based on the existence of the dependent
            libraries as a preprocessor step, if the libraries are initially
            unavailable for the first attempt at building the application,
            the dependencies will be inaccurate for later (successful) builds.
      
        - This is solution taken by the bluecape patches (Bruno Santos)
      
      Adopted Solution
      ================
      
        The approach taken by Bruno was adopted in a modified form since
        this appears to be the most easily maintained.
      
      Additional Notes
      ================
      
        It is always possible to solve this problem by defining a corresponding
        'libs (...)' entry in the case system/controlDict, which forces a dlOpen
        of the listed libraries. This is obviously less than ideal for large-scale
        changes, but can work to resolve an individual problem.
      
        The peldd utility (https://github.com/gsauthof/pe-util), which is
        also packaged as part of MXE could provide yet another alternative.
        Like ldd it can be used to determine the library dependencies of
        binaries or libraries. This information could be used to define an
        additional load layer for Windows.
      66a10099
  4. 07 Feb, 2019 1 commit
    • Mark Olesen's avatar
      ENH: code adjustments for updated NullObject · 078e3474
      Mark Olesen authored
      - can now safely use labelList::null() instead of emptyLabelList for
        return values. No special treatment required for lists.
      
        Possible replacements:
      
            if (notNull(list) && list.size())  ->  if (list.size())
            if (isNull(list) || list.empty())  ->  if (list.empty())
      
        The receiver may still wish to handle differently to distinguish
        between a null list and an empty list, but no additional special
        protection is required when obtaining sizes, traversing, outputting
        etc.
      078e3474
  5. 06 Feb, 2019 1 commit
  6. 26 Jan, 2019 1 commit
  7. 30 Jan, 2019 1 commit
  8. 11 Jan, 2019 1 commit
  9. 07 Jan, 2019 2 commits
  10. 19 Dec, 2018 1 commit
  11. 11 Dec, 2018 2 commits
  12. 12 Dec, 2018 1 commit
  13. 28 Nov, 2018 1 commit
  14. 21 Nov, 2018 1 commit
  15. 15 Nov, 2018 1 commit
  16. 08 Nov, 2018 1 commit
  17. 19 Oct, 2018 1 commit
  18. 11 Oct, 2018 2 commits
  19. 01 Oct, 2018 1 commit
  20. 28 Sep, 2018 1 commit
  21. 27 Sep, 2018 1 commit
    • Mark Olesen's avatar
      STYLE: add nBoundaryFaces() method to primitiveMesh · 64c3e484
      Mark Olesen authored
      - nBoundaryFaces() is often used and is identical to
        (nFaces() - nInternalFaces()).
      
      - forward the mesh nInternalFaces() and nBoundaryFaces() to
        polyBoundaryMesh as nFaces() and start() respectively,
        for use when operating on a polyBoundaryMesh.
      
      STYLE:
      
      - use identity() function with starting offset when creating boundary maps.
      
           labelList map
           (
               identity(mesh.nBoundaryFaces(), mesh.nInternalFaces())
           );
      
        vs.
      
           labelList map(mesh.nBoundaryFaces());
           forAll(map, i)
           {
               map[i] = mesh.nInternalFaces() + i;
           }
      64c3e484
  22. 09 Aug, 2018 1 commit
  23. 08 Aug, 2018 1 commit
    • Mark Olesen's avatar
      ENH: ignore -noFunctionObjects option when disabled · e0f83938
      Mark Olesen authored
      - With argList::noFunctionObjects() we use the logic added in
        4b933332 (issue #352)
      
        By removing the '-noFunctionObjects' option, we automatically
        suppress the creation of function-objects via Time (with argList
        as a parameter).
        There is generally no need in these cases for an additional
      
            runTime.functionObjects().off()  statement
      
        Use the argList::noFunctionObjects() for more direct configuration
        and reduce unnecessary clutter in the -help information.
      
        In previous versions, the -noFunctionObjects would have been redundant
        anyhow, so we can also just ignore it now instead.
      e0f83938
  24. 02 Aug, 2018 2 commits
    • Mark Olesen's avatar
      ENH: IOobject::selectIO helper method · 88e5334a
      Mark Olesen authored
      - centralizes IOobject handling and treatment of alternative locations.
        If an alternative file location is specified, it will be used instead.
      
      - provide decompositionMethod::canonicalName instead of using
        "decomposeParDict" in various places.
      88e5334a
    • mattijs's avatar
      ENH: snappyHexMesh. Added leak-path detection. · f4ae4f7b
      mattijs authored
      Detects connections (during refinement) between
      locationsInsideMesh and locationsOutsideMesh and
      writes a sampledSet for postprocessing.
      f4ae4f7b
  25. 31 Jul, 2018 1 commit
  26. 30 Jul, 2018 1 commit
  27. 26 Jul, 2018 1 commit
  28. 25 Jul, 2018 2 commits
    • Mark Olesen's avatar
      ENH: fvMeshSubset improvements (issue #951) · dbe0db1d
      Mark Olesen authored
      - what was previously termed 'setLargeCellSubset()' is now simply
        'setCellSubset()' and supports memory efficient interfaces.
      
        The new parameter ordering avoids ambiguities caused by default
        parameters.
      
        Old parameter order:
      
            setLargeCellSubset
            (
                const labelList& region,
                const label currentRegion,
                const label patchID = -1,
                const bool syncCouples = true
            );
      
        New parameter order:
      
            setCellSubset
            (
                const label regioni,
                const labelUList& regions,
                const label patchID = -1,
                const bool syncCouples = true
            );
      
         And without ambiguity:
      
            setCellSubset
            (
                const labelUList& selectedCells,
                const label patchID = -1,
                const bool syncCouples = true
            );
      
      - support bitSet directly for specifying the selectedCells for
        memory efficiency and ease of use.
      
      - Additional constructors to perform setCellSubset() immediately,
        which simplifies coding.
      
        For example,
      
            meshParts.set
            (
                zonei,
                new fvMeshSubset(mesh, selectedCells)
            );
      
        Or even
      
            return autoPtr<fvMeshSubset>::New(mesh, selectedCells);
      dbe0db1d
    • Mark Olesen's avatar
      a6b84927
  29. 24 Jul, 2018 1 commit
  30. 28 Jun, 2018 1 commit
  31. 27 Jun, 2018 1 commit
    • Will Bainbridge's avatar
      fileHandler: Added flush method · 2ae4bf73
      Will Bainbridge authored
      This method waits until all the threads have completed IO operations and
      then clears any cached information about the files on disk. This
      replaces the deactivation of threading by means of zeroing the buffer
      size when writing and reading of a file happen in sequence. It also
      allows paraFoam to update the list of available times.
      
      Patch contributed by Mattijs Janssens
      Resolves bug report https://bugs.openfoam.org/view.php?id=2962
      2ae4bf73
  32. 30 May, 2018 1 commit
  33. 29 May, 2018 1 commit
  34. 17 Jan, 2018 1 commit
    • Mark Olesen's avatar
      BUG: reconstructPar ignores writeLagrangianPositions (fixes #702) · 2ebcb74d
      Mark Olesen authored
      - The central InfoSwitch "writeLagrangianPositions" allows writing an
        additional Lagrangian "positions" file, but these were not being
        written by reconstructPar. These are now also written in reconstructPar
        if the central writeLagrangianPositions InfoSwitch is enabled.
      
      NOTES
      
      - "positions" are reconstructed from the processors "coordinates" file
      
      - decomposePar will not attempt to create or redistribute any
        "positions" files
      2ebcb74d
  35. 22 Dec, 2017 1 commit