1. 08 Apr, 2019 1 commit
  2. 29 Oct, 2018 1 commit
  3. 17 Oct, 2018 1 commit
    • sergio's avatar
      ENH: · 3d4cb235
      sergio authored
      Update of overRhoPimpleDyMFoam and overInterDyMFoam solvers.
      Adding corresponding tutorials with best possible settings
      The main effort was put on reducing pressure spikes as the
      stencil change with hole cells on the background mesh.
  4. 10 Oct, 2018 1 commit
  5. 09 Aug, 2018 2 commits
  6. 26 Jul, 2018 1 commit
    • Mark Olesen's avatar
      ENH: fvMeshSubset improvements (issue #951) · f2f25336
      Mark Olesen authored
      - what was previously termed 'setLargeCellSubset()' is now simply
        'setCellSubset()' and supports memory efficient interfaces.
        The new parameter ordering avoids ambiguities caused by default
        Old parameter order:
                const labelList& region,
                const label currentRegion,
                const label patchID = -1,
                const bool syncCouples = true
        New parameter order:
                const label regioni,
                const labelUList& regions,
                const label patchID = -1,
                const bool syncCouples = true
         And without ambiguity:
                const labelUList& selectedCells,
                const label patchID = -1,
                const bool syncCouples = true
      - support bitSet directly for specifying the selectedCells for
        memory efficiency and ease of use.
      - Additional constructors to perform setCellSubset() immediately,
        which simplifies coding.
        For example,
                new fvMeshSubset(mesh, selectedCells)
        Or even
            return autoPtr<fvMeshSubset>::New(mesh, selectedCells);
  7. 20 Jun, 2018 1 commit
  8. 30 May, 2018 1 commit
  9. 24 Apr, 2018 1 commit
    • Mark Olesen's avatar
      ENH: new bitSet class and improved PackedList class (closes #751) · 430d0f62
      Mark Olesen authored
      - The bitSet class replaces the old PackedBoolList class.
        The redesign provides better block-wise access and reduced method
        calls. This helps both in cases where the bitSet may be relatively
        sparse, and in cases where advantage of contiguous operations can be
        made. This makes it easier to work with a bitSet as top-level object.
        In addition to the previously available count() method to determine
        if a bitSet is being used, now have simpler queries:
          - all()  - true if all bits in the addressable range are empty
          - any()  - true if any bits are set at all.
          - none() - true if no bits are set.
        These are faster than count() and allow early termination.
        The new test() method tests the value of a single bit position and
        returns a bool without any ambiguity caused by the return type
        (like the get() method), nor the const/non-const access (like
        operator[] has). The name corresponds to what std::bitset uses.
        The new find_first(), find_last(), find_next() methods provide a faster
        means of searching for bits that are set.
        This can be especially useful when using a bitSet to control an
        OLD (with macro):
            forAll(selected, celli)
                if (selected[celli])
                    sumVol += mesh_.cellVolumes()[celli];
        NEW (with const_iterator):
            for (const label celli : selected)
                sumVol += mesh_.cellVolumes()[celli];
            or manually
                label celli = selected.find_first();
                celli != -1;
                celli = selected.find_next()
                sumVol += mesh_.cellVolumes()[celli];
      - When marking up contiguous parts of a bitset, an interval can be
        represented more efficiently as a labelRange of start/size.
        For example,
            if (isA<processorPolyPatch>(pp))
                forAll(pp, i)
            if (isA<processorPolyPatch>(pp))
  10. 17 Apr, 2018 1 commit
  11. 03 Apr, 2018 1 commit
    • Mark Olesen's avatar
      STYLE: more consistent use of dimensioned Zero · 5632ef2d
      Mark Olesen authored
      - when constructing dimensioned fields that are to be zero-initialized,
        it is preferrable to use a form such as
            dimensionedScalar(dims, Zero)
            dimensionedVector(dims, Zero)
        rather than
            dimensionedScalar("0", dims, 0)
            dimensionedVector("zero", dims, vector::zero)
        This reduces clutter and also avoids any suggestion that the name of
        the dimensioned quantity has any influence on the field's name.
        An even shorter version is possible. Eg,
        but reduces the clarity of meaning.
      - NB: UniformDimensionedField is an exception to these style changes
        since it does use the name of the dimensioned type (instead of the
  12. 16 Mar, 2018 1 commit
    • Mark Olesen's avatar
      ENH: code reduction in PackedList, PackedBoolList (issue #751) · 87bcedcc
      Mark Olesen authored
      - eliminate iterators from PackedList since they were unused, had
        lower performance than direct access and added unneeded complexity.
      - eliminate auto-vivify for the PackedList '[] operator.
        The set() method provides any required auto-vivification and
        removing this ability from the '[]' operator allows for a lower
        when accessing the values. Replaced the previous cascade of iterators
        with simpler reference class.
      - (temporarily) eliminate logic and addition operators since
        these contained partially unclear semantics.
      - the new test() method tests the value of a single bit position and
        returns a bool without any ambiguity caused by the return type
        (like the get() method), nor the const/non-const access (like
        operator[] has). The name corresponds to what std::bitset uses.
      - more consistent use of PackedBoolList test(), set(), unset() methods
        for fewer operation and clearer code. Eg,
            if (list.test(index)) ...    |  if (list[index]) ...
            if (!list.test(index)) ...   |  if (list[index] == 0u) ...
            list.set(index);             |  list[index] = 1u;
            list.unset(index);           |  list[index] = 0u;
      - deleted the operator=(const labelUList&) and replaced with a setMany()
        method for more clarity about the intended operation and to avoid any
        potential inadvertent behaviour.
  13. 14 Dec, 2017 1 commit
  14. 20 Nov, 2017 1 commit
  15. 26 Jun, 2017 1 commit
  16. 14 Jun, 2017 1 commit
    • mattijs's avatar
      ENH: overset: Initial release of overset capability. · 6f6429e8
      mattijs authored
      Adds overset discretisation to selected physics:
      - diffusion : overLaplacianDyMFoam
      - incompressible steady : overSimpleFoam
      - incompressible transient : overPimpleDyMFoam
      - compressible transient: overRhoPimpleDyMFoam
      - two-phase VOF: overInterDyMFoam
      The overset method chosen is a parallel, fully implicit implementation
      whereby the interpolation (from donor to acceptor) is inserted as an
      adapted discretisation on the donor cells, such that the resulting matrix
      can be solved using the standard linear solvers.
      Above solvers come with a set of tutorials, showing how to create and set-up
      simple simulations from scratch.