1. 26 Jun, 2019 2 commits
  2. 25 Jun, 2019 1 commit
  3. 24 Jun, 2019 2 commits
  4. 20 Jun, 2019 1 commit
  5. 19 Jun, 2019 1 commit
    • Vaggelis Papoutsis's avatar
      CONTRIB: New adjoint optimisation and tools · 32b7d7c2
      Vaggelis Papoutsis authored
      A set of libraries and executables creating a workflow for performing
      gradient-based optimisation loops. The main executable (adjointOptimisationFoam)
      solves the flow (primal) equations, followed by the adjoint equations and,
      eventually, the computation of sensitivity derivatives.
      
      Current functionality supports the solution of the adjoint equations for
      incompressible turbulent flows, including the adjoint to the Spalart-Allmaras
      turbulence model and the adjoint to the nutUSpaldingWallFunction, [1], [2].
      
      Sensitivity derivatives are computed with respect to the normal displacement of
      boundary wall nodes/faces (the so-called sensitivity maps) following the
      Enhanced Surface Integrals (E-SI) formulation, [3].
      
      The software was developed by PCOpt/NTUA and FOSS GP, with contributions from
      
      Dr. Evangelos Papoutsis-Kiachagias,
      Konstantinos Gkaragounis,
      Professor Kyriakos Giannakoglou,
      Andy Heather
      
      and contributions in earlier version from
      
      Dr. Ioannis Kavvadias,
      Dr. Alexandros Zymaris,
      Dr. Dimitrios Papadimitriou
      
      [1] A.S. Zymaris, D.I. Papadimitriou, K.C. Giannakoglou, and C. Othmer.
      Continuous adjoint approach to the Spalart-Allmaras turbulence model for
      incompressible flows. Computers & Fluids, 38(8):1528–1538, 2009.
      
      [2] E.M. Papoutsis-Kiachagias and K.C. Giannakoglou. Continuous adjoint methods
      for turbulent flows, applied to shape and topology optimization: Industrial
      applications. 23(2):255–299, 2016.
      
      [3] I.S. Kavvadias, E.M. Papoutsis-Kiachagias, and K.C. Giannakoglou. On the
      proper treatment of grid sensitivities in continuous adjoint methods for shape
      optimization. Journal of Computational Physics, 301:1–18, 2015.
      
      Integration into the official OpenFOAM release by OpenCFD
      32b7d7c2
  6. 14 Jun, 2019 1 commit
  7. 13 Jun, 2019 4 commits
  8. 12 Jun, 2019 1 commit
  9. 11 Jun, 2019 1 commit
  10. 07 Jun, 2019 1 commit
    • Sergio Ferraris's avatar
      INT: Org integration of VOF, Euler phase solvers and models. · bf912841
      Sergio Ferraris authored
      Integration of VOF MULES new interfaces. Update of VOF solvers and all instances
      of MULES in the code.
      Integration of reactingTwoPhaseEuler and reactingMultiphaseEuler solvers and sub-models
      Updating reactingEuler tutorials accordingly (most of them tested)
      
      New eRefConst thermo used in tutorials. Some modifications at thermo specie level
      affecting mostly eThermo. hThermo mostly unaffected
      
      New chtMultiRegionTwoPhaseEulerFoam solver for quenching and tutorial.
      
      Phases sub-models for reactingTwoPhaseEuler and reactingMultiphaseEuler were moved
      to src/phaseSystemModels/reactingEulerFoam in order to be used by BC for
      chtMultiRegionTwoPhaseEulerFoam.
      
      Update of interCondensatingEvaporatingFoam solver.
      bf912841
  11. 05 Jun, 2019 2 commits
  12. 04 Jun, 2019 3 commits
  13. 03 Jun, 2019 1 commit
    • Mark Olesen's avatar
      ENH: add wmake -debug option · 872a7788
      Mark Olesen authored
      - forces c++DBUG='-DFULLDEBUG -g -O0' for the compilation, to allow
        localized debugging during development without file editing and
        while retaining the WM_COMPILE_OPTION (eg, Opt)
      
        Note that switching between 'wmake' and 'wmake -debug' will not
        cause existing targets to be rebuilt. As before, these are driven by
        the dependencies. An intermediate wclean may thus be required.
      872a7788
  14. 31 May, 2019 1 commit
    • Kutalmis Bercin's avatar
      ENH: partial overhaul of Matrix type (#1220) · 6f7c7d8c
      Kutalmis Bercin 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
      6f7c7d8c
  15. 30 May, 2019 2 commits
  16. 28 May, 2019 1 commit
  17. 27 May, 2019 2 commits
    • Mark Olesen's avatar
      STYLE: eliminate complex constants that are duplications of pTraits · 64dfaa77
      Mark Olesen authored
      - eg pTraits<complex>::zero, pTraits<complex>::one instead.
        This is consistent with other primitives such as scalar, label etc.
      64dfaa77
    • Mark Olesen's avatar
      COMP: force dlOpen for windows application binaries (#1238) · b585b98a
      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.
      b585b98a
  18. 23 May, 2019 1 commit
  19. 22 May, 2019 4 commits
    • Mark Olesen's avatar
      STYLE: avoid deprecated lookup methods · 6ad85e96
      Mark Olesen authored
      6ad85e96
    • Mark Olesen's avatar
      ENH: improvements, modernization of matrix containers (#1220) · 1a60bb4c
      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
      1a60bb4c
    • Kutalmis Bercin's avatar
      ENH: add sign(), csign() methods for complex · a9688d07
      Kutalmis Bercin authored
      - use std::hypot for complex mag() instead of long-hand version
      
      - Detail::conj() function for complex or non-complex
      a9688d07
    • Mark Olesen's avatar
      ENH: dictionary checking methods with predicates on the input values · e3d91a11
      Mark Olesen authored
      - can be used to check the validity of input values.
      
      Example:
      
          dict.getCheck<label>("nIters", greaterOp1<label>(0));
          dict.getCheck<scalar>("relax", scalarMinMax::zero_one());
      
      - use 'get' prefix for more regular dictionary methods.
        Eg, getOrDefault() as alternative to lookupOrDefault()
      
      - additional ops for convenient construction of predicates
      
      ENH: make dictionary writeOptionalEntries integer
      
      - allow triggering of Fatal if default values are used
      
      ENH: additional scalarRange static methods: ge0, gt0, zero_one
      
      - use GREAT instead of VGREAT for internal placeholders
      
      - additional MinMax static methods: gt, le
      e3d91a11
  20. 21 May, 2019 2 commits
  21. 10 May, 2019 2 commits
  22. 08 May, 2019 3 commits
    • Mark Olesen's avatar
      Revert "COMP: combine twoPhaseProperties library into interfaceProperties" · 598c8487
      Mark Olesen authored
      Modified revert of commit 50e21a9b.
      
      - The "alphaContactAngleFvPatchScalarField" occurs in several
        places in the code base:
      
          - as abstract class for two-phase properties
          - in various multiphase solvers
      
        To resolve potential linking conflicts, renamed the abstract class
        as "alphaContactAngleTwoPhaseFvPatchScalarField" instead.
      
        This permits potential linking of two-phase and multi-phase
        libraries without symbol conflicts and has no effect on concrete
        uses of two-phase alphaContactAngle boudary conditions.
      598c8487
    • Mark Olesen's avatar
      3f8c99c8
    • Mark Olesen's avatar
      ENH: additional HashTable emplace/insert/set methods (#1286) · 9d8899ca
      Mark Olesen authored
      - support move insert/set and emplace insertion.
      
        These adjustments can be used for improved memory efficiency, and
        allow hash tables of non-copyable objects (eg, std::unique_ptr).
      
      - extend special HashTable output treatment to include pointer-like
        objects such as autoPtr and unique_ptr.
      
      ENH: HashTable::at() method with checking. Fatal if entry does not exist.
      9d8899ca
  23. 07 May, 2019 1 commit