- 26 May, 2021 1 commit
-
-
Multi-world operation now supports AMI: // What to sample: sampleMode nearestPatchFaceAMI;
-
- 19 Apr, 2021 2 commits
-
-
- wrap command-line retrieval of fileName with an implicit validate. Instead of this: fileName input(args[1]); fileName other(args["someopt"]); Now use this: auto input = args.get<fileName>(1); auto other = args.get<fileName>("someopt"); which adds a fileName::validate on the inputs Because of how it is implemented, it will automatically also apply to argList getOrDefault<fileName>, readIfPresent<fileName> etc. - adjust fileName::validate and clean to handle backslash conversion. This makes it easier to ensure that path names arising from MS-Windows are consistently handled internally. - dictionarySearch: now check for initial '/' directly instead of relying on fileName isAbsolute(), which now does more things BREAKING: remove fileName::clean() const method - relying on const/non-const to control the behaviour (inplace change or return a copy) is too fragile and the const version was...
-
- affords some code reduction. STYLE: use HashSet insert() without found() check in more places
-
- 18 Jan, 2021 1 commit
-
-
mattijs authored
Should not call map() since it triggers building the (one-to-one) mapping which conflicts with the self-contained mapping of cyclicAMI
-
- 18 Dec, 2020 1 commit
-
-
Mark Olesen authored
-
- 11 Dec, 2020 1 commit
-
-
Mark Olesen authored
COMP: fix SP/DP inconsistency in fvGeometryScheme STYLE: rename polyMesh::updateGeom to polyMesh::updateGeomPoints - avoids compiler complaints and potential masking of primitiveMesh::updateGeom / fvMesh::updateGeom - mark argument as movable, since that is what is happening inside. GIT: remove merge cruft TUT: better clean on MPPICInterFoam
-
- 09 Dec, 2020 1 commit
-
-
mattijs authored
-
- 25 Nov, 2020 1 commit
-
-
Mark Olesen authored
-
- 16 Jul, 2020 3 commits
-
-
Mark Olesen authored
- cleaner code, more similarity with unique_ptr Now if (ptr) if (!ptr) instead if (ptr.valid()) if (!ptr.valid())
-
Mark Olesen authored
- with '&&' conditions, often better to check for non-null autoPtr first (it is cheap) - check as bool instead of valid() method for cleaner code, especially when the wrapped item itself has a valid/empty or good. Also when handling multiple checks. Now if (ptr && ptr->valid()) if (ptr1 || ptr2) instead if (ptr.valid() && ptr->valid()) if (ptr1.valid() || ptr2.valid())
-
Mark Olesen authored
- less clutter using plain tests with the bool operator: (!ptr) vs (ptr.empty()) (ptr) vs (!ptr.empty())
-
- 24 Jun, 2020 2 commits
-
-
- 02 Jun, 2020 1 commit
-
-
Mark Olesen authored
- previously introduced `getOrDefault` as a dictionary _get_ method, now complete the transition and use it everywhere instead of `lookupOrDefault`. This avoids mixed usage of the two methods that are identical in behaviour, makes for shorter names, and promotes the distinction between "lookup" access (ie, return a token stream, locate and return an entry) and "get" access (ie, the above with conversion to concrete types such as scalar, label etc).
-
- 20 Apr, 2020 1 commit
-
-
mattijs authored
-
- 24 Feb, 2020 1 commit
-
-
Mark Olesen authored
- use point::uniform in more places
-
- 18 Feb, 2020 1 commit
-
-
Mark Olesen authored
- The warning in Field.C has been emitted since 2005. - The warning in mappedPatchBase.C has been emitted since 2012.
-
- 28 Jan, 2020 1 commit
-
-
Mark Olesen authored
-
- 31 Oct, 2019 1 commit
-
-
OpenFOAM bot authored
-
- 06 Feb, 2019 1 commit
-
-
OpenFOAM bot authored
-
- 06 Nov, 2018 1 commit
-
-
Mark Olesen authored
-
- 30 Oct, 2018 1 commit
-
-
mattijs authored
-
- 18 Oct, 2018 1 commit
-
-
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.
-
- 27 Sep, 2018 1 commit
-
-
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; }
-
- 05 Oct, 2018 1 commit
-
-
Mark Olesen authored
- instead of dict.lookup(name) >> val; can use dict.readEntry(name, val); for checking of input token sizes. This helps catch certain types of input errors: { key1 ; // <- Missing value key2 1234 // <- Missing ';' terminator key3 val; } STYLE: readIfPresent() instead of 'if found ...' in a few more places.
-
- 12 Apr, 2018 1 commit
-
-
Mark Olesen authored
- IOstreamOption class to encapsulate format, compression, version. This is ordered to avoid internal padding in the structure, which reduces several bytes of memory overhead for stream objects and other things using this combination of data. Byte-sizes: old IOstream:48 PstreamBuffers:88 Time:928 new IOstream:24 PstreamBuffers:72 Time:904 ==== STYLE: remove support for deprecated uncompressed/compressed selectors In older versions, the system/controlDict used these types of specifications: writeCompression uncompressed; writeCompression compressed; As of DEC-2009, these were deprecated in favour of using normal switch names: writeCompression true; writeCompression false; writeCompression on; writeCompression off; Now removed these deprecated names and treat like any other unknown input and issue a warning. Eg, Unknown compression specifier 'compressed', assuming no compression ==== STYLE: provide Enum of stream format names (ascii, binary) ==== COMP: fixed incorrect IFstream construct in FIREMeshReader - spurious bool argument (presumably meant as uncompressed) was being implicitly converted to a versionNumber. Now caught by making IOstreamOption::versionNumber constructor explicit. - bad version specifier in changeDictionary
-
- 26 Mar, 2018 1 commit
-
-
Mark Olesen authored
- in many cases can just use lookupOrDefault("key", bool) instead of lookupOrDefault<bool> or lookupOrDefault<Switch> since reading a bool from an Istream uses the Switch(Istream&) anyhow STYLE: relocated Switch string names into file-local scope
-
- 13 Mar, 2018 1 commit
-
-
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. PackedBoolList: - (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.
-
- 07 Mar, 2018 1 commit
-
-
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()); }
-
- 05 Mar, 2018 1 commit
-
-
Mark Olesen authored
This class is largely a pre-C++11 holdover. It is now possible to simply use move construct/assignment directly. In a few rare cases (eg, polyMesh::resetPrimitives) it has been replaced by an autoPtr.
-
- 26 Feb, 2018 1 commit
-
-
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_();
-
- 21 Feb, 2018 1 commit
-
-
Mark Olesen authored
- subsetList, inplaceSubsetList with optional inverted logic. - use moveable elements where possible. - allow optional starting offset for the identity global function. Eg, 'identity(10, start)' vs 'identity(10) + start'
-
- 05 Nov, 2017 1 commit
-
-
Mark Olesen authored
- makes for clearer code ENH: make writeIfDifferent part of Ostream
-
- 19 Nov, 2017 1 commit
-
-
Mark Olesen authored
-
- 24 Oct, 2017 1 commit
-
-
Mark Olesen authored
-
- 03 Jul, 2017 1 commit
-
-
Mark Olesen authored
-
- 29 May, 2017 1 commit
-
-
Mark Olesen authored
- Remove the unused enums() method since it delivers wholly unreliable results. It is not guaranteed to cover the full enumeration range, but only the listed names. - Remove the unused strings() method. Duplicated functionality of the words(), but was never used. - Change access of words() method from static to object. Better code isolation. Permits the constructor to take over as the single point of failure for bad input. - Add values() method - do not expose internal (HashTable) lookup since it makes it more difficult to enforce constness and the implementation detail should not be exposed. However leave toc() and sortedToc() for the interface. STYLE: relocated NamedEnum under primitives (was containers) - internal typedef as 'value_type' for some consistency with STL conventions
-
- 28 Nov, 2016 1 commit
-
-
Henry Weller authored
See http://bugs.openfoam.org/view.php?id=2356
-
- 05 Aug, 2016 1 commit
-
-
Henry Weller authored
Requires gcc version 4.7 or higher
-
- 15 May, 2016 1 commit
-
-
Henry Weller authored
splitMeshRegions: handle flipping of faces for surface fields subsetMesh: subset dimensionedFields decomposePar: use run-time selection of decomposition constraints. Used to keep cells on particular processors. See the decomposeParDict in $FOAM_UTILITIES/parallel/decomposePar: - preserveBaffles: keep baffle faces on same processor - preserveFaceZones: keep faceZones owner and neighbour on same processor - preservePatches: keep owner and neighbour on same processor. Note: not suitable for cyclicAMI since these are not coupled on the patch level - singleProcessorFaceSets: keep complete faceSet on a single processor - refinementHistory: keep cells originating from a single cell on the same processor. decomposePar: clean up decomposition of refinement data from snappyHexMesh reconstructPar: reconstruct refinement data (refineHexMesh, snappyHexMesh) reconstructParMesh: reconstruct refinement data (refineHexMesh, snappyHexMesh) redistributePar: - corrected mapping surfaceFields - adding processor patches in order consistent with decomposePar argList: check that slaves are running same version as master fvMeshSubset: move to dynamicMesh library fvMeshDistribute: - support for mapping dimensionedFields - corrected mapping of surfaceFields parallel routines: allow parallel running on single processor Field: support for - distributed mapping - mapping with flipping mapDistribute: support for flipping AMIInterpolation: avoid constructing localPoints
-