- Deprecation and Removal
- Rename
- Input Dictionaries
- Parallel
- Finite-Area Improvements
- Mesh Generation
- Mesh Checks / Post-processing
Deprecation and Removal
Boundary Conditions
The exprFixed
and exprMixed
boundary conditions are now marked
with run-time deprecation warning. The same functionality (and more)
is available with uniformFixedValue
and uniformMixed
boundary
conditions, respectively.
Rename
patchPostProcessing
and patchParticleHistogram
Function object: The Lagrangian function objects patchPostProcessing
and
patchParticleHistogram
have been renamed as particlePostProcessing
and
particleHistogram
, respectively, to enhance clarity and understanding.
Input Dictionaries
The fixed formatting and restricted precision for #calc
and #eval
has been removed to avoid unnecessary rounding errors and loss of
precision. The string expansion should be more consistent when
expressions are evaluated.
Expressions
- patch expressions can now use
normal()
to obtain the unit-normal instead of writingface()/area()
.
electricPotential
Function object: The calculation and output of the electric field (E
) can be enabled or
disabled by using the optional keyword electricField
, replacing the previous
keyword writeDerivedFields
. Also, the name of the electric field (E
)
can now be specified using the new keyword E
.
yPlus
, wallShearStress
Function objects: Both yPlus
and wallShearStress
now have an optional writeFields
flag that allows output of the volume fields to be disabled. This can
be useful to save disk space and improve speed when only
the logged information is of interest.
Parallel
More flexible handling of FOAM_IORANKS
- accept plain lists (space or comma separated) as well as the
traditional OpenFOAM lists. This simplifies argument handling with
job scripts.
For example,
simpleFoam -ioRanks 0,4,8 ...
simpleFoam -ioRanks '(0 4 8)' ...
simpleFoam -ioRanks host ...
Command-line specification of MPI threads
- Having MPI_THREAD_MULTIPLE is usually undesirable for performance
reasons, but in some cases may be necessary if a linked library
expects it. The
-mpi-threads
command-line option can be used to explicitly request it.
More details for parProfiling
The parProfiling now has more separation between different MPI operations for more granularity in the information:
- broadcast times are separated from reduce/gather/scatter time
- general wait times vs all-to-all wait times
- supports invocation counts, with the requests time/count separated from others (to avoid masking other counts)
Finite-Area Improvements
The minimum edge-length checks have been more consistent and robuster in the presence of small edges. Improved handling of 2D tensor inversion makes for robuster least-square schemes in Finite Area.
Mesh Generation
makeFaMesh
Additional heuristics have been added to handle multiply-connected finite-area edges, which can arise at the centre of a "star" connection or because the patch faces are actually baffles.
In serial case these internal edges are rather dubious in terms of
modelling, but when split across processor domains they cause
considerable trouble. Although there is not necessarily sufficient
information to uniquely determine connectivity, some remedial actions
to join edges is often possible. The extra "dangling" edges are
relegated to an ignore
patch so that they can be handled separately.
While these heuristics solve several problems encountered, more work is still necessary.
Mesh Checks / Post-processing
checkMesh
-
added a global topology check in checkMesh and makeFaMesh to detect when boundary patches are multiply connected across edges.
-
New
-write-edges
option for checkMesh: the topologically questionable edges can be written to disk. This new functionality can be a useful diagnostic aid (especially for finiteArea meshes, which remain fragile in the presence of illegal edges).
foamToVTK
When foamToVTK
is run with the -no-internal
and the -no-boundary
options, all loading and reporting of fields is suppressed, which
improves its speed significantly.
For regular conversion with fields, the loaded volume fields are temporarily cached for reuse with point interpolation. This reduces the input IO and improves the execution time.