From a5c6516e2336a592a218928bc82043748c1bfdb5 Mon Sep 17 00:00:00 2001
From: Kutalmis Bercin <kutalmis.bercin@esi-group.com>
Date: Fri, 13 Mar 2020 18:49:58 +0000
Subject: [PATCH] DOC: elaborate the usage of function objects

  ENH: update libs of etc/caseDicts/postProcess items
  ENH: ensure destructor=default
  ENH: ensure constness
  ENH: ensure no 'copy construct' and 'no copy assignment' exist
  TUT: add examples of function objects with full set
       of settings into a TUT if unavailable
  TUT: update pisoFoam/RAS/cavity tutorial in terms of usage
---
 .../postProcessing/fields/AMIWeights          |  10 +-
 etc/caseDicts/postProcessing/fields/CourantNo |   2 +-
 .../fields/{lambVector => LambVector}         |  10 +-
 etc/caseDicts/postProcessing/fields/Lambda2   |   2 +-
 etc/caseDicts/postProcessing/fields/MachNo    |   2 +-
 etc/caseDicts/postProcessing/fields/PecletNo  |   2 +-
 etc/caseDicts/postProcessing/fields/Q         |   2 +-
 etc/caseDicts/postProcessing/fields/R         |   2 +-
 .../postProcessing/fields/XiReactionRate      |   2 +-
 etc/caseDicts/postProcessing/fields/add       |   2 +-
 .../postProcessing/fields/components          |   2 +-
 etc/caseDicts/postProcessing/fields/ddt       |   2 +-
 etc/caseDicts/postProcessing/fields/div       |   2 +-
 .../postProcessing/fields/energySpectrum      |   2 +-
 etc/caseDicts/postProcessing/fields/enstrophy |   2 +-
 .../postProcessing/fields/fieldMinMax         |   2 +-
 etc/caseDicts/postProcessing/fields/flowType  |   2 +-
 etc/caseDicts/postProcessing/fields/grad      |   2 +-
 etc/caseDicts/postProcessing/fields/mag       |   2 +-
 etc/caseDicts/postProcessing/fields/magSqr    |   2 +-
 .../postProcessing/fields/processorField      |   2 +-
 .../postProcessing/fields/streamFunction      |   2 +-
 etc/caseDicts/postProcessing/fields/subtract  |   2 +-
 .../postProcessing/fields/turbulenceFields    |   2 +-
 etc/caseDicts/postProcessing/fields/vorticity |   2 +-
 .../postProcessing/fields/wallHeatFlux        |   2 +-
 .../postProcessing/fields/wallShearStress     |   2 +-
 .../postProcessing/fields/writeCellCentres    |   2 +-
 .../postProcessing/fields/writeCellVolumes    |   2 +-
 .../postProcessing/fields/writeObjects        |   2 +-
 etc/caseDicts/postProcessing/fields/yPlus     |   2 +-
 .../functionObject/FUNCTIONOBJECT.C           |  15 +-
 .../functionObject/FUNCTIONOBJECT.H           | 141 +++++--
 .../functionObject/functionObject.H           | 153 +++++--
 .../regionFunctionObject.H                    |   6 +-
 .../stateFunctionObject/stateFunctionObject.H |   2 +-
 .../db/functionObjects/writeFile/writeFile.C  |   7 +-
 .../db/functionObjects/writeFile/writeFile.H  |  31 +-
 .../field/AMIWeights/AMIWeights.C             |   1 -
 .../field/AMIWeights/AMIWeights.H             |  67 +++-
 .../field/CourantNo/CourantNo.C               |  14 +-
 .../field/CourantNo/CourantNo.H               |  59 ++-
 src/functionObjects/field/Curle/Curle.C       |  15 +-
 src/functionObjects/field/Curle/Curle.H       |  75 ++--
 .../field/DESModelRegions/DESModelRegions.C   |  20 +-
 .../field/DESModelRegions/DESModelRegions.H   |  72 +++-
 .../lambVector.C => LambVector/LambVector.C}  |  15 +-
 .../lambVector.H => LambVector/LambVector.H}  |  86 ++--
 src/functionObjects/field/Lambda2/Lambda2.C   |  14 +-
 src/functionObjects/field/Lambda2/Lambda2.H   |  58 ++-
 src/functionObjects/field/MachNo/MachNo.C     |  16 +-
 src/functionObjects/field/MachNo/MachNo.H     |  55 ++-
 src/functionObjects/field/Make/files          |   2 +-
 src/functionObjects/field/PecletNo/PecletNo.C |  13 +-
 src/functionObjects/field/PecletNo/PecletNo.H |  61 ++-
 src/functionObjects/field/Q/Q.C               |  16 +-
 src/functionObjects/field/Q/Q.H               |  56 ++-
 src/functionObjects/field/STDMD/STDMD.H       | 105 ++---
 .../field/XiReactionRate/XiReactionRate.C     |  12 +-
 .../field/XiReactionRate/XiReactionRate.H     |  48 ++-
 src/functionObjects/field/add/add.C           |   7 +-
 src/functionObjects/field/add/add.H           |  70 +++-
 src/functionObjects/field/add/addTemplates.C  |   3 +-
 .../field/blendingFactor/blendingFactor.C     |  28 +-
 .../field/blendingFactor/blendingFactor.H     |  98 +++--
 .../field/columnAverage/columnAverage.H       |  59 ++-
 .../field/components/components.H             |  83 +++-
 .../field/components/componentsTemplates.C    |   6 +-
 .../field/continuityError/continuityError.C   |   4 +-
 .../field/continuityError/continuityError.H   |  89 +++--
 src/functionObjects/field/ddt/ddt.H           |  62 ++-
 src/functionObjects/field/ddt2/ddt2.C         |   8 +-
 src/functionObjects/field/ddt2/ddt2.H         |  98 +++--
 .../field/derivedFields/derivedFields.C       |   9 +-
 .../field/derivedFields/derivedFields.H       |  72 +++-
 src/functionObjects/field/div/div.C           |   7 +-
 src/functionObjects/field/div/div.H           |  67 +++-
 .../field/enstrophy/enstrophy.C               |  15 +-
 .../field/enstrophy/enstrophy.H               |  63 ++-
 .../field/externalCoupled/externalCoupled.C   |  15 +-
 .../field/externalCoupled/externalCoupled.H   |  86 ++--
 ...oupledTemperatureMixedFvPatchScalarField.H |   2 +-
 .../externalCoupledTemplates.C                |   3 +-
 .../extractEulerianParticles.C                |   5 +-
 .../extractEulerianParticles.H                |  84 ++--
 .../field/fieldAverage/fieldAverage.H         | 119 +++---
 .../fieldAverageItem/fieldAverageItem.H       |  43 +-
 .../fieldAverageItem/fieldAverageItemIO.C     |   4 +
 .../fieldCoordinateSystemTransform.C          |   1 -
 .../fieldCoordinateSystemTransform.H          |  56 ++-
 .../field/fieldExpression/fieldExpression.H   |  46 ++-
 .../field/fieldExtents/fieldExtents.C         |   4 +-
 .../field/fieldExtents/fieldExtents.H         |  83 ++--
 .../field/fieldMinMax/fieldMinMax.H           |  84 ++--
 .../field/fieldValues/fieldValue/fieldValue.C |  22 +-
 .../field/fieldValues/fieldValue/fieldValue.H |  59 ++-
 .../fieldValueDelta/fieldValueDelta.C         |   8 +-
 .../fieldValueDelta/fieldValueDelta.H         |  48 ++-
 .../surfaceFieldValue/surfaceFieldValue.H     | 170 ++++----
 .../fieldValues/volFieldValue/volFieldValue.H | 109 ++---
 .../field/fieldsExpression/fieldsExpression.H |  45 ++-
 src/functionObjects/field/flowType/flowType.C |  22 +-
 src/functionObjects/field/flowType/flowType.H |  77 +++-
 src/functionObjects/field/flux/flux.C         |   6 -
 src/functionObjects/field/flux/flux.H         |  69 +++-
 .../field/fluxSummary/fluxSummary.C           |  15 +-
 .../field/fluxSummary/fluxSummary.H           | 109 ++---
 src/functionObjects/field/grad/grad.H         |  60 ++-
 .../heatTransferCoeff/heatTransferCoeff.C     |   6 -
 .../heatTransferCoeff/heatTransferCoeff.H     |  94 +++--
 .../heatTransferCoeffModel.H                  |   2 +-
 .../field/histogram/histogram.C               |  14 +-
 .../field/histogram/histogram.H               | 100 +++--
 .../field/interfaceHeight/interfaceHeight.C   |  12 +-
 .../field/interfaceHeight/interfaceHeight.H   |  82 +++-
 .../field/limitFields/limitFields.H           |  79 ++--
 src/functionObjects/field/mag/mag.H           |  68 +++-
 src/functionObjects/field/magSqr/magSqr.H     |  72 +++-
 .../field/mapFields/mapFields.C               |  10 +-
 .../field/mapFields/mapFields.H               |  93 ++++-
 src/functionObjects/field/momentum/momentum.C |   2 +-
 src/functionObjects/field/momentum/momentum.H |  93 +++--
 .../field/momentumError/momentumError.C       |   5 +-
 .../field/momentumError/momentumError.H       |  67 +++-
 .../field/nearWallFields/nearWallFields.H     |  78 ++--
 .../particleDistribution.C                    |  13 +-
 .../particleDistribution.H                    |  72 ++--
 src/functionObjects/field/pressure/pressure.C |   7 +-
 src/functionObjects/field/pressure/pressure.H | 150 ++++---
 .../field/processorField/processorField.C     |   7 +-
 .../field/processorField/processorField.H     |  58 +--
 .../proudmanAcousticPower.C                   |   6 +-
 .../proudmanAcousticPower.H                   |  75 ++--
 .../field/randomise/randomise.C               |   7 +-
 .../field/randomise/randomise.H               |  70 +++-
 .../reactionsSensitivityAnalysis.C            |  17 +-
 .../reactionsSensitivityAnalysis.H            | 108 +++--
 .../field/readFields/readFields.C             |  14 +-
 .../field/readFields/readFields.H             |  74 ++--
 .../field/reference/reference.C               |  21 +-
 .../field/reference/reference.H               |  96 +++--
 .../field/reference/referenceTemplates.C      |   4 +-
 .../regionSizeDistribution.C                  |  15 +-
 .../regionSizeDistribution.H                  | 153 ++++---
 src/functionObjects/field/setFlow/setFlow.C   |  18 +-
 src/functionObjects/field/setFlow/setFlow.H   | 157 ++++++--
 .../stabilityBlendingFactor.C                 |  26 +-
 .../stabilityBlendingFactor.H                 | 376 ++++++++++--------
 .../field/streamFunction/streamFunction.C     |  18 +-
 .../field/streamFunction/streamFunction.H     |  59 ++-
 .../field/streamLine/streamLine.C             |   8 +-
 .../field/streamLine/streamLine.H             | 138 ++++---
 src/functionObjects/field/subtract/subtract.C |   7 +-
 src/functionObjects/field/subtract/subtract.H |  71 +++-
 .../field/subtract/subtractTemplates.C        |   3 +-
 .../field/surfaceDistance/surfaceDistance.C   |  18 +-
 .../field/surfaceDistance/surfaceDistance.H   |  66 +--
 .../surfaceInterpolate/surfaceInterpolate.C   |  18 +-
 .../surfaceInterpolate/surfaceInterpolate.H   |  70 ++--
 .../field/turbulenceFields/turbulenceFields.C |  30 +-
 .../field/turbulenceFields/turbulenceFields.H | 194 +++++----
 .../turbulenceFieldsTemplates.C               |   5 +-
 .../field/valueAverage/valueAverage.C         |  16 +-
 .../field/valueAverage/valueAverage.H         |  99 +++--
 .../field/vorticity/vorticity.C               |  15 +-
 .../field/vorticity/vorticity.H               |  58 ++-
 .../wallBoundedStreamLine.C                   |  11 +-
 .../wallBoundedStreamLine.H                   | 133 ++++---
 .../field/wallHeatFlux/wallHeatFlux.C         |   1 -
 .../field/wallHeatFlux/wallHeatFlux.H         |  70 ++--
 .../field/wallShearStress/wallShearStress.C   |   3 +-
 .../field/wallShearStress/wallShearStress.H   |  75 ++--
 .../field/writeCellCentres/writeCellCentres.C |  17 +-
 .../field/writeCellCentres/writeCellCentres.H |  52 ++-
 .../field/writeCellVolumes/writeCellVolumes.C |  11 +-
 .../field/writeCellVolumes/writeCellVolumes.H |  51 ++-
 src/functionObjects/field/yPlus/yPlus.C       |  18 +-
 src/functionObjects/field/yPlus/yPlus.H       |  55 ++-
 .../field/zeroGradient/zeroGradient.C         |   8 +-
 .../field/zeroGradient/zeroGradient.H         |  84 ++--
 .../system/FOXiReactionRate                   |  28 ++
 .../system/controlDict                        |   6 +
 .../RAS/aerofoilNACA0012/system/controlDict   |   2 +-
 .../system/externalCoupled                    |  34 +-
 .../injectorPipe/system/derivedFields         |  29 +-
 .../gasMixing/injectorPipe/system/fluxSummary |  41 +-
 .../squareBend/system/controlDict             |   4 +-
 .../squareBend/system/derivedFields           |  34 +-
 .../squareBend/system/wallHeatFlux            |  36 ++
 .../system/externalCoupled                    |  31 +-
 .../system/externalCoupled                    |  34 +-
 .../cavityMappingTest/system/controlDict      |  30 +-
 .../system/postProcessingDict                 |  17 +-
 .../LES/channel395DFSEM/system/controlDict    |  10 +-
 .../LES/channel395DFSEM/system/fvSchemes      |   2 +-
 .../periodicHill/transient/system/controlDict |  17 +-
 .../fullCase/system/controlDict               |  19 +-
 .../pimpleFoam/LES/vortexShed/Allrun          |   2 +-
 .../LES/vortexShed/system/controlDict         |  20 +-
 .../RAS/propeller/system/AMIWeights           |  27 +-
 .../motorBike/system/stabilizationSchemes     |  51 ++-
 .../pisoFoam/RAS/cavity/{0 => 0.orig}/U       |   0
 .../pisoFoam/RAS/cavity/{0 => 0.orig}/epsilon |   0
 .../pisoFoam/RAS/cavity/{0 => 0.orig}/k       |   0
 .../pisoFoam/RAS/cavity/{0 => 0.orig}/nuTilda |   0
 .../pisoFoam/RAS/cavity/{0 => 0.orig}/nut     |   0
 .../pisoFoam/RAS/cavity/{0 => 0.orig}/omega   |   0
 .../pisoFoam/RAS/cavity/{0 => 0.orig}/p       |   0
 .../pisoFoam/RAS/cavity/Allclean              |   8 +
 .../incompressible/pisoFoam/RAS/cavity/Allrun |  12 +
 .../pisoFoam/RAS/cavity/system/FOCourantNo    |  34 ++
 .../pisoFoam/RAS/cavity/system/FOLambVector   |  30 ++
 .../pisoFoam/RAS/cavity/system/FOLambda2      |  30 ++
 .../pisoFoam/RAS/cavity/system/FOPecletNo     |  33 ++
 .../pisoFoam/RAS/cavity/system/FOQ            |  30 ++
 .../pisoFoam/RAS/cavity/system/FOadd          |  30 ++
 .../RAS/cavity/system/FOblendingFactor        |  34 ++
 .../pisoFoam/RAS/cavity/system/FOcomponents   |  29 ++
 .../RAS/cavity/system/FOcontinuityError       |  35 ++
 .../pisoFoam/RAS/cavity/system/FOddt          |  30 ++
 .../pisoFoam/RAS/cavity/system/FOddt2         |  33 ++
 .../pisoFoam/RAS/cavity/system/FOdiv          |  51 +++
 .../pisoFoam/RAS/cavity/system/FOenstrophy    |  30 ++
 .../pisoFoam/RAS/cavity/system/FOfieldAverage |  61 +++
 .../pisoFoam/RAS/cavity/system/FOflowType     |  30 ++
 .../pisoFoam/RAS/cavity/system/FOflux         |  33 ++
 .../pisoFoam/RAS/cavity/system/FOgrad         |  51 +++
 .../pisoFoam/RAS/cavity/system/FOhistogram    |  39 ++
 .../pisoFoam/RAS/cavity/system/FOlimitFields  |  32 ++
 .../pisoFoam/RAS/cavity/system/FOmag          |  51 +++
 .../pisoFoam/RAS/cavity/system/FOmagSqr       |  51 +++
 .../pisoFoam/RAS/cavity/system/FOmomentum     |  43 ++
 .../RAS/cavity/system/FOnearWallFields        |  35 ++
 .../pisoFoam/RAS/cavity/system/FOpressure     | 121 ++++++
 .../RAS/cavity/system/FOprocessorField        |  28 ++
 .../RAS/cavity/system/FOproudmanAcousticPower |  33 ++
 .../pisoFoam/RAS/cavity/system/FOrandomise    |  30 ++
 .../pisoFoam/RAS/cavity/system/FOreadFields   |  32 ++
 .../pisoFoam/RAS/cavity/system/FOreference    |  62 +++
 .../pisoFoam/RAS/cavity/system/FOsetFlow      |  32 ++
 .../RAS/cavity/system/FOstreamFunction        |  30 ++
 .../pisoFoam/RAS/cavity/system/FOstreamLine   |  51 +++
 .../pisoFoam/RAS/cavity/system/FOsubtract     |  30 ++
 .../RAS/cavity/system/FOsurfaceDistance       |  39 ++
 .../RAS/cavity/system/FOsurfaceInterpolate    |  29 ++
 .../RAS/cavity/system/FOturbulenceFields      |  49 +++
 .../pisoFoam/RAS/cavity/system/FOvalueAverage |  38 ++
 .../pisoFoam/RAS/cavity/system/FOvorticity    |  30 ++
 .../RAS/cavity/system/FOwallShearStress       |  35 ++
 .../RAS/cavity/system/FOwriteCellCentres      |  28 ++
 .../RAS/cavity/system/FOwriteCellVolumes      |  28 ++
 .../pisoFoam/RAS/cavity/system/FOyPlus        |  32 ++
 .../pisoFoam/RAS/cavity/system/FOzeroGradient |  52 +++
 .../pisoFoam/RAS/cavity/system/controlDict    |  48 +++
 .../pisoFoam/RAS/cavity/system/fvSchemes      |   7 +-
 .../motorBike/system/wallBoundedStreamLines   |  57 ++-
 .../squareBend/system/derivedFields           |  34 +-
 .../sprayFoam/aachenBomb/system/controlDict   |  23 +-
 .../eulerianInjection/system/controlDict      |  26 +-
 .../system/controlDict                        |   1 +
 .../RAS/bubbleColumn/system/controlDict       |  33 ++
 .../laminar/bubbleColumn/system/controlDict   |   9 +
 .../stefanProblem/system/controlDict          |  28 +-
 .../stefanProblem/system/controlDict          |  28 +-
 264 files changed, 7130 insertions(+), 2840 deletions(-)
 rename etc/caseDicts/postProcessing/fields/{lambVector => LambVector} (68%)
 rename src/functionObjects/field/{lambVector/lambVector.C => LambVector/LambVector.C} (87%)
 rename src/functionObjects/field/{lambVector/lambVector.H => LambVector/LambVector.H} (50%)
 create mode 100644 tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/FOXiReactionRate
 create mode 100644 tutorials/compressible/rhoSimpleFoam/squareBend/system/wallHeatFlux
 rename tutorials/incompressible/pisoFoam/RAS/cavity/{0 => 0.orig}/U (100%)
 rename tutorials/incompressible/pisoFoam/RAS/cavity/{0 => 0.orig}/epsilon (100%)
 rename tutorials/incompressible/pisoFoam/RAS/cavity/{0 => 0.orig}/k (100%)
 rename tutorials/incompressible/pisoFoam/RAS/cavity/{0 => 0.orig}/nuTilda (100%)
 rename tutorials/incompressible/pisoFoam/RAS/cavity/{0 => 0.orig}/nut (100%)
 rename tutorials/incompressible/pisoFoam/RAS/cavity/{0 => 0.orig}/omega (100%)
 rename tutorials/incompressible/pisoFoam/RAS/cavity/{0 => 0.orig}/p (100%)
 create mode 100755 tutorials/incompressible/pisoFoam/RAS/cavity/Allclean
 create mode 100755 tutorials/incompressible/pisoFoam/RAS/cavity/Allrun
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOCourantNo
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOLambVector
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOLambda2
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOPecletNo
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOQ
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOadd
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOblendingFactor
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOcomponents
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOcontinuityError
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOddt
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOddt2
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOdiv
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOenstrophy
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOfieldAverage
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOflowType
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOflux
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOgrad
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOhistogram
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOlimitFields
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOmag
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOmagSqr
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOmomentum
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOnearWallFields
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOpressure
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOprocessorField
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOproudmanAcousticPower
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOrandomise
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOreadFields
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOreference
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsetFlow
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOstreamFunction
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOstreamLine
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsubtract
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsurfaceDistance
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsurfaceInterpolate
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOturbulenceFields
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOvalueAverage
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOvorticity
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOwallShearStress
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOwriteCellCentres
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOwriteCellVolumes
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOyPlus
 create mode 100644 tutorials/incompressible/pisoFoam/RAS/cavity/system/FOzeroGradient

diff --git a/etc/caseDicts/postProcessing/fields/AMIWeights b/etc/caseDicts/postProcessing/fields/AMIWeights
index ce628f15ca7..4b78063da0b 100644
--- a/etc/caseDicts/postProcessing/fields/AMIWeights
+++ b/etc/caseDicts/postProcessing/fields/AMIWeights
@@ -6,14 +6,16 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 Description
-    Calculates and writes the second largest eigenvalue of the sum of the
-    square of the symmetrical and anti-symmetrical parts of the velocity
-    gradient tensor.
+    Computes the min/max/average arbitrary mesh interface (AMI) weights, and
+    optionally reports to a text file or writes VTK surfaces of the sum of
+    the weights and mask fields for arbitrarily coupled mesh interface (ACMI)
+    patches.
 
 \*---------------------------------------------------------------------------*/
 
 type            AMIWeights;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
+
 writeFields     yes;
 writeControl    writeTime;
 
diff --git a/etc/caseDicts/postProcessing/fields/CourantNo b/etc/caseDicts/postProcessing/fields/CourantNo
index 7278240a67a..0b1dd48a502 100644
--- a/etc/caseDicts/postProcessing/fields/CourantNo
+++ b/etc/caseDicts/postProcessing/fields/CourantNo
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            CourantNo;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           phi;
 
diff --git a/etc/caseDicts/postProcessing/fields/lambVector b/etc/caseDicts/postProcessing/fields/LambVector
similarity index 68%
rename from etc/caseDicts/postProcessing/fields/lambVector
rename to etc/caseDicts/postProcessing/fields/LambVector
index 2726b04e60d..bea01caba0e 100644
--- a/etc/caseDicts/postProcessing/fields/lambVector
+++ b/etc/caseDicts/postProcessing/fields/LambVector
@@ -6,14 +6,14 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 Description
-    Calculates and writes the second largest eigenvalue of the sum of the
-    square of the symmetrical and anti-symmetrical parts of the velocity
-    gradient tensor.
+    Calculates Lamb vector, i.e. the cross product of vorticity and velocity.
+    Calculation of the divergence of the Lamb vector can be performed by using
+    \c div function object on this \c LambVector function object.
 
 \*---------------------------------------------------------------------------*/
 
-type            lambVector;
-libs            ("libfieldFunctionObjects.so");
+type            LambVector;
+libs            (fieldFunctionObjects);
 
 field           U;
 
diff --git a/etc/caseDicts/postProcessing/fields/Lambda2 b/etc/caseDicts/postProcessing/fields/Lambda2
index af2eb9883ae..27afb5dc914 100644
--- a/etc/caseDicts/postProcessing/fields/Lambda2
+++ b/etc/caseDicts/postProcessing/fields/Lambda2
@@ -13,7 +13,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            Lambda2;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           U;
 
diff --git a/etc/caseDicts/postProcessing/fields/MachNo b/etc/caseDicts/postProcessing/fields/MachNo
index 3656ffe7a63..5153ad23d5a 100644
--- a/etc/caseDicts/postProcessing/fields/MachNo
+++ b/etc/caseDicts/postProcessing/fields/MachNo
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            MachNo;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           U;
 
diff --git a/etc/caseDicts/postProcessing/fields/PecletNo b/etc/caseDicts/postProcessing/fields/PecletNo
index 066e674834d..60155386033 100644
--- a/etc/caseDicts/postProcessing/fields/PecletNo
+++ b/etc/caseDicts/postProcessing/fields/PecletNo
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            PecletNo;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           phi;
 
diff --git a/etc/caseDicts/postProcessing/fields/Q b/etc/caseDicts/postProcessing/fields/Q
index 98429a767f0..3f8b7f8a2b0 100644
--- a/etc/caseDicts/postProcessing/fields/Q
+++ b/etc/caseDicts/postProcessing/fields/Q
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            Q;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           U;
 
diff --git a/etc/caseDicts/postProcessing/fields/R b/etc/caseDicts/postProcessing/fields/R
index 27d7e9f6430..0294d5e6ed0 100644
--- a/etc/caseDicts/postProcessing/fields/R
+++ b/etc/caseDicts/postProcessing/fields/R
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            turbulenceFields;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           R;
 
diff --git a/etc/caseDicts/postProcessing/fields/XiReactionRate b/etc/caseDicts/postProcessing/fields/XiReactionRate
index 862dc8b03c1..9be07bcae52 100644
--- a/etc/caseDicts/postProcessing/fields/XiReactionRate
+++ b/etc/caseDicts/postProcessing/fields/XiReactionRate
@@ -12,7 +12,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            XiReactionRate;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 fields          (b Xi Su);
 
diff --git a/etc/caseDicts/postProcessing/fields/add b/etc/caseDicts/postProcessing/fields/add
index c08d9526981..2b154352140 100644
--- a/etc/caseDicts/postProcessing/fields/add
+++ b/etc/caseDicts/postProcessing/fields/add
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            add;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 fields          (<field names>);
 
diff --git a/etc/caseDicts/postProcessing/fields/components b/etc/caseDicts/postProcessing/fields/components
index 23537c3fa15..779790366b2 100644
--- a/etc/caseDicts/postProcessing/fields/components
+++ b/etc/caseDicts/postProcessing/fields/components
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            components;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           <fieldName>;
 
diff --git a/etc/caseDicts/postProcessing/fields/ddt b/etc/caseDicts/postProcessing/fields/ddt
index 8296c6f6e89..27f130b9217 100644
--- a/etc/caseDicts/postProcessing/fields/ddt
+++ b/etc/caseDicts/postProcessing/fields/ddt
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            ddt;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           <fieldName>;
 
diff --git a/etc/caseDicts/postProcessing/fields/div b/etc/caseDicts/postProcessing/fields/div
index ff2c533c85d..257695fda8e 100644
--- a/etc/caseDicts/postProcessing/fields/div
+++ b/etc/caseDicts/postProcessing/fields/div
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            div;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           <fieldName>;
 
diff --git a/etc/caseDicts/postProcessing/fields/energySpectrum b/etc/caseDicts/postProcessing/fields/energySpectrum
index cc45b2efe45..91d5b64c8b2 100644
--- a/etc/caseDicts/postProcessing/fields/energySpectrum
+++ b/etc/caseDicts/postProcessing/fields/energySpectrum
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            energySpectrum;
-libs            ("librandomProcessesFunctionObjects.so");
+libs            (randomProcessesFunctionObjects);
 
 executeControl  writeTime;
 writeControl    writeTime;
diff --git a/etc/caseDicts/postProcessing/fields/enstrophy b/etc/caseDicts/postProcessing/fields/enstrophy
index 11f0004e076..82b7a084b04 100644
--- a/etc/caseDicts/postProcessing/fields/enstrophy
+++ b/etc/caseDicts/postProcessing/fields/enstrophy
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            enstrophy;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           U;
 
diff --git a/etc/caseDicts/postProcessing/fields/fieldMinMax b/etc/caseDicts/postProcessing/fields/fieldMinMax
index df66d158cae..663c0d932d2 100644
--- a/etc/caseDicts/postProcessing/fields/fieldMinMax
+++ b/etc/caseDicts/postProcessing/fields/fieldMinMax
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            fieldMinMax;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 fields          (".*");
 
diff --git a/etc/caseDicts/postProcessing/fields/flowType b/etc/caseDicts/postProcessing/fields/flowType
index 2b47419d10d..4db371d01ac 100644
--- a/etc/caseDicts/postProcessing/fields/flowType
+++ b/etc/caseDicts/postProcessing/fields/flowType
@@ -14,7 +14,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            flowType;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           U;
 
diff --git a/etc/caseDicts/postProcessing/fields/grad b/etc/caseDicts/postProcessing/fields/grad
index 394dd7336df..b87820565f8 100644
--- a/etc/caseDicts/postProcessing/fields/grad
+++ b/etc/caseDicts/postProcessing/fields/grad
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            grad;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           <fieldName>;
 
diff --git a/etc/caseDicts/postProcessing/fields/mag b/etc/caseDicts/postProcessing/fields/mag
index cb067e51d20..2cad0ea778e 100644
--- a/etc/caseDicts/postProcessing/fields/mag
+++ b/etc/caseDicts/postProcessing/fields/mag
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            mag;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           <fieldName>;
 
diff --git a/etc/caseDicts/postProcessing/fields/magSqr b/etc/caseDicts/postProcessing/fields/magSqr
index 9cf8553a8c4..1b0e2925195 100644
--- a/etc/caseDicts/postProcessing/fields/magSqr
+++ b/etc/caseDicts/postProcessing/fields/magSqr
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            magSqr;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           <fieldName>;
 
diff --git a/etc/caseDicts/postProcessing/fields/processorField b/etc/caseDicts/postProcessing/fields/processorField
index 5a4631d89ff..883a675e2bf 100644
--- a/etc/caseDicts/postProcessing/fields/processorField
+++ b/etc/caseDicts/postProcessing/fields/processorField
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            processorField;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 executeControl  writeTime;
 writeControl    writeTime;
diff --git a/etc/caseDicts/postProcessing/fields/streamFunction b/etc/caseDicts/postProcessing/fields/streamFunction
index 6f3afa456e2..9f66d37f4ec 100644
--- a/etc/caseDicts/postProcessing/fields/streamFunction
+++ b/etc/caseDicts/postProcessing/fields/streamFunction
@@ -12,7 +12,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            streamFunction;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           phi;
 
diff --git a/etc/caseDicts/postProcessing/fields/subtract b/etc/caseDicts/postProcessing/fields/subtract
index 1a2ed45d020..8416b90929d 100644
--- a/etc/caseDicts/postProcessing/fields/subtract
+++ b/etc/caseDicts/postProcessing/fields/subtract
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            subtract;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 fields          (<field names>);
 
diff --git a/etc/caseDicts/postProcessing/fields/turbulenceFields b/etc/caseDicts/postProcessing/fields/turbulenceFields
index 99536ba2e03..82f51daad53 100644
--- a/etc/caseDicts/postProcessing/fields/turbulenceFields
+++ b/etc/caseDicts/postProcessing/fields/turbulenceFields
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            turbulenceFields;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 fields          (<field names>);
 
diff --git a/etc/caseDicts/postProcessing/fields/vorticity b/etc/caseDicts/postProcessing/fields/vorticity
index dbd514057df..108b6a3f2ba 100644
--- a/etc/caseDicts/postProcessing/fields/vorticity
+++ b/etc/caseDicts/postProcessing/fields/vorticity
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            vorticity;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 field           U;
 
diff --git a/etc/caseDicts/postProcessing/fields/wallHeatFlux b/etc/caseDicts/postProcessing/fields/wallHeatFlux
index a91079d4a3b..1663648d15b 100644
--- a/etc/caseDicts/postProcessing/fields/wallHeatFlux
+++ b/etc/caseDicts/postProcessing/fields/wallHeatFlux
@@ -12,7 +12,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            wallHeatFlux;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 executeControl  writeTime;
 writeControl    writeTime;
diff --git a/etc/caseDicts/postProcessing/fields/wallShearStress b/etc/caseDicts/postProcessing/fields/wallShearStress
index 1a82871c51e..d7001e3b215 100644
--- a/etc/caseDicts/postProcessing/fields/wallShearStress
+++ b/etc/caseDicts/postProcessing/fields/wallShearStress
@@ -12,7 +12,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            wallShearStress;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 executeControl  writeTime;
 writeControl    writeTime;
diff --git a/etc/caseDicts/postProcessing/fields/writeCellCentres b/etc/caseDicts/postProcessing/fields/writeCellCentres
index dd164ba147d..241da057e7f 100644
--- a/etc/caseDicts/postProcessing/fields/writeCellCentres
+++ b/etc/caseDicts/postProcessing/fields/writeCellCentres
@@ -13,7 +13,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            writeCellCentres;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 executeControl  writeTime;
 writeControl    writeTime;
diff --git a/etc/caseDicts/postProcessing/fields/writeCellVolumes b/etc/caseDicts/postProcessing/fields/writeCellVolumes
index 060757869de..b6cc0cbbe44 100644
--- a/etc/caseDicts/postProcessing/fields/writeCellVolumes
+++ b/etc/caseDicts/postProcessing/fields/writeCellVolumes
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            writeCellVolumes;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 executeControl  writeTime;
 writeControl    writeTime;
diff --git a/etc/caseDicts/postProcessing/fields/writeObjects b/etc/caseDicts/postProcessing/fields/writeObjects
index e1da3e863af..9ea6cdd4518 100644
--- a/etc/caseDicts/postProcessing/fields/writeObjects
+++ b/etc/caseDicts/postProcessing/fields/writeObjects
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            writeObjects;
-libs            ("libutilityFunctionObjects.so");
+libs            (utilityFunctionObjects);
 
 objects         (<object names>);
 
diff --git a/etc/caseDicts/postProcessing/fields/yPlus b/etc/caseDicts/postProcessing/fields/yPlus
index 76b394d6b33..9024836e945 100644
--- a/etc/caseDicts/postProcessing/fields/yPlus
+++ b/etc/caseDicts/postProcessing/fields/yPlus
@@ -11,7 +11,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 type            yPlus;
-libs            ("libfieldFunctionObjects.so");
+libs            (fieldFunctionObjects);
 
 executeControl  writeTime;
 writeControl    writeTime;
diff --git a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C
index 40f456e632d..e6cb9ceb6ca 100644
--- a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C
+++ b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C
@@ -52,28 +52,23 @@ Foam::functionObjects::FUNCTIONOBJECT::FUNCTIONOBJECT
 )
 :
     fvMeshFunctionObject(name, runTime, dict),
+    boolData_(dict.getOrDefault<bool>("boolData"), true),
+    labelData_(dict.get<label>("labelData")),
     wordData_(dict.getOrDefault<word>("wordData", "defaultWord")),
-    scalarData_(dict.get<scalar>("scalarData")),
-    labelData_(dict.get<label>("labelData"))
+    scalarData_(dict.getOrDefault<scalar>("scalarData", 1.0))
 {
     read(dict);
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::FUNCTIONOBJECT::~FUNCTIONOBJECT()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::FUNCTIONOBJECT::read(const dictionary& dict)
 {
+    dict.readEntry("boolData", boolData_);
+    dict.readEntry("labelData", labelData_);
     dict.readIfPresent("wordData", wordData_);
-
     dict.readEntry("scalarData", scalarData_);
-    dict.readEntry("labelData", labelData_);
 
     return true;
 }
diff --git a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.H b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.H
index b4bb82b67dd..ca4e55a94c0 100644
--- a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.H
+++ b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) YEAR YEAR AUTHOR,AFFILIATION
+    Copyright (C) YEAR AUTHOR, AFFILIATION
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -27,34 +27,120 @@ Class
     Foam::functionObjects::FUNCTIONOBJECT
 
 Group
+    grpFieldFunctionObjects
 
 Description
-    This function object...
+    <minimal description of the function object>
 
-    Example of function object specification:
+    <equation>
+    \f[
+        x = x_{ref}^x + \rho \omega
+    \f]
+
+    <variable-explanation table>
+    where
+    \vartable
+      \rho        | <explanation> [units, e.g. kg/m3]
+      \omega      | \f$ \nabla \cdot \vec U \f$
+      ...         | ...
+    \endvartable
+
+    <inline equation>
+    where \f$ x_k \f$ is ...
+
+    <input-output table>
+    \table
+      Operand      | Type                 | Location
+      input        | {vol,surface}\<Type\>Field(s) <!--
+               --> |$FOAM_CASE/\<time\>/\<inpField\>s
+      output file  | dat                  <!--
+              -->  | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field | volScalarField       | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     FUNCTIONOBJECT1
     {
+        // Mandatory entries (unmodifiable)
         type           FUNCTIONOBJECT;
-        libs ("libFUNCTIONOBJECTFunctionObject.so");
+        libs           (FUNCTIONOBJECTFunctionObject);
+
+        // Mandatory entries (runtime modifiable)
+        ...
+
+        // Mandatory (inherited) entries (unmodifiable)
+        ...
+
+        // Mandatory (inherited) entries (runtime unmodifiable)
+        ...
+
+        // Optional entries (unmodifiable)
+        ...
+
+        // Optional entries (runtime modifiable)
+        boolData       <bool>;
+        labelData      <label>;
+        wordData       <word>;
+        scalarData     <scalar>;
+
+        // Optional (inherited) entries
         ...
-        wordData       someWord;
-        scalarData     1.0;
-        labelData      1;
     }
     \endverbatim
 
-Usage
+    where the entries mean:
     \table
-        Property     | Description               | Required | Default value
-        type         | type name: FUNCTIONOBJECT | yes      |
-        wordData     | some word option...       | no       | defaultWord
-        scalarData   | some scalar value...      | yes      |
-        labelData    | some label value...       | yes      |
+      Property   | Description                      | Type | Req'd | Dflt
+      type       | Type name: FUNCTIONOBJECT        | word |  yes  | -
+      libs       | Library name: FUNCTIONOBJECTFunctionObject  <!--
+             --> | word  | yes | -
+      boolData   | <explanation>                    | bool |  yes  | -
+      labelData  | <explanation>                    | label |  yes | -
+      wordData   | <explanation>                    | word |  yes  | -
+      scalarData | <explanation>                    | scalar |  no | 1.0
+      wordListData  | <explanation>                 | wordList | yes | -
     \endtable
 
+    Options for the \c ENTRY entry:
+    \verbatim
+        <option1>
+        <option2> | <explanation>
+      ...
+    \endverbatim
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+     - \link fieldsExpression.H \endlink
+     - \link writeFile.H \endlink
+     ...
+
+    <if \c postProcess is applicable>
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func FUNCTIONOBJECT
+    \endverbatim
+
+    <if \c postProcess is not applicable>
+    Usage by the \c postProcess utility is not available.
+
+Note
+    - <note1>
+    - <note2>
+    ...
+
+See also
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::FUNCTIONOBJECT
+    ...
+
 SourceFiles
     FUNCTIONOBJECT.C
+    FUNCTIONOBJECTTEMPLATES.C
+    ...
 
 \*---------------------------------------------------------------------------*/
 
@@ -78,26 +164,19 @@ class FUNCTIONOBJECT
 :
     public fvMeshFunctionObject
 {
-    // Private data
-
-        //- word
-        word wordData_;
+    // Private Data
 
-        //- scalar
-        scalar scalarData_;
+        //- bool
+        bool boolData_;
 
         //- label
         label labelData_;
 
+        //- word
+        word wordData_;
 
-    // Private Member Functions
-
-
-        //- No copy construct
-        FUNCTIONOBJECT(const FUNCTIONOBJECT&);
-
-        //- No copy assignment
-        void operator=(const FUNCTIONOBJECT&);
+        //- scalar
+        scalar scalarData_;
 
 
 public:
@@ -116,9 +195,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        FUNCTIONOBJECT(const FUNCTIONOBJECT&) = delete;
+
+        //- No copy assignment
+        void operator=(const FUNCTIONOBJECT&) = delete;
+
 
     //- Destructor
-    virtual ~FUNCTIONOBJECT();
+    virtual ~FUNCTIONOBJECT() = default;
 
 
     // Member Functions
diff --git a/src/OpenFOAM/db/functionObjects/functionObject/functionObject.H b/src/OpenFOAM/db/functionObjects/functionObject/functionObject.H
index a6979cda63f..852ff5ac7ac 100644
--- a/src/OpenFOAM/db/functionObjects/functionObject/functionObject.H
+++ b/src/OpenFOAM/db/functionObjects/functionObject/functionObject.H
@@ -28,52 +28,88 @@ Namespace
     Foam::functionObjects
 
 Description
-    Namespace for functionObjects.
-
-    OpenFOAM includes a collection of functionObjects selected by the user at
-    run-time to manipulate the simulation and provide mechanisms to extract
-    field and derived quantities.  Alternatively, the same actions can be
-    executed after the simulation using the \c -postProcess command-line option.
+    Function objects are OpenFOAM utilities to ease workflow configurations and
+    enhance workflows by producing additional user-requested data both during
+    runtime and postprocessing calculations, typically in the form of
+    additional logging to the screen, or generating text, image and field files.
+
+    Function objects eliminate the need to store all runtime generated data,
+    hence saving considerable resources. Furthermore, function objects are
+    readily applied to batch-driven processes, improving reliability by
+    standardising the sequence of operations and reducing the amount of manual
+    interaction.
+
+    In addition, the output of most function objects, e.g. output fields, are
+    stored on the mesh database so that it can be retrieved and used for other
+    applications (e.g. directly using \c wallShearStress function object output
+    in \c fieldAverage function object to produce \c wallShearStressMean field).
 
     \section secFunctionObjects Using function objects
 
-    FunctionObjects are selected by additional entries in the global case
-    system/controlDict dictionary.  Each object is listed in the \c
-    functions sub-dictionary, e.g. to select the \c functionObjectType
-    functionObject the following entry would be specified:
+    Function objects can be executed by using two methods:
+
+      - \c functions sub-dictionary in the \c system/controlDict file
+      - \c postProcess command-line utility
+
+    For the first method, each selected function object should be listed inside
+    \c functions sub-dictionary of the \c system/controlDict file as a nested
+    sub-dictionary, typically as in the following example:
 
     \verbatim
-    functions
+    functions    // sub-dictionary name under the system/controlDict file
     {
-        <functionObjectName>
+        <userDefinedSubDictName1>
         {
-            type                functionObjectType;
-            libs                (myFunctionObjectLib);
-            region              defaultRegion;
-            enabled             yes;
+            // Mandatory entries
+            type                <functionObjectTypeName>;
+            libs                (<libType>FunctionObjects);
+
+            // Mandatory entries defined in <functionObjectType>
+            ...
+
+            // Optional entries defined in <functionObjectType>
+            ...
+
+            // Optional (inherited) entries
+            region              region0;
+            enabled             true;
+            log                 true;
             timeStart           0;
-            timeEnd             10;
-            writeControl        writeTime;
+            timeEnd             1000;
+            executeControl      timeStep;
+            executeInterval     1;
+            writeControl        timeStep;
             writeInterval       1;
+        }
+
+        <userDefinedSubDictName2>
+        {
+            ...
+        }
+
+        ...
+
+        <userDefinedSubDictNameN>
+        {
             ...
         }
     }
     \endverbatim
 
-    Where:
+    where the entries mean:
     \table
-        Property | Description                              | Required | Default
-        type     | Type of function object                  | yes |
-        libs     | Libraries containing implementation      | yes |
-        region   | Name of region for multi-region cases    | no  |
-        enabled  | On/off switch                            | no  | yes
-        log      | Log information to standard output       | no  | yes
-        timeStart| Start time                               | no  |
-        timeEnd  | End time                                 | no  |
-        executeControl  | See time controls below           | no  | timeStep
-        executeInterval | Steps/time between execute phases | no  | 1
-        writeControl    | See time controls below           | no  | timeStep
-        writeInterval   | Steps/time between write phases   | no  | 1
+        Property | Description                            | Type | Req'd | Dflt
+        type     | Type name of function object           | word |  yes  | -
+        libs     | Library name containing implementation | word |  yes  | -
+        region   | Name of region for multi-region cases  | word | no | region0
+        enabled  | Switch to turn function object on/off  | bool | no | true
+        log     | Switch to write log info to standard output | bool | no | true
+        timeStart | Start time for function object execution | scalar | no | 0
+        timeEnd   | End time for function object execution   | scalar | no | inf
+        executeControl  | See time controls below     | word | no    | timeStep
+        executeInterval | Steps/time between execute phases  | label | no  | 1
+        writeControl    | See time controls below     | word | no    | timeStep
+        writeInterval   | Steps/time between write phases    | label | no  | 1
     \endtable
 
     Time controls:
@@ -86,15 +122,17 @@ Description
         adjustableRunTime | Currently identical to "runTime"
         clockTime         | Trigger every 'Interval' clock time period
         cpuTime           | Trigger every 'Interval' CPU time period
-        onEnd             | Trigger on end of run
+        onEnd             | Trigger on end of simulation run
     \endtable
 
-    The sub-dictionary name \c \<functionObjectName\> is chosen by the user, and
-    is typically used as the name of the output directory for any data written
-    by the functionObject.  The \c type entry defines the type of function
-    object properties that follow.  FunctionObjects are packaged into separate
-    libraries and the \c libs entry is used to specify which library should be
-    loaded.
+    The sub-dictionary name \c <userDefinedSubDictName> is chosen by the user,
+    and is typically used as the name of the output directory for any data
+    written by the function object.
+
+    As the base mandatory entries, the \c type entry defines the type of
+    function object properties that follow.  Function objects are packaged into
+    separate libraries for flexibility and the \c libs entry is used to specify
+    which library should be loaded.
 
     Each function object has two separate run phases:
 
@@ -104,6 +142,36 @@ Description
 
     For each phase the respective time controls are provided, as listed above.
 
+
+    The second method of executing function objects is to use \c postProcess
+    utility.
+
+    When specified without additional arguments, the \c postProcess utility
+    executes all function objects defined in the \c system/controlDict file
+    for all time directories:
+
+    \verbatim
+        postProcess
+    \endverbatim
+
+    Most function objects can be invoked directly without the need to specify
+    the input dictionary using the \c -func option, e.g. to execute the Courant
+    number function object:
+
+    \verbatim
+        postProcess -func CourantNo
+    \endverbatim
+
+    In addition, the \c -postProcess option is available to all solvers,
+    and operates similarly to the stand-alone \c postProcess utility.
+    For example, having completed a \c simpleFoam calculation, the following
+    will execute all function objects defined in the \c system/controlDict file
+    for all time directories:
+
+    \verbatim
+        simpleFoam -postProcess
+    \endverbatim
+
 Class
     Foam::functionObject
 
@@ -111,8 +179,8 @@ Description
     Abstract base-class for Time/database function objects.
 
 See also
-    Foam::functionObjectList
-    Foam::functionObjects::timeControl
+    - Foam::functionObjectList
+    - Foam::functionObjects::timeControl
 
 SourceFiles
     functionObject.C
@@ -142,7 +210,7 @@ class mapPolyMesh;
 
 class functionObject
 {
-    // Private data
+    // Private Data
 
         //- Name
         const word name_;
@@ -164,6 +232,7 @@ public:
     //- Runtime type information
     virtual const word& type() const = 0;
 
+    //- Flag to execute debug content
     static int debug;
 
     //- Global post-processing mode switch
@@ -172,7 +241,7 @@ public:
     //- Directory prefix
     static word outputPrefix;
 
-    //- Switch write log to Info
+    //- Flag to write log into Info
     bool log;
 
 
diff --git a/src/OpenFOAM/db/functionObjects/regionFunctionObject/regionFunctionObject.H b/src/OpenFOAM/db/functionObjects/regionFunctionObject/regionFunctionObject.H
index bb1062c93db..d9fed7b56b2 100644
--- a/src/OpenFOAM/db/functionObjects/regionFunctionObject/regionFunctionObject.H
+++ b/src/OpenFOAM/db/functionObjects/regionFunctionObject/regionFunctionObject.H
@@ -37,9 +37,9 @@ Description
 
     Dictionary controls
     \table
-        Property    | Description                           | Required | Default
-        region      | Name of the mesh region               | no | region0
-        subRegion   | Name for alternative objectRegistry   | no | ""
+      Property    | Description                       | Type | Req'd | Dflt
+      region      | Name of the mesh region           | word | no    | region0
+      subRegion   | Name for alternative objectRegistry | word | no  | ""
     \endtable
 
 See also
diff --git a/src/OpenFOAM/db/functionObjects/stateFunctionObject/stateFunctionObject.H b/src/OpenFOAM/db/functionObjects/stateFunctionObject/stateFunctionObject.H
index 94d9b343ff1..bd8de02e32c 100644
--- a/src/OpenFOAM/db/functionObjects/stateFunctionObject/stateFunctionObject.H
+++ b/src/OpenFOAM/db/functionObjects/stateFunctionObject/stateFunctionObject.H
@@ -34,7 +34,7 @@ Description
 
     Note: cannot access the state dictionary until after construction of the
     function objects, since the owner container functionObjectList is owned
-    by time, and time owns the state dictionary.  I.e. need to wait for time
+    by time, and time owns the state dictionary  i.e. need to wait for time
     to be fully constructed.
 
 See also
diff --git a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C
index f749f472ba6..6b88808921a 100644
--- a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C
+++ b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C
@@ -214,7 +214,12 @@ Foam::functionObjects::writeFile::writeFile
 bool Foam::functionObjects::writeFile::read(const dictionary& dict)
 {
     writePrecision_ =
-        dict.getOrDefault("writePrecision", IOstream::defaultPrecision());
+        dict.getCheckOrDefault
+        (
+            "writePrecision",
+            IOstream::defaultPrecision(),
+            labelMinMax::ge(0)
+        );
 
     updateHeader_ =
         dict.lookupOrDefault("updateHeader", updateHeader_);
diff --git a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H
index d5c673c6efb..6a5f5f3a884 100644
--- a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H
+++ b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2012-2016 OpenFOAM Foundation
-    Copyright (C) 2015-2019 OpenCFD Ltd.
+    Copyright (C) 2015-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -28,11 +28,34 @@ Class
     Foam::functionObjects::writeFile
 
 Description
-    functionObject base class for writing single files
+    Base class for writing single files from the function objects.
+
+Usage
+
+    \verbatim
+    <userDefinedSubDictName1>
+    {
+        // Mandatory and other optional entries
+        ...
+
+        // Optional (inherited) entries (runtime modifiable)
+        writePrecision    8;
+        writeToFile       true;
+        useUserTime       true;
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property        | Description                      | Type | Req'd | Dflt
+      writePrecision  | Number of decimal points | label | no  | \<system dflt\>
+      writeToFile     | Flag to produce text file output | bool | no    | true
+      useUserTime | Flag to use user time, e.g. degrees  | bool | no    | true
+    \endtable
 
 See also
-    Foam::functionObject
-    Foam::functionObjects::logFiles
+    - Foam::functionObject
+    - Foam::functionObjects::logFiles
 
 SourceFiles
     writeFile.C
diff --git a/src/functionObjects/field/AMIWeights/AMIWeights.C b/src/functionObjects/field/AMIWeights/AMIWeights.C
index e61e1899a5f..8ff16fa42cb 100644
--- a/src/functionObjects/field/AMIWeights/AMIWeights.C
+++ b/src/functionObjects/field/AMIWeights/AMIWeights.C
@@ -370,7 +370,6 @@ bool Foam::functionObjects::AMIWeights::write()
         }
     }
 
-
     return true;
 }
 
diff --git a/src/functionObjects/field/AMIWeights/AMIWeights.H b/src/functionObjects/field/AMIWeights/AMIWeights.H
index 6d2067930a5..b4cf42698e3 100644
--- a/src/functionObjects/field/AMIWeights/AMIWeights.H
+++ b/src/functionObjects/field/AMIWeights/AMIWeights.H
@@ -30,33 +30,60 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Reports the min/max/average AMI weights to text file and optionally
-    writes VTK surfaces of the sum of the weights, and mask field for
-    ACMI patches.
+    Computes the min/max/average weights of arbitrary mesh interface (AMI)
+    patches, and optionally reports to a text file or writes VTK surfaces of
+    the sum of the weights and mask fields for arbitrarily coupled mesh
+    interface (ACMI) patches.
+
+    Operands:
+    \table
+      Operand           | Type           | Location
+      input             | -              | -
+      output file       | dat            | $POST/\<file\>
+      output field      | vtp            | $POST/\<AMINames\>_{src,tgt}.vtp
+    \endtable
+
+    where \c $POST=$FOAM_CASE/postProcessing/\<FO\>/\<time\>.
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     AMIWeights1
     {
+        // Mandatory entries (unmodifiable)
         type        AMIWeights;
         libs        (fieldFunctionObjects);
-        writeFields yes;
+
+        // Mandatory entries (runtime modifiable)
+        writeFields false;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | type name: AMIWeights   | yes         |
-        writeFields  | write weights as VTK fields | yes     |
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: AMIWeights              | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      writeFields  | Write weights as VTK fields        | bool |  yes  | -
     \endtable
 
-    Output data is written to the file \<timeDir\>/AMIWeights.dat
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func AMIWeights
+    \endverbatim
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::AMIWeights
 
 SourceFiles
     AMIWeights.C
@@ -89,7 +116,7 @@ class AMIWeights
 {
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Flag to write AMI fields (as VTK files)
         bool writeFields_;
@@ -106,6 +133,7 @@ protected:
         //- Helper function to report patch information
         virtual void reportPatch(const cyclicAMIPolyPatch& pp);
 
+        //- Write weight field
         void writeWeightField
         (
             const cyclicAMIPolyPatch& cpp,
@@ -113,14 +141,9 @@ protected:
             const word& side
         ) const;
 
+        //- Write weight fields if writeFields=true
         void writeWeightFields(const cyclicAMIPolyPatch& cpp) const;
 
-        //- No copy construct
-        AMIWeights(const AMIWeights&) = delete;
-
-        //- No copy assignment
-        void operator=(const AMIWeights&) = delete;
-
 
 public:
 
@@ -138,6 +161,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        AMIWeights(const AMIWeights&) = delete;
+
+        //- No copy assignment
+        void operator=(const AMIWeights&) = delete;
+
 
     //- Destructor
     virtual ~AMIWeights() = default;
diff --git a/src/functionObjects/field/CourantNo/CourantNo.C b/src/functionObjects/field/CourantNo/CourantNo.C
index fcdd6d16f93..04da791febb 100644
--- a/src/functionObjects/field/CourantNo/CourantNo.C
+++ b/src/functionObjects/field/CourantNo/CourantNo.C
@@ -39,13 +39,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(CourantNo, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        CourantNo,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, CourantNo, dictionary);
 }
 }
 
@@ -137,12 +131,6 @@ Foam::functionObjects::CourantNo::CourantNo
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::CourantNo::~CourantNo()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::CourantNo::read(const dictionary& dict)
diff --git a/src/functionObjects/field/CourantNo/CourantNo.H b/src/functionObjects/field/CourantNo/CourantNo.H
index c7e644a3e9d..a06f27e57fb 100644
--- a/src/functionObjects/field/CourantNo/CourantNo.H
+++ b/src/functionObjects/field/CourantNo/CourantNo.H
@@ -31,34 +31,55 @@ Group
     grpFieldFunctionObjects
 
 Description
-    This function object calculates and outputs the Courant number as a
-    volScalarField.  The field is stored on the mesh database so that it can
-    be retrieved and used for other applications.
+    Computes the Courant number field for time-variant simulations.
+
+    Operands:
+    \table
+      Operand           | Type           | Location
+      input             | -              | -
+      output file       | -              | -
+      output field      | volScalarField | $FOAM_CASE/<time>/<outField>
+    \endtable
 
 Usage
-    Example of function object specification to calculate the Courant number:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     CourantNo1
     {
+        // Mandatory entries (unmodifiable)
         type        CourantNo;
         libs        (fieldFunctionObjects);
+
+        // Optional entries (runtime modifiable)
+        rho         rho;
+
+        // Optional (inherited) entries
         ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | Type name: CourantNo    | yes         |
-        rho          | Name of density field   | no          | rho
-        field        | Name of flux field      | no          | phi
-        result       | Name of Courant number field | no     | \<function name\>
-        log          | Log to standard output  | no          | yes
+      Property   | Description                        | Type | Req'd | Dflt
+      type       | Type name: CourantNo               | word |  yes  | -
+      libs       | Library name: fieldFunctionObjects | word |  yes  | -
+      rho        | Name of density field              | word |  no   | rho
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func CourantNo
+    \endverbatim
+
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fieldExpression
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::CourantNo
 
 SourceFiles
     CourantNo.C
@@ -86,9 +107,9 @@ class CourantNo
 :
     public fieldExpression
 {
-    // Private data
+    // Private Data
 
-        //- Name of density field (optional)
+        //- Name of density field
         word rhoName_;
 
 
@@ -120,9 +141,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        CourantNo(const CourantNo&) = delete;
+
+        //- No copy assignment
+        void operator=(const CourantNo&) = delete;
+
 
     //- Destructor
-    virtual ~CourantNo();
+    virtual ~CourantNo() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/Curle/Curle.C b/src/functionObjects/field/Curle/Curle.C
index bec580e6082..d3a16edbb5e 100644
--- a/src/functionObjects/field/Curle/Curle.C
+++ b/src/functionObjects/field/Curle/Curle.C
@@ -39,13 +39,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(Curle, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        Curle,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, Curle, dictionary);
 }
 }
 
@@ -146,6 +140,13 @@ bool Foam::functionObjects::Curle::read(const dictionary& dict)
         // Read the reference speed of sound
         dict.readEntry("c0", c0_);
 
+        if (c0_.value() < VSMALL)
+        {
+            FatalErrorInFunction
+                << "Reference speed of sound = " << c0_
+                << " cannot be negative or zero."
+                << abort(FatalError);
+        }
 
         // Set the location of the effective point source to the area-average
         // of the patch face centres
diff --git a/src/functionObjects/field/Curle/Curle.H b/src/functionObjects/field/Curle/Curle.H
index ba58799a723..92b2451ae08 100644
--- a/src/functionObjects/field/Curle/Curle.H
+++ b/src/functionObjects/field/Curle/Curle.H
@@ -30,54 +30,71 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the acoustic pressure based on Curle's analogy.
+    Computes the acoustic pressure based on Curle's analogy.
 
     Curle's analogy is implemented as:
 
     \f[
-        p' = \frac{1}{4 \pi c_0}\frac{\vec d}{|\vec d|^2}\frac{d(F)}{d(t)}
+        p' = \frac{1}{4 \pi c_0}\frac{\vec d}{|\vec d|^2}\cdot\frac{d\vec F}{dt}
     \f]
 
-
     where
     \vartable
-        p'          | Curle's acoustic pressure [Pa] or [Pa (m3/rho)]
-        c_0         | Reference speed of sound [m/s]
-        \vec d      | Distance vector to observer locations [m]
-        F           | Force [N] or [N (m3/rho)]
+      p'        | Curle's acoustic pressure     [Pa] or [Pa \f$(m^3/\rho)\f$]
+      c_0       | Reference speed of sound              [m/s]
+      \vec d    | Distance vector to observer locations [m]
+      \vec F    | Force                         [N] or [N (\f$m^3/\rho\f$)]
     \endvartable
 
-Note
-    Only the normal-pressure force is included in the force calculation
+    Operands:
+    \table
+      Operand           | Type           | Location
+      input             | volScalarField | $FOAM_CASE/\<time\>/\<inpField\>
+      output file       | -              | -
+      output field      | volScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
+Note
+    Only the normal-pressure force is included in the force calculation.
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     Curle1
     {
-        type        Curle;
-        libs        (fieldFunctionObjects);
+        // Mandatory entries (unmodifiable)
+        type            Curle;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        patches         (<patch1> <patch2> ... <patchN>)
+        c0              343;
+
+        // Optional (inherited) entries
         ...
-        patches     (surface1 surface2);
-        c0          330;
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description                  | Required | Default value
-        type         | Type name: Curle             | yes      |
-        field        | Pressure field name          | no       | p
-        result       | Acoustic pressure field name | no       | Curle
-        patches      | Sound generation patch names | yes      |
-        c0           | Reference speed of sound     | yes      |
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: Curle                   | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      patches      | Names of the operand patches       | wordList | yes | -
+      c0           | Reference speed of sound [m/s]     | scalar | yes | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 See also
-  - Foam::functionObjects::fieldExpression
-  - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::Curle
 
 SourceFiles
     Curle.C
@@ -122,6 +139,7 @@ class Curle
 
 protected:
 
+<<<<<<< HEAD
     // Protected Member Functions
 
         //- Calculate acoustic pressure field and return true if successful
@@ -133,6 +151,11 @@ protected:
         //- No copy assignment
         void operator=(const Curle&) = delete;
 
+=======
+        //- Calculate the acoustic pressure field and return true if successful
+        virtual bool calc();
+
+>>>>>>> DOC: elaborate the usage of function objects
 
 public:
 
@@ -150,6 +173,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        Curle(const Curle&) = delete;
+
+        //- No copy assignment
+        void operator=(const Curle&) = delete;
+
 
     //- Destructor
     virtual ~Curle() = default;
diff --git a/src/functionObjects/field/DESModelRegions/DESModelRegions.C b/src/functionObjects/field/DESModelRegions/DESModelRegions.C
index 4612dea4616..965bc86970a 100644
--- a/src/functionObjects/field/DESModelRegions/DESModelRegions.C
+++ b/src/functionObjects/field/DESModelRegions/DESModelRegions.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2013-2015 OpenFOAM Foundation
-    Copyright (C) 2015-2016 OpenCFD Ltd.
+    Copyright (C) 2015-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -39,13 +39,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(DESModelRegions, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        DESModelRegions,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, DESModelRegions, dictionary);
 }
 }
 
@@ -59,7 +53,7 @@ void Foam::functionObjects::DESModelRegions::writeFileHeader(Ostream& os) const
     writeCommented(os, "Time");
     writeTabbed(os, "LES");
     writeTabbed(os, "RAS");
-    os << endl;
+    os  << endl;
 }
 
 
@@ -98,12 +92,6 @@ Foam::functionObjects::DESModelRegions::DESModelRegions
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::DESModelRegions::~DESModelRegions()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::DESModelRegions::read(const dictionary& dict)
@@ -135,7 +123,7 @@ bool Foam::functionObjects::DESModelRegions::execute()
 
         DESModelRegions == model.LESRegion();
 
-        scalar prc =
+        const scalar prc =
             gSum(DESModelRegions.primitiveField()*mesh_.V())
            /gSum(mesh_.V())*100.0;
 
diff --git a/src/functionObjects/field/DESModelRegions/DESModelRegions.H b/src/functionObjects/field/DESModelRegions/DESModelRegions.H
index e2e09a112a5..992939db47e 100644
--- a/src/functionObjects/field/DESModelRegions/DESModelRegions.H
+++ b/src/functionObjects/field/DESModelRegions/DESModelRegions.H
@@ -31,33 +31,62 @@ Group
     grpFieldFunctionObjects
 
 Description
-    This function object writes out an indicator field for DES turbulence
-    calculations, that is:
-    - 0 for RAS regions
-    - 1 for LES regions
+    Computes an indicator field for detached eddy simulation (DES) turbulence
+    calculations, where the values of the indicator mean:
 
-    The field is stored on the mesh database so that it can be retrieved and
-    used for other applications.
+    \verbatim
+      0 = Reynolds-averaged Navier-Stokes (RAS) regions
+      1 = Large eddy simulation (LES) regions
+    \endverbatim
+
+    Operands:
+    \table
+      Operand         | Type              | Location
+      input           | -                 | -
+      output file     | dat | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field    | volScalarField    | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
 Usage
-    Example of function object specification to generate DES indicator field:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     DESModelRegions1
     {
+        // Mandatory entries (unmodifiable)
         type        DESModelRegions;
         libs        (fieldFunctionObjects);
+
+        // Optional entries (runtime modifiable)
+        result      DESField;
+
+        // Optional (inherited) entries
         ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | type name: DESModelRegions| yes       |
-        resultName   | Name of DES indicator field | no      | \<function name\>
-        log          | log to standard output  | no          | yes
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: DESModelRegions         | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      result       | Name of DES indicator field        | word |  no   | <FO>
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
+Note
+    \c DESModelRegions function object can only be executed for DES simulations.
+
+See also
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::DESModelRegions
+
 SourceFiles
     DESModelRegions.C
 
@@ -89,9 +118,9 @@ class DESModelRegions
 {
 protected:
 
-    // Protected data
+    // Protected Data
 
-        //- Result name
+        //- Name of DES indicator field
         word resultName_;
 
 
@@ -100,12 +129,6 @@ protected:
         //- File header information
         virtual void writeFileHeader(Ostream& os) const;
 
-        //- No copy construct
-        DESModelRegions(const DESModelRegions&) = delete;
-
-        //- No copy assignment
-        void operator=(const DESModelRegions&) = delete;
-
 
 public:
 
@@ -114,6 +137,7 @@ public:
 
 
     // Constructors
+
         //- Construct from Time and dictionary
         DESModelRegions
         (
@@ -122,9 +146,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        DESModelRegions(const DESModelRegions&) = delete;
+
+        //- No copy assignment
+        void operator=(const DESModelRegions&) = delete;
+
 
     //- Destructor
-    virtual ~DESModelRegions();
+    virtual ~DESModelRegions() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/lambVector/lambVector.C b/src/functionObjects/field/LambVector/LambVector.C
similarity index 87%
rename from src/functionObjects/field/lambVector/lambVector.C
rename to src/functionObjects/field/LambVector/LambVector.C
index 27fe937df43..d847ae1511d 100644
--- a/src/functionObjects/field/lambVector/lambVector.C
+++ b/src/functionObjects/field/LambVector/LambVector.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -25,7 +25,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "lambVector.H"
+#include "LambVector.H"
 #include "fvcCurl.H"
 #include "fvcDiv.H"
 #include "addToRunTimeSelectionTable.H"
@@ -36,14 +36,14 @@ namespace Foam
 {
 namespace functionObjects
 {
-    defineTypeNameAndDebug(lambVector, 0);
-    addToRunTimeSelectionTable(functionObject, lambVector, dictionary);
+    defineTypeNameAndDebug(LambVector, 0);
+    addToRunTimeSelectionTable(functionObject, LambVector, dictionary);
 }
 }
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-bool Foam::functionObjects::lambVector::calc()
+bool Foam::functionObjects::LambVector::calc()
 {
     if (foundObject<volVectorField>(fieldName_))
     {
@@ -57,7 +57,7 @@ bool Foam::functionObjects::lambVector::calc()
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::functionObjects::lambVector::lambVector
+Foam::functionObjects::LambVector::LambVector
 (
     const word& name,
     const Time& runTime,
@@ -66,7 +66,8 @@ Foam::functionObjects::lambVector::lambVector
 :
     fieldExpression(name, runTime, dict, "U")
 {
-    setResultName(typeName, fieldName_);
+    setResultName(typeName, "U");
 }
 
+
 // ************************************************************************* //
diff --git a/src/functionObjects/field/lambVector/lambVector.H b/src/functionObjects/field/LambVector/LambVector.H
similarity index 50%
rename from src/functionObjects/field/lambVector/lambVector.H
rename to src/functionObjects/field/LambVector/LambVector.H
index bf8e2622351..f0ff8ad93bc 100644
--- a/src/functionObjects/field/lambVector/lambVector.H
+++ b/src/functionObjects/field/LambVector/LambVector.H
@@ -24,47 +24,79 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::functionObjects::lambVector
+    Foam::functionObjects::LambVector
 
 Group
     grpFieldFunctionObjects
 
 Description
-    Calculates Lamb vector, i.e. the cross product of vorticity and velocity.
+    Computes Lamb vector, i.e. the cross product of vorticity and velocity.
     Calculation of the divergence of the Lamb vector can be performed by using
-    'div' functionObject on this 'lambVector' functionObject.
+    \c div function object on this \c LambVector function object.
 
-    The field is stored on the mesh database so that it can be retrieved
-    and used for other applications.
+    The motivation of the function object is the literature-reported
+    quantitative connection between the Lamb vector (divergence) and
+    the spatially localised instantaneous fluid motions, e.g. high- and
+    low-momentum fluid parcels, which possess considerable level of capacity
+    to affect the rate of change of momentum, and to generate forces such as
+    drag.
+
+    Operands:
+    \table
+      Operand          | Type           | Location
+      input            | volVectorField | $FOAM_CASE/\<time\>/\<inpField\>
+      output file      | -              | -
+      output field     | volVectorField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
 Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    lambVector1
+    LambVector1
     {
-        type        lambVector;
-        libs        (fieldFunctionObjects);
-        field       UMean;
-        ... Base options of fieldExpression ...
+        // Mandatory entries (unmodifiable)
+        type            LambVector;
+        libs            (fieldFunctionObjects);
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | Type name: lambVector   | yes         |
-        field        | Name of volVectorField  | no          | U
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: LambVector              | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func LambVector
+    \endverbatim
+
+Note
+    To execute \c LambVector function object on an input <field>, a numerical
+    scheme should be defined for \c div(LambVector) in
+    \c system/fvSchemes.divSchemes.
+
 See also
-    Foam::functionObjects::fieldExpression
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::LambVector
 
 SourceFiles
-    lambVector.C
+    LambVector.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef functionObjects_lambVector_H
-#define functionObjects_lambVector_H
+#ifndef functionObjects_LambVector_H
+#define functionObjects_LambVector_H
 
 #include "fieldExpression.H"
 
@@ -76,38 +108,44 @@ namespace functionObjects
 {
 
 /*---------------------------------------------------------------------------*\
-                          Class lambVector Declaration
+                          Class LambVector Declaration
 \*---------------------------------------------------------------------------*/
 
-class lambVector
+class LambVector
 :
     public fieldExpression
 {
     // Private Member Functions
 
-        //- Calculate the lambVector field and return true if successful
+        //- Calculate the LambVector field and return true if successful
         virtual bool calc();
 
 
 public:
 
     //- Runtime type information
-    TypeName("lambVector");
+    TypeName("LambVector");
 
 
     // Constructors
 
         //- Construct from Time and dictionary
-        lambVector
+        LambVector
         (
             const word& name,
             const Time& runTime,
             const dictionary& dict
         );
 
+        //- No copy construct
+        LambVector(const LambVector&) = delete;
+
+        //- No copy assignment
+        void operator=(const LambVector&) = delete;
+
 
     //- Destructor
-    virtual ~lambVector() = default;
+    virtual ~LambVector() = default;
 };
 
 
diff --git a/src/functionObjects/field/Lambda2/Lambda2.C b/src/functionObjects/field/Lambda2/Lambda2.C
index c1aa6ec28fc..f527212162f 100644
--- a/src/functionObjects/field/Lambda2/Lambda2.C
+++ b/src/functionObjects/field/Lambda2/Lambda2.C
@@ -37,13 +37,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(Lambda2, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        Lambda2,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, Lambda2, dictionary);
 }
 }
 
@@ -93,10 +87,4 @@ Foam::functionObjects::Lambda2::Lambda2
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::Lambda2::~Lambda2()
-{}
-
-
 // ************************************************************************* //
diff --git a/src/functionObjects/field/Lambda2/Lambda2.H b/src/functionObjects/field/Lambda2/Lambda2.H
index 437fb633f8b..65ee40d9f1b 100644
--- a/src/functionObjects/field/Lambda2/Lambda2.H
+++ b/src/functionObjects/field/Lambda2/Lambda2.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2013-2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -30,13 +31,52 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates and outputs the second largest eigenvalue of the sum of the
-    square of the symmetrical and anti-symmetrical parts of the velocity
-    gradient tensor.
+    Computes the second largest eigenvalue of the sum of the square of
+    the symmetrical and anti-symmetrical parts of the velocity gradient tensor.
+
+    Operands:
+    \table
+      Operand          | Type           | Location
+      input            | volVectorField | $FOAM_CASE/\<time\>/\<inpField\>
+      output file      | -              | -
+      output field     | volScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    Lambda21
+    {
+        // Mandatory entries (unmodifiable)
+        type            Lambda2;
+        libs            (fieldFunctionObjects);
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: Lambda2                 | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func Lambda2
+    \endverbatim
 
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::Lambda2
 
 SourceFiles
     Lambda2.C
@@ -85,9 +125,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        Lambda2(const Lambda2&) = delete;
+
+        //- No copy assignment
+        void operator=(const Lambda2&) = delete;
+
 
     //- Destructor
-    virtual ~Lambda2();
+    virtual ~Lambda2() = default;
 };
 
 
diff --git a/src/functionObjects/field/MachNo/MachNo.C b/src/functionObjects/field/MachNo/MachNo.C
index dae3d17be15..c9f891a892f 100644
--- a/src/functionObjects/field/MachNo/MachNo.C
+++ b/src/functionObjects/field/MachNo/MachNo.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -37,13 +37,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(MachNo, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        MachNo,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, MachNo, dictionary);
 }
 }
 
@@ -89,10 +83,4 @@ Foam::functionObjects::MachNo::MachNo
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::MachNo::~MachNo()
-{}
-
-
 // ************************************************************************* //
diff --git a/src/functionObjects/field/MachNo/MachNo.H b/src/functionObjects/field/MachNo/MachNo.H
index b57b0b6fb31..e28a0486bc6 100644
--- a/src/functionObjects/field/MachNo/MachNo.H
+++ b/src/functionObjects/field/MachNo/MachNo.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -30,11 +31,51 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates and writes the Mach number as a volScalarField.
+    Computes the Mach number as a \c volScalarField.
+
+    Operands:
+    \table
+      Operand          | Type           | Location
+      input            | volVectorField | $FOAM_CASE/<time>/<inpField>
+      output file      | -              | -
+      output field     | volScalarField | $FOAM_CASE/<time>/<outField>
+    \endtable
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    MachNo1
+    {
+        // Mandatory entries (unmodifiable)
+        type            MachNo;
+        libs            (fieldFunctionObjects);
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: MachNo                  | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func MachNo
+    \endverbatim
 
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::MachNo
 
 SourceFiles
     MachNo.C
@@ -84,9 +125,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        MachNo(const MachNo&) = delete;
+
+        //- No copy assignment
+        void operator=(const MachNo&) = delete;
+
 
     //- Destructor
-    virtual ~MachNo();
+    virtual ~MachNo() = default;
 };
 
 
diff --git a/src/functionObjects/field/Make/files b/src/functionObjects/field/Make/files
index 580d9a33406..acf12cb0a4b 100644
--- a/src/functionObjects/field/Make/files
+++ b/src/functionObjects/field/Make/files
@@ -65,7 +65,7 @@ ddt/ddt.C
 mag/mag.C
 magSqr/magSqr.C
 vorticity/vorticity.C
-lambVector/lambVector.C
+LambVector/LambVector.C
 enstrophy/enstrophy.C
 Q/Q.C
 Lambda2/Lambda2.C
diff --git a/src/functionObjects/field/PecletNo/PecletNo.C b/src/functionObjects/field/PecletNo/PecletNo.C
index 6ce51e4be86..45509542075 100644
--- a/src/functionObjects/field/PecletNo/PecletNo.C
+++ b/src/functionObjects/field/PecletNo/PecletNo.C
@@ -38,13 +38,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(PecletNo, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        PecletNo,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, PecletNo, dictionary);
 }
 }
 
@@ -143,11 +137,6 @@ Foam::functionObjects::PecletNo::PecletNo
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::PecletNo::~PecletNo()
-{}
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::PecletNo::read(const dictionary& dict)
diff --git a/src/functionObjects/field/PecletNo/PecletNo.H b/src/functionObjects/field/PecletNo/PecletNo.H
index 30259f32c2e..83ddaa76fcb 100644
--- a/src/functionObjects/field/PecletNo/PecletNo.H
+++ b/src/functionObjects/field/PecletNo/PecletNo.H
@@ -31,29 +31,56 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates and outputs the Peclet number as a surfaceScalarField.
+    Computes the Peclet number as a \c surfaceScalarField.
+
+    Operands:
+    \table
+      Operand        | Type               | Location
+      input          | surfaceScalarField | $FOAM_CASE/\<time\>/\<inpField\>
+      output file    | -                  | -
+      output field   | surfaceScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
 Usage
-    Example of function object specification to calculate the Peclet number:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     PecletNo1
     {
-        type        PecletNo;
-        libs        (fieldFunctionObjects);
+        // Mandatory entries (unmodifiable)
+        type            PecletNo;
+        libs            (fieldFunctionObjects);
+
+        // Optional entries (runtime modifiable)
+        rho             rho;
+
+        // Optional (inherited) entries
         ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | type name: Peclet       | yes         |
-        phi          | Name of flux field      | no          | phi
-        rho          | Name of density field   | no          | rho
-        result       | Name of Peclet field    | no          | \<function name\>
-        log          | Log to standard output  | no          | yes
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: PecletNo                | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      rho          | Name of density field              | word |  no   | rho
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func PecletNo
+    \endverbatim
+
+See also
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::PecletNo
+
 SourceFiles
     PecletNo.C
 
@@ -80,9 +107,9 @@ class PecletNo
 :
     public fieldExpression
 {
-    // Private data
+    // Private Data
 
-        //- Name of density field, default is "rho"
+        //- Name of density field
         word rhoName_;
 
 
@@ -111,9 +138,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        PecletNo(const PecletNo&) = delete;
+
+        //- No copy assignment
+        void operator=(const PecletNo&) = delete;
+
 
     //- Destructor
-    virtual ~PecletNo();
+    virtual ~PecletNo() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/Q/Q.C b/src/functionObjects/field/Q/Q.C
index d5ee4a9dbaa..c43c0ce6a42 100644
--- a/src/functionObjects/field/Q/Q.C
+++ b/src/functionObjects/field/Q/Q.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2013-2016 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -37,13 +37,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(Q, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        Q,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, Q, dictionary);
 }
 }
 
@@ -84,10 +78,4 @@ Foam::functionObjects::Q::Q
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::Q::~Q()
-{}
-
-
 // ************************************************************************* //
diff --git a/src/functionObjects/field/Q/Q.H b/src/functionObjects/field/Q/Q.H
index 57393012c58..379c8e8dad5 100644
--- a/src/functionObjects/field/Q/Q.H
+++ b/src/functionObjects/field/Q/Q.H
@@ -31,41 +31,63 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates and outputs the second invariant of the velocity gradient tensor
-    [1/s^2].
+    Computes the second invariant of
+    the velocity gradient tensor \f$[s^{-2}]\f$.
 
     \f[
-        Q = 0.5(sqr(tr(\nabla U)) - tr(((\nabla U) \cdot (\nabla U))))
+        \vec Q = \frac{1}{2}
+        [ (tr (\nabla \vec U) )^2
+        - tr (\nabla \vec U \cdot \nabla \vec U) ]
     \f]
 
     where
     \vartable
-        U           | velocity [m/s]
+        \vec U       | velocity [m/s]
     \endvartable
 
+    Operands:
+    \table
+      Operand        | Type           | Location
+      input          | volVectorField | $FOAM_CASE/<time>/<inpField>
+      output file    | -              | -
+      output field   | volScalarField | $FOAM_CASE/<time>/<outField>
+    \endtable
+
 Usage
-    Example of function object specification to calculate Q:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     Q1
     {
+        // Mandatory entries (unmodifiable)
         type        Q;
         libs        (fieldFunctionObjects);
+
+        // Optional (inherited) entries
         ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | type name: Q            | yes         |
-        U            | Name of velocity field  | no          | U
-        result       | Name of Q field         | no          | \<function name\>
-        log          | Log to standard output  | no          | yes
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: Q                       | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func Q
+    \endverbatim
+
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fieldExpression
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::Q
 
 SourceFiles
     Q.C
@@ -114,9 +136,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        Q(const Q&) = delete;
+
+        //- No copy assignment
+        void operator=(const Q&) = delete;
+
 
     //- Destructor
-    virtual ~Q();
+    virtual ~Q() = default;
 };
 
 
diff --git a/src/functionObjects/field/STDMD/STDMD.H b/src/functionObjects/field/STDMD/STDMD.H
index 8133004bafd..42d137b9706 100644
--- a/src/functionObjects/field/STDMD/STDMD.H
+++ b/src/functionObjects/field/STDMD/STDMD.H
@@ -46,57 +46,58 @@ Description
 
     References:
     \verbatim
-    STDMD and mode-sorting algorithms (tags:K, HRDC, KZ, HWR):
-        Kiewat, M. (2019).
-        Streaming modal decomposition approaches for vehicle aerodynamics.
-        PhD thesis. Munich: Technical University of Munich.
-        URL:mediatum.ub.tum.de/doc/1482652/1482652.pdf
-
-        Hemati, M. S., Rowley, C. W., Deem, E. A., & Cattafesta, L. N. (2017).
-        De-biasing the dynamic mode decomposition for applied Koopman
-        spectral analysis of noisy datasets.
-        Theoretical and Computational Fluid Dynamics, 31(4), 349-368.
-        DOI:10.1007/s00162-017-0432-2
-
-        Kou, J., & Zhang, W. (2017).
-        An improved criterion to select dominant modes from dynamic mode
-        decomposition.
-        European Journal of Mechanics-B/Fluids, 62, 109-129.
-        DOI:10.1016/j.euromechflu.2016.11.015
-
-        Hemati, M. S., Williams, M. O., & Rowley, C. W. (2014).
-        Dynamic mode decomposition for large and streaming datasets.
-        Physics of Fluids, 26(11), 111701.
-        DOI:10.1063/1.4901016
-
-    Parallel classical Gram-Schmidt process (tag:Ka):
-        Katagiri, T. (2003).
-        Performance evaluation of parallel Gram-Schmidt re-orthogonalization
-        methods.
-        In: Palma J. M. L. M., Sousa A. A., Dongarra J., Hernández V. (eds)
-        High Performance Computing for Computational Science — VECPAR 2002.
-        Lecture Notes in Computer Science, vol 2565, p. 302-314.
-        Berlin, Heidelberg: Springer.
-        DOI:10.1007/3-540-36569-9_19
-
-    Parallel direct tall-skinny QR decomposition (tags:BGD, DGHL):
-        Benson, A. R., Gleich, D. F., & Demmel, J. (2013).
-        Direct QR factorizations for tall-and-skinny matrices in MapReduce
-        architectures.
-        2013 IEEE International Conference on Big Data.
-        DOI:10.1109/bigdata.2013.6691583
-
-        Demmel, J., Grigori, L., Hoemmen, M., & Langou, J. (2012).
-        Communication-optimal parallel and sequential QR and LU
-        factorizations.
-        SIAM Journal on Scientific Computing, 34(1), A206-A239.
-        DOI:10.1137/080731992
-
-    DMD properties:
-        Brunton S. L. (2018).
-        Dynamic mode decomposition overview.
-        Seattle, Washington: University of Washington.
-        youtu.be/sQvrK8AGCAo (Retrieved:24-04-20)
+        STDMD and mode-sorting algorithms (tags:K, HRDC, KZ, HWR):
+            Kiewat, M. (2019).
+            Streaming modal decomposition approaches for vehicle aerodynamics.
+            PhD thesis. Munich: Technical University of Munich.
+            URL:mediatum.ub.tum.de/doc/1482652/1482652.pdf
+
+            Hemati, M. S., Rowley, C. W.,
+            Deem, E. A., & Cattafesta, L. N. (2017).
+            De-biasing the dynamic mode decomposition
+            for applied Koopman spectral analysis of noisy datasets.
+            Theoretical and Computational Fluid Dynamics, 31(4), 349-368.
+            DOI:10.1007/s00162-017-0432-2
+
+            Kou, J., & Zhang, W. (2017).
+            An improved criterion to select
+            dominant modes from dynamic mode decomposition.
+            European Journal of Mechanics-B/Fluids, 62, 109-129.
+            DOI:10.1016/j.euromechflu.2016.11.015
+
+            Hemati, M. S., Williams, M. O., & Rowley, C. W. (2014).
+            Dynamic mode decomposition for large and streaming datasets.
+            Physics of Fluids, 26(11), 111701.
+            DOI:10.1063/1.4901016
+
+        Parallel classical Gram-Schmidt process (tag:Ka):
+            Katagiri, T. (2003).
+            Performance evaluation of parallel
+            Gram-Schmidt re-orthogonalization methods.
+            In: Palma J. M. L. M., Sousa A. A., Dongarra J., Hernández V. (eds)
+            High Performance Computing for Computational Science — VECPAR 2002.
+            Lecture Notes in Computer Science, vol 2565, p. 302-314.
+            Berlin, Heidelberg: Springer.
+            DOI:10.1007/3-540-36569-9_19
+
+        Parallel direct tall-skinny QR decomposition (tags:BGD, DGHL):
+            Benson, A. R., Gleich, D. F., & Demmel, J. (2013).
+            Direct QR factorizations for
+            tall-and-skinny matrices in MapReduce architectures.
+            2013 IEEE International Conference on Big Data.
+            DOI:10.1109/bigdata.2013.6691583
+
+            Demmel, J., Grigori, L., Hoemmen, M., & Langou, J. (2012).
+            Communication-optimal parallel
+            and sequential QR and LU factorizations.
+            SIAM Journal on Scientific Computing, 34(1), A206-A239.
+            DOI:10.1137/080731992
+
+        DMD properties:
+            Brunton S. L. (2018).
+            Dynamic mode decomposition overview.
+            Seattle, Washington: University of Washington.
+            youtu.be/sQvrK8AGCAo (Retrieved:24-04-20)
     \endverbatim
 
     Operands:
@@ -109,7 +110,7 @@ Description
       output field | volScalarField(s) | $FOAM_CASE/\<time\>/\<outField\>(s)
     \endtable
 
-    where Type={Scalar,SphericalTensor,SymmTensor,Tensor}.
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
 
     Output fields:
     \verbatim
diff --git a/src/functionObjects/field/XiReactionRate/XiReactionRate.C b/src/functionObjects/field/XiReactionRate/XiReactionRate.C
index c9ee4a18e65..6ec82a9dc78 100644
--- a/src/functionObjects/field/XiReactionRate/XiReactionRate.C
+++ b/src/functionObjects/field/XiReactionRate/XiReactionRate.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -58,12 +58,6 @@ Foam::functionObjects::XiReactionRate::XiReactionRate
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::XiReactionRate::~XiReactionRate()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::XiReactionRate::read(const dictionary& dict)
@@ -89,7 +83,7 @@ bool Foam::functionObjects::XiReactionRate::write()
     const volScalarField& Xi =
         mesh_.lookupObject<volScalarField>("Xi");
 
-    volScalarField St
+    const volScalarField St
     (
         IOobject
         (
@@ -105,7 +99,7 @@ bool Foam::functionObjects::XiReactionRate::write()
 
     St.write();
 
-    volScalarField wdot
+    const volScalarField wdot
     (
         IOobject
         (
diff --git a/src/functionObjects/field/XiReactionRate/XiReactionRate.H b/src/functionObjects/field/XiReactionRate/XiReactionRate.H
index 5a5263cdea7..9c4571181f5 100644
--- a/src/functionObjects/field/XiReactionRate/XiReactionRate.H
+++ b/src/functionObjects/field/XiReactionRate/XiReactionRate.H
@@ -34,25 +34,44 @@ Description
     Writes the turbulent flame-speed and reaction-rate volScalarFields for the
     Xi-based combustion models.
 
+    Operands:
+    \table
+      Operand        | Type           | Location
+      input          | -              | -
+      output file    | -              | -
+      output field   | volScalarField | $FOAM_CASE/\<time\>/{St,wdot}
+    \endtable
+
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    XiReactionRate
+    XiReactionRate1
     {
+        // Mandatory entries (unmodifiable)
         type        XiReactionRate;
         libs        (fieldFunctionObjects);
+
+        // Optional (inherited) entries
         ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property  | Description                 | Required  | Default value
-        type      | type name: XiReactionRate   | yes       |
+      Property   | Description                        | Type | Req'd | Dflt
+      type       | Type name: XiReactionRate          | word |  yes  | -
+      libs       | Library name: fieldFunctionObjects | word |  yes  | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::XiReactionRate
 
 SourceFiles
     XiReactionRate.C
@@ -79,15 +98,6 @@ class XiReactionRate
 :
     public fvMeshFunctionObject
 {
-    // Private member functions
-
-        //- No copy construct
-        XiReactionRate(const XiReactionRate&) = delete;
-
-        //- No copy assignment
-        void operator=(const XiReactionRate&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -104,9 +114,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        XiReactionRate(const XiReactionRate&) = delete;
+
+        //- No copy assignment
+        void operator=(const XiReactionRate&) = delete;
+
 
     //- Destructor
-    virtual ~XiReactionRate();
+    virtual ~XiReactionRate() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/add/add.C b/src/functionObjects/field/add/add.C
index 3a0cf1af49a..7bb9b92fba4 100644
--- a/src/functionObjects/field/add/add.C
+++ b/src/functionObjects/field/add/add.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -63,10 +64,4 @@ Foam::functionObjects::add::add
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::add::~add()
-{}
-
-
 // ************************************************************************* //
diff --git a/src/functionObjects/field/add/add.H b/src/functionObjects/field/add/add.H
index 4c23eeea227..399ac851266 100644
--- a/src/functionObjects/field/add/add.H
+++ b/src/functionObjects/field/add/add.H
@@ -31,30 +31,68 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Add a list of fields.
+    Sums a given list of (at least two or more) fields and outputs the result
+    into a new field, where the fields possess the same sizes and dimensions:
 
-    The operation can be applied to any volume or surface fields generating a
-    volume or surface scalar field.
+    \verbatim
+        fieldResult = field1 + field2 + ... + fieldN
+    \endverbatim
+
+    Operands:
+    \table
+      Operand      | Type                          | Location
+      input        | {vol,surface}\<Type\>Field(s) <!--
+               --> |$FOAM_CASE/\<time\>/\<inpField\>s
+      output file  | -                             |-
+      output field | {vol,surface}\<Type\>Field    <!--
+               --> | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
 
-    Example of function object specification:
+Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    Ttot
+    add1
     {
+        // Mandatory entries (unmodifiable)
         type            add;
         libs            (fieldFunctionObjects);
-        fields          (T Tdelta);
-        result          Ttot;
-        executeControl  writeTime;
-        writeControl    writeTime;
+
+        // Mandatory (inherited) entry (runtime modifiable)
+        fields          (<field1> <field2> ... <fieldN>);
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: add                     | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      fields       | Names of the operand fields        | wordList |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldsExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func "add(<field1>, <field2>, ..., <fieldN>)"
+    \endverbatim
+
 See also
-    Foam::functionObjects::fieldsExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fieldsExpression
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::add
 
 SourceFiles
     add.C
+    addTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -81,7 +119,7 @@ class add
     // Private Member Functions
 
         //- Add the list of fields of the specified type
-        //  and return the result
+        //- and return the result
         template<class GeoFieldType>
         tmp<GeoFieldType> calcFieldType() const;
 
@@ -108,9 +146,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        add(const add&) = delete;
+
+        //- No copy assignment
+        void operator=(const add&) = delete;
+
 
     //- Destructor
-    virtual ~add();
+    virtual ~add() = default;
 };
 
 
diff --git a/src/functionObjects/field/add/addTemplates.C b/src/functionObjects/field/add/addTemplates.C
index 79a00f7c9bf..95f205e66c9 100644
--- a/src/functionObjects/field/add/addTemplates.C
+++ b/src/functionObjects/field/add/addTemplates.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -37,7 +38,7 @@ Foam::functionObjects::add::calcFieldType() const
       + lookupObject<GeoFieldType>(fieldNames_[1])
     );
 
-    for (label i=2; i<fieldNames_.size(); i++)
+    for (label i = 2; i < fieldNames_.size(); ++i)
     {
         tresult.ref() += lookupObject<GeoFieldType>(fieldNames_[i]);
     }
diff --git a/src/functionObjects/field/blendingFactor/blendingFactor.C b/src/functionObjects/field/blendingFactor/blendingFactor.C
index c2b077746e3..e207f4cc10e 100644
--- a/src/functionObjects/field/blendingFactor/blendingFactor.C
+++ b/src/functionObjects/field/blendingFactor/blendingFactor.C
@@ -103,12 +103,6 @@ Foam::functionObjects::blendingFactor::blendingFactor
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::blendingFactor::~blendingFactor()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::blendingFactor::read(const dictionary& dict)
@@ -117,17 +111,13 @@ bool Foam::functionObjects::blendingFactor::read(const dictionary& dict)
     {
         phiName_ = dict.getOrDefault<word>("phi", "phi");
 
-        tolerance_ = 0.001;
-        if
-        (
-            dict.readIfPresent("tolerance", tolerance_)
-         && (tolerance_ < 0 || tolerance_ > 1)
-        )
-        {
-            FatalErrorInFunction
-                << "tolerance must be in the range 0 to 1.  Supplied value: "
-                << tolerance_ << exit(FatalError);
-        }
+        tolerance_ =
+            dict.getCheckOrDefault
+            (
+                "tolerance",
+                0.001,
+                [&](const scalar tol){ return (tol > 0) && (tol < 1); }
+            );
 
         return true;
     }
@@ -147,10 +137,8 @@ bool Foam::functionObjects::blendingFactor::write()
         label nCellsScheme1 = 0;
         label nCellsScheme2 = 0;
         label nCellsBlended = 0;
-        forAll(indicator, celli)
+        for (const auto i : indicator)
         {
-            scalar i = indicator[celli];
-
             if (i < tolerance_)
             {
                 nCellsScheme1++;
diff --git a/src/functionObjects/field/blendingFactor/blendingFactor.H b/src/functionObjects/field/blendingFactor/blendingFactor.H
index c9ef01cc3fa..ba5e09aa362 100644
--- a/src/functionObjects/field/blendingFactor/blendingFactor.H
+++ b/src/functionObjects/field/blendingFactor/blendingFactor.H
@@ -31,61 +31,85 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates and outputs the blendingFactor as used by the bended convection
-    schemes.  The output is a volume field (cells) whose value is calculated via
-    the maximum blending factor for any cell face.
+    Computes the blending coefficient employed by blended divergence schemes,
+    giving an indicator as to which of the schemes is active across the domain.
 
-    The weight of a blended scheme is given by a function of the blending
-    factor, f:
+    Blended schemes combine contributions from two schemes, i.e. \f$\phi_1\f$
+    and \f$\phi_2\f$, using a weight field, i.e. \f$w\f$, such that the
+    effective scheme value, i.e. \f$\phi_{eff}\f$, is computed as follows:
 
     \f[
-        weight = f scheme1 + (1 - f) scheme2
+        \phi_{eff} = w \phi_1 + (1 - w) \phi_2
     \f]
 
-    The factor is a face-based quantity, which is converted to a cell-based
-    quantity by assigning the minimum blending factor for any cell face.
+    The weight field, i.e. \f$w\f$, is surface field and converted to a volume
+    field for easier post-processing by setting the cell value to one minus
+    the minimum of the face values.
 
-    An indicator (volume) field, named \<functionObjectName\>:\<fieldName\>, is
-    generated that is set to (1 - f), i.e. values of:
-    - 0 represent scheme1 as active, and
-    - 1 represent scheme2 as active.
-    - intermediate values show the contribution to scheme2
+    This conversion leads to blending indicator field whose values mean:
+    \verbatim
+      0   =  scheme 0
+      1   =  scheme 1
+      0-1 =  a blend between scheme 0 and scheme 1
+    \endverbatim
 
-    Additional reporting is written to the standard output, providing
-    statistics as to the number of cells used by each scheme.
+    Operands:
+    \table
+      Operand       | Type           | Location
+      input         | -              | -
+      output file   | dat   | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field  | volScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
 Usage
-    Example of function object specification to calculate the blending factor:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     blendingFactor1
     {
-        type        blendingFactor;
-        libs        (fieldFunctionObjects);
+        // Mandatory entries (unmodifiable)
+        type            blendingFactor;
+        libs            (fieldFunctionObjects);
 
-        ...
+        // Mandatory (inherited) entry (runtime modifiable)
+        field           <field>;
+
+        // Optional entries (runtime modifiable)
+        phi             phi;
+        tolerance       0.001;
 
-        // Name of field
-        field       U;
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | Type name: blendingFactor | yes       |
-        phi          | Name of flux field      | no          | phi
-        field        | Name of field to evaluate | yes       |
-        tolerance    | Tolerance for number of blended cells | no | 0.001
-        log          | Log to standard output  | no          | yes
+      Property  | Description                           | Type   | Req'd | Deflt
+      type      | Type name: blendingFactor             | word   | yes   | -
+      libs      | Library name: fieldFunctionObjects    | word   | yes   | -
+      field     | Name of the operand field             | word   | yes   | -
+      phi       | Name of flux field                    | word   | no    | phi
+      tolerance | Tolerance for number of blended cells | scalar | no    | 0.001
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
+    - Foam::functionObject
+    - Foam::functionObjects::fieldExpression
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - Foam::CoBlended
+    - ExtendedCodeGuide::functionObjects::field::blendingFactor
 
 SourceFiles
     blendingFactor.C
+    blendingFactorTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -112,9 +136,9 @@ class blendingFactor
     public fieldExpression,
     public writeFile
 {
-    // Private member data
+    // Private Data
 
-        //- Name of flux field, default is "phi"
+        //- Name of flux field
         word phiName_;
 
         //- Tolerance used when calculating the number of blended cells
@@ -163,9 +187,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        blendingFactor(const blendingFactor&) = delete;
+
+        //- No copy assignment
+        void operator=(const blendingFactor&) = delete;
+
 
     //- Destructor
-    virtual ~blendingFactor();
+    virtual ~blendingFactor() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/columnAverage/columnAverage.H b/src/functionObjects/field/columnAverage/columnAverage.H
index 03289082c8c..0a5352954fe 100644
--- a/src/functionObjects/field/columnAverage/columnAverage.H
+++ b/src/functionObjects/field/columnAverage/columnAverage.H
@@ -30,41 +30,66 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Averages columns of cells for layered meshes.
+    Computes the arithmetic average of given quantities along columns of cells
+    in a given direction for structured-like layered meshes. It is, for example,
+    useful for channel-like cases where spanwise average of a field is desired.
+    However, the \c columnAverage function object does not operate on arbitrary
+    unstructured meshes.
 
     For each patch face, calculates the average value of all cells attached in
     the patch face normal direction, and then pushes the average value back
     to all cells in the column.
 
-    Useful for channel-like cases where we want to average fields in the
-    spanwise direction.
+    Operands:
+    \table
+      Operand           | Type               | Location
+      input             | vol\<Type\>Field   | $FOAM_CASE/\<time\>/\<inpField\>
+      output file       | -                  | -
+      output field      | vol\<Type\>Field   | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     columnAverage1
     {
-        type        columnAverage;
-        libs        (fieldFunctionObjects);
+        // Mandatory entries (unmodifiable)
+        type            columnAverage;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        patches         (<patch1> <patch2> ... <patchN>);
+        fields          (<field1> <field2> ... <fieldN>);
+
+        // Optional (inherited) entries
         ...
-        patches     (front side);
-        fields      (U p);
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description                          | Required | Default
-        type         | type name: columnAverage             | yes |
-        patches      | list of patches to collapse onto     | yes |
-        fields       | list of fields to process            | yes |
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: columnAverage           | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      patches      | Names of patches to collapse onto  | word |  yes  | -
+      fields       | Names of the operand fields        | word |  yes  | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::columnAverage
 
 SourceFiles
     columnAverage.C
+    columnAverageTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -137,6 +162,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        columnAverage(const columnAverage&) = delete;
+
+        //- No copy assignment
+        void operator=(const columnAverage&) = delete;
+
 
     //- Destructor
     virtual ~columnAverage() = default;
diff --git a/src/functionObjects/field/components/components.H b/src/functionObjects/field/components/components.H
index 4e4c3363eed..a594cdb99aa 100644
--- a/src/functionObjects/field/components/components.H
+++ b/src/functionObjects/field/components/components.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -31,16 +31,75 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the components of a field.
-
-    The operation can be applied to any volume or surface fields generating a
-    volume or surface scalar fields for each component.
+    Extracts the components of elements of a field and outputs the result
+    into new fields, where the fields possess the same sizes and dimensions.
+
+    Depending on the base type of the input field, the number of output fields
+    and output suffixes are as follows (the base type cannot be scalar since
+    scalars have no components):
+
+    \table
+      Base type         | Number of components | Suffixes
+      vector            | 3                    | (x y z)
+      sphericalTensor   | 3                    | (x y z)
+      symmTensor        | 6                    | (xx xy xz yy yz zz)
+      tensor            | 9                    | (xx xy xz yx yy yz zx zy zz)
+    \endtable
+
+    Operands:
+    \table
+      Operand           | Type                                        | Location
+      input             | {vol,surface}\<Type\>Field (Type != Scalar) <!--
+                    --> | $FOAM_CASE/\<time\>/\<inpField\>
+      output file       | -                                           | -
+      output field      | {vol,surface}ScalarField for each component <!--
+                    --> | $FOAM_CASE/\<time\>/\<outField\>\<suffix\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    components1
+    {
+        // Mandatory entries (unmodifiable)
+        type            components;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory (inherited) entry (runtime modifiable)
+        field           <field>;
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: components              | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      field        | Name of the operand field          | word |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func "components(<field>)"
+    \endverbatim
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::components
 
 SourceFiles
     components.C
+    componentsTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -64,7 +123,7 @@ class components
 :
     public fieldExpression
 {
-    // Private member data
+    // Private Member Data
 
         //- List of the component field names
         wordList resultNames_;
@@ -73,12 +132,12 @@ class components
     // Private Member Functions
 
         //- Calculate the components of the field with the specified type
-        //  and register the result
+        //- and register the result
         template<class GeoFieldType>
         bool calcFieldComponents();
 
         //- Calculate the components of the field with the specified
-        //  element type and register the result
+        //- element type and register the result
         template<class Type>
         bool calcComponents();
 
@@ -102,6 +161,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        components(const components&) = delete;
+
+        //- No copy assignment
+        void operator=(const components&) = delete;
+
 
     //- Destructor
     virtual ~components() = default;
diff --git a/src/functionObjects/field/components/componentsTemplates.C b/src/functionObjects/field/components/componentsTemplates.C
index 64c54cb015c..64f152e6f4a 100644
--- a/src/functionObjects/field/components/componentsTemplates.C
+++ b/src/functionObjects/field/components/componentsTemplates.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -36,13 +36,13 @@ bool Foam::functionObjects::components::calcFieldComponents()
 {
     typedef typename GeoFieldType::value_type Type;
 
-    const GeoFieldType& field(lookupObject<GeoFieldType>(fieldName_));
+    const GeoFieldType& field = lookupObject<GeoFieldType>(fieldName_);
 
     resultNames_.setSize(Type::nComponents);
 
     bool stored = true;
 
-    for (direction i=0; i<Type::nComponents; i++)
+    for (direction i = 0; i < Type::nComponents; ++i)
     {
         resultName_ = fieldName_ + word(Type::componentNames[i]);
         resultNames_[i] = resultName_;
diff --git a/src/functionObjects/field/continuityError/continuityError.C b/src/functionObjects/field/continuityError/continuityError.C
index c0364e98380..5036d164a5b 100644
--- a/src/functionObjects/field/continuityError/continuityError.C
+++ b/src/functionObjects/field/continuityError/continuityError.C
@@ -115,8 +115,8 @@ bool Foam::functionObjects::continuityError::write()
     const volScalarField error(fvc::div(*phiPtr));
     const scalar deltaT = mesh_.time().deltaTValue();
 
-    scalar local = deltaT*mag(error)().weightedAverage(mesh_.V()).value();
-    scalar global = deltaT*error.weightedAverage(mesh_.V()).value();
+    const scalar local = deltaT*mag(error)().weightedAverage(mesh_.V()).value();
+    const scalar global = deltaT*error.weightedAverage(mesh_.V()).value();
     cumulative_ += global;
 
     Ostream& os = file();
diff --git a/src/functionObjects/field/continuityError/continuityError.H b/src/functionObjects/field/continuityError/continuityError.H
index 3966a2ba9e9..5a9d64ce9a9 100644
--- a/src/functionObjects/field/continuityError/continuityError.H
+++ b/src/functionObjects/field/continuityError/continuityError.H
@@ -30,40 +30,78 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the continuity error for a flux field
+    Computes local, global and cumulative continuity errors for a flux field.
+
+    Local continuity error, \f$ \epsilon_{local} \f$:
+    \f[
+        \epsilon_{local} = \Delta_t \langle |x| \rangle
+    \f]
+
+    Global continuity error, \f$ \epsilon_{global} \f$:
+    \f[
+        \epsilon_{global} = \Delta_t \langle |x| \rangle
+    \f]
+
+    Cumulative continuity, \f$ \epsilon_{cum} \f$:
+    \f[
+        \epsilon_{cum} += \epsilon_{global}
+    \f]
+
+    where
+    \vartable
+      \Delta_t          | Time-step size
+      \langle . \rangle | Cell-volume weighted average operator
+      x                 | \f$ \div \phi \f$
+      phi               | Flux field
+    \endvartable
+
+    Operands:
+    \table
+      Operand        | Type | Location
+      input          | -    | -
+      output file    | dat  | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field   | -    | -
+    \endtable
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     continuityError1
     {
+        // Mandatory entries (unmodifiable)
         type        continuityError;
         libs        (fieldFunctionObjects);
-        ...
-        writeToFile yes;
-        log         yes;
+
+        // Optional entries (runtime modifiable)
         phi         phi;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | type name: continuityError  | yes         |
-        writeToFile  | write min/max data to file | no       | yes
-        log          | write min/max data to standard output | no | yes
-        phi          | name of flux field      | no | phi
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: continuityError         | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      phi          | Name of flux field                 | word |  no   | phi
     \endtable
 
-    Output data is written to the file \<timeDir\>/continuityError.dat
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::continuityError
 
 SourceFiles
     continuityError.C
-    continuityErrorTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -90,22 +128,11 @@ class continuityError
     public fvMeshFunctionObject,
     public writeFile
 {
-private:
-
-    // Private Member Functions
-
-        //- No copy construct
-        continuityError(const continuityError&) = delete;
-
-        //- No copy assignment
-        void operator=(const continuityError&) = delete;
-
-
 protected:
 
-    // Protected data
+    // Protected Data
 
-        //- Name of the flux field; default = "phi
+        //- Name of flux field
         word phiName_;
 
         //- Cumulative error
@@ -134,6 +161,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        continuityError(const continuityError&) = delete;
+
+        //- No copy assignment
+        void operator=(const continuityError&) = delete;
+
 
     //- Destructor
     virtual ~continuityError() = default;
diff --git a/src/functionObjects/field/ddt/ddt.H b/src/functionObjects/field/ddt/ddt.H
index 47ac9fb4587..4ccb25958f5 100644
--- a/src/functionObjects/field/ddt/ddt.H
+++ b/src/functionObjects/field/ddt/ddt.H
@@ -31,13 +31,58 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the Eulerian time derivative of a field.
-
-    The operation can be applied to any volume field generating a field of the
-    same type.
+    Computes the Eulerian time derivative of an input volume field for
+    time-variant simulations (not appropriate to steady-state simulations).
+
+    Operands:
+    \table
+      Operand           | Type             | Location
+      input             | vol\<Type\>Field | $FOAM_CASE/\<time\>/\<inpField\>
+      output file       | -                | -
+      output field      | vol\<Type\>Field | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    ddt1
+    {
+        // Mandatory entries (unmodifiable)
+        type            ddt;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory (inherited) entries (runtime modifiable)
+        field           <field>;
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: ddt                     | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      field        | Name of operand field              | word |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func "ddt(<field>)"
+    \endverbatim
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::ddt
 
 SourceFiles
     ddt.C
@@ -65,6 +110,7 @@ class ddt
 :
     public fieldExpression
 {
+
     // Private Member Functions
 
         //- Calculate and store the result
@@ -93,6 +139,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        ddt(const ddt&) = delete;
+
+        //- No copy assignment
+        void operator=(const ddt&) = delete;
+
 
     //- Destructor
     virtual ~ddt() = default;
diff --git a/src/functionObjects/field/ddt2/ddt2.C b/src/functionObjects/field/ddt2/ddt2.C
index f5965f6df35..f613f1197db 100644
--- a/src/functionObjects/field/ddt2/ddt2.C
+++ b/src/functionObjects/field/ddt2/ddt2.C
@@ -40,13 +40,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(ddt2, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        ddt2,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, ddt2, dictionary);
 }
 }
 
diff --git a/src/functionObjects/field/ddt2/ddt2.H b/src/functionObjects/field/ddt2/ddt2.H
index 59b3bc0741e..061f673222a 100644
--- a/src/functionObjects/field/ddt2/ddt2.H
+++ b/src/functionObjects/field/ddt2/ddt2.H
@@ -30,37 +30,57 @@ Group
     grpFieldFunctionObjects
 
 Description
-    This function object calculates the magnitude squared
-    of d(scalarField)/dt.
+    Computes the magnitude or magnitude squared of the Eulerian time derivative
+    of an input volume field for time-variant simulations
+    (not appropriate to steady-state simulations).
 
-    The result can be used further for determining variance or RMS values
-    (for example).
+    The result can be further used for determining e.g. variance or RMS values.
+
+    Operands:
+    \table
+      Operand           | Type           | Location
+      input             | vol\<Type\>Field | $FOAM_CASE/\<time\>/\<inpField\>
+      output file       | -              | -
+      output field      | vol\<Type\>Field | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    dpdt2
+    ddt21
     {
-        type        ddt2;
-        libs        (fieldFunctionObjects);
-        fields      (p);
-        result      d@@dt2;
+        // Mandatory entries (unmodifiable)
+        type            ddt2;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        fields          (<field1> <field2> ... <fieldN>);
+
+        // Optional entries (unmodifiable)
+        mag             false;
+
+        // Optional entries (runtime modifiable)
+        result          d@@dt2;
+
+        // Optional (inherited) entries
         ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property | Description                | Required  | Default value
-        type     | type name: ddt2            | yes       |
-        fields   | Name of fields to process  | yes       |
-        result   | Name of results            | no        | magSqr(ddt(@@))
-        log      | Log to standard output     | no        | yes
-        mag      | Use 'mag' instead of 'magSqr' | no     | false
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: ddt2                    | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      fields       | Names of the operand fields        | wordList | yes | -
+      mag          | Compute 'mag' instead of 'magSqr'  | bool |  no   | false
+      result       | Name of results     | word |  no   | magSqr(ddt2(@@))
     \endtable
 
-    Note that the optional 'mag' entry cannot be changed during the simulation
-    since it alters the dimensions of the output field.
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
 
     A list of fields can contain exact names or regular expressions.
     The token '\@\@' in the result name is replaced by the name of the source
@@ -70,6 +90,13 @@ Usage
     The function object will skip over fields that appear to have
     already been processed (ie, their names are similar to the output names).
 
+    Usage by the \c postProcess utility is not available.
+
+See also
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::ddt2
+
 SourceFiles
     ddt2.C
     ddt2Templates.C
@@ -101,29 +128,29 @@ class ddt2
 :
     public fvMeshFunctionObject
 {
-    // Private data
+    // Private Data
 
-        //- Name of fields to process.
+        //- Name of fields to process
         wordRes selectFields_;
 
-        //- Formatting for the result fields.
+        //- Formatting for the result fields
         word resultName_;
 
-        //- Avoid processing the same field twice.
+        //- Avoid processing the same field twice
         mutable regExp blacklist_;
 
-        //- Hashed names of result fields.
+        //- Hashed names of result fields
         wordHashSet results_;
 
-        //- Use 'mag' instead of 'magSqr'.
+        //- Flat to use 'mag' instead of 'magSqr'
         //  Cannot be adjusted during the simulation since it alters the
-        //  dimensions of the output field.
+        //  dimensions of the output field
         const bool mag_;
 
 
     // Private Member Functions
 
-        //- Check that string contains the appropriate substitution token(s).
+        //- Check that string contains the appropriate substitution token(s)
         static bool checkFormatName(const std::string& str);
 
 
@@ -134,17 +161,10 @@ class ddt2
         template<class FieldType>
         int apply(const word& inputName, int& state);
 
-        //- Process by trying to apply for various volume field types.
+        //- Process by trying to apply for various volume field types
         int process(const word& inputName);
 
 
-        //- No copy construct
-        ddt2(const ddt2&) = delete;
-
-        //- No copy assignment
-        void operator=(const ddt2&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -161,6 +181,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        ddt2(const ddt2&) = delete;
+
+        //- No copy assignment
+        void operator=(const ddt2&) = delete;
+
 
     //- Destructor
     virtual ~ddt2() = default;
@@ -174,7 +200,7 @@ public:
         //- Calculate the ddt2 fields
         virtual bool execute();
 
-        //- Write the ddt fields
+        //- Write the ddt2 fields
         virtual bool write();
 };
 
diff --git a/src/functionObjects/field/derivedFields/derivedFields.C b/src/functionObjects/field/derivedFields/derivedFields.C
index 4af8618311f..664faa3a9e5 100644
--- a/src/functionObjects/field/derivedFields/derivedFields.C
+++ b/src/functionObjects/field/derivedFields/derivedFields.C
@@ -39,13 +39,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(derivedFields, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        derivedFields,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, derivedFields, dictionary);
 }
 }
 
@@ -62,7 +56,6 @@ Foam::functionObjects::derivedFields::knownNames
 });
 
 
-
 // * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * //
 
 namespace Foam
diff --git a/src/functionObjects/field/derivedFields/derivedFields.H b/src/functionObjects/field/derivedFields/derivedFields.H
index 469ec66fd43..6b433ebbb9a 100644
--- a/src/functionObjects/field/derivedFields/derivedFields.H
+++ b/src/functionObjects/field/derivedFields/derivedFields.H
@@ -30,34 +30,60 @@ Group
     grpFieldFunctionObjects
 
 Description
-    A limited set of predefined derived fields ("rhoU", "pTotal").
+    Computes two predefined derived fields, i.e. \c rhoU, and \c pTotal, where
+    the defined fields are hard-coded as follows:
 
+    \vartable
+      rhoU              | \f$ \rho \vec U \f$
+      pTotal            | \f$ p + 1/2 \rho \, mag(\vec U)^2 \f$
+    \endvartable
+
+    Operands:
+    \table
+      Operand       | Type                    | Location
+      input         | vol{Scalar,Vector}Field | $FOAM_CASE/\<time\>/\<inpField\>
+      output file   | -                       | -
+      output field  | vol{Scalar,Vector}Field | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    derived
+    derivedFields1
     {
-        type    derivedFields;
-        libs    (fieldFunctionObjects);
+        // Mandatory entries (unmodifiable)
+        type            derivedFields;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        derived         (rhoU pTotal);
 
-        fields  (rhoU pTotal);
+        // Optional entries (runtime modifiable)
+        rhoRef          1.0;
 
-        // Optional: reference density for incompressible
-        rhoRef  1.25;
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Entries:
+    where the entries mean:
     \table
-        Property | Description                              | Required | Default
-        type     | derivedFields                            | yes |
-        derived  | Derived fields (pTotal/rhoU)             | yes |
-        rhoRef   | Reference density (incompressible)       | no  | 1
+      Property     | Description                           | Type | Req'd | Dflt
+      type         | Type name: derivedFields              | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects    | word |  yes  | -
+      derived      | Names of operand fields (rhoU/pTotal) | word |  yes  | -
+      rhoRef  | Reference density for incompressible flows | scalar | no  | 1.0
     \endtable
 
-    The known derived fields
-    \plaintable
-       rhoU          | (rho * U)
-       pTotal        | (p + 1/2 * rho * U)
-    \endplaintable
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
+See also
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::derivedFields
 
 SourceFiles
     derivedFields.C
@@ -89,7 +115,7 @@ public:
 
     // Public Enumerations
 
-        //- Derived/calculated field type
+        //- Options for the derived/calculated field type
         enum derivedType
         {
             NONE = 0,           //!< "none"
@@ -98,7 +124,7 @@ public:
             UNKNOWN
         };
 
-        //- Known derived field types
+        //- Names for derivedType
         static const Enum<derivedType> knownNames;
 
 
@@ -113,7 +139,7 @@ protected:
         scalar rhoRef_;
 
 
-    // Private Member Functions
+    // Protected Member Functions
 
         //- Hard-coded derived field (rho * U)
         //  \return true if field did not previously exist
@@ -140,6 +166,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        derivedFields(const derivedFields&) = delete;
+
+        //- No copy assignment
+        void operator=(const derivedFields&) = delete;
+
 
     //- Destructor
     virtual ~derivedFields() = default;
diff --git a/src/functionObjects/field/div/div.C b/src/functionObjects/field/div/div.C
index bb579902ebe..51fc3911551 100644
--- a/src/functionObjects/field/div/div.C
+++ b/src/functionObjects/field/div/div.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2013-2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -68,10 +69,4 @@ Foam::functionObjects::div::div
 {}
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::div::~div()
-{}
-
-
 // ************************************************************************* //
diff --git a/src/functionObjects/field/div/div.H b/src/functionObjects/field/div/div.H
index 679d5589ba1..6cff1158516 100644
--- a/src/functionObjects/field/div/div.H
+++ b/src/functionObjects/field/div/div.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2012-2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -30,15 +31,63 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the divergence of a field.  The operation is limited to
-    surfaceScalarFields and volVectorFields, and the output is a volScalarField.
+    Computes the divergence of an input field.
+
+    Operands:
+    \table
+      Operand          | Type                 | Location
+      input  | {surfaceScalar,volVector}Field | $FOAM_CASE/\<time\>/\<inpField\>
+      output file      | -                    | -
+      output field     | volScalarField       | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    div1
+    {
+        // Mandatory entries (unmodifiable)
+        type            div;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory (inherited) entry (runtime modifiable)
+        field           <field>;
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: add                     | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      field        | Name of the operand field          | word |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func "div(<field>)"
+    \endverbatim
+
+Note
+    To execute \c div function object on an input <field>, a numerical scheme
+    should be defined for \c div(<field>) in \c system/fvSchemes.divSchemes.
 
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::div
 
 SourceFiles
     div.C
+    divTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -65,7 +114,7 @@ class div
     // Private Member Functions
 
         //- Calculate the divergence of either a
-        //  volScalarField or a surfaceScalarField and register the result
+        //- volScalarField or a surfaceScalarField and register the result
         template<class FieldType>
         bool calcDiv();
 
@@ -89,9 +138,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        div(const div&) = delete;
+
+        //- No copy assignment
+        void operator=(const div&) = delete;
+
 
     //- Destructor
-    virtual ~div();
+    virtual ~div() = default;
 };
 
 
diff --git a/src/functionObjects/field/enstrophy/enstrophy.C b/src/functionObjects/field/enstrophy/enstrophy.C
index fa47ca2b502..00401d5b019 100644
--- a/src/functionObjects/field/enstrophy/enstrophy.C
+++ b/src/functionObjects/field/enstrophy/enstrophy.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -36,13 +37,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(enstrophy, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        enstrophy,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, enstrophy, dictionary);
 }
 }
 
@@ -79,10 +74,4 @@ Foam::functionObjects::enstrophy::enstrophy
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::enstrophy::~enstrophy()
-{}
-
-
 // ************************************************************************* //
diff --git a/src/functionObjects/field/enstrophy/enstrophy.H b/src/functionObjects/field/enstrophy/enstrophy.H
index b8be3ddd0ac..e9e6b5df5d4 100644
--- a/src/functionObjects/field/enstrophy/enstrophy.H
+++ b/src/functionObjects/field/enstrophy/enstrophy.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -30,11 +31,59 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the enstrophy of the velocity.
+    Computes the enstrophy of an input \c volVectorField.
+
+    Enstrophy, i.e. \f$\xi\f$:
+
+    \f[
+        \xi = 0.5 mag(\nabla \times \vec U )^2
+    \f]
+
+    where \f$\vec U\f$ is the input \c volVectorField.
+
+    Operands:
+    \table
+      Operand           | Type           | Location
+      input             | volVectorField | $FOAM_CASE/\<time\>/\<inpField\>
+      output file       | -              | -
+      output field      | volScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    enstrophy1
+    {
+        // Mandatory entries (unmodifiable)
+        type            enstrophy;
+        libs            (fieldFunctionObjects);
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+        Property     | Description                        | Type | Req'd | Dflt
+        type         | Type name: enstrophy               | word |  yes  | -
+        libs         | Library name: fieldFunctionObjects | word |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func enstrophy
+    \endverbatim
 
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::enstrophy
 
 SourceFiles
     enstrophy.C
@@ -83,9 +132,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        enstrophy(const enstrophy&) = delete;
+
+        //- No copy assignment
+        void operator=(const enstrophy&) = delete;
+
 
     //- Destructor
-    virtual ~enstrophy();
+    virtual ~enstrophy() = default;
 };
 
 
diff --git a/src/functionObjects/field/externalCoupled/externalCoupled.C b/src/functionObjects/field/externalCoupled/externalCoupled.C
index 40b1f287963..e30488bbea0 100644
--- a/src/functionObjects/field/externalCoupled/externalCoupled.C
+++ b/src/functionObjects/field/externalCoupled/externalCoupled.C
@@ -42,15 +42,9 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(externalCoupled, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        externalCoupled,
-        dictionary
-    );
-} // End namespace functionObject
-} // End namespace Foam
+    addToRunTimeSelectionTable(functionObject, externalCoupled, dictionary);
+}
+}
 
 Foam::string Foam::functionObjects::externalCoupled::patchKey = "// Patch:";
 
@@ -568,7 +562,8 @@ bool Foam::functionObjects::externalCoupled::read(const dictionary& dict)
     timeFunctionObject::read(dict);
     externalFileCoupler::readDict(dict);
 
-    calcFrequency_ = dict.getOrDefault("calcFrequency", 1);
+    calcFrequency_ =
+        dict.getCheckOrDefault("calcFrequency", 1, labelMinMax::ge(1));
 
     // Leave trigger intact
 
diff --git a/src/functionObjects/field/externalCoupled/externalCoupled.H b/src/functionObjects/field/externalCoupled/externalCoupled.H
index aaeaf2bc55f..dde7ba1604a 100644
--- a/src/functionObjects/field/externalCoupled/externalCoupled.H
+++ b/src/functionObjects/field/externalCoupled/externalCoupled.H
@@ -30,8 +30,10 @@ Group
     grpFieldFunctionObjects
 
 Description
-    This functionObject provides a simple interface for explicit coupling with
-    an external application.
+    Provides a simple file-based communication interface for explicit coupling
+    with an external application, so that data is transferred to- and from
+    OpenFOAM. The data exchange employs specialised boundary conditions to
+    provide either one-way or two-way coupling models.
 
     The coupling is through plain text files where OpenFOAM boundary data
     is read/written as one line per face (data from all processors collated):
@@ -43,27 +45,28 @@ Description
         <fld1> <fld2> .. <fldn>             //faceN
     \endverbatim
 
-    where the actual entries depend on the bc type:
+    where the actual entries depend on the boundary condition type:
     - mixed: value, snGrad, refValue, refGrad, valueFraction
     - externalCoupledMixed: output of writeDataMaster
     - other: value, snGrad
 
     These text files are located in a user specified communications directory
-    which gets read/written on the master processor only. In the
-    communications directory the structure will be
+    which gets read/written on the master processor only.
+
+    In the communications directory the structure will be:
     \verbatim
         <regionsName>/<patchGroup>/<fieldName>.[in|out]
     \endverbatim
 
-    (where regionsName is either the name of a single region or a composite
+    (where \c regionsName is either the name of a single region or a composite
     of multiple region names)
 
-    At start-up, the boundary creates a lock file, i.e..
+    At start-up, the boundary creates a lock file, i.e.:
     \verbatim
         OpenFOAM.lock
     \endverbatim
 
-    ... to signal the external source to wait. During the functionObject
+    ... to signal the external source to wait. During the function object
     execution the boundary values are written to files (one per region,
     per patch(group), per field), e.g.
     \verbatim
@@ -77,21 +80,19 @@ Description
         <regionsName>/<patchGroup>/<fieldName>.in
     \endverbatim
 
-    ... and then reinstate the lock file. The functionObject will then
+    ... and then reinstate the lock file. The function object will then
     read these values, apply them to the boundary conditions and pass
     program execution back to OpenFOAM.
 
 Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    externalCoupled
+    externalCoupled1
     {
+        // Mandatory entries (unmodifiable)
         type            externalCoupled;
-        ...
-        log             yes;
+        libs            (fieldFunctionObjects);
         commsDir        "<case>/comms";
-        initByExternal  yes;
-        statusDone      done;  // Any arbitrary status=... value
-
         regions
         {
             "(region1|region0)"         // Name of region(s)
@@ -103,6 +104,16 @@ Usage
                 }
             }
         }
+        initByExternal  true;
+
+        // Optional entries (runtime modifiable)
+        waitInterval    1;
+        timeOut         100;
+        statusDone      done;  // Any arbitrary status=... value
+        calcFrequency   1;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
@@ -126,17 +137,30 @@ Usage
 
     The entries comprise:
     \table
-        Property     | Description                          | Required | Default
-        type         | Type name: externalCoupled           | yes |
-        commsDir     | Communication directory              | yes |
-        waitInterval | wait interval in (s)                 | no  | 1
-        timeOut      | timeout in (s)                    | no | 100*waitInterval
-        statusDone   | Lockfile status=... on termination   | no  | done
-        initByExternal | Initialization values supplied by external app | yes
-        calcFrequency | Calculation frequency               | no  | 1
-        regions      | The regions to couple                | yes |
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: externalCoupled         | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      commsDir     | Communication directory            | word |  yes  | -
+      regions      | The regions to couple              | word |  yes  | -
+      initByExternal | Initialization values supplied by external app  <!--
+                                                    --> | bool | yes | -
+      waitInterval | Wait interval in [s]               | label | no   | 1
+      timeOut      | Timeout in [s]             | label | no | 100*waitInterval
+      statusDone   | Lockfile status=... on termination | word  | no   | done
+      calcFrequency | Calculation frequency             | label | no   | 1
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link timeFunctionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
+See also
+    - Foam::functionObject
+    - Foam::functionObjects::timeFunctionObject
+    - Foam::externalFileCouple
+    - ExtendedCodeGuide::functionObjects::field::externalCoupled
+
 SourceFiles
     externalCoupled.C
     externalCoupledTemplates.C
@@ -267,12 +291,6 @@ class externalCoupled
         //- Perform the coupling with necessary initialization etc.
         void performCoupling();
 
-        //- No copy construct
-        externalCoupled(const externalCoupled&) = delete;
-
-        //- No copy assignment
-        void operator=(const externalCoupled&) = delete;
-
 
 public:
 
@@ -296,6 +314,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        externalCoupled(const externalCoupled&) = delete;
+
+        //- No copy assignment
+        void operator=(const externalCoupled&) = delete;
+
 
     //- Destructor
     virtual ~externalCoupled() = default;
@@ -339,7 +363,7 @@ public:
       // Other
 
         //- Create single name by appending words (in sorted order),
-        //  separated by '_'
+        //- separated by '_'
         static word compositeName(const wordList&);
 
         //- Write geometry for the group as region/patch
diff --git a/src/functionObjects/field/externalCoupled/externalCoupledTemperatureMixed/externalCoupledTemperatureMixedFvPatchScalarField.H b/src/functionObjects/field/externalCoupled/externalCoupledTemperatureMixed/externalCoupledTemperatureMixedFvPatchScalarField.H
index d4455bf1b4d..1d0728a1ffc 100644
--- a/src/functionObjects/field/externalCoupled/externalCoupledTemperatureMixed/externalCoupledTemperatureMixedFvPatchScalarField.H
+++ b/src/functionObjects/field/externalCoupled/externalCoupledTemperatureMixed/externalCoupledTemperatureMixedFvPatchScalarField.H
@@ -95,7 +95,7 @@ Usage
         Property | Description                              | Required | Default
         outputTemperature | Output temperature: fluid/wall  | yes |
         htcRefTemperature | Fluid temperature for htc: cell/user  | no | cell
-        Tref     | Reference temperature [K] for htc        | partly |
+        Tref     | Reference temperature [K] for htc        | conditional |
     \endtable
 
 SeeAlso
diff --git a/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C b/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C
index ef57453fb98..c3a7c939755 100644
--- a/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C
+++ b/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2015-2017 OpenCFD Ltd.
+    Copyright (C) 2015-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -26,7 +26,6 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "externalCoupled.H"
-//#include "fvMesh.H"
 #include "OSspecific.H"
 #include "Fstream.H"
 #include "volFields.H"
diff --git a/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.C b/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.C
index dac6cf2b333..ba2b739a26d 100644
--- a/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.C
+++ b/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2015-2018 OpenCFD Ltd.
+    Copyright (C) 2015-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -44,7 +44,6 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(extractEulerianParticles, 0);
-
     addToRunTimeSelectionTable
     (
         functionObject,
@@ -272,7 +271,7 @@ void Foam::functionObjects::extractEulerianParticles::collectParticle
     {
         if (Pstream::master())
         {
-            const scalar d = cbrt(6*p.V/constant::mathematical::pi);
+            const scalar d = cbrt(6.0*p.V/constant::mathematical::pi);
             const point position = p.VC/(p.V + ROOTVSMALL);
             const vector U = p.VU/(p.V + ROOTVSMALL);
             label tag = -1;
diff --git a/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.H b/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.H
index 123b5d3145e..767c6c9c7a2 100644
--- a/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.H
+++ b/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.H
@@ -30,41 +30,80 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Generates particle size information from Eulerian calculations, e.g. VoF.
+    Generates particle size information from Eulerian calculations, e.g. \c VoF.
+
+    Operands:
+    \table
+      Operand           | Type        | Location
+      input             | -           | -
+      output file       | -           | -
+      output field 1    | scalarField | $OUTPUT/d
+      output field 2    | scalarField | $OUTPUT/soi
+      output field 3    | labelField  | $OUTPUT/tag
+      output field 4    | vectorField | $OUTPUT/U
+    \endtable
+
+    where \c $OUTPUT=$FOAM_CASE/\<time\>/lagrangian/eulerianParticleCloud.
 
 Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     extractEulerianParticles1
     {
+        // Mandatory entries (unmodifiable)
         type            extractEulerianParticles;
         libs            (fieldFunctionObjects);
-        ...
+
+        // Mandatory entries (runtime modifiable)
         faceZone        f0;
-        nLocations      10;
         alpha           alpha.water;
+
+        // Optional entries (runtime modifiable)
+        alphaThreshold  0.1;
+        nLocations      0;
         U               U;
         rho             rho;
         phi             phi;
+        minDiameter     1e-30;
+        maxDiameter     1e30;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required | Default value
-        type         | type name: extractEulerianParticles | yes |
-        faceZone     | Name of faceZone used as collection surface | yes |
-        alpha        | Name of phase indicator field | yes |
-        alphaThreshold | Threshold for alpha field | no | 0.1 |
-        nLocations   | Number of injection bins to generate  | no | 0 |
-        U            | Name of velocity field  | no | U |
-        rho          | Name of density field   | no | rho |
-        phi          | Name of flux field      | no | phi |
-        minDiameter  | min diameter            | no | small |
-        maxDiameter  | max diameter            | no | great |
+      Property   | Description                          | Type | Req'd | Dflt
+      type       | Type name: extractEulerianParticles  | word |  yes  | -
+      libs       | Library name: fieldFunctionObjects   | word |  yes  | -
+      faceZone   | Name of faceZone used as collection surface | word  | yes | -
+      alpha      | Name of phase indicator field        | word |  yes  | -
+      alphaThreshold | Threshold for alpha field        | scalar | no  | 0.1
+      nLocations | Number of injection bins to generate | label  | no  | 0
+      U          | Name of velocity field               | word   | no  | U
+      rho        | Name of density field                | word   | no  | rho
+      phi        | Name of flux field                   | word   | no  | phi
+      minDiameter | Minimum diameter                    | scalar | no  | SMALL
+      maxDiameter | Maximum diameter                    | scalar | no  | GREAT
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
+See also
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - Foam::eulerianParticle
+    - ExtendedCodeGuide::functionObjects::field::extractEulerianParticles
+
 SourceFiles
     extractEulerianParticles.C
+    extractEulerianParticlesTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -95,10 +134,9 @@ class extractEulerianParticles
     public fvMeshFunctionObject,
     public writeFile
 {
-
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Storage for collected particles
         injectedParticleCloud cloud_;
@@ -236,12 +274,6 @@ protected:
             const label globalFaceI
         ) const;
 
-        //- No copy construct
-        extractEulerianParticles(const extractEulerianParticles&) = delete;
-
-        //- No copy assignment
-        void operator=(const extractEulerianParticles&) = delete;
-
 
 public:
 
@@ -261,6 +293,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        extractEulerianParticles(const extractEulerianParticles&) = delete;
+
+        //- No copy assignment
+        void operator=(const extractEulerianParticles&) = delete;
+
 
     //- Destructor
     virtual ~extractEulerianParticles() = default;
diff --git a/src/functionObjects/field/fieldAverage/fieldAverage.H b/src/functionObjects/field/fieldAverage/fieldAverage.H
index c2a713d59c8..868bed61479 100644
--- a/src/functionObjects/field/fieldAverage/fieldAverage.H
+++ b/src/functionObjects/field/fieldAverage/fieldAverage.H
@@ -31,11 +31,9 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates average quantities for a user-specified selection of volumetric
-    and surface fields.
-    With the %subRegion option, also supports fields on functionObject
-    surface output (eg, sampledSurfaces).
-
+    Computes ensemble- and/or time-based field averages, with optional
+    windowing, for a user-specified selection of volumetric and/or surface
+    fields.
 
     Fields are entered as a list of sub-dictionaries, which indicate the type of
     averages to perform, and can be updated during the calculation.  The current
@@ -49,18 +47,19 @@ Description
             \overline{x'}^2 = \frac{1}{N}\displaystyle\sum\limits_{i=0}^N
             (x_i - \overline{x})^2
         \f]
-    - \c base: average over 'time', or 'iteration' (\f$N\f$ in the above)
+    - \c base: average over 'time', or 'iteration' (\c N in the above)
     - \c window: optional averaging window, specified in 'base' units
 
     Average field names are constructed by concatenating the base field with
-    the averaging type, e.g. when averaging field 'U', the resultant fields
-    are:
+    the averaging type, e.g. when averaging field 'U', the name of resultant
+    fields becomes:
     - arithmetic mean field, \c UMean
     - prime-squared field, \c UPrime2Mean
 
     Information regarding the number of averaging steps, and total averaging
     time are written on a per-field basis to the
-    \c "<functionObject name>Properties" dictionary, located in \<time\>/uniform
+    \c "<functionObject name>Properties" dictionary,
+    located in \c \<time\>/uniform.
 
     When restarting form a previous calculation, the averaging is continuous or
     may be restarted using the \c restartOnRestart option.
@@ -70,61 +69,84 @@ Description
     periodicRestart option and setting \c restartPeriod to the required
     averaging period.
 
+    With the \c subRegion option, also supports fields on function object
+    surface output (e.g., \c sampledSurfaces).
+
+    Operands:
+    \table
+      Operand      | Type                          | Location
+      input        | {vol,surface}\<Type\>Field(s) <!--
+               --> |$FOAM_CASE/\<time\>/\<inpField\>s
+      output file  | -                             | -
+      output field | {vol,surface}\<Type\>Field(s) <!--
+               --> | $FOAM_CASE/\<time\>/\<outField\>s
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
+
 Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     fieldAverage1
     {
+        // Mandatory entries (unmodifiable)
         type                fieldAverage;
         libs                (fieldFunctionObjects);
 
-        writeControl        writeTime;
-
-        restartOnRestart    false;
-        restartOnOutput     false;
-        periodicRestart     false;
-        restartPeriod       0.002;
-
+        // Mandatory entries (runtime modifiable)
         fields
         (
-            U
+            <field1>
             {
-                mean            on;
-                prime2Mean      on;
-                base            time;
-                windowType      exact;
-                window          10.0;
-                windowName      w1;
+                // Optional (inherited) entries
+                ...
             }
-            p
+
+            ...
+
+            <fieldN>
             {
-                mean            on;
-                prime2Mean      on;
-                base            time;
+                ...
             }
         );
+
+        // Optional entries (runtime modifiable)
+        restartOnRestart    false;
+        restartOnOutput     false;
+        periodicRestart     false;
+        restartPeriod       0.002;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property        | Description                       | Required | Default
-        type            | Type name: fieldAverage           | yes |
-        restartOnRestart| Restart the averaging on restart  | no  | no
-        restartOnOutput | Restart the averaging on output   | no  | no
-        periodicRestart | Periodically restart the averaging | no  | no
-        restartPeriod   | Periodic restart period            | conditional |
-        restartTime     | One-shot reset of the averaging    | no | great
-        fields          | list of fields and averaging options | yes |
-        subRegion       | Name for alternative objectRegistry  | no  | ""
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: fieldAverage            | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      fields       | Names of the operand fields and averaging options <!--
+               --> | dict |  yes  | -
+      restartOnRestart| Restart the averaging on restart | bool | no     | false
+      restartOnOutput | Restart the averaging on output  | bool | no     | false
+      periodicRestart | Periodically restart the averaging | bool | no   | false
+      restartPeriod   | Periodic restart period   | scalar | conditional | -
+      restartTime     | One-shot reset of the averaging  | scalar | no   | GREAT
+      subRegion    | Name for alternative objectRegistry | word   | no   | ""
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldAverageItem.H \endlink
 
-Note
-    To employ the \c prime2Mean option, the \c mean option must be selected.
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fieldAverageItem
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::fieldAverage
 
 SourceFiles
     fieldAverage.C
@@ -159,7 +181,7 @@ class fieldAverage
 {
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Time at last call, prevents repeated averaging
         label prevTimeIndex_;
@@ -279,13 +301,6 @@ protected:
             void readAveragingProperties();
 
 
-        //- No copy construct
-        fieldAverage(const fieldAverage&) = delete;
-
-        //- No copy assignment
-        void operator=(const fieldAverage&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -302,6 +317,12 @@ public:
             const dictionary&
         );
 
+        //- No copy construct
+        fieldAverage(const fieldAverage&) = delete;
+
+        //- No copy assignment
+        void operator=(const fieldAverage&) = delete;
+
 
     //- Destructor
     virtual ~fieldAverage() = default;
diff --git a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H
index eebe29127ea..46cdf4b9c7e 100644
--- a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H
+++ b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2017 OpenCFD Ltd.
+    Copyright (C) 2017-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -29,9 +29,11 @@ Class
 
 Description
     Helper class to describe what form of averaging to apply.  A set will be
-    applied to each base field in Foam::fieldAverage, of the form:
+    applied to each base field in Foam::fieldAverage, of the following form.
 
+Usage
     \verbatim
+    <field1>
     {
         mean            on;
         prime2Mean      on;
@@ -44,14 +46,33 @@ Description
     }
     \endverbatim
 
-    The averaging window corresponds to the averaging interval (iters or time)
-    If not specified, the averaging is over 'all iters/time'
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      mean         | Flag to calculate average          | bool |  yes  | -
+      prime2Mean   | Flag to calculate prime-square average | bool |  yes  | -
+      base         | Type of averaging interval         | word | yes   | -
+      window       | Averaging window                   | scalar | no  |
+      windowName   | Name of the averaging window       | word   | no  | ""
+      windowType   | Type of averaging window           | word   | no  |
+      allowRestart | Flag to allow restart for windowType=exact | bool | no |
+    \endtable
+
+    Options for the \c base entry:
+    \verbatim
+      time | Averaging interval is based on time
+      iter | Averaging interval is based on iterations
+    \endverbatim
+
+    Options for the \c windowType entry:
+    \verbatim
+      none  | no windowing
+      exact | allow additional files will be stored and written
+      approximate | disallow additional files will be stored and written
+    \endverbatim
 
-    Available window types:
-    - \c none : no windowing
-    - \c exact : exact windowing - additional files will be stored and written
-    - \c approximate : approximate variant that does not store/write additional
-      fields
+Note
+    To employ the \c prime2Mean option, the \c mean option must be enabled.
 
 SourceFiles
     fieldAverageItem.C
@@ -92,7 +113,7 @@ class fieldAverageItem
 {
 public:
 
-    // Public data
+    // Public Data
 
         // File and field name extensions
 
@@ -121,7 +142,7 @@ public:
 
 private:
 
-    // Private data
+    // Private Data
 
         //- Active flag
         bool active_;
diff --git a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C
index f05d854b94c..2a6be1053f0 100644
--- a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C
+++ b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C
@@ -73,7 +73,11 @@ Foam::Istream& Foam::functionObjects::operator>>
     faItem.mean_ = dict.get<bool>("mean");
     faItem.prime2Mean_ = dict.get<bool>("prime2Mean");
     faItem.base_ = faItem.baseTypeNames_.get("base", dict);
+<<<<<<< HEAD
     faItem.window_ = dict.getOrDefault<scalar>("window", -1);
+=======
+    faItem.window_ = dict.getOrDefault<scalar>("window", -1.0);
+>>>>>>> DOC: elaborate the usage of function objects
 
     if (faItem.window_ > 0)
     {
diff --git a/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C b/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C
index 4f245da2650..2c2ca261394 100644
--- a/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C
+++ b/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C
@@ -36,7 +36,6 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(fieldCoordinateSystemTransform, 0);
-
     addToRunTimeSelectionTable
     (
         functionObject,
diff --git a/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H b/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H
index 9035f285c5c..8d544b70f5f 100644
--- a/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H
+++ b/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H
@@ -32,19 +32,31 @@ Group
 
 Description
     Transforms a user-specified selection of fields from global Cartesian
-    coordinates to a local coordinate system.
-    The fields are run-time modifiable.
+    coordinates to a local user-specified coordinate system.
+
+    Operands:
+    \table
+      Operand      | Type                          | Location
+      input        | {vol,surface}\<Type\>Field(s) <!--
+               --> | $FOAM_CASE/\<time\>/\<inpField\>s
+      output file  | -                             | -
+      output field | {vol,surface}\<Type\>Field(s) <!--
+               --> | $FOAM_CASE/\<time\>/\<outField\>s
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     fieldCoordinateSystemTransform1
     {
+        // Mandatory entries (unmodifiable)
         type    fieldCoordinateSystemTransform;
         libs    (fieldFunctionObjects);
-        ...
-        fields  ( U UMean UPrime2Mean );
 
+        // Mandatory entries (runtime modifiable)
+        fields  ( U UMean UPrime2Mean );
         coordinateSystem
         {
             origin      (0.001 0 0);
@@ -55,20 +67,31 @@ Usage
                 e3      (0 0 -1);
             }
         }
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description                          | Required | Default value
-        type         | type name: fieldCoordinateSystemTransform | yes |
-        fields       | list of fields to be transformed     | yes |
-        coordinateSystem | local coordinate system          | yes    |
-    \endtable
+      Property  | Description                              | Type | Req'd | Dflt
+      type      | Type name: fieldCoordinateSystemTransform | word |  yes  | -
+      libs      | Library name: fieldFunctionObjects | word |  yes  | -
+      fields    | Names of the operand fields               | wordList | yes | -
+      coordinateSystem | Local coordinate system            | dict  | yes | -
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link coordinateSystem.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::coordinateSystem
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::coordinateSystem
+    - ExtendedCodeGuide::functionObjects::field::fieldCoordinateSystemTransform
 
 SourceFiles
     fieldCoordinateSystemTransform.C
@@ -162,6 +185,13 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        fieldCoordinateSystemTransform(const fieldCoordinateSystemTransform&)
+            = delete;
+
+        //- No copy assignment
+        void operator=(const fieldCoordinateSystemTransform&) = delete;
+
 
     //- Destructor
     virtual ~fieldCoordinateSystemTransform() = default;
diff --git a/src/functionObjects/field/fieldExpression/fieldExpression.H b/src/functionObjects/field/fieldExpression/fieldExpression.H
index 2b5e1bcb8cd..ae6df7703a8 100644
--- a/src/functionObjects/field/fieldExpression/fieldExpression.H
+++ b/src/functionObjects/field/fieldExpression/fieldExpression.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2012-2016 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -31,13 +31,38 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Base class for field expression function objects
+    Intermediate class for handling field expression function objects
+    (e.g. \c blendingFactor etc.) whereinto a single field is input.
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    <userDefinedSubDictName1>
+    {
+        // Mandatory and other optional entries
+        ...
+
+        // Optional (inherited) entries (runtime modifiable)
+        field             <field>;
+        result            <fieldResult>;
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property  | Description               | Type | Req'd | Dflt
+      field     | Name of the operand field | word | yes   | -
+      result    | Name of the output field  | word | no    | \<FO\>(\<field\>)
+    \endtable
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::fieldExpression
 
 SourceFiles
     fieldExpression.C
+    fieldExpressionTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -75,19 +100,16 @@ protected:
 
     // Protected Member Functions
 
+        //- Calculate the components of the field and return true if successful
         virtual bool calc() = 0;
 
+        //- Set the name of result field
         void setResultName(const word& typeName, const word& defaultArg);
 
+        //- Return true if required objects are found
         template<class Type>
         bool foundObject(const word& name, const bool verbose = true) const;
 
-        //- No copy construct
-        fieldExpression(const fieldExpression&) = delete;
-
-        //- No copy assignment
-        void operator=(const fieldExpression&) = delete;
-
 
 public:
 
@@ -107,6 +129,12 @@ public:
             const word& resultName = word::null
         );
 
+        //- No copy construct
+        fieldExpression(const fieldExpression&) = delete;
+
+        //- No copy assignment
+        void operator=(const fieldExpression&) = delete;
+
 
     //- Destructor
     virtual ~fieldExpression() = default;
diff --git a/src/functionObjects/field/fieldExtents/fieldExtents.C b/src/functionObjects/field/fieldExtents/fieldExtents.C
index 769cd5e27c0..965520a6408 100644
--- a/src/functionObjects/field/fieldExtents/fieldExtents.C
+++ b/src/functionObjects/field/fieldExtents/fieldExtents.C
@@ -126,10 +126,10 @@ bool Foam::functionObjects::fieldExtents::read(const dictionary& dict)
 {
     if (fvMeshFunctionObject::read(dict) && writeFile::read(dict))
     {
-        threshold_ = dict.get<scalar>("threshold");
-
         dict.readIfPresent<bool>("internalField", internalField_);
 
+        threshold_ = dict.get<scalar>("threshold");
+
         dict.readIfPresent<vector>("referencePosition", C0_);
 
         patchIDs_.clear();
diff --git a/src/functionObjects/field/fieldExtents/fieldExtents.H b/src/functionObjects/field/fieldExtents/fieldExtents.H
index 18f6b270a88..d042870fa3a 100644
--- a/src/functionObjects/field/fieldExtents/fieldExtents.H
+++ b/src/functionObjects/field/fieldExtents/fieldExtents.H
@@ -30,52 +30,72 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the spatial minimum and maximum extents of a field
+    Computes the spatial minimum and maximum extents of an input field.
 
     The extents are derived from the bound box limits after identifying the
     locations where field values exceed the user-supplied threshold value.
 
+    Operands:
+    \table
+      Operand        | Type | Location
+      input          | -    | -
+      output file    | dat  | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field   | -    | -
+    \endtable
+
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     fieldExtents1
     {
-        type        fieldExtents;
-        libs        (fieldFunctionObjects);
+        // Mandatory entries (unmodifiable)
+        type                fieldExtents;
+        libs                (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        fields              (<field1> <field2> ... <fieldN>);
+        threshold           0.5;
+
+        // Optional entries (runtime modifiable)
+        internalField       true;
+        referencePosition   (0 0 0);
+
+        // Optional (inherited) entries
         ...
-        writeToFile yes;
-        log         yes;
-        fields      (alpha);
-        threshold   0.5;
-        patches     ();
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property      | Description              | Required   | Default value
-        type          | type name: fieldExtents  | yes        |
-        writeToFile   | write extents data to file | no       | yes
-        log           | write extents data to standard output | no | yes
-        internalField | Process the internal field | no       | yes
-        threshold     | Field value to identify extents boundary | yes |
-        referencePosition | Reference position   | no         | (0 0 0)
-        fields        | list of fields to process | yes       |
-        patches       | list of patches to process | no       | \<all patches\>
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: fieldExtents            | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      threshold    | Value to identify extents boundary | scalar | yes | -
+      fields       | List of operand fields             | wordList | yes | -
+      internalField | Flag to process the internal field | bool |  no  | true
+      referencePosition | Reference position            | vector | no  | (0 0 0)
+      patches  | List of patches to process  | wordList  | no  | \<all patches\>
     \endtable
 
-    Output data is written to the file \<timeDir\>/fieldExtents.dat
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 Note
     For non-scalar fields, the magnitude of the field is employed and compared
-    to the threshold value.
+    to the value of \c threshold.
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::fieldExtents
 
 SourceFiles
     fieldExtents.C
+    fieldExtentsTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -102,9 +122,10 @@ class fieldExtents
     public fvMeshFunctionObject,
     public writeFile
 {
+
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Flag to write the internal field extents
         bool internalField_;
@@ -112,7 +133,7 @@ protected:
         //- Threshold value
         scalar threshold_;
 
-        //- Reference position; default = (0 0 0)
+        //- Reference position
         point C0_;
 
         //- Fields to assess
@@ -142,12 +163,6 @@ protected:
             const bool calcMag = false
         );
 
-        //- No copy construct
-        fieldExtents(const fieldExtents&) = delete;
-
-        //- No copy assignment
-        void operator=(const fieldExtents&) = delete;
-
 
 public:
 
@@ -165,6 +180,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        fieldExtents(const fieldExtents&) = delete;
+
+        //- No copy assignment
+        void operator=(const fieldExtents&) = delete;
+
 
     //- Destructor
     virtual ~fieldExtents() = default;
diff --git a/src/functionObjects/field/fieldMinMax/fieldMinMax.H b/src/functionObjects/field/fieldMinMax/fieldMinMax.H
index 8d8ae94cfb0..e67ce2ada63 100644
--- a/src/functionObjects/field/fieldMinMax/fieldMinMax.H
+++ b/src/functionObjects/field/fieldMinMax/fieldMinMax.H
@@ -31,45 +31,66 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the value and location of scalar minimum and maximum for a list
-    of user-specified fields.
+    Computes the values and locations of field minima and maxima.
+    These are good indicators of calculation performance, e.g. to confirm that
+    predicted results are within expected bounds, or how well a case is
+    converging.
 
-    For variables with a rank greater than zero, either the min/max of a
-    component value or the magnitude is reported.  When operating in parallel,
-    the processor owning the value is also given.
+    Multiple fields can be processed, where for rank > 0 primitives, e.g.
+    vectors and tensors, the extrema can be calculated per component, or by
+    magnitude.  In addition, spatial location and local processor index are
+    included in the output.
+
+    Operands:
+    \table
+      Operand        | Type | Location
+      input          | -    | -
+      output file    | dat  | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field   | -    | -
+    \endtable
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     fieldMinMax1
     {
+        // Mandatory entries (unmodifiable)
         type        fieldMinMax;
         libs        (fieldFunctionObjects);
-        ...
-        writeToFile yes;
-        log         yes;
-        location    yes;
+
+        // Mandatory entries (runtime modifiable)
         mode        magnitude;
-        fields      (U p);
+        fields      (<field1> <field2> ... <fieldN>);
+
+        // Optional entries (runtime modifiable)
+        location    true;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | type name: fieldMinMax  | yes         |
-        writeToFile  | write min/max data to file | no       | yes
-        log          | write min/max data to standard output | no | yes
-        location     | write location of the min/max value | no | yes
-        mode         | calculation mode: magnitude or component | no | magnitude
-        fields       | list of fields to process | yes       |
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: fieldMinMax             | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      fields       | List of operand fields             | wordList | yes | -
+      location     | Write location of the min/max value | bool | no   | true
+      mode   | Calculation mode: magnitude or component | word | no | magnitude
     \endtable
 
-    Output data is written to the file \<timeDir\>/fieldMinMax.dat
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::fieldMinMax
 
 SourceFiles
     fieldMinMax.C
@@ -103,9 +124,10 @@ class fieldMinMax
     public fvMeshFunctionObject,
     public writeFile
 {
+
 public:
 
-    // Public enumerations
+    // Public Enumerations
 
         enum modeType
         {
@@ -116,12 +138,12 @@ public:
 
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Mode type names
         static const Enum<modeType> modeTypeNames_;
 
-        //- Write location of min/max values?
+        //- Flag to write location of min/max values
         bool location_;
 
         //- Mode for min/max - only applicable for ranks > 0
@@ -153,12 +175,6 @@ protected:
         //- Output file header information
         virtual void writeFileHeader(Ostream& os);
 
-        //- No copy construct
-        fieldMinMax(const fieldMinMax&) = delete;
-
-        //- No copy assignment
-        void operator=(const fieldMinMax&) = delete;
-
         //- Calculate the field min/max for a given field type
         template<class Type>
         void calcMinMaxFieldType
@@ -192,6 +208,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        fieldMinMax(const fieldMinMax&) = delete;
+
+        //- No copy assignment
+        void operator=(const fieldMinMax&) = delete;
+
 
     //- Destructor
     virtual ~fieldMinMax() = default;
diff --git a/src/functionObjects/field/fieldValues/fieldValue/fieldValue.C b/src/functionObjects/field/fieldValues/fieldValue/fieldValue.C
index 4ba4234b26c..f981f090d00 100644
--- a/src/functionObjects/field/fieldValues/fieldValue/fieldValue.C
+++ b/src/functionObjects/field/fieldValues/fieldValue/fieldValue.C
@@ -54,11 +54,11 @@ Foam::functionObjects::fieldValue::fieldValue
 :
     fvMeshFunctionObject(name, runTime, dict),
     writeFile(obr_, name, valueType, dict),
+    writeFields_(false),
+    regionName_(word::null),
     scaleFactor_(1.0),
     dict_(dict),
-    regionName_(word::null),
-    fields_(),
-    writeFields_(false)
+    fields_()
 {
     read(dict);
 }
@@ -74,22 +74,16 @@ Foam::functionObjects::fieldValue::fieldValue
 :
     fvMeshFunctionObject(name, obr, dict),
     writeFile(obr_, name, valueType, dict),
+    writeFields_(false),
+    regionName_(word::null),
     scaleFactor_(1.0),
     dict_(dict),
-    regionName_(word::null),
-    fields_(),
-    writeFields_(false)
+    fields_()
 {
     read(dict);
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::fieldValue::~fieldValue()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::fieldValue::read(const dictionary& dict)
@@ -102,9 +96,9 @@ bool Foam::functionObjects::fieldValue::read(const dictionary& dict)
     fvMeshFunctionObject::read(dict);
     writeFile::read(dict);
 
-    dict.readEntry("fields", fields_);
     dict.readEntry("writeFields", writeFields_);
-    scaleFactor_ = dict.getOrDefault<scalar>("scaleFactor", 1);
+    scaleFactor_ = dict.getOrDefault<scalar>("scaleFactor", 1.0);
+    dict.readEntry("fields", fields_);
 
     return true;
 }
diff --git a/src/functionObjects/field/fieldValues/fieldValue/fieldValue.H b/src/functionObjects/field/fieldValues/fieldValue/fieldValue.H
index db8fa31a06f..5e008f62289 100644
--- a/src/functionObjects/field/fieldValues/fieldValue/fieldValue.H
+++ b/src/functionObjects/field/fieldValues/fieldValue/fieldValue.H
@@ -31,15 +31,46 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Base class for field value-based function objects.
+    Intermediate class for handling field value-based function objects.
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    <userDefinedSubDictName1>
+    {
+        // Mandatory and other optional entries
+        ...
+
+        // Mandatory (inherited) entries (runtime modifiable)
+        fields            (<field1> <field2> ... <fieldN>);
+
+        // Optional (inherited) entries (runtime modifiable)
+        writeFields       false;
+        scaleFactor       1.0;
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property    | Description                 | Type     | Req'd | Dflt
+      fields      | Names of operand fields     | wordList |  yes  | -
+      writeFields | Flag to output field values | bool     |  no   | false
+      scaleFactor | Scaling factor              | scalar   |  no   | 1.0
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
 
 See also
-    Foam::functionObject
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::fieldValue
 
 SourceFiles
     fieldValue.C
+    fieldValueTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -70,23 +101,23 @@ class fieldValue
 
 protected:
 
-    // Protected data
+    // Protected Data
 
-        //- Optional scaling factor
+        //- Flag to output field values
+        bool writeFields_;
+
+        //- Name of region (patch, zone, etc.)
+        word regionName_;
+
+        //- Scaling factor
         scalar scaleFactor_;
 
         //- Construction dictionary
         dictionary dict_;
 
-        //- Name of region (patch, zone, etc.)
-        word regionName_;
-
-        //- List of field names to operate on
+        //- Names of operand fields
         wordList fields_;
 
-        //- Output field values flag
-        bool writeFields_;
-
 
     // Protected Member Functions
 
@@ -151,7 +182,7 @@ public:
 
 
     //- Destructor
-    virtual ~fieldValue();
+    virtual ~fieldValue() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C b/src/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C
index 55819728b44..09f4f91833a 100644
--- a/src/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C
+++ b/src/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2012-2016 OpenFOAM Foundation
-    Copyright (C) 2015-2017 OpenCFD Ltd.
+    Copyright (C) 2015-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -112,12 +112,6 @@ Foam::functionObjects::fieldValues::fieldValueDelta::fieldValueDelta
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::fieldValues::fieldValueDelta::~fieldValueDelta()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::fieldValues::fieldValueDelta::read
diff --git a/src/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H b/src/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H
index e77bb75e1b9..8f6eea9cb98 100644
--- a/src/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H
+++ b/src/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H
@@ -31,20 +31,22 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Provides an operation between two 'field value' function objects.
+    Computes a selected operation between two \c fieldValue function objects.
 
-    The operation is applied to all results of each fieldValue object.
+    The operation is applied to all results of each \c fieldValue object.
     Accordingly, each object must generate the same number and type of results.
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     fieldValueDelta1
     {
+        // Mandatory entries (unmodifiable)
         type            fieldValueDelta;
         libs            (fieldFunctionObjects);
-        operation       subtract;
 
+        // Mandatory entries (runtime modifiable)
+        operation       subtract;
         region1
         {
             ...
@@ -53,16 +55,23 @@ Usage
         {
             ...
         }
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | type name: fieldValueDelta   | yes    |
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: fieldValueDelta         | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      operation    | Operation type to apply to values  | word |  yes  | -
+      region1      | Region1 properties                 | dict |  yes  | -
+      region2      | Region2 properties                 | dict |  yes  | -
     \endtable
 
-    The \c operation is one of:
+    Options for the \c operation entry:
     \plaintable
        add           | add
        subtract      | subtract
@@ -71,14 +80,19 @@ Usage
        average       | average
     \endplaintable
 
+    The inherited entries are elaborated in:
+     - \link fieldValue.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 See also
-    Foam::functionObject
-    Foam::functionObjects::fieldValue
-    Foam::functionObjects::regionFunctionObject
-    Foam::functionObjects::writeFile
+    - Foam::functionObject
+    - Foam::functionObjects::fieldValue
+    - ExtendedCodeGuide::functionObjects::field::fieldValueDelta
 
 SourceFiles
     fieldValueDelta.C
+    fieldValueDeltaTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -125,7 +139,7 @@ public:
 
 private:
 
-    // Private data
+    // Private Data
 
         //- Operation to apply to values
         operationType operation_;
@@ -176,9 +190,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        fieldValueDelta(const fieldValueDelta&) = delete;
+
+        //- No copy assignment
+        void operator=(const fieldValueDelta&) = delete;
+
 
     //- Destructor
-    virtual ~fieldValueDelta();
+    virtual ~fieldValueDelta() = default;
 
 
     // Public Member Functions
diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.H b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.H
index f6d0ff0a145..1dde638e558 100644
--- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.H
+++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.H
@@ -31,120 +31,137 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Provides a 'face regionType' variant of the fieldValues function object.
+    Provides a 'face regionType' variant of the \c fieldValues function object.
 
     Given a list of user-specified fields and a selection of mesh (or general
     surface) faces, a number of operations can be performed, such as sums,
     averages and integrations.
 
     For example, to calculate the volumetric or mass flux across a patch,
-    apply the 'sum' operator to the flux field (typically \c phi)
+    apply the 'sum' operator to the flux field (typically \c phi).
 
 Usage
-    Examples of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    movingWallPatch
+    surfaceFieldValuePatch1
     {
+        // Mandatory entries (unmodifiable)
         type            surfaceFieldValue;
         libs            (fieldFunctionObjects);
 
-        log             true;
-        writeControl    writeTime;
-        writeFields     false;
-
+        // Mandatory entries (runtime modifiable)
+        fields          (<field1> <field2> ... <fieldN>);
+        operation       <operationType>;
         regionType      patch;
-        name            movingWall;
+        name            <patch>;
+
+        // Optional entries (runtime modifiable)
+        postOperation   none;
+        weightField     alpha1;
+        scaleFactor     1.0;
+        writeArea       false;
+        surfaceFormat   none;
 
-        operation       areaAverage;
-        fields          (p phi U);
+        // Optional (inherited) entries
+        ...
     }
 
-    surfaceFieldValue1
+    surfaceFieldValueFaceZone1
     {
+        // Mandatory entries (unmodifiable)
         type            surfaceFieldValue;
         libs            (fieldFunctionObjects);
 
-        log             true;
-        writeControl    writeTime;
-        writeFields     true;
-
-        surfaceFormat   none;
+        // Mandatory entries (runtime modifiable)
+        fields          (<field1> <field2> ... <fieldN>);
+        operation       <operationType>;
         regionType      faceZone;
-        name            f0;
+        name            <faceZone>;
 
-        operation       sum;
+        // Optional entries (runtime modifiable)
+        postOperation   none;
         weightField     alpha1;
-        fields          (p phi U);
+        scaleFactor     1.0;
+        writeArea       false;
+        surfaceFormat   none;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description                          | Required | Default
-        type         | Type name: surfaceFieldValue         | yes |
-        log          | Write data to standard output        | no  | no
-        regionType   | Face regionType: see below           | yes |
-        name         | Name for regionType                  | yes |
-        operation    | Operation to perform                 | yes |
-        postOperation | Post-operation to perform           | no  | none
-        fields       | List of fields to operate on         | yes |
-        weightField  | Name of field to apply weighting     | no  |
-        scaleFactor  | Output value scaling factor          | no  | 1
-        writeArea    | Write the surface area               | no  |
-        writeFields  | Write the region field values        | yes |
-        surfaceFormat | Output value format                 | no  | none
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: surfaceFieldValue       | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      fields       | Names of operand fields            | wordList | yes | -
+      regionType   | Face regionType: see below         | word |  yes  | -
+      name         | Name for regionType                | word |  yes  | -
+      operation    | Operation type: see below          | word |  yes  | -
+      postOperation | Post-operation type: see below    | word |  no   | none
+      weightField  | Name of field to apply weighting   | word |  no   | none
+      scaleFactor  | Output value scaling factor        | scalar |  no  | 1.0
+      writeArea    | Write the surface area             | bool |  no   | false
+      surfaceFormat | Output value format               | word <!--
+                --> | conditional on writeFields  | none
     \endtable
 
-    Where \c regionType is defined by
+    The inherited entries are elaborated in:
+     - \link fieldValue.H \endlink
+
+    Options for the \c regionType entry:
     \plaintable
-        faceZone     | The \b name entry to specify the faceZone
-        patch        | The \b name entry to specify the patch
-        functionObjectSurface | The \b name entry to specify a polySurface
-        sampledSurface | A \b sampledSurfaceDict sub-dictionary and \b name
+      faceZone              | The \b name entry to specify the faceZone
+      patch                 | The \b name entry to specify the patch
+      functionObjectSurface | The \b name entry to specify a polySurface
+      sampledSurface        | A \b sampledSurfaceDict sub-dictionary and \b name
     \endplaintable
 
-    The \c operation is one of:
+    Options for the \c operation entry:
     \plaintable
-       none          | no operation
-       min           | minimum
-       max           | maximum
-       sum           | sum
-       sumMag        | sum of component magnitudes
-       sumDirection  | sum values that are positive in given direction
-       sumDirectionBalance | sum of balance of values in given direction
-       average       | ensemble average
-       areaAverage   | area-weighted average
-       areaIntegrate | area integral
-       CoV           | coefficient of variation: standard deviation/mean
-       areaNormalAverage | area-weighted average in face normal direction
-       areaNormalIntegrate | area-weighted integral in face normal directon
-       uniformity    | uniformity index
-       weightedSum           | weighted sum
-       weightedAverage       | weighted average
-       weightedAreaAverage   | weighted area average
-       weightedAreaIntegrate | weighted area integral
-       weightedUniformity    | weighted uniformity index
-       absWeightedSum           | sum using absolute weighting
-       absWeightedAverage       | average using absolute weighting
-       absWeightedAreaAverage   | area average using absolute weighting
-       absWeightedAreaIntegrate | area integral using absolute weighting
-       absWeightedUniformity    | uniformity index using absolute weighting
+      none          | no operation
+      min           | minimum
+      max           | maximum
+      sum           | sum
+      sumMag        | sum of component magnitudes
+      sumDirection  | sum values that are positive in given direction
+      sumDirectionBalance | sum of balance of values in given direction
+      average       | ensemble average
+      areaAverage   | area-weighted average
+      areaIntegrate | area integral
+      CoV           | coefficient of variation: standard deviation/mean
+      areaNormalAverage | area-weighted average in face normal direction
+      areaNormalIntegrate | area-weighted integral in face normal directon
+      uniformity    | uniformity index
+      weightedSum           | weighted sum
+      weightedAverage       | weighted average
+      weightedAreaAverage   | weighted area average
+      weightedAreaIntegrate | weighted area integral
+      weightedUniformity    | weighted uniformity index
+      absWeightedSum           | sum using absolute weighting
+      absWeightedAverage       | average using absolute weighting
+      absWeightedAreaAverage   | area average using absolute weighting
+      absWeightedAreaIntegrate | area integral using absolute weighting
+      absWeightedUniformity    | uniformity index using absolute weighting
     \endplaintable
 
-    The \c postOperation is one of:
+    Options for the \c postOperation entry:
     \plaintable
        none          | No additional operation after calculation
        mag           | Component-wise \c mag() after normal operation
        sqrt          | Component-wise \c sqrt() after normal operation
     \endplaintable
 
+    Usage by the \c postProcess utility is not available.
+
 Note
-    - The values reported by the areaNormalAverage and areaNormalIntegrate
+    - The values reported by the \c areaNormalAverage and \c areaNormalIntegrate
       operations are written as the first component of a field with the same
       rank as the input field.
-    - Faces on empty patches get ignored
-    - If the field is a volField the \c faceZone can only consist of boundary
-      faces
+    - Faces on empty patches get ignored.
+    - If the field is a volField the \c faceZone
+      can only consist of boundary faces.
     - Using \c functionObjectSurface:
       - The keyword %subRegion should not be used to select surfaces.
         Instead specify the regionType 'functionObjectSurface' and provide
@@ -159,7 +176,7 @@ Note
         - take care when using isoSurfaces - these might have duplicate
           triangles and so integration might be wrong
 
-    Uniformity
+    Uniformity:
     \f[
         UI(\phi) = 1 - \frac{1}{2 \overline{\phi} A}
         \int{\left| W \phi \cdot \hat{n} - \bar{W} \bar{\phi}\right| d\vec{A}}
@@ -171,12 +188,13 @@ Note
     \f$ \phi = \vec{U} \f$.
 
     A scalar concentration uniformity index is calculated with either
-    \f$ \rho \vec{U} \f$ or \f$ \vec{U} \f$ for weighting and
+    \f$ \rho \vec U \f$ or \f$ \vec U \f$ for weighting and
     \f$ \phi = conc \f$.
 
 See also
-    Foam::fieldValues
-    Foam::functionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fieldValues::fieldValue
+    - ExtendedCodeGuide::functionObjects::field::surfaceFieldValue
 
 SourceFiles
     surfaceFieldValue.C
@@ -556,6 +574,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        surfaceFieldValue(const surfaceFieldValue&) = delete;
+
+        //- No copy assignment
+        void operator=(const surfaceFieldValue&) = delete;
+
 
     //- Destructor
     virtual ~surfaceFieldValue() = default;
diff --git a/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.H b/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.H
index 499f7196a78..a3bc3b4edf3 100644
--- a/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.H
+++ b/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.H
@@ -31,88 +31,91 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Provides a 'volRegion' specialization of the fieldValue function object.
+    Provides a 'volRegion' specialization of the \c fieldValue function object.
 
     Given a list of user-specified fields and a 'volRegion', a number of
     operations can be performed, such as sums, averages and integrations.
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     volFieldValue1
     {
+        // Mandatory entries (unmodifiable)
         type            volFieldValue;
         libs            (fieldFunctionObjects);
 
-        log             true;
-        writeControl    writeTime;
-        writeFields     true;
-
-        regionType      cellZone;
-        name            c0;
-        operation       volAverage;
+        // Mandatory entries (runtime modifiable)
+        fields          (<field1> <field2> ... <fieldN>);
+        operation       <operationType>;
+        regionType      <volRegion>;
 
+        // Optional entries (runtime modifiable)
+        postOperation   none;
         weightField     alpha1;
 
-        fields
-        (
-            p
-            U
-        );
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description              | Required    | Default value
-        type         | Type name: volFieldValue            | yes   |
-        log          | Write data to standard output       | no    | no
-        writeFields  | Write the region field values       | yes   |
-        regionType   | volRegion type: see below           | yes   |
-        name         | Name of volRegion if required       | no    |
-        operation    | Operation to perform                | yes   |
-        postOperation | Post-operation to perform          | no    | none
-        weightField  | Name of field to apply weighting    | no    |
-        fields       | List of fields to operate on        | yes   |
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: volFieldValue           | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      fields       | Names of operand fields            | wordList | yes | -
+      regionType   | Face regionType: see below         | word |  yes  | -
+      name         | Name for regionType                | word |  yes  | -
+      operation    | Operation type: see below          | word |  yes  | -
+      postOperation | Post-operation type: see below    | word |  no   | none
+      weightField  | Name of field to apply weighting   | word |  no   | none
     \endtable
 
-    Where \c regionType is defined by
+    The inherited entries are elaborated in:
+     - \link fieldValue.H \endlink
+     - \link volRegion.H \endlink
+
+    Options for the \c regionType entry:
     \plaintable
-        cellZone     | requires a 'name' entry to specify the cellZone
-        all          | all cells
+      cellZone     | requires a 'name' entry to specify the cellZone
+      all          | all cells
     \endplaintable
 
-    The \c operation is one of:
+    Options for the \c operation entry:
     \plaintable
-       none                 | No operation
-       min                  | Minimum
-       max                  | Maximum
-       sum                  | Sum
-       sumMag               | Sum of component magnitudes
-       average              | Ensemble average
-       volAverage           | Volume weighted average
-       volIntegrate         | Volume integral
-       CoV                  | Coefficient of variation: standard deviation/mean
-       weightedSum          | Weighted sum
-       weightedAverage      | Weighted average
-       weightedVolAverage   | Weighted volume average
-       weightedVolIntegrate | Weighted volume integral
+      none                 | No operation
+      min                  | Minimum
+      max                  | Maximum
+      sum                  | Sum
+      sumMag               | Sum of component magnitudes
+      average              | Ensemble average
+      volAverage           | Volume weighted average
+      volIntegrate         | Volume integral
+      CoV                  | Coefficient of variation: standard deviation/mean
+      weightedSum          | Weighted sum
+      weightedAverage      | Weighted average
+      weightedVolAverage   | Weighted volume average
+      weightedVolIntegrate | Weighted volume integral
     \endplaintable
 
-    The \c postOperation is one of:
+    Options for the \c postOperation entry:
     \plaintable
-       none          | No additional operation after calculation
-       mag           | Component-wise \c mag() after normal operation
-       sqrt          | Component-wise \c sqrt() after normal operation
+      none          | No additional operation after calculation
+      mag           | Component-wise \c mag() after normal operation
+      sqrt          | Component-wise \c sqrt() after normal operation
     \endplaintable
 
+    Usage by the \c postProcess utility is not available.
+
 See also
-    Foam::functionObjects::fieldValues::fieldValue
-    Foam::functionObjects::volRegion
-    Foam::functionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fieldValues::fieldValue
+    - Foam::functionObjects::volRegion
 
 SourceFiles
     volFieldValue.C
+    volFieldValueTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -271,10 +274,10 @@ protected:
         template<class Type>
         tmp<Field<Type>> filterField(const Field<Type>& field) const;
 
-
         //- Output file header information
         virtual void writeFileHeader(Ostream& os) const;
 
+
 public:
 
     //- Declare type-name, virtual type (with debug switch)
@@ -299,6 +302,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        volFieldValue(const volFieldValue&) = delete;
+
+        //- No copy assignment
+        void operator=(const volFieldValue&) = delete;
+
 
     //- Destructor
     virtual ~volFieldValue() = default;
diff --git a/src/functionObjects/field/fieldsExpression/fieldsExpression.H b/src/functionObjects/field/fieldsExpression/fieldsExpression.H
index 9f5c8ed6c17..141fcb845b7 100644
--- a/src/functionObjects/field/fieldsExpression/fieldsExpression.H
+++ b/src/functionObjects/field/fieldsExpression/fieldsExpression.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2012-2016 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -31,13 +31,38 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Intermediate class for handling field expressions (add, subtract etc).
+    Intermediate class for handling field expression function objects
+    (e.g. \c add, \c subtract etc.) whereinto more than one fields are input.
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    <userDefinedSubDictName1>
+    {
+        // Mandatory and other optional entries
+        ...
+
+        // Optional (inherited) entries (runtime modifiable)
+        fields            (<field1> <field2> ... <fieldN>);
+        result            <fieldResult>;
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property  | Description                 | Type     | Req'd | Dflt
+      fields    | Names of operand fields     | wordList |  yes  | -
+      result    | Names of output fields | wordList | no | \<FO\>(\<f1\>,...)
+    \endtable
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::fieldsExpression
 
 SourceFiles
     fieldsExpression.C
+    fieldsExpressionTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -64,7 +89,7 @@ class fieldsExpression
 {
 protected:
 
-    // Protected member data
+    // Protected Member Data
 
         //- Names of fields to process
         wordList fieldNames_;
@@ -98,12 +123,6 @@ protected:
         //- Calculate expression
         virtual bool calc() = 0;
 
-        //- No copy construct
-        fieldsExpression(const fieldsExpression&) = delete;
-
-        //- No copy assignment
-        void operator=(const fieldsExpression&) = delete;
-
 
 public:
 
@@ -123,6 +142,12 @@ public:
             const word& resultName = word::null
         );
 
+        //- No copy construct
+        fieldsExpression(const fieldsExpression&) = delete;
+
+        //- No copy assignment
+        void operator=(const fieldsExpression&) = delete;
+
 
     //- Destructor
     virtual ~fieldsExpression() = default;
diff --git a/src/functionObjects/field/flowType/flowType.C b/src/functionObjects/field/flowType/flowType.C
index 1e8464d4819..ef3da30c2a4 100644
--- a/src/functionObjects/field/flowType/flowType.C
+++ b/src/functionObjects/field/flowType/flowType.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -37,13 +37,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(flowType, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        flowType,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, flowType, dictionary);
 }
 }
 
@@ -58,9 +52,9 @@ bool Foam::functionObjects::flowType::calc()
         const tmp<volTensorField> tgradU(fvc::grad(U));
         const volTensorField& gradU = tgradU();
 
-        volScalarField magD(mag(symm(gradU)));
-        volScalarField magOmega (mag(skew(gradU)));
-        dimensionedScalar smallMagD("smallMagD", magD.dimensions(), SMALL);
+        const volScalarField magD(mag(symm(gradU)));
+        const volScalarField magOmega(mag(skew(gradU)));
+        const dimensionedScalar smallMagD("sMagD", magD.dimensions(), SMALL);
 
         const volTensorField SSplusWW
         (
@@ -94,10 +88,4 @@ Foam::functionObjects::flowType::flowType
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::flowType::~flowType()
-{}
-
-
 // ************************************************************************* //
diff --git a/src/functionObjects/field/flowType/flowType.H b/src/functionObjects/field/flowType/flowType.H
index 0a36fe181c5..fa917933168 100644
--- a/src/functionObjects/field/flowType/flowType.H
+++ b/src/functionObjects/field/flowType/flowType.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -30,22 +31,70 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates and writes the flowType of a velocity field.
+    Computes the flow type indicator of an input velocity field.
 
-    The flow type parameter is obtained according to the following equation:
+    The flow type indicator is obtained according to the following equation:
+    \f[
+        \lambda = \frac{|D| - |\omega|}{|D| + |\omega|}
+    \f]
+
+    where
+    \vartable
+      \lambda | Flow type indicator
+      D       | Symmetric part of the gradient tensor of velocity
+      \omega  | Skew-symmetric part of the gradient tensor of velocity
+    \endvartable
+
+    The flow type indicator values mean:
+    \verbatim
+      -1 = rotational flow
+       0 = simple shear flow
+       1 = planar extensional flow
+    \endverbatim
+
+    Operands:
+    \table
+      Operand          | Type           | Location
+      input            | volVectorField | $FOAM_CASE/\<time\>/\<inpField\>
+      output file      | -              | -
+      output field     | volScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-                 |D| - |Omega|
-        lambda = -------------
-                 |D| + |Omega|
+    flowType1
+    {
+        // Mandatory entries (unmodifiable)
+        type            flowType;
+        libs            (fieldFunctionObjects);
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: flowType                | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
 
-        -1 = rotational flow
-         0 = simple shear flow
-         1 = planar extensional flow
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func flowType
     \endverbatim
 
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fieldExpression
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::flowType
 
 SourceFiles
     flowType.C
@@ -94,9 +143,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        flowType(const flowType&) = delete;
+
+        //- No copy assignment
+        void operator=(const flowType&) = delete;
+
 
     //- Destructor
-    virtual ~flowType();
+    virtual ~flowType() = default;
 };
 
 
diff --git a/src/functionObjects/field/flux/flux.C b/src/functionObjects/field/flux/flux.C
index 93fe1435ab0..8ab066bb003 100644
--- a/src/functionObjects/field/flux/flux.C
+++ b/src/functionObjects/field/flux/flux.C
@@ -85,10 +85,4 @@ Foam::functionObjects::flux::flux
 {}
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::flux::~flux()
-{}
-
-
 // ************************************************************************* //
diff --git a/src/functionObjects/field/flux/flux.H b/src/functionObjects/field/flux/flux.H
index 68be9294c55..f918031dde0 100644
--- a/src/functionObjects/field/flux/flux.H
+++ b/src/functionObjects/field/flux/flux.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -30,16 +30,56 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the flux of a field.  The operation is limited to
-    surfaceVectorFields and volVectorFields, and the output is a
-    surfaceScalarField.
+    Computes the flux of an input vector field.
+
+    Operands:
+    \table
+      Operand      | Type                     | Location
+      input        | {vol,surface}VectorField | $FOAM_CASE/\<time\>/\<inpField\>
+      output file  | -                        | -
+      output field | surfaceScalarField       | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    flowType1
+    {
+        // Mandatory entries (unmodifiable)
+        type            flux;
+        libs            (fieldFunctionObjects);
+
+        // Optional entries (runtime modifiable)
+        rho             none;
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+        Property     | Description                        | Type | Req'd | Dflt
+        type         | Type name: flux                    | word |  yes  | -
+        libs         | Library name: fieldFunctionObjects | word |  yes  | -
+        rho          | Name of density field              | word |  no   | none
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fieldExpression
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::flux
 
 SourceFiles
     flux.C
+    fluxTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -63,6 +103,12 @@ class flux
 :
     public fieldExpression
 {
+    // Private Data
+
+        //- Name of density field
+        word rhoName_;
+
+
     // Private Member Functions
 
         //- Calculate the flux of a volVectorField and register the result
@@ -76,9 +122,6 @@ class flux
         //- Calculate the flux field and return true if successful
         virtual bool calc();
 
-        //- rho flied name
-        word rhoName_;
-
 
 public:
 
@@ -96,9 +139,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        flux(const flux&) = delete;
+
+        //- No copy assignment
+        void operator=(const flux&) = delete;
+
 
     //- Destructor
-    virtual ~flux();
+    virtual ~flux() = default;
 };
 
 
diff --git a/src/functionObjects/field/fluxSummary/fluxSummary.C b/src/functionObjects/field/fluxSummary/fluxSummary.C
index 6b3f4a7b144..ac1d1cd4959 100644
--- a/src/functionObjects/field/fluxSummary/fluxSummary.C
+++ b/src/functionObjects/field/fluxSummary/fluxSummary.C
@@ -46,13 +46,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(fluxSummary, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        fluxSummary,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, fluxSummary, dictionary);
 }
 }
 
@@ -71,7 +65,7 @@ Foam::functionObjects::fluxSummary::modeTypeNames_
 });
 
 
-// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::fluxSummary::isSurfaceMode() const
 {
@@ -975,8 +969,13 @@ bool Foam::functionObjects::fluxSummary::read(const dictionary& dict)
     needsUpdate_ = true;
     mode_ = modeTypeNames_.get("mode", dict);
     phiName_ = dict.getOrDefault<word>("phi", "phi");
+<<<<<<< HEAD
     scaleFactor_ = dict.getOrDefault<scalar>("scaleFactor", 1);
     tolerance_   = dict.getOrDefault<scalar>("tolerance", 0.8);
+=======
+    scaleFactor_ = dict.getOrDefault<scalar>("scaleFactor", 1.0);
+    tolerance_ = dict.getOrDefault<scalar>("tolerance", 0.8);
+>>>>>>> DOC: elaborate the usage of function objects
 
     zoneNames_.clear();
     zoneDirections_.clear();
diff --git a/src/functionObjects/field/fluxSummary/fluxSummary.H b/src/functionObjects/field/fluxSummary/fluxSummary.H
index 129e646b6f4..f477d68f981 100644
--- a/src/functionObjects/field/fluxSummary/fluxSummary.H
+++ b/src/functionObjects/field/fluxSummary/fluxSummary.H
@@ -31,60 +31,78 @@ Group
     grpFieldFunctionObjects
 
 Description
-    This function object calculates the flux across selections of faces.
+    Computes the volumetric- or mass-flux
+    information across selections of face zones.
 
-    Output comprises, per set of faces, the fluxes:
-    - positive
-    - negative
-    - net
-    - absolute
+    Operands:
+    \table
+      Operand       | Type | Location
+      input         | -    | -
+      output file   | dat  | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<faceN\>
+      output field  | -    | -
+    \endtable
 
 Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     fluxSummary1
     {
-        type        fluxSummary;
-        libs        (fieldFunctionObjects);
-        ...
-        write       yes;
-        log         yes;
-        mode        cellZoneAndDirection;
+        // Mandatory entries (unmodifiable)
+        type            fluxSummary;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        mode            cellZoneAndDirection;
         cellZoneAndDirection
         (
             (porosity (1 0 0))
         );
-        scaleFactor 1.2;
+
+        // Optional entries  (runtime modifiable)
+        phi             phi;
+        scaleFactor     1.0;
+        tolerance       0.8;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property    | Description                           | Required | Default
-        type        | Type name: fluxSummary                | yes |
-        write       | Write flux data to file               | no  | yes
-        log         | Write flux data to standard output    | no  | yes
-        mode        | Mode to generate faces to test        | yes |
-        scaleFactor | Optional factor to scale result       | no  | 1
-        tolerance   | Tolerance for the reference direction | no  | 0.8
-        phi         | Surface flux field                    | no  | phi
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: fluxSummary             | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      mode         | Mode to generate faces to test     | word |  yes  | -
+      phi          | Name of surface flux field         | word |  no   | phi
+      scaleFactor | Factor to scale results             | scalar | no  | 1.0
+      tolerance   | Tolerance for reference direction   | scalar | no  | 0.8
     \endtable
 
-    The mode is one of:
-    - faceZone
-    - faceZoneAndDirection
-    - cellZoneAndDirection
-    - surface
-    - surfaceAndDirection
+    Options for the \c mode entry:
+    \verbatim
+      faceZone
+      faceZoneAndDirection
+      cellZoneAndDirection
+      surface
+      surfaceAndDirection
+    \endverbatim
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
 
-    Output data is written to files of the form \<timeDir\>/\<faceZoneName\>.dat
+    Usage by the \c postProcess utility is not available.
 
 Note
-    For surface and direction, can use phi = 'U' for determining the fluxes.
+    For surface and direction, phi='U' can be used for determining the fluxes.
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
-    Foam::functionObjects::timeControl
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - Foam::functionObjects::timeControl
+    - ExtendedCodeGuide::functionObjects::field::fluxSummary
 
 SourceFiles
     fluxSummary.C
@@ -121,7 +139,7 @@ class fluxSummary
 {
 public:
 
-    // Public enumerations
+    // Public Enumerations
 
         //- Face mode type
         enum modeType
@@ -144,13 +162,13 @@ protected:
         //- Track if the surface needs an update
         bool needsUpdate_;
 
-        //- Mode for face determination
+        //- Mode for face determination/to generate faces to test
         modeType mode_;
 
-        //- Scale factor
+        //- Factor to scale results
         scalar scaleFactor_;
 
-        //- Name of flux field, default = phi
+        //- Name of flux field
         word phiName_;
 
 
@@ -179,12 +197,12 @@ protected:
         scalar tolerance_;
 
 
-    // Private Member Functions
+    // Protected Member Functions
 
         //- Check if surface mode instead of zone mode
         bool isSurfaceMode() const;
 
-        //- Check flowType (mass or volume).
+        //- Check flowType (mass or volume)
         //  Return name on success, fatal error on failure.
         word checkFlowType
         (
@@ -252,7 +270,6 @@ protected:
         //- Initialise - after read(), before write()
         bool update();
 
-
         //- Output file header information
         virtual void writeFileHeader
         (
@@ -265,12 +282,6 @@ protected:
         //- Specialized write for surfaces
         bool surfaceModeWrite();
 
-        //- No copy construct
-        fluxSummary(const fluxSummary&) = delete;
-
-        //- No copy assignment
-        void operator=(const fluxSummary&) = delete;
-
 
 public:
 
@@ -288,6 +299,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        fluxSummary(const fluxSummary&) = delete;
+
+        //- No copy assignment
+        void operator=(const fluxSummary&) = delete;
+
 
     //- Destructor
     virtual ~fluxSummary() = default;
diff --git a/src/functionObjects/field/grad/grad.H b/src/functionObjects/field/grad/grad.H
index 4a190aec8a4..d6e90e5b0e6 100644
--- a/src/functionObjects/field/grad/grad.H
+++ b/src/functionObjects/field/grad/grad.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2012-2016 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -31,16 +31,64 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the gradient of a field.
+    Computes the gradient of an input field.
 
     The operation is limited to scalar and vector volume or surface fields, and
     the output is a volume vector or tensor field.
 
+    Operands:
+    \table
+      Operand       | Type                              | Location
+      input         | {vol,surface}{Scalar,Vector}Field <!--
+                --> | $FOAM_CASE/\<time\>/\<inpField\>
+      output file   | -                                 | -
+      output field  | vol{Vector,Tensor}Field           <!--
+                --> | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    grad1
+    {
+        // Mandatory entries (unmodifiable)
+        type            grad;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory (inherited) entries (runtime modifiable)
+        field           <field>;
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: grad                    | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      field        | Name of the operand field          | word |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func "grad(<field>)"
+    \endverbatim
+
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::grad
 
 SourceFiles
     grad.C
+    gradTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -90,6 +138,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        grad(const grad&) = delete;
+
+        //- No copy assignment
+        void operator=(const grad&) = delete;
+
 
     //- Destructor
     virtual ~grad() = default;
diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C
index d9b48b62d17..235a4266839 100644
--- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C
+++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C
@@ -88,12 +88,6 @@ Foam::functionObjects::heatTransferCoeff::heatTransferCoeff
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::heatTransferCoeff::~heatTransferCoeff()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::heatTransferCoeff::read(const dictionary& dict)
diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.H b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.H
index 08cf4258fa7..87331b059fd 100644
--- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.H
+++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.H
@@ -30,21 +30,46 @@ Group
     grpFieldFunctionObjects
 
 Description
-    This function object calculates and writes the heat transfer coefficient
-    as a volScalarField for a set of patches.
+    Computes the heat transfer coefficient as a \c volScalarField
+    for a set of patches.
 
     The field is stored on the mesh database so that it can be retrieved and
-    used for other applications.  Heat transfer coefficient, htc [W/m2/K]
-    can be evaluated using one of the following modes:
-    - ReynoldsAnalogy: Reynold's analogy
-    - localReferenceTemperature: local reference temperature
-    - fixedReferenceTemperature: specified reference temperature
+    used for other applications.
+
+    Operands:
+    \table
+      Operand           | Type           | Location
+      input             | -              | -
+      output file       | -              | -
+      output field      | volScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
 Usage
-    Example usage for mode 'ReynoldsAnalogy' for incompressible case
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    htc
+    heatTransferCoeff1
+    {
+        // Mandatory entries (unmodifiable)
+        type        heatTransferCoeff;
+        libs        (fieldFunctionObjects);
+
+        field       T;
+        patches     ("walls.*");
+
+        htcModel    ReynoldsAnalogy;
+        UInf        (20 0 0);
+        Cp          CpInf;
+        CpInf       1000;
+        rho         rhoInf;
+        rhoInf      1.2;
+    }
+    \endverbatim
+
+    Example usage for mode \c ReynoldsAnalogy for incompressible case:
+    \verbatim
+    heatTransferCoeff1
     {
+        // Mandatory entries (unmodifiable)
         type        heatTransferCoeff;
         libs        (fieldFunctionObjects);
 
@@ -60,7 +85,7 @@ Usage
     }
     \endverbatim
 
-    Example usage for mode 'ReynoldsAnalogy' for compressible case
+    Example usage for mode \c ReynoldsAnalogy for compressible case:
     \verbatim
     htc
     {
@@ -75,7 +100,7 @@ Usage
     }
     \endverbatim
 
-    Example usage for mode 'localReferenceTemperature' for compressible case
+    Example usage for mode \c localReferenceTemperature for compressible case:
     \verbatim
     htc
     {
@@ -84,11 +109,11 @@ Usage
 
         field       T;
         patches     ("walls.*");
-        htcModel    local;
+        htcModel    localReferenceTemperature;
     }
     \endverbatim
 
-    Example usage for mode 'fixedReferenceTemperature' for compressible case
+    Example usage for mode \c fixedReferenceTemperature for compressible case:
     \verbatim
     htc
     {
@@ -97,15 +122,30 @@ Usage
 
         field       T;
         patches     ("walls.*");
-        htcModel    local;
+        htcModel    fixedReferenceTemperature;
         TRef        300;
     }
     \endverbatim
 
+    Options for the \c htcModel entry:
+    \verbatim
+        ReynoldsAnalogy           | Reynold's analogy
+        localReferenceTemperature | Local reference temperature
+        fixedReferenceTemperature | Specified reference temperature
+    \endverbatim
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::heatTransferCoeffModels::fixedReferenceTemperature
-    Foam::heatTransferCoeffModels::localReferenceTemperature
+    - Foam::functionObject
+    - Foam::functionObjects::fieldExpression
+    - Foam::heatTransferCoeffModels::fixedReferenceTemperature
+    - Foam::heatTransferCoeffModels::localReferenceTemperature
+    - ExtendedCodeGuide::functionObjects::field::heatTransferCoeff
 
 SourceFiles
     heatTransferCoeff.C
@@ -144,18 +184,10 @@ class heatTransferCoeff
 
 protected:
 
-    // Protected Member Functions
-
-        //- Calculate the heat transfer coefficient field
-        //  \return true on success
+        //- Calculate the heat transfer coefficient field and return true
+        //- if successful
         virtual bool calc();
 
-        //- No copy construct
-        heatTransferCoeff(const heatTransferCoeff&) = delete;
-
-        //- No copy assignment
-        void operator=(const heatTransferCoeff&) = delete;
-
 
 public:
 
@@ -174,9 +206,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        heatTransferCoeff(const heatTransferCoeff&) = delete;
+
+        //- No copy assignment
+        void operator=(const heatTransferCoeff&) = delete;
+
 
     //- Destructor
-    virtual ~heatTransferCoeff();
+    virtual ~heatTransferCoeff() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H
index ebeaf24da60..8a19b09766e 100644
--- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H
+++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H
@@ -104,7 +104,7 @@ public:
     TypeName("heatTransferCoeffModel");
 
 
-    // Declare run-time constructor selection table
+    // Declare runtime constructor selection table
 
         declareRunTimeSelectionTable
         (
diff --git a/src/functionObjects/field/histogram/histogram.C b/src/functionObjects/field/histogram/histogram.C
index 06b7bf9b76f..f6882e71e84 100644
--- a/src/functionObjects/field/histogram/histogram.C
+++ b/src/functionObjects/field/histogram/histogram.C
@@ -95,12 +95,6 @@ Foam::functionObjects::histogram::histogram
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::histogram::~histogram()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::histogram::read(const dictionary& dict)
@@ -114,6 +108,14 @@ bool Foam::functionObjects::histogram::read(const dictionary& dict)
     min_ = dict.getOrDefault<scalar>("min", GREAT);
     dict.readEntry("nBins", nBins_);
 
+    if (nBins_ < 1)
+    {
+        FatalErrorInFunction
+            << "Number of histogram bins = " << nBins_
+            << " cannot be negative or zero."
+            << abort(FatalError);
+    }
+
     const word format(dict.get<word>("setFormat"));
     formatterPtr_ = writer<scalar>::New(format);
 
diff --git a/src/functionObjects/field/histogram/histogram.H b/src/functionObjects/field/histogram/histogram.H
index b5d191d698e..acac98c20a3 100644
--- a/src/functionObjects/field/histogram/histogram.H
+++ b/src/functionObjects/field/histogram/histogram.H
@@ -31,45 +31,69 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Write the volume-weighted histogram of a volScalarField.
+    Computes the volume-weighted histogram of an input \c volScalarField.
+
+    Operands:
+    \table
+      Operand        | Type              | Location
+      input          | volScalarField    | $FOAM_CASE/\<time\>/\<inpField\>
+      output file    | dat  | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field   | -                 | -
+    \endtable
+
+    The set written contains two columns, the first the volume averaged values,
+    the second the raw bin count.
 
 Usage
-    Example:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     histogram1
     {
-        type            histogram;
-        libs            (fieldFunctionObjects);
-
-        field           p;
-        nBins           100;
-        min             -5;
-        max             5;
-        setFormat       gnuplot;
+        // Mandatory entries (unmodifiable)
+        type        histogram;
+        libs        (fieldFunctionObjects);
+
+        // Mandatory (inherited) entries (runtime modifiable)
+        field       p;
+        nBins       100;
+        setFormat   gnuplot;
+
+        // Optional entries (runtime modifiable)
+        max         5;
+        min        -5;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | type name: histogram    | yes         |
-        field        | Field to analyse        | yes         |
-        nBins        | Number of bins for the histogram | yes|
-        max          | Maximum value sampled   | no          | field max
-        min          | minimum value sampled   | no          | 0
-        setFormat    | Output format           | yes         |
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: histogram               | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      field        | Name of operand field              | word |  yes  | -
+      nBins        | Number of histogram bins           | label | yes  | -
+      setFormat    | Output format                      | word |  yes  | -
+      max          | Maximum value sampled       | scalar | no  | fieldMax
+      min          | minimum value sampled       | scalar | no  | 0.0
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 Note
-    If max is not provided it will use the field's min and max as the bin
-    extremes. If max is provided but not min it will use 0. The set written
-    contains two columns, the first the volume averaged values, the second
-    the raw bin count.
+    If \c max is not provided it will use the field's min and max as the bin
+    extremes. If \c max is provided but not \c min it will use 0.
 
 See also
-    Foam::functionObject
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::histogram
 
 SourceFiles
     histogram.C
@@ -99,7 +123,10 @@ class histogram
     public fvMeshFunctionObject,
     public writeFile
 {
-    // Private data
+    // Private Data
+
+        //- Number of bins
+        label nBins_;
 
         //- Name of field
         word fieldName_;
@@ -110,9 +137,6 @@ class histogram
         //- Minimum value
         scalar min_;
 
-        //- Number of bins
-        label nBins_;
-
         //- Output formatter to write
         autoPtr<writer<scalar>> formatterPtr_;
 
@@ -127,12 +151,6 @@ class histogram
             const scalarField& absoluteValues
         ) const;
 
-        //- No copy construct
-        histogram(const histogram&) = delete;
-
-        //- No copy assignment
-        void operator=(const histogram&) = delete;
-
 
 public:
 
@@ -150,9 +168,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        histogram(const histogram&) = delete;
+
+        //- No copy assignment
+        void operator=(const histogram&) = delete;
+
 
     // Destructor
-    virtual ~histogram();
+    virtual ~histogram() = default;
 
 
     // Member Functions
@@ -160,10 +184,10 @@ public:
         //- Read the histogram data
         virtual bool read(const dictionary&);
 
-        //- Execute, currently does nothing
+        //- Execute (effectively no-op)
         virtual bool execute();
 
-        //- Calculate the histogram and write.
+        //- Calculate the histogram and write
         //  postProcess overrides the usual writeControl behaviour and
         //  forces writing always (used in post-processing mode)
         virtual bool write();
diff --git a/src/functionObjects/field/interfaceHeight/interfaceHeight.C b/src/functionObjects/field/interfaceHeight/interfaceHeight.C
index dec19de61aa..b08671a5199 100644
--- a/src/functionObjects/field/interfaceHeight/interfaceHeight.C
+++ b/src/functionObjects/field/interfaceHeight/interfaceHeight.C
@@ -230,11 +230,11 @@ Foam::functionObjects::interfaceHeight::interfaceHeight
 :
     fvMeshFunctionObject(name, runTime, dict),
     logFiles(obr_, name),
-    alphaName_("alpha"),
     liquid_(true),
-    locations_(),
+    alphaName_("alpha"),
     interpolationScheme_("cellPoint"),
-    direction_(vector::zero)
+    direction_(vector::zero),
+    locations_()
 {
     read(dict);
     resetNames({"height", "position"});
@@ -244,12 +244,6 @@ Foam::functionObjects::interfaceHeight::interfaceHeight
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::interfaceHeight::~interfaceHeight()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::interfaceHeight::read(const dictionary& dict)
diff --git a/src/functionObjects/field/interfaceHeight/interfaceHeight.H b/src/functionObjects/field/interfaceHeight/interfaceHeight.H
index 3b37ca68fad..8cb5357ab0b 100644
--- a/src/functionObjects/field/interfaceHeight/interfaceHeight.H
+++ b/src/functionObjects/field/interfaceHeight/interfaceHeight.H
@@ -29,33 +29,71 @@ Class
 
 Description
     This function object reports the height of the interface above a set of
-    locations. For each location, it writes the vertical distance of the
+    locations.
+
+    For each location, it writes the vertical distance of the
     interface above both the location and the lowest boundary. It also writes
     the point on the interface from which these heights are computed. It uses
     an integral approach, so if there are multiple interfaces above or below a
     location then this method will generate average values.
 
-    Example of function object specification:
+    Operands:
+    \table
+      Operand        | Type | Location
+      input          | -    | -
+      output file 1  | dat  | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/height
+      output file 2  | dat  | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/position
+      output field   | -    | -
+    \endtable
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     interfaceHeight1
     {
-        type           interfaceHeight;
-        libs           (fieldFunctionObjects);
-        alpha          alpha.water;
-        locations      ((0 0 0) (10 0 0) (20 0 0));
+        // Mandatory entries (unmodifiable)
+        type            interfaceHeight;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        locations       ((0 0 0) (10 0 0) (20 0 0));
+
+        // Optional entries (runtime modifiable)
+        alpha           alpha.water;
+        liquid          true;
+        direction       (1 0 0);
+        interpolationScheme    cellPoint;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-Usage
+    where the entries mean:
     \table
-        Property     | Description               | Required | Default value
-        type         | type name                 | yes      |
-        alpha        | name of the alpha field   | no       | alpha
-        locations    | list of locations to report the height at | yes |
-        liquid       | is the alpha field that of the liquid | no | true
-        direction    | direction of interface | no | g
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: interfaceHeight         | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      locations    | Locations to report the height at  | vectorList | yes | -
+      alpha        | Name of alpha field                | word |  no   | alpha
+      liquid     | Flag if the alpha field that of the liquid | bool | no | true
+      direction  | Direction of interface               | vector | no  | g
+      interpolationScheme | Interpolation scheme        | word | no | cellPoint
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
+See also
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - Foam::functionObjects::logFile
+    - ExtendedCodeGuide::functionObjects::field::interfaceHeight
+
 SourceFiles
     interfaceHeight.C
 
@@ -86,14 +124,11 @@ class interfaceHeight
 {
     // Private Data
 
-        //- Name of the alpha field
-        word alphaName_;
-
         //- Is the alpha field that of the liquid under the wave?
         bool liquid_;
 
-        //- List of locations to report the height at
-        List<point> locations_;
+        //- Name of the alpha field
+        word alphaName_;
 
         //- Interpolation scheme
         word interpolationScheme_;
@@ -101,6 +136,9 @@ class interfaceHeight
         //- Direction of interface motion
         vector direction_;
 
+        //- List of locations to report the height at
+        List<point> locations_;
+
 
     // Private Member Functions
 
@@ -148,9 +186,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        interfaceHeight(const interfaceHeight&) = delete;
+
+        //- No copy assignment
+        void operator=(const interfaceHeight&) = delete;
+
 
     //- Destructor
-    virtual ~interfaceHeight();
+    virtual ~interfaceHeight() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/limitFields/limitFields.H b/src/functionObjects/field/limitFields/limitFields.H
index 25d73bb49f3..3d57788bac9 100644
--- a/src/functionObjects/field/limitFields/limitFields.H
+++ b/src/functionObjects/field/limitFields/limitFields.H
@@ -30,44 +30,68 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Limits fields to user-specified min and max bounds
+    Limits input fields to user-specified min and max bounds.
+
+    Operands:
+    \table
+      Operand          | Type           | Location
+      input            | vol<Type>Field | $FOAM_CASE/<time>/<inpField>
+      output file      | -              | -
+      output field     | vol<Type>Field | $FOAM_CASE/<time>/<outField>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
 
 Note
-    For non-scalar field types, the user limit is used to create a
+    For non-scalar types of input field, the user limit is used to create a
     scaling factor using the field magnitudes.
 
 Usage
-    Example of function object specification:
-
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     limitFields1
     {
-        type        limitFields;
-        libs        (fieldFunctionObjects);
+        // Mandatory entries (unmodifiable)
+        type            limitFields;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        fields          (U);
+        limit           max;
+        max             100;
+
+        // Optional (inherited) entries
         ...
-        fields      (U);
-        limit       max;
-        max         100;
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description                          | Required | Default
-        type         | type name: limitFields               | yes |
-        fields       | list of fields to process            | yes |
-        limit        | bound to limit - see below           | yes |
-        min          | min limit value                      | partly |
-        max          | max limit value                      | partly |
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: limitFields             | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      fields       | List of fields to process          | wordList | yes | -
+      limit        | Bound to limit - see below         | word |  yes  | -
+      min          | Min limit value                  | scalar | conditional | -
+      max          | Max limit value                  | scalar | conditional | -
     \endtable
 
-    The \c limit entry can take the value:
-    - \c min : specify a minimum value
-    - \c max : specify a maximum value
-    - \c both : specify a minimum value and a maximum value
+    Options for the \c limit entry:
+    \verbatim
+        min  : specify a minimum value
+        max  : specify a maximum value
+        both : specify a minimum value and a maximum value
+    \endverbatim
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::limitFields
 
 SourceFiles
     limitFields.C
@@ -141,13 +165,6 @@ protected:
         bool limitField(const word& fieldName);
 
 
-        //- No copy construct
-        limitFields(const limitFields&) = delete;
-
-        //- No copy assignment
-        void operator=(const limitFields&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -164,6 +181,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        limitFields(const limitFields&) = delete;
+
+        //- No copy assignment
+        void operator=(const limitFields&) = delete;
+
 
     //- Destructor
     virtual ~limitFields() = default;
diff --git a/src/functionObjects/field/mag/mag.H b/src/functionObjects/field/mag/mag.H
index d4031195657..daba5f2c0aa 100644
--- a/src/functionObjects/field/mag/mag.H
+++ b/src/functionObjects/field/mag/mag.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2012-2016 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -31,18 +31,64 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the magnitude of a field.
-
-    The operation can be applied to any volume or surface fields generating a
-    volume or surface scalar field.
-    With the %subRegion option, also supports fields on functionObject
-    surface output (eg, sampledSurfaces).
+    Computes the magnitude of an input field.
+
+    Operands:
+    \table
+      Operand      | Type                     | Location
+      input      | {vol,surface}\<Type\>Field | $FOAM_CASE/\<time\>/\<inpField\>
+      output file  | -                        | -
+      output field | {vol,surface}ScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
+
+    With the \c subRegion option, also supports fields on function object
+    surface output (e.g. sampledSurfaces).
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    mag1
+    {
+        // Mandatory entries (unmodifiable)
+        type            mag;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory (inherited) entries (runtime modifiable)
+        field           <field>;
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: mag                     | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      field        | Name of the operand field          | word |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func "mag(<field>)"
+    \endverbatim
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::mag
 
 SourceFiles
     mag.C
+    magTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -92,6 +138,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        mag(const mag&) = delete;
+
+        //- No copy assignment
+        void operator=(const mag&) = delete;
+
 
     //- Destructor
     virtual ~mag() = default;
diff --git a/src/functionObjects/field/magSqr/magSqr.H b/src/functionObjects/field/magSqr/magSqr.H
index 164898c1cec..ebacb11f64f 100644
--- a/src/functionObjects/field/magSqr/magSqr.H
+++ b/src/functionObjects/field/magSqr/magSqr.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
-    Copyright (C) 2016-2019 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -31,18 +31,64 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the magnitude of the sqr of a field.
-
-    The operation can be applied to any volume or surface field generating a
-    volume or surface scalar field.
-    With the %subRegion option, also supports fields on functionObject
-    surface output (eg, sampledSurfaces).
+    Computes the magnitude of the square of an input field.
+
+    Operands:
+    \table
+      Operand      | Type                     | Location
+      input      | {vol,surface}\<Type\>Field | $FOAM_CASE/\<time\>/\<inpField\>
+      output file  | -                        | -
+      output field | {vol,surface}ScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
+
+    With the \c subRegion option, also supports fields on functionObject
+    surface output (e.g. sampledSurfaces).
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    magSqr1
+    {
+        // Mandatory entries (unmodifiable)
+        type            magSqr;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory (inherited) entries (runtime modifiable)
+        field           <field>;
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: magSqr                  | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      field        | Name of the operand field          | word |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func "magSqr(<field>)"
+    \endverbatim
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::magSqr
 
 SourceFiles
     magSqr.C
+    magSqrTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -69,12 +115,12 @@ class magSqr
     // Private Member Functions
 
         //- Calculate the magnitude of the sqr of the field
-        //  and register the result
+        //- and register the result
         template<class Type>
         bool calcMagSqr();
 
         //- Calculate the magnitude of the sqr of the field
-        //  and return true if successful
+        //- and return true if successful
         virtual bool calc();
 
 
@@ -94,6 +140,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        magSqr(const magSqr&) = delete;
+
+        //- No copy assignment
+        void operator=(const magSqr&) = delete;
+
 
     //- Destructor
     virtual ~magSqr() = default;
diff --git a/src/functionObjects/field/mapFields/mapFields.C b/src/functionObjects/field/mapFields/mapFields.C
index c7045cab293..66fa2370379 100644
--- a/src/functionObjects/field/mapFields/mapFields.C
+++ b/src/functionObjects/field/mapFields/mapFields.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016-2019 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -36,13 +36,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(mapFields, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        mapFields,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, mapFields, dictionary);
 }
 }
 
diff --git a/src/functionObjects/field/mapFields/mapFields.H b/src/functionObjects/field/mapFields/mapFields.H
index d2330716192..a29e61e4cca 100644
--- a/src/functionObjects/field/mapFields/mapFields.H
+++ b/src/functionObjects/field/mapFields/mapFields.H
@@ -30,40 +30,91 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Map fields from local mesh to secondary mesh at run-time.
+    Maps input fields from local mesh to secondary mesh at runtime.
+
+    Operands:
+    \table
+      Operand      | Type                       | Location
+      input        | {vol,surface}\<Type\>Field <!--
+                                    --> | $FOAM_CASE/\<time\>/\<inpField\>
+      output file  | -                          | -
+      output field | {vol,surface}\<Type\>Field <!--
+                                    --> | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
 
 Usage
-    Example of function object specification to map fields:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     mapFields1
     {
+        // Mandatory entries (unmodifiable)
         type            mapFields;
         libs            (fieldFunctionObjects);
-        ...
 
+        // Mandatory (inherited) entries (runtime modifiable)
+        fields          (<field1> <field2> ... <fieldN>);
         mapRegion       coarseMesh;
         mapMethod       cellVolumeWeight;
-        consistent      yes;
+        consistent      true;
+
+        // Optional entries (runtime modifiable)
+        // patchMapMethod  direct;  // AMI-related entry
+        // enabled if consistent=false
+        // patchMap        (<patchSrc> <patchTgt>);
+        // cuttingPatches  (<patchTgt1> <patchTgt2> ... <patchTgtN>);
 
-        fields          ("U.*" p);
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description                | Required  | Default value
-        type         | Type name: mapFields       | yes       |
-        mapRegion    | Name of region to map to   | yes       |
-        mapMethod    | Mapping method             | yes       |
-        patchMapMethod | Patch mapping method     | no        | \<auto\>
-        consistent   | Mapping meshes have consistent boundaries | yes |
-        fields       | List of field names to map | yes       |
-        log          | Log to standard output     | no        | yes
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: mapFields               | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      fields       | Names of operand fields            | wordList |  yes  | -
+      mapRegion    | Name of region to map to           | word |  yes  | -
+      mapMethod    | Mapping method                     | word |  yes  | -
+      consistent   | Mapping meshes have consistent boundaries | bool  | yes | -
+      patchMapMethod | Patch mapping method for AMI cases | word |  no  | -
+      patchMap   | Coincident source/target patches in two cases <!--
+             --> | wordHashTable | no | -
+      cuttingPatches | Target patches cutting the source domain <!--
+                 --> | wordList | no | -
     \endtable
 
+    Options for the \c mapMethod entry:
+    \verbatim
+      direct
+      mapNearest
+      cellVolumeWeight
+      correctedCellVolumeWeight
+    \endverbatim
+
+    Options for the \c patchMapMethod entry:
+    \verbatim
+      directAMI
+      mapNearestAMI
+      faceAreaWeightAMI
+      partialFaceAreaWeightAMI
+    \endverbatim
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
+See also
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::mapFields
 
 SourceFiles
     mapFields.C
+    mapFieldsTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -91,7 +142,7 @@ class mapFields
 :
     public fvMeshFunctionObject
 {
-    // Private data
+    // Private Data
 
         //- Locally cached map region mesh (map to this mesh)
         autoPtr<fvMesh> mapRegionPtr_;
@@ -105,12 +156,6 @@ class mapFields
 
     // Private Member Functions
 
-        //- No copy construct
-        mapFields(const mapFields&) = delete;
-
-        //- No copy assignment
-        void operator=(const mapFields&) = delete;
-
         //- Helper function to create the mesh-to-mesh interpolation
         void createInterpolation(const dictionary& dict);
 
@@ -146,6 +191,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        mapFields(const mapFields&) = delete;
+
+        //- No copy assignment
+        void operator=(const mapFields&) = delete;
+
 
     //- Destructor
     virtual ~mapFields() = default;
diff --git a/src/functionObjects/field/momentum/momentum.C b/src/functionObjects/field/momentum/momentum.C
index 2223f9ca4cd..e6d0b76efab 100644
--- a/src/functionObjects/field/momentum/momentum.C
+++ b/src/functionObjects/field/momentum/momentum.C
@@ -430,7 +430,7 @@ bool Foam::functionObjects::momentum::read(const dictionary& dict)
     UName_ = dict.getOrDefault<word>("U", "U");
     pName_ = dict.getOrDefault<word>("p", "p");
     rhoName_ = dict.getOrDefault<word>("rho", "rho");
-    rhoRef_ = dict.getOrDefault<scalar>("rhoRef", 1);
+    rhoRef_ = dict.getOrDefault<scalar>("rhoRef", 1.0);
     hasCsys_ = dict.getOrDefault("cylindrical", false);
 
     if (hasCsys_)
diff --git a/src/functionObjects/field/momentum/momentum.H b/src/functionObjects/field/momentum/momentum.H
index 2a8e0b00b80..d0e963e83e5 100644
--- a/src/functionObjects/field/momentum/momentum.H
+++ b/src/functionObjects/field/momentum/momentum.H
@@ -30,53 +30,70 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates linear/angular momentum, reporting integral values
+    Computes linear/angular momentum, reporting integral values
     and optionally writing the fields.
 
-    Data is written into momentum.dat in the
-    postProcessing/\<functionObjectName\> directory.
+    Operands:
+    \table
+      Operand       | Type | Location
+      input         | -    | -
+      output file   | dat  | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field  | -    | -
+    \endtable
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     momentum1
     {
-        type        momentum;
-        libs        (fieldFunctionObjects);
-        ...
-        log         yes;
+        // Mandatory entries (unmodifiable)
+        type            momentum;
+        libs            (fieldFunctionObjects);
 
+        // Optional entries (runtime modifiable)
         regionType      all;
         writeMomentum   yes;
         writePosition   yes;
         writeVelocity   yes;
+        p               p;
+        U               U;
+        rho             rho;
+        rhoRef          1.0;
 
         cylindrical     true;
+        origin          (0 0 0);
+        e1              (1 0 0);
+        e3              (0 0 1);
 
-        origin  (0 0 0);
-        e1      (1 0 0);
-        e3      (0 0 1);
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description                          | Required | Default
-        type         | Type name: momentum                  | yes |
-        log          | Log information to standard output   | no  | no
-        writeMomentum | Write (linear, angular) momentum  fields  | no | no
-        writePosition | Write angular position component fields   | no | no
-        writeVelocity | Write angular velocity fields       | no  | no
-        p            | Pressure field name                  | no  | p
-        U            | Velocity field name                  | no  | U
-        rho          | Density field name                   | no  | rho
-        rhoRef       | Reference density (incompressible)   | no  | 1.0
-        cylindrical  | Use cylindrical coordinates          | no  | false
-        origin       | Origin for cylindrical coordinates   | no  |
-        regionType   | Selection type: all/cellSet/cellZone | no  | all
-        name         | Name of cellSet/cellZone if required | no  |
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: momentum                | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      regionType   | Selection type: all/cellSet/cellZone | word   | no  | all
+      writeMomentum | Write (linear, angular) momentum  fields | bool | no | no
+      writePosition | Write angular position component fields | bool | no  | no
+      writeVelocity | Write angular velocity fields           | bool | no  | no
+      p            | Pressure field name                | word | no  | p
+      U            | Velocity field name                | word | no  | U
+      rho          | Density field name                 | word | no  | rho
+      rhoRef       | Reference density (incompressible) | scalar | no  | 1.0
+      cylindrical  | Use cylindrical coordinates        | bool | no  | no
+      origin  | Origin for cylindrical coordinates   | vector | conditional  | -
+      name    | Name of cellSet/cellZone if required | word   | conditional  | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 Note
   - For incompressible cases, the value of \c rhoRef is used.
   - When specifying the cylindrical coordinate system, the rotation
@@ -93,11 +110,11 @@ Note
     \endverbatim
 
 See also
-    Foam::functionObject
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::volRegion
-    Foam::functionObjects::writeFile
-    Foam::functionObjects::timeControl
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::volRegion
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::momentum
 
 SourceFiles
     momentum.C
@@ -154,7 +171,7 @@ class momentum
 
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Integral (linear) momentum
         vector sumMomentum_;
@@ -208,12 +225,6 @@ protected:
         //- Write momentum data
         void writeValues(Ostream& os);
 
-        //- No copy construct
-        momentum(const momentum&) = delete;
-
-        //- No copy assignment
-        void operator=(const momentum&) = delete;
-
 
 public:
 
@@ -241,6 +252,12 @@ public:
             const bool readFields = true
         );
 
+        //- No copy construct
+        momentum(const momentum&) = delete;
+
+        //- No copy assignment
+        void operator=(const momentum&) = delete;
+
 
     //- Destructor
     virtual ~momentum() = default;
diff --git a/src/functionObjects/field/momentumError/momentumError.C b/src/functionObjects/field/momentumError/momentumError.C
index 866a8fe18b7..00920f545c0 100644
--- a/src/functionObjects/field/momentumError/momentumError.C
+++ b/src/functionObjects/field/momentumError/momentumError.C
@@ -25,19 +25,15 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-
 #include "momentumError.H"
-
 #include "fvcDiv.H"
 #include "fvcGrad.H"
 #include "fvcLaplacian.H"
-
 #include "turbulenceModel.H"
 #include "turbulentTransportModel.H"
 #include "turbulentFluidThermoModel.H"
 #include "addToRunTimeSelectionTable.H"
 
-
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
@@ -213,4 +209,5 @@ bool Foam::functionObjects::momentumError::write()
     return true;
 }
 
+
 // ************************************************************************* //
diff --git a/src/functionObjects/field/momentumError/momentumError.H b/src/functionObjects/field/momentumError/momentumError.H
index 98c78dad7c6..63746c52dd0 100644
--- a/src/functionObjects/field/momentumError/momentumError.H
+++ b/src/functionObjects/field/momentumError/momentumError.H
@@ -30,28 +30,54 @@ Group
     grpForcesFunctionObjects
 
 Description
-    Produces a balance terms result for the steady momentum equation
+    Computes balance terms for the steady momentum equation.
+
+    Operands:
+    \table
+      Operand       | Type           | Location
+      input         | -              | -
+      output file   | -              | -
+      output field  | volVectorField | $FOAM_CASE/\<time\>/\<file\>
+    \endtable
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    momErr
+    momentumError1
     {
+        // Mandatory entries (unmodifiable)
         type        momentumError;
+        libs        (fieldFunctionObjects);
+
+        // Optional entries (runtime modifiable)
+        p           <pName>;
+        U           <UName>;
+        phi         <phiName>;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | Type name: momentumError| yes         |
-        p            | Pressure field name     | no          | p
-        U            | Velocity field name     | no          | U
-        phi          | Flux field name         | no          | phi
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: momentumError           | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      p            | Name of pressure field             | word |  no   | p
+      U            | Name of velocity field             | word |  no   | U
+      phi          | Name of flux field                 | word |  no   | phi
     \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 See also
-    Foam::functionObject
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::momentumError
 
 SourceFiles
     momentumError.C
@@ -79,10 +105,9 @@ class momentumError
 :
     public fvMeshFunctionObject
 {
-
 protected:
 
-    // Protected data
+    // Protected Data
 
         // Read from dictionary
 
@@ -92,7 +117,7 @@ protected:
             //- Name of velocity field
             word UName_;
 
-            //- Flux
+            //- Name of flux field
             word phiName_;
 
 
@@ -101,12 +126,6 @@ protected:
          //- Return the effective viscous stress (laminar + turbulent).
         tmp<volVectorField> divDevRhoReff();
 
-        //- No copy construct
-        momentumError(const momentumError&) = delete;
-
-        //- No copy assignment
-        void operator=(const momentumError&) = delete;
-
 
 public:
 
@@ -124,9 +143,17 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        momentumError(const momentumError&) = delete;
+
+        //- No copy assignment
+        void operator=(const momentumError&) = delete;
+
+
     //- Destructor
     virtual ~momentumError() = default;
 
+
     // Member Functions
 
         //- Read the forces data
diff --git a/src/functionObjects/field/nearWallFields/nearWallFields.H b/src/functionObjects/field/nearWallFields/nearWallFields.H
index 4ea4b8c636a..29886724777 100644
--- a/src/functionObjects/field/nearWallFields/nearWallFields.H
+++ b/src/functionObjects/field/nearWallFields/nearWallFields.H
@@ -31,53 +31,62 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Samples near-patch volume fields.
+    Samples near-patch volume fields within an input distance range.
 
-    Fields are stored
-    - every time step the field is updated with new values
-    - at output it writes the fields
+    Operands:
+    \table
+      Operand        | Type             | Location
+      input          | vol\<Type\>Field | $FOAM_CASE/\<time\>/\<inpField\>
+      output file    | -                | -
+      output field   | vol\<Type\>Field | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
-    This functionObject can either be used
-    - to calculate a new field as a  post-processing step or
-    - since the fields are registered, used in another functionObject
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     nearWallFields1
     {
-        type        nearWallFields;
-        libs        (fieldFunctionObjects);
-
-        writeControl writeTime;
-
+        // Mandatory entries (unmodifiable)
+        type            nearWallFields;
+        libs            (fieldFunctionObjects);
         fields
         (
-            (p pNear)
-            (U UNear)
+            (<field1> <outField1>)
+            (<field2> <outField2>)
         );
+        patches         (<patch1> <patch2> ... <patchN>);
+        distance        0.01;
 
-        patches     (movingWall);
-
-        distance    0.13;
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property | Description               | Required    | Default value
-        type     | type name: nearWallFields | yes         |
-        fields   | list of fields with corresponding output field names | yes |
-        patches  | list of patches to sample | yes         |
-        distance | distance from patch to sample | yes     |
-        log      | Log to standard output    | no          | yes
+      Property     | Description                        | Type | Req'd  | Dflt
+      type         | Type name: nearWallFields          | word |  yes   | -
+      libs         | Library name: fieldFunctionObjects | word |  yes   | -
+      fields       | Names of input-output fields | wordHashTable | yes | -
+      patches      | Names of patches to sample       | wordList | yes  | -
+      distance | Wall-normal distance from patch to sample | scalar | yes  | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::nearWallFields
 
 SourceFiles
     nearWallFields.C
+    nearWallFieldsTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -106,16 +115,13 @@ class nearWallFields
 {
 protected:
 
-    // Protected Member Data
+    // Protected Data
 
         // Read from dictionary
 
             //- Fields to process (input-name output-name)
             List<Tuple2<word, word>> fieldSet_;
 
-            //- Switch to send output to Info as well as to file
-            Switch log_;
-
             //- Patches to sample
             labelHashSet patchSet_;
 
@@ -176,12 +182,6 @@ protected:
         ) const;
 
 
-        //- No copy construct
-        nearWallFields(const nearWallFields&) = delete;
-
-        //- No copy assignment
-        void operator=(const nearWallFields&) = delete;
-
 public:
 
     //- Runtime type information
@@ -199,6 +199,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        nearWallFields(const nearWallFields&) = delete;
+
+        //- No copy assignment
+        void operator=(const nearWallFields&) = delete;
+
 
     //- Destructor
     virtual ~nearWallFields() = default;
diff --git a/src/functionObjects/field/particleDistribution/particleDistribution.C b/src/functionObjects/field/particleDistribution/particleDistribution.C
index bfe6acbac42..491c1f20a07 100644
--- a/src/functionObjects/field/particleDistribution/particleDistribution.C
+++ b/src/functionObjects/field/particleDistribution/particleDistribution.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -38,7 +38,6 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(particleDistribution, 0);
-
     addToRunTimeSelectionTable
     (
         functionObject,
@@ -61,21 +60,15 @@ Foam::functionObjects::particleDistribution::particleDistribution
     fvMeshFunctionObject(name, runTime, dict),
     writeFile(runTime, name),
     cloudName_("unknown-cloudName"),
-    nameVsBinWidth_(),
     tagFieldName_("none"),
     rndGen_(),
+    nameVsBinWidth_(),
     writerPtr_(nullptr)
 {
     read(dict);
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::particleDistribution::~particleDistribution()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::particleDistribution::read(const dictionary& dict)
@@ -83,8 +76,8 @@ bool Foam::functionObjects::particleDistribution::read(const dictionary& dict)
     if (fvMeshFunctionObject::read(dict) && writeFile::read(dict))
     {
         dict.readEntry("cloud", cloudName_);
-        dict.readEntry("nameVsBinWidth", nameVsBinWidth_);
         dict.readIfPresent("tagField", tagFieldName_);
+        dict.readEntry("nameVsBinWidth", nameVsBinWidth_);
         const word format(dict.get<word>("setFormat"));
         writerPtr_ = writer<scalar>::New(format);
 
diff --git a/src/functionObjects/field/particleDistribution/particleDistribution.H b/src/functionObjects/field/particleDistribution/particleDistribution.H
index 36b5debc882..28f0b363d07 100644
--- a/src/functionObjects/field/particleDistribution/particleDistribution.H
+++ b/src/functionObjects/field/particleDistribution/particleDistribution.H
@@ -32,40 +32,66 @@ Group
 Description
     Generates a particle distribution for lagrangian data at a given time.
 
+    Operands:
+    \table
+      Operand        | Type | Location
+      input          | -    | -
+      output file    | dat  | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field   | -    | -
+    \endtable
+
 Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     particleDistribution1
     {
+        // Mandatory entries (unmodifiable)
         type        particleDistribution;
         libs        (fieldFunctionObjects);
-        ...
-        cloud       "myCloud";
+
+        // Mandatory entries (runtime modifiable)
+        cloud       <cloudName>;
         nameVsBinWidth
         (
             (d 0.1)
             (U 10)
         );
         setFormat   raw;
+
+        // Optional entries (runtime modifiable)
+        tagField    none;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property    | Description              |  Required  | Default value
-        type        | Type name: particleDistribution | yes |
-        cloud       | Name of cloud to process | Yes        |
-        nameVsBinWidth | List of cloud field vs bin width | Yes |
-        tagField    | Name of cloud field to use to group particles | no | none
-        setFormat   | Output format            | yes         |
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: particleDistribution    | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      cloud        | Name of cloud to process           | word |  yes  | -
+      nameVsBinWidth | List of cloud field-bin width | wordHashTable | yes | -
+      setFormat      | Output format                 | word          |  yes  | -
+      tagField | Name of cloud field to use group particles | word | no | none
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 See also
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
-    Foam::functionObjects::timeControl
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::particleDistribution
 
 SourceFiles
     particleDistribution.C
+    particleDistributionTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -97,20 +123,20 @@ class particleDistribution
 {
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Cloud name
         word cloudName_;
 
-        //- List of field name vs. bin width
-        List<Tuple2<word, scalar>> nameVsBinWidth_;
-
         //- Tag field name - used to filter the particles into groups
         word tagFieldName_;
 
         //- Random number generator - used by distribution models
         Random rndGen_;
 
+        //- List of field name vs. bin width
+        List<Tuple2<word, scalar>> nameVsBinWidth_;
+
         //- Writer
         autoPtr<writer<scalar>> writerPtr_;
 
@@ -135,12 +161,6 @@ protected:
             const List<DynamicList<label>>& addr
         );
 
-        //- No copy construct
-        particleDistribution(const particleDistribution&) = delete;
-
-        //- No copy assignment
-        void operator=(const particleDistribution&) = delete;
-
 
 public:
 
@@ -158,9 +178,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        particleDistribution(const particleDistribution&) = delete;
+
+        //- No copy assignment
+        void operator=(const particleDistribution&) = delete;
+
 
     //- Destructor
-    virtual ~particleDistribution();
+    virtual ~particleDistribution() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/pressure/pressure.C b/src/functionObjects/field/pressure/pressure.C
index 60dad199d3d..f4bd0ba3e91 100644
--- a/src/functionObjects/field/pressure/pressure.C
+++ b/src/functionObjects/field/pressure/pressure.C
@@ -43,6 +43,7 @@ namespace functionObjects
 }
 }
 
+
 const Foam::Enum
 <
     Foam::functionObjects::pressure::mode
@@ -56,6 +57,7 @@ Foam::functionObjects::pressure::modeNames
     { TOTAL_COEFF, "totalCoeff" },
 });
 
+
 const Foam::Enum
 <
     Foam::functionObjects::pressure::hydrostaticMode
@@ -67,6 +69,7 @@ Foam::functionObjects::pressure::hydrostaticModeNames
     { SUBTRACT, "subtract" },
 });
 
+
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 Foam::word Foam::functionObjects::pressure::resultName() const
@@ -284,7 +287,6 @@ Foam::tmp<Foam::volScalarField> Foam::functionObjects::pressure::calcPressure
         return tresult;
     }
 
-
     return tresult;
 }
 
@@ -439,14 +441,13 @@ bool Foam::functionObjects::pressure::read(const dictionary& dict)
     }
 
 
-
     if (mode_ & COEFF)
     {
         dict.readEntry("pInf", pInf_);
         dict.readEntry("UInf", UInf_);
         dict.readEntry("rhoInf", rhoInf_);
 
-        scalar zeroCheck = 0.5*rhoInf_*magSqr(UInf_) + pInf_;
+        const scalar zeroCheck = 0.5*rhoInf_*magSqr(UInf_) + pInf_;
 
         if (mag(zeroCheck) < ROOTVSMALL)
         {
diff --git a/src/functionObjects/field/pressure/pressure.H b/src/functionObjects/field/pressure/pressure.H
index be01ff916ac..b4823458dee 100644
--- a/src/functionObjects/field/pressure/pressure.H
+++ b/src/functionObjects/field/pressure/pressure.H
@@ -31,93 +31,122 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Includes tools to manipulate the pressure into different forms.
+    Provides several methods to convert an input pressure
+    field into derived forms, including:
 
-    These currently include:
     - static pressure
         \f[
             p_s = p_{ref} + \rho p_k
         \f]
     - total pressure
         \f[
-            p_0 = p_{ref} + p + 0.5 \rho |U|^2
+            p_0 = p_{ref} + p + 0.5 \rho |\vec U|^2
         \f]
     - isentropic pressure
         \f[
-            p_i = p*(1 + ((gamma-1)*M^2)/2)^(gamma/(gamma - 1))
+            p_i = p*(1 + ((\gamma-1)*M^2)/2)^{(\gamma/(\gamma - 1))}
         \f]
     - static pressure coefficient
         \f[
-            Cp = \frac{p_s - p_{\inf}}{0.5 \rho_{\inf} |U_{\inf}|^2}
+            Cp = \frac{p_s - p_{\inf}}{0.5 \rho_{\inf} |\vec U_{\inf}|^2}
         \f]
     - total pressure coefficient
         \f[
-            Cp_0 = \frac{p_0 - p_{\inf}}{0.5 \rho_{\inf} |U_{\inf}|^2}
+            Cp_0 = \frac{p_0 - p_{\inf}}{0.5 \rho_{\inf} |\vec U_{\inf}|^2}
         \f]
 
     where
     \vartable
-        \rho        | Density [kg/m3]
-        U           | Velocity [m/s]
-        \rho_{\inf} | Freestream density [kg/m3]
-        p_{\inf}    | Freestream pressure [Pa]
-        U_{\inf}    | Freestream velocity [m/s]
-        p_k         | Kinematic pressure (p/rho)[m2/s2]
-        p_s         | Statoc pressure [Pa]
-        p_0         | Total pressure [Pa]
-        p_{ref}     | Reference pressure level [Pa]
-        p_i         | Total isentropic pressure
-        Cp          | Pressure coefficient
-        Cp_0        | Total pressure coefficient
+      \rho        | Density [kg/m3]
+      \vec U      | Velocity [m/s]
+      \rho_{\inf} | Freestream density [kg/m3]
+      p_{\inf}    | Freestream pressure [Pa]
+      U_{\inf}    | Freestream velocity [m/s]
+      p_k         | Kinematic pressure (p/rho)[m2/s2]
+      p_s         | Static pressure [Pa]
+      p_0         | Total pressure [Pa]
+      p_{ref}     | Reference pressure level [Pa]
+      p_i         | Total isentropic pressure
+      Cp          | Pressure coefficient
+      Cp_0        | Total pressure coefficient
+      \gamma      | Specific heat ratio
     \endvartable
 
     The function object will operate on both kinematic (\f$ p_k \f$) and static
-    pressure (\f$ p \f$) fields, and the result is written as a
-    volScalarField.
+    pressure (\f$ p \f$) fields.
+
+    Operands:
+    \table
+      Operand        | Type           | Location
+      input          | volScalarField | $FOAM_CASE/<time>/<inpField>
+      output file    | -              | -
+      output field   | volScalarField | $FOAM_CASE/<time>/<outField>
+    \endtable
 
 Usage
-    Example of function object specification to calculate pressure coefficient:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     pressure1
     {
-        type        pressure;
-        libs        (fieldFunctionObjects);
+        // Mandatory entries (unmodifiable)
+        type            pressure;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        mode            <option>;
+
+        // Optional entries (runtime modifiable)
+        p               <pName>;
+        U               <UName>;
+        rho             <rhoName>;
+        rhoInf          1.0; // enabled if rho=rhoInf
+        pRef            0.0;
+        hydroStaticMode none;
+        g               (0 -9.81 0); // enabled if hydroStaticMode != none
+        hRef            0.0;         // enabled if hydroStaticMode != none
+        pInf            0.0;
+        UInf            (1 0 0);
+
+        // Optional (inherited) entries
         ...
-        mode        staticCoeff;
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description                 | Required   | Default value
-        type         | type name: pressure         | yes        |
-        field        | Name of the pressure field  | no         | p
-        U            | Name of the velocity field  | no         | U
-        rho          | Name of the density field   | no         | rho
-        result       | Name of the resulting field | no         | derived from p
-        mode         | Calculation mode (see below) | yes       |
-        pRef         | Reference pressure for total pressure | no | 0
-        pInf         | Freestream pressure for coefficient calculation | no |
-        UInf         | Freestream velocity for coefficient calculation | no |
-        rhoInf       | Freestream density for coefficient calculation  | no |
-        hydrostaticMode | Hydrostatic contributions (see below) | no | none
-        g            | Gravity vector (see below) | no |
-        hRef         | Reference height (see below) | no |
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: pressure                | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      mode         | Calculation mode (see below)       | word |  yes  | -
+      p            | Name of the pressure field         | word |  no   | p
+      U            | Name of the velocity field         | word |  no   | U
+      rho          | Name of the density field          | word |  no   | rho
+      rhoInf | Freestream density for coefficient calculation | scalar <!--
+         --> | conditional| -
+      pRef         | Reference pressure for total pressure    | scalar | no | 0
+      hydrostaticMode | Hydrostatic contributions (see below) | word | no | none
+      g            | Gravity vector (see below)               | vector | no | -
+      hRef         | Reference height (see below)             | scalar | no | -
+      pInf | Freestream pressure for coefficient calculation  | scalar | no | -
+      UInf | Freestream velocity for coefficient calculation  | vector | no | -
     \endtable
 
-    The \c mode entry is used to select the type of pressure that is calculated.
-    Selections include:
-    - static
-    - total
-    - isentropic
-    - staticCoeff
-    - totalCoeff
+    Options for the \c mode entry:
+    \verbatim
+        static      | static pressure
+        total       | total pressure
+        isentropic  | isentropic pressure
+        staticCoeff | static pressure coefficient
+        totalCoeff  | total pressure coefficient
+    \endverbatim
 
     The optional \c hydrostaticMode entry provides handling for the term
     \f$ \rho (\vec{g} \dot \vec{h})\f$ where options include
-    - \c none : not included
-    - \c add : add the term, e.g. to convert from p_rgh to p
-    - \c subtract : subtract the term, e.g. to convert from p to p_rgh
+    \verbatim
+        none     | not included
+        add      | add the term, e.g. to convert from p_rgh to p
+        subtract | subtract the term, e.g. to convert from p to p_rgh
+    \endverbatim
 
     If the \c hydrostaticMode is active, values are also required for
     gravity, \c g, and reference height, \c hRef.  By default these will be
@@ -128,10 +157,17 @@ Usage
         hRef        0;
     \endverbatim
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fieldExpression
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::pressure
 
 SourceFiles
     pressure.C
@@ -191,7 +227,7 @@ public:
 
 private:
 
-    // Private data
+    // Private Data
 
         //- Calculation mode
         mode mode_;
@@ -199,10 +235,10 @@ private:
         //- Hydrostatic constribution mode
         hydrostaticMode hydrostaticMode_;
 
-        //- Name of velocity field, default is "U"
+        //- Name of velocity field
         word UName_;
 
-        //- Name of density field, default is "rho"
+        //- Name of density field
         word rhoName_;
 
 
@@ -294,6 +330,12 @@ public:
             const dictionary&
         );
 
+        //- No copy construct
+        pressure(const pressure&) = delete;
+
+        //- No copy assignment
+        void operator=(const pressure&) = delete;
+
 
     //- Destructor
     virtual ~pressure() = default;
diff --git a/src/functionObjects/field/processorField/processorField.C b/src/functionObjects/field/processorField/processorField.C
index 95bb2e0b2b6..f1388c08708 100644
--- a/src/functionObjects/field/processorField/processorField.C
+++ b/src/functionObjects/field/processorField/processorField.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -75,12 +76,6 @@ Foam::functionObjects::processorField::processorField
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::processorField::~processorField()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::processorField::read(const dictionary& dict)
diff --git a/src/functionObjects/field/processorField/processorField.H b/src/functionObjects/field/processorField/processorField.H
index 662362baf6a..d4f04e88c96 100644
--- a/src/functionObjects/field/processorField/processorField.H
+++ b/src/functionObjects/field/processorField/processorField.H
@@ -32,28 +32,49 @@ Group
 
 Description
     Writes a scalar field whose value is the local processor ID.  The output
-    field name is 'processorID'.
+    field name is \c processorID.
+
+    Operands:
+    \table
+      Operand        | Type           | Location
+      input          | volScalarField | $FOAM_CASE/\<time\>/\<inpField\>
+      output file    | -              | -
+      output field   | volScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     processorField1
     {
+        // Mandatory entries (unmodifiable)
         type        processorField;
         libs        (fieldFunctionObjects);
+
+        // Optional (inherited) entries
         ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | type name: processorField | yes       |
-        log          | Log to standard output  | no          | yes
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: processorField          | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func processorField
+    \endverbatim
+
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::processorField
 
 SourceFiles
     processorField.C
@@ -80,21 +101,6 @@ class processorField
 :
     public fvMeshFunctionObject
 {
-
-        //- Result name
-        word resultName_;
-
-        //- Switch to send output to Info as well as to file
-        Switch log_;
-    // Private member functions
-
-        //- No copy construct
-        processorField(const processorField&) = delete;
-
-        //- No copy assignment
-        void operator=(const processorField&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -111,9 +117,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        processorField(const processorField&) = delete;
+
+        //- No copy assignment
+        void operator=(const processorField&) = delete;
+
 
     //- Destructor
-    virtual ~processorField();
+    virtual ~processorField() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/proudmanAcousticPower/proudmanAcousticPower.C b/src/functionObjects/field/proudmanAcousticPower/proudmanAcousticPower.C
index 4077b78801a..563268fa9d7 100644
--- a/src/functionObjects/field/proudmanAcousticPower/proudmanAcousticPower.C
+++ b/src/functionObjects/field/proudmanAcousticPower/proudmanAcousticPower.C
@@ -115,9 +115,9 @@ Foam::functionObjects::proudmanAcousticPower::proudmanAcousticPower
 )
 :
     fvMeshFunctionObject(name, runTime, dict),
+    alphaEps_(0.1),
     rhoInf_("0", dimDensity, -1),
-    aRef_(dimVelocity, Zero),
-    alphaEps_(0.1)
+    aRef_(dimVelocity, Zero)
 {
     read(dict);
 
@@ -167,9 +167,9 @@ bool Foam::functionObjects::proudmanAcousticPower::read(const dictionary& dict)
 {
     if (fvMeshFunctionObject::read(dict))
     {
+        dict.readIfPresent("alphaEps", alphaEps_);
         rhoInf_.readIfPresent("rhoInf", dict);
         aRef_.readIfPresent("aRef", dict);
-        dict.readIfPresent("alphaEps", alphaEps_);
 
         return true;
     }
diff --git a/src/functionObjects/field/proudmanAcousticPower/proudmanAcousticPower.H b/src/functionObjects/field/proudmanAcousticPower/proudmanAcousticPower.H
index d934b0ecfc9..d2c4299607c 100644
--- a/src/functionObjects/field/proudmanAcousticPower/proudmanAcousticPower.H
+++ b/src/functionObjects/field/proudmanAcousticPower/proudmanAcousticPower.H
@@ -30,17 +30,18 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the acoustic power due to the volume of isotropic turbulence
-    using Proudman's formula
+    Computes the acoustic power due to the volume of isotropic turbulence
+    using Proudman's formula.
 
-    The acoustic power \f$ P_A \f$ [W/m3] in terms of turbulence \f$ k \f$
-    and \f$ \epsilon \f$ is given as:
+    The acoustic power, i.e. \f$ P_A \f$ [\f$W/m^3\f$], in terms of turbulent
+    kinetic energy, i.e. \f$ k \f$, and turbulent kinetic energy dissipation
+    rate, i.e. \f$ \epsilon \f$, is given as:
 
         \f[
-            P_A = alpha_\epsilon \rho \epsilon M_t^5
+            P_A = \alpha_\epsilon \rho \epsilon M_t^5
         \f]
 
-    where \f$ alpha_\epsilon \f$ is a constant (0.1) and
+    where \f$ \alpha_\epsilon = 0.1 \f$ is a constant and
 
         \f[
             M_t = \frac{\sqrt{2 k}}{a_0}
@@ -50,43 +51,65 @@ Description
     dB using:
 
         \f[
-            L_P = 10 \log \frac{P_A}{P_ref}
+            L_P = 10 \log \frac{P_A}{P_{ref}}
         \f]
 
-    where \f$ P_ref \f$ is a constant (1e-12 W/m3)
+    where \f$ P_{ref} = 1e^{-12} \f$ [\f$W/m^3\f$] is a constant.
+
+    Operands:
+    \table
+      Operand        | Type           | Location
+      input          | volScalarField | $FOAM_CASE/\<time\>/\<inpField\>
+      output file    | -              | -
+      output field   | volScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
 Usage
-    Example of function object specification to calculate the Proudman acoustic
-    power:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     proudmanAcousticPower1
     {
+        // Mandatory entries (unmodifiable)
         type        proudmanAcousticPower;
         libs        (fieldFunctionObjects);
-        ...
 
-        // Required additional entries for incompressible calculations
+        // Optional entries (runtime modifiable)
+        alphaEps    0.1;
+        // For incompressible flow simulations
         rhoInf      1.225;
         aRef        340;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property | Description                              | Required | Default
-        type     | type name: proudmanAcousticPower         | yes |
-        rhoInf   | Freestream density (for incompressible)  | no  |
-        aRef     | Reference speed of sound (for incompressible) | no  |
-        alphaEps | Model coefficient                        | no  | 0.1
+      Property     | Description                         | Type | Req'd | Dflt
+      type         | Type name: proudmanAcousticPower    | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects  | word |  yes  | -
+      rhoInf       | Freestream density (for incompressible) | scalar <!--
+               --> | conditional | -
+      aRef         | Speed of sound (incompressible)     | scalar <!--
+               --> | conditional | -
+      alphaEps     | Empirical model coefficient         | scalar | no | 0.1
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 Note
     The freestream density and reference speed of sound are only necessary
     when a thermodynamics package is unavailable, typically for incompressible
     cases.
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::proudmanAcousticPower
 
 SourceFiles
     proudmanAcousticPower.C
@@ -114,19 +137,17 @@ class proudmanAcousticPower
 :
     public fvMeshFunctionObject
 {
-private:
-
     // Private Data
 
+        //- Empirical model coefficient
+        scalar alphaEps_;
+
         //- Freestream density (incompressible calcs only)
         dimensionedScalar rhoInf_;
 
         //- Reference speed of sound (incompressible calcs only)
         dimensionedScalar aRef_;
 
-        //- Model coefficient; default = 0.1
-        scalar alphaEps_;
-
 
     // Private Member Functions
 
@@ -153,6 +174,12 @@ public:
             const dictionary&
         );
 
+        //- No copy construct
+        proudmanAcousticPower(const proudmanAcousticPower&) = delete;
+
+        //- No copy assignment
+        void operator=(const proudmanAcousticPower&) = delete;
+
 
     //- Destructor
     virtual ~proudmanAcousticPower() = default;
diff --git a/src/functionObjects/field/randomise/randomise.C b/src/functionObjects/field/randomise/randomise.C
index a9df1671bdb..219d1a7a48f 100644
--- a/src/functionObjects/field/randomise/randomise.C
+++ b/src/functionObjects/field/randomise/randomise.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -71,12 +72,6 @@ Foam::functionObjects::randomise::randomise
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::randomise::~randomise()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::randomise::read(const dictionary& dict)
diff --git a/src/functionObjects/field/randomise/randomise.H b/src/functionObjects/field/randomise/randomise.H
index 01232d373f5..5ee9330d2b1 100644
--- a/src/functionObjects/field/randomise/randomise.H
+++ b/src/functionObjects/field/randomise/randomise.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -30,15 +31,66 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Adds a random component to a field, with a specified perturbation magnitude.
-
-    The operation can be applied to any volume field.
+    Adds a random component to an input field,
+    with a specified perturbation magnitude.
+
+    Operands:
+    \table
+      Operand        | Type             | Location
+      input          | vol\<Type\>Field | $FOAM_CASE/\<time\>/\<inpField\>
+      output file    | -                | -
+      output field   | vol\<Type\>Field | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    randomise1
+    {
+        // Mandatory entries (unmodifiable)
+        type            randomise;
+        libs            (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        magPerturbation 0.1;
+
+        // Mandatory (inherited) entries (runtime modifiable)
+        field           <field>;
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property     | Description                          | Type | Req'd | Dflt
+      type         | Type name: randomise                 | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects   | word |  yes  | -
+      magPerturbation | The magnitude of the perturbation | scalar |  yes  | -
+      field        | Name of the operand field            | word   |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func "randomise(<field>)"
+    \endverbatim
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fieldExpression
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::randomise
 
 SourceFiles
     randomise.C
+    randomiseTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -62,7 +114,7 @@ class randomise
 :
     public fieldExpression
 {
-    // Private member data
+    // Private Data
 
         //- The magnitude of the perturbation
         scalar magPerturbation_;
@@ -94,9 +146,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        randomise(const randomise&) = delete;
+
+        //- No copy assignment
+        void operator=(const randomise&) = delete;
+
 
     //- Destructor
-    virtual ~randomise();
+    virtual ~randomise() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.C b/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.C
index 47470859e0e..878ed42ea43 100644
--- a/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.C
+++ b/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -182,14 +182,14 @@ reactionsSensitivityAnalysis
 :
     fvMeshFunctionObject(name, runTime, dict),
     writeFile(mesh_, name),
+    nReactions_(0),
+    startTime_(0),
+    endTime_(0),
     production_(0),
     consumption_(0),
     productionInt_(0),
     consumptionInt_(0),
-    startTime_(0),
-    endTime_(0),
     speciesNames_(),
-    nReactions_(0),
     prodFilePtr_(),
     consFilePtr_(),
     prodIntFilePtr_(),
@@ -249,14 +249,6 @@ reactionsSensitivityAnalysis
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-template<class chemistryType>
-Foam::functionObjects::reactionsSensitivityAnalysis<chemistryType>::
-~reactionsSensitivityAnalysis()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class chemistryType>
@@ -267,6 +259,7 @@ bool Foam::functionObjects::reactionsSensitivityAnalysis<chemistryType>::read
 {
     fvMeshFunctionObject::read(dict);
     writeFile::read(dict);
+
     return true;
 }
 
diff --git a/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.H b/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.H
index 424da7ba82f..3bf944407f6 100644
--- a/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.H
+++ b/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -30,19 +30,64 @@ Group
     grpFieldFunctionObjects grpThermophysicalFunctionObjects
 
 Description
-    This function object creates four data files named:
-
-    - "consumption"    :   consumption rate
-    - "production"     :   destruction rate
-    - "productionInt"  :   integral between dumps of the production rate
-    - "consumptionInt" :   integral between dumps of the consumption rate
-
-    The function object indicates reaction rates of creation or destruction
+    Computes indicators for reaction rates of creation or destruction
     of species in each reaction.
 
+    This function object creates four data files named:
+
+    - \c consumption   :   consumption rate
+    - \c production    :   destruction rate
+    - \c productionInt  :   integral between dumps of the production rate
+    - \c consumptionInt :   integral between dumps of the consumption rate
+
+    Operands:
+    \table
+      Operand        | Type | Location
+      input          | -    | -
+      output file    | dat  | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field   | -    | -
+    \endtable
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    reactionSensitivityAnalysis1
+    {
+        // Mandatory entries (unmodifiable)
+        type            reactionSensitivityAnalysis;
+        libs            (fieldFunctionObjects);
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property  | Description                             | Type | Req'd | Dflt
+      type      | Type name: reactionSensitivityAnalysis  | word |  yes  | -
+      libs      | Library name: fieldFunctionObjects      | word |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
+Note
+    - Function object only applicable to single cell cases.
+    - Needs a \c chemistryModel chosen.
+
+See also
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::reactionsSensitivityAnalysis
 
 SourceFiles
     reactionsSensitivityAnalysis.C
+    reactionsSensitivityAnalysisObjects.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -72,9 +117,17 @@ class reactionsSensitivityAnalysis
 :
     public fvMeshFunctionObject,
     public writeFile
-
 {
-    // Private data
+    // Private Data
+
+        //- Number of reactions
+        label nReactions_;
+
+        //- Start time of integration
+        scalar startTime_;
+
+        //- End time of integration
+        scalar endTime_;
 
         //- List list for species production
         scalarListList production_;
@@ -88,19 +141,9 @@ class reactionsSensitivityAnalysis
         //- List list for species consumption integral
         scalarListList consumptionInt_;
 
-        //- Start time of integration
-        scalar startTime_;
-
-        //- End time of integration
-        scalar endTime_;
-
         //- Word list of species
         wordList speciesNames_;
 
-        //-Number of reactions
-        label nReactions_;
-
-
          // File streams
 
             //- Integrated coefficients
@@ -116,10 +159,8 @@ class reactionsSensitivityAnalysis
             autoPtr<OFstream> consIntFilePtr_;
 
 
-
     // Private Member Functions
 
-
         //- Create file names for forces and bins
         void createFileNames();
 
@@ -133,16 +174,6 @@ class reactionsSensitivityAnalysis
         void writeSpeciesRR();
 
 
-        //- No copy construct
-        reactionsSensitivityAnalysis
-        (
-            const reactionsSensitivityAnalysis&
-        ) = delete;
-
-        //- No copy assignment
-        void operator=(const reactionsSensitivityAnalysis&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -159,9 +190,18 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        reactionsSensitivityAnalysis
+        (
+            const reactionsSensitivityAnalysis&
+        ) = delete;
+
+        //- No copy assignment
+        void operator=(const reactionsSensitivityAnalysis&) = delete;
+
 
     //- Destructor
-    virtual ~reactionsSensitivityAnalysis();
+    virtual ~reactionsSensitivityAnalysis() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/readFields/readFields.C b/src/functionObjects/field/readFields/readFields.C
index 188d0eec301..888d45221a3 100644
--- a/src/functionObjects/field/readFields/readFields.C
+++ b/src/functionObjects/field/readFields/readFields.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2017 OpenCFD Ltd.
+    Copyright (C) 2017-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -53,8 +53,8 @@ Foam::functionObjects::readFields::readFields
 )
 :
     fvMeshFunctionObject(name, runTime, dict),
-    fieldSet_(),
-    readOnStart_(true)
+    readOnStart_(true),
+    fieldSet_()
 {
     read(dict);
 
@@ -65,20 +65,14 @@ Foam::functionObjects::readFields::readFields
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::readFields::~readFields()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::readFields::read(const dictionary& dict)
 {
     fvMeshFunctionObject::read(dict);
 
-    dict.readEntry("fields", fieldSet_);
     dict.readIfPresent("readOnStart", readOnStart_);
+    dict.readEntry("fields", fieldSet_);
 
     return true;
 }
diff --git a/src/functionObjects/field/readFields/readFields.H b/src/functionObjects/field/readFields/readFields.H
index f53fff37f92..feb521a75ca 100644
--- a/src/functionObjects/field/readFields/readFields.H
+++ b/src/functionObjects/field/readFields/readFields.H
@@ -12,7 +12,7 @@ License
     This file is part of OpenFOAM.
 
     OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
+    under the terms of the GNU General Public L2020icense as published by
     the Free Software Foundation, either version 3 of the License, or
     (at your option) any later version.
 
@@ -34,32 +34,58 @@ Description
     Reads fields from the time directories and adds them to the mesh database
     for further post-processing.
 
+    Operands:
+    \table
+      Operand        | Type             | Location
+      input          | vol\<Type\>Field | $FOAM_CASE/\<time\>/\<inpField\>
+      output file    | -                | -
+      output field   | vol\<Type\>Field | Mesh database
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
+
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     readFields1
     {
+        // Mandatory entries (unmodifiable)
         type        readFields;
         libs        (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        fields      (<field1> <field2> ... <fieldN>);
+
+        // Optional entries (runtime modifiable)
+        readOnStart true;
+
+        // Optional (inherited) entries
         ...
-        fields      (U p);
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | type name: readFields   | yes         |
-        fields       | list of fields to read  |  no         |
-        readOnStart  | flag to start reading on start-up | no  | yes
-        log          | Log to standard output  | no          | yes
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: readFields              | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      fields       | Names of the operand fields        | wordList |  yes  | -
+      readOnStart  | Flag to start reading on start-up  | bool | no    | true
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::readFields
 
 SourceFiles
     readFields.C
+    readFieldsTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -87,32 +113,22 @@ class readFields
 {
 protected:
 
-    // Protected data
-
-        //- Fields to load
-        wordList fieldSet_;
+    // Protected Data
 
         //- Flag to read on construction
         bool readOnStart_;
 
+        //- Fields to load
+        wordList fieldSet_;
+
 
     // Protected Member Functions
 
+        //- Load field
         template<class Type>
         bool loadField(const word&);
 
 
-private:
-
-    // Private member functions
-
-        //- No copy construct
-        readFields(const readFields&) = delete;
-
-        //- No copy assignment
-        void operator=(const readFields&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -130,9 +146,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        readFields(const readFields&) = delete;
+
+        //- No copy assignment
+        void operator=(const readFields&) = delete;
+
 
     //- Destructor
-    virtual ~readFields();
+    virtual ~readFields() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/reference/reference.C b/src/functionObjects/field/reference/reference.C
index d1c54e288b9..d9177443de5 100644
--- a/src/functionObjects/field/reference/reference.C
+++ b/src/functionObjects/field/reference/reference.C
@@ -35,13 +35,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(reference, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        reference,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, reference, dictionary);
 }
 }
 
@@ -60,7 +54,6 @@ bool Foam::functionObjects::reference::calc()
 
     Log << endl;
 
-
     return returnReduce(processed, orOp<bool>());
 }
 
@@ -75,12 +68,12 @@ Foam::functionObjects::reference::reference
 )
 :
     fieldExpression(name, runTime, dict),
-    localDict_(dict),
-    position_(Zero),
     positionIsSet_(false),
     celli_(-1),
     interpolationScheme_("cell"),
-    scale_(1)
+    scale_(1),
+    localDict_(dict),
+    position_(Zero)
 {
     read(dict);
 
@@ -89,11 +82,7 @@ Foam::functionObjects::reference::reference
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::reference::~reference()
-{}
-
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::reference::read(const dictionary& dict)
 {
diff --git a/src/functionObjects/field/reference/reference.H b/src/functionObjects/field/reference/reference.H
index eb7cc258ea2..1c35615bffc 100644
--- a/src/functionObjects/field/reference/reference.H
+++ b/src/functionObjects/field/reference/reference.H
@@ -30,59 +30,85 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates and outputs a field whose values are offset to a reference
+    Computes a field whose values are offset to a reference
     value obtained by sampling the field at a user-specified location.
 
     The field values are calculated using:
 
     \f[
-        ref_c = s(f_{c}(t) - f_p + f_{off})
+        r_c = s(f_{c}(t) - f_p + f_{off})
     \f]
 
     where
     \vartable
-        ref_c    | field values at cell
-        s        | optional scale factor (default = 1)
-        f_{c}(t) | current field values at cell at this time
-        f_p      | field value at position
-        f_{off}  | offset field value (default = 0)
+        r_c             | field values at cell
+        s               | optional scale factor (default = 1)
+        f_{c}(t)        | current field values at cell at this time
+        f_p             | field value at position
+        f_{off}         | offset field value (default = 0)
     \endvartable
 
+    Operands:
+    \table
+      Operand       | Type                       | Location
+      input         | {vol,surface}\<Type\>Field <!--
+                --> | $FOAM_CASE/\<time\>/\<inpField\>
+      output file   | -                          | -
+      output field  | {vol,surface}\<Type\>Field <!--
+                --> | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
+
 Usage
-    Example of function object specification to calculate the reference field:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    pRef
+    reference1
     {
+        // Mandatory entries (unmodifiable)
         type        reference;
         libs        (fieldFunctionObjects);
-        ...
-        field       p;
-        result      pRef;
+
+        // Mandatory (inherited) entry (runtime modifiable)
+        field       <field>;
+
+        // Optional entries (runtime modifiable)
         position    (0 0 0);
-        scale       1.2;
-        offset      100000;
+        scale       1.0;
+        offset      0.0;
+        interpolationScheme    cell;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
     Where the entries comprise:
     \table
-        Property     | Description             | Required | Default value
-        type         | Type name: reference    | yes      |
-        field        | Name of field           | yes      |
-        result       | Name of result field    | no       | reference(\<field\>)
-        position     | Position to sample      | no       | \<not used\>
-        scale        | Scale value             | no       | 1
-        offset       | Offset value            | no       | zero
-        log          | Log to standard output  | no       | yes
+        Property     | Description                | Type | Req'd | Dflt
+        type         | Type name: reference       | word | yes   | -
+        field        | Name of the operand field  | word | yes   | -
+        position     | Position to sample         | vector | no  | \<not used\>
+        scale        | Scale value                | scalar | no  | 1.0
+        offset       | Offset value               | scalar | no  | 0.0
+        interpolationScheme  | Sampling scheme    | word   | no  | cell
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::reference
 
 SourceFiles
     reference.C
+    referenceTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -107,13 +133,7 @@ class reference
 :
     public fieldExpression
 {
-    // Private data
-
-        //- Local copy of dictionary used for construction
-        dictionary localDict_;
-
-        //- Sample location
-        point position_;
+    // Private Data
 
         //- Flag to indicate that the position is set
         bool positionIsSet_;
@@ -127,6 +147,12 @@ class reference
         //- Scale factor
         scalar scale_;
 
+        //- Local copy of dictionary used for construction
+        dictionary localDict_;
+
+        //- Sample location
+        point position_;
+
 
     // Private Member Functions
 
@@ -154,9 +180,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        reference(const reference&) = delete;
+
+        //- No copy assignment
+        void operator=(const reference&) = delete;
+
 
     //- Destructor
-    virtual ~reference();
+    virtual ~reference() = default;
 
 
     // Public Member Functions
diff --git a/src/functionObjects/field/reference/referenceTemplates.C b/src/functionObjects/field/reference/referenceTemplates.C
index 011381e2fd8..cda6bc56d08 100644
--- a/src/functionObjects/field/reference/referenceTemplates.C
+++ b/src/functionObjects/field/reference/referenceTemplates.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2018-2019 OpenCFD Ltd.
+    Copyright (C) 2018-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -27,6 +27,8 @@ License
 
 #include "interpolation.H"
 
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
 template<class Type>
 bool Foam::functionObjects::reference::calcType()
 {
diff --git a/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C b/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C
index bb14c5e4eb9..6375a4ca73a 100644
--- a/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C
+++ b/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C
@@ -37,7 +37,6 @@ namespace Foam
     namespace functionObjects
     {
         defineTypeNameAndDebug(regionSizeDistribution, 0);
-
         addToRunTimeSelectionTable
         (
             functionObject,
@@ -81,7 +80,7 @@ void Foam::functionObjects::regionSizeDistribution::writeAlphaFields
     const volScalarField& alpha
 ) const
 {
-    const scalar maxDropletVol = 1.0/6.0*pow(maxDiam_, 3);
+    const scalar maxDropletVol = 1.0/6.0*pow3(maxDiam_);
 
     // Split alpha field
     // ~~~~~~~~~~~~~~~~~
@@ -328,12 +327,6 @@ Foam::functionObjects::regionSizeDistribution::regionSizeDistribution
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::regionSizeDistribution::~regionSizeDistribution()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::regionSizeDistribution::read(const dictionary& dict)
@@ -341,13 +334,13 @@ bool Foam::functionObjects::regionSizeDistribution::read(const dictionary& dict)
     fvMeshFunctionObject::read(dict);
     writeFile::read(dict);
 
+    dict.readEntry("nBins", nBins_);
     dict.readEntry("field", alphaName_);
-    dict.readEntry("patches", patchNames_);
     dict.readEntry("threshold", threshold_);
     dict.readEntry("maxDiameter", maxDiam_);
     minDiam_ = 0.0;
     dict.readIfPresent("minDiameter", minDiam_);
-    dict.readEntry("nBins", nBins_);
+    dict.readEntry("patches", patchNames_);
     dict.readEntry("fields", fields_);
 
     const word format(dict.get<word>("setFormat"));
@@ -372,7 +365,7 @@ bool Foam::functionObjects::regionSizeDistribution::read(const dictionary& dict)
     {
          dict.readEntry("origin", origin_);
          dict.readEntry("direction", direction_);
-         dict.readEntry("maxDiameter", maxDiameter_);
+         dict.readEntry("maxD", maxDiameter_);
          dict.readEntry("nDownstreamBins", nDownstreamBins_);
          dict.readEntry("maxDownstream", maxDownstream_);
          direction_.normalise();
diff --git a/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H b/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H
index 3d946509506..0e10b1633e1 100644
--- a/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H
+++ b/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H
@@ -31,8 +31,8 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Creates a size distribution via interrogating a continuous phase fraction
-    field.
+    Creates a droplet size distribution via interrogating a continuous phase
+    fraction field.
 
     Looks up a phase-fraction (alpha) field and splits the mesh into regions
     based on where the field is below the threshold value.  These
@@ -50,7 +50,7 @@ Description
     - alpha_liquidCore : alpha with outside liquid core set to 0
     - alpha_background : alpha with outside background set to 0.
 
-    %Histogram:
+    Histogram:
     - determine histogram of diameter (given minDiameter, maxDiameter, nBins)
     - write graph of number of droplets per bin
     - write graph of sum, average and deviation of droplet volume per bin
@@ -60,40 +60,57 @@ Description
       downstream of the injector determined by origin, direction and maxDiameter
       up to maxDownstream
 
+    Operands:
+    \table
+      Operand           | Type              | Location
+      input             | -                 | -
+      output file       | -                 <!--
+                    --> | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<files\>
+      output field      | -                 | -
+    \endtable
+
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     regionSizeDistribution1
     {
+        // Mandatory entries (unmodifiable)
         type            regionSizeDistribution;
         libs            (fieldFunctionObjects);
-        ...
+
+        // Mandatory entries (runtime modifiable)
         field           alpha;
         patches         (inlet);
-        threshold       0.4;
         fields          (p U);
+        threshold       0.4;
+        maxDiameter     5e-5;
         nBins           100;
-        maxDiameter     0.5e-4;
-        minDiameter     0;
         setFormat       gnuplot;
-        origin          (0 0 0);
-        coordinateRoation
+
+        // Optional entries (runtime modifiable)
+        minDiameter     0.0;
+        coordinateSystem
         {
-            type            cartesian;
-            e3              (0 1 1);
-            e1              (1 0 0);
+            origin  (0 0 0);
+            rotation
+            {
+                type    axes;
+                e3      (0 0 1);
+                e1      (1 0 0);
+            }
         }
 
-        // Optional downstream iso-plane bins.
+        // Optional downstream iso-plane bins
         isoPlanes       true;
 
+            // Mandatory entries if isoPlanes=true   (runtime modifiable)
             // Plane normal and point definition
-            direction       (1 0 1);
             origin          (1e-4 0 5e-4);
+            direction       (1 0 1);
 
             // Maximum diameter of the cylinder formed by the origin point
             // and direction
-            maxDiameter     3e-4;
+            maxD            3e-4;
 
             // Maximum downstream distance
             maxDownstream   6e-4;
@@ -101,41 +118,54 @@ Usage
             // Number of iso-plane bins
             nDownstreamBins 20;
 
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | type name: regionSizeDistribution |yes|
-        field        | phase field to interrogate | yes      |
-        patches      | patches from which the liquid core is identified | yes|
-        threshold    | phase fraction applied to delimit regions | yes |
-        fields       | fields to sample        | yes         |
-        nBins        | number of bins for histogram | yes    |
-        maxDiameter  | maximum region equivalent diameter | yes |
-        minDiameter  | minimum region equivalent diameter | no  | 0
-        setFormat    | writing format          | yes         |
-        origin       | origin of local coordinate system | yes    |
-        coordinateRoation | orientation of local coordinate system | no
-        log          | Log to standard output  | no          | yes
-        isoPlanes    | switch for isoPlanes    | no          | false
-        origin       | origin of the plane when isoPlanes is used | no | none
-        direction    | direction of the plane when isoPlanes is used | no | none
-        maxDiameter  | maximum diameter of the sampling cylinder when
-                       isoPlanes is used | no | none
-        nDownstreamBins  | number of bins when isoPlanes is used | no | none
-        maxDownstream  | maximum distance from origin when isoPlanes is used
-                       | no | none
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: regionSizeDistribution  | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      field        | Phase field to interrogate         | word |  yes  | -
+      patches      | Patches wherefrom the liquid core is identified <!--
+                                                    --> | wordList | yes | -
+      fields     | Fields to sample                     | wordList | yes | -
+      threshold  | Phase fraction applied to delimit regions | scalar | yes | -
+      maxDiameter  | Maximum droplet diameter           | scalar | yes | -
+      minDiameter  | Minimum droplet diameter           | scalar | no  | 0.0
+      nBins        | Number of bins for histogram       | label  | yes | -
+      setFormat    | Output format                      | word   | yes | -
+      isoPlanes    | Flag for isoPlanes                 | bool | no    | false
+      origin       | Origin of the plane when isoPlanes is used <!--
+                                                    --> | vector | yes | -
+      direction   <!--
+      --> | Direction of the plane when isoPlanes is used | vector | yes | -
+      maxD        | Maximum diameter of the sampling <!--
+                --> cylinder when isoPlanes is used     | vector | yes | -
+      nDownstreamBins  <!--
+      --> | Number of bins when isoPlanes is used       | label | yes  | -
+      maxDownstream  <!--
+      --> | Maximum distance from origin when isoPlanes is used <!--
+                                                    --> | scalar | yes | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
 See also
-    Foam::functionObject
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::regionSizeDistribution
 
 SourceFiles
     regionSizeDistribution.C
+    regionSizeDistributionTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -156,7 +186,6 @@ SourceFiles
 namespace Foam
 {
 
-// Forward declaration of classes
 class regionSplit;
 
 namespace functionObjects
@@ -171,17 +200,14 @@ class regionSizeDistribution
     public fvMeshFunctionObject,
     public writeFile
 {
-    // Private data
+    // Private Data
+
+        //- Number of bins
+        label nBins_;
 
         //- Name of field
         word alphaName_;
 
-        //- Patches to walk from
-        wordRes patchNames_;
-
-        //- Switch to send output to Info as well as to file
-        Switch log_;
-
         //- Clip value
         scalar threshold_;
 
@@ -191,8 +217,8 @@ class regionSizeDistribution
         //- Minimum droplet diameter
         scalar minDiam_;
 
-        //- Number of bins
-        label nBins_;
+        //- Patches to walk from
+        wordRes patchNames_;
 
         //- Names of fields to sample on regions
         wordRes fields_;
@@ -206,9 +232,6 @@ class regionSizeDistribution
         // Optional extra definition of bins on planes downstream to the origin
         // point and maximum diameter
 
-            //- Switch to enable iso-planes sampling
-            bool isoPlanes_;
-
             //- Optional origin point
             vector origin_;
 
@@ -224,6 +247,9 @@ class regionSizeDistribution
             //- Optional maximum downstream coordinate from origin
             scalar maxDownstream_;
 
+            //- Switch to enable iso-planes sampling
+            bool isoPlanes_;
+
 
     // Private Member Functions
 
@@ -242,7 +268,7 @@ class regionSizeDistribution
         ) const;
 
         //- Write volfields with the parts of alpha which are not
-        //  droplets (liquidCore, backGround)
+        //- droplets (liquidCore, backGround)
         void writeAlphaFields
         (
             const regionSplit& regions,
@@ -272,22 +298,14 @@ class regionSizeDistribution
         (
             const word& fieldName,              // name of field
             const scalarField& cellField,       // per cell field data
-
             const regionSplit& regions,         // per cell the region(=droplet)
             const labelList& sortedRegions,     // valid regions in sorted order
             const scalarField& sortedNormalisation,
-
             const labelList& indices,           // index of bin for each region
             const scalarField& binCount,        // per bin number of regions
             const coordSet& coords              // graph data for bins
         ) const;
 
-        //- No copy construct
-        regionSizeDistribution(const regionSizeDistribution&) = delete;
-
-        //- No copy assignment
-        void operator=(const regionSizeDistribution&) = delete;
-
 
 public:
 
@@ -306,10 +324,15 @@ public:
             const dictionary&
         );
 
+        //- No copy construct
+        regionSizeDistribution(const regionSizeDistribution&) = delete;
 
-    // Destructor
+        //- No copy assignment
+        void operator=(const regionSizeDistribution&) = delete;
 
-        virtual ~regionSizeDistribution();
+
+    // Destructor
+    virtual ~regionSizeDistribution() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/setFlow/setFlow.C b/src/functionObjects/field/setFlow/setFlow.C
index 4bd08a05bbd..ede4083de60 100644
--- a/src/functionObjects/field/setFlow/setFlow.C
+++ b/src/functionObjects/field/setFlow/setFlow.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2017 OpenCFD Ltd.
+    Copyright (C) 2017-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -39,13 +39,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(setFlow, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        setFlow,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, setFlow, dictionary);
 }
 }
 
@@ -111,10 +105,10 @@ Foam::functionObjects::setFlow::setFlow
 )
 :
     fvMeshFunctionObject(name, runTime, dict),
+    mode_(modeType::FUNCTION),
     UName_("U"),
     rhoName_("none"),
     phiName_("phi"),
-    mode_(modeType::FUNCTION),
     reverseTime_(VGREAT),
     scalePtr_(nullptr),
     origin_(Zero),
@@ -126,12 +120,6 @@ Foam::functionObjects::setFlow::setFlow
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::setFlow::~setFlow()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::setFlow::read(const dictionary& dict)
diff --git a/src/functionObjects/field/setFlow/setFlow.H b/src/functionObjects/field/setFlow/setFlow.H
index 658ed918154..16bba138f0a 100644
--- a/src/functionObjects/field/setFlow/setFlow.H
+++ b/src/functionObjects/field/setFlow/setFlow.H
@@ -30,50 +30,104 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Provides options to set the velocity and flux fields as a function of time
+    Provides options to set the velocity and flux fields as a function of time.
 
     Useful for testing advection behaviour of numerical schemes by e.g.
     imposing solid body rotation, vortex flows.  All types include a scaling
-    Foam::Function1 type enabling the strength of the transformation to vary as
-    a function of time.
+    \c Function1 type enabling the strength of the transformation to vary
+    as a function of time.
+
+    Operands:
+    \table
+      Operand       | Type                       | Location
+      input         | {vol,surface}\<Type\>Field <!--
+                --> | $FOAM_CASE/\<time\>/\<inpField\>
+      output file   | -                          | -
+      output field  | {vol,surface}\<Type\>Field <!--
+                --> | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     setFlow1
     {
-        type            setFlow;
-        libs            (fieldFunctionObjects);
+        // Mandatory entries (unmodifiable)
+        type        setFlow;
+        libs        (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        mode        rotation;
+        scale       1;
+
+        // Optional entries (runtime modifiable)
+        U           U;
+        rho         none;
+        phi         phi;
+        reverseTime 1;
+
+        // When mode=function
+        velocity    (1 0 0);
+
+        // When mode=rotation
+        omega       6.28318530718;
+        origin      (0.5 0 0.5);
+        refDir      (1 0 0);
+        axis        (0 1 0);
+
+        // When mode=(vortex2D|vortex3D)
+        origin      (0.5 0 0.5);
+        refDir      (1 0 0);
+        axis        (0 1 0);
+
+        // Optional (inherited) entries
         ...
-        mode            rotation;
-        scale           1;
-        reverseTime     1;
-        omega           6.28318530718;
-        origin          (0.5 0 0.5);
-        refDir          (1 0 0);
-        axis            (0 1 0);
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description                | Required | Default value
-        type         | Type name: setFlow         | yes      |
-        U            | Name of velocity field     | no       | U
-        rho          | Name of density field      | no       | none
-        phi          | Name of flux field         | no       | phi
-        mode         | operating mode - see below | yes      |
+      Property     | Description                         | Type | Req'd | Dflt
+      type         | Type name: readFields               | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects  | word |  yes  | -
+      mode         | Operating mode - see below          | word |  yes  | -
+      scale        | Scaling function        | Function1<scalar> | yes  | -
+      U            | Name of velocity field              | word |  no   | U
+      rho          | Name of density field               | word |  no   | none
+      phi          | Name of flux field                  | word |  no   | phi
+      reverseTime  <!--
+      --> | Specified time to reverse flow direction     | scalar  | no | VGREAT
+      velocity     <!--
+      --> | Velocity function           | Function1<vector> | conditional | -
+      omega        <!--
+      --> | Rotational speed function   | Function1<scalar> | conditional | -
+      origin       <!--
+      --> | Rotation vector origin      | vector            | conditional | -
+      refDir       <!--
+      --> | Rotation vector reference direction   | vector  | conditional | -
+      axis         <!--
+      --> | Rotation vector axis                  | vector  | conditional | -
     \endtable
 
-    Available \c mode types include:
-    - function
-    - rortation
-    - vortex2D
-    - vortex3D
+    Options for the \c mode entry:
+    \verbatim
+      function
+      rotation
+      vortex2D
+      vortex3D
+    \endverbatim
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
 
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::setFlow
 
 SourceFiles
     setFlow.C
@@ -104,31 +158,35 @@ class setFlow
 :
     public fvMeshFunctionObject
 {
-    enum class modeType
-    {
-        FUNCTION,
-        ROTATION,
-        VORTEX2D,
-        VORTEX3D
-    };
+    // Private Enumerations
+
+        //- Options for the operating mode
+        enum class modeType
+        {
+            FUNCTION,
+            ROTATION,
+            VORTEX2D,
+            VORTEX3D
+        };
 
-   static const Enum<modeType> modeTypeNames;
+        //- Names for modeType
+        static const Enum<modeType> modeTypeNames;
 
 
    // Private Data
 
-        //- Name of velocity field, default = "U"
+        //- Operating mode
+        modeType mode_;
+
+        //- Name of velocity field
         word UName_;
 
-        //- Name of density field, default = "none"
+        //- Name of density field
         word rhoName_;
 
-        //- Name of flux field, default = "phi"
+        //- Name of flux field
         word phiName_;
 
-        //- Operating mode
-        modeType mode_;
-
         //- Reverse time
         scalar reverseTime_;
 
@@ -176,16 +234,27 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        setFlow(const setFlow&) = delete;
+
+        //- No copy assignment
+        void operator=(const setFlow&) = delete;
+
 
     //- Destructor
-    virtual ~setFlow();
+    virtual ~setFlow() = default;
+
 
+    // Member Functions
 
-    virtual bool read(const dictionary& dict);
+        //- Read the setFlow data
+        virtual bool read(const dictionary& dict);
 
-    virtual bool execute();
+        //- Do nothing
+        virtual bool execute();
 
-    virtual bool write();
+        //- Calculate the setFlow and write
+        virtual bool write();
 };
 
 
diff --git a/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C b/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C
index 0a0d5321f38..67a49ebf570 100644
--- a/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C
+++ b/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C
@@ -454,21 +454,21 @@ Foam::functionObjects::stabilityBlendingFactor::stabilityBlendingFactor
 
     maxNonOrthogonality_
     (
-        dict.getOrDefault<scalar>("maxNonOrthogonality", 20)
+        dict.getOrDefault<scalar>("maxNonOrthogonality", 20.0)
     ),
     minNonOrthogonality_
     (
-        dict.getOrDefault<scalar>("minNonOrthogonality", 60)
+        dict.getOrDefault<scalar>("minNonOrthogonality", 60.0)
     ),
-    maxGradCc_(dict.getOrDefault<scalar>("maxGradCc", 3)),
-    minGradCc_(dict.getOrDefault<scalar>("minGradCc", 4)),
-    maxResidual_(dict.getOrDefault<scalar>("maxResidual", 10)),
+    maxGradCc_(dict.getOrDefault<scalar>("maxGradCc", 3.0)),
+    minGradCc_(dict.getOrDefault<scalar>("minGradCc", 4.0)),
+    maxResidual_(dict.getOrDefault<scalar>("maxResidual", 10.0)),
     minFaceWeight_(dict.getOrDefault<scalar>("minFaceWeight", 0.3)),
     maxFaceWeight_(dict.getOrDefault<scalar>("maxFaceWeight", 0.2)),
-    maxSkewness_(dict.getOrDefault<scalar>("maxSkewness", 2)),
-    minSkewness_(dict.getOrDefault<scalar>("minSkewness", 3)),
-    Co1_(dict.getOrDefault<scalar>("Co1", 1)),
-    Co2_(dict.getOrDefault<scalar>("Co2", 10)),
+    maxSkewness_(dict.getOrDefault<scalar>("maxSkewness", 2.0)),
+    minSkewness_(dict.getOrDefault<scalar>("minSkewness", 3.0)),
+    Co1_(dict.getOrDefault<scalar>("Co1", 1.0)),
+    Co2_(dict.getOrDefault<scalar>("Co2", 10.0)),
 
     nonOrthogonalityName_
     (
@@ -497,7 +497,7 @@ Foam::functionObjects::stabilityBlendingFactor::stabilityBlendingFactor
     oldError_(mesh_.nCells(), Zero),
     oldErrorIntegral_(mesh_.nCells(), Zero),
     P_(dict.getOrDefault<scalar>("P", 3)),
-    I_(dict.getOrDefault<scalar>("I", 0)),
+    I_(dict.getOrDefault<scalar>("I", 0.0)),
     D_(dict.getOrDefault<scalar>("D", 0.25))
 {
     read(dict);
@@ -627,12 +627,6 @@ Foam::functionObjects::stabilityBlendingFactor::stabilityBlendingFactor
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::stabilityBlendingFactor::~stabilityBlendingFactor()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::stabilityBlendingFactor::read
diff --git a/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.H b/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.H
index 01366b72513..579ad13c0ba 100644
--- a/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.H
+++ b/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.H
@@ -30,126 +30,132 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates and outputs the stabilityBlendingFactor to be used by the
+    Computes the \c stabilityBlendingFactor to be used by the
     local blended convection scheme. The output is a surface field weight
-    between 0-1
+    between 0-1.
 
-    The weight of a blended scheme is given by a function of the blending
-    factor, f:
+    The weight of a blended scheme, i.e. \c w, is given by a function of
+    the blending factor, \c f:
 
     \f[
-        weight = f scheme1 + (1 - f) scheme2
+        w = f_{scheme_1} + (1 - f_{scheme_2})
     \f]
 
     The factor is calculated based on six criteria:
-
-    1) mesh non-orthogonality field
-    2) magnitude of cell centres gradient
-    3) convergence rate of residuals
-    4) faceWeight
-    5) skewness
-    6) Co number
+    \verbatim
+      1. mesh non-orthogonality field
+      2. magnitude of cell centres gradient
+      3. convergence rate of residuals
+      4. faceWeight
+      5. skewness
+      6. Courant number
+    \endverbatim
 
     The user can enable them individually.
 
-    For option 1, the following relation is used:
-        \f[
-            fNon =
-                min
-                (
-                    max
-                    (
-                        0.0,
-                        (nonOrthogonality - maxNonOrthogonality)
-                       /(minNonOrthogonality - maxNonOrthogonality)
-                    ),
-                    1.0
-                )
-        \f]
-
-    For option 2, the following relation is used:
-        \f[
-            fMagGradCc =
-                min
-                (
-                    max
-                    (
-                        0.0,
-                        (magGradCC - maxGradCc)
-                      / (minGradCc - maxGradCc)
-                    ),
-                    1.0
-                )
-        \f]
-    Note that  magGradCC is equal to 3 for ortoghonal meshes
-
-    For option 3 a PID control is used in order to control residual
-    unbouded fluctuations for individual cells.
-
-        \f[
-            factor =
-                P*residual
-              + I*residualIntegral
-              + D*residualDifferential
-        \f]
-
-        where P, I and D are user inputs
-
-    The following relation is used:
+    For option 1, the following relation is used, where \f$\phi_1\f$ is
+    the non-orthogonality:
     \f[
-        fRes = (factor - meanRes)/(maxRes*meanRes);
-    \f]
-
-        where:
-            meanRes = average(residual)
-            maxRes is an user input
-
-
-    fRes will blend more towards one as the cell residual is larger then
-    the domain mean residuals.
-
-
-    For option 4 , the following relation is used:
-
-        \f[
-            ffaceWeight = min
+        fNon =
+            min
             (
                 max
                 (
                     0.0,
-                    (minFaceWeight - faceWeights)
-                  / (minFaceWeight - maxFaceWeight)
+                    (\phi_1 - max(\phi_1))
+                    /(min(\phi_1) - max(\phi_1))
                 ),
                 1.0
             )
-        \f]
-    Note that faceWeights for a orthogonal mesh is 0.5.
-
+    \f]
 
-    For option 5 , the following relation is used:
+    For option 2, the following relation is used, where \f$\phi_2\f$ is
+    the magnitude of cell centres gradient (Note that \f$\phi_2 = 3\f$
+    for orthogonal meshes):
 
-        \f[
-            fskewness =
+    \f[
+        fMagGradCc =
             min
             (
                 max
                 (
                     0.0,
-                    (skewness    - maxSkewness)
-                  / (minSkewness - maxSkewness)
+                    (\phi_2 - max(\phi_2))
+                    / (min(\phi_2) - max(\phi_2))
                 ),
                 1.0
             )
-        \f]
+    \f]
+
+    For option 3, a PID control is used in order to control residual
+    unbounded fluctuations for individual cells.
 
+    \f[
+        factor =
+            P*residual
+            + I*residualIntegral
+            + D*residualDifferential
+    \f]
 
-    For option 6 , the following relation is used:
+    where \c P, \c I and \c D are user inputs.
 
+    The following relation is used:
     \f[
-        fCoWeight = min(max((Co - Co1)/(Co2 - Co1), 0), 1)
+        fRes = (factor - meanRes)/(maxRes*meanRes);
     \f]
+
     where
+    \vartable
+        meanRes | Average(residual)
+        maxRes  | User input
+    \endvartable
+
+    Note that \f$f_{Res}\f$ will blend more towards one as
+    the cell residual is larger then the domain mean residuals.
+
+
+    For option 4, the following relation is used, where \f$\phi_4\f$ is
+    the face weight (Note that \f$\phi_4 = 0.5\f$ for orthogonal meshes):
+
+    \f[
+        ffaceWeight = min
+        (
+            max
+            (
+                0.0,
+                (min(\phi_4) - \phi_4)
+                / (min(\phi_4) - max(\phi_4))
+            ),
+            1.0
+        )
+    \f]
+
+
+    For option 5, the following relation is used, where \f$\phi_5\f$ is
+    the cell skewness:
+
+    \f[
+        fskewness =
+        min
+        (
+            max
+            (
+                0.0,
+                (\phi_5    - max(\phi_5))
+                / (min(\phi_5) - max(\phi_5))
+            ),
+            1.0
+        )
+    \f]
+
+
+    For option 6, the following relation is used:
 
+    \f[
+        fCoWeight = min(max((Co - Co1)/(Co2 - Co1), 0), 1)
+    \f]
+
+    where
     \vartable
         Co1 | Courant number below which scheme2 is used
         Co2 | Courant number above which scheme1 is used
@@ -161,136 +167,148 @@ Description
         f = max(fNon, fMagGradCc, fRes, ffaceWeight, fskewness, fCoWeight)
     \f]
 
-    An indicator (volume) field, named blendedIndicator is generated if the log
-    flag is on:
+    An indicator (volume) field, named \c blendedIndicator
+    is generated if the log flag is on:
     - 1 represent scheme1 as active,
     - 0 represent scheme2 as active.
 
     Additional reporting is written to the standard output, providing
     statistics as to the number of cells used by each scheme.
 
+    Operands:
+    \table
+      Operand        | Type           | Location
+      input          | -              | -
+      output file    | dat | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field   | volScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
 Usage
-    Example of function object specification to calculate the blending factor:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     stabilityBlendingFactor1
     {
+        // Mandatory entries (unmodifiable)
         type                stabilityBlendingFactor;
         libs                (fieldFunctionObjects);
 
-        log                 true;
-        writeToFile         false;
+        // Mandatory entries (unmodifiable)
+        field               <field>;    // U;
+        result              <outField>; // UBlendingFactor;
+
+        // Optional entries (runtime modifiable)
+        tolerance           0.001;
 
-        switchNonOrtho      yes;
-        switchGradCc        no;
-        switchResiduals     yes;
-        switchFaceWeight    no;
-        switchSkewness      no;
-        switchCo            no;
+        // Any of the options can be chosen in combinations
 
+        // Option-1
+        switchNonOrtho      true;
+        nonOrthogonality    nonOrthoAngle;
         maxNonOrthogonality 20;
         minNonOrthogonality 60;
 
+        // Option-2
+        switchGradCc        true;
         maxGradCc           3;
         minGradCc           4;
 
-        maxFaceWeight       0.3;
-        minFaceWeight       0.2;
-
-        maxSkewness         2;
-        minSkewness         3;
-
+        // Option-3
+        switchResiduals     true;
         maxResidual         10;
-
-        result              UBlendingFactor;
         residual            initialResidual:p;
         P                   1.5;
         I                   0;
         D                   0.5;
 
+        // Option-4
+        switchFaceWeight    true;
+        maxFaceWeight       0.3;
+        minFaceWeight       0.2;
+
+        // Option-5
+        switchSkewness      true;
+        maxSkewness         2;
+        minSkewness         3;
+
+        // Option-6
+        switchCo            true;
+        U                   U;
         Co1                 1;
         Co2                 10;
+
+        // Optional (inherited) entries
         ...
-        ...
-        field               U;
     }
+    \endverbatim
 
-    Example of function object specification to calculate the residuals used
-    by stabilityBlendingFactor. The following writes 'initialResidual:p'
+    Example of function object specification to calculate the \c residuals used
+    by \c stabilityBlendingFactor. The following writes 'initialResidual:p'
     field
-
-        residuals
-        {
-            type            residuals;
-            libs            (utilityFunctionObjects);
-            writeFields     true;
-            writeControl    outputTime;
-            fields          (p);
-        }
-
+    \verbatim
+    residuals
+    {
+        type            residuals;
+        libs            (utilityFunctionObjects);
+        writeFields     true;
+        writeControl    writeTime;
+        fields          (p);
+    }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | Type name: stabilityBlendingFactor | yes       |
-
-        log          | Log to standard output  | no          | yes
-        writeToFile  | Log to file             | no          | yes
-
-        switchNonOrtho | non-orthogonal method | no | false
-        switchGradCc | cell centre gradient method   | no | false
-        switchResiduals | residual evolution method   | no | false
-        switchFaceWeight | face weight method | no    | false
-        switchSkewness | skewness method | no    | false
-        switchCo       | Co blended |  no        | false
-
-        maxNonOrthogonality| maximum non-orthogonal for scheme2 | no | 20
-        minNonOrthogonality| minimum non-orthogonal for scheme1 | no | 60
-
-        maxGradCc| maximum gradient for scheme2 | no | 2
-        minGradCc| minimum gradient for scheme1 | no | 4
-
-        maxResidual| maximum residual-mean ratio for scheme1 | no | 10
-        P       |   proportional factor for PID     | no | 3
-        I       |   integral factor for PID         | no | 0
-        D       |   differential factor for PID     | no | 0.25
-
-        maxFaceWeight | maximum face weight for scheme1 | no | 0.2
-        minFaceWeight | minimum face weight for scheme2 | no | 0.3
-
-        maxSkewness | maximum skewness for scheme2 | no | 2
-        minSkewness | minimum skewness for scheme1 | no | 3
-
-
-        faceWeight | Name of the faceWeight field | no | faceWeight
-        skewness | Name of the skewness field | no | skewness
-        nonOrthogonality | Name of the non-orthogonal field | no |
-            nonOrthoAngle
-        residual    | Name of the residual field | no | initialResidual:p
-        U           | Name of the flux field for Co blended | no | U
-
-
-        Co1 | Courant number below which scheme2 is used | no | 1
-        Co2 | Courant number above which scheme1 is used | no | 10
-
-
-        tolerance    | Tolerance for number of blended cells | no | 0.001
-        field        | Name of field to evaluate | yes       |
-        result    | Name of surface field to be used in the localBlended scheme
-        | yes |
+      Property     | Description                           | Type | Req'd | Dflt
+      type         | Type name: stabilityBlendingFactor    | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects    | word |  yes  | -
+      field        | Name of operand field                 | word |  yes  | -
+      result  | Name of surface field to be used in the localBlended scheme <!--
+          --> | word | yes
+      switchNonOrtho | Select non-orthogonal method        | bool | no | false
+      nonOrthogonality | Name of the non-orthogonal field  <!--
+                   --> | word | no | nonOrthoAngle
+      maxNonOrthogonality| Maximum non-orthogonal for scheme2 | scalar | no | 20
+      minNonOrthogonality| Minimum non-orthogonal for scheme1 | scalar | no | 60
+      switchGradCc | Select cell centre gradient method    | bool | no | false
+      maxGradCc| Maximum gradient for scheme2              | scalar | no | 2
+      minGradCc| Minimum gradient for scheme1              | scalar | no | 4
+      switchResiduals | Select residual evolution method   | bool | no | false
+      residual    | Name of the residual field | word | no | initialResidual:p
+      maxResidual| Maximum residual-mean ratio for scheme1 | scalar | no | 10
+      P       | Proportional factor for PID                | scalar | no | 3
+      I       | Integral factor for PID                    | scalar | no | 0
+      D       | Differential factor for PID                | scalar | no | 0.25
+      switchFaceWeight | Select face weight method         | bool | no | false
+      faceWeight | Name of the faceWeight field       | word | no | faceWeight
+      maxFaceWeight | Maximum face weight for scheme1      | scalar | no | 0.2
+      minFaceWeight | Minimum face weight for scheme2      | scalar | no | 0.3
+      switchSkewness   | Select skewness method            | bool | no | false
+      skewness | Name of the skewness field           | word | no | skewness
+      maxSkewness | Maximum skewness for scheme2           | scalar | no | 2
+      minSkewness | Minimum skewness for scheme1           | scalar | no | 3
+      switchCo         | Select Co blended method          | bool | no | false
+      U   | Name of the flux field for Co blended          | word | no | U
+      Co1 | Courant number below which scheme2 is used     | scalar | no | 1
+      Co2 | Courant number above which scheme1 is used     | scalar | no | 10
+      tolerance    | Tolerance for number of blended cells | scalar | no | 0.001
     \endtable
 
-    The 'log' flag true write the number of cells on each scheme, plus it
-    writes the field name "blendedIndicator".
+    The \c result entry is the field which is read by the \c localBlended scheme
+    specified in \c fvSchemes. This name is determined by the \c localBlended
+    class.
 
-    The 'result' entry is the field which is read by the localBlended scheme
-    specified in fvSchemes. This name is determined by the localBlended class.
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+     - \link writeFile.H \endlink
 
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
+    - Foam::functionObject
+    - Foam::functionObjects::fieldExpression
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::stabilityBlendingFactor
 
 SourceFiles
     stabilityBlendingFactor.C
@@ -320,7 +338,7 @@ class stabilityBlendingFactor
     public fieldExpression,
     public writeFile
 {
-    // Private member data
+    // Private Member Data
 
         //- Cell based blended indicator
         volScalarField indicator_;
@@ -384,7 +402,7 @@ class stabilityBlendingFactor
 
         // File names
 
-            //- Name of the non-orthogonalit field
+            //- Name of the non-orthogonality field
             word nonOrthogonalityName_;
 
             //- Name of the face weight field
@@ -456,9 +474,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        stabilityBlendingFactor(const stabilityBlendingFactor&) = delete;
+
+        //- No copy assignment
+        void operator=(const stabilityBlendingFactor&) = delete;
+
 
     //- Destructor
-    virtual ~stabilityBlendingFactor();
+    virtual ~stabilityBlendingFactor() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/streamFunction/streamFunction.C b/src/functionObjects/field/streamFunction/streamFunction.C
index 9294ec17c3e..9bcd7a68eab 100644
--- a/src/functionObjects/field/streamFunction/streamFunction.C
+++ b/src/functionObjects/field/streamFunction/streamFunction.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -42,13 +42,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(streamFunction, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        streamFunction,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, streamFunction, dictionary);
 }
 }
 
@@ -435,7 +429,7 @@ Foam::functionObjects::streamFunction::streamFunction
 {
     setResultName(typeName, "phi");
 
-    label nD = mesh_.nGeometricD();
+    const label nD = mesh_.nGeometricD();
 
     if (nD != 2)
     {
@@ -446,10 +440,4 @@ Foam::functionObjects::streamFunction::streamFunction
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::streamFunction::~streamFunction()
-{}
-
-
 // ************************************************************************* //
diff --git a/src/functionObjects/field/streamFunction/streamFunction.H b/src/functionObjects/field/streamFunction/streamFunction.H
index 25e501856c1..5dfd007ffac 100644
--- a/src/functionObjects/field/streamFunction/streamFunction.H
+++ b/src/functionObjects/field/streamFunction/streamFunction.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -30,12 +31,51 @@ Group
     grpFieldFunctionObjects
 
 Description
-    This function object calculates and outputs the stream-function as a
-    pointScalarField.
+    Computes the stream function (i.e. https://w.wiki/Ncm).
+
+    Operands:
+    \table
+      Operand        | Type                   | Location
+      input          | surfaceScalarField     | $FOAM_CASE/\<time\>/\<inpField\>
+      output file    | -                      | -
+      output field   | pointScalarField       | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+Usage
+    Minimal example by using \c system/controlDict.functions:
+    \verbatim
+    streamFunction1
+    {
+        // Mandatory entries (unmodifiable)
+        type        streamFunction;
+        libs        (fieldFunctionObjects);
+
+        // Optional (inherited) entries
+        ...
+    }
+    \endverbatim
+
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: streamFunction          | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func streamFunction
+    \endverbatim
 
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fieldExpression
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::streamFunction
 
 SourceFiles
     streamFunction.C
@@ -66,7 +106,8 @@ class streamFunction
 {
     // Private Member Functions
 
-    tmp<pointScalarField> calc(const surfaceScalarField& phi) const;
+        //- Return the stream function field
+        tmp<pointScalarField> calc(const surfaceScalarField& phi) const;
 
         //- Calculate the stream-function and return true if successful
         virtual bool calc();
@@ -89,9 +130,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        streamFunction(const streamFunction&) = delete;
+
+        //- No copy assignment
+        void operator=(const streamFunction&) = delete;
+
 
     //- Destructor
-    virtual ~streamFunction();
+    virtual ~streamFunction() = default;
 };
 
 
diff --git a/src/functionObjects/field/streamLine/streamLine.C b/src/functionObjects/field/streamLine/streamLine.C
index f19aea2ec4b..8cc0b59f609 100644
--- a/src/functionObjects/field/streamLine/streamLine.C
+++ b/src/functionObjects/field/streamLine/streamLine.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2015-2016 OpenCFD Ltd.
+    Copyright (C) 2015-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -150,12 +150,6 @@ Foam::functionObjects::streamLine::streamLine
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::streamLine::~streamLine()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::streamLine::read(const dictionary& dict)
diff --git a/src/functionObjects/field/streamLine/streamLine.H b/src/functionObjects/field/streamLine/streamLine.H
index fed75b085c0..73f2b19b610 100644
--- a/src/functionObjects/field/streamLine/streamLine.H
+++ b/src/functionObjects/field/streamLine/streamLine.H
@@ -34,77 +34,114 @@ Description
     Generates streamline data by sampling a set of user-specified fields along a
     particle track, transported by a user-specified velocity field.
 
+    Operands:
+    \table
+      Operand        | Type  | Location
+      input          | -     | -
+      output file    | -     <!--
+                 --> | $FOAM_CASE/postProcessing/sets/\<FO\>/\<time\>/\<file\>
+      output field   | -     | -
+    \endtable
+
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     streamLine1
     {
+        // Mandatory entries (unmodifiable)
         type            streamLine;
         libs            (fieldFunctionObjects);
 
-        writeControl    writeTime;
-
+        // Mandatory entries (runtime modifiable)
+        U               <fieldTrack>;
+        fields          (<fieldTrack> <field1> ... <fieldN>);
         setFormat       vtk;
-        U               U;
-        //Deprecated: trackForward    yes;
-        direction       bidirectional;    // or forward/backward
-
-        fields
-        (
-            U
-            p
-        );
-
+        direction       bidirectional;
         lifeTime        10000;
-        trackLength     1e-3;
-        nSubCycle       5;
-        bounds          (0.2 -10 -10)(0.22 10 10);
         cloud           particleTracks;
-
         seedSampleSet
         {
             type        uniform;
-            axis        x;  //distance;
+            axis        x;
             start       (-0.0205 0.0001 0.00001);
             end         (-0.0205 0.0005 0.00001);
             nPoints     100;
         }
+
+        // Optional entries (runtime modifiable)
+        bounds          (0.2 -10 -10)(0.22 10 10);
+        trackLength     1e-3;
+        nSubCycle       1;
+        interpolationScheme cellPoint;
+
+        // Deprecated
+        // trackForward true;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | Type name: streamLine   | yes         |
-        setFormat    | Output data type        | yes         |
-        U            | Tracking velocity field name | no     | U
-        fields       | Fields to sample        | yes         |
-        direction    | Direction to track    | yes         |
-        lifetime     | Maximum number of particle tracking steps | yes |
-        trackLength  | Tracking segment length | no          |
-        nSubCycle    | Number of tracking steps per cell | no|
-        cloud        | Cloud name to use       | yes         |
-        bounds       | Bounding box to trim tracks | no | invertedBox
-        seedSampleSet| Seeding method (see below)| yes       |
+      Property     | Description                           | Type | Req'd | Dflt
+      type         | Type name: streamLine                 | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects    | word |  yes  | -
+      U            | Name of tracking velocity field       | word |  yes  | -
+      fields       | Names of operand fields to sample     | wordList | yes | -
+      setFormat    | Type of output data                   | word |  yes  | -
+      direction    | Direction to track                    | vector | yes | -
+      lifetime     | Maximum number of particle tracking steps | label | yes | -
+      cloud        | Name of cloud                         | word |  yes  | -
+      seedSampleSet| Name of seeding method (see below)    | word |  yes  | -
+      bounds       | Bounding box to trim tracks    | vector | no | invertedBox
+      trackLength  | Tracking segment length              | scalar | no | VGREAT
+      nSubCycle    | Number of tracking steps per cell    | label  | no | 1
+      interpolationScheme | Interp. scheme for sample   | word | no | cellPoint
     \endtable
 
-    Where \c seedSampleSet \c type is typically one of
-    \plaintable
+    Options for the \c seedSampleSet entry:
+    \verbatim
         uniform | uniform particle seeding
         cloud   | cloud of points
         triSurfaceMeshPointSet | points according to a tri-surface mesh
-    \endplaintable
+    \endverbatim
+
+    Options for the \c setFormat entry:
+    \verbatim
+        csv
+        ensight
+        gnuplot
+        jplot
+        nastran
+        raw
+        vtk
+        xmgr
+    \endverbatim
+
+    Options for the \c direction entry:
+    \verbatim
+        bidirectional
+        forward
+        backward
+    \endverbatim
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 Note
-    When specifying the track resolution, the \c trackLength OR \c nSubCycle
-    option should be used
+    When specifying the track resolution, the \c trackLength or \c nSubCycle
+    option should be used.
 
 See also
-    Foam::functionObject
-    Foam::functionObjects::timeControl
-    Foam::sampledSet
-    Foam::wallBoundedStreamLine
-    Foam::streamLineBase
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::sampledSet
+    - Foam::wallBoundedStreamLine
+    - Foam::streamLineBase
+    - ExtendedCodeGuide::functionObjects::field::streamLine
 
 SourceFiles
     streamLine.C
@@ -135,21 +172,12 @@ class streamLine
 :
     public streamLineBase
 {
-    // Private data
+    // Private Data
 
         //- Number of subcycling steps
         label nSubCycle_;
 
 
-   // Private Member Functions
-
-        //- No copy construct
-        streamLine(const streamLine&) = delete;
-
-        //- No copy assignment
-        void operator=(const streamLine&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -166,9 +194,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        streamLine(const streamLine&) = delete;
+
+        //- No copy assignment
+        void operator=(const streamLine&) = delete;
+
 
     //- Destructor
-    virtual ~streamLine();
+    virtual ~streamLine() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/subtract/subtract.C b/src/functionObjects/field/subtract/subtract.C
index 4e08d3fe99b..cec785d8d32 100644
--- a/src/functionObjects/field/subtract/subtract.C
+++ b/src/functionObjects/field/subtract/subtract.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -63,10 +64,4 @@ Foam::functionObjects::subtract::subtract
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::subtract::~subtract()
-{}
-
-
 // ************************************************************************* //
diff --git a/src/functionObjects/field/subtract/subtract.H b/src/functionObjects/field/subtract/subtract.H
index 1d4a4c5d7ee..9e7e93fa67d 100644
--- a/src/functionObjects/field/subtract/subtract.H
+++ b/src/functionObjects/field/subtract/subtract.H
@@ -31,30 +31,69 @@ Group
     grpFieldFunctionObjects
 
 Description
-    From the first field subtract the remaining fields in the list.
+    Subtracts a given list of (at least one or more) fields from a field and
+    produces a new field, where the fields possess the same sizes and
+    dimensions.
 
-    The operation can be applied to any volume or surface fields generating a
-    volume or surface scalar field.
+    \verbatim
+        fieldResult = field1 - field2 - ... - fieldN
+    \endverbatim
+
+    Operands:
+    \table
+      Operand      | Type                          | Location
+      input        | {vol,surface}\<Type\>Field(s) <!--
+               --> | $FOAM_CASE/\<time\>/\<inpField\>s
+      output file  | -                             | -
+      output field | {vol,surface}\<Type\>Field    <!--
+               --> | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
 
-    Example of function object specification:
+Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    Tdiff
+    subtract1
     {
+        // Mandatory entries (unmodifiable)
         type            subtract;
         libs            (fieldFunctionObjects);
-        fields          (T Tmean);
-        result          Tdiff;
-        executeControl  writeTime;
-        writeControl    writeTime;
+
+        // Mandatory (inherited) entry (runtime modifiable)
+        fields          (<field1> <field2> ... <fieldN>);
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
+    where the entries mean:
+    \table
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: subtract                | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
+      fields       | Names of the operand fields        | wordList |  yes  | -
+    \endtable
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldsExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func "subtract(<field1>, <field2>, ..., <fieldN>)"
+    \endverbatim
+
 See also
-    Foam::functionObjects::fieldsExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fieldsExpression
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::subtract
 
 SourceFiles
     subtract.C
+    subtractTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -81,7 +120,7 @@ class subtract
     // Private Member Functions
 
         //- Subtract the list of fields of the specified type
-        //  and return the result
+        //- and return the result
         template<class GeoFieldType>
         tmp<GeoFieldType> calcFieldType() const;
 
@@ -108,9 +147,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        subtract(const subtract&) = delete;
+
+        //- No copy assignment
+        void operator=(const subtract&) = delete;
+
 
     //- Destructor
-    virtual ~subtract();
+    virtual ~subtract() = default;
 };
 
 
diff --git a/src/functionObjects/field/subtract/subtractTemplates.C b/src/functionObjects/field/subtract/subtractTemplates.C
index 7c8b6d281a6..42b5d565860 100644
--- a/src/functionObjects/field/subtract/subtractTemplates.C
+++ b/src/functionObjects/field/subtract/subtractTemplates.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -37,7 +38,7 @@ Foam::functionObjects::subtract::calcFieldType() const
       - lookupObject<GeoFieldType>(fieldNames_[1])
     );
 
-    for (label i=2; i<fieldNames_.size(); i++)
+    for (label i = 2; i < fieldNames_.size(); ++i)
     {
         tresult.ref() -= lookupObject<GeoFieldType>(fieldNames_[i]);
     }
diff --git a/src/functionObjects/field/surfaceDistance/surfaceDistance.C b/src/functionObjects/field/surfaceDistance/surfaceDistance.C
index 4fbd2dec399..6f08a77b5e4 100644
--- a/src/functionObjects/field/surfaceDistance/surfaceDistance.C
+++ b/src/functionObjects/field/surfaceDistance/surfaceDistance.C
@@ -35,13 +35,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(surfaceDistance, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        surfaceDistance,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, surfaceDistance, dictionary);
 }
 }
 
@@ -80,12 +74,6 @@ Foam::functionObjects::surfaceDistance::surfaceDistance
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::surfaceDistance::~surfaceDistance()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::surfaceDistance::read
@@ -104,9 +92,9 @@ bool Foam::functionObjects::surfaceDistance::read
         (
             IOobject
             (
-                "abc",                              // dummy name
+                "abc",                             // dummy name
                 mesh_.time().constant(),           // directory
-                "triSurface",                       // instance
+                "triSurface",                      // instance
                 mesh_.time(),                      // registry
                 IOobject::MUST_READ,
                 IOobject::NO_WRITE
diff --git a/src/functionObjects/field/surfaceDistance/surfaceDistance.H b/src/functionObjects/field/surfaceDistance/surfaceDistance.H
index 2c0f7960a74..7126fc60039 100644
--- a/src/functionObjects/field/surfaceDistance/surfaceDistance.H
+++ b/src/functionObjects/field/surfaceDistance/surfaceDistance.H
@@ -30,17 +30,26 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Writes a scalar field whose value is the distance to the nearest surface.
-    The output field name is 'surfaceDistance'.
+    Computes the distance to the nearest surface from a given geometry.
+
+    Operands:
+    \table
+      Operand        | Type            | Location
+      input          | -               | -
+      output file    | -               | -
+      output field   | volScalarField  | $FOAM_CASE/\<time\>/surfaceDistance
+    \endtable
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    surfaceDistance
+    surfaceDistance1
     {
+        // Mandatory entries (unmodifiable)
         type            surfaceDistance;
         libs            (fieldFunctionObjects);
 
+        // Mandatory entries (runtime modifiable)
         geometry
         {
             motorBike.obj
@@ -49,25 +58,33 @@ Usage
                 name motorBike;
             }
         }
+
+        // Optional entries (runtime modifiable)
+        calculateCells  true;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description                  | Required | Default
-        type         | Type name: surfaceDistance   | yes |
-        geometry     | Surfaces                     | yes  | no
-        doCells      | Calculate distance from cell | no | true
+      Property     | Description                           | Type | Req'd | Dflt
+      type         | Type name: surfaceDistance            | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects    | word |  yes  | -
+      geometry     | Surface details                       | dict |  yes  | -
+      calculateCells  | Calculate distance from cell       | bool |  no   | true
     \endtable
 
-    Run with e.g.
-
-        postProcess -func surfaceDistance
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
 
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::timeControl
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::surfaceDistance
 
 SourceFiles
     surfaceDistance.C
@@ -104,7 +121,7 @@ class surfaceDistance
 {
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Switch to calculate distance-to-cells
         Switch doCells_;
@@ -113,17 +130,6 @@ protected:
         autoPtr<searchableSurfaces> geomPtr_;
 
 
-private:
-
-    // Private member functions
-
-        //- No copy construct
-        surfaceDistance(const surfaceDistance&) = delete;
-
-        //- No copy assignment
-        void operator=(const surfaceDistance&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -141,9 +147,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        surfaceDistance(const surfaceDistance&) = delete;
+
+        //- No copy assignment
+        void operator=(const surfaceDistance&) = delete;
+
 
     //- Destructor
-    virtual ~surfaceDistance();
+    virtual ~surfaceDistance() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/surfaceInterpolate/surfaceInterpolate.C b/src/functionObjects/field/surfaceInterpolate/surfaceInterpolate.C
index 891b065a307..0e3511b0959 100644
--- a/src/functionObjects/field/surfaceInterpolate/surfaceInterpolate.C
+++ b/src/functionObjects/field/surfaceInterpolate/surfaceInterpolate.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -37,13 +37,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(surfaceInterpolate, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        surfaceInterpolate,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, surfaceInterpolate, dictionary);
 }
 }
 
@@ -64,12 +58,6 @@ Foam::functionObjects::surfaceInterpolate::surfaceInterpolate
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::surfaceInterpolate::~surfaceInterpolate()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::surfaceInterpolate::read
@@ -95,7 +83,7 @@ bool Foam::functionObjects::surfaceInterpolate::execute()
     interpolateFields<symmTensor>();
     interpolateFields<tensor>();
 
-    Info<< endl;
+    Log << endl;
 
     return true;
 }
diff --git a/src/functionObjects/field/surfaceInterpolate/surfaceInterpolate.H b/src/functionObjects/field/surfaceInterpolate/surfaceInterpolate.H
index bff41b2aa65..c7ade799cbb 100644
--- a/src/functionObjects/field/surfaceInterpolate/surfaceInterpolate.H
+++ b/src/functionObjects/field/surfaceInterpolate/surfaceInterpolate.H
@@ -33,41 +33,54 @@ Group
 Description
     Linearly interpolates volume fields to generate surface fields.
 
-    Fields are stored
-    - every time step the field is updated with new values
-    - at output it writes the fields
+    Operands:
+    \table
+      Operand        | Type                  | Location
+      input          | vol\<Type\>Field      | $FOAM_CASE/\<time\>/\<inpField\>
+      output file    | -                     | -
+      output field   | surface\<Type\>Field  | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
-    This functionObject can either be used
-    - to calculate a new field as a  post-processing step or
-    - since the fields are registered, used in another functionObject
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     surfaceInterpolate1
     {
+        // Mandatory entries (unmodifiable)
         type        surfaceInterpolate;
         libs        (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        fields      ((<inpField1> <outField1>) ... (<inpFieldN> <outFieldN>));
+
+        // Optional (inherited) entries
         ...
-        fields      ((p pNear)(U UNear));
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property | Description               | Required    | Default value
-        type     | type name: nearWallFields | yes         |
-        fields   | list of fields with corresponding output field names | yes |
-        log      | Log to standard output    | no          | yes
+      Property     | Description                           | Type | Req'd | Dflt
+      type         | Type name: surfaceInterpolate         | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects    | word |  yes  | -
+      fields       | Names of operand and output fields    | wordList | yes | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::timeControl
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::surfaceInterpolate
 
 SourceFiles
     surfaceInterpolate.C
+    surfaceInterpolateTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -92,7 +105,7 @@ namespace functionObjects
 {
 
 /*---------------------------------------------------------------------------*\
-                  Class surfaceInterpolate Declaration
+                    Class surfaceInterpolate Declaration
 \*---------------------------------------------------------------------------*/
 
 class surfaceInterpolate
@@ -101,32 +114,19 @@ class surfaceInterpolate
 {
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Fields to process
         List<Tuple2<word, word>> fieldSet_;
 
-        //- Switch to send output to Info as well as to file
-        Switch log_;
-
 
     // Protected Member Functions
 
+        //- Linearly interpolate volume fields to generate surface fields
         template<class Type>
         void interpolateFields();
 
 
-private:
-
-    // Private member functions
-
-        //- No copy construct
-        surfaceInterpolate(const surfaceInterpolate&) = delete;
-
-        //- No copy assignment
-        void operator=(const surfaceInterpolate&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -144,9 +144,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        surfaceInterpolate(const surfaceInterpolate&) = delete;
+
+        //- No copy assignment
+        void operator=(const surfaceInterpolate&) = delete;
+
 
     //- Destructor
-    virtual ~surfaceInterpolate();
+    virtual ~surfaceInterpolate() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/turbulenceFields/turbulenceFields.C b/src/functionObjects/field/turbulenceFields/turbulenceFields.C
index f1590e2a88d..986ad7a958c 100644
--- a/src/functionObjects/field/turbulenceFields/turbulenceFields.C
+++ b/src/functionObjects/field/turbulenceFields/turbulenceFields.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2013-2016 OpenFOAM Foundation
-    Copyright (C) 2015-2018 OpenCFD Ltd.
+    Copyright (C) 2015-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -38,13 +38,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(turbulenceFields, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        turbulenceFields,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, turbulenceFields, dictionary);
 }
 }
 
@@ -88,7 +82,7 @@ Foam::functionObjects::turbulenceFields::incompressibleFieldNames_
 });
 
 
-const Foam::word Foam::functionObjects::turbulenceFields::modelName
+const Foam::word Foam::functionObjects::turbulenceFields::modelName_
 (
     Foam::turbulenceModel::propertiesName
 );
@@ -98,11 +92,11 @@ const Foam::word Foam::functionObjects::turbulenceFields::modelName
 
 bool Foam::functionObjects::turbulenceFields::compressible()
 {
-    if (obr_.foundObject<compressible::turbulenceModel>(modelName))
+    if (obr_.foundObject<compressible::turbulenceModel>(modelName_))
     {
         return true;
     }
-    else if (obr_.foundObject<incompressible::turbulenceModel>(modelName))
+    else if (obr_.foundObject<incompressible::turbulenceModel>(modelName_))
     {
         return false;
     }
@@ -131,12 +125,6 @@ Foam::functionObjects::turbulenceFields::turbulenceFields
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::turbulenceFields::~turbulenceFields()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::turbulenceFields::read(const dictionary& dict)
@@ -158,7 +146,7 @@ bool Foam::functionObjects::turbulenceFields::read(const dictionary& dict)
         Info<< "storing fields:" << nl;
         for (const word& f : fieldSet_)
         {
-            Info<< "    " << modelName << ':' << f << nl;
+            Info<< "    " << modelName_ << ':' << f << nl;
         }
         Info<< endl;
     }
@@ -178,7 +166,7 @@ bool Foam::functionObjects::turbulenceFields::execute()
     if (comp)
     {
         const compressible::turbulenceModel& model =
-            obr_.lookupObject<compressible::turbulenceModel>(modelName);
+            obr_.lookupObject<compressible::turbulenceModel>(modelName_);
 
         for (const word& f : fieldSet_)
         {
@@ -255,7 +243,7 @@ bool Foam::functionObjects::turbulenceFields::execute()
     else
     {
         const incompressible::turbulenceModel& model =
-            obr_.lookupObject<incompressible::turbulenceModel>(modelName);
+            obr_.lookupObject<incompressible::turbulenceModel>(modelName_);
 
         for (const word& f : fieldSet_)
         {
@@ -328,7 +316,7 @@ bool Foam::functionObjects::turbulenceFields::write()
 {
     for (const word& f : fieldSet_)
     {
-        const word fieldName = modelName + ':' + f;
+        const word fieldName = modelName_ + ':' + f;
         writeObject(fieldName);
     }
 
diff --git a/src/functionObjects/field/turbulenceFields/turbulenceFields.H b/src/functionObjects/field/turbulenceFields/turbulenceFields.H
index 1c290e4ba7f..773a93bbee0 100644
--- a/src/functionObjects/field/turbulenceFields/turbulenceFields.H
+++ b/src/functionObjects/field/turbulenceFields/turbulenceFields.H
@@ -31,63 +31,90 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Stores turbulence fields on the mesh database for further manipulation.
+    Computes various turbulence-related quantities that are not typically
+    output during calculations, and stores/writes them on the mesh database
+    for further manipulation.
 
     Fields are stored as copies of the original, with the prefix
-    "tubulenceModel:", e.g.:
+    "turbulenceModel:", e.g.:
 
     \verbatim
-    turbulenceModel:R
+      turbulenceModel:R
     \endverbatim
 
+    Operands:
+    \table
+      Operand           | Type             | Location
+      input             | -                | -
+      output file       | -                | -
+      output field      | vol\<Type\>Field | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/SymmTensor.
+
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     turbulenceFields1
     {
+        // Mandatory entries (unmodifiable)
         type        turbulenceFields;
         libs        (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        // Either field or fields entries
+        fields      (R devRhoReff);
+        field       R;
+
+        // Optional (inherited) entries
         ...
-        fields
-        (
-            R
-            devRhoReff
-        );
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description                 | Required | Default value
-        type         | type name: turbulenceFields | yes      |
-        fields       | fields to store (see below) | yes      |
+      Property     | Description                           | Type | Req'd | Dflt
+      type         | Type name: turbulenceFields           | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects    | word |  yes  | -
+      fields       | Names of fields to store (see below)  | wordList | yes | -
+      field        | Name of a field to store (see below)  | word | yes | -
     \endtable
 
-    Where \c fields can include:
-    \plaintable
-        k           | turbulence kinetic energy
-        epsilon     | turbulence kinetic energy dissipation rate
-        omega       | turbulence specific dissipation rate
-        nuTilda     | turbulence modified viscosity
-        nut         | turbulence viscosity (incompressible)
-        nuEff       | effective turbulence viscosity (incompressible)
-        mut         | turbulence viscosity (compressible)
-        muEff       | effective turbulence viscosity (compressible)
-        alphat      | turbulence thermal diffusivity (compressible)
-        alphaEff    | effective turbulence thermal diffusivity (compressible)
-        R           | Reynolds stress tensor
-        devReff     | Deviatoric part of the effective Reynolds stress
-        devRhoReff  | Divergence of the Reynolds stress
-        L           | turbulence length scale
-        I           | turbulence intensity
-    \endplaintable
+    where \c fields can include:
+    \verbatim
+      k           | turbulent kinetic energy
+      epsilon     | turbulent kinetic energy dissipation rate
+      omega       | specific dissipation rate
+      nuTilda     | modified turbulent viscosity
+      nut         | turbulent viscosity (incompressible)
+      nuEff       | effective turbulent viscosity (incompressible)
+      mut         | turbulent viscosity (compressible)
+      muEff       | effective turbulent viscosity (compressible)
+      alphat      | turbulence thermal diffusivity (compressible)
+      alphaEff    | effective turbulence thermal diffusivity (compressible)
+      R           | Reynolds stress tensor
+      devReff     | deviatoric part of the effective Reynolds stress
+      devRhoReff  | divergence of the Reynolds stress
+      L           | integral-length scale / mixing-length scale
+      I           | turbulence intensity
+    \endverbatim
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        <solver> -postProcess -func turbulenceFields
+    \endverbatim
 
 See also
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::timeControl
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::turbulenceFields
 
 SourceFiles
     turbulenceFields.C
+    turbulenceFieldsTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -117,44 +144,52 @@ class turbulenceFields
 {
 public:
 
-    enum compressibleField
-    {
-        cfK,
-        cfEpsilon,
-        cfOmega,
-        cfNuTilda,
-        cfMut,
-        cfMuEff,
-        cfAlphat,
-        cfAlphaEff,
-        cfR,
-        cfDevRhoReff,
-        cfL,
-        cfI
-    };
-    static const Enum<compressibleField> compressibleFieldNames_;
-
-    enum incompressibleField
-    {
-        ifK,
-        ifEpsilon,
-        ifOmega,
-        ifNuTilda,
-        ifNut,
-        ifNuEff,
-        ifR,
-        ifDevReff,
-        ifL,
-        ifI
-    };
-    static const Enum<incompressibleField> incompressibleFieldNames_;
-
-    static const word modelName;
-
+    // Public Enumerations
+
+        //- Options for the turbulence fields (compressible)
+        enum compressibleField
+        {
+            cfK,            //!< "Turbulent kinetic energy"
+            cfEpsilon,      //!< "Turbulent kinetic energy dissipation rate"
+            cfOmega,        //!< "Specific dissipation rate"
+            cfNuTilda,      //!< "Modified turbulent viscosity"
+            cfMut,          //!< "Turbulent viscosity"
+            cfMuEff,        //!< "Effective turbulent viscosity"
+            cfAlphat,       //!< "Turbulence thermal diffusivity"
+            cfAlphaEff,     //!< "Effective turbulence thermal diffusivity"
+            cfR,            //!< "Reynolds stress tensor"
+            cfDevRhoReff,   //!< "Divergence of the Reynolds stress"
+            cfL,            //!< "Integral-length/Mixing-length scale"
+            cfI             //!< "Turbulence intensity"
+        };
+
+        //- Names for compressibleField turbulence fields
+        static const Enum<compressibleField> compressibleFieldNames_;
+
+        //- Options for the turbulence fields (incompressible)
+        enum incompressibleField
+        {
+            ifK,            //!< "Turbulent kinetic energy"
+            ifEpsilon,      //!< "Turbulent kinetic energy dissipation rate"
+            ifOmega,        //!< "Specific dissipation rate"
+            ifNuTilda,      //!< "Modified turbulent viscosity"
+            ifNut,          //!< "Turbulent viscosity"
+            ifNuEff,        //!< "Effective turbulent viscosity"
+            ifR,            //!< "Reynolds stress tensor"
+            ifDevReff,   //!< "Deviatoric part of the effective Reynolds stress"
+            ifL,            //!< "Integral-length/Mixing-length scale"
+            ifI             //!< "Turbulence intensity"
+        };
+
+        //- Names for incompressibleField turbulence fields
+        static const Enum<incompressibleField> incompressibleFieldNames_;
+
+        //- Turbulence closure model name
+        static const word modelName_;
 
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Fields to load
         wordHashSet fieldSet_;
@@ -181,26 +216,15 @@ protected:
         template<class Model>
         tmp<volScalarField> nuTilda(const Model& model) const;
 
-        //- Return L calculated from k and epsilon
+        //- Return integral length scale, L, calculated from k and epsilon
         template<class Model>
         tmp<volScalarField> L(const Model& model) const;
 
-        //- Return I calculated from k and U
+        //- Return turbulence intensity, I, calculated from k and U
         template<class Model>
         tmp<volScalarField> I(const Model& model) const;
 
 
-private:
-
-    // Private member functions
-
-        //- No copy construct
-        turbulenceFields(const turbulenceFields&) = delete;
-
-        //- No copy assignment
-        void operator=(const turbulenceFields&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -217,9 +241,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        turbulenceFields(const turbulenceFields&) = delete;
+
+        //- No copy assignment
+        void operator=(const turbulenceFields&) = delete;
+
 
     //- Destructor
-    virtual ~turbulenceFields();
+    virtual ~turbulenceFields() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/turbulenceFields/turbulenceFieldsTemplates.C b/src/functionObjects/field/turbulenceFields/turbulenceFieldsTemplates.C
index d5e55d03ba6..5506a0b9fdd 100644
--- a/src/functionObjects/field/turbulenceFields/turbulenceFieldsTemplates.C
+++ b/src/functionObjects/field/turbulenceFields/turbulenceFieldsTemplates.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2012-2016 OpenFOAM Foundation
-    Copyright (C) 2018 OpenCFD Ltd.
+    Copyright (C) 2018-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -39,7 +39,7 @@ void Foam::functionObjects::turbulenceFields::processField
 {
     typedef GeometricField<Type, fvPatchField, volMesh> FieldType;
 
-    const word scopedName = modelName + ':' + fieldName;
+    const word scopedName = modelName_ + ':' + fieldName;
 
     FieldType* fldPtr = obr_.getObjectPtr<FieldType>(scopedName);
 
@@ -157,4 +157,5 @@ Foam::functionObjects::turbulenceFields::I
     );
 }
 
+
 // ************************************************************************* //
diff --git a/src/functionObjects/field/valueAverage/valueAverage.C b/src/functionObjects/field/valueAverage/valueAverage.C
index 2a23e9d9053..750b053dc79 100644
--- a/src/functionObjects/field/valueAverage/valueAverage.C
+++ b/src/functionObjects/field/valueAverage/valueAverage.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2015 OpenFOAM Foundation
-    Copyright (C) 2015-2017 OpenCFD Ltd.
+    Copyright (C) 2015-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -37,13 +37,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(valueAverage, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        valueAverage,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, valueAverage, dictionary);
 }
 }
 
@@ -99,12 +93,6 @@ Foam::functionObjects::valueAverage::valueAverage
 }
 
 
-// * * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * //
-
-Foam::functionObjects::valueAverage::~valueAverage()
-{}
-
-
 // * * * * * * * * * * * * * * Public Member Functions * * * * * * * * * * * //
 
 bool Foam::functionObjects::valueAverage::read(const dictionary& dict)
diff --git a/src/functionObjects/field/valueAverage/valueAverage.H b/src/functionObjects/field/valueAverage/valueAverage.H
index f72cb86daa5..1b639a8d086 100644
--- a/src/functionObjects/field/valueAverage/valueAverage.H
+++ b/src/functionObjects/field/valueAverage/valueAverage.H
@@ -31,42 +31,63 @@ Group
     grpFieldFunctionObjects
 
 Description
-    This function object calculates the average value from the output of
-    function objects that generate singular values.
+    Computes the ensemble- or time-based singular-value average values,
+    with optional windowing, from the output of function objects
+    that generate non-field type values (e.g. \c Cd of \c forceCoeffs or
+    \c momentum_x in \c momentum function objects).
+
+    Operands:
+    \table
+      Operand        | Type | Location
+      input          | -    | -
+      output file    | dat  | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field   | -    | -
+    \endtable
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     valueAverage1
     {
-        type        valueAverage;
-        libs        (fieldFunctionObjects);
+        // Mandatory entries (unmodifiable)
+        type              valueAverage;
+        libs              (fieldFunctionObjects);
+
+        // Mandatory entries (runtime modifiable)
+        functionObject    <FO>;                       // forceCoeffs1;
+        fields            (<field1> ... <fieldN>);    // (Cm Cd Cl);
+
+        // Optional entries (runtime modifiable)
+        resetOnRestart    false;
+        window            0.5;
+
+        // Optional (inherited) entries
         ...
-        writeToFile yes;
-        log         yes;
-        functionObject forceCoeffs1;
-        fields      (Cm Cd Cl);
-        window      0.5;
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | type name: valueAverage | yes         |
-        writeToFile  | write average data to file |  no      | yes
-        log          | write average data to standard output | no | yes
-        fields       | list of fields to process | yes       |
-        functionObject | Name of function object to retrieve data from | yes |
-        resetOnRestart | Reset the averaging on restart | no | no |
+      Property     | Description                           | Type | Req'd | Dflt
+      type         | Type name: valueAverage               | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects    | word |  yes  | -
+      functionObject | Name of function object to retrieve data | word | yes | -
+      fields       | Names of operand fields               | wordList | yes | -
+      resetOnRestart | Reset the averaging on restart      | bool | no | false
+      window       | Averaging window                    | scalar | no | VGREAT
     \endtable
 
-    Output data is written to the file \<timeDir\>/valueAverage.dat
+    The inherited entries are elaborated in:
+     - \link regionFunctionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 See also
-    Foam::functionObject
-    Foam::functionObjects::stateFunctionObject
-    Foam::functionObjects::writeFile
+    - Foam::functionObject
+    - Foam::functionObjects::stateFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::valueAverage
 
 SourceFiles
     valueAverage.C
@@ -98,7 +119,7 @@ class valueAverage
 {
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Name of function object to retrieve data from
         word functionObjectName_;
@@ -132,28 +153,32 @@ protected:
         //- Output file header information
         virtual void writeFileHeader(Ostream& os) const;
 
-        //- No copy construct
-        valueAverage(const valueAverage&) = delete;
-
-        //- No copy assignment
-        void operator=(const valueAverage&) = delete;
-
 
 public:
 
     //- Runtime type information
     TypeName("valueAverage");
 
-    //- Constructor
-    valueAverage
-    (
-        const word& name,
-        const Time& runTime,
-        const dictionary& dict
-    );
+
+    // Constructors
+
+        //- Construct from Time and dictionary
+        valueAverage
+        (
+            const word& name,
+            const Time& runTime,
+            const dictionary& dict
+        );
+
+        //- No copy construct
+        valueAverage(const valueAverage&) = delete;
+
+        //- No copy assignment
+        void operator=(const valueAverage&) = delete;
+
 
     //- Destructor
-    virtual ~valueAverage();
+    virtual ~valueAverage() = default;
 
 
     // Public Member Functions
diff --git a/src/functionObjects/field/vorticity/vorticity.C b/src/functionObjects/field/vorticity/vorticity.C
index 2ddb157a0ff..7329e2efcb2 100644
--- a/src/functionObjects/field/vorticity/vorticity.C
+++ b/src/functionObjects/field/vorticity/vorticity.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2014-2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -36,13 +37,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(vorticity, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        vorticity,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, vorticity, dictionary);
 }
 }
 
@@ -79,10 +74,4 @@ Foam::functionObjects::vorticity::vorticity
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::vorticity::~vorticity()
-{}
-
-
 // ************************************************************************* //
diff --git a/src/functionObjects/field/vorticity/vorticity.H b/src/functionObjects/field/vorticity/vorticity.H
index 51ef99c1c90..fc38fe517a5 100644
--- a/src/functionObjects/field/vorticity/vorticity.H
+++ b/src/functionObjects/field/vorticity/vorticity.H
@@ -31,33 +31,61 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Calculates the vorticity, the curl of the velocity.
+    Computes the vorticity, the curl of the velocity.
 
-    The field is stored on the mesh database so that it can be retrieved
-    and used for other applications.
+    \f[
+        \vec \omega = \nabla \times \vec U
+    \f]
+
+    where
+    \vartable
+        \vec \omega   | Vorticity vector    [1/s]
+        \vec U        | Velocity vector     [m/s]
+    \endvartable
+
+    Operands:
+    \table
+      Operand        | Type           | Location
+      input          | volVectorField | $FOAM_CASE/\<time\>/\<inpField\>
+      output file    | -              | -
+      output field   | volVectorField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
 Usage
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     vorticity1
     {
+        // Mandatory entries (unmodifiable)
         type        vorticity;
         libs        (fieldFunctionObjects);
+
+        // Optional (inherited) entries
         ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | Type name: vorticity    | yes         |
-        U            | Name of velocity field  | no          | U
-        result       | Name of Courant number field | no    | \<function name\>
-        log          | Log to standard output  | no          | yes
+      Property     | Description                        | Type | Req'd | Dflt
+      type         | Type name: vorticity               | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects | word |  yes  | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link fieldExpression.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func vorticity
+    \endverbatim
+
 See also
-    Foam::functionObjects::fieldExpression
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::fieldExpression
+    - ExtendedCodeGuide::functionObjects::field::vorticity
 
 SourceFiles
     vorticity.C
@@ -106,9 +134,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        vorticity(const vorticity&) = delete;
+
+        //- No copy assignment
+        void operator=(const vorticity&) = delete;
+
 
     //- Destructor
-    virtual ~vorticity();
+    virtual ~vorticity() = default;
 };
 
 
diff --git a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.C b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.C
index 338d9fcaf5c..0b1796c4714 100644
--- a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.C
+++ b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2015-2019 OpenCFD Ltd.
+    Copyright (C) 2015-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -39,7 +39,6 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(wallBoundedStreamLine, 0);
-
     addToRunTimeSelectionTable
     (
         functionObject,
@@ -126,7 +125,7 @@ Foam::point Foam::functionObjects::wallBoundedStreamLine::pushIn
     //        << " seed:" << pt << exit(FatalError);
     //}
 
-    return (1.0-ROOTSMALL)*pt+ROOTSMALL*tri.centre();
+    return (1.0 - ROOTSMALL)*pt + ROOTSMALL*tri.centre();
 }
 
 
@@ -305,12 +304,6 @@ Foam::functionObjects::wallBoundedStreamLine::wallBoundedStreamLine
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::wallBoundedStreamLine::~wallBoundedStreamLine()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::wallBoundedStreamLine::read(const dictionary& dict)
diff --git a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H
index 6423f0e5620..7c66ba0b186 100644
--- a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H
+++ b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H
@@ -35,32 +35,30 @@ Description
     particle track, transported by a user-specified velocity field, constrained
     to a patch.
 
+    Operands:
+    \table
+      Operand       | Type  | Location
+      input         | -     | -
+      output file   | -     | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field  | -     | -
+    \endtable
+
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     wallBoundedStreamLine1
     {
+        // Mandatory entries (unmodifiable)
         type            wallBoundedStreamLine;
         libs            (fieldFunctionObjects);
 
-        writeControl    writeTime;
-
+        // Mandatory entries (runtime modifiable)
+        U               <fieldTrack>;
+        fields          (<fieldTrack> <field1> ... <fieldN>);
         setFormat       vtk;
-        U               UNear;
-        //Deprecated: trackForward    yes;
-        direction       bidirectional;    // or forward/backward
-
-        fields
-        (
-            UNear
-            p
-        );
-
+        direction       bidirectional;
         lifeTime        10000;
-        trackLength     1e-3;
-        bounds          (0.2 -10 -10)(0.22 10 10);
         cloud           particleTracks;
-
         seedSampleSet
         {
             type        patchSeed;
@@ -68,39 +66,79 @@ Usage
             axis        x;
             maxPoints   20000;
         }
+
+        // Optional entries (runtime modifiable)
+        bounds          (0.2 -10 -10)(0.22 10 10);
+        trackLength     1e-3;
+        nSubCycle       1;
+        interpolationScheme cellPoint;
+
+        // Deprecated
+        // trackForward true;
+
+        // Optional (inherited) entries
+        ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | Type name: wallBoundedStreamLine| yes |
-        setFormat    | Output data type        | yes         |
-        U            | Tracking velocity field name | yes    |
-        fields       | Fields to sample        | yes         |
-        direction    | Direction to track    | yes         |
-        lifetime     | Maximum number of particle tracking steps | yes |
-        trackLength  | Tracking segment length | no          |
-        nSubCycle    | Number of tracking steps per cell | no|
-        cloud        | Cloud name to use       | yes         |
-        bounds       | Bounding box to trim tracks | no | invertedBox
-        seedSampleSet| Seeding method (see below)| yes       |
+      Property     | Description                           | Type | Req'd | Dflt
+      type         | Type name: wallBoundedStreamLine      | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects    | word |  yes  | -
+      U            | Name of tracking velocity field       | word |  yes  | -
+      fields       | Names of operand fields to sample     | wordList | yes | -
+      setFormat    | Type of output data                   | word |  yes  | -
+      direction    | Direction to track                    | vector | yes | -
+      lifetime     | Maximum number of particle tracking steps | label | yes | -
+      cloud        | Name of cloud                         | word |  yes  | -
+      seedSampleSet| Name of seeding method (see below)    | word |  yes  | -
+      bounds       | Bounding box to trim tracks    | vector | no | invertedBox
+      trackLength  | Tracking segment length              | scalar | no | VGREAT
+      nSubCycle    | Number of tracking steps per cell    | label  | no | 1
+      interpolationScheme | Interp. scheme for sample   | word | no | cellPoint
     \endtable
 
-    Where \c seedSampleSet \c type is typically one of
-    \plaintable
-        uniform   | uniform particle seeding
-        cloud     | cloud of points
-        patchSeed | seeding via patch faces
-        triSurfaceMeshPointSet | points according to a tri-surface mesh
-    \endplaintable
+    Options for the \c seedSampleSet entry:
+    \verbatim
+      uniform   | uniform particle seeding
+      cloud     | cloud of points
+      patchSeed | seeding via patch faces
+      triSurfaceMeshPointSet | points according to a tri-surface mesh
+    \endverbatim
+
+    Options for the \c setFormat entry:
+    \verbatim
+        csv
+        ensight
+        gnuplot
+        jplot
+        nastran
+        raw
+        vtk
+        xmgr
+    \endverbatim
+
+    Options for the \c direction entry:
+    \verbatim
+        bidirectional
+        forward
+        backward
+    \endverbatim
+
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
 
 Note
     When specifying the track resolution, the \c trackLength OR \c nSubCycle
-    option should be used
+    option should be used.
 
 See also
-    Foam::functionObjects::streamLineBase
+    - Foam::functionObject
+    - Foam::functionObjects::streamLineBase
+    - ExtendedCodeGuide::functionObjects::field::wallBoundedStreamLine
 
 SourceFiles
     wallBoundedStreamLine.C
@@ -128,15 +166,6 @@ class wallBoundedStreamLine
 :
     public streamLineBase
 {
-    // Private Member Functions
-
-        //- No copy construct
-        wallBoundedStreamLine(const wallBoundedStreamLine&) = delete;
-
-        //- No copy assignment
-        void operator=(const wallBoundedStreamLine&) = delete;
-
-
 protected:
 
     // Protected Member Functions
@@ -150,7 +179,7 @@ protected:
         ) const;
 
         //- Push a point a tiny bit towards the centre of the triangle it is in
-        //  to avoid tracking problems
+        //- to avoid tracking problems
         point pushIn
         (
             const triPointRef& tri,
@@ -183,9 +212,15 @@ public:
             const wordList& fieldNames
         );
 
+        //- No copy construct
+        wallBoundedStreamLine(const wallBoundedStreamLine&) = delete;
+
+        //- No copy assignment
+        void operator=(const wallBoundedStreamLine&) = delete;
+
 
     //- Destructor
-    virtual ~wallBoundedStreamLine();
+    virtual ~wallBoundedStreamLine() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C
index 9e1e361a1ad..dc4b82ca70c 100644
--- a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C
+++ b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C
@@ -51,7 +51,6 @@ namespace functionObjects
 
 void Foam::functionObjects::wallHeatFlux::writeFileHeader(Ostream& os) const
 {
-    // Add headers to output data
     writeHeader(os, "Wall heat-flux");
     writeCommented(os, "Time");
     writeTabbed(os, "patch");
diff --git a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.H b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.H
index f4b49a1fcca..b4f8e12a37a 100644
--- a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.H
+++ b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.H
@@ -31,39 +31,58 @@ Group
     grpForcesFunctionObjects
 
 Description
-    Calculates and write the heat-flux at wall patches as the
-    volScalarField field 'wallHeatFlux'.
+    Computes the wall-heat flux at selected wall patches.
 
-    All wall patches are included by default; to restrict the calculation to
-    certain patches, use the optional 'patches' entry.
+    \table
+      Operand        | Type              | Location
+      input          | -                 | -
+      output file    | dat               <!--
+                 --> | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<field\>
+      output field   | volScalarField (only boundaryField) <!--
+                 --> | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     wallHeatFlux1
     {
+        // Mandatory entries (unmodifiable)
         type        wallHeatFlux;
         libs        (fieldFunctionObjects);
+
+        // Optional entries (runtime modifiable)
+        patches     (<patch1> ... <patchN>); // (wall1 "(wall2|wall3)");
+        qr          qr;
+
+        // Optional (inherited) entries
         ...
-        region      fluid;
-        patches     (".*Wall");
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property | Description                | Required   | Default
-        type     | type name: wallHeatFlux    | yes        |
-        patches  | list of patches to process | no         | all wall patches
-        qr       | name of radiative heat flux field | no  | qr
-        region   | region to be evaluated     | no         | default region
+      Property     | Description                           | Type | Req'd | Dflt
+      type         | Type name: wallHeatFlux               | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects    | word |  yes  | -
+      patches    | Names of operand patches   | wordList | no | all wall patches
+      qr         | Name of radiative heat flux field       | word | no | qr
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        <solver> -postProcess -func wallHeatFlux
+    \endverbatim
+
 See also
-    Foam::functionObject
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
-    Foam::functionObjects::timeControl
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::wallHeatFlux
 
 SourceFiles
     wallHeatFlux.C
@@ -101,7 +120,7 @@ protected:
         //- Optional list of wall patches to process
         labelHashSet patchSet_;
 
-        //- Name of radiative heat flux name, default = qr
+        //- Name of radiative heat flux name
         word qrName_;
 
 
@@ -119,15 +138,6 @@ protected:
         );
 
 
-    // Protected Member Functions
-
-        //- No copy construct
-        wallHeatFlux(const wallHeatFlux&) = delete;
-
-        //- No copy assignment
-        void operator=(const wallHeatFlux&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -144,6 +154,12 @@ public:
             const dictionary&
         );
 
+        //- No copy construct
+        wallHeatFlux(const wallHeatFlux&) = delete;
+
+        //- No copy assignment
+        void operator=(const wallHeatFlux&) = delete;
+
 
     //- Destructor
     virtual ~wallHeatFlux() = default;
diff --git a/src/functionObjects/field/wallShearStress/wallShearStress.C b/src/functionObjects/field/wallShearStress/wallShearStress.C
index 7859eb8a810..f88cd749456 100644
--- a/src/functionObjects/field/wallShearStress/wallShearStress.C
+++ b/src/functionObjects/field/wallShearStress/wallShearStress.C
@@ -50,13 +50,12 @@ namespace functionObjects
 
 void Foam::functionObjects::wallShearStress::writeFileHeader(Ostream& os) const
 {
-    // Add headers to output data
     writeHeader(os, "Wall shear stress");
     writeCommented(os, "Time");
     writeTabbed(os, "patch");
     writeTabbed(os, "min");
     writeTabbed(os, "max");
-    os << endl;
+    os  << endl;
 }
 
 
diff --git a/src/functionObjects/field/wallShearStress/wallShearStress.H b/src/functionObjects/field/wallShearStress/wallShearStress.H
index 0ffc6252ab2..f0c119a8b8d 100644
--- a/src/functionObjects/field/wallShearStress/wallShearStress.H
+++ b/src/functionObjects/field/wallShearStress/wallShearStress.H
@@ -31,49 +31,67 @@ Group
     grpForcesFunctionObjects
 
 Description
-    Calculates and write the shear-stress at wall patches as
-    the volVectorField field 'wallShearStress'.
+    Computes the wall-shear stress at selected wall patches.
 
-        \f[
-            Stress = R \dot n
-        \f]
+    \f[
+        \vec \tau = \vec R \cdot \vec n
+    \f]
 
     where
     \vartable
-        R       | stress tensor
-        n       | patch normal vector (into the domain)
+        \vec \tau   | Wall shear stress vector [m^2/s^2]
+        \vec R | Shear-stress symmetric tensor (retrieved from turbulence model)
+        \vec n | Patch normal vector (into the domain)
     \endvartable
 
-    The shear-stress symmetric tensor field is retrieved from the turbulence
-    model.  All wall patches are included by default; to restrict the
-    calculation to certain patches, use the optional 'patches' entry.
+    Operands:
+    \table
+      Operand        | Type              | Location
+      input          | -                 | -
+      output file    | dat | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<field\>
+      output field   | volVectorField (only boundaryField) <!--
+                 --> | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     wallShearStress1
     {
+        // Mandatory entries (unmodifiable)
         type        wallShearStress;
         libs        (fieldFunctionObjects);
+
+        // Optional entries (runtime modifiable)
+        patches     (<patch1> ... <patchN>); // (wall1 "(wall2|wall3)");
+
+        // Optional (inherited) entries
         ...
-        patches     (".*Wall");
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property | Description                | Required   | Default value
-        type     | type name: wallShearStress | yes        |
-        resultName | Name of wall shear stress field | no  | \<function name\>
-        patches  | list of patches to process | no         | all wall patches
-        log      | Log to standard output     | no         | yes
+      Property     | Description                           | Type | Req'd | Dflt
+      type         | Type name: wallShearStress            | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects    | word |  yes  | -
+      patches    | Names of operand patches   | wordList | no | all wall patches
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        <solver> -postProcess -func wallShearStress
+    \endverbatim
+
 See also
-    Foam::functionObject
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
-    Foam::functionObjects::timeControl
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::wallShearStress
 
 SourceFiles
     wallShearStress.C
@@ -104,7 +122,6 @@ class wallShearStress
     public fvMeshFunctionObject,
     public writeFile
 {
-
 protected:
 
     // Protected Data
@@ -125,12 +142,6 @@ protected:
             volVectorField& shearStress
         );
 
-        //- No copy construct
-        wallShearStress(const wallShearStress&) = delete;
-
-        //- No copy assignment
-        void operator=(const wallShearStress&) = delete;
-
 
 public:
 
@@ -148,6 +159,12 @@ public:
             const dictionary&
         );
 
+        //- No copy construct
+        wallShearStress(const wallShearStress&) = delete;
+
+        //- No copy assignment
+        void operator=(const wallShearStress&) = delete;
+
 
     //- Destructor
     virtual ~wallShearStress() = default;
diff --git a/src/functionObjects/field/writeCellCentres/writeCellCentres.C b/src/functionObjects/field/writeCellCentres/writeCellCentres.C
index 92b47b1a027..313a92d2cd6 100644
--- a/src/functionObjects/field/writeCellCentres/writeCellCentres.C
+++ b/src/functionObjects/field/writeCellCentres/writeCellCentres.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -57,12 +57,6 @@ Foam::functionObjects::writeCellCentres::writeCellCentres
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::writeCellCentres::~writeCellCentres()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::writeCellCentres::read(const dictionary& dict)
@@ -79,7 +73,7 @@ bool Foam::functionObjects::writeCellCentres::execute()
 
 bool Foam::functionObjects::writeCellCentres::write()
 {
-    volVectorField C
+    const volVectorField C
     (
         IOobject
         (
@@ -94,14 +88,15 @@ bool Foam::functionObjects::writeCellCentres::write()
         calculatedFvPatchScalarField::typeName
     );
 
-    Log << "    Writing cell-centre field " << C.name()
+    Log << type() << " " << name() << " write:" << nl
+        << "    writing cell-volumes field " << C.name()
         << " to " << time_.timeName() << endl;
 
     C.write();
 
-    for (direction i=0; i<vector::nComponents; i++)
+    for (direction i = 0; i < vector::nComponents; ++i)
     {
-        volScalarField Ci
+        const volScalarField Ci
         (
             IOobject
             (
diff --git a/src/functionObjects/field/writeCellCentres/writeCellCentres.H b/src/functionObjects/field/writeCellCentres/writeCellCentres.H
index b1baa645952..cd9a7b5ba73 100644
--- a/src/functionObjects/field/writeCellCentres/writeCellCentres.H
+++ b/src/functionObjects/field/writeCellCentres/writeCellCentres.H
@@ -32,27 +32,50 @@ Group
 
 Description
     Writes the cell-centres volVectorField and the three component fields as
-    volScalarFields.
+    \c volScalarFields.
+
+    Operands:
+    \table
+      Operand          | Type           | Location
+      input            | -              | -
+      output file      | -              | -
+      output field 1   | volVectorField | $FOAM_CASE/\<time\>/C
+      output field 2   | volScalarField | $FOAM_CASE/\<time\>/{Cx,Cy,Cz}
+    \endtable
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     writeCellCentres
     {
+        // Mandatory entries (unmodifiable)
         type        writeCellCentres;
         libs        (fieldFunctionObjects);
+
+        // Optional (inherited) entries
         ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property  | Description                 | Required    | Default value
-        type      | type name: writeCellCentres | yes       |
+      Property   | Description                        | Type | Req'd | Dflt
+      type       | Type name: writeCellCentres        | word |  yes  | -
+      libs       | Library name: fieldFunctionObjects | word |  yes  | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func writeCellCentres
+    \endverbatim
+
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::writeCellCentres
 
 SourceFiles
     writeCellCentres.C
@@ -79,15 +102,6 @@ class writeCellCentres
 :
     public fvMeshFunctionObject
 {
-    // Private member functions
-
-        //- No copy construct
-        writeCellCentres(const writeCellCentres&) = delete;
-
-        //- No copy assignment
-        void operator=(const writeCellCentres&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -104,9 +118,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        writeCellCentres(const writeCellCentres&) = delete;
+
+        //- No copy assignment
+        void operator=(const writeCellCentres&) = delete;
+
 
     //- Destructor
-    virtual ~writeCellCentres();
+    virtual ~writeCellCentres() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/writeCellVolumes/writeCellVolumes.C b/src/functionObjects/field/writeCellVolumes/writeCellVolumes.C
index be1ff1a96bf..f4e5301ffa2 100644
--- a/src/functionObjects/field/writeCellVolumes/writeCellVolumes.C
+++ b/src/functionObjects/field/writeCellVolumes/writeCellVolumes.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -57,12 +57,6 @@ Foam::functionObjects::writeCellVolumes::writeCellVolumes
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::writeCellVolumes::~writeCellVolumes()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::writeCellVolumes::read(const dictionary& dict)
@@ -97,7 +91,8 @@ bool Foam::functionObjects::writeCellVolumes::write()
 
     V.ref() = mesh_.V();
 
-    Log << "    Writing cell-volumes field " << V.name()
+    Log << type() << " " << name() << " write:" << nl
+        << "    writing cell-volumes field " << V.name()
         << " to " << time_.timeName() << endl;
 
     V.write();
diff --git a/src/functionObjects/field/writeCellVolumes/writeCellVolumes.H b/src/functionObjects/field/writeCellVolumes/writeCellVolumes.H
index dcbd14deff6..a3e99979154 100644
--- a/src/functionObjects/field/writeCellVolumes/writeCellVolumes.H
+++ b/src/functionObjects/field/writeCellVolumes/writeCellVolumes.H
@@ -31,27 +31,49 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Writes the cell-volumes volScalarField.
+    Writes the cell-volumes \c volScalarField.
+
+    Operands:
+    \table
+      Operand        | Type           | Location
+      input          | -              | -
+      output file    | -              | -
+      output field   | volScalarField | $FOAM_CASE/\<time\>/V
+    \endtable
 
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     writeCellVolumes
     {
+        // Mandatory entries (unmodifiable)
         type        writeCellVolumes;
         libs        (fieldFunctionObjects);
+
+        // Optional (inherited) entries
         ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property  | Description                 | Required    | Default value
-        type      | type name: writeCellVolumes | yes       |
+      Property   | Description                        | Type | Req'd | Dflt
+      type       | Type name: writeCellVolumes        | word |  yes  | -
+      libs       | Library name: fieldFunctionObjects | word |  yes  | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        postProcess -func writeCellVolumes
+    \endverbatim
+
 See also
-    Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::writeCellVolumes
 
 SourceFiles
     writeCellVolumes.C
@@ -78,15 +100,6 @@ class writeCellVolumes
 :
     public fvMeshFunctionObject
 {
-    // Private member functions
-
-        //- No copy construct
-        writeCellVolumes(const writeCellVolumes&) = delete;
-
-        //- No copy assignment
-        void operator=(const writeCellVolumes&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -103,9 +116,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        writeCellVolumes(const writeCellVolumes&) = delete;
+
+        //- No copy assignment
+        void operator=(const writeCellVolumes&) = delete;
+
 
     //- Destructor
-    virtual ~writeCellVolumes();
+    virtual ~writeCellVolumes() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/yPlus/yPlus.C b/src/functionObjects/field/yPlus/yPlus.C
index 324a0fe969d..8fc394738e7 100644
--- a/src/functionObjects/field/yPlus/yPlus.C
+++ b/src/functionObjects/field/yPlus/yPlus.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2013-2016 OpenFOAM Foundation
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -40,13 +40,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(yPlus, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        yPlus,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, yPlus, dictionary);
 }
 }
 
@@ -62,7 +56,7 @@ void Foam::functionObjects::yPlus::writeFileHeader(Ostream& os) const
     writeTabbed(os, "min");
     writeTabbed(os, "max");
     writeTabbed(os, "average");
-    os << endl;
+    os  << endl;
 }
 
 
@@ -103,12 +97,6 @@ Foam::functionObjects::yPlus::yPlus
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::yPlus::~yPlus()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 bool Foam::functionObjects::yPlus::read(const dictionary& dict)
diff --git a/src/functionObjects/field/yPlus/yPlus.H b/src/functionObjects/field/yPlus/yPlus.H
index 65cedb3d739..6614ef33ff2 100644
--- a/src/functionObjects/field/yPlus/yPlus.H
+++ b/src/functionObjects/field/yPlus/yPlus.H
@@ -31,36 +31,51 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Evaluates and outputs turbulence y+ for turbulence models.
+    Computes the near wall \f$y_1^+\f$ for turbulence models.
 
-    The field is stored on the mesh database so that it can be
-    retrieved and used for other applications.
+    Operands:
+    \table
+      Operand        | Type           | Location
+      input          | -              | -
+      output file    | dat | $FOAM_CASE/postProcessing/\<FO\>/\<time\>/\<file\>
+      output field   | volScalarField | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
 
 Usage
-    Example of function object specification to calculate the y+ (LES):
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
     yPlus1
     {
+        // Mandatory entries (unmodifiable)
         type        yPlus;
         libs        (fieldFunctionObjects);
+
+        // Optional (inherited) entries
         ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property     | Description             | Required    | Default value
-        type         | Type name: yPlus        | yes         |
-        result       | Name of y+ field        | no          | \<function name\>
-        log          | Log to standard output  | no          | yes
+      Property   | Description                        | Type | Req'd | Dflt
+      type       | Type name: yPlus                   | word |  yes  | -
+      libs       | Library name: fieldFunctionObjects | word |  yes  | -
     \endtable
 
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+     - \link writeFile.H \endlink
+
+    Minimal example by using the \c postProcess utility:
+    \verbatim
+        <solver> -postProcess -func yPlus
+    \endverbatim
 
 See also
-    Foam::functionObject
-    Foam::functionObjects::fvMeshFunctionObject
-    Foam::functionObjects::writeFile
-    Foam::functionObjects::timeControl
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - Foam::functionObjects::writeFile
+    - ExtendedCodeGuide::functionObjects::field::yPlus
 
 SourceFiles
     yPlus.C
@@ -96,12 +111,6 @@ class yPlus
         //- File header information
         virtual void writeFileHeader(Ostream& os) const;
 
-        //- No copy construct
-        yPlus(const yPlus&) = delete;
-
-        //- No copy assignment
-        void operator=(const yPlus&) = delete;
-
 
 public:
 
@@ -119,9 +128,15 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        yPlus(const yPlus&) = delete;
+
+        //- No copy assignment
+        void operator=(const yPlus&) = delete;
+
 
     //- Destructor
-    virtual ~yPlus();
+    virtual ~yPlus() = default;
 
 
     // Member Functions
diff --git a/src/functionObjects/field/zeroGradient/zeroGradient.C b/src/functionObjects/field/zeroGradient/zeroGradient.C
index 21bc3d18a2a..766f1283fe0 100644
--- a/src/functionObjects/field/zeroGradient/zeroGradient.C
+++ b/src/functionObjects/field/zeroGradient/zeroGradient.C
@@ -39,13 +39,7 @@ namespace Foam
 namespace functionObjects
 {
     defineTypeNameAndDebug(zeroGradient, 0);
-
-    addToRunTimeSelectionTable
-    (
-        functionObject,
-        zeroGradient,
-        dictionary
-    );
+    addToRunTimeSelectionTable(functionObject, zeroGradient, dictionary);
 }
 }
 
diff --git a/src/functionObjects/field/zeroGradient/zeroGradient.H b/src/functionObjects/field/zeroGradient/zeroGradient.H
index fffb8a354fd..236cb61b3be 100644
--- a/src/functionObjects/field/zeroGradient/zeroGradient.H
+++ b/src/functionObjects/field/zeroGradient/zeroGradient.H
@@ -30,43 +30,70 @@ Group
     grpFieldFunctionObjects
 
 Description
-    This function object creates a volume field with zero-gradient
+    Creates a volume field with zero-gradient
     boundary conditions from another volume field.
 
     The result can be used, for example, to post-process near-wall
     field values.
 
+    Operands:
+    \table
+      Operand        | Type                | Location
+      input          | vol\<Type\>Field    | $FOAM_CASE/\<time\>/\<inpField\>
+      output file    | -                   | -
+      output field   | vol\<Type\>Field    | $FOAM_CASE/\<time\>/\<outField\>
+    \endtable
+
+    where \c \<Type\>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor.
+
 Usage
-    Example of function object specification:
+    Minimal example by using \c system/controlDict.functions:
     \verbatim
-    zeroGrad
+    zeroGradient1
     {
+        // Mandatory entries (unmodifiable)
         type        zeroGradient;
         libs        (fieldFunctionObjects);
-        fields      (U "(T|k|epsilon|omega)");
-        result      @@nearWall;
+
+        // Mandatory entries (runtime modifiable)
+        fields      (<field1> ... <fieldN>); \\(U "(T|k|epsilon|omega)");
+
+        // Optional entries (runtime modifiable)
+        result      @@<name>;
+
+        // Optional (inherited) entries
         ...
     }
     \endverbatim
 
-    Where the entries comprise:
+    where the entries mean:
     \table
-        Property | Description                | Required  | Default value
-        type     | type name: zeroGradient    | yes       |
-        fields   | Name of fields to process  | yes       |
-        result   | Name of results            | no        | zeroGradient(@@)
-        log      | Log to standard output     | no        | no
+      Property     | Description                           | Type | Req'd | Dflt
+      type         | Type name: zeroGradient               | word |  yes  | -
+      libs         | Library name: fieldFunctionObjects    | word |  yes  | -
+      fields       | Name of the operand fields            | wordList | yes | -
+      result       | Name of the output field    | word | no | zeroGradient(@@)
     \endtable
 
-    A list of fields can contain exact names or regular expressions.
+    The inherited entries are elaborated in:
+     - \link functionObject.H \endlink
+
+    Usage by the \c postProcess utility is not available.
+
+Note
+    - A list of fields can contain exact names or regular expressions.
     The token '\@\@' in the result name is replaced by the name of the source
     field. In the special case of a single source field (specified as
     a non-regex), the '\@\@' token checking is suppressed.
-
-    The function object will skip over fields that would not benefit
-    - ie, only processor, empty, zeroGradient, symmetry patches.
+    - The function object will skip over fields that would not benefit
+    i.e., only processor, empty, zeroGradient, symmetry patches.
     This check should also prevent processing fields multiple times.
 
+See also
+    - Foam::functionObject
+    - Foam::functionObjects::fvMeshFunctionObject
+    - ExtendedCodeGuide::functionObjects::field::zeroGradient
+
 SourceFiles
     zeroGradient.C
     zeroGradientTemplates.C
@@ -96,26 +123,26 @@ class zeroGradient
 :
     public fvMeshFunctionObject
 {
-    // Private data
+    // Private Data
 
-        //- Name of fields to process.
+        //- Name of fields to process
         wordRes selectFields_;
 
-        //- Formatting for the result fields.
+        //- Formatting for the result fields
         word resultName_;
 
-        //- Hashed names of result fields, and their type.
+        //- Hashed names of result fields, and their type
         HashTable<word> results_;
 
 
     // Private Member Functions
 
-        //- Check that string contains the appropriate substitution token(s).
+        //- Check that string contains the appropriate substitution token(s)
         static bool checkFormatName(const std::string& str);
 
 
         //- Accept unless field only has constraint patches
-        //  (ie, empty/zero-gradient/processor).
+        //  (ie, empty/zero-gradient/processor)
         //  This should also avoid fields that were already processed by
         //  zeroGradient.
         template<class Type>
@@ -125,17 +152,10 @@ class zeroGradient
         template<class Type>
         int apply(const word& inputName, int& state);
 
-        //- Process by trying to apply for various volume field types.
+        //- Process by trying to apply for various volume field types
         int process(const word& inputName);
 
 
-        //- No copy construct
-        zeroGradient(const zeroGradient&) = delete;
-
-        //- No copy assignment
-        void operator=(const zeroGradient&) = delete;
-
-
 public:
 
     //- Runtime type information
@@ -152,6 +172,12 @@ public:
             const dictionary& dict
         );
 
+        //- No copy construct
+        zeroGradient(const zeroGradient&) = delete;
+
+        //- No copy assignment
+        void operator=(const zeroGradient&) = delete;
+
 
     //- Destructor
     virtual ~zeroGradient() = default;
diff --git a/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/FOXiReactionRate b/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/FOXiReactionRate
new file mode 100644
index 00000000000..5a3c2d1a153
--- /dev/null
+++ b/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/FOXiReactionRate
@@ -0,0 +1,28 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+XiReactionRate1
+{
+    // Mandatory entries
+    type            XiReactionRate;
+    libs            (fieldFunctionObjects);
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/controlDict b/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/controlDict
index ebdf3f898d6..66418a7a629 100644
--- a/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/controlDict
+++ b/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/controlDict
@@ -50,4 +50,10 @@ adjustTimeStep  yes;
 maxCo           0.2;
 
 
+functions
+{
+    #include "FOXiReactionRate"
+}
+
+
 // ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/aerofoilNACA0012/system/controlDict b/tutorials/compressible/rhoPimpleFoam/RAS/aerofoilNACA0012/system/controlDict
index bd63c907e7d..e8e0dd59999 100644
--- a/tutorials/compressible/rhoPimpleFoam/RAS/aerofoilNACA0012/system/controlDict
+++ b/tutorials/compressible/rhoPimpleFoam/RAS/aerofoilNACA0012/system/controlDict
@@ -46,7 +46,7 @@ runTimeModifiable true;
 
 functions
 {
-    #includeFunc MachNo
+    #include "FOMachNo"
     #includeFunc solverInfo
 }
 
diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/externalCoupledSquareBendLiq/system/externalCoupled b/tutorials/compressible/rhoPimpleFoam/RAS/externalCoupledSquareBendLiq/system/externalCoupled
index 4146ab2908a..49a8551b0e2 100644
--- a/tutorials/compressible/rhoPimpleFoam/RAS/externalCoupledSquareBendLiq/system/externalCoupled
+++ b/tutorials/compressible/rhoPimpleFoam/RAS/externalCoupledSquareBendLiq/system/externalCoupled
@@ -1,13 +1,17 @@
-// -*- C++ -*-
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
 
 // Control for external coupled simulation
 externalCoupled
 {
-    type    externalCoupled;
-    libs    (fieldFunctionObjects);
-    log     true;
-
-    executeControl timeStep;
+    // Mandatory entries
+    type            externalCoupled;
+    libs            (fieldFunctionObjects);
 
     // Directory to use for communication
     commsDir        "<case>/comms";
@@ -34,6 +38,24 @@ externalCoupled
 
     // Enabled or not?
     #sinclude "<case>/externalCoupled.control"
+
+    // Optional entries
+    waitInterval        1;
+    // timeOut             100;
+    statusDone          done;  // Any arbitrary status=... value
+    calcFrequency       1;
+
+    // Optional (inherited) entries
+    region              region0;
+    enabled             true;
+    log                 true;
+    executeControl      timeStep;
+    /*timeStart           0;
+    timeEnd             1000;
+    executeControl      timeStep;
+    executeInterval     1;
+    writeControl        timeStep;
+    writeInterval       1;*/
 }
 
 
diff --git a/tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/derivedFields b/tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/derivedFields
index f9702554514..14f0e53b047 100644
--- a/tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/derivedFields
+++ b/tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/derivedFields
@@ -1,19 +1,30 @@
-// -*- C++ -*-
-
-// ************************************************************************* //
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
 
 // Create additional volume fields (for sampling)
 derivedFields
 {
-    type    derivedFields;
-    libs    (fieldFunctionObjects);
-    log     true;
+    // Mandatory entries
+    type            derivedFields;
+    libs            (fieldFunctionObjects);
+    derived         (rhoU pTotal);
 
-    writeControl    none;
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         10000;
     executeControl  timeStep;
     executeInterval 1;
-
-    derived (rhoU pTotal);
+    writeControl    none;
+    writeInterval  -1;
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/fluxSummary b/tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/fluxSummary
index 352fc229404..2ca102dbf56 100644
--- a/tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/fluxSummary
+++ b/tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/fluxSummary
@@ -1,28 +1,43 @@
-// -*- C++ -*-
-//
-// Summary of fluxes
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
 
 flux
 {
+    // Mandatory entries
     type            fluxSummary;
     libs            (fieldFunctionObjects);
-    log             on;
-    enabled         true;
-
-    executeControl  none;
-    writeControl    timeStep;
-    writeInterval   4;
-
     mode            functionObjectSurface;
-
-    phi             rhoU;
-
     surfaces
     (
         sampled.plane-0.25
         sampled.plane-0.45
         sampled.plane-0.55
     );
+
+    // Optional entries
+    phi             rhoU;
+    scaleFactor     1.0;
+    tolerance       0.8;
+
+    // Optional (inherited) entries
+    writePrecision  10;
+    writeToFile     true;
+    useUserTime     false;
+
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000000;
+    executeControl  none;
+    executeInterval -1;
+    writeControl    timeStep;
+    writeInterval   4;
 }
 
 
diff --git a/tutorials/compressible/rhoSimpleFoam/squareBend/system/controlDict b/tutorials/compressible/rhoSimpleFoam/squareBend/system/controlDict
index d995b036957..6d6572480a0 100644
--- a/tutorials/compressible/rhoSimpleFoam/squareBend/system/controlDict
+++ b/tutorials/compressible/rhoSimpleFoam/squareBend/system/controlDict
@@ -47,13 +47,15 @@ graphFormat     raw;
 
 runTimeModifiable true;
 
+
 functions
 {
     #include "derivedFields"
     #include "sampling"
     // #include "samplingDebug"
     // #include "sampleCellCentres"
-    #include  "isentropicTotalPressure"
+    #include "isentropicTotalPressure"
+    #include "wallHeatFlux"
 }
 
 
diff --git a/tutorials/compressible/rhoSimpleFoam/squareBend/system/derivedFields b/tutorials/compressible/rhoSimpleFoam/squareBend/system/derivedFields
index 5e0d3b203bb..e45c0607763 100644
--- a/tutorials/compressible/rhoSimpleFoam/squareBend/system/derivedFields
+++ b/tutorials/compressible/rhoSimpleFoam/squareBend/system/derivedFields
@@ -1,21 +1,33 @@
-// -*- C++ -*-
-
-// ************************************************************************* //
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
 
 // Create additional volume fields (for sampling)
 derivedFields
 {
-    type    derivedFields;
-    libs    (fieldFunctionObjects);
-    log     true;
+    // Mandatory entries
+    type            derivedFields;
+    libs            (fieldFunctionObjects);
+    derived         (rhoU pTotal);
 
-    writeControl    none;
+    // Optional entries
+    rhoRef          1.25;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         10000;
     executeControl  timeStep;
     executeInterval 1;
-
-    derived     (rhoU pTotal);
-
-    rhoRef      1.25;
+    writeControl    none;
+    writeInterval  -1;
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/compressible/rhoSimpleFoam/squareBend/system/wallHeatFlux b/tutorials/compressible/rhoSimpleFoam/squareBend/system/wallHeatFlux
new file mode 100644
index 00000000000..fb9af541024
--- /dev/null
+++ b/tutorials/compressible/rhoSimpleFoam/squareBend/system/wallHeatFlux
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+wallHeatFlux1
+{
+    // Mandatory entries
+    type            wallHeatFlux;
+    libs            (fieldFunctionObjects);
+
+    // Optional entries
+    patches          (walls);
+    qr               qr;
+
+    // Optional (inherited) entries
+    writePrecision  10;
+    writeToFile     true;
+    useUserTime     true;
+
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledHeater/system/externalCoupled b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledHeater/system/externalCoupled
index 7d7c0a491a0..33c80e03969 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledHeater/system/externalCoupled
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledHeater/system/externalCoupled
@@ -1,11 +1,17 @@
-// -*- C++ -*-
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
 
 // Control for external coupled simulation
 externalCoupled
 {
-    type    externalCoupled;
-    libs    (fieldFunctionObjects);
-    log     true;
+    // Mandatory entries
+    type            externalCoupled;
+    libs            (fieldFunctionObjects);
 
     // Directory to use for communication
     commsDir        "<case>/comms";
@@ -30,6 +36,23 @@ externalCoupled
             }
         }
     }
+
+    // Optional entries
+    waitInterval    1;
+    // timeOut         100;
+    statusDone      done;  // Any arbitrary status=... value
+    calcFrequency   1;
+
+    // Optional (inherited) entries
+    region              region0;
+    enabled             true;
+    log                 true;
+    /*timeStart           0;
+    timeEnd             1000;
+    executeControl      timeStep;
+    executeInterval     1;
+    writeControl        timeStep;
+    writeInterval       1;*/
 }
 
 
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/externalCoupledHeater/system/externalCoupled b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/externalCoupledHeater/system/externalCoupled
index 284b0b7de63..1feb88ef088 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/externalCoupledHeater/system/externalCoupled
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/externalCoupledHeater/system/externalCoupled
@@ -1,11 +1,17 @@
-// -*- C++ -*-
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
 
 // Control for external coupled simulation
 externalCoupled
 {
-    type    externalCoupled;
-    libs    (fieldFunctionObjects);
-    log     true;
+    // Mandatory entries
+    type            externalCoupled;
+    libs            (fieldFunctionObjects);
 
     // Directory to use for communication
     commsDir        "<case>/comms";
@@ -13,9 +19,6 @@ externalCoupled
     // Does external process start first
     initByExternal  true;
 
-    // Frequency of coupling
-    calcFrequency   4;
-
     regions
     {
         // Region name (wildcards allowed)
@@ -33,6 +36,23 @@ externalCoupled
             }
         }
     }
+
+    // Optional entries
+    waitInterval    1;
+    // timeOut         100;
+    statusDone      done;  // Any arbitrary status=... value
+    calcFrequency   4;     // Frequency of coupling
+
+    // Optional (inherited) entries
+    region              region0;
+    enabled             true;
+    log                 true;
+    /*timeStart           0;
+    timeEnd             1000;
+    executeControl      timeStep;
+    executeInterval     1;
+    writeControl        timeStep;
+    writeInterval       1;*/
 }
 
 
diff --git a/tutorials/incompressible/icoFoam/cavityMappingTest/system/controlDict b/tutorials/incompressible/icoFoam/cavityMappingTest/system/controlDict
index 5566513ca91..d61a4bcd867 100644
--- a/tutorials/incompressible/icoFoam/cavityMappingTest/system/controlDict
+++ b/tutorials/incompressible/icoFoam/cavityMappingTest/system/controlDict
@@ -17,19 +17,19 @@ FoamFile
 
 application     icoFoam;
 
-startFrom        latestTime;
+startFrom       latestTime;
 
 startTime       0;
 
-stopAt           nextWrite;
+stopAt          nextWrite;
 
 endTime         0.5;
 
 deltaT          0.005;
 
-writeControl     timeStep;
+writeControl    timeStep;
 
-writeInterval    1;
+writeInterval   1;
 
 purgeWrite      0;
 
@@ -45,20 +45,34 @@ timePrecision   6;
 
 runTimeModifiable true;
 
+
 functions
 {
     meshInterp1
     {
+        // Mandatory entries
         type            mapFields;
         libs            (fieldFunctionObjects);
-        writeControl    timeStep;
-        writeInterval   1;
-
         mapRegion       coarseMesh;
         mapMethod       cellVolumeWeight;
         consistent      yes;
-
         fields          (U); // ("U.*" "p.*");
+
+        // Optional entries
+        // patchMapMethod  directAMI;  // AMI-related entry
+        // patchMap     (<patchSrc> <patchTgt>);  // if consistent=false
+        // cuttingPatches (<patchTgt1> ... <patchTgtN>); // if consisten=false
+
+        // Optional (inherited) entries
+        region          region0;
+        enabled         true;
+        log             true;
+        timeStart       0;
+        timeEnd         1000;
+        executeControl  timeStep;
+        executeInterval 1;
+        writeControl    timeStep;
+        writeInterval   1;
     }
 }
 
diff --git a/tutorials/incompressible/overSimpleFoam/aeroFoil/background_overset/system/postProcessingDict b/tutorials/incompressible/overSimpleFoam/aeroFoil/background_overset/system/postProcessingDict
index 4e4c694311c..77bd98baae1 100644
--- a/tutorials/incompressible/overSimpleFoam/aeroFoil/background_overset/system/postProcessingDict
+++ b/tutorials/incompressible/overSimpleFoam/aeroFoil/background_overset/system/postProcessingDict
@@ -18,18 +18,23 @@ functions
 {
     processorField1
     {
-        // Type of functionObject
+        // Mandatory entries
         type            processorField;
-
-        // Where to load it from (if not already in solver)
         libs            (fieldFunctionObjects);
 
-        // Function object enabled flag
+        // Optional (inherited) entries
+        result          procField;
+        region          region0;
         enabled         true;
-
-        // When to output the average fields
+        log             true;
+        timeStart       0;
+        timeEnd         5000;
+        executeControl  timeStep;
+        executeInterval 1;
         writeControl    writeTime;
+        writeInterval   -1;
     }
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/controlDict b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/controlDict
index 1e42b994f32..dbd8b71a9d4 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/controlDict
+++ b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/controlDict
@@ -69,9 +69,9 @@ functions
         libs            (fieldFunctionObjects);
         writeControl    writeTime;
     }
-    lambVector1
+    LambVector1
     {
-        type            lambVector;
+        type            LambVector;
         libs            (fieldFunctionObjects);
         writeControl    writeTime;
         field           U;
@@ -81,7 +81,7 @@ functions
         type            div;
         libs            (fieldFunctionObjects);
         writeControl    writeTime;
-        field           lambVector;
+        field           LambVector;
     }
     fieldAverage1
     {
@@ -106,14 +106,14 @@ functions
                 base        time;
             }
 
-            lambVector
+            LambVector
             {
                 mean        on;
                 prime2Mean  off;
                 base        time;
             }
 
-            div(lambVector)
+            div(LambVector)
             {
                 mean        on;
                 prime2Mean  off;
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/fvSchemes b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/fvSchemes
index badf581ac01..0720b9feb9f 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/fvSchemes
+++ b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/fvSchemes
@@ -33,7 +33,7 @@ divSchemes
     div(phi,B)      Gauss limitedLinear 0.1;
     div(B)          Gauss linear;
     div(phi,nuTilda) Gauss limitedLinear 0.1;
-    div(lambVector)  Gauss linear;
+    div(LambVector)  Gauss linear;
     div((nuEff*dev2(T(grad(U))))) Gauss linear;
 }
 
diff --git a/tutorials/incompressible/pimpleFoam/LES/periodicHill/transient/system/controlDict b/tutorials/incompressible/pimpleFoam/LES/periodicHill/transient/system/controlDict
index be569948903..3260683c2fd 100644
--- a/tutorials/incompressible/pimpleFoam/LES/periodicHill/transient/system/controlDict
+++ b/tutorials/incompressible/pimpleFoam/LES/periodicHill/transient/system/controlDict
@@ -77,13 +77,9 @@ functions
 
     columnAverage
     {
+        // Mandatory entries
         type            columnAverage;
         libs            (fieldFunctionObjects);
-
-        executeControl  writeTime;
-        writeControl    none;
-        timeStart       1500.5; // approx 2x flow-throughs
-
         // Note: include processorCyclics!
         patches         (front "proc.*throughfront");
         fields
@@ -93,6 +89,17 @@ functions
             UMean
             UPrime2Mean
         );
+
+        // Optional (inherited) entries
+        region          region0;
+        enabled         true;
+        log             true;
+        timeStart       1500.5; // approx 2x flow-throughs
+        // timeEnd          inf;
+        executeControl  writeTime;
+        // executeInterval -1;
+        writeControl    none;
+        // writeInterval   -1;
     }
 
     sample
diff --git a/tutorials/incompressible/pimpleFoam/LES/surfaceMountedCube/fullCase/system/controlDict b/tutorials/incompressible/pimpleFoam/LES/surfaceMountedCube/fullCase/system/controlDict
index 20739dbd3e9..8bc5912fb87 100644
--- a/tutorials/incompressible/pimpleFoam/LES/surfaceMountedCube/fullCase/system/controlDict
+++ b/tutorials/incompressible/pimpleFoam/LES/surfaceMountedCube/fullCase/system/controlDict
@@ -56,10 +56,27 @@ functions
     }
     DESField
     {
+        // Mandatory entries
         type            DESModelRegions;
         libs            (fieldFunctionObjects);
-        //region "region0";
+
+        // Optional entries
+        result          DESField;
+
+        // Optional (inherited) entries
+        writePrecision   6;
+        writeToFile      true;
+        useUserTime      false;
+
+        region          region0;
+        enabled         true;
+        log             true;
+        timeStart       0;
+        timeEnd         1000;
+        executeControl  timeStep;
+        executeInterval 1;
         writeControl    writeTime;
+        writeInterval   -1;
     }
     Q1
     {
diff --git a/tutorials/incompressible/pimpleFoam/LES/vortexShed/Allrun b/tutorials/incompressible/pimpleFoam/LES/vortexShed/Allrun
index 8acb73de70a..37a5417ec4f 100755
--- a/tutorials/incompressible/pimpleFoam/LES/vortexShed/Allrun
+++ b/tutorials/incompressible/pimpleFoam/LES/vortexShed/Allrun
@@ -21,5 +21,5 @@ then
     runParallel -s surface noise -dict system/noiseDict-surface
 fi
 
-
 #------------------------------------------------------------------------------
+
diff --git a/tutorials/incompressible/pimpleFoam/LES/vortexShed/system/controlDict b/tutorials/incompressible/pimpleFoam/LES/vortexShed/system/controlDict
index 67b5c6b6cba..9a90a30b1e1 100644
--- a/tutorials/incompressible/pimpleFoam/LES/vortexShed/system/controlDict
+++ b/tutorials/incompressible/pimpleFoam/LES/vortexShed/system/controlDict
@@ -45,6 +45,7 @@ timePrecision   6;
 
 runTimeModifiable true;
 
+
 functions
 {
     minMax1
@@ -56,13 +57,24 @@ functions
 
     curle
     {
-        libs            (fieldFunctionObjects);
+        // Mandatory entries
         type            Curle;
-        writeControl    writeTime;
-        timeStart       0.1;
-
+        libs            (fieldFunctionObjects);
         patches         (cylinder);
         c0              343;
+
+        // Optional (inherited) entries
+        field           p;
+        result          Curle;
+        region          region0;
+        enabled         true;
+        log             true;
+        timeStart       0.1;
+        timeEnd         1000;
+        executeControl  timeStep;
+        executeInterval 1;
+        writeControl    writeTime;
+        writeInterval   -1;
     }
 
     cuttingPlane
diff --git a/tutorials/incompressible/pimpleFoam/RAS/propeller/system/AMIWeights b/tutorials/incompressible/pimpleFoam/RAS/propeller/system/AMIWeights
index 58eaf268a66..b2ac75dc28a 100644
--- a/tutorials/incompressible/pimpleFoam/RAS/propeller/system/AMIWeights
+++ b/tutorials/incompressible/pimpleFoam/RAS/propeller/system/AMIWeights
@@ -6,13 +6,28 @@
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 
-AMIWeights
+AMIWeights1
 {
-    type          AMIWeights;
-    libs          (fieldFunctionObjects);
-    writeControl  writeTime;
-    writeFields   no;
-    // writeFields   yes;
+    // Mandatory entries
+    type             AMIWeights;
+    libs             (fieldFunctionObjects);
+    writeFields     true;
+
+    // Optional (inherited) entries
+    writePrecision   10;
+    writeToFile      true;
+    useUserTime      false;
+
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval  -1;
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/stabilizationSchemes b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/stabilizationSchemes
index b349d7881c5..94794c1c362 100644
--- a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/stabilizationSchemes
+++ b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/stabilizationSchemes
@@ -11,48 +11,69 @@ residuals
     type                solverInfo;
     libs                (utilityFunctionObjects);
     writeResidualFields true;
-    writeControl        outputTime;
+    writeControl        writeTime;
     fields              (p);
 }
 
 blendingFactor
 {
+    // Mandatory entries
     type                stabilityBlendingFactor;
     libs                (fieldFunctionObjects);
-    log                 true;
-    writeToFile         false;
+    field               U;
+    result              UBlendingFactor;
 
-    switchNonOrtho      yes;
-    switchGradCc        no;
-    switchResiduals     yes;
-    switchSkewness      no;
-    switchFaceWeight    no;
-    switchCo            no;
+    // Optional entries
+    tolerance           0.001;
 
+    // Any of the options can be chosen in combinations
+    // Option-1
+    switchNonOrtho      yes;
     maxNonOrthogonality 20;
     minNonOrthogonality 60;
 
+    // Option-2
+    switchGradCc        no;
     maxGradCc           3;
     minGradCc           4;
 
+    // Option-3
+    switchResiduals     yes;
     maxResidual         100;
-
     P                   5;
     I                   0.01;
     D                   0.5;
 
+    // Option-4
+    switchFaceWeight    no;
     minFaceWeight       0.3;
     maxFaceWeight       0.2;
 
-    Co1                 1;
-    Co2                 2;
-
+    // Option-5
+    switchSkewness      no;
     maxSkewness         2;
     minSkewness         3;
 
+    // Option-6
+    switchCo            no;
+    Co1                 1;
+    Co2                 2;
+
+    // Optional (inherited) entries
+    writePrecision  10;
+    writeToFile     false;
+    useUserTime     true;
 
-    field               U;
-    result              UBlendingFactor;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/0/U b/tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/U
similarity index 100%
rename from tutorials/incompressible/pisoFoam/RAS/cavity/0/U
rename to tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/U
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/0/epsilon b/tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/epsilon
similarity index 100%
rename from tutorials/incompressible/pisoFoam/RAS/cavity/0/epsilon
rename to tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/epsilon
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/0/k b/tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/k
similarity index 100%
rename from tutorials/incompressible/pisoFoam/RAS/cavity/0/k
rename to tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/k
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/0/nuTilda b/tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/nuTilda
similarity index 100%
rename from tutorials/incompressible/pisoFoam/RAS/cavity/0/nuTilda
rename to tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/nuTilda
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/0/nut b/tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/nut
similarity index 100%
rename from tutorials/incompressible/pisoFoam/RAS/cavity/0/nut
rename to tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/nut
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/0/omega b/tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/omega
similarity index 100%
rename from tutorials/incompressible/pisoFoam/RAS/cavity/0/omega
rename to tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/omega
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/0/p b/tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/p
similarity index 100%
rename from tutorials/incompressible/pisoFoam/RAS/cavity/0/p
rename to tutorials/incompressible/pisoFoam/RAS/cavity/0.orig/p
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/Allclean b/tutorials/incompressible/pisoFoam/RAS/cavity/Allclean
new file mode 100755
index 00000000000..fb1f3847301
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/Allclean
@@ -0,0 +1,8 @@
+#!/bin/sh
+cd "${0%/*}" || exit                                # Run from this directory
+. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions      # Tutorial clean functions
+#------------------------------------------------------------------------------
+
+cleanCase0
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/Allrun b/tutorials/incompressible/pisoFoam/RAS/cavity/Allrun
new file mode 100755
index 00000000000..457cd661e45
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/Allrun
@@ -0,0 +1,12 @@
+#!/bin/sh
+cd "${0%/*}" || exit                                # Run from this directory
+. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions        # Tutorial run functions
+#------------------------------------------------------------------------------
+
+runApplication blockMesh
+
+restore0Dir
+
+runApplication $(getApplication)
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOCourantNo b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOCourantNo
new file mode 100644
index 00000000000..84bb600199b
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOCourantNo
@@ -0,0 +1,34 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+CourantNo1
+{
+    // Mandatory entries
+    type            CourantNo;
+    libs            (fieldFunctionObjects);
+
+    // Optional entries
+    rho             rho;
+
+    // Optional (inherited) entries
+    field           phi;
+    result          CourantNumberField;
+
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOLambVector b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOLambVector
new file mode 100644
index 00000000000..4c2c208399d
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOLambVector
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+LambVector1
+{
+    // Mandatory entries
+    type            LambVector;
+    libs            (fieldFunctionObjects);
+
+    // Optional (inherited) entries
+    field           U;
+    result          LambVectorField;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOLambda2 b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOLambda2
new file mode 100644
index 00000000000..47c7aea56b9
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOLambda2
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+Lambda21
+{
+    // Mandatory entries
+    type            Lambda2;
+    libs            (fieldFunctionObjects);
+
+    // Optional (inherited) entries
+    field           U;
+    result          Lambda2Field;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOPecletNo b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOPecletNo
new file mode 100644
index 00000000000..61dacfe5069
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOPecletNo
@@ -0,0 +1,33 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+PecletNo1
+{
+    // Mandatory entries
+    type            PecletNo;
+    libs            (fieldFunctionObjects);
+
+    // Optional entries
+    rho             rho;
+
+    // Optional (inherited) entries
+    field           phi;
+    result          PecletNoField;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.1;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOQ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOQ
new file mode 100644
index 00000000000..c1a94b96828
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOQ
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+Q1
+{
+    // Mandatory entries
+    type            Q;
+    libs            (fieldFunctionObjects);
+
+    // Optional (inherited) entries
+    field           U;
+    result          QField;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOadd b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOadd
new file mode 100644
index 00000000000..53ab4255d7e
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOadd
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+add1
+{
+    // Mandatory entries
+    type            add;
+    libs            (fieldFunctionObjects);
+    fields          (k k_0);
+
+    // Optional (inherited) entries
+    result          kTotal;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         10;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    runTime;
+    writeInterval   1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOblendingFactor b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOblendingFactor
new file mode 100644
index 00000000000..993527c09c1
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOblendingFactor
@@ -0,0 +1,34 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+blendingFactor1
+{
+    // Mandatory entries
+    type            blendingFactor;
+    libs            (fieldFunctionObjects);
+    field           U;
+
+    // Optional entries
+    phi             phi;
+    tolerance       0.001;
+
+    // Optional (inherited) entries
+    result          blendingFactorField;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 2;
+    writeControl    timeStep;
+    writeInterval   50;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOcomponents b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOcomponents
new file mode 100644
index 00000000000..6df0242f82f
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOcomponents
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+components1
+{
+    // Mandatory entries
+    type            components;
+    libs            (fieldFunctionObjects);
+    field           U;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOcontinuityError b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOcontinuityError
new file mode 100644
index 00000000000..7c16ff2de78
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOcontinuityError
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+continuityError1
+{
+    // Mandatory entries
+    type            continuityError;
+    libs            (fieldFunctionObjects);
+
+    // Optional entries
+    phi             phi;
+
+    // Optional (inherited) entries
+    writePrecision  10;
+    writeToFile     true;
+    useUserTime     true;
+
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOddt b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOddt
new file mode 100644
index 00000000000..5080cc8240d
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOddt
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+ddt1
+{
+    // Mandatory entries
+    type            ddt;
+    libs            (fieldFunctionObjects);
+    field           U;
+
+    // Optional (inherited) entries
+    result          ddtU;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.1;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOddt2 b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOddt2
new file mode 100644
index 00000000000..e509f4fd6c4
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOddt2
@@ -0,0 +1,33 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+ddt21
+{
+    // Mandatory entries
+    type            ddt2;
+    libs            (fieldFunctionObjects);
+    fields          (U p);
+
+    // Optional entries
+    mag           false;
+    result        d@@dt2;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         10;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    runTime;
+    writeInterval   1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOdiv b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOdiv
new file mode 100644
index 00000000000..44375fbb7fd
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOdiv
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+div1
+{
+    // Mandatory entries
+    type            div;
+    libs            (fieldFunctionObjects);
+    field           U;
+
+    // Optional (inherited) entries
+    result          divU;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+div2
+{
+    // Mandatory entries
+    type            div;
+    libs            (fieldFunctionObjects);
+    field           phi;
+
+    // Optional (inherited) entries
+    result          divPhi;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 10;
+    writeControl    timeStep;
+    writeInterval   50;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOenstrophy b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOenstrophy
new file mode 100644
index 00000000000..934ccba4618
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOenstrophy
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+enstrophy1
+{
+    // Mandatory entries
+    type            enstrophy;
+    libs            (fieldFunctionObjects);
+
+    // Optional (inherited) entries
+    field           U;
+    result          enstrophyField;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOfieldAverage b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOfieldAverage
new file mode 100644
index 00000000000..b874c2256cd
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOfieldAverage
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+fieldAverage1
+{
+    // Mandatory entries
+    type            fieldAverage;
+    libs            (fieldFunctionObjects);
+    fields
+    (
+        U
+        {
+            mean         on;
+            prime2Mean   on;
+            base         time;
+            /*
+            windowType   exact;
+            window       10.0;
+            windowName   w1U;
+            allowRestart true;
+            */
+        }
+
+        /*
+        p
+        {
+            mean         on;
+            prime2Mean   on;
+            base         iteration;
+            windowType   approximate;
+            window       1000;
+            windowName   w1p;
+        }
+        */
+    );
+
+    // Optional entries
+    restartOnRestart    false;
+    restartOnOutput     false;
+    periodicRestart     false;
+    // restartPeriod       0.002;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOflowType b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOflowType
new file mode 100644
index 00000000000..34b6597b8c8
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOflowType
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+flowType1
+{
+    // Mandatory entries
+    type            flowType;
+    libs            (fieldFunctionObjects);
+
+    // Optional (inherited) entries
+    field           U;
+    result          flowTypeField;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOflux b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOflux
new file mode 100644
index 00000000000..c37847e685a
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOflux
@@ -0,0 +1,33 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+flux1
+{
+    // Mandatory entries
+    type            flux;
+    libs            (fieldFunctionObjects);
+
+    // Optional entries
+    rho             none;
+
+    // Optional (inherited) entries
+    field           U;
+    result          fluxField;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOgrad b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOgrad
new file mode 100644
index 00000000000..e25b13372da
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOgrad
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+grad1
+{
+    // Mandatory entries
+    type            grad;
+    libs            (fieldFunctionObjects);
+    field           U;
+
+    // Optional (inherited) entries
+    result          gradU;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+grad2
+{
+    // Mandatory entries
+    type            grad;
+    libs            (fieldFunctionObjects);
+    field           phi;
+
+    // Optional (inherited) entries
+    result          gradPhi;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 10;
+    writeControl    timeStep;
+    writeInterval   50;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOhistogram b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOhistogram
new file mode 100644
index 00000000000..ca9e6f321d7
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOhistogram
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+histogram1
+{
+    // Mandatory entries
+    type            histogram;
+    libs            (fieldFunctionObjects);
+    field           p;
+    nBins           100;
+    setFormat       raw;
+
+    // Optional entries
+    max             10;
+    min            -10;
+
+    // Optional (inherited) entries
+    writePrecision   16;
+    writeToFile      true;
+    useUserTime      true;
+
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOlimitFields b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOlimitFields
new file mode 100644
index 00000000000..9d2159c9861
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOlimitFields
@@ -0,0 +1,32 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+limitFields1
+{
+    // Mandatory entries
+    type            limitFields;
+    libs            (fieldFunctionObjects);
+    fields          (U p);
+    limit           both;
+    min             0;
+    max             5;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOmag b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOmag
new file mode 100644
index 00000000000..f0f2f91e34f
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOmag
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+mag1
+{
+    // Mandatory entries
+    type            mag;
+    libs            (fieldFunctionObjects);
+    field           U;
+
+    // Optional (inherited) entries
+    result          magU;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+mag2
+{
+    // Mandatory entries
+    type            mag;
+    libs            (fieldFunctionObjects);
+    field           p;
+
+    // Optional (inherited) entries
+    result          magP;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 10;
+    writeControl    timeStep;
+    writeInterval   50;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOmagSqr b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOmagSqr
new file mode 100644
index 00000000000..f342be3f4c3
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOmagSqr
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+magSqr1
+{
+    // Mandatory entries
+    type            magSqr;
+    libs            (fieldFunctionObjects);
+    field           U;
+
+    // Optional (inherited) entries
+    result          magSqrU;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+magSqr2
+{
+    // Mandatory entries
+    type            magSqr;
+    libs            (fieldFunctionObjects);
+    field           p;
+
+    // Optional (inherited) entries
+    result          magSqrP;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 10;
+    writeControl    timeStep;
+    writeInterval   50;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOmomentum b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOmomentum
new file mode 100644
index 00000000000..14891606178
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOmomentum
@@ -0,0 +1,43 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+momentum1
+{
+    // Mandatory entries
+    type            momentum;
+    libs            (fieldFunctionObjects);
+
+    // Optional entries
+    regionType      all;
+    writeMomentum   yes;
+    writePosition   yes;
+    writeVelocity   yes;
+    p               p;
+    U               U;
+    rho             rho;
+    rhoRef          1.0;
+    cylindrical     false;
+
+    // Optional (inherited) entries
+    writePrecision  10;
+    writeToFile     true;
+    useUserTime     true;
+
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOnearWallFields b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOnearWallFields
new file mode 100644
index 00000000000..e47e148d94b
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOnearWallFields
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+nearWallFields1
+{
+    // Mandatory entries
+    type            nearWallFields;
+    libs            (fieldFunctionObjects);
+    fields
+    (
+        (U UNear)
+        (p pNear)
+    );
+    patches         (fixedWalls);
+    distance        0.001;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOpressure b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOpressure
new file mode 100644
index 00000000000..2b09f1ea584
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOpressure
@@ -0,0 +1,121 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+pressure1
+{
+    // Mandatory entries
+    type            pressure;
+    libs            (fieldFunctionObjects);
+    mode            static;
+
+    // Optional entries
+    U               U;
+    rho             rhoInf;
+    rhoInf          1.0;
+    pRef            1.0;
+
+    // Optional (inherited) entries
+    result          staticP;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+pressure2
+{
+    // Mandatory entries
+    type            pressure;
+    libs            (fieldFunctionObjects);
+    mode            total;
+
+    // Optional entries
+    U               U;
+    rho             rhoInf;
+    rhoInf          1.0;
+    pRef            1.0;
+
+    // Optional (inherited) entries
+    result          totalP;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       1;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 10;
+    writeControl    timeStep;
+    writeInterval   50;
+}
+
+
+pressure3
+{
+    // Mandatory entries
+    type            pressure;
+    libs            (fieldFunctionObjects);
+    mode            staticCoeff;
+
+    // Optional entries
+    U               U;
+    rho             rhoInf;
+    rhoInf          1.0;
+    pRef            1.0;
+    pInf            1.0;
+    UInf            (1 0 0);
+
+    // Optional (inherited) entries
+    result          staticCoeffP;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 15;
+    writeControl    timeStep;
+    writeInterval   75;
+}
+
+
+pressure4
+{
+    // Mandatory entries
+    type            pressure;
+    libs            (fieldFunctionObjects);
+    mode            totalCoeff;
+
+    // Optional entries
+    U               U;
+    rho             rhoInf;
+    rhoInf          1.0;
+    pRef            1.0;
+    pInf            1.0;
+    UInf            (1.0 0.0 0.0);
+
+    // Optional (inherited) entries
+    result          totalCoeffP;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 25;
+    writeControl    timeStep;
+    writeInterval   100;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOprocessorField b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOprocessorField
new file mode 100644
index 00000000000..2b109ba2b10
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOprocessorField
@@ -0,0 +1,28 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+processorField1
+{
+    // Mandatory entries
+    type            processorField;
+    libs            (fieldFunctionObjects);
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         5000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOproudmanAcousticPower b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOproudmanAcousticPower
new file mode 100644
index 00000000000..ebc9d2bd615
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOproudmanAcousticPower
@@ -0,0 +1,33 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+proudmanAcousticPower1
+{
+    // Mandatory entries
+    type            proudmanAcousticPower;
+    libs            (fieldFunctionObjects);
+
+    // Optional entries
+    alphaEps        0.1;
+    aRef            340;
+    rhoInf          1.0;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         5000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOrandomise b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOrandomise
new file mode 100644
index 00000000000..ed1a36e487f
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOrandomise
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+randomise1
+{
+    // Mandatory entries
+    type            randomise;
+    libs            (fieldFunctionObjects);
+    magPerturbation 0.1;
+    field           U;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOreadFields b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOreadFields
new file mode 100644
index 00000000000..e532b745dd3
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOreadFields
@@ -0,0 +1,32 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+readFields1
+{
+    // Mandatory entries
+    type            readFields;
+    libs            (fieldFunctionObjects);
+    fields          (U p);
+
+    // Optional entries
+    readOnStart     true;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOreference b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOreference
new file mode 100644
index 00000000000..972fceba7b3
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOreference
@@ -0,0 +1,62 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+reference1
+{
+    // Mandatory entries
+    type            reference;
+    libs            (fieldFunctionObjects);
+    field           U;
+
+    // Optional entries
+    scale           1.0;
+    offset          (0.0 0.0 0.0);
+    position        (0 0 0);
+    interpolationScheme    cell;
+
+    // Optional (inherited) entries
+    result          diffU;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+reference2
+{
+    // Mandatory entries
+    type            reference;
+    libs            (fieldFunctionObjects);
+    field           p;
+
+    // Optional entries
+    scale           -2.0;
+    offset          1.5;
+    position        (0 0 0);
+    interpolationScheme    cellPoint;
+
+    // Optional (inherited) entries
+    result          diffP;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsetFlow b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsetFlow
new file mode 100644
index 00000000000..5d2175cb724
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsetFlow
@@ -0,0 +1,32 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+setFlow1
+{
+    // Mandatory entries
+    type            setFlow;
+    libs            (fieldFunctionObjects);
+    mode            function;
+    scale           1;
+    reverseTime     1;
+    velocity        (1 0 0);
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 500;
+    writeControl    timeStep;
+    writeInterval   500;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOstreamFunction b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOstreamFunction
new file mode 100644
index 00000000000..a4081be01cc
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOstreamFunction
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+streamFunction1
+{
+    // Mandatory entries
+    type            streamFunction;
+    libs            (fieldFunctionObjects);
+
+    // Optional (inherited) entries
+    field           phi;
+    result          streamFunc;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.1;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOstreamLine b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOstreamLine
new file mode 100644
index 00000000000..7b8b6b4125b
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOstreamLine
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+streamLine1
+{
+    // Mandatory entries
+    type            streamLine;
+    libs            (fieldFunctionObjects);
+    U               U;
+    fields          (U p k);
+    setFormat       vtk;
+    direction       forward;
+    lifeTime        10;
+    cloud           particleTracks;
+    seedSampleSet
+    {
+        type        uniform;
+        axis        x;
+        start       (0.0 0.05 0.005);
+        end         (0.1 0.05 0.005);
+        nPoints     20;
+    }
+
+    // Optional entries
+    // bounds          (0.2 -10 -10)(0.22 10 10);
+    // trackLength     1e-3;
+    nSubCycle       1;
+    interpolationScheme cellPoint;
+
+    // Deprecated
+    // trackForward    true;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsubtract b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsubtract
new file mode 100644
index 00000000000..ab35c1d51bc
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsubtract
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+subtract1
+{
+    // Mandatory entries
+    type            subtract;
+    libs            (fieldFunctionObjects);
+    fields          (k k_0);
+
+    // Optional (inherited) entries
+    result          kDiff;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         10;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    runTime;
+    writeInterval   1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsurfaceDistance b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsurfaceDistance
new file mode 100644
index 00000000000..1551952815f
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsurfaceDistance
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+surfaceDistance1
+{
+    // Mandatory entries
+    type            surfaceDistance;
+    libs            (fieldFunctionObjects);
+    geometry
+    {
+        pending.obj
+        {
+            type triSurfaceMesh;
+            name pending;
+        }
+    }
+
+    // Optional entries
+    calculateCells  true;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  writeTime;
+    executeInterval -1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsurfaceInterpolate b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsurfaceInterpolate
new file mode 100644
index 00000000000..390581a0395
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOsurfaceInterpolate
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+surfaceInterpolate1
+{
+    // Mandatory entries
+    type            surfaceInterpolate;
+    libs            (fieldFunctionObjects);
+    fields          ((U surfaceU) (p surfaceP) (k surfaceK) (divU surfaceDivU));
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  writeTime;
+    executeInterval -1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOturbulenceFields b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOturbulenceFields
new file mode 100644
index 00000000000..cd81b187cf0
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOturbulenceFields
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+turbulenceFields1
+{
+    // Mandatory entries
+    type            turbulenceFields;
+    libs            (fieldFunctionObjects);
+    fields          (k epsilon omega nuTilda nut nuEff R devReff L);
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  writeTime;
+    executeInterval -1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+turbulenceFields2
+{
+    // Mandatory entries
+    type            turbulenceFields;
+    libs            (fieldFunctionObjects);
+    field           I;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  writeTime;
+    executeInterval -1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOvalueAverage b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOvalueAverage
new file mode 100644
index 00000000000..252cc44b867
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOvalueAverage
@@ -0,0 +1,38 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+valueAverage1
+{
+    // Mandatory entries
+    type            valueAverage;
+    libs            (fieldFunctionObjects);
+    functionObject  momentum1;
+    fields          (momentum_x momentum_y momentum_z);
+
+    // Optional entries
+    resetOnRestart  false;
+    window          1;
+
+    // Optional (inherited) entries
+    writePrecision  10;
+    writeToFile     true;
+    useUserTime     true;
+
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOvorticity b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOvorticity
new file mode 100644
index 00000000000..51ab43da759
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOvorticity
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+vorticity1
+{
+    // Mandatory entries
+    type            vorticity;
+    libs            (fieldFunctionObjects);
+
+    // Optional (inherited) entries
+    field           U;
+    result          vorticityField;
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOwallShearStress b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOwallShearStress
new file mode 100644
index 00000000000..e0d232f44c6
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOwallShearStress
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+wallShearStress1
+{
+    // Mandatory entries
+    type            wallShearStress;
+    libs            (fieldFunctionObjects);
+
+    // Optional entries
+    patches          (fixedWalls);
+
+    // Optional (inherited) entries
+    writePrecision  10;
+    writeToFile     true;
+    useUserTime     true;
+
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOwriteCellCentres b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOwriteCellCentres
new file mode 100644
index 00000000000..a66f57ec5a4
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOwriteCellCentres
@@ -0,0 +1,28 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+writeCellCentres1
+{
+    // Mandatory entries
+    type            writeCellCentres;
+    libs            (fieldFunctionObjects);
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  writeTime;
+    executeInterval -1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOwriteCellVolumes b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOwriteCellVolumes
new file mode 100644
index 00000000000..434b4d6ae1b
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOwriteCellVolumes
@@ -0,0 +1,28 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+writeCellVolumes1
+{
+    // Mandatory entries
+    type            writeCellVolumes;
+    libs            (fieldFunctionObjects);
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  writeTime;
+    executeInterval -1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOyPlus b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOyPlus
new file mode 100644
index 00000000000..866f25ddd5e
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOyPlus
@@ -0,0 +1,32 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+yPlus1
+{
+    // Mandatory entries
+    type            yPlus;
+    libs            (fieldFunctionObjects);
+
+    // Optional (inherited) entries
+    writePrecision  10;
+    writeToFile     true;
+    useUserTime     true;
+
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOzeroGradient b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOzeroGradient
new file mode 100644
index 00000000000..2a3d70f9759
--- /dev/null
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/FOzeroGradient
@@ -0,0 +1,52 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+zeroGradient1
+{
+    // Mandatory entries
+    type            zeroGradient;
+    libs            (fieldFunctionObjects);
+    fields          (U "(epsilon|omega)" p);
+
+    // Optional entries
+    result          @@zeroGrad;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+zeroGradient2
+{
+    // Mandatory entries
+    type            zeroGradient;
+    libs            (fieldFunctionObjects);
+    fields          (U "(epsilon|omega)" p);
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0.25;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 5;
+    writeControl    timeStep;
+    writeInterval   25;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/controlDict b/tutorials/incompressible/pisoFoam/RAS/cavity/system/controlDict
index b82b255acdf..2bd75b7277d 100644
--- a/tutorials/incompressible/pisoFoam/RAS/cavity/system/controlDict
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/controlDict
@@ -46,4 +46,52 @@ timePrecision   6;
 runTimeModifiable true;
 
 
+functions
+{
+    #include "FOfieldAverage"
+    #include "FOadd"
+    #include "FOblendingFactor"
+    #include "FOcomponents"
+    #include "FOCourantNo"
+    #include "FOcontinuityError"
+    #include "FOddt"
+    #include "FOddt2"
+    #include "FOdiv"
+    #include "FOenstrophy"
+    #include "FOflowType"
+    #include "FOflux"
+    #include "FOgrad"
+    #include "FOhistogram"
+    #include "FOLambda2"
+    #include "FOLambVector"
+    #include "FOlimitFields"
+    #include "FOmag"
+    #include "FOmagSqr"
+    #include "FOmomentum"
+    #include "FOnearWallFields"
+    #include "FOPecletNo"
+    #include "FOpressure"
+    #include "FOprocessorField"
+    #include "FOproudmanAcousticPower"
+    #include "FOQ"
+    #include "FOrandomise"
+    #include "FOreadFields"
+    #include "FOsetFlow"
+    #include "FOstreamFunction"
+    #include "FOstreamLine"
+    #include "FOsubtract"
+    //#include "FOsurfaceDistance"
+    #include "FOsurfaceInterpolate"
+    #include "FOturbulenceFields"
+    #include "FOvalueAverage"
+    #include "FOvorticity"
+    #include "FOreference"
+    #include "FOwallShearStress"
+    #include "FOwriteCellCentres"
+    #include "FOwriteCellVolumes"
+    #include "FOyPlus"
+    #include "FOzeroGradient"
+}
+
+
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/fvSchemes b/tutorials/incompressible/pisoFoam/RAS/cavity/system/fvSchemes
index e7c3727b4ff..a2e0ad2aa1b 100644
--- a/tutorials/incompressible/pisoFoam/RAS/cavity/system/fvSchemes
+++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/fvSchemes
@@ -28,12 +28,17 @@ gradSchemes
 divSchemes
 {
     default         none;
-    div(phi,U)      Gauss limitedLinearV 1;
+    div(phi,U)      Gauss CoBlended
+                        0.01                  // Co below which scheme1 is used
+                        limitedLinearV 1      // scheme1
+                        0.05                  // Co above which scheme2 is used
+                        linearUpwind grad(U); // scheme2
     div(phi,k)      Gauss limitedLinear 1;
     div(phi,epsilon) Gauss limitedLinear 1;
     div(phi,omega)  Gauss limitedLinear 1;
     div(phi,R)      Gauss limitedLinear 1;
     div(R)          Gauss linear;
+    div(U)          Gauss linear;             // enables div function object
     div(phi,nuTilda) Gauss limitedLinear 1;
     div((nuEff*dev2(T(grad(U))))) Gauss linear;
 }
diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/wallBoundedStreamLines b/tutorials/incompressible/simpleFoam/motorBike/system/wallBoundedStreamLines
index 668e3718aff..796b0a767a6 100644
--- a/tutorials/incompressible/simpleFoam/motorBike/system/wallBoundedStreamLines
+++ b/tutorials/incompressible/simpleFoam/motorBike/system/wallBoundedStreamLines
@@ -35,39 +35,19 @@ near
     distance        0.001;
 }
 
+
 // Use UNear to track along wall
 wallBoundedStreamLines
 {
-    // Where to load it from (if not already in solver)
-    libs            (fieldFunctionObjects);
+    // Mandatory entries
     type            wallBoundedStreamLine;
-
-    // Output every
-    writeControl    writeTime;
-
-    setFormat       vtk; //gnuplot; //xmgr; //raw; //jplot;
-
-    // Velocity field to use for tracking.
-    U               UNear;
-
-    // Interpolation method. Default is cellPoint.
-    // interpolationScheme pointMVC;
-
-    // Tracked forwards (+U) or backwards (-U)
-    trackForward    true;
-
-    interpolationScheme cellPoint;
-
-    // Names of fields to sample. Should contain above velocity field!
-    fields (p U k UNear);
-
-    // Steps particles can travel before being removed
-    lifeTime        100;
-
-    // Cloud name to use
+    libs            (fieldFunctionObjects);
+    U               UNear;           // Velocity field to use for tracking.
+    fields          (p U k UNear);   // Names of fields to sample.
+    setFormat       vtk;    //gnuplot; //xmgr; //raw; //jplot;
+    direction       forward;
+    lifeTime        100;    // Steps particles can travel before being removed
     cloud           wallBoundedParticleTracks;
-
-    // Seeding method.
     seedSampleSet
     {
         type        patchSeed;
@@ -75,7 +55,6 @@ wallBoundedStreamLines
         uniformCoeffs
         {
             axis        x;  //distance;
-
             start       (0.0035 0.0999 0.0001);
             end         (0.0035 0.0999 0.0099);
             nPoints     20;
@@ -94,6 +73,26 @@ wallBoundedStreamLines
             maxPoints   20000;
         }
     }
+
+    // Optional entries
+    // bounds          (0.2 -10 -10)(0.22 10 10);
+    // trackLength     1e-3;
+    // nSubCycle       1;
+    interpolationScheme cellPoint;
+
+    // Deprecated
+    // trackForward    true;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         1000;
+    executeControl  timeStep;
+    executeInterval 1;
+    writeControl    writeTime;
+    writeInterval   -1;
 }
 
 
diff --git a/tutorials/incompressible/simpleFoam/squareBend/system/derivedFields b/tutorials/incompressible/simpleFoam/squareBend/system/derivedFields
index 5e0d3b203bb..e45c0607763 100644
--- a/tutorials/incompressible/simpleFoam/squareBend/system/derivedFields
+++ b/tutorials/incompressible/simpleFoam/squareBend/system/derivedFields
@@ -1,21 +1,33 @@
-// -*- C++ -*-
-
-// ************************************************************************* //
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
 
 // Create additional volume fields (for sampling)
 derivedFields
 {
-    type    derivedFields;
-    libs    (fieldFunctionObjects);
-    log     true;
+    // Mandatory entries
+    type            derivedFields;
+    libs            (fieldFunctionObjects);
+    derived         (rhoU pTotal);
 
-    writeControl    none;
+    // Optional entries
+    rhoRef          1.25;
+
+    // Optional (inherited) entries
+    region          region0;
+    enabled         true;
+    log             true;
+    timeStart       0;
+    timeEnd         10000;
     executeControl  timeStep;
     executeInterval 1;
-
-    derived     (rhoU pTotal);
-
-    rhoRef      1.25;
+    writeControl    none;
+    writeInterval  -1;
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/lagrangian/sprayFoam/aachenBomb/system/controlDict b/tutorials/lagrangian/sprayFoam/aachenBomb/system/controlDict
index 3ef13718f7a..7ed4f0d849b 100644
--- a/tutorials/lagrangian/sprayFoam/aachenBomb/system/controlDict
+++ b/tutorials/lagrangian/sprayFoam/aachenBomb/system/controlDict
@@ -49,13 +49,14 @@ maxCo           0.1;
 
 runTimeModifiable yes;
 
+
 functions
 {
-    distribtion1
+    distribution1
     {
+        // Mandatory entries
         type            particleDistribution;
         libs            (fieldFunctionObjects);
-        writeControl    writeTime;
         cloud           sprayCloud;
         nameVsBinWidth
         (
@@ -63,6 +64,24 @@ functions
             (U 10)
         );
         setFormat       raw;
+
+        // Optional entries
+        tagField        none;
+
+        // Optional (inherited) entries
+        writePrecision  10;
+        writeToFile     true;
+        useUserTime     true;
+
+        region          region0;
+        enabled         true;
+        log             true;
+        timeStart       0;
+        timeEnd         1000;
+        executeControl  timeStep;
+        executeInterval 1;
+        writeControl    writeTime;
+        writeInterval   -1;
     }
 }
 
diff --git a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/controlDict b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/controlDict
index d46a0c9dade..d36cbdc1f60 100644
--- a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/controlDict
+++ b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/controlDict
@@ -53,16 +53,40 @@ maxAlphaCo      1;
 
 maxDeltaT       1;
 
+
 functions
 {
     extractEulerianParticles1
     {
+        // Mandatory entries
         type            extractEulerianParticles;
         libs            (fieldFunctionObjects);
-        writeControl    writeTime;
         faceZone        collector;
         alpha           alpha.water;
+
+        // Optional entries
+        alphaThreshold  0.1;
         nLocations      20;
+        U               U;
+        rho             rho;
+        phi             phi;
+        //minDiameter     1e-30;
+        //maxDiameter     1e30;
+
+        // Optional (inherited) entries
+        writePrecision   6;
+        writeToFile      true;
+        useUserTime      false;
+
+        region          region0;
+        enabled         true;
+        log             true;
+        timeStart       0;
+        timeEnd         1000;
+        executeControl  timeStep;
+        executeInterval 1;
+        writeControl    writeTime;
+        writeInterval   -1;
     }
 }
 
diff --git a/tutorials/multiphase/interIsoFoam/notchedDiscInSolidBodyRotation/system/controlDict b/tutorials/multiphase/interIsoFoam/notchedDiscInSolidBodyRotation/system/controlDict
index 5e82c78905b..74074c07a97 100644
--- a/tutorials/multiphase/interIsoFoam/notchedDiscInSolidBodyRotation/system/controlDict
+++ b/tutorials/multiphase/interIsoFoam/notchedDiscInSolidBodyRotation/system/controlDict
@@ -74,4 +74,5 @@ functions
     }
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict b/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict
index ff3acb8ec9d..84b498f4d75 100644
--- a/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict
+++ b/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict
@@ -90,6 +90,39 @@ functions
             }
         );
     }
+
+    regionSizeDistribution1
+    {
+        // Mandatory entries
+        type            regionSizeDistribution;
+        libs            (fieldFunctionObjects);
+        field           alpha.air;
+        patches         (inlet);
+        fields          (p U);
+        threshold       0.5;
+        maxDiameter     0.5;
+        nBins           100;
+        setFormat       gnuplot;
+
+        // Optional entries
+        minDiameter     0.0;
+        isoPlanes       false;
+
+        // Optional (inherited) entries
+        writePrecision  12;
+        writeToFile     true;
+        useUserTime     true;
+
+        region          region0;
+        enabled         true;
+        log             true;
+        timeStart       0;
+        timeEnd         1000;
+        executeControl  timeStep;
+        executeInterval 1;
+        writeControl    writeTime;
+        writeInterval   -1;
+    }
 }
 
 
diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict b/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict
index ff3acb8ec9d..83e37384513 100644
--- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict
+++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict
@@ -54,6 +54,15 @@ maxDeltaT       1;
 
 functions
 {
+    add1
+    {
+        type            add;
+        libs            (fieldFunctionObjects);
+        fields          (U.air U.water);
+        result          U.total;
+        writeControl    writeTime;
+    }
+
     fieldAverage1
     {
         type            fieldAverage;
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/controlDict b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/controlDict
index e07bf4712f0..a00e81250e2 100644
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/controlDict
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/controlDict
@@ -51,18 +51,38 @@ maxCo           0.01;
 maxAlphaCo      0.01;
 maxAlphaDdt     0.01;
 
+
 functions
 {
     interfaceHeight1
     {
-        type           interfaceHeight;
-        libs           (fieldFunctionObjects);
-        alpha          alpha.liquid;
-        locations      ((0 0 0));
+        // Mandatory entries
+        type            interfaceHeight;
+        libs            (fieldFunctionObjects);
+        locations       ((0 0 0));
+
+        // Optional entries
+        alpha           alpha.liquid;
         direction       (1 0 0);
+        liquid          true;
+        interpolationScheme    cellPoint;
+
+        // Optional (inherited) entries
+        writePrecision   16;
+        writeToFile      true;
+        useUserTime      true;
+
+        region          region0;
+        enabled         true;
+        log             true;
+        timeStart       0;
+        timeEnd         1000;
+        executeControl  timeStep;
+        executeInterval 1;
         writeControl    timeStep;
         writeInterval   3;
     }
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
index 319739f59ca..34e3fa3d17e 100644
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
@@ -51,18 +51,38 @@ maxCo           0.01;
 maxAlphaCo      0.01;
 maxDeltaT       0.01;
 
+
 functions
 {
     interfaceHeight1
     {
-        type           interfaceHeight;
-        libs           (fieldFunctionObjects);
-        alpha          alpha.liquid;
-        locations      ((0 0.0001 1e-5));
+        // Mandatory entries
+        type            interfaceHeight;
+        libs            (fieldFunctionObjects);
+        locations       ((0 0.0001 1e-5));
+
+        // Optional entries
+        alpha           alpha.liquid;
         direction       (1 0 0);
+        liquid          true;
+        interpolationScheme    cellPoint;
+
+        // Optional (inherited) entries
+        writePrecision   16;
+        writeToFile      true;
+        useUserTime      true;
+
+        region          region0;
+        enabled         true;
+        log             true;
+        timeStart       0;
+        timeEnd         1000;
+        executeControl  timeStep;
+        executeInterval 1;
         writeControl    timeStep;
         writeInterval   3;
     }
 }
 
+
 // ************************************************************************* //
-- 
GitLab