- Sep 22, 2022
-
-
Mark OLESEN authored
- old constructor interface allowed arbitrary strings to specify the method enumeration. If actually used at runtime, they could/would raise a FatalError (unknown enumeration). Define a simpler default constructor instead.
-
Mark OLESEN authored
-
Mark OLESEN authored
- whichPolyPatches() = the polyPatches related to the areaMesh. This helps when pre-calculating (and caching) any patch-specific content. - whichPatchFaces() = the poly-patch/patch-face for each of the faceLabels. This allows more convenient lookups and, since the list is cached on the area mesh, reduces the number of calls to whichPatch() etc. - whichFace() = the area-face corresponding to the given mesh-face ENH: more flexible/consistent volume->area mapper functions
-
Mark OLESEN authored
- whichPatchFace() returns the (patchi, patchFacei) tuple, whichPatch() simply wraps whichPatchFace() - groupNames() : similar to zones ENH: simplify calls to faPatch/fvPatch patchField, lookupPatchField - make second (ununsed) template parameter optional. Was previously needed for old compilers (2008 and earlier).
-
Mark OLESEN authored
- simplifies construction/inheritance ENH: add {fa,fv}PatchField::zeroGradientType() static - can be used to avoid literal "zeroGradient" in places STYLE: adjust naming of pointPatch runtime selection table - simply use 'patch' as per fa/fv fields STYLE: add zero-size guard to patch constraintType(const word&)
-
Mark OLESEN authored
For example, instead of if (dict.found("value")) { fvScalarField::operator= ( Field<scalar>("value", dict, p.size()) ); } can use more precise specifications, and also eliminate searching the dictionary multiple times: const auto* eptr = dict.findEntry("value", keyType::LITERAL); //or: dict.findCompat("value", {{"oldName" ... }}, keyType::LITERAL); if (eptr) { fvScalarField::assign(*eptr, p.size()); } STYLE: combine declaration of FieldBase into Field.H
-
Mark OLESEN authored
- include -no-libs option by default, similar to '-lib', which makes it available to all solvers/utilities. Add argList allowLibs() method to query it. - relocate with/no functionObjects logic from Time to argList itself as argList allowFunctionObjects() - add libs/functionObjects override handling to decomposePar etc ENH: report the stream relativeName for IOerrors (see c9333a5a)
-
Mark OLESEN authored
- disallow inadvertant casting and hidden copy constructions etc
-
Mark OLESEN authored
- can use a (patchi, elemi) pair to access an element of a FieldField
-
Mark OLESEN authored
- clearer coding intent. Mark operator() as 'deprecated' - add bounds checking to get(label) and set(label) methods. This gives failsafe behaviour for get() that is symmetric with HashPtrTable, autoPtr etc and aligns the set(label) methods for UPtrList, PtrList and PtrDynList. - use top-level PtrList::clone() instead of cloning individual elements ENH: support HashPtrTable set with refPtr/tmp (flexibility)
-
Mark OLESEN authored
- avoids try/catch exception handling STYLE: prefer refCast (shorter) to dynamicCast where possible
-
Mark OLESEN authored
- define returnReduce *after* defining all specializations for reduce so that the compiler does not take the generic templated reduce. ENH: add UPstream::reduceAnd, UPstream::reduceOr - direct wrapper of MPI_LAND, MPI_LOR intrinsics ENH: provide special purpose returnReduce for logical operations - returnReduceAnd(bool), returnReduceOr(bool) as a inline wrappers for returnReduce with andOp<bool>(), orOp<bool>() operators, respectively. These forms are more succinct and force casting of the parameter into a bool. Using MPI bool operations allows vendor/hardware MPI optimisations. * Test for existence on any rank: 1. if (returnReduceOr(list.size()) { ... } 1b. if (returnReduceOr(!list.empty()) { ... } 2. if (returnReduce(bool(list.size(), orOp<bool>())) { ... } 3. if (returnReduce(list.size(), sumOp<label>()) != 0) { ... } 3b. if (returnReduce(list.size(), sumOp<label>()) > 0) { ... } * Test for non-existence on all ranks: 1. if (returnReduceAnd(list.empty()) { ... } 1b. if (!returnReduceOr(list.size()) { ... } 2. if (returnReduce(list.empty(), andOp<bool>())) { ... } 3. if (returnReduce(list.size(), sumOp<label>()) == 0) { ... } Notes: Form 1. succinct Form 2. may require explicit bool() for correct dispatch Form 3. more expensive sumOp<label> just for testing size! There are also some places using maxOp<label> instead of sumOp<label>
-
Mark OLESEN authored
- these also work for bitSet, HashSet with slightly lower overhead ENH: locate FOAM_NODISCARD attribute macro in stdFoam.H
-
Mark OLESEN authored
- simplifies coding * finishedRequest(), waitRequest(), waitRequests() with parRun guards * nRequests() is noexcept - more consistent use of UPstream::defaultCommsType in branching
-
Mark OLESEN authored
-
mattijs authored
-
- Sep 20, 2022
-
-
mattijs authored
-
- Sep 14, 2022
- Sep 12, 2022
-
-
mattijs authored
-
- Sep 09, 2022
-
-
Mark OLESEN authored
- related to #2535
-
Mark OLESEN authored
- avoids truncated files if dependency generation is interrupted
-
Mark OLESEN authored
- uses '-g -DFULLDEBUG' (like Debug), but with -O3 (like Opt). This adds in debug symbols and FULLDEBUG code segments (good for code development) but retains -O3 optimizations and code paths and avoids the much slower -O0 associated with 'Debug'. - add in central wmake/General/common/{c,c++}XXX tuning, which helps reduce the number of nearly identical files ENH: add support for wmake -debug-Og
-
Mark OLESEN authored
- copying was inadvertently added by 85a2ae6e
-
- Sep 07, 2022
-
-
Mark OLESEN authored
- previously threw FatalError, which downgrades to a Warning only when loading the functionObject. Now throw a FatalIOError so that missing control files are treated as a critical error.
-
Mark OLESEN authored
-
Mark OLESEN authored
-
Mark OLESEN authored
STYLE: consistent use of $(LIB_SRC) in Make/options
-
Mark OLESEN authored
-
Mark OLESEN authored
-
Mark OLESEN authored
- this is especially evident in -reconstruct mode when the fields have several processor boundaries. Testing for an existing patch edge mapping must use the `test` method (with range-checking) instead of the more common `set` method since the source field will likely have many more boundaries than physical edge mappings.
-
Mark OLESEN authored
-
Mark OLESEN authored
- caused inadvertent truncation of label types
-
Andrew Heather authored
ENH: sorptionWallFunction: new wall boundary condition See merge request !559
-
The sorptionWallFunction is a wall boundary condition to specify scalar/concentration gradient for turbulent and laminar flows.
-
Andrew Heather authored
ENH: fvOptions: refactor and extend effectivenessHeatExchangerSource See merge request !557
-
- rename effectivenessHeatExchangerSource -> heatExchangerSource - introduce submodels: - effectivenessTable (previous behaviour) - referenceTemperature - the referenceTemperature submodel uses a reference temperature which is either a scalar or calculated from a 2D interpolation table in order to calculate the heat exchange.
-
mattijs authored
If the exit is through maxIter it should still wait for outstanding requests
-
- Aug 19, 2022
-
-
Mark OLESEN authored
- the cpp command is used to process Make/{files,options}, but builtin defines such as `linux` will cause problems (macro replacement) if these is present in the Make/{files,options}. Solve by undefining -Ulinux, -Uunix macros, which will leave directory names such as "/usr/lib/x86_64-linux-gnu/..." intact. Directories with _linux, __linux__ content (for example), could still pose future issues.
-