- less typing than before and avoids relying on bash-specific behaviour
(fixes#3448)
ENH: add -region support for cleanFaMesh and cleanPolyMesh
CONFIG: add bash completion help for -area-region
ENH: general improvements for regionProperties
- robustness and failsafe for foamListRegions, regionProperties
- additional global model switches for regionModels
- add provisional support for selecting MPI_Gatherv
when merging fields in the surface writers.
Uses the 'gatherv' keyword [experimental]
BUG: gatherv/scatterv wrappers used the incorrect data type
- incorrectly checked against UPstream_basic_dataType trait instead of
UPstream_dataType, which resulted in a count mismatch for
user-defined types (eg, vector, tensor,...).
This was not visibly active bug, since previous internal uses of
gatherv were restricted to primitive types.
COMP: make UPstream dataType traits size(...) constexpr
- allows static asserts and/or compile-time selection
of code based on size(1)
- less typing than before and avoids relying on bash-specific behaviour
(fixes#3448)
ENH: add -region support for cleanFaMesh and cleanPolyMesh
CONFIG: add bash completion help for -area-region
ENH: general improvements for regionProperties
- robustness and failsafe for foamListRegions, regionProperties
- additional global model switches for regionModels
- add provisional support for selecting MPI_Gatherv
when merging fields in the surface writers.
Uses the 'gatherv' keyword [experimental]
BUG: gatherv/scatterv wrappers used the incorrect data type
- incorrectly checked against UPstream_basic_dataType trait instead of
UPstream_dataType, which resulted in a count mismatch for
user-defined types (eg, vector, tensor,...).
This was not visibly active bug, since previous internal uses of
gatherv were restricted to primitive types.
COMP: make UPstream dataType traits size(...) constexpr
- allows static asserts and/or compile-time selection
of code based on size(1)
- in some shell models, only the mechanical properties (rho,E,nu) are
meaningful or just the basic thermal properties
(rho,Cp,kappa,emissivity).
Add a distinction when reading the dictionary entries
if those properties are mandatory and the thermo properties
(eg, molWt, Cp, etc) are optional or not.
This simplifies user input for thermal and vibration shell models.
Calculates thrust, drag, torque and lift/drag/pressure coefficients
of single or multiple blades (eg, propeller, turbine blades)
This function object differs from the propellerInfo and forces
function objects in that all forces are calculated within the local
cylindrical coordinate system, which yields thrust and drag values
within the expected reference frame.
The output comprises:
- coefficients per radial bin
- area-weighted total coefficients
- integrated forces and torque
For convenient post-processing, the results are also written in a VTK
(.vtp) output format. All surface results are registered internally,
which makes them available for other function objects.
- use functionObject writeInterval not timeInterval.
No change in behaviour since the missing writeInterval is treated
as '1' anyhow when using 'timeStep' for the writeControl
- consistent use of 'adjustable' vs 'adjustableRunTime'
- prefer '#eval{ vector(...) }' to calling '#eval' multiple times
Description:
The plicRDF interface reconstruction scheme calculates a reconstructed distance
function (RDF) in all interface cells and their point neighbours.
In point neighbours to interface cells, the RDF is calculated as a weighted
average of the distances to all adjacent interface cell centres with the weight
being the inverse distance to the cell centre.
By using the zoneDistribute class written by Henning Scheufler, the required
stencil data is communicated efficiently for stencil cells living on different
sides of one or more processor patches.
Some of the data required for the RDF reconstruction are cell centre and
interface centre positions. When a stencil extends across a cyclic patch these
positions have so far not been properly transformed in OpenFOAM. This issue is
fixed by the current contribution.
The fix is done by modifying the zoneDistribute class to hold the required
information about zone cells adjacent to cyclic patches. Positions are then
communicated with a new getPosition function which replaces getValue for
position data in the reconstructedDistanceFunction and plicRDF classes.
The implementation does not change the behaviour for cells not on
a cyclic patch and should have insignificant effect on efficiency for these.
The implementation can probably be optimised in terms of efficiency for zone
cells on cyclic patches, but we note that there are generally only very few of
these (interface cells and their point neighbours on cyclic patches) and so
the potential for speedup is expected to be limited.
Current limitations:
- In parallel, the user must constrain the decomposition to preserve cyclic
patches on the same processor, for the implementation to work properly.
- See an example here: tutorials/discInConstantFlowCyclicBCs/system/decomposeParDict
- In the case of parallel rotational cyclics that are split by the decomposition
the current bugfix does not work and therefore throws an error. This is ongoing
work and should be reported and fixed by a future patch.
For further details, please see the modified files and the comments therein:
- $FOAM_SRC/finiteVolume/fvMesh/zoneDistribute/zoneDistribute.H
- $FOAM_SRC/finiteVolume/fvMesh/zoneDistribute/zoneDistribute.C
- $FOAM_SRC/finiteVolume/fvMesh/zoneDistribute/zoneDistributeI.H
- $FOAM_SRC/transportModels/geometricVoF/reconstructedDistanceFunction/reconstructedDistanceFunction.C
- $FOAM_SRC/src/transportModels/geometricVoF/reconstructionSchemes/plicSchemes/plicRDF/plicRDF.C
Co-authored-by: David Müller <> KIT
Co-authored-by: Konstantinos Missios <> Roskilde University
Co-authored-by: Johan Roenby <> Roskilde University and STROMNING
Activated using the [optional] 'shielding' keyword having the options:
- standard: [default] same as v2406 and earlier
- ZDES2020: new option based on the reference:
Deck, S., Renard, N. (2020).
Towards an enhanced protection of attached boundary layers in hybrid
RANS/LES methods.
Journal of Computational Physics, 400, 108970.
DOI:10.1016/j.jcp.2019.108970
Contribution from Marian Fuchs at UpstreamCFD GmbH
Integrated by Andrew Heather OpenCFD Ltd.
- The edgeInterpolation::makeCorrectionVectors() disables the non-orthogonality
correction if the calculated non-orthogonality coefficient is below 0.1.
However, this activation routine only considers internal edges, and excludes
any processor edges, resulting in inconsistent parallel calculations. This
routine is removed.
- Fatal errors are replaced with zero-valued fields for non-orthogonality-
and skewness-correction routines.
- 1_Inlet_2_Outlet/porosityBased/R_10x-init/reEval: showcases the
initialization of the design variables using topoSet and setFields
- 3DBox/losses-mass-uniformity-SQP-extraVars: showcases the use of the
so-called 'extra variables' in the QP problem which relax it,
allowing its solution even if there is no feasible one