1. 03 Dec, 2018 1 commit
    • sergio's avatar
      ENH: · 9893e623
      sergio authored
      Adding reflecting fluxes to Solar load radiation model.
      Adding functionality to the boundary radiation models and new
      place holder for basic wall types such as transparent, opaqueDiffusive,
      opaqueReflective,etc.
      Changing radiation wall models to run time selectable.
      Adding multi-band capabilities to VF model and improving the set up
      for using solar loads in VF and fvDOM radiation models.
      9893e623
  2. 28 Feb, 2019 1 commit
  3. 07 Jan, 2019 1 commit
  4. 13 Feb, 2019 1 commit
  5. 06 Feb, 2019 1 commit
  6. 18 Jan, 2019 1 commit
  7. 17 Jan, 2019 1 commit
  8. 09 Jan, 2019 1 commit
  9. 11 Dec, 2018 1 commit
    • Mark Olesen's avatar
      ENH: use Zero when zero-initializing types · 1d85fecf
      Mark Olesen authored
      - makes the intent clearer and avoids the need for additional
        constructor casting. Eg,
      
            labelList(10, Zero)    vs.  labelList(10, 0)
            scalarField(10, Zero)  vs.  scalarField(10, scalar(0))
            vectorField(10, Zero)  vs.  vectorField(10, vector::zero)
      1d85fecf
  10. 18 Oct, 2018 1 commit
    • Mark Olesen's avatar
      ENH: cleanup of Enum class · 3b745122
      Mark Olesen authored
      - more dictionary-like methods, enforce keyType::LITERAL for all
        lookups to avoid any spurious keyword matching.
      
      - new readEntry, readIfPresent methods
      
      - The get() method replaces the now deprecate lookup() method.
      
      - Deprecate lookupOrFailsafe()
        Failsafe behaviour is now an optional parameter for lookupOrDefault,
        which makes it easier to tailor behaviour at runtime.
      
      - output of the names is now always flatted without line-breaks.
        Thus,
      
           os << flatOutput(someEnumNames.names()) << nl;
           os << someEnumNames << nl;
      
        both generate the same output.
      
      - Constructor now uses C-string (const char*) directly instead of
        Foam::word in its initializer_list.
      
      - Remove special enum + initializer_list constructor form since
        it can create unbounded lookup indices.
      
      - Removd old hasEnum, hasName forms that were provided during initial
        transition from NamedEnum.
      
      - Added static_assert on Enum contents to restrict to enum or
        integral values.  Should not likely be using this class to enumerate
        other things since it internally uses an 'int' for its values.
      
        Changed volumeType accordingly to enumerate on its type (enum),
        not the class itself.
      3b745122
  11. 12 Oct, 2018 1 commit
    • Mark Olesen's avatar
      ENH: avoid readScalar, readLabel etc from dictionary (#762, #1033) · 8eddcc07
      Mark Olesen authored
      - use the dictionary 'get' methods instead of readScalar for
        additional checking
      
           Unchecked:  readScalar(dict.lookup("key"));
           Checked:    dict.get<scalar>("key");
      
      - In templated classes that also inherit from a dictionary, an additional
        'template' keyword will be required. Eg,
      
           this->coeffsDict().template get<scalar>("key");
      
        For this common use case, the predefined getXXX shortcuts may be
        useful. Eg,
      
           this->coeffsDict().getScalar("key");
      8eddcc07
  12. 01 Oct, 2018 1 commit
  13. 27 Sep, 2018 1 commit
    • Mark Olesen's avatar
      STYLE: add nBoundaryFaces() method to primitiveMesh · 64c3e484
      Mark Olesen authored
      - nBoundaryFaces() is often used and is identical to
        (nFaces() - nInternalFaces()).
      
      - forward the mesh nInternalFaces() and nBoundaryFaces() to
        polyBoundaryMesh as nFaces() and start() respectively,
        for use when operating on a polyBoundaryMesh.
      
      STYLE:
      
      - use identity() function with starting offset when creating boundary maps.
      
           labelList map
           (
               identity(mesh.nBoundaryFaces(), mesh.nInternalFaces())
           );
      
        vs.
      
           labelList map(mesh.nBoundaryFaces());
           forAll(map, i)
           {
               map[i] = mesh.nInternalFaces() + i;
           }
      64c3e484
  14. 08 Aug, 2018 1 commit
  15. 03 Aug, 2018 2 commits
    • Mark Olesen's avatar
      ENH: additional methods and improvements to plane · de2eed3e
      Mark Olesen authored
      - signedDistance() method is like distance() but retains
        the positive/negative sign for the side of the plane.
      
      - the sign() method returns the sign as -1,0,+1 integer for
        classification purposes where it is important to distinguish between
        a zero value and a positive value (eg, for cutting). Optional
        tolerance can be supplied to round for zero.
      
      - refactor and inlined simple and frequently used methods.
      
      - add boundBox faceCentre() method, which can be useful for creating
        clipping planes from a bounding box.
        Relocated treeBoundBox faceNormals to boundBox since they apply
        equally there - the meaning of the faces (x-min, x-max, etc)
        is the same, even if the point addressing for the faces differs.
      de2eed3e
    • Mark Olesen's avatar
      ENH: avoid blockMesh removal of files for special cases (issue #963) · 319e09e3
      Mark Olesen authored
      - do not remove if the dictionary failed to load.
      - do not remove if -blockTopology was used.
      319e09e3
  16. 26 Jul, 2018 1 commit
  17. 10 Aug, 2018 2 commits
  18. 30 May, 2018 1 commit
  19. 29 May, 2018 1 commit
  20. 05 Mar, 2018 1 commit
    • Mark Olesen's avatar
      STYLE: use direct iteration for HashSet · 4fe8ed82
      Mark Olesen authored
      - The iterator for a HashSet dereferences directly to its key.
      
      - Eg,
      
            for (const label patchi : patchSet)
            {
                ...
            }
        vs.
            forAllConstIter(labelHashSet, patchSet, iter)
            {
                const label patchi = iter.key();
                ...
            }
      4fe8ed82
  21. 28 Mar, 2018 1 commit
  22. 14 Mar, 2018 1 commit
  23. 07 Mar, 2018 1 commit
    • Mark Olesen's avatar
      ENH: new bitSet class and improved PackedList class (closes #751) · bac943e6
      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
        conditional:
      
        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
      
            for
            (
                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,
      
        OLD:
      
            if (isA<processorPolyPatch>(pp))
            {
                forAll(pp, i)
                {
                    ignoreFaces.set(i);
                }
            }
      
        NEW:
      
            if (isA<processorPolyPatch>(pp))
            {
                ignoreFaces.set(pp.range());
            }
      bac943e6
  24. 05 Mar, 2018 1 commit
  25. 26 Feb, 2018 2 commits
    • Mark Olesen's avatar
    • Mark Olesen's avatar
      ENH: cleanup autoPtr class (issue #639) · 660f3e54
      Mark Olesen authored
      Improve alignment of its behaviour with std::unique_ptr
      
        - element_type typedef
        - release() method - identical to ptr() method
        - get() method to get the pointer without checking and without releasing it.
        - operator*() for dereferencing
      
      Method name changes
      
        - renamed rawPtr() to get()
        - renamed rawRef() to ref(), removed unused const version.
      
      Removed methods/operators
      
        - assignment from a raw pointer was deleted (was rarely used).
          Can be convenient, but uncontrolled and potentially unsafe.
          Do allow assignment from a literal nullptr though, since this
          can never leak (and also corresponds to the unique_ptr API).
      
      Additional methods
      
        - clone() method: forwards to the clone() method of the underlying
          data object with argument forwarding.
      
        - reset(autoPtr&&) as an alternative to operator=(autoPtr&&)
      
      STYLE: avoid implicit conversion from autoPtr to object type in many places
      
      - existing implementation has the following:
      
           operator const T&() const { return operator*(); }
      
        which means that the following code works:
      
             autoPtr<mapPolyMesh> map = ...;
             updateMesh(*map);    // OK: explicit dereferencing
             updateMesh(map());   // OK: explicit dereferencing
             updateMesh(map);     // OK: implicit dereferencing
      
        for clarity it may preferable to avoid the implicit dereferencing
      
      - prefer operator* to operator() when deferenced a return value
        so it is clearer that a pointer is involve and not a function call
        etc    Eg,   return *meshPtr_;  vs.  return meshPtr_();
      660f3e54
  26. 22 Feb, 2018 2 commits
    • Mark Olesen's avatar
      STYLE: consistent use of wordHashSet instead of HashSet<word> · 37e248c7
      Mark Olesen authored
      - the wordHashSet typedef is always available when HashSet has been
        included.
      
      - use default HashTable key (word) instead of explicitly mentioning it
      37e248c7
    • Mark Olesen's avatar
      ENH: prevent conversion of string to regExp in stringListOps (closes #739) · ec38e7a4
      Mark Olesen authored
      * For most cases, this conversion would be largely unintentional
        and also less efficient. If the regex is desirable, the caller
        should invoke it explicitly.
        For example,
      
            findStrings(regExp(str), listOfStrings);
      
        Or use one of the keyType, wordRe, wordRes variants instead.
        If string is to be used as a plain (non-regex) matcher,
        this can be directly invoked
      
            findMatchingStrings(str, listOfStrings);
      
        or using the ListOps instead:
      
            findIndices(listOfStrings, str);
      
      * provide function interfaces for keyType.
      ec38e7a4
  27. 21 Feb, 2018 1 commit
  28. 09 Feb, 2018 1 commit
    • Mark Olesen's avatar
      BUG: incorrect HashTable / HashSet instances · 09a6e940
      Mark Olesen authored
      - Eg instead of using labelHashSet, used HashSet<label> which uses
        the string::hash for hashing. Other places inadvertently using the
        string::hash instead of Hash<label> for hashing.
      
      STYLE: use Map<..> instead of HashTable<.., label, Hash<label>>
      
      - reduces clutter
      09a6e940
  29. 12 Jul, 2018 1 commit
  30. 22 Nov, 2017 1 commit
  31. 19 Nov, 2017 1 commit
  32. 22 Sep, 2017 1 commit
  33. 20 Mar, 2018 1 commit
    • Henry Weller's avatar
      ENH: atmosphericModels: Added Lopes da Costa porosity and turbulence models · c812b4c6
      Henry Weller authored
      Specialized variants of the power law porosity and k epsilon turbulence models
      developed to simulate atmospheric flow over forested and non-forested complex
      terrain.
      
      Class
          Foam::powerLawLopesdaCosta
      
      Description
          Variant of the power law porosity model with spatially varying
          drag coefficient
      
          given by:
      
              \f[
                  S = -\rho C_d \Sigma |U|^{(C_1 - 1)} U
              \f]
      
          where
          \vartable
              \Sigma | Porosity surface area per unit volume
              C_d    | Model linear coefficient
              C_1    | Model exponent coefficient
          \endvartable
      
          Reference:
          \verbatim
              Costa, J. C. P. L. D. (2007).
              Atmospheric flow over forested and non-forested complex terrain.
          \endverbatim
      
      Class
          Foam::RASModels::kEpsilonLopesdaCosta
      
      Description
          Variant of the standard k-epsilon turbulence model with additional source
          terms to handle the changes in turbulence in porous regions represented by
          the powerLawLopesdaCosta porosity model.
      
          Reference:
          \verbatim
              Costa, J. C. P. L. D. (2007).
              Atmospheric flow over forested and non-forested complex terrain.
          \endverbatim
      
          The default model coefficients are
          \verbatim
              kEpsilonLopesdaCostaCoeffs
              {
                  Cmu         0.09;
                  C1          1.44;
                  C2          1.92;
                  sigmak      1.0;
                  sigmaEps    1.3;
              }
          \endverbatim
      
      Tutorial case to follow.
      c812b4c6
  34. 14 Aug, 2017 1 commit
    • Mark Olesen's avatar
      ENH: add input surface scaling (issue #514) · 139edb24
      Mark Olesen authored
      - surfaceFeatureExtract
        * dictionary "scale" entry
      
      - triSurface
      - triSurfaceLoader
        * optional scaleFactor on reading
      
      - surfaceAdd
      - surfaceBooleanFeatures
      - surfaceClean
      - surfaceCoarsen
        * scale option
      
      - surfaceTransformPoints, transformPoints
        * scale option as scalar or vector quantity
      139edb24
  35. 24 Oct, 2017 1 commit
  36. 09 Oct, 2017 1 commit