1. 05 Aug, 2020 5 commits
    • Mark OLESEN's avatar
      ENH: combine some phaseSystem selectors into regular .C files · 99e20b3b
      Mark OLESEN authored
      - reduces the number of files, eases code refactoring
    • Mark OLESEN's avatar
    • Mark OLESEN's avatar
      ENH: avoid phaseSystem cyclic dependencies, reduce number of libraries · 915c0785
      Mark OLESEN authored
      Reduce the number of phaseSystems libraries:
      - phaseSystems previously had a number of smaller libraries to provide
        interface and model properties, etc. This potential flexibility was
        never actually used anywhere, but causes cyclic dependencies between
        phaseSystem and the models (and turbulence) that causes extreme
        difficulty for mingw linking (issue #1238).
      - libincompressibleMultiphaseSystems
        - removed: libmassTransferModels
      - libmultiphaseSystem
        - removed: libcompressibleMultiphaseEulerianInterfacialModels
      - libreactingMultiphaseSystem
        - removed: libreactingPhaseSystem
        - removed: libreactingEulerianFvPatchFields
        - removed: libreactingEulerianInterfacialCompositionModels
        - removed: libreactingEulerianInterfacialModels
        - removed: libmultiphaseReactingTurbulenceModels
      - libreactingTwoPhaseSystem
        - removed: libreactingPhaseSystem
        - removed: libreactingEulerianFvPatchFields
        - removed: libreactingEulerianInterfacialCompositionModels
        - removed: libreactingEulerianInterfacialModels
      Avoid duplicate symbol for phaseCompressibleTurbulenceModels
        Common turbulence models are defined in libreactingMultiphaseSystem,
        and libmultiphaseReactingTurbulenceModels is now redundant.
        The libtwoPhaseReactingTurbulenceModels extends the common models
        for reactingTwoPhaseSystem.
    • Mark OLESEN's avatar
      ENH: centralize more libraries in src/phaseSystemModels · 03526e20
      Mark OLESEN authored
      - prelude to code refactoring
          no source code change in this commit, only relocation,
          renaming and adjustment of Make/{files,options}
    • Mark OLESEN's avatar
      ENH: prefer 'model' keyword instead of 'RASModel',... (#149) · 42ce617b
      Mark OLESEN authored
      - since the context (laminar/RAS/LES) is already given by the
        sub-dictionary, it is redundant to use as prefix as well.
      - silently support the longer names as compat methods
  2. 04 Aug, 2020 2 commits
  3. 03 Aug, 2020 1 commit
  4. 31 Jul, 2020 1 commit
  5. 30 Jul, 2020 3 commits
  6. 29 Jul, 2020 1 commit
  7. 28 Jul, 2020 8 commits
    • sergio's avatar
      BUG: Limiting min alpha to SMALL to avoid zero transient term of turbulence model · d0737242
      sergio authored
      In certain turbulence models such as kEpsilon, kOmegaSST, etc when used
      in the multiphase context throw an error in the preconditioner. This
      is due to alpha being zero. Fixes #1789.
    • Mark OLESEN's avatar
    • Mark OLESEN's avatar
    • Mark OLESEN's avatar
      BUG: potential memory leaks in HashPtrTable (#1787) · 65d640e5
      Mark OLESEN authored
      - using HashPtrTable::set() with the same key twice did not guarantee
        proper cleanup of memory since it simply used the underlying
        HashTable::set() without doing anything about the old memory. Now
        check for pre-existing storage and delete it when it does not
        correspond to the newly stored pointer.
        This problem is independent of potential memory slicing previously
        flagged (#1286) and only partially resolved.
    • Mark OLESEN's avatar
      ENH: add get() retrieval of a pointer from PtrLists, HashPtrTable · fa71840d
      Mark OLESEN authored
      - naming similarity with autoPtr, unique_ptr and other containers.
        For UPtrList derivatives, this is equivalent to the existing
        operator(). The read-only variant is also equivalent to the
        single-parameter 'set(label)' method.
        With PtrList<T> list(...) :
            const T* ptr = list.get(10);
            if (ptr)
            if (list.set(10))
        For HashPtrTable there is only a read-only variant which is equivalent
        to testing for existence and for value.
        With HashPtrTable<T> hash(...) :
            const T* ptr = list.get("key");
            if (ptr)
            if (list.found("key"))
                // Fails on null pointer!!
      Use of get() is largely a matter of taste or local coding requirements
    • Mark OLESEN's avatar
      ENH: support emplace methods and std::unique_ptr for PtrList-derivatives · 872c9d37
      Mark OLESEN authored
      - emplace methods
            m.internalCoeffs().emplace(patchi, fc.size(), Zero);
            m.internalCoeffs().set(patchi, new Field<Type>(fc.size(), Zero));
      - handle insert/append of refPtr wherever tmp was already supported
      COMP: incorrect variable names in PtrListOpsTemplates.C
    • Mark OLESEN's avatar
      ENH: HashTable::emplace_set() method, HashPtrTable support for unique_ptr · 4110699d
      Mark OLESEN authored
      - forwarding like the emplace() method, but overwriting existing
        entries as required
      - propagate similar changes to HashPtrTable
        For example, with HashPtrTable<labelList> table(...) :
        With 'insert' semantics
            table.emplace("list1", 1000);
            if (!table.found("list1"))
                table.set("list1", new labelList(1000));
            table.insert("list1", autoPtr<labelList>::New(1000));
        Note that the last example invokes an unnecessary allocation/deletion
        if the insertion is unsuccessful.
        With 'set' semantics:
            table.emplace_set("list1", 15);
            table.set("list1", new labelList(15));
    • Mark OLESEN's avatar
      COMP: fix sloppy (and now ambiguous) use of PtrList::set() · c77afff4
      Mark OLESEN authored
      - constructs such as the following will no longer worked, but that is
        also a good thing.
           ptrlist.set(i, scalarField(nFaces, Zero));
        this called set(.., const tmp<scalarField>&), which meant under
        the hood:
           - create local temporary const scalarField&
           - wrap as const tmp&
           - use tmp::ptr(), to clone the const-ref
        This implies an additional allocation (for the const scalarField&)
        which is immediately discarded. Doubtful that compiler optimization
        would do anything.
  8. 27 Jul, 2020 7 commits
  9. 24 Jul, 2020 1 commit
  10. 23 Jul, 2020 2 commits
  11. 22 Jul, 2020 2 commits
  12. 23 Jul, 2020 3 commits
  13. 21 Jul, 2020 2 commits
    • sergio's avatar
      BUG: Correct evaluate function for ddt0 in CrankNicolson scheme. Fixes · 45982d97
      sergio authored
      The function evaluate was returning true every outer loop, triggering
      the re-calculation of ddt0 in every outer loop.
      The evaluation of the term ddt0 should be performed once per time step.
      The corrected function updates the timeIndex of ddt0 to avoid the
      re-evaluation of this term in the outer loops.
    • Mark OLESEN's avatar
      ENH: support writable reference for tmp (#1775) · be058bec
      Mark OLESEN authored
      - improves flexibility. Can tag a tmp as allowing non-const access to
        the reference and skip additional const_cast in following code. For
            tmp<volScalarField> tfld(nullptr);
            auto* ptr = getObjectPtr<volScalarField>("field");
            if (ptr)
            auto& fld = tfld.ref();
      ENH: renamed tmpNrc to refPtr
      - the name 'refPtr' (reference|pointer) should be easier to remember
        than tmpNrc (tmp, but non-ref-counted).
      - provide tmpNrc typedef and header for code compatibility
      - in some places refPtr and tmp can be used instead of a
        std::reference_wrapper for handling external references.
        Unlike std::reference_wrapper, it can be default constructed
        (holding nothing), whereas reference_wrapper may need a dummy
        reference. However, the lifetime extension of references _may_ be
        better with reference_wrapper.
  14. 20 Jul, 2020 2 commits