Skip to content
Snippets Groups Projects
  1. Aug 11, 2020
    • Mark OLESEN's avatar
      ENH: add bin/tools/createMingwRuntime helper · 18c68e6b
      Mark OLESEN authored
        Script to copy/create mingw run-time installation from the Linux
        cross-compilation. Packs everything into a tar or a zip file.
      
        To accommodate Windows, all .dll files are also placed in the
        platforms bin/ directory where they are easily found via the PATH.
      
        Futhermore, ThirdParty dll files (including those from mingw itself)
        are also placed in the same directory.
      
      ---
      Steps
        - bundles common files and directories (bin, etc, META-INFO, ...)
      
        - copies .exe files from FOAM_APPBIN and .dll files from FOAM_LIBBIN
          to the new target platforms/win64MingwDPInt32Opt/bin.
      
        - copies mingw sys-root .dll files to the new target
          platforms/win64MingwDPInt32Opt/bin
      
        - copies other ThirdParty dll files (scotch, fftw, etc) to
          platforms/win64MingwDPInt32Opt/bin
      
        - copies tutorials (can be deactivated)
      
      ---
      Note
          Can only be called when the linux64Mingw environment is active.
      18c68e6b
    • Mark OLESEN's avatar
      ENH: improvements for FOAM_CONFIG_ETC · a6e86caa
      Mark OLESEN authored
      - handle relative directory names for FOAM_CONFIG_ETC
      a6e86caa
    • Mark OLESEN's avatar
      ENH: support construct/reset refPtr from autoPtr and unique_ptr (#1775) · 6a1efe3b
      Mark OLESEN authored
      - makes it easier to use in combination with various 'New' selectors,
        which mostly return an autoPtr.
      
      ENH: add very simple FFT test
      
      - basic sanity test that the library links properly
      6a1efe3b
  2. Aug 10, 2020
    • Mark OLESEN's avatar
    • Mark OLESEN's avatar
      ENH: direct access to wrapped ifstream/ofstream with compression (#1805) · 6e2b7be9
      Mark OLESEN authored
      - previously hidden as Detail::[IO]FstreamAllocator, now exposed
        directly as [io]fstreamPointer, which allows reuse for
        std::ifstream, std::ofstream wrapping, without the additional
        ISstream, OSstream layers.
      
        These stream pointers have some characteristics similar to a
        unique_ptr.
      
      - restrict direct gzstream usage to two files (fstreamPointers.C,
        gzstream.C) which improves localization and makes it simpler to
        enable/disable with the `HAVE_LIBZ` define.
      
        The HAVE_LIBZ define is currently simply hard-coded in the
        Make/options.
      
        If compiled WITHOUT libz support:
          - reading gz files : FatalError
          - writing gz files : emit warning and downgrade to uncompressed
          - warn if compression is specified in the case controlDict
            and downgrade to uncompressed
      
      ENH: minor updates to gzstream interface for C++11
      
      - support construct/open with std::string for the file names.
      
      CONFIG: provisioning for have_libz detection as wmake/script
      6e2b7be9
  3. Aug 07, 2020
  4. Aug 06, 2020
  5. Aug 05, 2020
  6. Aug 04, 2020
  7. Aug 03, 2020
  8. Jul 31, 2020
  9. Jul 30, 2020
  10. Jul 29, 2020
  11. Jul 28, 2020
    • 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.
      d0737242
    • 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.
      65d640e5
    • 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
  12. Jul 27, 2020