- Sep 05, 2023
-
-
Mark OLESEN authored
-
Mark OLESEN authored
- support UList shallowCopy with pointer/size (eg, for slicing into or from span) ENH: add SubList::reset() functionality - allows modification of a SubList after construction. Previously a SubList had an immutable location after construction and there was no way to shift or change its location. BUG: missed special handling for DynamicList<char>::readList (fixes #2974) - equivalent to List<char>::readList, in which the stream is temporarily toggled from ASCII to BINARY when reading in a List of char data. This specialization was missed when DynamicList<T>::readList() was fully implemented.
-
- Sep 04, 2023
-
-
Mark OLESEN authored
- defines values for EMPTY, UNIFORM, NONUNIFORM and MIXED that allow bitwise OR reduction and provide an algorithm for calculating uniformity ENH: consolidate more efficient uniformity checks in PackedList ENH: improve linebreak handling when outputting small matrices
-
Mark OLESEN authored
- not always required, but useful when running some tutorials locally
-
- Sep 01, 2023
-
-
Andrew Heather authored
update and enhancements for memory-based streams See merge request !624
-
- use ignore instead of seekg/tellg to swallow input (robuster) - check for bad gcount() values - wrap Foam::fileSize() compressed/uncompressed handling into IFstream. - improve handling of compressed files in masterUncollatedFileOperation. Previously read into a string via stream iterators. Now read chunk-wise into a List of char for fewer reallocations.
-
- soft renames (ie, old names still available via typedefs) for more reasonable names and more coverage with std stream variants. The old names could be a bit cryptic. For example, uiliststream (== an unallocated/external list storage), which is written as std::ispanstream for C++23. Could similarly argue that IListStream is better named as ICharStream, since it is an input stream of characters and the internal storage mechanism (List or something else) is mostly irrelevant. Extending the coverage to include all std stream variants, and simply rewrap them for OpenFOAM IOstream types. This simplifies the inheritance patterns and allows reuse of icharstream/ocharstream as a drop-in replace for istringstream/ostringstream in other wrappers. Classes: * icharstream / ICharStream [old: none / IListStream] * ocharstream / OCharStream [old: none / OListStream] * ispanstream / ISpanStream [old: uiliststream / UIListStream] * ospanstream / OSpanStream [old: none / UOListStream] Possible new uses : read file contents into a buffer, broadcast buffer contents to other ranks and then transfer into an icharstream to be read from. This avoid the multiple intermediate copies that would be associated when using an istringstream. - Use size doubling instead of block-wise incremental for ocharstream (OCharStream). This corresponds to the sizing behaviour as per std::stringstream (according to gcc-11 includes) STYLE: drop Foam_IOstream_extras constructors for memory streams - transitional/legacy constructors but not used in any code
-
- Aug 31, 2023
-
-
mattijs authored
-
- Aug 30, 2023
-
-
Mattijs Janssens authored
Support non-blocking construction of cyclic AMI See merge request !623
-
Co-authored-by: Mark Olesen <>
-
- nonBlocking: receive before send - nonBlocking: wait for receive requests, process and then wait for other requests. Can be extended to use polling... - the 'fake' send (to self) now send copies into recv buffers instead of send buffers. This provides a clear separation of send and receive fields - avoid unnecessary reallocations with PtrList of send/recv buffers - remove outer looping for accessAndFlip and pass target field as parameter for inner looping instead ENH: refine mapDistribute send/recv requests handling - separate send/recv requests for finer control - receive does not need access to PtrList of sendBuffers, since the send-to-self now uses the recvBuffers
-
- create reindexing values as interleaved identity maps directly into the remapping lookup.
-
- the sum of the respective list sizes COMP: add noexcept to trivial mapDistribute constructors
-
- totalSize() returns retrieve the linear (total) size (naming as per globalIndex) - operator[] retrieves the referenced value (linear indexing) - labels() returns a flattened labelList (as per labelRange itself)
-
mattijs authored
-
- Aug 29, 2023
-
-
Mark OLESEN authored
- broadcasts list contiguous content as a two-step process: 1. broadcast the size, and resize for receiver list 2. broadcast contiguous contents (if non-empty) This avoids serialization/de-serialization memory overhead but at the expense of an additional broadcast call. The trade-off of the extra broadcast of the size will be less important than avoiding a memory peak for large contiguous mesh data. REVERT: unstable MPI_Mprobe/MPI_Mrecv on intelmpi + PMI-2 (#2796) - partial revert of commit c6f52858, for NBX implementation. Not yet flagged as causing errors here, but eliminated for consistency.
-
Mark OLESEN authored
-
Mark OLESEN authored
- more consistency with push_back etc.
-
Mark OLESEN authored
STYLE: reuse polyBoundaryMesh patchSizes(), patchStarts()
-
Mark OLESEN authored
- allow future tweaking based on the target stream format. - add ifstreamPointer::open(). Allows default construct followed by open()
-
Mark OLESEN authored
- simplifies use with other allocators (eg, memory pools). Can also be used with other containers. vectorField fld = ...; sigFpe::fillNan(fld.data_bytes(), fld.size_bytes()); COMP: inline sigFpe::ignore helper class - now unused (may be removed in the future), but can avoid compiling code for it COMP: missing sigStopAtWriteNow() definition for MSwindows
-
- Aug 28, 2023
-
-
Mark OLESEN authored
-
- helps support algorithms with list-based forwarding
-
- Aug 24, 2023
-
-
mattijs authored
-
- Aug 21, 2023
-
-
Mattijs Janssens authored
ENH: change internal dictionary separator to '/' (#1073) See merge request !622
-
Mark OLESEN authored
- leave windAroundBuildings blockMeshDict with older '.' syntax (to test compatibility)
-
Mark OLESEN authored
- simplifies internal handling (like a fileName) and allows the dictionary name to be used with unambiguous addressing. The previous dot (.) separator is ambiguous (ie, as dictionary separator or as part of a keyword). ENH: foamDictionary report -add/-set to stderr
-
Mark OLESEN authored
- selected with '+strict' in WM_COMPILE_CONTROL or 'wmake -strict', it enables the FOAM_DEPRECATED_STRICT() macro, which can be used to mark methods that are implicitly deprecated, but are not yet marked as full deprecated (eg, API modification is too recent, generates too many warnings). Can be considered a developer option.
-
- Aug 18, 2023
-
-
Mark OLESEN authored
- adding in +xcrun into WM_COMPILE_CONTROL changes the compiler settings as follows (for MacOS) cc := xcrun cc CC := xcrun c++ -std=c++14
-
- since the Apple SIP (System Integrity Protection) clears environment variables such as DYLD_LIBRARY_PATH, a number of workarounds have been used to provide shadow values. However, for a more robust installation using -rpath at compilation time appears to be the better solution. In addition to the usual -rpath specification with absolute file paths, MacOS supports (@loader_path, @executable_path) as well. Now default to link with rpath information for MacOS, which can be disabled by adding `~rpath` in WM_COMPILE_CONTROL Explicit library paths handled: - FOAM_FOAM_EXT_LIBBIN, FOAM_EXT_LIBBIN/FOAM_MPI The executable rpaths are handled assuming a structure of install-path/bin install-path/lib/$(FOAM_MPI) install-path/lib Absolute compile-time paths for FOAM_USER_LIBBIN, FOAM_SITE_LIBBIN and FOAM_LIBBIN are not handled since these are either too fragile (FOAM_USER_LIBBIN and FOAM_SITE_LIBBIN values) or covered via @loader_path anyhow (FOAM_LIBBIN). Since the value of FOAM_MPI is a compile-time value, this rpath treatment makes the installation less suitable for runtime changes to the MPI vendor/version. Note: no rpath added for c-only compilations since there are currently no c-only libraries or executables with dynamic loading
-
-
Mark OLESEN authored
- eliminate ClassName in favour of simple debug - include Apple-specific FPE handling after local definition to allow for more redefinitions COMP: remove stray <csignal> includes
-
Mark OLESEN authored
- like UPstream::parRun() etc, returns old value
-
Mark OLESEN authored
- naming like std::map::try_emplace(), it behaves like emplace_set() if there is no element at the given location otherwise a no-op ENH: reuse existing HashPtrTable 'slot' when setting pointers - avoids extra HashTable operations
-
- Aug 17, 2023
-
-
Mattijs Janssens authored
Extend ITstream handling and provision for delayed reading of compound tokens See merge request !621
-
- Aug 16, 2023
-
-
Mark OLESEN authored
- the construction of compound tokens is now split into two stages: - default construct - read contents This permits a larger variety of handling. - the new token::readCompoundToken(..) method allows for simpler more failsafe invocations. - forward resize(), read() methods for compound tokens to support separate read and population. Top-level refCompoundToken() method for modify access. ENH: split off a private readCompoundToken() method within ISstream - this allows overloading and alternative tokenisation handling for derived classes
-
Mark OLESEN authored
- simplifies iteration of ITstream using nRemainingTokens() and skip() methods or directly as a list of tokens. The currentToken() method returns const or non-const access to the token at the current tokenIndex. The peekToken(label) method provides failsafe read access to tokens at given locations. ENH: add primitiveEntry construct with moving a single token
-
Andrew Heather authored
Increase usage of std algoritms within the OpenFOAM List classes. Remove reliance on linked-list during reading See merge request !620
-
Mark OLESEN authored
ENH: add List resize_fill variant. Fuses resize_nocopy + uniform fill COMP: avoid cast ambiguity when assigning Foam::zero to UList<char>
-
Mark OLESEN authored
- drop unnecessary Foam::Swap specializations when MoveConstructible and MoveAssignable already apply. The explicit redirect to swap member functions was needed before proper move semantics where added. Removed specializations: autoPtr, refPtr, tmp, UList. Retained specialization: DynamicList, FixedList. Special handling for DynamicList is only to accommodate dissimilar sizing template parameters (which probably doesn't occur in practice). Special handling for FixedList to apply element-wise swapping. - use std::swap for primitives. No need to mask with Foam::Swap wrapper
-