From 97459771adaa7ab9e85808871b2277a980f86bb1 Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Fri, 16 Jun 2023 15:59:07 +0200
Subject: [PATCH] ENH: more consistent handling/documentation of 'value' entry
 (#2703)

- for boundary conditions such as uniformFixed, uniformMixed etc the
  optional 'value' entry (optional) is used for the initial values and
  restarts.  Otherwise the various Function1 or PatchFunction1 entries
  are evaluated and used determine the boundary condition values.

  In most cases this is OK, but in some case such coded or expression
  entries with references to other fields it can be problematic since
  they may reference fields (eg, phi) that have not yet been created.

  For these cases the 'value' entry will be needed: documentation
  updated accordingly.

STYLE: eliminate some unneeded/unused declaration headers
---
 .../codedFixedValuePointPatchField.C          |  3 +
 .../codedFixedValuePointPatchField.H          |  3 +
 .../codedFixedValuePointPatchFields.C         | 18 +++---
 .../codedFixedValuePointPatchFields.H         | 51 ----------------
 ...VaryingUniformFixedValuePointPatchFields.C | 17 ++----
 ...VaryingUniformFixedValuePointPatchFields.H | 59 -------------------
 .../fixedShearStressFvPatchVectorField.C      |  2 +-
 .../epsilonWallFunctionFvPatchScalarField.C   |  2 +-
 .../omegaWallFunctionFvPatchScalarField.C     |  4 +-
 .../freeSurfaceVelocityFvPatchVectorField.C   |  3 +-
 ...yMotionDisplacementPointPatchVectorField.C |  2 +-
 .../processor/processorFaPatchField.C         |  2 +-
 .../clampedPlate/clampedPlateFaPatchField.C   |  3 +-
 .../inletOutlet/inletOutletFaPatchField.C     |  7 +--
 .../inletOutlet/inletOutletFaPatchField.H     |  2 +-
 .../outletInlet/outletInletFaPatchField.C     | 10 ++--
 .../outletInlet/outletInletFaPatchField.H     |  3 +-
 ...timeVaryingUniformFixedValueFaPatchField.C |  3 +
 ...imeVaryingUniformFixedValueFaPatchFields.C | 15 ++---
 ...imeVaryingUniformFixedValueFaPatchFields.H | 51 ----------------
 .../uniformFixedGradientFaPatchField.C        |  9 ++-
 .../uniformFixedGradientFaPatchField.H        |  6 ++
 .../uniformFixedGradientFaPatchFields.C       |  3 +-
 .../uniformFixedGradientFaPatchFields.H       | 50 ----------------
 .../uniformFixedValueFaPatchField.C           |  4 ++
 .../uniformFixedValueFaPatchField.H           |  6 ++
 .../uniformFixedValueFaPatchFields.C          |  3 +-
 .../uniformFixedValueFaPatchFields.H          | 50 ----------------
 .../uniformMixed/uniformMixedFaPatchField.C   |  6 +-
 .../uniformMixed/uniformMixedFaPatchField.H   |  6 ++
 .../uniformMixed/uniformMixedFaPatchFields.C  |  3 +-
 .../uniformMixed/uniformMixedFaPatchFields.H  | 50 ----------------
 .../exprFixedValueFvPatchField.C              | 11 +---
 .../exprFixedValueFvPatchField.H              |  5 +-
 .../fvPatchFields/exprMixedFvPatchField.C     |  5 +-
 .../fvPatchFields/exprMixedFvPatchField.H     |  5 ++
 .../exprValuePointPatchField.C                | 19 +++---
 .../exprValuePointPatchField.H                |  5 +-
 .../exprValuePointPatchFields.C               | 18 +++---
 .../exprValuePointPatchFields.H               | 51 ----------------
 .../cyclicAMI/cyclicAMIFvPatchField.C         |  2 +-
 .../processor/processorFvPatchField.C         |  2 +-
 .../derived/advective/advectiveFvPatchField.C |  4 +-
 .../codedFixedValueFvPatchField.C             |  5 +-
 .../codedFixedValueFvPatchField.H             |  3 +
 .../codedFixedValueFvPatchFields.C            | 16 ++---
 .../codedFixedValueFvPatchFields.H            | 51 ----------------
 .../codedMixed/codedMixedFvPatchField.H       |  4 +-
 .../codedMixed/codedMixedFvPatchFields.C      | 16 ++---
 .../codedMixed/codedMixedFvPatchFields.H      | 51 ----------------
 ...lectrostaticDepositionFvPatchScalarField.C |  2 +-
 .../fluxCorrectedVelocityFvPatchVectorField.C |  7 +--
 .../inletOutlet/inletOutletFvPatchField.C     |  8 +--
 .../inletOutlet/inletOutletFvPatchField.H     |  4 +-
 .../outletInlet/outletInletFvPatchField.C     | 10 ++--
 .../outletInlet/outletInletFvPatchField.H     |  6 +-
 .../outletMappedUniformInletFvPatchField.C    |  4 +-
 ...utletPhaseMeanVelocityFvPatchVectorField.C |  4 +-
 .../supersonicFreestreamFvPatchVectorField.C  |  2 +-
 ...timeVaryingMappedFixedValueFvPatchFields.C | 15 ++---
 ...timeVaryingMappedFixedValueFvPatchFields.H | 51 ----------------
 .../turbulentInletFvPatchField.C              |  2 +-
 .../uniformFixedGradientFvPatchField.C        | 10 +++-
 .../uniformFixedGradientFvPatchField.H        |  6 ++
 .../uniformFixedGradientFvPatchFields.C       | 16 ++---
 .../uniformFixedGradientFvPatchFields.H       | 51 ----------------
 .../uniformFixedValueFvPatchField.C           |  4 ++
 .../uniformFixedValueFvPatchField.H           |  6 ++
 .../uniformFixedValueFvPatchFields.C          |  3 +-
 .../uniformFixedValueFvPatchFields.H          | 50 ----------------
 .../uniformMixed/uniformMixedFvPatchField.C   |  6 +-
 .../uniformMixed/uniformMixedFvPatchField.H   |  6 ++
 .../uniformMixed/uniformMixedFvPatchFields.C  |  3 +-
 .../uniformMixed/uniformMixedFvPatchFields.H  | 50 ----------------
 .../variableHeightFlowRateFvPatchField.C      |  2 +-
 .../fvPatchFields/fvPatchField/fvPatchField.C |  2 +-
 ...oupledTemperatureMixedFvPatchScalarField.C | 10 ++--
 ...meVaryingMappedFixedValuePointPatchField.C |  2 +-
 ...eVaryingMappedFixedValuePointPatchFields.C | 17 ++----
 ...eVaryingMappedFixedValuePointPatchFields.H | 59 -------------------
 .../uniformFixedValuePointPatchField.C        |  9 ++-
 .../uniformFixedValuePointPatchField.H        | 15 ++++-
 .../uniformFixedValuePointPatchFields.C       |  5 +-
 .../uniformFixedValuePointPatchFields.H       | 58 ------------------
 .../oversetPolyPatch/oversetFvPatchField.C    |  2 +-
 ...imeVaryingMassSorptionFvPatchScalarField.C |  2 +-
 ...veViewFactorFixedValueFvPatchScalarField.C |  2 +-
 .../alphaFixedPressureFvPatchScalarField.C    |  3 +-
 .../waveMakerPointPatchVectorField.C          |  2 +-
 89 files changed, 262 insertions(+), 983 deletions(-)
 delete mode 100644 src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchFields.H
 delete mode 100644 src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchFields.H
 delete mode 100644 src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchFields.H
 delete mode 100644 src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchFields.H
 delete mode 100644 src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchFields.H
 delete mode 100644 src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchFields.H
 delete mode 100644 src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchFields.H
 delete mode 100644 src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchFields.H
 delete mode 100644 src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchFields.H
 delete mode 100644 src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchFields.H
 delete mode 100644 src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchFields.H
 delete mode 100644 src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchFields.H
 delete mode 100644 src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchFields.H
 delete mode 100644 src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchFields.H
 delete mode 100644 src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchFields.H

diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.C b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.C
index 0defd8cd73a..b289adb0346 100644
--- a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.C
+++ b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.C
@@ -188,6 +188,9 @@ Foam::codedFixedValuePointPatchField<Type>::codedFixedValuePointPatchField
 
     if (!this->readValueEntry(dict))
     {
+        // Ensure field has reasonable initial values
+        this->extrapolateInternal();
+
         // Evaluate to assign a value
         this->evaluate(Pstream::commsTypes::blocking);
     }
diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.H
index c398dc61313..438acf74ce3 100644
--- a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.H
@@ -31,6 +31,9 @@ Description
     Constructs on-the-fly a new boundary condition (derived from
     fixedValuePointPatchField) which is then used to evaluate.
 
+    The \c value entry (optional) is used for the initial values.
+    Otherwise the code is executed.
+
     The code entries:
     \plaintable
        codeInclude | include files
diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchFields.C b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchFields.C
index 486d38dc8ef..4b5b841ecd0 100644
--- a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchFields.C
+++ b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchFields.C
@@ -25,21 +25,17 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "codedFixedValuePointPatchFields.H"
-#include "pointPatchFields.H"
+#include "codedFixedValuePointPatchField.H"
 #include "addToRunTimeSelectionTable.H"
+#include "fieldTypes.H"
+#include "pointPatchFields.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-makePointPatchFields(codedFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
+    makePointPatchFieldTypedefs(codedFixedValue);
+    makePointPatchFields(codedFixedValue);
+}
 
 // ************************************************************************* //
diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchFields.H b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchFields.H
deleted file mode 100644
index 01eb26d7311..00000000000
--- a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchFields.H
+++ /dev/null
@@ -1,51 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2012 OpenFOAM Foundation
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef codedFixedValuePointPatchFields_H
-#define codedFixedValuePointPatchFields_H
-
-#include "codedFixedValuePointPatchField.H"
-#include "fieldTypes.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makePointPatchFieldTypedefs(codedFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchFields.C b/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchFields.C
index eb0a7174294..d00560a32c5 100644
--- a/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchFields.C
+++ b/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchFields.C
@@ -25,21 +25,16 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "timeVaryingUniformFixedValuePointPatchFields.H"
-#include "pointPatchFields.H"
+#include "timeVaryingUniformFixedValuePointPatchField.H"
 #include "addToRunTimeSelectionTable.H"
+#include "pointPatchFields.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-makePointPatchFields(timeVaryingUniformFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
+    makePointPatchFieldTypedefs(timeVaryingUniformFixedValue);
+    makePointPatchFields(timeVaryingUniformFixedValue);
+}
 
 // ************************************************************************* //
diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchFields.H b/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchFields.H
deleted file mode 100644
index 0a853e19edb..00000000000
--- a/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchFields.H
+++ /dev/null
@@ -1,59 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2011 OpenFOAM Foundation
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-InClass
-    Foam::timeVaryingUniformFixedValuePointPatchFields
-
-Description
-
-SourceFiles
-    timeVaryingUniformFixedValuePointPatchFields.C
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef timeVaryingUniformFixedValuePointPatchFields_H
-#define timeVaryingUniformFixedValuePointPatchFields_H
-
-#include "timeVaryingUniformFixedValuePointPatchField.H"
-#include "fieldTypes.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makePointPatchFieldTypedefs(timeVaryingUniformFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C
index da6fc26d91b..6ab7e77e167 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C
@@ -56,7 +56,7 @@ Foam::fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField
     fixedValueFvPatchVectorField(p, iF, dict, IOobjectOption::NO_READ),
     tau0_(dict.getOrDefault<vector>("tau", Zero))
 {
-    fvPatchField<vector>::patchInternalField(*this);
+    this->extrapolateInternal();  // Zero-gradient patch values
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C
index b4175b385bc..61c67a8726d 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C
@@ -366,7 +366,7 @@ epsilonWallFunctionFvPatchScalarField
     cornerWeights_()
 {
     // Apply zero-gradient condition on start-up
-    fvPatchField<scalar>::patchInternalField(*this);
+    this->extrapolateInternal();
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.C
index ec53d93776f..7339e1bd883 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.C
@@ -358,8 +358,8 @@ Foam::omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
     omega_(),
     cornerWeights_()
 {
-    // apply zero-gradient condition on start-up
-    fvPatchField<scalar>::patchInternalField(*this);
+    // Apply zero-gradient condition on start-up
+    this->extrapolateInternal();
 }
 
 
diff --git a/src/dynamicFaMesh/interfaceTrackingFvMesh/fvPatchFields/freeSurfaceVelocity/freeSurfaceVelocityFvPatchVectorField.C b/src/dynamicFaMesh/interfaceTrackingFvMesh/fvPatchFields/freeSurfaceVelocity/freeSurfaceVelocityFvPatchVectorField.C
index 2091fb1a566..64a3d3136ac 100644
--- a/src/dynamicFaMesh/interfaceTrackingFvMesh/fvPatchFields/freeSurfaceVelocity/freeSurfaceVelocityFvPatchVectorField.C
+++ b/src/dynamicFaMesh/interfaceTrackingFvMesh/fvPatchFields/freeSurfaceVelocity/freeSurfaceVelocityFvPatchVectorField.C
@@ -70,7 +70,8 @@ freeSurfaceVelocityFvPatchVectorField
     fixedGradientFvPatchVectorField(p, iF)
 {
     fvPatchFieldBase::readDict(dict);
-    fvPatchField<vector>::patchInternalField(*this);
+    // Apply zero-gradient condition on start-up
+    this->extrapolateInternal();
 }
 
 
diff --git a/src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
index e2c2ce7f8ee..b2a84771c64 100644
--- a/src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
@@ -59,7 +59,7 @@ solidBodyMotionDisplacementPointPatchVectorField
     const dictionary& dict
 )
 :
-    fixedValuePointPatchVectorField(p, iF, dict, false),
+    fixedValuePointPatchVectorField(p, iF, dict, IOobjectOption::NO_READ),
     SBMFPtr_(solidBodyMotionFunction::New(dict, this->db().time())),
     localPoints0Ptr_(nullptr)
 {
diff --git a/src/finiteArea/fields/faPatchFields/constraint/processor/processorFaPatchField.C b/src/finiteArea/fields/faPatchFields/constraint/processor/processorFaPatchField.C
index fe31f3761ca..429fccf4f04 100644
--- a/src/finiteArea/fields/faPatchFields/constraint/processor/processorFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/constraint/processor/processorFaPatchField.C
@@ -120,7 +120,7 @@ Foam::processorFaPatchField<Type>::processorFaPatchField
     // Use 'value' supplied, or set to internal field
     if (!this->readValueEntry(dict))
     {
-        faPatchField<Type>::patchInternalField(*this);
+        this->extrapolateInternal();  // Zero-gradient patch values
     }
 }
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/clampedPlate/clampedPlateFaPatchField.C b/src/finiteArea/fields/faPatchFields/derived/clampedPlate/clampedPlateFaPatchField.C
index f7bf73b3840..41f9a88f196 100644
--- a/src/finiteArea/fields/faPatchFields/derived/clampedPlate/clampedPlateFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/derived/clampedPlate/clampedPlateFaPatchField.C
@@ -58,8 +58,7 @@ clampedPlateFaPatchField<Type>::clampedPlateFaPatchField
 :
     faPatchField<Type>(p, iF, dict, IOobjectOption::NO_READ)
 {
-    // Set to the internal field
-    faPatchField<Type>::patchInternalField(*this);
+    this->extrapolateInternal();  // Zero-gradient patch values
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/inletOutlet/inletOutletFaPatchField.C b/src/finiteArea/fields/faPatchFields/derived/inletOutlet/inletOutletFaPatchField.C
index cf626198f47..9e485dae5e3 100644
--- a/src/finiteArea/fields/faPatchFields/derived/inletOutlet/inletOutletFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/derived/inletOutlet/inletOutletFaPatchField.C
@@ -74,14 +74,13 @@ Foam::inletOutletFaPatchField<Type>::inletOutletFaPatchField
 {
     // Require inletValue (MUST_READ)
     this->refValue().assign("inletValue", dict, p.size());
+    this->refGrad() = Zero;
+    this->valueFraction() = 0;
 
     if (!this->readValueEntry(dict))
     {
-        faPatchField<Type>::operator=(this->refValue());
+        faPatchField<Type>::extrapolateInternal();
     }
-
-    this->refGrad() = Zero;
-    this->valueFraction() = 0.0;
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/inletOutlet/inletOutletFaPatchField.H b/src/finiteArea/fields/faPatchFields/derived/inletOutlet/inletOutletFaPatchField.H
index 85e2c34108c..88abbde9c84 100644
--- a/src/finiteArea/fields/faPatchFields/derived/inletOutlet/inletOutletFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/derived/inletOutlet/inletOutletFaPatchField.H
@@ -39,6 +39,7 @@ Usage
         Property     | Description             | Required    | Default value
         phi          | Flux field name         | no          | phi
         inletValue   | Inlet value for reverse flow | yes    |
+        value        | initial field value          | optional |
     \endtable
 
     Example of the boundary condition specification:
@@ -55,7 +56,6 @@ Usage
     The mode of operation is determined by the sign of the flux across the
     patch edges.
 
-
 Note
     Sign conventions:
     - Positive flux (out of domain): apply zero-gradient condition
diff --git a/src/finiteArea/fields/faPatchFields/derived/outletInlet/outletInletFaPatchField.C b/src/finiteArea/fields/faPatchFields/derived/outletInlet/outletInletFaPatchField.C
index be919d76fb0..8702efcc85f 100644
--- a/src/finiteArea/fields/faPatchFields/derived/outletInlet/outletInletFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/derived/outletInlet/outletInletFaPatchField.C
@@ -41,7 +41,7 @@ Foam::outletInletFaPatchField<Type>::outletInletFaPatchField
 {
     this->refValue() = *this;
     this->refGrad() = Zero;
-    this->valueFraction() = 0.0;
+    this->valueFraction() = 0;
 }
 
 
@@ -72,15 +72,15 @@ Foam::outletInletFaPatchField<Type>::outletInletFaPatchField
 {
     faPatchFieldBase::readDict(dict);
 
+    // Require outletValue (MUST_READ)
     this->refValue().assign("outletValue", dict, p.size());
+    this->refGrad() = Zero;
+    this->valueFraction() = 0;
 
     if (!this->readValueEntry(dict))
     {
-        faPatchField<Type>::operator=(this->refValue());
+        faPatchField<Type>::extrapolateInternal();
     }
-
-    this->refGrad() = Zero;
-    this->valueFraction() = 0.0;
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/outletInlet/outletInletFaPatchField.H b/src/finiteArea/fields/faPatchFields/derived/outletInlet/outletInletFaPatchField.H
index 47ba41fba79..3b9187c63bc 100644
--- a/src/finiteArea/fields/faPatchFields/derived/outletInlet/outletInletFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/derived/outletInlet/outletInletFaPatchField.H
@@ -38,6 +38,7 @@ Usage
         Property     | Description             | Required    | Default value
         phi          | Flux field name         | no          | phi
         outletValue  | Outlet value for reverse flow | yes   |
+        value        | initial field value     | optional |
     \endtable
 
     Example of the boundary condition specification:
@@ -92,7 +93,7 @@ protected:
 
     // Protected Data
 
-        //- Name of flux field
+        //- Name of flux field (default: phi)
         word phiName_;
 
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchField.C b/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchField.C
index 3aeb93c4401..2486bd621a3 100644
--- a/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchField.C
@@ -58,6 +58,9 @@ timeVaryingUniformFixedValueFaPatchField
 {
     if (!this->readValueEntry(dict))
     {
+        // Ensure field has reasonable initial values
+        this->extrapolateInternal();
+
         updateCoeffs();
     }
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchFields.C b/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchFields.C
index fa19e8c9d89..b3894d4a8dd 100644
--- a/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchFields.C
+++ b/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchFields.C
@@ -26,21 +26,16 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "timeVaryingUniformFixedValueFaPatchFields.H"
+#include "timeVaryingUniformFixedValueFaPatchField.H"
 #include "addToRunTimeSelectionTable.H"
 #include "areaFields.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-makeFaPatchFields(timeVaryingUniformFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
+    makeFaPatchTypeFieldTypedefs(timeVaryingUniformFixedValue);
+    makeFaPatchFields(timeVaryingUniformFixedValue);
+}
 
 // ************************************************************************* //
diff --git a/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchFields.H b/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchFields.H
deleted file mode 100644
index d99c594ba6c..00000000000
--- a/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchFields.H
+++ /dev/null
@@ -1,51 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2016-2017 Wikki Ltd
-    Copyright (C) 2020 OpenCFD Ltd.
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef Foam_timeVaryingUniformFixedValueFaPatchFields_H
-#define Foam_timeVaryingUniformFixedValueFaPatchFields_H
-
-#include "timeVaryingUniformFixedValueFaPatchField.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makeFaPatchTypeFieldTypedefs(timeVaryingUniformFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchField.C b/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchField.C
index f74667880c1..650cdbef1af 100644
--- a/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchField.C
@@ -73,7 +73,14 @@ Foam::uniformFixedGradientFaPatchField<Type>::uniformFixedGradientFaPatchField
         )
     )
 {
-    this->evaluate();
+    if (!this->readValueEntry(dict))
+    {
+        // Ensure field has reasonable initial values
+        this->extrapolateInternal();
+
+        // Evaluate to assign a value
+        this->evaluate();
+    }
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchField.H b/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchField.H
index 52e0f026b63..7340d59a201 100644
--- a/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchField.H
@@ -36,6 +36,7 @@ Usage
     \table
         Property     | Description                  | Required | Default
         uniformGradient | uniform gradient          | yes |
+        value        | initial field value          | optional |
     \endtable
 
     Example of the boundary condition specification:
@@ -51,6 +52,11 @@ Note
     The uniformGradient entry is a Function1 type.
     The example above gives the usage for supplying a constant value.
 
+    The \c value entry (optional) is used for the initial values.
+    Otherwise the \c uniformGradient is used for the evaluation.
+    In some cases (eg, coded or expression entries with references to other
+    fields) this can be problematic and the \c value entry will be needed.
+
 See also
     Foam::Function1Types
     Foam::fixedGradientFaPatchField
diff --git a/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchFields.C b/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchFields.C
index 2e6a854e5ce..1e96ea89572 100644
--- a/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchFields.C
+++ b/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchFields.C
@@ -25,7 +25,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "uniformFixedGradientFaPatchFields.H"
+#include "uniformFixedGradientFaPatchField.H"
 #include "addToRunTimeSelectionTable.H"
 #include "areaFields.H"
 #include "edgeFields.H"
@@ -34,6 +34,7 @@ License
 
 namespace Foam
 {
+    makeFaPatchTypeFieldTypedefs(uniformFixedGradient);
     makeFaPatchFields(uniformFixedGradient);
 }
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchFields.H b/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchFields.H
deleted file mode 100644
index 7e7a2973d64..00000000000
--- a/src/finiteArea/fields/faPatchFields/derived/uniformFixedGradient/uniformFixedGradientFaPatchFields.H
+++ /dev/null
@@ -1,50 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2023 OpenCFD Ltd.
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef Foam_uniformFixedGradientFaPatchFields_H
-#define Foam_uniformFixedGradientFaPatchFields_H
-
-#include "uniformFixedGradientFaPatchField.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makeFaPatchTypeFieldTypedefs(uniformFixedGradient);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchField.C b/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchField.C
index 804b049a5f5..b7cef206c5a 100644
--- a/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchField.C
@@ -75,6 +75,10 @@ Foam::uniformFixedValueFaPatchField<Type>::uniformFixedValueFaPatchField
 {
     if (!this->readValueEntry(dict))
     {
+        // Ensure field has reasonable initial values
+        this->extrapolateInternal();
+
+        // Evaluate to assign a value
         this->evaluate();
     }
 }
diff --git a/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchField.H b/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchField.H
index 77612197790..4af170d7b80 100644
--- a/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchField.H
@@ -36,6 +36,7 @@ Usage
     \table
         Property     | Description                  | Required | Default
         uniformValue | uniform value                | yes |
+        value        | initial field value          | optional |
     \endtable
 
     Example of the boundary condition specification:
@@ -52,6 +53,11 @@ Note
     able to describe time varying functions.
     The example above gives the usage for supplying a constant value.
 
+    The \c value entry (optional) is used for the initial values.
+    Otherwise the \c uniformValue is evaluated.
+    In some cases (eg, coded or expression entries with references to other
+    fields) this can be problematic and the \c value entry will be needed.
+
 See also
     Foam::Function1Types
     Foam::fixedValueFaPatchField
diff --git a/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchFields.C b/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchFields.C
index 8bacac29afd..aa666b756c8 100644
--- a/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchFields.C
+++ b/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchFields.C
@@ -25,7 +25,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "uniformFixedValueFaPatchFields.H"
+#include "uniformFixedValueFaPatchField.H"
 #include "addToRunTimeSelectionTable.H"
 #include "areaFields.H"
 #include "edgeFields.H"
@@ -34,6 +34,7 @@ License
 
 namespace Foam
 {
+    makeFaPatchTypeFieldTypedefs(uniformFixedValue);
     makeFaPatchFields(uniformFixedValue);
 }
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchFields.H b/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchFields.H
deleted file mode 100644
index a4cd5cf48f4..00000000000
--- a/src/finiteArea/fields/faPatchFields/derived/uniformFixedValue/uniformFixedValueFaPatchFields.H
+++ /dev/null
@@ -1,50 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2023 OpenCFD Ltd.
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef Foam_uniformFixedValueFaPatchFields_H
-#define Foam_uniformFixedValueFaPatchFields_H
-
-#include "uniformFixedValueFaPatchField.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makeFaPatchTypeFieldTypedefs(uniformFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchField.C b/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchField.C
index cf9c1dd88d3..8f29c0f425d 100644
--- a/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchField.C
@@ -120,6 +120,10 @@ Foam::uniformMixedFaPatchField<Type>::uniformMixedFaPatchField
     // Use restart value if provided...
     if (!this->readValueEntry(dict))
     {
+        // Ensure field has reasonable initial values
+        this->extrapolateInternal();
+
+        // Evaluate to assign a value
         this->evaluate();
     }
 }
@@ -240,7 +244,7 @@ void Foam::uniformMixedFaPatchField<Type>::write(Ostream& os) const
         valueFractionFunc_->writeData(os);
     }
 
-    // Eg, for visualisation
+    // For visualisation / restart
     faPatchField<Type>::writeValueEntry(os);
 }
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchField.H b/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchField.H
index bd2819f6f42..620a16dbad6 100644
--- a/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchField.H
@@ -41,6 +41,7 @@ Usage
         uniformValue | uniform value                    | partly | 0
         uniformGradient | uniform gradient              | partly | 0
         uniformValueFraction | uniform valueFraction    | partly | depends
+        value        | initial field value              | optional |
     \endtable
 
     Example of the boundary condition specification:
@@ -67,6 +68,11 @@ Note
     If both \c uniformValue and \c uniformGradient are defined,
     the \c uniformValueFraction must also be defined.
 
+    The \c value entry (optional) is used for the initial values.
+    Otherwise the function(s) are used for the evaluation.
+    In some cases (eg, coded or expression entries with references to other
+    fields) this can be problematic and the \c value entry will be needed.
+
 See also
     Foam::Function1Types
     Foam::mixedFaPatchField
diff --git a/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchFields.C b/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchFields.C
index d7f518c1a11..17c8df4ff67 100644
--- a/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchFields.C
+++ b/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchFields.C
@@ -25,7 +25,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "uniformMixedFaPatchFields.H"
+#include "uniformMixedFaPatchField.H"
 #include "addToRunTimeSelectionTable.H"
 #include "areaFields.H"
 #include "edgeFields.H"
@@ -34,6 +34,7 @@ License
 
 namespace Foam
 {
+    makeFaPatchTypeFieldTypedefs(uniformMixed);
     makeFaPatchFields(uniformMixed);
 }
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchFields.H b/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchFields.H
deleted file mode 100644
index 4f91619e41d..00000000000
--- a/src/finiteArea/fields/faPatchFields/derived/uniformMixed/uniformMixedFaPatchFields.H
+++ /dev/null
@@ -1,50 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2023 OpenCFD Ltd.
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef Foam_uniformMixedFaPatchFields_H
-#define Foam_uniformMixedFaPatchFields_H
-
-#include "uniformMixedFaPatchField.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makeFaPatchTypeFieldTypedefs(uniformMixed);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/finiteVolume/expressions/fields/fvPatchFields/exprFixedValueFvPatchField.C b/src/finiteVolume/expressions/fields/fvPatchFields/exprFixedValueFvPatchField.C
index c3cf0df50c5..1616af6fbb8 100644
--- a/src/finiteVolume/expressions/fields/fvPatchFields/exprFixedValueFvPatchField.C
+++ b/src/finiteVolume/expressions/fields/fvPatchFields/exprFixedValueFvPatchField.C
@@ -128,15 +128,10 @@ Foam::exprFixedValueFvPatchField<Type>::exprFixedValueFvPatchField
     // Since we bypassed dictionary constructor
     fvPatchFieldBase::readDict(dict);
 
-    const auto* hasValue = dict.findEntry("value", keyType::LITERAL);
-
-    if (hasValue)
-    {
-        Field<Type>::assign(*hasValue, p.size());
-    }
-    else
+    if (!this->readValueEntry(dict))
     {
-        (*this) == this->patchInternalField();
+        // Ensure field has reasonable initial values
+        this->extrapolateInternal();
 
         #ifdef FULLDEBUG
         WarningInFunction
diff --git a/src/finiteVolume/expressions/fields/fvPatchFields/exprFixedValueFvPatchField.H b/src/finiteVolume/expressions/fields/fvPatchFields/exprFixedValueFvPatchField.H
index f922e6c6ac8..69395b5c62a 100644
--- a/src/finiteVolume/expressions/fields/fvPatchFields/exprFixedValueFvPatchField.H
+++ b/src/finiteVolume/expressions/fields/fvPatchFields/exprFixedValueFvPatchField.H
@@ -32,11 +32,14 @@ Description
 Usage
     \table
         Property     | Description                          | Required | Default
-        value        | fixed value                          | yes |
         valueExpr    | expression for uniformValue          | yes |
+        value        | initial field value                  | optional |
     \endtable
 
 Note
+    The \c value entry (optional) is used for the initial values.
+    Otherwise uses a zero-gradient condition for the initial value.
+
     This boundary condition is deprecated in favour of
     Foam::uniformFixedValueFvPatchField
     with expression entries.
diff --git a/src/finiteVolume/expressions/fields/fvPatchFields/exprMixedFvPatchField.C b/src/finiteVolume/expressions/fields/fvPatchFields/exprMixedFvPatchField.C
index 80e4db62ba8..8907e0141ca 100644
--- a/src/finiteVolume/expressions/fields/fvPatchFields/exprMixedFvPatchField.C
+++ b/src/finiteVolume/expressions/fields/fvPatchFields/exprMixedFvPatchField.C
@@ -169,7 +169,6 @@ Foam::exprMixedFvPatchField<Type>::exprMixedFvPatchField
     // Since we bypassed dictionary constructor
     fvPatchFieldBase::readDict(dict);
 
-    const auto* hasValue = dict.findEntry("value", keyType::LITERAL);
     const auto* hasRefValue = dict.findEntry("refValue", keyType::LITERAL);
 
     const auto* hasRefGradient
@@ -184,10 +183,8 @@ Foam::exprMixedFvPatchField<Type>::exprMixedFvPatchField
         this->refValue().assign(*hasRefValue, p.size());
     }
 
-    if (hasValue)
+    if (this->readValueEntry(dict))
     {
-        Field<Type>::assign(*hasValue, p.size());
-
         if (!hasRefValue)
         {
             // Ensure refValue has a sensible value for the "update" below
diff --git a/src/finiteVolume/expressions/fields/fvPatchFields/exprMixedFvPatchField.H b/src/finiteVolume/expressions/fields/fvPatchFields/exprMixedFvPatchField.H
index 437d0dc4c58..32bfa068db9 100644
--- a/src/finiteVolume/expressions/fields/fvPatchFields/exprMixedFvPatchField.H
+++ b/src/finiteVolume/expressions/fields/fvPatchFields/exprMixedFvPatchField.H
@@ -35,9 +35,14 @@ Usage
         valueExpr    | expression for uniformValue          | partly  | 0
         gradientExpr | expression for uniformGradient       | partly  | 0
         fractionExpr | expression for valueFraction         | partly  | depends
+        value        | initial field value                  | optional |
     \endtable
 
 Note
+    The \c value entry (optional) is used for the initial values.
+    Otherwise uses some heuristics of other entries
+    (not properly documented now since this boundary condition is deprecated).
+
     This boundary condition is deprecated in favour of
     Foam::uniformMixedFvPatchField,
     Foam::uniformFixedValueFvPatchField,
diff --git a/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchField.C b/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchField.C
index 1fdce54c392..f3e64884e26 100644
--- a/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchField.C
+++ b/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchField.C
@@ -115,6 +115,11 @@ Foam::exprValuePointPatchField<Type>::exprValuePointPatchField
         dict_
     )
 {
+    //FUTURE?
+    //DeprecatedInFunction(2212)
+    //    << "Use uniformFixedValue with an expression Function1 instead." << nl
+    //    << "    This boundary condition will be removed in the future" << endl;
+
     // Require valueExpr
     if (this->valueExpr_.empty())
     {
@@ -125,18 +130,10 @@ Foam::exprValuePointPatchField<Type>::exprValuePointPatchField
 
     driver_.readDict(dict_);
 
-    const auto* hasValue = dict.findEntry("value", keyType::LITERAL);
-
-    if (hasValue)
+    if (!this->readValueEntry(dict))
     {
-        Field<Type>::assign(*hasValue, p.size());
-    }
-    else
-    {
-        // Note: valuePointPatchField defaults to Zero
-        // but internalField might be better
-
-        Field<Type>::operator=(Zero);
+        // Ensure field has reasonable initial values
+        this->extrapolateInternal();
     }
 
     if (this->evalOnConstruct_)
diff --git a/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchField.H b/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchField.H
index 0c286e2028b..fa328a54289 100644
--- a/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchField.H
+++ b/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchField.H
@@ -32,10 +32,13 @@ Description
 Usage
     \table
         Property     | Description                          | Required | Default
-        value        | fixed value                          | yes |
         valueExpr    | expression for uniformValue          | yes |
+        value        | initial field value                  | optional |
     \endtable
 
+    The \c value entry (optional) is used for the initial values.
+    Otherwise uses zero-gradient values.
+
 SourceFiles
     exprValuePointPatchField.C
 
diff --git a/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchFields.C b/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchFields.C
index e9cca570dd0..068e4272132 100644
--- a/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchFields.C
+++ b/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchFields.C
@@ -25,21 +25,17 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "exprValuePointPatchFields.H"
-#include "pointPatchFields.H"
+#include "exprValuePointPatchField.H"
 #include "addToRunTimeSelectionTable.H"
+#include "fieldTypes.H"
+#include "pointPatchFields.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-makePointPatchFields(exprValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
+    makePointPatchFieldTypedefs(exprValue);
+    makePointPatchFields(exprValue);
+}
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchFields.H b/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchFields.H
deleted file mode 100644
index b0035fcac80..00000000000
--- a/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchFields.H
+++ /dev/null
@@ -1,51 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2019 OpenCFD Ltd.
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef exprValuePointPatchFields_H
-#define exprValuePointPatchFields_H
-
-#include "exprValuePointPatchField.H"
-#include "fieldTypes.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makePointPatchFieldTypedefs(exprValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C
index e2ba9698b8d..ae2ed8a07a3 100644
--- a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C
@@ -77,7 +77,7 @@ Foam::cyclicAMIFvPatchField<Type>::cyclicAMIFvPatchField
         }
         else
         {
-            fvPatchField<Type>::patchInternalField(*this);
+            this->extrapolateInternal();  // Zero-gradient patch values
         }
     }
 }
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchField.C
index 19da597026a..a4c1e57ea73 100644
--- a/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchField.C
@@ -89,7 +89,7 @@ Foam::processorFvPatchField<Type>::processorFvPatchField
     // Use 'value' supplied, or set to internal field
     if (!this->readValueEntry(dict))
     {
-        fvPatchField<Type>::patchInternalField(*this);
+        this->extrapolateInternal();
     }
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C
index 47285e9e8fa..250b46a0eac 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C
@@ -91,12 +91,12 @@ Foam::advectiveFvPatchField<Type>::advectiveFvPatchField
     // Use 'value' supplied, or set to internal field
     if (!this->readValueEntry(dict))
     {
-        fvPatchField<Type>::patchInternalField(*this);
+        this->extrapolateInternal();  // Zero-gradient patch values
     }
 
     this->refValue() = *this;
     this->refGrad() = Zero;
-    this->valueFraction() = 0.0;
+    this->valueFraction() = 0;
 
     if (dict.readIfPresent("lInf", lInf_))
     {
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.C
index 1eb67876572..fad36642e65 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.C
@@ -188,9 +188,10 @@ Foam::codedFixedValueFvPatchField<Type>::codedFixedValueFvPatchField
 
     if (!this->readValueEntry(dict))
     {
-        // Assign dummy value to get redirectPatchField not fail
-        fvPatchField<Type>::patchInternalField(*this);
+        // Ensure field has reasonable initial values
+        this->extrapolateInternal();
 
+        // Evaluate to assign a value
         this->evaluate(Pstream::commsTypes::blocking);
     }
 }
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H
index 4daf935f7a3..0c747c5cb83 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H
@@ -34,6 +34,9 @@ Description
     Constructs on-the-fly a new boundary condition (derived from
     fixedValueFvPatchField) which is then used to evaluate.
 
+    The \c value entry (optional) is used for the initial values.
+    Otherwise the code is executed.
+
     The code entries:
     \plaintable
        codeInclude | include files
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchFields.C
index ff73d00582a..9cef5b1e591 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchFields.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchFields.C
@@ -25,21 +25,17 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "codedFixedValueFvPatchFields.H"
+#include "codedFixedValueFvPatchField.H"
 #include "addToRunTimeSelectionTable.H"
+#include "fieldTypes.H"
 #include "volFields.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-makePatchFields(codedFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
+    makePatchTypeFieldTypedefs(codedFixedValue);
+    makePatchFields(codedFixedValue);
+}
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchFields.H b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchFields.H
deleted file mode 100644
index e50357bd1dd..00000000000
--- a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchFields.H
+++ /dev/null
@@ -1,51 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2011 OpenFOAM Foundation
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef codedFixedValueFvPatchFields_H
-#define codedFixedValueFvPatchFields_H
-
-#include "codedFixedValueFvPatchField.H"
-#include "fieldTypes.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makePatchTypeFieldTypedefs(codedFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H
index 89bbc2320d1..821b473d23e 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H
@@ -107,8 +107,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef codedMixedFvPatchField_H
-#define codedMixedFvPatchField_H
+#ifndef Foam_codedMixedFvPatchField_H
+#define Foam_codedMixedFvPatchField_H
 
 #include "mixedFvPatchFields.H"
 #include "codedBase.H"
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchFields.C
index 701cbc491ee..675fe1ea22b 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchFields.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchFields.C
@@ -25,21 +25,17 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "codedMixedFvPatchFields.H"
+#include "codedMixedFvPatchField.H"
 #include "addToRunTimeSelectionTable.H"
+#include "fieldTypes.H"
 #include "volFields.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-makePatchFields(codedMixed);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
+    makePatchTypeFieldTypedefs(codedMixed);
+    makePatchFields(codedMixed);
+}
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchFields.H b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchFields.H
deleted file mode 100644
index 6b6f74088db..00000000000
--- a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchFields.H
+++ /dev/null
@@ -1,51 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2011 OpenFOAM Foundation
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef codedMixedFvPatchFields_H
-#define codedMixedFvPatchFields_H
-
-#include "codedMixedFvPatchField.H"
-#include "fieldTypes.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makePatchTypeFieldTypedefs(codedMixed);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/electrostaticDeposition/electrostaticDepositionFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/electrostaticDeposition/electrostaticDepositionFvPatchScalarField.C
index 7ee4400f500..2ffd8892c11 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/electrostaticDeposition/electrostaticDepositionFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/electrostaticDeposition/electrostaticDepositionFvPatchScalarField.C
@@ -208,7 +208,7 @@ electrostaticDepositionFvPatchScalarField
 {
     if (!this->readValueEntry(dict))
     {
-        fvPatchField<scalar>::patchInternalField(*this);
+        this->extrapolateInternal();  // Zero-gradient patch values
     }
 
     // If flow is multiphase
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C
index 820552d8b8c..72a2dab920b 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C
@@ -70,13 +70,10 @@ fluxCorrectedVelocityFvPatchVectorField
     const dictionary& dict
 )
 :
-    zeroGradientFvPatchVectorField(p, iF),
+    zeroGradientFvPatchVectorField(p, iF, dict),
     phiName_(dict.getOrDefault<word>("phi", "phi")),
     rhoName_(dict.getOrDefault<word>("rho", "rho"))
-{
-    fvPatchFieldBase::readDict(dict);
-    fvPatchField<vector>::patchInternalField(*this);
-}
+{}
 
 
 Foam::fluxCorrectedVelocityFvPatchVectorField::
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.C
index c9265694100..202c3911185 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.C
@@ -73,15 +73,15 @@ Foam::inletOutletFvPatchField<Type>::inletOutletFvPatchField
 {
     fvPatchFieldBase::readDict(dict);
 
+    // Require inletValue (MUST_READ)
     this->refValue().assign("inletValue", dict, p.size());
+    this->refGrad() = Zero;
+    this->valueFraction() = 0;
 
     if (!this->readValueEntry(dict))
     {
-        fvPatchField<Type>::operator=(this->refValue());
+        fvPatchField<Type>::extrapolateInternal();
     }
-
-    this->refGrad() = Zero;
-    this->valueFraction() = 0.0;
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.H
index ac1e29355be..fbf117c729f 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.H
@@ -38,6 +38,7 @@ Usage
         Property     | Description             | Required    | Default value
         phi          | Flux field name         | no          | phi
         inletValue   | Inlet value for reverse flow | yes    |
+        value        | initial field value          | optional |
     \endtable
 
     Example of the boundary condition specification:
@@ -88,10 +89,9 @@ class inletOutletFvPatchField
 :
     public mixedFvPatchField<Type>
 {
-
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Name of flux field
         word phiName_;
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.C
index 37455d8f865..a111bb8f487 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.C
@@ -42,7 +42,7 @@ Foam::outletInletFvPatchField<Type>::outletInletFvPatchField
 {
     this->refValue() = *this;
     this->refGrad() = Zero;
-    this->valueFraction() = 0.0;
+    this->valueFraction() = 0;
 }
 
 
@@ -73,15 +73,15 @@ Foam::outletInletFvPatchField<Type>::outletInletFvPatchField
 {
     fvPatchFieldBase::readDict(dict);
 
+    // Require outletValue (MUST_READ)
     this->refValue().assign("outletValue", dict, p.size());
+    this->refGrad() = Zero;
+    this->valueFraction() = 0;
 
     if (!this->readValueEntry(dict))
     {
-        fvPatchField<Type>::operator=(this->refValue());
+        fvPatchField<Type>::extrapolateInternal();
     }
-
-    this->refGrad() = Zero;
-    this->valueFraction() = 0.0;
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.H
index 1d192b571b5..1f7e51e3c89 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.H
@@ -38,6 +38,7 @@ Usage
         Property     | Description             | Required    | Default value
         phi          | Flux field name         | no          | phi
         outletValue  | Outlet value for reverse flow | yes   |
+        value        | initial field value     | optional |
     \endtable
 
     Example of the boundary condition specification:
@@ -88,12 +89,11 @@ class outletInletFvPatchField
 :
     public mixedFvPatchField<Type>
 {
-
 protected:
 
-    // Protected data
+    // Protected Data
 
-        //- Name of flux field
+        //- Name of flux field (default: phi)
         word phiName_;
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.C
index 9c3ac4ac2e0..72ae806e5a7 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.C
@@ -171,7 +171,7 @@ outletMappedUniformInletFvPatchField
     if (!this->readValueEntry(dict))
     {
         // Fallback: set to the internal field
-        fvPatchField<Type>::patchInternalField(*this);
+        this->extrapolateInternal();
     }
 }
 
@@ -205,7 +205,7 @@ outletMappedUniformInletFvPatchField
     else
     {
         // Fallback: set to the internal field
-        fvPatchField<Type>::patchInternalField(*this);
+        this->extrapolateInternal();
     }
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/outletPhaseMeanVelocity/outletPhaseMeanVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/outletPhaseMeanVelocity/outletPhaseMeanVelocityFvPatchVectorField.C
index 4f9e0f90365..6d90bf382be 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/outletPhaseMeanVelocity/outletPhaseMeanVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/outletPhaseMeanVelocity/outletPhaseMeanVelocityFvPatchVectorField.C
@@ -82,11 +82,11 @@ Foam::outletPhaseMeanVelocityFvPatchVectorField
 
     refValue() = Zero;
     refGrad() = Zero;
-    valueFraction() = 0.0;
+    valueFraction() = 0;
 
     if (!this->readValueEntry(dict))
     {
-        fvPatchField<vector>::patchInternalField(*this);
+        this->extrapolateInternal();
     }
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/supersonicFreestream/supersonicFreestreamFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/supersonicFreestream/supersonicFreestreamFvPatchVectorField.C
index 4962f0bf827..82e5da352f9 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/supersonicFreestream/supersonicFreestreamFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/supersonicFreestream/supersonicFreestreamFvPatchVectorField.C
@@ -76,7 +76,7 @@ supersonicFreestreamFvPatchVectorField
 
     if (!this->readValueEntry(dict))
     {
-        fvPatchField<vector>::patchInternalField(*this);
+        this->extrapolateInternal();
     }
 
     refValue() = *this;
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchFields.C
index dece9ac0935..0118c3d73ac 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchFields.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchFields.C
@@ -25,21 +25,16 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "timeVaryingMappedFixedValueFvPatchFields.H"
+#include "timeVaryingMappedFixedValueFvPatchField.H"
 #include "addToRunTimeSelectionTable.H"
 #include "volFields.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-makePatchFields(timeVaryingMappedFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
+    makePatchTypeFieldTypedefs(timeVaryingMappedFixedValue);
+    makePatchFields(timeVaryingMappedFixedValue);
+}
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchFields.H b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchFields.H
deleted file mode 100644
index a25c560f9d6..00000000000
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchFields.H
+++ /dev/null
@@ -1,51 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2011 OpenFOAM Foundation
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef timeVaryingMappedFixedValueFvPatchFields_H
-#define timeVaryingMappedFixedValueFvPatchFields_H
-
-#include "timeVaryingMappedFixedValueFvPatchField.H"
-#include "fieldTypes.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makePatchTypeFieldTypedefs(timeVaryingMappedFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentInlet/turbulentInletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentInlet/turbulentInletFvPatchField.C
index 1e4b44e7565..09ffae29c76 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentInlet/turbulentInletFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentInlet/turbulentInletFvPatchField.C
@@ -62,7 +62,7 @@ Foam::turbulentInletFvPatchField<Type>::turbulentInletFvPatchField
 {
     if (!this->readValueEntry(dict))
     {
-        fixedValueFvPatchField<Type>::operator==(referenceField_);
+        fvPatchField<Type>::operator=(referenceField_);
     }
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C
index d265cadd197..6908ce378dd 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C
@@ -70,7 +70,15 @@ Foam::uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField
     )
 {
     fvPatchFieldBase::readDict(dict);
-    this->evaluate();
+
+    if (!this->readValueEntry(dict))
+    {
+        // Ensure field has initialised values
+        this->extrapolateInternal();
+
+        // Evaluate to assign a value
+        this->evaluate();
+    }
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.H
index 34bdbb50a0c..8b0cb4129b2 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.H
@@ -37,6 +37,7 @@ Usage
     \table
         Property     | Description                  | Required | Default
         uniformGradient | uniform gradient          | yes |
+        value        | initial field value          | optional |
     \endtable
 
     Example of the boundary condition specification:
@@ -53,6 +54,11 @@ Note
     able to describe time and spatial varying functions.
     The example above gives the usage for supplying a constant value.
 
+    The \c value entry (optional) is used for the initial values.
+    Otherwise the \c uniformGradient is used for the evaluation.
+    In some cases (eg, coded or expression entries with references to other
+    fields) this can be problematic and the \c value entry will be needed.
+
 See also
     Foam::Function1Types
     Foam::fixedGradientFvPatchField
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchFields.C
index a8f054cb16a..9de644cc319 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchFields.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchFields.C
@@ -25,21 +25,17 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "uniformFixedGradientFvPatchFields.H"
+#include "uniformFixedGradientFvPatchField.H"
 #include "addToRunTimeSelectionTable.H"
+#include "fieldTypes.H"
 #include "volFields.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-makePatchFields(uniformFixedGradient);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
+    makePatchTypeFieldTypedefs(uniformFixedGradient);
+    makePatchFields(uniformFixedGradient);
+}
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchFields.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchFields.H
deleted file mode 100644
index fd835e1462b..00000000000
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchFields.H
+++ /dev/null
@@ -1,51 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2013 OpenFOAM Foundation
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef uniformFixedGradientFvPatchFields_H
-#define uniformFixedGradientFvPatchFields_H
-
-#include "uniformFixedGradientFvPatchField.H"
-#include "fieldTypes.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makePatchTypeFieldTypedefs(uniformFixedGradient);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.C
index 4e876b1a075..2ad1312c4ed 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.C
@@ -68,6 +68,10 @@ Foam::uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField
 {
     if (!this->readValueEntry(dict))
     {
+        // Ensure field has reasonable initial values
+        this->extrapolateInternal();
+
+        // Evaluate to assign a value
         this->evaluate();
     }
 }
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.H
index fa5f8a34420..68e8e90021b 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.H
@@ -37,6 +37,7 @@ Usage
     \table
         Property     | Description                  | Required | Default
         uniformValue | uniform value                | yes |
+        value        | initial field value          | optional |
     \endtable
 
     Example of the boundary condition specification:
@@ -53,6 +54,11 @@ Note
     able to describe time and spatial varying functions.
     The example above gives the usage for supplying a constant value.
 
+    The \c value entry (optional) is used for the initial values.
+    Otherwise the \c uniformValue is evaluated.
+    In some cases (eg, coded or expression entries with references to other
+    fields) this can be problematic and the \c value entry will be needed.
+
 See also
     Foam::Function1Types
     Foam::fixedValueFvPatchField
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchFields.C
index 10bb316d17d..179ab87e23c 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchFields.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchFields.C
@@ -25,7 +25,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "uniformFixedValueFvPatchFields.H"
+#include "uniformFixedValueFvPatchField.H"
 #include "addToRunTimeSelectionTable.H"
 #include "volFields.H"
 
@@ -33,6 +33,7 @@ License
 
 namespace Foam
 {
+    makePatchTypeFieldTypedefs(uniformFixedValue);
     makePatchFields(uniformFixedValue);
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchFields.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchFields.H
deleted file mode 100644
index 761395c42e4..00000000000
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchFields.H
+++ /dev/null
@@ -1,50 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2011 OpenFOAM Foundation
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef Foam_uniformFixedValueFvPatchFields_H
-#define Foam_uniformFixedValueFvPatchFields_H
-
-#include "uniformFixedValueFvPatchField.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makePatchTypeFieldTypedefs(uniformFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchField.C
index ca2817148a9..9d017c0a14a 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchField.C
@@ -110,6 +110,10 @@ Foam::uniformMixedFvPatchField<Type>::uniformMixedFvPatchField
     // Use restart value if provided...
     if (!this->readValueEntry(dict))
     {
+        // Ensure field has reasonable initial values
+        this->extrapolateInternal();
+
+        // Evaluate to assign a value
         this->evaluate();
     }
 }
@@ -230,7 +234,7 @@ void Foam::uniformMixedFvPatchField<Type>::write(Ostream& os) const
         valueFractionFunc_->writeData(os);
     }
 
-    // Eg, for visualisation
+    // For visualisation / restart
     fvPatchField<Type>::writeValueEntry(os);
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchField.H
index ccaa055b31a..9d1bdd89545 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchField.H
@@ -44,6 +44,7 @@ Usage
         uniformValue | uniform value                    | partly | 0
         uniformGradient | uniform gradient              | partly | 0
         uniformValueFraction | uniform valueFraction    | partly | depends
+        value        | initial field value              | optional |
     \endtable
 
     Example of the boundary condition specification:
@@ -70,6 +71,11 @@ Note
     If both \c uniformValue and \c uniformGradient are defined,
     the \c uniformValueFraction must also be defined.
 
+    The \c value entry (optional) is used for the initial values.
+    Otherwise the function(s) are used for the evaluation.
+    In some cases (eg, coded or expression entries with references to other
+    fields) this can be problematic and the \c value entry will be needed.
+
 See also
     Foam::Function1Types
     Foam::mixedFvPatchField
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchFields.C
index e307da0c657..0f0ea8e0c34 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchFields.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchFields.C
@@ -25,7 +25,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "uniformMixedFvPatchFields.H"
+#include "uniformMixedFvPatchField.H"
 #include "addToRunTimeSelectionTable.H"
 #include "volFields.H"
 
@@ -33,6 +33,7 @@ License
 
 namespace Foam
 {
+    makePatchTypeFieldTypedefs(uniformMixed);
     makePatchFields(uniformMixed);
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchFields.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchFields.H
deleted file mode 100644
index 25eac16d840..00000000000
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformMixed/uniformMixedFvPatchFields.H
+++ /dev/null
@@ -1,50 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2023 OpenCFD Ltd.
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef Foam_uniformMixedFvPatchFields_H
-#define Foam_uniformMixedFvPatchFields_H
-
-#include "uniformMixedFvPatchField.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makePatchTypeFieldTypedefs(uniformMixed);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.C
index a569a669dc6..d75750e956f 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.C
@@ -86,7 +86,7 @@ Foam::variableHeightFlowRateFvPatchScalarField
     if (!this->readValueEntry(dict))
     {
         // Fallback: set to the internal field
-        fvPatchField<scalar>::patchInternalField(*this);
+        this->extrapolateInternal();
     }
 
     this->refValue() = 0.0;
diff --git a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C
index 0590efeb01d..ada91e0d510 100644
--- a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C
@@ -176,7 +176,7 @@ Foam::fvPatchField<Type>::fvPatchField
     // For unmapped faces set to internal field value (zero-gradient)
     if (notNull(iF) && mapper.hasUnmapped())
     {
-        fvPatchField<Type>::patchInternalField(*this);
+        this->extrapolateInternal();
     }
     this->map(ptf, mapper);
 }
diff --git a/src/functionObjects/field/externalCoupled/externalCoupledTemperatureMixed/externalCoupledTemperatureMixedFvPatchScalarField.C b/src/functionObjects/field/externalCoupled/externalCoupledTemperatureMixed/externalCoupledTemperatureMixedFvPatchScalarField.C
index 7dad1746968..a872e8724b9 100644
--- a/src/functionObjects/field/externalCoupled/externalCoupledTemperatureMixed/externalCoupledTemperatureMixedFvPatchScalarField.C
+++ b/src/functionObjects/field/externalCoupled/externalCoupledTemperatureMixed/externalCoupledTemperatureMixedFvPatchScalarField.C
@@ -160,7 +160,7 @@ externalCoupledTemperatureMixedFvPatchScalarField
         // or extrapolated value
         if (!this->readValueEntry(dict))
         {
-            fvPatchField<scalar>::patchInternalField(*this);
+            fvPatchField<scalar>::extrapolateInternal();
         }
 
         // Initialise as a fixed value
@@ -254,7 +254,7 @@ void Foam::externalCoupledTemperatureMixedFvPatchScalarField::writeData
     const scalarField& Twall = *this;
 
     // Fluid temperature [K]
-    tmp<scalarField> tfluid;
+    scalarField Tfluid(size());
 
     if (refTempType_ == refTemperatureType::USER)
     {
@@ -262,16 +262,14 @@ void Foam::externalCoupledTemperatureMixedFvPatchScalarField::writeData
         const scalar currTref =
             Tref_->value(this->db().time().timeOutputValue());
 
-        tfluid = tmp<scalarField>::New(size(), currTref);
+        Tfluid = currTref;
     }
     else
     {
         // Near wall cell temperature
-        tfluid = patchInternalField();
+        this->patchInternalField(Tfluid);
     }
 
-    const scalarField Tfluid(tfluid);
-
     // Heat transfer coefficient [W/m2/K]
     // This htc needs to be always larger or equal to zero
     //const scalarField htc(qDot/max(Twall - Tfluid, 1e-3));
diff --git a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C
index c9618353cc4..e2475907e11 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C
@@ -64,7 +64,7 @@ timeVaryingMappedFixedValuePointPatchField
     const dictionary& dict
 )
 :
-    fixedValuePointPatchField<Type>(p, iF, dict, false),
+    fixedValuePointPatchField<Type>(p, iF, dict, IOobjectOption::NO_READ),
     setAverage_(dict.getOrDefault("setAverage", false)),
     perturb_(dict.getOrDefault("perturb", 1e-5)),
     fieldTableName_(iF.name()),
diff --git a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchFields.C b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchFields.C
index 3eb48c72dcc..223b099c360 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchFields.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchFields.C
@@ -25,21 +25,16 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "timeVaryingMappedFixedValuePointPatchFields.H"
-#include "pointPatchFields.H"
+#include "timeVaryingMappedFixedValuePointPatchField.H"
 #include "addToRunTimeSelectionTable.H"
+#include "pointPatchFields.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-makePointPatchFields(timeVaryingMappedFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
+    makePointPatchFieldTypedefs(timeVaryingMappedFixedValue);
+    makePointPatchFields(timeVaryingMappedFixedValue);
+}
 
 // ************************************************************************* //
diff --git a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchFields.H b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchFields.H
deleted file mode 100644
index 00d45b81e65..00000000000
--- a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchFields.H
+++ /dev/null
@@ -1,59 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2012 OpenFOAM Foundation
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-InClass
-    Foam::timeVaryingMappedFixedValuePointPatchFields
-
-Description
-
-SourceFiles
-    timeVaryingMappedFixedValuePointPatchFields.C
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef timeVaryingMappedFixedValuePointPatchFields_H
-#define timeVaryingMappedFixedValuePointPatchFields_H
-
-#include "timeVaryingMappedFixedValuePointPatchField.H"
-#include "fieldTypes.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makePointPatchFieldTypedefs(timeVaryingMappedFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchField.C b/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchField.C
index 2f291298c06..8ff95a4c48a 100644
--- a/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchField.C
+++ b/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchField.C
@@ -32,6 +32,9 @@ License
 
 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * //
 
+// Alternative
+// refCast<const facePointPatch>(p).patch()
+
 template<class Type>
 const Foam::polyPatch&
 Foam::uniformFixedValuePointPatchField<Type>::getPatch(const pointPatch& p)
@@ -87,6 +90,10 @@ uniformFixedValuePointPatchField
 {
     if (!this->readValueEntry(dict))
     {
+        // Ensure field has reasonable initial values
+        this->extrapolateInternal();
+
+        // Evaluate to assign a value
         this->evaluate();
     }
 }
@@ -194,7 +201,7 @@ void Foam::uniformFixedValuePointPatchField<Type>::updateCoeffs()
     }
     const scalar t = this->db().time().timeOutputValue();
 
-    fixedValuePointPatchField<Type>::operator==(refValueFunc_->value(t));
+    valuePointPatchField<Type>::operator=(refValueFunc_->value(t));
     fixedValuePointPatchField<Type>::updateCoeffs();
 }
 
diff --git a/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchField.H b/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchField.H
index 3a4ce68d21f..c98e567de39 100644
--- a/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchField.H
+++ b/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchField.H
@@ -28,7 +28,14 @@ Class
     Foam::uniformFixedValuePointPatchField
 
 Description
-    Enables the specification of a uniform fixed value boundary condition.
+    Enables the specification of a uniform fixed value condition.
+
+Usage
+    \table
+        Property     | Description                  | Required | Default
+        uniformValue | uniform value                | yes |
+        value        | initial field value          | optional |
+    \endtable
 
     Example of the boundary condition specification:
     \verbatim
@@ -39,10 +46,16 @@ Description
     }
     \endverbatim
 
+Note
     The uniformValue entry is a PatchFunction1 type,
     able to describe time and spatial varying functions.
     The example above gives the usage for supplying a constant value.
 
+    The \c value entry (optional) is used for the initial values.
+    Otherwise the \c uniformValue is evaluated.
+    In some cases (eg, coded or expression entries with references to other
+    fields) this can be problematic and the \c value entry will be needed.
+
 SourceFiles
     uniformFixedValuePointPatchField.C
 
diff --git a/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchFields.C b/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchFields.C
index 0595cf72944..fb3de7a60b1 100644
--- a/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchFields.C
+++ b/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchFields.C
@@ -25,14 +25,15 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "uniformFixedValuePointPatchFields.H"
-#include "pointPatchFields.H"
+#include "uniformFixedValuePointPatchField.H"
 #include "addToRunTimeSelectionTable.H"
+#include "pointPatchFields.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    makePointPatchFieldTypedefs(uniformFixedValue);
     makePointPatchFields(uniformFixedValue);
 }
 
diff --git a/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchFields.H b/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchFields.H
deleted file mode 100644
index de229bc32f7..00000000000
--- a/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchFields.H
+++ /dev/null
@@ -1,58 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2011 OpenFOAM Foundation
--------------------------------------------------------------------------------
-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
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-InClass
-    Foam::uniformFixedValuePointPatchFields
-
-Description
-
-SourceFiles
-    uniformFixedValuePointPatchFields.C
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef Foam_uniformFixedValuePointPatchFields_H
-#define Foam_uniformFixedValuePointPatchFields_H
-
-#include "uniformFixedValuePointPatchField.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makePointPatchFieldTypedefs(uniformFixedValue);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/overset/oversetPolyPatch/oversetFvPatchField.C b/src/overset/oversetPolyPatch/oversetFvPatchField.C
index 0329d406fcd..3beba4a72f3 100644
--- a/src/overset/oversetPolyPatch/oversetFvPatchField.C
+++ b/src/overset/oversetPolyPatch/oversetFvPatchField.C
@@ -113,7 +113,7 @@ Foam::oversetFvPatchField<Type>::oversetFvPatchField
     // Use 'value' supplied, or set to internal field
     if (!this->readValueEntry(dict))
     {
-        fvPatchField<Type>::patchInternalField(*this);
+        fvPatchField<Type>::extrapolateInternal();
     }
 }
 
diff --git a/src/phaseSystemModels/multiphaseInter/phasesSystem/derivedFvPatchFields/timeVaryingMassSorption/timeVaryingMassSorptionFvPatchScalarField.C b/src/phaseSystemModels/multiphaseInter/phasesSystem/derivedFvPatchFields/timeVaryingMassSorption/timeVaryingMassSorptionFvPatchScalarField.C
index 9c2ccd71b37..771d7e0b77c 100644
--- a/src/phaseSystemModels/multiphaseInter/phasesSystem/derivedFvPatchFields/timeVaryingMassSorption/timeVaryingMassSorptionFvPatchScalarField.C
+++ b/src/phaseSystemModels/multiphaseInter/phasesSystem/derivedFvPatchFields/timeVaryingMassSorption/timeVaryingMassSorptionFvPatchScalarField.C
@@ -80,7 +80,7 @@ timeVaryingMassSorptionFvPatchScalarField
     const dictionary& dict
 )
 :
-    fixedValueFvPatchScalarField(p, iF, dict, false),
+    fixedValueFvPatchScalarField(p, iF, dict, IOobjectOption::NO_READ),
     kabs_(dict.getCheck<scalar>("kabs", scalarMinMax::ge(0))),
     max_(dict.getCheck<scalar>("max", scalarMinMax::ge(0))),
     kdes_(dict.getCheckOrDefault<scalar>("kdes", 0, scalarMinMax::ge(0)))
diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C
index 764b071fe98..16ec7886561 100644
--- a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C
+++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C
@@ -69,7 +69,7 @@ greyDiffusiveViewFactorFixedValueFvPatchScalarField
     const dictionary& dict
 )
 :
-    fixedValueFvPatchScalarField(p, iF, dict, false),
+    fixedValueFvPatchScalarField(p, iF, dict, IOobjectOption::NO_READ),
     qro_("qro", dict, p.size())
 {
     if (!this->readValueEntry(dict))
diff --git a/src/transportModels/twoPhaseProperties/alphaFixedPressure/alphaFixedPressureFvPatchScalarField.C b/src/transportModels/twoPhaseProperties/alphaFixedPressure/alphaFixedPressureFvPatchScalarField.C
index 71b2a02c5df..d7fa1c573ab 100644
--- a/src/transportModels/twoPhaseProperties/alphaFixedPressure/alphaFixedPressureFvPatchScalarField.C
+++ b/src/transportModels/twoPhaseProperties/alphaFixedPressure/alphaFixedPressureFvPatchScalarField.C
@@ -69,7 +69,8 @@ alphaFixedPressureFvPatchScalarField
     const dictionary& dict
 )
 :
-    fixedValueFvPatchScalarField(p, iF, dict, false),
+    // The 'value' is optional (handled below)
+    fixedValueFvPatchScalarField(p, iF, dict, IOobjectOption::NO_READ),
     p_("p", dict, p.size())
 {
     if (!this->readValueEntry(dict))
diff --git a/src/waveModels/derivedPointPatchFields/waveMaker/waveMakerPointPatchVectorField.C b/src/waveModels/derivedPointPatchFields/waveMaker/waveMakerPointPatchVectorField.C
index 9db52d95928..332d62a412c 100644
--- a/src/waveModels/derivedPointPatchFields/waveMaker/waveMakerPointPatchVectorField.C
+++ b/src/waveModels/derivedPointPatchFields/waveMaker/waveMakerPointPatchVectorField.C
@@ -166,7 +166,7 @@ Foam::waveMakerPointPatchVectorField::waveMakerPointPatchVectorField
     const dictionary& dict
 )
 :
-    fixedValuePointPatchField<vector>(p, iF, dict, false),
+    fixedValuePointPatchField<vector>(p, iF, dict, IOobjectOption::NO_READ),
     motionType_(motionTypeNames.get("motionType", dict)),
     n_(dict.get<vector>("n")),
     gHat_(Zero),
-- 
GitLab