Commit Graph

25386 Commits

Author SHA1 Message Date
ecf8d260c4 DOC: fixed documented use of expression functions
- `functions<scalar>` and `functions<vector>` were erroneously
   documented in header as `lookup<scalar>` etc.

INT: handle fluent square brackets (fixes #2429)

- patch applied from openfoam.org
2022-03-31 18:53:04 +02:00
c7f4ba1969 ENH: memory/efficiency improvements: renumbering, bandCompression (#2430)
- support direct processing of CompactListList instead of requiring
  a conversion to labelListList for bandCompression and renumbering
  methods.

- manage FIFO with CircularBuffer instead of SLList (avoids
  allocations in inner loops). Invert logic to use a bitSet of
  unvisited cells, which improves looping as the matrix becomes more
  sparse.

- fix missed weighting in bandCompression (same as #1376).
  In polyTopoChange, handle removed cells immediately to simplify
  the logic and align more closely with bandCompression.

STYLE: enclose bandCompression within meshTools namespace

ENH: PrimitivePatch pointFaces with DynamicList instead of SLList
2022-03-31 16:01:41 +02:00
3721a61fe0 COMP: link twoPhaseProperties library (#2424) 2022-03-31 16:01:41 +02:00
6fa23bd7a6 ENH: extend globalIndex mpiGather to use scalar/label components
- MPI_Gatherv requires contiguous data, but a byte-wise transfer can
  quickly exceed the 'int' limits used for MPI sizes/offsets. Thus
  gather label/scalar components when possible to increase the
  effective size limit.

  For non-contiguous types (or large contiguous data) now also
  reverts to manual handling

ENH: handle contiguous data in GAMGAgglomeration gather values

- delegate to globalIndex::gatherValues static method (new)
2022-03-31 16:01:31 +02:00
87e3b196b0 ENH: extend wrapping of MPI calls to more data types
- supports gatherv of label and scalar types

- combine blocking and non-blocking interfaces in UPstreamWrapping
  (code reduction).

DEFEATURE: remove unused UPstream allToAllv wrapping

- backend interface preserved in UPstreamWrapping

COMP: add genericListBroadcast - simplifies code
2022-03-31 16:01:07 +02:00
d38de84d21 ENH: bundle Pstream:: AllGather methods
- bundles frequently used 'gather/scatter' patterns more consistently.

  - combineAllGather     -> combineGather + broadcast
  - listCombineAllGather -> listCombineGather + broadcast
  - mapCombineAllGather  -> mapCombineGather + broadcast
  - allGatherList        -> gatherList + scatterList
  - reduce               -> gather + broadcast (ie, allreduce)

- The allGatherList currently wraps gatherList/scatterList, but may be
  replaced with a different algorithm in the future.

STYLE: PstreamCombineReduceOps.H is mostly unneeded now
2022-03-31 15:56:04 +02:00
e98acdc4fc ENH: extend type aliases to include geometric boundary fields (#2348)
STYLE: LduInterfaceFieldPtrsList as alias instead of a class

STYLE: define patch lists typedefs when defining the base patch

- eg, polyPatchList typedef within polyPatch.H

INT: relocate GeometricField::Boundary -> GeometricBoundaryField

- was internal to GeometricField but moving it outside simplifies
  forward declarations etc. Code adapted from openfoam.org
2022-03-30 16:36:03 +02:00
39064f65e9 ENH: snappyHexMesh: consistent trigger logic. See #2379 2022-03-30 14:56:55 +01:00
35fef5faa6 STY: Updating headers 2022-03-25 11:09:18 -07:00
7ad164d535 TUT: Keyword updates 2022-03-24 14:07:16 +00:00
1ed88ddc3a STYLE: distributionModels - corrected compat version 2022-03-24 13:47:02 +00:00
5157016b23 ENH: Added missing turbulence switch 2022-03-24 13:36:33 +00:00
529f6aa022 COMP: Resolved compiler warnings 2022-03-24 13:36:06 +00:00
aa9e870f28 STYLE: cpuCabinet: remove excess entries 2022-03-23 17:37:03 +00:00
2ee0757364 BUG: processorLOD: handle 0 cells. Fixes #2421 2022-03-23 10:31:35 +00:00
ea2bf0414d COMP: PatchTools: unused typedef 2022-03-17 16:01:23 +00:00
9c7d265e4b ENH: distributedTriSurfaceMesh: work with flipped shells. Fixes #2405
Two problems:
- flipping inside snappyHexMesh is not done in a parallel
consistent way. So e.g. the octree-cached inside/outside information
has already been calculated. For now flipping of
distributedTriSurfaceMesh is disabled.
- octree-cached inside/outside information was using already
cached information and would only work for outwards pointing
volumes
2022-03-17 15:57:03 +00:00
55f287cd83 ENH: limitVelocity, report count and percent of cells/faces (#2414)
- percent of cells is taken relative to selection size.
- percent of faces is taken relative to the number of boundary faces
  that do not fix velocity themselves.

ENH: avoid correctBoundaryConditions() if values were not limited
2022-03-16 17:16:13 +01:00
4495db0302 ENH: avoid redundant IOobjectList use
- areaWrite and fileFieldSelection
2022-03-16 14:06:46 +01:00
24c0b30d48 ENH: mergePoints and patch gatherAndMerge improvements (#2402)
- when writing surface formats (eg, vtk, ensight etc) the sampled
  surfaces merge the faces/points originating from different
  processors into a single surface (ie, patch gatherAndMerge).

  Previous versions of mergePoints simply merged all points possible,
  which proves to be rather slow for larger meshes. This has now been
  modified to only consider boundary points, which reduces the number
  of points to consider. As part of this change, the reference point
  is now always equivalent to the min of the bounding box, which
  reduces the number of search loops. The merged points retain their
  original order.

- inplaceMergePoints version to simplify use and improve code
  robustness and efficiency.

ENH: make PrimitivePatch::boundaryPoints() less costly

- if edge addressing does not already exist, it will now simply walk
  the local face edges directly to define the boundary points.

  This avoids a rather large overhead of the full faceFaces,
  edgeFaces, faceEdges addressing.

  This operation is now more important since it is used in the revised
  patch gatherAndMerge.

ENH: topological merge for mesh-based surfaces in surfaceFieldValue
2022-03-16 13:44:58 +01:00
bf46b589cf ENH: add CircularBuffer container 2022-03-15 14:04:34 +01:00
079d5f2771 ENH: add triFace valid() method
- similar to edge valid(), true if vertices are unique, non-negative
2022-03-15 14:02:19 +01:00
46a1e7e21e GIT: missed change (rebase) to ensight manifold cell handling (#2396) 2022-03-13 22:53:33 +01:00
a22784ef52 CONFIG: set API level to 2202
- Pstream changes, coordSetWriters etc.
2022-03-13 22:38:26 +01:00
fd2544b27e Merge remote-tracking branch 'origin/master' into develop 2022-03-13 22:37:22 +01:00
963c98a65e SUBMODULE: update for external-solver (PETSc) compilation issues 2022-03-13 22:35:25 +01:00
327c43f3e8 ENH: identityOp as equivalent to std::identity (C++20)
- similar to how noOp was defined, but with perfect forwarding

STYLE: combine Swap into stdFoam

STYLE: capitalize FileOp, NegateOp template parameters
2022-03-13 22:35:18 +01:00
ed73bcbc33 TUT: update keywords, fix spurious annotated dictionary item (#2401) 2022-03-13 22:34:57 +01:00
f7cbb0672b ENH: globalIndex gather for PatchTools::gatherAndMerge (#2402)
- lower memory overhead, simpler code and eliminates need for
  ListListOps::combineOffset()

- optional handling of local faces/points for re-using in different
  contexts

STYLE: labelUList instead of labelList for globalMesh mergePoints

STYLE: adjust verbose information from mergePoints

- also report the current new-point location
2022-03-13 22:34:52 +01:00
6e509c10fc ENH: handle manifold cells in VTK, Ensight output (#2396)
- also disables PointData if manifold cells are detected.
  This is a partial workaround for volPointInterpolation problems
  with handling manifold cells.
2022-03-12 21:16:30 +01:00
2d7f2c26be ENH: MeshObject for handling manifold mesh connectivity (#2396) 2022-03-12 21:16:30 +01:00
c4d4becbac ENH: -exclude-fields, -no-fields options for foamToEnsight, foamToVTK
- additional verbosity option for conversions

- ignore old `-finite-area` option and always convert available
  finiteArea mesh/fields unless `-no-finite-area` is specified (#2374)

ENH: simplify point offset handling for ensight output

- extend writing to include compact face/cell lists
2022-03-12 21:16:30 +01:00
730ce92b68 ENH: handle try-construct faMesh (#2399)
- a try/catch approach is not really robust enough (or even possible)
  since read failures likely do not occur on all ranks simultaneously.
  This leads to situations where the master has thrown an exception
  (and thus exiting the current routine) while other ranks are still
  waiting to receive data and the program blocks completely.

  Since this primarily affects data conversion routines such as
  foamToEnsight etc, treat similarly to lagrangian: check for the
  existence of essential files before proceeding or not. This is
  wrapped into a TryNew factory method:

      autoPtr<faMesh> faMeshPtr(faMesh::TryNew(mesh));
      if (faMeshPtr) ...
2022-03-12 21:16:30 +01:00
62fc3bbc33 STYLE: broadcast instead of combineScatter/listCombineScatter/mapCombineScatter
- these are the same thing now and 'broadcast' expresses the intention
  more directly/consistently
2022-03-12 21:16:30 +01:00
de8ef5332d ENH: additional gather/scatter modes for PstreamBuffers
- gather/scatter types of operations can avoid AllToAll communication
  and use simple MPI gather (or scatter) to establish the receive sizes.

  New methods: finishedGathers() / finishedScatters()
2022-03-12 21:16:30 +01:00
a674c9d373 ENH: use broadcasting streams to distribute uniform file content
BUG: masterUncollatedFileOperation checking of file-size

- used Foam:fileSize check to decide on scheduled/nonBlocking but this
  was being done on all ranks and subsequently broadcast.
  Now avoid unnecessary filesystem access on non-master ranks.
2022-03-12 21:16:30 +01:00
e9dbe60b60 ENH: improve read handling of schemes/solution
- both schemes and solutions data are treated as MUST_READ_IF_MODIFIED
  even if the requested readOption is nominally MUST_READ or
  READ_IF_PRESENT, but now delay this change.
2022-03-12 21:16:30 +01:00
e59ca1226e ENH: interface consistency in CStringList
- in preparation for broadcasting versions
2022-03-12 21:16:30 +01:00
71772f17ab ENH: use PstreamBuffers for finiteArea handling (as per volume) 2022-03-12 21:16:30 +01:00
0e2ef5db3b ENH: support finiteArea patch groups and constraint types (#2397)
- allows simpler handling of processor conditions etc.

ENH: modernize constructor for better alignment with polyPatch
2022-03-12 21:16:30 +01:00
bd37f0b441 ENH: reduce duplicate code for float/double Vector/Tensor
STYLE: pass value not reference to pTraits for basic types

STYLE: add solveVector typedef to vector.H
2022-03-12 21:16:29 +01:00
42fe95a6a9 ENH: minor de-clutter of List, DynamicList, DynamicField (#2385)
- do not need contruct or move assign from SortableList.
  Rarely (never) used and can simply treat like a normal list
  by applying shrink beforehand.

- make append() methods return void instead of returning self, which
  makes it easier to derive from. Having them return self was a bit of
  an original design mistake.
  Chaining appends do not actually occur anywhere. Even if they were
  to be used, would not want to rely on them (fear of slicing on any
  derived classes).

BUG: IndirectList iterator comparison loses constness
2022-03-12 21:16:29 +01:00
47cd988296 ENH: eliminate code duplication in Circulator/ConstCirculator 2022-03-12 21:16:29 +01:00
c1eb5413d5 ENH: IOobject hasHeaderClassName() method
- simple wrapper for (!headerClassName().empty()) when checking if
  reading was successful.
2022-03-12 21:16:29 +01:00
323daeda3c ENH: update CompactListList code
- eliminate redundant size_ accounting

- drop extra 'Container' template parameter and replace functionality
  with more flexible pack/unpack methods.
  There is also a pack() method that handles indirect lists of lists
  that can be used, for example, to pack a patch slice of faces.

  Drop the 'operator()' method in favour of unpack to expose and properly
  document the conversion. Should revisit the corresponding code in
  some places for optimization potential.

- align some method names with globalIndex:
  totalSize(), maxSize() etc
2022-03-12 21:16:29 +01:00
0cf02eb384 ENH: globalIndex with direct gather/broadcast
- less communication than gatherList/scatterList

ENH: refine send granularity in Pstream::exchange

STYLE: ensure PstreamBuffers and defaultCommsType agree

- simpler loops for lduSchedule
2022-03-12 21:16:29 +01:00
b8c3dc4e49 ENH: selection mechanism for cloudInfo function object (#2390)
- can restrict calculation of D32 and other spray properties to a
  subset of parcels. Uses a predicate selection mechanism similar to
  vtkCloud etc.

ENH: code cleanup in scalar predicates

- pass by value not reference in predicates
- additional assign() method to refactor common code
2022-03-12 21:16:29 +01:00
3ea8492a7c ENH: Adding hTabulated solid thermo 2022-03-11 10:58:44 -08:00
3f586f76f3 Merge branch 'feature-coordSets' into 'develop'
refactor coordSet writers (#2347)

See merge request Development/openfoam!524
2022-03-10 19:36:00 +00:00
010ebadb68 ENH: support 'probes' style of ensemble output for sampledSets (#2389)
- with the special setFormat "probes", all of the sampled sets are
  treated more similarly to probes, with an ensemble output to raw
  probed format.

  This is of course less useful when the number of sampled points
  becomes very large.
2022-03-10 19:45:20 +01:00