- May 02, 2024
-
-
Mark OLESEN authored
- not allowed in C++20 COMP: avoid hidden overloaded-virtual (edgeMesh, surfMesh)
-
Kutalmış Berçin authored
-
- Apr 29, 2024
-
-
Mattijs Janssens authored
Use MPI Get_elements_x() for message sizes See merge request !681
-
Mark OLESEN authored
- ensures more accurate values for message sizes than using MPI Get_count(), which trucates at INT_MAX - add more/better error messages when trying to receive messages that exceed INT_MAX or the char buffer lengths
-
Mark OLESEN authored
- PstreamBuffers are nonBlocking by default, so no need to re-specify
-
Mark OLESEN authored
- "buffered" corresponds to MPI_Bsend (buffered send), whereas the old name "blocking" is misleading since the regular MPI_Send also blocks until completion (ie, buffer can be reused). ENH: IPstream::read() returns std::streamsize instead of label (#3152) - previously returned a 'label' but std::streamsize is consistent with the input parameter and will help with later adjustments. - use <label> instead of <int> for internal accounting of the message size, for consistency with the underyling List<char> buffers used. - improve handling for corner case of IPstream receive with non-blocking, although this combination is not used anywhere
-
- Apr 25, 2024
-
-
mattijs authored
-
- Apr 24, 2024
-
-
mattijs authored
-
Mattijs Janssens authored
Fix fvsPatchFields reading/writing the "value" entry See merge request !679
-
Mark OLESEN authored
- robuster and more reliable determination of inserted objects (previous code could produce false positives). Now also determine the number of inserted objects within the constructor (instead of simply storing a bool). This allows reuse in the address calculations to reduce overheads there. BUG: dodgy short-circuit logic for insertedObjectLabels() - as a quick short-circuit it previously created as demand-driven pointer with a zero elements. However, this meant that if this code was called first (before any other addressing), subsequent calls to the addressing would fail. BUG: bad logic and lookup for faAreaMapper (#3147) - was using labelHashSet but returning a bool and set using the addressing using the unfiltered objects! This is a latent bug since interpolated/inserted faces not currently supported anyhow. ENH: use std::unique_ptr for demand-driven data
-
Mark OLESEN authored
- manual revert for 44d0fbd5. Unless required for post-processing the "value" entry should not written if it is not mandatory for reading. This is especially crucial with an 'empty' patch field where the field (size 0) has a different size from the patch. - the changes made align fvsPatchField behaviour with fvPatchField
-
- Apr 23, 2024
-
-
Mark OLESEN authored
-
Mark OLESEN authored
- return autoPtr<token::compound> instead of the derived type, otherwise cannot easily construct a token from it ENH: additional typed version of refCompoundToken() - symmetric with typed version of transferCompoundToken() and isCompound() - add ITstream::findCompound<Type>() method. Useful for searching within token streams
-
Mark OLESEN authored
-
Andrew Heather authored
reduce communication argList at startup See merge request !678
-
Mark OLESEN authored
- previously automatically skipped the first communicator (which was assumed to be MPI_COMM_WORLD), but now simply rely on the internal pendingMPIFree_ to track which communicators have actually been allocated.
-
Mark OLESEN authored
- UPstream::Communicator is similar to UPstream::Request to wrap/unwrap MPI_Comm. Provides a 'lookup' method to transcribe the internal OpenFOAM communicator tracking to the opaque wrapped version. - provide an 'openfoam_mpi.H' interfacing file, which includes the <mpi.h> as well as casting routines. Example (caution: ugly!) MPI_Comm myComm = PstreamUtils::Cast::to_mpi ( UPstream::Communicator::lookup(UPstream::worldComm) );
-
Mark OLESEN authored
- replace point-to-point transmission of the argList args/options with a broadcast. This is sufficient for most cases (without distributed roots). For "normal" cases (non-distributed roots) this will replace the nProcs-1 messages with a single broadcast. - for cases with distributed roots, distinguish between a single, identical root and different roots. An identical root can also be subsequently handled with a broadcast. Different roots will still require individual point-to-point communication. For cases with distributed roots, it will add the overhead of an additional broadcast.
-
- Apr 22, 2024
-
-
Mark OLESEN authored
- adds consistency with regular point-to-point parallel streams. ENH: add ITstream::tokens() methods - useful, for example, to disambiguate constructing tokenList from a ITstream. ITstream& is = otherDict.lookup("original"); tokenList deepCopy(is); // Error: from Istream or tokenList?? tokenList deepCopy(is.tokens()); // OK: from tokenList
-
Mark OLESEN authored
- same as append() did, but with more consistent names STYLE: replace special purpose append() with container method STYLE: update code style
-
- Apr 19, 2024
-
-
mattijs authored
-
Andrew Heather authored
update to internal accounting for finite-area See merge request Development/openfoam!675
-
Mark OLESEN authored
-
Mark OLESEN authored
-
Mark OLESEN authored
- The internal storage location of finite-area changes from being piggybacked on the polyMesh registry to a having its own dedicated registry: * allows a clearer separation of field types without name clashes. * prerequisite for supporting multiple finite-area regions (future) Old Locations: ``` 0/Us constant/faMesh system/faMeshDefinition system/faSchemes system/faSolution ``` New Locations: ``` 0/finite-area/Us constant/finite-area/faMesh system/finite-area/faMeshDefinition (or system/faMeshDefinition) system/finite-area/faSchemes system/finite-area/faSolution ``` NOTES: The new locations represent a hard change (breaking change) that is normally to be avoided, but seamless compatibility handling within the code was found to be unworkable. The `foamUpgradeFiniteArea` script provides assistance with migration. As a convenience, the system/faMeshDefinition location continues ...
-
- Apr 18, 2024
-
-
mattijs authored
- was using blocking (=buffered) comms - was running out of MPI_COMM_SIZE buffer space - now using PstreamBuffers to have non-blocing comms
-
- Apr 16, 2024
-
-
Mark OLESEN authored
- lower memory overhead, consistent access pattern
-
Mark OLESEN authored
- use an internal 'typedef MeshObject<...> MeshObject_type' within derived classes. Reduces clutter and eases any updates.
-
Mark OLESEN authored
- Delete() will perform a 'checkOut()' which does the following: * remove the object from the registry * delete the pointer (if owned by the registry) - Release() does the following: * transfer ownership of the pointer (if owned by the registry) - Store() does the following: * transfer ownership of the pointer to the registry ENH: use UPtrList of sorted objects for MeshObject updates - few allocations and lower overhead than using a HashTable, ensures the same walk order over the objects (in parallel) STYLE: adjust meshObject debug statements
-
Mark OLESEN authored
STYLE: update code style for phi modification (engine motion) ENH: pass isMeshUpdate param in fvMesh/polyMesh clearOut() methods - top-level use of isMeshUpdate parameter to clearOut and clearAddressing was being inadvertently filtered out
-
Mark OLESEN authored
- after the modification of d578d48a, the parent was now actually searched. However, should be returning "constant" and not trigger a FatalError if the file/directory is not found.
-
Mark OLESEN authored
- findStrings, findMatchingStrings now mostly covered by matching intrinsics in wordRe and wordRes. Add static wordRes match() and matching() variants COMP: remove stringListOps include from objectRegistry.H - was already noted for removal (NOV-2018)
-
Mark OLESEN authored
- an example of the new, more succinct refConstCast version: auto& abc = refConstCast<adjointVectorBoundaryCondition>(Uab); older: adjointVectorBoundaryCondition& abc = refCast<adjointVectorBoundaryCondition> ( const_cast<fvPatchVectorField&>(Uab) ); or: adjointVectorBoundaryCondition& abc = const_cast<adjointVectorBoundaryCondition&> ( refCast<const adjointVectorBoundaryCondition>(Uab) ); - an example of the new, more succinct isA_constCast version: auto* acapPtr = isA_constCast<fieldType>(abf[patchi]); if (acapPtr) { auto& acap = *acapPtr; ... } older: if (isA<fieldType>(abf[patchi])) { fieldType& acap = const_cast<fieldType&> ( refCast<const fieldType>(abf[patchi]) ); ... } STYLE: remove spurious 'const' qualifier from isA<> use
-
- Apr 15, 2024
-
-
mattijs authored
- NewIFstream would read complete remote file to decide if was collated. - This limits files to 31bit size - Instead now have master-only opening of file. - Still has problem with refinement history/cellLevel etc.
-
- Apr 11, 2024
-
-
Kutalmış Berçin authored
-
- Apr 10, 2024
-
-
Mark OLESEN authored
- previously would always return "constant" as the instance for an optional dir/file that wasn't found. However, this meant retesting to screen out false positives. Now support an additional parameter 'bool constant_fallback = ...' to return "constant" or an empty word. The method signature changes slightly with a new optional bool parameter: //! Return \c "constant" instead of \c "" if the search failed const bool constant_fallback = true ENH: code consolidation for findInstancePath - relocate from Time to TimePaths and provide an additional static version that is reused in fileOperations BUG: distributedTriSurfaceMesh:::findLocalInstance broken (#3135) - was not checking the parent at all. COMP: remove unused findInstancePath(const fileName&, ..) method
-
Mark OLESEN authored
- support construct faceZoneSet from faceSet (#3126) ENH: support unregistered loading of cell/face/point sets
-
Mark OLESEN authored
- leave 'readContents' method name for exposed (public) methods. Generally not a problem, but can confuse the compiler when various public/private versions are available with the same number of parameters. STYLE: adjust meshObject debug statements
-
Mark OLESEN authored
- regIOobject::store(std::unique_ptr<...>&& ptr) - IOobjectList::add(std::unique_ptr<...>&& ptr) STYLE: io.globalCaseName() instead of io.time().globalCaseName() [#3007]
-
Mark OLESEN authored
ENH: combine broadcasts for uncollated master-only handling
-