New/refactored code to enable partial geometry updates for solid-body motion cases.
Adds a new solidBody
geometry scheme, applicable for e.g. rotating AMI/ACMI cases:
geometry
{
type solidBody;
// Optional
partialUpdate yes; // default = yes
cacheMotion yes; // default = yes
}
Instead of performing a complete mesh clear-out we selectively update only the geometry attached to moving points, under the assumption that there are no topological updates/the motion can be described as solid-body motion.
Performance improvements (time) are case specific, e.g. the smaller the fraction of moving cells compared to the total cell count, the larger the benefit for the mesh update phase.
The additional entries control:
partialUpdate
: if set to false
, perform a complete mesh clear-out on mesh changescacheMotion
: if set to true
, cache the addressing for the moving points, faces and cells across all time stepsBackwards compatibility
The basic
option is the default and is applied if the geometry
sub-dictionary is not supplied:
geometry
{
type basic;
}
Selecting this option should recover v2112 (and earlier versions) behaviour.
fvGeometryScheme
primitiveMeshTools.H
functions updateFaceCentresAndAreas
and updateCellCentresAndVols
snappyHexMesh
cases - the updates did not initially play nicely with the layer addition phasepimpleFoam/RAS/propeller tutorial
singleWheel
(internal)