- Nov 26, 2022
-
-
Mark OLESEN authored
-
- recover the target of symbolic links. This is needed when re-creating a file tree on another rank. ENH: handle checkGzip, followLink flags in fileHander filePath() - previously just relied on the backend defaults, now pass through - separate init(...) for common constructor init steps
-
Mark OLESEN authored
-
- Nov 25, 2022
-
-
- was previously populated with "IOobject" (the typeName) but then cannot easily detect if the object was actually read. Also clear the headerClassName on a failed read BUG: parallel inconsistency in regIOobject::readHeaderOk - headerOk() checked with master, but possible parallel operations within it
-
Mark OLESEN authored
- naming more consistent with DESModelBase etc for 'isA' dynamic casting
-
Mark OLESEN authored
- ensure that the name is non-empty. - allow construct from IOobject, dimensions and value ENH: gravity lookup accessors
-
Andrew Heather authored
-
Andrew Heather authored
-
- Nov 24, 2022
-
-
mattijs authored
-
Kutalmış Berçin authored
-
Andrew Heather authored
Add spatial filtering and ensight support to MappedFile and external file source (#2609) See merge request !568
-
Mark OLESEN authored
-
Mark OLESEN authored
- comprises a few different elements: FilterField (currently packaged in PatchFunction1Types namespace) ~~~~~~~~~~~ The FilterField helper class provides a multi-sweep median filter for a Field of data associated with a geometric point cloud. The points can be freestanding or the faceCentres (or points) of a meshedSurface, for example. Using an initial specified search radius, the nearest point neighbours are gathered and addressing/weights are built for them. This currently uses an area-weighted, linear RBF interpolator with provision for quadratic RBF interpolator etc. After the weights and addressing are established, the evaluate() method can be called to apply a median filter to data fields, with a specified number of sweeps. boundaryDataSurfaceReader ~~~~~~~~~~~~~~~~~~~~~~~~~ - a surfaceReader (similar to ensightSurfaceReader) when a general point data reader is needed. MappedFile ~~~~~~~~~~ - has been extended to support alternative surface reading formats. This allows, for example, sampled ensight data to be reused for mapping. Cavaet: multi-patch entries may still needs some work. - additional multi-sweep median filtering of the input data. This can be used to remove higher spatial frequencies when sampling onto a coarse mesh. smoothSurfaceData ~~~~~~~~~~~~~~~~~ - standalone application for testing of filter radii/sweeps
-
Andrew Heather authored
Feature updated core See merge request !573
-
-
- since bounding boxes overlap, need to verify the splitting actually did something. Problem only really evident with higher tree depths.
-
-
- replaces edge by edge tests with separating axis tests
-
Changes / Improvements - more consistent subsetting, interface * Extend the use of subset and non-subset collections with uniform internal getters to ensure that the subset/non-subset versions are robustly handled. * operator[](label) and objectIndex(label) for standardized access to the underlying item, or the original index, regardless of subsetting or not. * centres() and centre(label) for representative point cloud information. * nDim() returns the object dimensionality (0: point, 1: line, etc) these can be used to determine how 'fat' each shape may be and whether bounds(labelList) may contribute any useful information. * bounds(labelList) to return the full bound box required for specific items. Eg, the overall bounds for various 3D cells. - easier construction of non-caching versions. The bounding boxes are rarely cached, so simpler constructors without the caching bool are provided. - expose findNearest (bound sphere) method to allow general use since this does not actually need a tree. - static helpers The boxes() static methods can be used by callers that need to build their own treeBoundBoxList of common shapes (edge, face, cell) that are also available as treeData types. The bounds() static methods can be used by callers to determine the overall bound-box size prior to constructing an indexedOctree without writing ad hoc code inplace. Not implemented for treeDataPrimitivePatch since similiar functionality is available directly from the PrimitivePatch::box() method with less typing. ======== BREAKING: cellLabels(), faceLabels(), edgeLabel() access methods - it was always unsafe to use the treeData xxxLabels() methods without subsetting elements. However, since the various classes (treeDataCell, treeDataEdge, etc) automatically provided an identity lookup, this problem was not apparent. Use objectIndex(label) to safely de-reference to the original index and operator[](index) to de-reference to the original object.
-
- more memory efficient within loops - octree/boundBox overlaps(). Like findBox(), findSphere() but early exit if any shapes overlap. ENH: additional query for nLeafs()
-
- make template invariant
-
- don't need separate scratch arrays (avoids possible reallocations when split is imbalanced) ENH: upgrade dynamicIndexedOctree to use DynamicList directly - with C++11 move semantics don't need lists of autoPtr for efficient transfers
-
- basic support for splitting into two at a given position and face to keep
-
-
- code reduction, reinherit for dynamicIndexedOctree ENH: additional OBJ writing, statistics
-
- use default initialize boundBox instead of invertedBox - reset() instead of assigning from invertedBox - extend (three parameter version) and grow method - inflate(Random) instead of extend + re-assigning
-
- null() static method * as const reference to the invertedBox with the appropriate casting. - boundBox inflate(random) * refactored from treeBoundBox::extend, but allows in-place modification - boundBox::hexFaces() instead of boundBox::faces * rarely used, but avoids confusion with treeBoundBox::faces and reuses hexCell face definitions without code duplication - boundBox::hexCorners() for corner points corresponding to a hexCell. Can also be accessed from a treeBoundBox without ambiguity with points(), which could be hex corners (boundBox) or octant corners (treeBoundBox) - boundBox::add with pairs of points * convenient (for example) when adding edges or a 'box' that has been extracted from a primitive mesh shape. - declare boundBox nPoints(), nFaces(), nEdges() as per hexCell ENH: return invertedBox instead of FatalError for empty trees - similar to #2612 ENH: cellShape(HEX, ...) + boundBox hexCorners for block meshes STYLE: cellModel::ref(...) instead of de-reference cellModel::ptr(...)
-
- the boundBox for a given cell, using the cheapest calculation: - cellPoints if already available, since this will involve the fewest number of min/max comparisions. - otherwise walk the cell faces: via the cell box() method to avoid creating demand-driven cellPoints etc.
-
ENH: use direct access to pointHit as point(), use dist(), distSqr() - if the pointHit has already been checked for hit(), can/should simply use point() noexcept access subsequently to avoid redundant checks. Using vector distSqr() methods provides a minor optimization (no itermediate temporary), but can also make for clearer code. ENH: copy construct pointIndexHit with different index - symmetric with constructing from a pointHit with an index STYLE: prefer pointHit point() instead of rawPoint()
-
ENH: use DynamicList instead of List + size for point wave - consistent with previous updates for the other algorithms STYLE: unique_ptr instead of raw pointer in wave algorithms
-
STYLE: unique_ptr instead of autoPtr for holding std::thread
-
- return true if two faces share a common vertex. Same idea as the existing edge::connected() method (previously spelled 'connects()')
-
- provides fast compile-time indexing for FixedList (invalid indices trigger a compiler error). This enables noexcept access, which can propagate into various other uses (eg, triFace, triPoints, ...) ENH: add triangle edge vectors
-
- traditionally used first(), last() methods, but front(), back() are well-known from std::vector etc which makes the access more familiar. - support push_back() method for containers that already had append(). This increases name familiar and can help when porting between different C++ code bases. - support pop_back() method for List containers. This is similar to std::vector
-
- PrimitivePatch localPointOrder - enrichedPatch - polyMeshZipUpCells
-
- ie, front(), back(), push_front(), push_back(), pop_front() ENH: add CircularBuffer flattening operator() and list() method - useful if assigning content to a List etc BUG: CircularBuffer find() did not return logical index
-
- Nov 23, 2022
-
-
Andrew Heather authored
ENH: resolutionIndex: new function object to evaluate LES/DES resolution See merge request !569
-
Kutalmış Berçin authored
Grid independency studies and grid adaptation for implicit LES/DES are nontrivial and intractable due to the inherent coupling between spatial resolution and subgrid-scale modelling. To enable assessments for LES/DES resolution, a function object of single-mesh resolution index with three submodels is introduced.
-
Kutalmış Berçin authored
-
mattijs authored
- added bit of tolerance - write difference
-