Skip to content
Snippets Groups Projects
  1. May 23, 2019
    • Kutalmış Berçin's avatar
      ENH: partial overhaul of Matrix type (#1220) · 745624c0
      Kutalmış Berçin authored
      - additional operators:
        + compound assignment
        + inner product: operator&
        + outer product: operator^
      
      - additional functions:
         - MatrixBlock methods: subColumn, subRow, subMatrix
         - L2 norms for matrix or column
         - trace, diag, round, transpose
      
      - MatrixBlock methods: col(), block() are deprecated since their
        access patterns with (size, offset) are unnatural/unwieldy.
      
      - verifications by test/Matrix/Test-Matrix
      745624c0
  2. May 31, 2019
  3. May 23, 2019
    • Andrew Heather's avatar
      ENH: Added new hydrostatic pressure function object · 1523160c
      Andrew Heather authored
      Calculates and outputs the pressure fields p_rgh and ph_rgh based on the
      option that was previously hard-coded in the fireFoam solver
      
      Usage
          Example of function object specification to calculate hydrostatic pressure:
          \verbatim
          hydrostaticPressure1
          {
              type        hydrostaticPressure;
              libs        ("libinitialisationFunctionObjects.so");
              ...
          }
          \endverbatim
      
          Where the entries comprise:
          \table
              Property     | Description             | Required    | Default value
              log          | Log to standard output  | no          | yes
              p_rgh        | Name of p_rgh field     | no          | p_rgh
              ph_rgh       | Name of ph_rgh field    | no          | ph_rgh
              pRef         | Name of pressure ref field | no       | pRef
              rho          | Name of density field   | no          | rho
              U            | Name of velocity field  | no          | U
              gh           | Name of gravity*height volume field  | no | gh
              ghf          | Name of gravity*height surface field | no | ghf
              nCorrectors  | Number of correctors when solving ph_rgh | no | 5
          \endtable
      
      Note
          Calculates the hydrostatic pressure on construction/re-initialisation;
          the execute and write functions are not used.
      1523160c
  4. May 30, 2019
  5. May 29, 2019
  6. May 23, 2019
  7. Feb 03, 2019
  8. May 28, 2019
  9. Feb 10, 2019
  10. May 27, 2019
  11. May 25, 2019
    • 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
  12. May 23, 2019
  13. May 22, 2019
  14. May 20, 2019
  15. May 22, 2019
    • Mark OLESEN's avatar
      ENH: improvements, modernization of matrix containers (#1220) · 061eb53f
      Mark OLESEN authored
      - add iterators, begin/end, empty() methods for STL behaviour.
        Use standard algorithms where possible
           * std::fill, std::copy
           * std::min_element, std::max_element
      
      - access methods consistent with other OpenFOAM containers:
           * data(), cdata(), uniform()
      
      - Use ListPolicy to impose output line breaks
      
      - Can recover matrix storage for re-use elsewhere.
        For example, to populate values with 2D i-j addressing and later
        release it as flat linear storage.
      
      - construct/assign moveable
      
      - added minMax() function for Matrix
      
      - additional inplace +=, -=, *=, /= operations
      
      - add named methods at() and rowData() to Matrix.
        Allows a better distinction between linear and row-based addressing
      
      - low-level matrix solve on List/UList instead of Field
      061eb53f
  16. May 21, 2019
  17. May 22, 2019
  18. May 20, 2019
  19. May 15, 2019
  20. May 22, 2019
  21. May 21, 2019
  22. May 20, 2019