1. 28 Jul, 2020 4 commits
    • 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)
            {
                ptr->method();
            }
      
        vs.
            if (list.set(10))
            {
                list[10].method();
            }
      
        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)
            {
                ptr->method();
            }
      
        vs.
            if (list.found("key"))
            {
                // Fails on null pointer!!
                list["key"].method();
            }
      
      Use of get() is largely a matter of taste or local coding requirements
      fa71840d
    • Mark Olesen's avatar
      ENH: support emplace methods and std::unique_ptr for PtrList-derivatives · 872c9d37
      Mark Olesen authored
      - emplace methods
        Eg,
            m.internalCoeffs().emplace(patchi, fc.size(), Zero);
        vs.
            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
      872c9d37
    • 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);
      
        vs
            if (!table.found("list1"))
            {
                table.set("list1", new labelList(1000));
            }
        or
            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);
      
        vs
            table.set("list1", new labelList(15));
      4110699d
    • 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.
      c77afff4
  2. 27 Jul, 2020 4 commits
  3. 24 Jul, 2020 1 commit
  4. 22 Jul, 2020 2 commits
  5. 23 Jul, 2020 3 commits
  6. 21 Jul, 2020 2 commits
    • Sergio Ferraris's avatar
      BUG: Correct evaluate function for ddt0 in CrankNicolson scheme. Fixes · 45982d97
      Sergio Ferraris 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.
      45982d97
    • 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
        example,
      
            tmp<volScalarField> tfld(nullptr);
            auto* ptr = getObjectPtr<volScalarField>("field");
            if (ptr)
            {
                tfld.ref(*ptr);
            }
            else
            {
                tfld.reset(volScalarField::New(...));
            }
            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
      
      NOTE
      
      - 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.
      be058bec
  7. 20 Jul, 2020 1 commit
  8. 17 Jul, 2020 1 commit
  9. 16 Jul, 2020 8 commits
  10. 15 Jul, 2020 2 commits
  11. 14 Jul, 2020 3 commits
    • Andrew Heather's avatar
      Merge branch 'feature-dynamicLibrary' into 'develop' · e2021550
      Andrew Heather authored
      Feature dynamic library - issue #1737
      
      See merge request !375
      e2021550
    • Mark Olesen's avatar
      ENH: mutable libs() access in Time and other classes (#1737) · 1e7c6ea2
      Mark Olesen authored
      - This reflects the pre-existing coding situation where const_cast was
        used throughout to effect the same.
      
      STYLE: fix private/protected access
      
      - CodedField, codedMixedFvPatchField
      1e7c6ea2
    • Mark Olesen's avatar
      ENH: various dlLibraryTable improvements/refinements (#1737) · 41d3e6f1
      Mark Olesen authored
      - libs() singleton method for global library handling
      
      - explicit handling of empty filename for dlLibraryTable open/close.
        Largely worked before, but now be more explicit about its behaviour.
      
      - add (key, dict) constructor and open() methods.
        More similarity to dimensionedType, Enum etc, and there is no
        ambiguity with the templated open().
      
      - construct or open from initializer_list of names
      
      - optional verbosity when opening with auxiliary table,
        avoid duplicate messages or spurious messages for these.
      
      - basename and fullname methods (migrated from dynamicCode).
      
      - centralise low-level load/unload hooks
      
      - adjust close to also dlclose() aliased library names.
      41d3e6f1
  12. 13 Jul, 2020 3 commits
  13. 10 Jul, 2020 1 commit
    • Mark Olesen's avatar
      ENH: update lemon version and linkage directive (#1768) · 6365bab8
      Mark Olesen authored
      - replace `%namespace` directive with simpler `%static` directive.
      
        We always encapsulate Lemon parser routines in an anonymous
        namespace, so a simpler static linkage directive suffices.
      
        This reduces the size of the Lemon patch (program and template).
      6365bab8
  14. 09 Jul, 2020 2 commits
  15. 08 Jul, 2020 1 commit
  16. 03 Jul, 2020 1 commit
  17. 01 Jul, 2020 1 commit