Skip to content
Snippets Groups Projects
  1. Nov 09, 2021
    • Mark OLESEN's avatar
      ENH: distinguish between compressible/incompressible coded source · fd82f3e4
      Mark OLESEN authored
      - previously had codeAddSup used for both incompressible and
        compressible source terms. However, it was not actually possible to
        use it for compressible sources since any references to the 'rho'
        parameter would cause a compilation error for the incompressible case.
      
        Added 'codeAddSupRho' to distinguish the compressible case.
        User must supply one or both of them on input.
      fd82f3e4
    • Mark OLESEN's avatar
      ENH: additional dictionary controls, methods · 8638d823
      Mark OLESEN authored
      STYLE: declaration order of topoSet, resize_nocopy for sortedOrder
      
      STYLE: remove cstring dependency from SHA1
      
      STYLE: use Ostream endEntry()
      8638d823
    • Mark OLESEN's avatar
      ENH: update lemon version, wmake wrappers · 79e110ae
      Mark OLESEN authored
      79e110ae
    • Mark OLESEN's avatar
      ENH: additional decompose options · a78e7990
      Mark OLESEN authored
      - decomposePar: -no-fields to suppress decomposition of fields
      
      - makeFaMesh: -no-decompose to suppress creation of *ProcAddressing
        and fields, -no-fields to suppress decomposition of fields only
      a78e7990
    • Mark OLESEN's avatar
      ENH: simple detection for collapsed block descriptions · e8aa3aad
      Mark OLESEN authored
      - switch from default topology merge to point merge if degenerate
        blocks are detected. This should alleviate the problems noted in
        #1862.
      
        NB: this detection only works for blocks with duplicate vertex
            indices, not ones with geometrically duplicate points.
      
      ENH: add patch block/face summary in blockMesh generation
      
      - add blockMesh -verbose option to override the static or dictionary
        settings.  The -verbose option can be used multiple times to increase
        the verbosity.
      
      ENH: extend hexCell handling with more cellShape-type methods
      
      - allows better reuse in blockMesh.
        Remove blockMesh-local hex edge definitions that shadowed the
        hexCell values.
      
      ENH: simplify some of the block-edge internals
      e8aa3aad
    • Mark OLESEN's avatar
      ENH: add -verbose support into argList · 5a121119
      Mark OLESEN authored
      - similar to -dry-run handling, can be interrogated from argList,
        which makes it simpler to add into utilities.
      
      - support multiple uses of -dry-run and -verbose to increase the
        level. For example, could have
      
          someApplication -verbose -verbose
      
       and inside of the application:
      
          if (args.verbose() > 2) ...
      
      BUG: error with empty distributed roots specification (fixes #2196)
      
      - previously used the size of distributed roots to transmit if the
        case was running in distributed mode, but this behaves rather poorly
        with bad input. Specifically, the following questionable setup:
      
            distributed true;
            roots ( /*none*/ );
      
        Now transmit the ParRunControl distributed() value instead,
        and also emit a gentle warning for the user:
      
            WARNING: running distributed but did not specify roots!
      5a121119
    • Mark OLESEN's avatar
      ENH: portable scoping char for solver info names (#2224, #1675) · c45c649d
      Mark OLESEN authored
      COMP: implicit cast scope name to C++-string in IOobject::scopedName
      
      - handles 'const char*' and allows a check for an empty scope name
      
      COMP: avoid potential name conflict in local function (Istream)
      
      - reportedly some resolution issues (unconfirmed) with Fujitsu clang
      c45c649d
    • Andrew Heather's avatar
      COMP: adjust include guards · 9371c517
      Andrew Heather authored and Mark OLESEN's avatar Mark OLESEN committed
      9371c517
  2. Nov 08, 2021
  3. Nov 05, 2021
    • Andrew Heather's avatar
      Merge branch 'feature-finiteArea-fixes' into 'develop' · 6102b763
      Andrew Heather authored
      parallel construct finiteArea with arbitrary connections
      
      See merge request !490
      6102b763
    • Mark OLESEN's avatar
      ENH: improvements for makeFaMesh, checkFaMesh · 7fc943c1
      Mark OLESEN authored and Andrew Heather's avatar Andrew Heather committed
      - added -dry-run, -write-vtk options.
        Additional mesh information after creation.
      
      - add parallel reductions and more information for checkFaMesh
      
      ENH: minor cleanup of faPatch internals
      
      - align pointLabels and pointEdges creation more closely with coding
        patterns used in PrimitivePatch
      
      - use fileHandler when loading "S0" field.
      7fc943c1
    • Mark OLESEN's avatar
      ENH: improve handling of area calculations in faMesh (#2233) · a95427c2
      Mark OLESEN authored and Andrew Heather's avatar Andrew Heather committed
      - previous handling did not correctly account for off-processor
        connections (SEGFAULT).
      
      - revised the point/area normal calculations to use the dual of the
        faces. This simplifies the logic and reduces the depth of loops.
      
        Point corrections from the neighbouring patches is handled
        centrally by the new halo face information, which properly handles
        on-processor or off-processor faces irrespective of any explicit
        processor patches.
      
      STYLE: local function and add comments for finiteArea area weighting
      
      - following the original Tukovic code, the area-weighted normal
        for a vector pair (defining a triangle) is weighted by
          (1) area : larger weight for larger areas
          (2) sin  : lower weight for narrow angles (eg, shards)
          (3) invDist squared : lower weights for distant points
      
        Refactored to eliminate intermediate operations, some additional
        divide-by-zero protection - similar to vector normalise()
      a95427c2
    • Mark OLESEN's avatar
      ENH: add boundary halo handling to faMesh · ea92cb82
      Mark OLESEN authored and Andrew Heather's avatar Andrew Heather committed
      - the finiteArea is typically restricteed to one or more patches on a
        polyMesh but will have an external connectivity to other parts of
        the polyMesh. For proper determination of the point normals (for
        example), the neighbouring information is needed.
      
        These outside 'halo' faces can be located on different processors,
        but not correspond to an internal processor-processor interface.
      
        Add a dedicated form of mapDistribute for swapping this type of
        information. Since this is a collective operation, locate
        corresponding methods directly on the faMesh level instead of
        the faPatch level.
      ea92cb82
    • Mark OLESEN's avatar
      BUG: parallel construct finiteArea fails with arbitrary connections (#2152) · 8e451089
      Mark OLESEN authored and Andrew Heather's avatar Andrew Heather committed
      - the case of 'fan-like' processor was previously assumed to be
        rare (see merge-request !490 and issue #2084).
      
        However, Vaggelis Papoutsis noticed that even fairly normal geometries
        can trigger problems.
      
      - replaced the old patch/patch matching style with a more general
        edge-based synchronisation and matching that appears to handle
        the corner cases inherently. The internal communication overhead
        is essentially unchanged, and the logic is simpler.
      
      ENH: additional framework for managing patch connectivity
      8e451089
    • Mark OLESEN's avatar
      BUG: parallel blocking with faFieldDecomposer, faMeshReconstructor (fixes #2237) · 9c1f94d4
      Mark OLESEN authored and Andrew Heather's avatar Andrew Heather committed
      - the patch remapping in faFieldDecomposer calls weights
        internalField() which can trigger parallel communication on the
        complete mesh for some processors only (ie, blocks).
      
        Force a priori creation of weights instead.
      
      - ensure that the complete mesh (reconstruction helper)
        is serial when adding patches.
      9c1f94d4
    • Mark OLESEN's avatar
      BUG: incorrect finite-area faceProcAddressing (fixes #2155) · a8092654
      Mark OLESEN authored and Andrew Heather's avatar Andrew Heather committed
      - when creating a finite-area mesh in parallel, need to determine
        the equivalent ProcAddressing for the faMesh.
      
        In the faceProcAddressing the collected and sorted order was being
        scattered directly back to the individual processors instead of only
        the sections relevant to each particular processor.
      
        This caused the observed jumbled order for reconstructed fields.
      a8092654
    • Andrew Heather's avatar
      Merge branch 'feature-runTimeCompat' into 'develop' · 38bf3016
      Andrew Heather authored
      long-term maintenance improvement for runTime selection tables
      
      See merge request !481
      38bf3016
    • Mark OLESEN's avatar
      ENH: use singleton method for accessing runtime selection · ba8d6bdd
      Mark OLESEN authored
      STYLE: use alias to mark partialFaceAreaWeightAMI deprecation after v2012
      ba8d6bdd
    • Mark OLESEN's avatar
      ENH: define singleton-style lookups for runTime selection, alias handling · 4fc6ec1d
      Mark OLESEN authored
      - this makes the lookup and use of tables slightly cleaner and
        provides a hook for update (compat) messages
      
        The singleton-style method returns the function pointer directly,
        or nullptr on not-found.
      
        NEW access method (mnemonic: 'ctor' prefix for constructors)
      
        ```
        auto* ctorPtr = dictionaryConstructorTable(modelType);
      
        if (!ctorPtr)
        {
            ...
        }
      
        return autoPtr<myModel>(ctorPtr(dict, ...));
        ```
      
        OLD method, which also still works, but without any compat handling:
      
        ```
        auto ctorIter = dictionaryConstructorTablePtr_->cfind(modelType);
      
        if (!ctorIter.found())
        {
            ...
        }
      
        return autoPtr<myModel>(ctorIter()(dict, ...));
        ```
      4fc6ec1d
    • Mark OLESEN's avatar
      ENH: add error::master() static for low-level messages · 794e23e0
      Mark OLESEN authored
      - a Pstream::master with a Pstream::parRun guard in case Pstream has
        not yet been initialised, as will be the case for low-level messages
        during startup.
      
      - propagate relativeName handling into IOstreams
      794e23e0
    • Mark OLESEN's avatar
      ENH: refactored and simplified runtime declaration macros · 0bd113f5
      Mark OLESEN authored
      - improves future maintenance, avoids code/macro duplication
      0bd113f5
    • Mark OLESEN's avatar
      ENH: rename runTime selection typedefs · 7f8ecd98
      Mark OLESEN authored
      - better distinction between content and storage type
        by appending 'Type' to the typedef.
      
          old: 'Class::abcConstructorTable* tablePtr'
          new: 'Class::abcConstructorTableType* tablePtr'
      
        Was rarely used in any exposed code.
      
      BREAKING: LESdelta::New with additional table
      
      - parameter change to dictionaryConstructorTableType
        (was dictionaryConstructorTable)
      7f8ecd98
    • Mark OLESEN's avatar
      ENH: improve isolation of basicThermo internals (as private) · 3416151d
      Mark OLESEN authored
      - getThermoOrDie: returns constructor pointer, or FatalError.
        Better isolation and avoids additional template/typename previously
        needed with ambiguous method name (lookupThermo).
      
      - makeThermoName: centralize dictionary -> stringified name
      
      - splitThermoName: use stringOps functionality
      3416151d
    • Mark OLESEN's avatar
      Merge branch 'feature-proudman-mean-fields' into 'develop' · 9e56dd40
      Mark OLESEN authored
      ENH: proudmanAcousticPower - extended to operate on mean turbulence fields
      
      See merge request !485
      9e56dd40
    • Andrew Heather's avatar
      ENH: proudmanAcousticPower - extended to operate on mean turbulence fields · 5cba2690
      Andrew Heather authored and Mark OLESEN's avatar Mark OLESEN committed
      Example using mean turbulence fields (mean fields should be available e.g. from
      a fieldAverage function object)
      
          proudmanAcousticPower1
          {
              // Mandatory entries (unmodifiable)
              type        proudmanAcousticPower;
              libs        (fieldFunctionObjects);
      
              ...
      
              // Turbulence field names (if not retrieved from the turb model)
              k           kMean;
              epsilon     epsilonMean;
              omega       none; // omegaMean
          }
      5cba2690
  4. Nov 04, 2021
  5. Nov 03, 2021
    • Mark OLESEN's avatar
      ENH: improve flexibility of error, messageStream output · c9333a5a
      Mark OLESEN authored
      - provide a plain stream() method on messageStream to reduce reliance
        on casting operators and slightly opaque operator()() calls etc
      
      - support alternative stream for messageStream serial output.
        This can be used to support local redirection of output.
        For example,
      
           refPtr<OFstream> logging;   // or autoPtr, unique_ptr etc
      
           // Later...
           Info.stream(logging.get())
              << "Detailed output ..." << endl;
      
        This will use the stdout semantics in the normal case, or allow
        redirection to an output file if a target output stream is defined,
        but still effectively use /dev/null on non-master processes.
      
        This is mostly the same as this ternary
      
            (logging ? *logging : Info())
      
        except that the ternary could be incorrect on sub-processes,
        requires more typing etc.
      
      ENH: use case-relative names of dictionary, IOstream for FatalIOError
      
      - normally yields more easily understandable information
      c9333a5a
    • Mark OLESEN's avatar
      ENH: expose dictionary relativeName() method · 1c354ce2
      Mark OLESEN authored
      STYLE: more consistent noexcept for dictionary and entry
      1c354ce2
    • Mark OLESEN's avatar
      ENH: argList improvements · b364a9e7
      Mark OLESEN authored
      - argList::envExecutable() static method.
        This is identical to getEnv("FOAM_EXECUTABLE"), where the name of
        the executable has typically been set from the argList construction.
      
        Provides a singleton access to this value from locations that
        do not have knowledge of the originating command args (argList).
        This is a similar rationale as for the argList::envGlobalPath() static.
      
      - additional argList::envRelativePath() static method.
      
      - make -dry-run handling more central and easier to use by adding into
        argList itself.
      
      STYLE: drop handling of -srcDoc (v1706 option)
      
      - replaced with -doc-source for 1712 and never used much anyhow
      b364a9e7
    • Mark OLESEN's avatar
      STYLE: additional storage checks, noexcept, spelling · a19f03a5
      Mark OLESEN authored
      - prune unneeded demandDrivenData.H includes
      a19f03a5
  6. Nov 02, 2021