diff --git a/applications/solvers/compressible/rhoCentralFoam/BCs/T/smoluchowskiJumpTFvPatchScalarField.C b/applications/solvers/compressible/rhoCentralFoam/BCs/T/smoluchowskiJumpTFvPatchScalarField.C
index 8b93ea74c321a156e05e1361cce690a77f9a61cd..ff83ae361663f8424374927e80463b6ba9868209 100644
--- a/applications/solvers/compressible/rhoCentralFoam/BCs/T/smoluchowskiJumpTFvPatchScalarField.C
+++ b/applications/solvers/compressible/rhoCentralFoam/BCs/T/smoluchowskiJumpTFvPatchScalarField.C
@@ -203,7 +203,7 @@ void Foam::smoluchowskiJumpTFvPatchScalarField::updateCoeffs()
 // Write
 void Foam::smoluchowskiJumpTFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
 
     os.writeEntryIfDifferent<word>("U", "U", UName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
@@ -213,7 +213,7 @@ void Foam::smoluchowskiJumpTFvPatchScalarField::write(Ostream& os) const
     os.writeEntry("accommodationCoeff", accommodationCoeff_);
     Twall_.writeEntry("Twall", os);
     os.writeEntry("gamma", gamma_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/applications/solvers/compressible/rhoCentralFoam/BCs/U/maxwellSlipUFvPatchVectorField.C b/applications/solvers/compressible/rhoCentralFoam/BCs/U/maxwellSlipUFvPatchVectorField.C
index 6d0bd7e488498715f9ec30599c3c98a596c3059b..112be323862071f15eb54a370b041ed90b17e99e 100644
--- a/applications/solvers/compressible/rhoCentralFoam/BCs/U/maxwellSlipUFvPatchVectorField.C
+++ b/applications/solvers/compressible/rhoCentralFoam/BCs/U/maxwellSlipUFvPatchVectorField.C
@@ -197,7 +197,7 @@ void Foam::maxwellSlipUFvPatchVectorField::updateCoeffs()
 
 void Foam::maxwellSlipUFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("T", "T", TName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
     os.writeEntryIfDifferent<word>("psi", "thermo:psi", psiName_);
@@ -212,7 +212,7 @@ void Foam::maxwellSlipUFvPatchVectorField::write(Ostream& os) const
     refValue().writeEntry("refValue", os);
     valueFraction().writeEntry("valueFraction", os);
 
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/applications/solvers/compressible/rhoCentralFoam/BCs/rho/fixedRhoFvPatchScalarField.C b/applications/solvers/compressible/rhoCentralFoam/BCs/rho/fixedRhoFvPatchScalarField.C
index bbc871e6b8ccca9b98e2ac77895f9ef699cf3f71..e08ce4d68e99613496434b80a0e037cbadbcadf2 100644
--- a/applications/solvers/compressible/rhoCentralFoam/BCs/rho/fixedRhoFvPatchScalarField.C
+++ b/applications/solvers/compressible/rhoCentralFoam/BCs/rho/fixedRhoFvPatchScalarField.C
@@ -115,11 +115,10 @@ void Foam::fixedRhoFvPatchScalarField::updateCoeffs()
 
 void Foam::fixedRhoFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
-
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("p", "p", pName_);
     os.writeEntryIfDifferent<word>("psi", "thermo:psi", psiName_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/derivedFvPatchFields/turbulentTemperatureTwoPhaseRadCoupledMixed/turbulentTemperatureTwoPhaseRadCoupledMixedFvPatchScalarField.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/derivedFvPatchFields/turbulentTemperatureTwoPhaseRadCoupledMixed/turbulentTemperatureTwoPhaseRadCoupledMixedFvPatchScalarField.C
index ba6b51f3d29182e7211d2e9bca49904c2d12e277..b8243c017be6e69df5040205d4989f4ae6bb752e 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/derivedFvPatchFields/turbulentTemperatureTwoPhaseRadCoupledMixed/turbulentTemperatureTwoPhaseRadCoupledMixedFvPatchScalarField.C
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/derivedFvPatchFields/turbulentTemperatureTwoPhaseRadCoupledMixed/turbulentTemperatureTwoPhaseRadCoupledMixedFvPatchScalarField.C
@@ -485,7 +485,7 @@ void turbulentTemperatureTwoPhaseRadCoupledMixedFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    mixedFvPatchScalarField::write(os);
+    mixedFvPatchField<scalar>::write(os);
     os.writeEntry("kappaMethod", KMethodTypeNames_[method_]);
     os.writeEntryIfDifferent<word>("kappa","none", kappaName_);
 
diff --git a/applications/solvers/incompressible/adjointShapeOptimizationFoam/adjointOutletPressure/adjointOutletPressureFvPatchScalarField.C b/applications/solvers/incompressible/adjointShapeOptimizationFoam/adjointOutletPressure/adjointOutletPressureFvPatchScalarField.C
index 83dfb3eb3bf20669f1377d664a8749b8cf09569d..58c9b2147b3595ebca200f102c13e0aa163307d7 100644
--- a/applications/solvers/incompressible/adjointShapeOptimizationFoam/adjointOutletPressure/adjointOutletPressureFvPatchScalarField.C
+++ b/applications/solvers/incompressible/adjointShapeOptimizationFoam/adjointOutletPressure/adjointOutletPressureFvPatchScalarField.C
@@ -102,8 +102,8 @@ void Foam::adjointOutletPressureFvPatchScalarField::updateCoeffs()
 
 void Foam::adjointOutletPressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::write(os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/applications/solvers/incompressible/adjointShapeOptimizationFoam/adjointOutletVelocity/adjointOutletVelocityFvPatchVectorField.C b/applications/solvers/incompressible/adjointShapeOptimizationFoam/adjointOutletVelocity/adjointOutletVelocityFvPatchVectorField.C
index 98c1d8258bd6f5244c82cc6ef97398f686c4baef..eec156bbb670b03145e6529ebca6a58862db7da4 100644
--- a/applications/solvers/incompressible/adjointShapeOptimizationFoam/adjointOutletVelocity/adjointOutletVelocityFvPatchVectorField.C
+++ b/applications/solvers/incompressible/adjointShapeOptimizationFoam/adjointOutletVelocity/adjointOutletVelocityFvPatchVectorField.C
@@ -107,8 +107,8 @@ void Foam::adjointOutletVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::adjointOutletVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::write(os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/alphaContactAngle/alphaContactAngleFvPatchScalarField.C b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
index 9f3b22d053121faad2cc7251348f307f596d038a..9fb48aa27807c34d5146ba1ab3dbb7ecd513081e 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
@@ -126,9 +126,9 @@ alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
 
 void alphaContactAngleFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("thetaProperties", thetaProps_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/alphaContactAngle/alphaContactAngleFvPatchScalarField.C b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
index 77b08137bcb16fcdfc86e189e0716c8164bce757..9c11cf89130619fc4e5f234e7013cc6a7a130265 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
+++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
@@ -126,9 +126,9 @@ alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
 
 void alphaContactAngleFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("thetaProperties", thetaProps_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/tractionDisplacement/tractionDisplacementFvPatchVectorField.C b/applications/solvers/stressAnalysis/solidDisplacementFoam/tractionDisplacement/tractionDisplacementFvPatchVectorField.C
index ca656a739e3b20259b25a0bb1073354b7f10057b..1e9619c65e7e1df97cb38e54cc75a07e4341a367 100644
--- a/applications/solvers/stressAnalysis/solidDisplacementFoam/tractionDisplacement/tractionDisplacementFvPatchVectorField.C
+++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/tractionDisplacement/tractionDisplacementFvPatchVectorField.C
@@ -195,10 +195,10 @@ void tractionDisplacementFvPatchVectorField::updateCoeffs()
 
 void tractionDisplacementFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     traction_.writeEntry("traction", os);
     pressure_.writeEntry("pressure", os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.C b/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.C
index f0fdb53f43e372fc945129214077287d917fe5cb..be853da48b33c0b9e2560e35c365aa610d0f6155 100644
--- a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.C
+++ b/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.C
@@ -182,10 +182,10 @@ void tractionDisplacementCorrectionFvPatchVectorField::updateCoeffs()
 // Write
 void tractionDisplacementCorrectionFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     traction_.writeEntry("traction", os);
     pressure_.writeEntry("pressure", os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/etc/codeTemplates/BC/BC.C b/etc/codeTemplates/BC/BC.C
index b58cadd63d6b4bae848cc4e54133c1d28ba9c746..7c1bb0e8d60b33b084d24df13a8b00300d7a7273 100644
--- a/etc/codeTemplates/BC/BC.C
+++ b/etc/codeTemplates/BC/BC.C
@@ -225,7 +225,7 @@ void Foam::CLASS::write
     fieldData_.writeEntry("fieldData", os);
     timeVsData_->writeData(os);
     os.writeEntry("wordData", wordData_);
-    this->writeEntry("value", os);
+    FVPATCHF::writeValueEntry(os);
 }
 
 
diff --git a/src/OpenFOAM/fields/pointPatchFields/basic/basicSymmetry/basicSymmetryPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/basic/basicSymmetry/basicSymmetryPointPatchField.H
index 7db5c443d3956b4bac403a3adfcf854cceee64bc..9377eb2e070da712cc1e44a7f5e29163ffe8bb35 100644
--- a/src/OpenFOAM/fields/pointPatchFields/basic/basicSymmetry/basicSymmetryPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/basic/basicSymmetry/basicSymmetryPointPatchField.H
@@ -74,7 +74,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         basicSymmetryPointPatchField
         (
             const basicSymmetryPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/basic/calculated/calculatedPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/basic/calculated/calculatedPointPatchField.H
index 4571da163f54b2bcc197dccfc127e526ad50ca6b..1ceaba98a4b5fb2c32c76e419939a28afac31724 100644
--- a/src/OpenFOAM/fields/pointPatchFields/basic/calculated/calculatedPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/basic/calculated/calculatedPointPatchField.H
@@ -77,7 +77,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         calculatedPointPatchField
         (
             const calculatedPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/basic/coupled/coupledPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/basic/coupled/coupledPointPatchField.H
index 6113b73f326273e829dca44d6a832e19bc4e2f36..616743df38a6336ef95818e698e78010884c0b27 100644
--- a/src/OpenFOAM/fields/pointPatchFields/basic/coupled/coupledPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/basic/coupled/coupledPointPatchField.H
@@ -78,7 +78,7 @@ public:
             const dictionary& dict
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         coupledPointPatchField
         (
             const coupledPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/basic/fixedValue/fixedValuePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/basic/fixedValue/fixedValuePointPatchField.H
index f79cc07cd8f2e46ee89c4059bb2f579c1b27c5df..ed53c84404211413df8495d2074ce473a698f8ae 100644
--- a/src/OpenFOAM/fields/pointPatchFields/basic/fixedValue/fixedValuePointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/basic/fixedValue/fixedValuePointPatchField.H
@@ -78,7 +78,7 @@ public:
             const bool valueRequired=true
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         fixedValuePointPatchField
         (
             const fixedValuePointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/basic/value/valuePointPatchField.C b/src/OpenFOAM/fields/pointPatchFields/basic/value/valuePointPatchField.C
index f9eacfb3befb56f05c376d6d7a744794aa177f90..e47b18e14a50dd4cf3c8cef47a425b169f08e1e6 100644
--- a/src/OpenFOAM/fields/pointPatchFields/basic/value/valuePointPatchField.C
+++ b/src/OpenFOAM/fields/pointPatchFields/basic/value/valuePointPatchField.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2019-2022 OpenCFD Ltd.
+    Copyright (C) 2019-2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -29,6 +29,41 @@ License
 #include "valuePointPatchField.H"
 #include "pointPatchFieldMapper.H"
 
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class Type>
+bool Foam::valuePointPatchField<Type>::readValueEntry
+(
+    const dictionary& dict,
+    IOobjectOption::readOption readOpt
+)
+{
+    const auto& p = pointPatchFieldBase::patch();
+
+    if (!p.size()) return true;  // Can be exceptionally lazy
+    if (!IOobjectOption::isAnyRead(readOpt)) return false;
+
+
+    const auto* eptr = dict.findEntry("value", keyType::LITERAL);
+
+    if (eptr)
+    {
+        Field<Type>::assign(*eptr, p.size());
+        return true;
+    }
+
+    if (IOobjectOption::isReadRequired(readOpt))
+    {
+        FatalIOErrorInFunction(dict)
+            << "Required entry 'value' : missing for patch " << p.name()
+            << " in dictionary " << dict.relativeName() << nl
+            << exit(FatalIOError);
+    }
+
+    return false;
+}
+
+
 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * //
 
 template<class Type>
@@ -164,7 +199,7 @@ template<class Type>
 void Foam::valuePointPatchField<Type>::write(Ostream& os) const
 {
     pointPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    this->writeValueEntry(os);
 }
 
 
diff --git a/src/OpenFOAM/fields/pointPatchFields/basic/value/valuePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/basic/value/valuePointPatchField.H
index ee6e119341b1ac449a85e1dcbfbc5bfd938ede44..f49bce09a0adedb352877339f6d753b2f5ba6f7a 100644
--- a/src/OpenFOAM/fields/pointPatchFields/basic/value/valuePointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/basic/value/valuePointPatchField.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2017 OpenFOAM Foundation
-    Copyright (C) 2020 OpenCFD Ltd.
+    Copyright (C) 2020-2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -35,8 +35,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef valuePointPatchField_H
-#define valuePointPatchField_H
+#ifndef Foam_valuePointPatchField_H
+#define Foam_valuePointPatchField_H
 
 #include "pointPatchField.H"
 
@@ -55,6 +55,26 @@ class valuePointPatchField
     public pointPatchField<Type>,
     public Field<Type>
 {
+protected:
+
+    // Protected Member Functions
+
+        //- Read the "value" entry into \c *this.
+        //  The reading can be optional (default), mandatory etc.
+        //  \returns True on success
+        bool readValueEntry
+        (
+            const dictionary& dict,
+            IOobjectOption::readOption readOpt = IOobjectOption::LAZY_READ
+        );
+
+        //- Write \c *this field as a "value" entry
+        void writeValueEntry(Ostream& os) const
+        {
+            Field<Type>::writeEntry("value", os);
+        }
+
+
 public:
 
     //- Declare type-name, virtual type (with debug switch)
@@ -85,7 +105,7 @@ public:
             const bool valueRequired=true
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         valuePointPatchField
         (
             const valuePointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/basic/zeroGradient/zeroGradientPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/basic/zeroGradient/zeroGradientPointPatchField.H
index 2a9e712375e320ebb68303ad16093094c864fd17..1026efac17cc824c3302801ff6ecdfaaee00efcf 100644
--- a/src/OpenFOAM/fields/pointPatchFields/basic/zeroGradient/zeroGradientPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/basic/zeroGradient/zeroGradientPointPatchField.H
@@ -76,7 +76,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         zeroGradientPointPatchField
         (
             const zeroGradientPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclic/cyclicPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclic/cyclicPointPatchField.H
index e3c19117c9bbf3d296c5752f50a76f18db7adb53..f8cccfa7b0139e3a81322fd3c9df710052473f95 100644
--- a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclic/cyclicPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclic/cyclicPointPatchField.H
@@ -83,7 +83,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         cyclicPointPatchField
         (
             const cyclicPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.H
index d24e73e5cf81a467ec1a364e485a82c1594c593c..600fc2080be3caec74474549d31a3ac6a9c57b45 100644
--- a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.H
@@ -78,7 +78,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         cyclicSlipPointPatchField
         (
             const cyclicSlipPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/empty/emptyPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/empty/emptyPointPatchField.H
index 44e8b0d63358ecd7105e64b5167e7698aa9089d5..146c79dfdc14c11cc7a996b32a255b7ea332bc49 100644
--- a/src/OpenFOAM/fields/pointPatchFields/constraint/empty/emptyPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/empty/emptyPointPatchField.H
@@ -78,7 +78,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         emptyPointPatchField
         (
             const emptyPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicPointPatchField.H
index 08264693c07d6e8977fe5cafc4f20d63a0717071..982884b84a3c8f978c3746d2949d0280003ca1e2 100644
--- a/src/OpenFOAM/fields/pointPatchFields/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicPointPatchField.H
@@ -78,7 +78,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         nonuniformTransformCyclicPointPatchField
         (
             const nonuniformTransformCyclicPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/processor/processorPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/processor/processorPointPatchField.H
index 6741795e0342327117d3933ea24cc0fa008c7209..ed9f82d6692b449a56e9f277e2c0bbe0baca4a8e 100644
--- a/src/OpenFOAM/fields/pointPatchFields/constraint/processor/processorPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/processor/processorPointPatchField.H
@@ -82,7 +82,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         processorPointPatchField
         (
             const processorPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/processorCyclic/processorCyclicPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/processorCyclic/processorCyclicPointPatchField.H
index 50d8243521ae808c2c13b50de4cbd4a07cc7141f..b4d5a5396a3e301f17f26fdf93262d54b196d7f7 100644
--- a/src/OpenFOAM/fields/pointPatchFields/constraint/processorCyclic/processorCyclicPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/processorCyclic/processorCyclicPointPatchField.H
@@ -87,7 +87,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         processorCyclicPointPatchField
         (
             const processorCyclicPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetry/symmetryPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetry/symmetryPointPatchField.H
index 5fa3778483831ca42fb536f26e5e227ca060b0a2..7be7b6ff01eb45dda1c967c166a5c6ff4ac4b38b 100644
--- a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetry/symmetryPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetry/symmetryPointPatchField.H
@@ -78,7 +78,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         symmetryPointPatchField
         (
             const symmetryPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H
index f25e7c8f066db32fb8ba2942aacf024bc7f50360..1422a6132058cc28150aba0d010b6ef3747dc6aa 100644
--- a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H
@@ -83,7 +83,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         symmetryPlanePointPatchField
         (
             const symmetryPlanePointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/wedge/wedgePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/wedge/wedgePointPatchField.H
index 2b3c1cd2abbc71d746bcc70f06f8de3d938e3fa1..7b2ebc85869f34f100829ed3eda19d5c6494bc64 100644
--- a/src/OpenFOAM/fields/pointPatchFields/constraint/wedge/wedgePointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/wedge/wedgePointPatchField.H
@@ -78,7 +78,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         wedgePointPatchField
         (
             const wedgePointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.C b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.C
index 1b10db1f7ef23e399a0a067043b5896267f5afaa..af6f43bd5a6d34ba0f610d6e710fe225584e6036 100644
--- a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.C
+++ b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.C
@@ -238,7 +238,7 @@ Foam::codedFixedValuePointPatchField<Type>::redirectPatchField() const
         // Make sure to construct the patchfield with up-to-date value
 
         OStringStream os;
-        static_cast<const Field<Type>&>(*this).writeEntry("value", os);
+        this->writeValueEntry(os);
         IStringStream is(os.str());
         dictionary constructDict(is);
 
diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/fixedNormalSlip/fixedNormalSlipPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/derived/fixedNormalSlip/fixedNormalSlipPointPatchField.H
index 69d489e3a19dc79df434986e1b9b97310487d750..d4c031350ed67fae5bd2456d0cd8fc479fdd9d9a 100644
--- a/src/OpenFOAM/fields/pointPatchFields/derived/fixedNormalSlip/fixedNormalSlipPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/derived/fixedNormalSlip/fixedNormalSlipPointPatchField.H
@@ -95,7 +95,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         fixedNormalSlipPointPatchField
         (
             const fixedNormalSlipPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/slip/slipPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/derived/slip/slipPointPatchField.H
index 9f67b789cc7f01bed3e025e21b23667b4c5301fa..027cc956ad2769b7e8f9defe56a92939d88aecb7 100644
--- a/src/OpenFOAM/fields/pointPatchFields/derived/slip/slipPointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/derived/slip/slipPointPatchField.H
@@ -77,7 +77,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         slipPointPatchField
         (
             const slipPointPatchField<Type>&,
diff --git a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H
index 32e1ad2d7e44b6c3c852814c208810f9729ae311..97723a1a94003021bfc4f5eb7f709399030b62eb 100644
--- a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H
@@ -47,6 +47,7 @@ SourceFiles
 
 #include "pointPatch.H"
 #include "DimensionedField.H"
+#include "fieldTypes.H"
 #include "autoPtr.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -55,8 +56,8 @@ namespace Foam
 {
 
 // Forward Declarations
-class objectRegistry;
 class dictionary;
+class objectRegistry;
 class pointPatchFieldMapper;
 class pointMesh;
 
@@ -266,7 +267,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         pointPatchField
         (
             const pointPatchField<Type>&,
@@ -361,47 +362,46 @@ public:
         static const word& zeroGradientType();
 
 
-        // Attributes
+    // Attributes
 
-            //- True if this patch field fixes a value
-            virtual bool fixesValue() const
-            {
-                return false;
-            }
+        //- True if this patch field fixes a value
+        virtual bool fixesValue() const
+        {
+            return false;
+        }
 
-            //- True if this patch field is coupled
-            virtual bool coupled() const
-            {
-                return false;
-            }
+        //- True if this patch field is coupled
+        virtual bool coupled() const
+        {
+            return false;
+        }
 
-            //- The constraint type this pointPatchField implements.
-            virtual const word& constraintType() const
-            {
-                return word::null;
-            }
+        //- The constraint type this pointPatchField implements.
+        virtual const word& constraintType() const
+        {
+            return word::null;
+        }
 
 
-        // Access
+    // Access
 
-            //- Return the patch size
-            label size() const
-            {
-                return patch().size();
-            }
+        //- Return the patch size
+        label size() const
+        {
+            return patch().size();
+        }
 
-            //- Return const-reference to the dimensioned internal field
-            const DimensionedField<Type, pointMesh>& internalField()
-            const noexcept
-            {
-                return internalField_;
-            }
+        //- Return const-reference to the dimensioned internal field
+        const DimensionedField<Type, pointMesh>& internalField() const noexcept
+        {
+            return internalField_;
+        }
 
-            //- Return const-reference to the internal field values
-            const Field<Type>& primitiveField() const noexcept
-            {
-                return internalField_;
-            }
+        //- Return const-reference to the internal field values
+        const Field<Type>& primitiveField() const noexcept
+        {
+            return internalField_;
+        }
 
 
         // Evaluation Functions
@@ -537,9 +537,9 @@ public:
         // By generic these do nothing unless the patch actually has boundary
         // values
 
-            virtual void operator==(const pointPatchField<Type>&){}
-            virtual void operator==(const Field<Type>&){}
-            virtual void operator==(const Type&){}
+        virtual void operator==(const pointPatchField<Type>&){}
+        virtual void operator==(const Field<Type>&){}
+        virtual void operator==(const Type&){}
 
 
     // Ostream Operator
diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/incompressible/turbulentTransportModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C
index 6570f60134cb0508ce920308a43b226402408b48..df8a3409778d0a4a88cd336d286d2e3a31a20b3b 100644
--- a/src/TurbulenceModels/incompressible/turbulentTransportModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C
@@ -292,7 +292,7 @@ void alphatJayatillekeWallFunctionFvPatchScalarField::write(Ostream& os) const
     os.writeEntry("Prt", Prt_);
     os.writeEntryIfDifferent<scalar>("kappa", 0.41, kappa_);
     os.writeEntryIfDifferent<scalar>("E", 9.8, E_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C
index c4af50f5a64af35e853138e3351aea7d5529f3e2..2266a1430a244d1f39053b9bb4c1758b63e50e95 100644
--- a/src/TurbulenceModels/turbulenceModels/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C
@@ -168,11 +168,11 @@ void turbulentMixingLengthDissipationRateInletFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("mixingLength", mixingLength_);
     os.writeEntry("phi", this->phiName_);
     os.writeEntry("k", kName_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C
index fca946ff5fdb681a0f26b97e53ea5279638e7334..084965c11c029d73ad42ae1c98a10cb785169fb6 100644
--- a/src/TurbulenceModels/turbulenceModels/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C
@@ -157,11 +157,11 @@ void turbulentMixingLengthFrequencyInletFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("mixingLength", mixingLength_);
     os.writeEntry("phi", this->phiName_);
     os.writeEntry("k", kName_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C
index f375d61fd9d0f4ad874797752b7dc932465c01b8..286eba0bbf099851a53a7829221da8605b46ceea 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C
@@ -128,9 +128,9 @@ void Foam::fixedShearStressFvPatchVectorField::updateCoeffs()
 
 void Foam::fixedShearStressFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("tau", tau0_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C
index 63d5e27b791836c0681d3ca8cc4f068c51d18e3a..ebe149331281e389d263219062afeb3b3bece2f9 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C
@@ -615,7 +615,7 @@ void Foam::epsilonWallFunctionFvPatchScalarField::write
 {
     fvPatchField<scalar>::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.C
index b5a68336441b6409ad610dcf0013811c3e571c9f..9be86fab62e816d70b69045a945e0af8d385de8b 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.C
@@ -204,7 +204,7 @@ void Foam::kLowReWallFunctionFvPatchScalarField::write
 {
     fvPatchField<scalar>::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.C
index 35eaa1af8ca3c8feff1642a5ae9d3a17d9b84f34..7b78f74e819f44c306824d30ac1ada70b2bb56ad 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.C
@@ -103,7 +103,7 @@ template<class Type>
 void Foam::kqRWallFunctionFvPatchField<Type>::write(Ostream& os) const
 {
     zeroGradientFvPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.C
index 1d8f374bcb43072020e7571220e7b4b4efb91f34..f2fec85614dcf89ff9fe2f384892d8fcbcc824f2 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.C
@@ -137,7 +137,7 @@ void Foam::nutLowReWallFunctionFvPatchScalarField::write
 ) const
 {
     nutWallFunctionFvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUBlendedWallFunction/nutUBlendedWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUBlendedWallFunction/nutUBlendedWallFunctionFvPatchScalarField.C
index 77ca610ceea7041ea2b8d632adfc1913532d9c7e..4f7e1c3591841c767c6d3a60dbd3c37632621513 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUBlendedWallFunction/nutUBlendedWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUBlendedWallFunction/nutUBlendedWallFunctionFvPatchScalarField.C
@@ -232,7 +232,7 @@ void Foam::nutUBlendedWallFunctionFvPatchScalarField::write
 {
     nutWallFunctionFvPatchScalarField::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutURoughWallFunction/nutURoughWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutURoughWallFunction/nutURoughWallFunctionFvPatchScalarField.C
index 59f42256bc5a730c462b73009b794f36247b785b..bc5357d3a4014c67759df2a027d8065bf61a3c8e 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutURoughWallFunction/nutURoughWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutURoughWallFunction/nutURoughWallFunctionFvPatchScalarField.C
@@ -343,7 +343,7 @@ void Foam::nutURoughWallFunctionFvPatchScalarField::write
 {
     nutWallFunctionFvPatchScalarField::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUSpaldingWallFunction/nutUSpaldingWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUSpaldingWallFunction/nutUSpaldingWallFunctionFvPatchScalarField.C
index 76ed24178840b052958febc1eb74778d02f2ae31..4e36e6dac0d8adee6ddafc5ace81f36cc9a4c7ee 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUSpaldingWallFunction/nutUSpaldingWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUSpaldingWallFunction/nutUSpaldingWallFunctionFvPatchScalarField.C
@@ -350,7 +350,7 @@ void Foam::nutUSpaldingWallFunctionFvPatchScalarField::write
 {
     nutWallFunctionFvPatchScalarField::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUTabulatedWallFunction/nutUTabulatedWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUTabulatedWallFunction/nutUTabulatedWallFunctionFvPatchScalarField.C
index a8eb1c3d2af0060e832ce45917e1cb08859616b2..5281d8159f188735e3a8d0b75046b72b5d8e0218 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUTabulatedWallFunction/nutUTabulatedWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUTabulatedWallFunction/nutUTabulatedWallFunctionFvPatchScalarField.C
@@ -225,7 +225,7 @@ void Foam::nutUTabulatedWallFunctionFvPatchScalarField::write
 {
     nutWallFunctionFvPatchScalarField::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUWallFunction/nutUWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUWallFunction/nutUWallFunctionFvPatchScalarField.C
index 506d4caee157bebcde4b6773f167be5bdc740e13..af072fe580cda356498053548975895cbe0972f2 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUWallFunction/nutUWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUWallFunction/nutUWallFunctionFvPatchScalarField.C
@@ -313,7 +313,7 @@ void Foam::nutUWallFunctionFvPatchScalarField::write
 {
     nutWallFunctionFvPatchScalarField::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.C
index 4902ce4c698567375b9333cae2580e7016df13aa..0610d97a80c0933fe27dbf3313a71dada850a66f 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.C
@@ -242,7 +242,7 @@ void Foam::nutkRoughWallFunctionFvPatchScalarField::write
 {
     nutWallFunctionFvPatchScalarField::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C
index 7f846f29a47096876e3460a6cb350b019771a496..8d9e40ea65dccc6dd24f33240b5636f152eacd17 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C
@@ -270,7 +270,7 @@ void Foam::nutkWallFunctionFvPatchScalarField::write
 {
     nutWallFunctionFvPatchScalarField::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.C
index 573edc8bbcaaabf7026e53704137791289d58d7c..d38f1632c5c753205a3521438fdd55d896428fba 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.C
@@ -606,7 +606,7 @@ void Foam::omegaWallFunctionFvPatchScalarField::write
 {
     fvPatchField<scalar>::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.C b/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.C
index aff00e89bae2604df1acf9abe4697951a267b9fb..1c4216ed16aa704aa79220056d2d649a1fa2391d 100644
--- a/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.C
+++ b/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.C
@@ -149,10 +149,10 @@ void atmBoundaryLayerInletEpsilonFvPatchScalarField::rmap
 
 void atmBoundaryLayerInletEpsilonFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     atmBoundaryLayer::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletK/atmBoundaryLayerInletKFvPatchScalarField.C b/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletK/atmBoundaryLayerInletKFvPatchScalarField.C
index 7fc3d768e3f0d38032aa3925db54a86c7327d149..1590676c7b3f98eef04d529236fcf5acff2b0b8e 100644
--- a/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletK/atmBoundaryLayerInletKFvPatchScalarField.C
+++ b/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletK/atmBoundaryLayerInletKFvPatchScalarField.C
@@ -148,10 +148,10 @@ void atmBoundaryLayerInletKFvPatchScalarField::rmap
 
 void atmBoundaryLayerInletKFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     atmBoundaryLayer::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletOmega/atmBoundaryLayerInletOmegaFvPatchScalarField.C b/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletOmega/atmBoundaryLayerInletOmegaFvPatchScalarField.C
index 7cc4e9490d762f9a28ae5157b52082b2f33fd7e5..12aff01673760cad5034a9f479db53bb33e80c19 100644
--- a/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletOmega/atmBoundaryLayerInletOmegaFvPatchScalarField.C
+++ b/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletOmega/atmBoundaryLayerInletOmegaFvPatchScalarField.C
@@ -147,10 +147,10 @@ void atmBoundaryLayerInletOmegaFvPatchScalarField::rmap
 
 void atmBoundaryLayerInletOmegaFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     atmBoundaryLayer::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.C b/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.C
index 077a47391b1d05112207ad2a8796d484c99e013f..51eacba6a095d76393c7b8cf7421108c24f8afa2 100644
--- a/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.C
+++ b/src/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.C
@@ -148,10 +148,10 @@ void atmBoundaryLayerInletVelocityFvPatchVectorField::rmap
 
 void atmBoundaryLayerInletVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     atmBoundaryLayer::write(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/atmosphericModels/derivedFvPatchFields/atmTurbulentHeatFluxTemperature/atmTurbulentHeatFluxTemperatureFvPatchScalarField.C b/src/atmosphericModels/derivedFvPatchFields/atmTurbulentHeatFluxTemperature/atmTurbulentHeatFluxTemperatureFvPatchScalarField.C
index 34c01bdc692d21dd791ff97ae43835338a120942..de95132cd03cd0a67685fc2e3d865869f950031b 100644
--- a/src/atmosphericModels/derivedFvPatchFields/atmTurbulentHeatFluxTemperature/atmTurbulentHeatFluxTemperatureFvPatchScalarField.C
+++ b/src/atmosphericModels/derivedFvPatchFields/atmTurbulentHeatFluxTemperature/atmTurbulentHeatFluxTemperatureFvPatchScalarField.C
@@ -230,12 +230,12 @@ void atmTurbulentHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
 
 void atmTurbulentHeatFluxTemperatureFvPatchScalarField::write(Ostream& os) const
 {
-    fixedGradientFvPatchScalarField::write(os);
+    fixedGradientFvPatchField<scalar>::write(os);
     os.writeEntry("heatSource", heatSourceTypeNames[heatSource_]);
     os.writeEntry("alphaEff", alphaEffName_);
     Cp0_->writeData(os);
     q_->writeData(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmAlphatkWallFunction/atmAlphatkWallFunctionFvPatchScalarField.C b/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmAlphatkWallFunction/atmAlphatkWallFunctionFvPatchScalarField.C
index da7b552fa08828bff97f8d02e1d7abb277e9c415..461b3a46c77082b2c5c1567e70e9ed6002e01a34 100644
--- a/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmAlphatkWallFunction/atmAlphatkWallFunctionFvPatchScalarField.C
+++ b/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmAlphatkWallFunction/atmAlphatkWallFunctionFvPatchScalarField.C
@@ -321,7 +321,7 @@ void atmAlphatkWallFunctionFvPatchScalarField::write(Ostream& os) const
 {
     fvPatchField<scalar>::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmEpsilonWallFunction/atmEpsilonWallFunctionFvPatchScalarField.C b/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmEpsilonWallFunction/atmEpsilonWallFunctionFvPatchScalarField.C
index 2476dd5ceabd1147c82605f68815db06fa4a8bdd..8b290036ea330f27824acac13495d0d3f37ad11c 100644
--- a/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmEpsilonWallFunction/atmEpsilonWallFunctionFvPatchScalarField.C
+++ b/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmEpsilonWallFunction/atmEpsilonWallFunctionFvPatchScalarField.C
@@ -236,7 +236,7 @@ void Foam::atmEpsilonWallFunctionFvPatchScalarField::write
 {
     fvPatchField<scalar>::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutUWallFunction/atmNutUWallFunctionFvPatchScalarField.C b/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutUWallFunction/atmNutUWallFunctionFvPatchScalarField.C
index 17161e04243239c907d46880693c4bf1096358d1..175f4d3c3a2a15d93a2805a1d116a38c3613bc56 100644
--- a/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutUWallFunction/atmNutUWallFunctionFvPatchScalarField.C
+++ b/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutUWallFunction/atmNutUWallFunctionFvPatchScalarField.C
@@ -215,7 +215,7 @@ void atmNutUWallFunctionFvPatchScalarField::write(Ostream& os) const
 {
     nutWallFunctionFvPatchScalarField::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutWallFunction/atmNutWallFunctionFvPatchScalarField.C b/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutWallFunction/atmNutWallFunctionFvPatchScalarField.C
index 07cff2cf504b6ba3f25d220f4e0a289a573b71d5..da1a3fd09a57807e7358b5d07ac85af3e3ce4f47 100644
--- a/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutWallFunction/atmNutWallFunctionFvPatchScalarField.C
+++ b/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutWallFunction/atmNutWallFunctionFvPatchScalarField.C
@@ -236,7 +236,7 @@ void atmNutWallFunctionFvPatchScalarField::write(Ostream& os) const
 {
     nutWallFunctionFvPatchScalarField::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutkWallFunction/atmNutkWallFunctionFvPatchScalarField.C b/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutkWallFunction/atmNutkWallFunctionFvPatchScalarField.C
index 77dae9169f697c9f7e3ac01d5cdfe73b46976ed1..deaae7c9dc7c882bbcd1e26ccf692a8e669e7a9a 100644
--- a/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutkWallFunction/atmNutkWallFunctionFvPatchScalarField.C
+++ b/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutkWallFunction/atmNutkWallFunctionFvPatchScalarField.C
@@ -223,7 +223,7 @@ void atmNutkWallFunctionFvPatchScalarField::write(Ostream& os) const
 {
     nutWallFunctionFvPatchScalarField::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmOmegaWallFunction/atmOmegaWallFunctionFvPatchScalarField.C b/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmOmegaWallFunction/atmOmegaWallFunctionFvPatchScalarField.C
index 762eec32049c838b50374a1ab1d029f2f2eaa315..d5ddca515b7fe11f9eb24236c70fb1ef348ab9b9 100644
--- a/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmOmegaWallFunction/atmOmegaWallFunctionFvPatchScalarField.C
+++ b/src/atmosphericModels/derivedFvPatchFields/wallFunctions/atmOmegaWallFunction/atmOmegaWallFunctionFvPatchScalarField.C
@@ -220,7 +220,7 @@ void Foam::atmOmegaWallFunctionFvPatchScalarField::write
 {
     fvPatchField<scalar>::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/dynamicFaMesh/interfaceTrackingFvMesh/fvPatchFields/freeSurfacePressure/freeSurfacePressureFvPatchScalarField.C b/src/dynamicFaMesh/interfaceTrackingFvMesh/fvPatchFields/freeSurfacePressure/freeSurfacePressureFvPatchScalarField.C
index a0964ff7206cd4b766915afd70f26596108aaed0..e6fdb5558d24c4df768bde0d1675be90b4ab0019 100644
--- a/src/dynamicFaMesh/interfaceTrackingFvMesh/fvPatchFields/freeSurfacePressure/freeSurfacePressureFvPatchScalarField.C
+++ b/src/dynamicFaMesh/interfaceTrackingFvMesh/fvPatchFields/freeSurfacePressure/freeSurfacePressureFvPatchScalarField.C
@@ -166,9 +166,9 @@ void Foam::freeSurfacePressureFvPatchScalarField::updateCoeffs()
 
 void Foam::freeSurfacePressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     pa_.writeEntry("pa", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/dynamicFaMesh/interfaceTrackingFvMesh/fvPatchFields/freeSurfaceVelocity/freeSurfaceVelocityFvPatchVectorField.C b/src/dynamicFaMesh/interfaceTrackingFvMesh/fvPatchFields/freeSurfaceVelocity/freeSurfaceVelocityFvPatchVectorField.C
index 29c9b16a0f14a283aae095c42def88aaee8e69de..30076a0f3ce3563c91a5e8309e2622ea4b56ec1f 100644
--- a/src/dynamicFaMesh/interfaceTrackingFvMesh/fvPatchFields/freeSurfaceVelocity/freeSurfaceVelocityFvPatchVectorField.C
+++ b/src/dynamicFaMesh/interfaceTrackingFvMesh/fvPatchFields/freeSurfaceVelocity/freeSurfaceVelocityFvPatchVectorField.C
@@ -113,8 +113,8 @@ void Foam::freeSurfaceVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::freeSurfaceVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fixedGradientFvPatchVectorField::write(os);
-    writeEntry("value", os);
+    fixedGradientFvPatchField<vector>::write(os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
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 2fd56f1a4a2dc3f87967cd03c8812e7f7c152cde..43ac06e52f68c089cd4975c0edd5fa40a39117ff 100644
--- a/src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
@@ -181,7 +181,7 @@ void solidBodyMotionDisplacementPointPatchVectorField::
 write(Ostream& os) const
 {
     // Note: write value
-    fixedValuePointPatchVectorField::write(os);
+    fixedValuePointPatchField<vector>::write(os);
 
     os.writeEntry(solidBodyMotionFunction::typeName, SBMFPtr_->type());
 
diff --git a/src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H
index b999e7f3d0440a5a67742c25fe00d35b22de07bf..1ed9211e1b6748cc758a015000593b9f5f5c5940 100644
--- a/src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H
@@ -86,7 +86,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         solidBodyMotionDisplacementPointPatchVectorField
         (
             const solidBodyMotionDisplacementPointPatchVectorField&,
diff --git a/src/finiteArea/fields/faPatchFields/basic/calculated/calculatedFaPatchField.C b/src/finiteArea/fields/faPatchFields/basic/calculated/calculatedFaPatchField.C
index 2a2631313599f033a9c0a33c9f33d3fb5a644665..f266ca145712a4fd759468d355aa4b29f5e94918 100644
--- a/src/finiteArea/fields/faPatchFields/basic/calculated/calculatedFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/basic/calculated/calculatedFaPatchField.C
@@ -211,7 +211,7 @@ template<class Type>
 void Foam::calculatedFaPatchField<Type>::write(Ostream& os) const
 {
     faPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    faPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/basic/calculated/calculatedFaPatchField.H b/src/finiteArea/fields/faPatchFields/basic/calculated/calculatedFaPatchField.H
index 725a24812fa39d04b154e1ad63bdb56ac0405477..e800cb7a0c75464858b875c217efad10c780fc8e 100644
--- a/src/finiteArea/fields/faPatchFields/basic/calculated/calculatedFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/basic/calculated/calculatedFaPatchField.H
@@ -80,7 +80,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         calculatedFaPatchField
         (
             const calculatedFaPatchField<Type>&,
diff --git a/src/finiteArea/fields/faPatchFields/basic/coupled/coupledFaPatchField.C b/src/finiteArea/fields/faPatchFields/basic/coupled/coupledFaPatchField.C
index f51167f35c049bc70a7a6b269cad84dfb778f776..5a029c1d5c84637aeb5e687a1bbb2adda5dfbf81 100644
--- a/src/finiteArea/fields/faPatchFields/basic/coupled/coupledFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/basic/coupled/coupledFaPatchField.C
@@ -178,7 +178,7 @@ template<class Type>
 void Foam::coupledFaPatchField<Type>::write(Ostream& os) const
 {
     faPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    faPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/basic/fixedGradient/fixedGradientFaPatchField.H b/src/finiteArea/fields/faPatchFields/basic/fixedGradient/fixedGradientFaPatchField.H
index 45c7969bf9cf4def5e84389517324f84ded48a37..a7c959c76b4d4c4ba17e1900f9c881b612c54a54 100644
--- a/src/finiteArea/fields/faPatchFields/basic/fixedGradient/fixedGradientFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/basic/fixedGradient/fixedGradientFaPatchField.H
@@ -84,8 +84,8 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given fixedGradientFaPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given fixedGradient patch field
+        //- onto a new patch
         fixedGradientFaPatchField
         (
             const fixedGradientFaPatchField<Type>&,
diff --git a/src/finiteArea/fields/faPatchFields/basic/fixedValue/fixedValueFaPatchField.C b/src/finiteArea/fields/faPatchFields/basic/fixedValue/fixedValueFaPatchField.C
index 5cc1d7906169c9c508b8586fa677821a578bae5f..9b786c0c8c748282e6bd3d2b727bfec9359aba42 100644
--- a/src/finiteArea/fields/faPatchFields/basic/fixedValue/fixedValueFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/basic/fixedValue/fixedValueFaPatchField.C
@@ -133,7 +133,7 @@ template<class Type>
 void Foam::fixedValueFaPatchField<Type>::write(Ostream& os) const
 {
     faPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    faPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/basic/fixedValue/fixedValueFaPatchField.H b/src/finiteArea/fields/faPatchFields/basic/fixedValue/fixedValueFaPatchField.H
index e363dcbe8a95c1afff06aa05d6a3e985d1ea5375..a0ead76291ca089c41fe958ad42f097665246da0 100644
--- a/src/finiteArea/fields/faPatchFields/basic/fixedValue/fixedValueFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/basic/fixedValue/fixedValueFaPatchField.H
@@ -80,8 +80,8 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given fixedValueFaPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given fixedValue patch field
+        //- onto a new patch
         fixedValueFaPatchField
         (
             const fixedValueFaPatchField<Type>&,
diff --git a/src/finiteArea/fields/faPatchFields/basic/mixed/mixedFaPatchField.C b/src/finiteArea/fields/faPatchFields/basic/mixed/mixedFaPatchField.C
index 72e0d958a8b8584e35dfc80a20dc23cb6d4bef65..226a11b02dc29a44630c1d341ecc8dc34cb11688 100644
--- a/src/finiteArea/fields/faPatchFields/basic/mixed/mixedFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/basic/mixed/mixedFaPatchField.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016-2017 Wikki Ltd
+    Copyright (C) 2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -27,7 +28,58 @@ License
 
 #include "mixedFaPatchField.H"
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class Type>
+bool Foam::mixedFaPatchField<Type>::readMixedEntries
+(
+    const dictionary& dict,
+    IOobjectOption::readOption readOpt
+)
+{
+    const auto& p = faPatchFieldBase::patch();
+
+    if (!p.size()) return true;  // Can be exceptionally lazy
+    if (!IOobjectOption::isAnyRead(readOpt)) return false;
+
+
+    // If there is a 'refValue', also require all others
+    const auto* hasValue = dict.findEntry("refValue", keyType::LITERAL);
+
+    if (!hasValue && IOobjectOption::isReadOptional(readOpt))
+    {
+        return false;
+    }
+
+    const auto* hasGrad = dict.findEntry("refGradient", keyType::LITERAL);
+    const auto* hasFrac = dict.findEntry("valueFraction", keyType::LITERAL);
+
+    // Combined error message on failure
+    if (!hasValue || !hasGrad || !hasFrac)
+    {
+        FatalIOErrorInFunction(dict)
+            << "Required entries:";
+
+        if (!hasValue) FatalIOError << " 'refValue'";
+        if (!hasGrad)  FatalIOError << " 'refGradient'";
+        if (!hasFrac)  FatalIOError << " 'valueFraction'";
+
+        FatalIOError
+            << " : missing for patch " << p.name()
+            << " : in dictionary " << dict.relativeName() << nl
+            << exit(FatalIOError);
+    }
+
+    // Everything verified - can assign
+    refValue_.assign(*hasValue, p.size());
+    refGrad_.assign(*hasGrad, p.size());
+    valueFraction_.assign(*hasFrac, p.size());
+
+    return true;
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class Type>
 Foam::mixedFaPatchField<Type>::mixedFaPatchField
@@ -217,7 +269,7 @@ void Foam::mixedFaPatchField<Type>::write(Ostream& os) const
     refValue_.writeEntry("refValue", os);
     refGrad_.writeEntry("refGradient", os);
     valueFraction_.writeEntry("valueFraction", os);
-    this->writeEntry("value", os);
+    faPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/basic/mixed/mixedFaPatchField.H b/src/finiteArea/fields/faPatchFields/basic/mixed/mixedFaPatchField.H
index 9688abda354d0fad9fb9ba9d69b861590590df53..e635690c1f07a97ae626076dcb117953cc0f4d51 100644
--- a/src/finiteArea/fields/faPatchFields/basic/mixed/mixedFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/basic/mixed/mixedFaPatchField.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016-2017 Wikki Ltd
+    Copyright (C) 2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -27,6 +28,17 @@ Class
     Foam::mixedFaPatchField
 
 Description
+    This boundary condition provides a base class for 'mixed' type boundary
+    conditions, i.e. conditions that mix fixed value and patch-normal gradient
+    conditions.
+
+Usage
+    \table
+        Property     | Description                          | Required | Default
+        refValue     | fixed value                          | yes |
+        refGradient  | patch normal gradient                | yes |
+        valueFraction | value weighting (0-1)               | yes |
+    \endtable
 
 Author
     Zeljko Tukovic, FMENA
@@ -37,8 +49,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef mixedFaPatchField_H
-#define mixedFaPatchField_H
+#ifndef Foam_mixedFaPatchField_H
+#define Foam_mixedFaPatchField_H
 
 #include "faPatchField.H"
 
@@ -56,7 +68,7 @@ class mixedFaPatchField
 :
     public faPatchField<Type>
 {
-    // Private data
+    // Private Data
 
         //- Value field
         Field<Type> refValue_;
@@ -68,6 +80,21 @@ class mixedFaPatchField
         scalarField valueFraction_;
 
 
+protected:
+
+        //- Read the "refValue", "refGradient" and "valueFraction" entries
+        //- into their respective places.
+        //  The reading can be optional (default), mandatory etc.
+        //  If refValue is to be read, refGradient and valueFraction must
+        //  also exist.
+        //  \returns True on success
+        bool readMixedEntries
+        (
+            const dictionary& dict,
+            IOobjectOption::readOption readOpt = IOobjectOption::LAZY_READ
+        );
+
+
 public:
 
     //- Runtime type information
diff --git a/src/finiteArea/fields/faPatchFields/basic/sliced/slicedFaPatchField.C b/src/finiteArea/fields/faPatchFields/basic/sliced/slicedFaPatchField.C
index 06bc08d8e99e0d78804979d8ea5fad2c2246e173..becbcfcf051b0ed31554e54e752fa4f8dce650ab 100644
--- a/src/finiteArea/fields/faPatchFields/basic/sliced/slicedFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/basic/sliced/slicedFaPatchField.C
@@ -265,7 +265,7 @@ template<class Type>
 void Foam::slicedFaPatchField<Type>::write(Ostream& os) const
 {
     faPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    faPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/basic/sliced/slicedFaPatchField.H b/src/finiteArea/fields/faPatchFields/basic/sliced/slicedFaPatchField.H
index 32f1b350a1bcf54230167202a6142e1d5b4a4db1..ef83ff9cd810bd56513670794b03282b7c86b824 100644
--- a/src/finiteArea/fields/faPatchFields/basic/sliced/slicedFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/basic/sliced/slicedFaPatchField.H
@@ -103,8 +103,8 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given slicedFaPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given sliced patch field
+        //- onto a new patch
         slicedFaPatchField
         (
             const slicedFaPatchField<Type>&,
diff --git a/src/finiteArea/fields/faPatchFields/basic/transform/transformFaPatchField.H b/src/finiteArea/fields/faPatchFields/basic/transform/transformFaPatchField.H
index 22af0265ec964916fa4e81b457ad4a31077742ab..cfc991aba16fe5ced58b8b4af15003ea035da0ce 100644
--- a/src/finiteArea/fields/faPatchFields/basic/transform/transformFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/basic/transform/transformFaPatchField.H
@@ -81,8 +81,8 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given transformFaPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given transform patch field
+        //- onto a new patch
         transformFaPatchField
         (
             const transformFaPatchField<Type>&,
diff --git a/src/finiteArea/fields/faPatchFields/basic/zeroGradient/zeroGradientFaPatchField.H b/src/finiteArea/fields/faPatchFields/basic/zeroGradient/zeroGradientFaPatchField.H
index bbb149309791f16975e1e606deb4008bff2ad369..3a0c3ef6ccedc56227e1ed4ee5e38d522cd144de 100644
--- a/src/finiteArea/fields/faPatchFields/basic/zeroGradient/zeroGradientFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/basic/zeroGradient/zeroGradientFaPatchField.H
@@ -80,8 +80,8 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given zeroGradientFaPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given zeroGradient patch field
+        //- onto a new patch
         zeroGradientFaPatchField
         (
             const zeroGradientFaPatchField<Type>&,
diff --git a/src/finiteArea/fields/faPatchFields/derived/clampedPlate/clampedPlateFaPatchField.C b/src/finiteArea/fields/faPatchFields/derived/clampedPlate/clampedPlateFaPatchField.C
index d1d340b8d923d23c66f26897c4e17df129b3c00d..d6fb84c4ed6bca1a9006f716ff5f6849149b2b8f 100644
--- a/src/finiteArea/fields/faPatchFields/derived/clampedPlate/clampedPlateFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/derived/clampedPlate/clampedPlateFaPatchField.C
@@ -167,7 +167,7 @@ template<class Type>
 void clampedPlateFaPatchField<Type>::write(Ostream& os) const
 {
     faPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    faPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/clampedPlate/clampedPlateFaPatchField.H b/src/finiteArea/fields/faPatchFields/derived/clampedPlate/clampedPlateFaPatchField.H
index ad740c900b3478f2ce297ccf0819cfe8d78a3152..acce423a43f9bf39ee0e09f7b5bdad6f707194de 100644
--- a/src/finiteArea/fields/faPatchFields/derived/clampedPlate/clampedPlateFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/derived/clampedPlate/clampedPlateFaPatchField.H
@@ -98,7 +98,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given clampedPlateFaPatchField<Type>
+        //- Construct by mapping the given clampedPlate patch field
         //- onto a new patch
         clampedPlateFaPatchField
         (
diff --git a/src/finiteArea/fields/faPatchFields/derived/edgeNormalFixedValue/edgeNormalFixedValueFaPatchVectorField.C b/src/finiteArea/fields/faPatchFields/derived/edgeNormalFixedValue/edgeNormalFixedValueFaPatchVectorField.C
index 1db9e22015b53435ba6e4c7356d2ab6661f7cd56..541dd89b0f542b689e877da7918c84801008a086 100644
--- a/src/finiteArea/fields/faPatchFields/derived/edgeNormalFixedValue/edgeNormalFixedValueFaPatchVectorField.C
+++ b/src/finiteArea/fields/faPatchFields/derived/edgeNormalFixedValue/edgeNormalFixedValueFaPatchVectorField.C
@@ -134,7 +134,7 @@ void Foam::edgeNormalFixedValueFaPatchVectorField::updateCoeffs()
 
 void Foam::edgeNormalFixedValueFaPatchVectorField::write(Ostream& os) const
 {
-    fixedValueFaPatchVectorField::write(os);
+    fixedValueFaPatchField<vector>::write(os);
     refValue_.writeEntry("refValue", os);
 }
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/fixedValueOutflow/fixedValueOutflowFaPatchField.C b/src/finiteArea/fields/faPatchFields/derived/fixedValueOutflow/fixedValueOutflowFaPatchField.C
index 1f73182c1ffebbb47d6895f9b330b021692b59e6..e254e255b445f0d76e64cabd5d71f2b05e825595 100644
--- a/src/finiteArea/fields/faPatchFields/derived/fixedValueOutflow/fixedValueOutflowFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/derived/fixedValueOutflow/fixedValueOutflowFaPatchField.C
@@ -133,7 +133,7 @@ template<class Type>
 void Foam::fixedValueOutflowFaPatchField<Type>::write(Ostream& os) const
 {
     faPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    faPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/fixedValueOutflow/fixedValueOutflowFaPatchField.H b/src/finiteArea/fields/faPatchFields/derived/fixedValueOutflow/fixedValueOutflowFaPatchField.H
index fa22145c574e8f6d94b6b90ca2cec8b566c4b28f..ffbf7b22baef672af38553a57f39240d6040427d 100644
--- a/src/finiteArea/fields/faPatchFields/derived/fixedValueOutflow/fixedValueOutflowFaPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/derived/fixedValueOutflow/fixedValueOutflowFaPatchField.H
@@ -80,8 +80,8 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given fixedValueOutflowFaPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given fixedValueOutflow patch field
+        //- onto a new patch
         fixedValueOutflowFaPatchField
         (
             const fixedValueOutflowFaPatchField<Type>&,
diff --git a/src/finiteArea/fields/faPatchFields/derived/inletOutlet/inletOutletFaPatchField.C b/src/finiteArea/fields/faPatchFields/derived/inletOutlet/inletOutletFaPatchField.C
index 361d58adb8c2b413face61a5d252693b1ad2b79f..cf93fde241b5eab27ac7b6a7cf42bba506272610 100644
--- a/src/finiteArea/fields/faPatchFields/derived/inletOutlet/inletOutletFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/derived/inletOutlet/inletOutletFaPatchField.C
@@ -138,7 +138,7 @@ void Foam::inletOutletFaPatchField<Type>::write(Ostream& os) const
     faPatchField<Type>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     this->refValue().writeEntry("inletValue", os);
-    this->writeEntry("value", os);
+    faPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchField.C b/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchField.C
index 1bba29333b639c1b71bdbffc0283238ad29ca254..2abee7d91c26fcbf8e1959fd927e7cc4ddf18291 100644
--- a/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFaPatchField.C
@@ -132,7 +132,7 @@ void Foam::timeVaryingUniformFixedValueFaPatchField<Type>::write
 {
     faPatchField<Type>::write(os);
     timeSeries_.write(os);
-    this->writeEntry("value", os);
+    faPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteArea/fields/faPatchFields/faPatchField/faPatchField.C b/src/finiteArea/fields/faPatchFields/faPatchField/faPatchField.C
index ff5fc8f3176358925bbcb4eb565e3b60e6f5541b..8f04bb6514af32ecd4be22505397b26c981f37ee 100644
--- a/src/finiteArea/fields/faPatchFields/faPatchField/faPatchField.C
+++ b/src/finiteArea/fields/faPatchFields/faPatchField/faPatchField.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016-2017 Wikki Ltd
-    Copyright (C) 2020-2022 OpenCFD Ltd.
+    Copyright (C) 2020-2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -26,9 +26,45 @@ License
 
 \*---------------------------------------------------------------------------*/
 
+#include "dictionary.H"
 #include "faPatchField.H"
 #include "faPatchFieldMapper.H"
 
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class Type>
+bool Foam::faPatchField<Type>::readValueEntry
+(
+    const dictionary& dict,
+    IOobjectOption::readOption readOpt
+)
+{
+    const auto& p = faPatchFieldBase::patch();
+
+    if (!p.size()) return true;  // Can be exceptionally lazy
+    if (!IOobjectOption::isAnyRead(readOpt)) return false;
+
+
+    const auto* eptr = dict.findEntry("value", keyType::LITERAL);
+
+    if (eptr)
+    {
+        Field<Type>::assign(*eptr, p.size());
+        return true;
+    }
+
+    if (IOobjectOption::isReadRequired(readOpt))
+    {
+        FatalIOErrorInFunction(dict)
+            << "Required entry 'value' : missing for patch " << p.name()
+            << " in dictionary " << dict.relativeName() << nl
+            << exit(FatalIOError);
+    }
+
+    return false;
+}
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class Type>
@@ -49,11 +85,11 @@ Foam::faPatchField<Type>::faPatchField
 (
     const faPatch& p,
     const DimensionedField<Type, areaMesh>& iF,
-    const Field<Type>& f
+    const Field<Type>& pfld
 )
 :
     faPatchFieldBase(p),
-    Field<Type>(f),
+    Field<Type>(pfld),
     internalField_(iF)
 {}
 
@@ -61,14 +97,13 @@ Foam::faPatchField<Type>::faPatchField
 template<class Type>
 Foam::faPatchField<Type>::faPatchField
 (
-    const faPatchField<Type>& ptf,
     const faPatch& p,
     const DimensionedField<Type, areaMesh>& iF,
-    const faPatchFieldMapper& mapper
+    Field<Type>&& pfld
 )
 :
-    faPatchFieldBase(ptf, p),
-    Field<Type>(ptf, mapper),
+    faPatchFieldBase(p),
+    Field<Type>(std::move(pfld)),
     internalField_(iF)
 {}
 
@@ -101,6 +136,21 @@ Foam::faPatchField<Type>::faPatchField
 }
 
 
+template<class Type>
+Foam::faPatchField<Type>::faPatchField
+(
+    const faPatchField<Type>& ptf,
+    const faPatch& p,
+    const DimensionedField<Type, areaMesh>& iF,
+    const faPatchFieldMapper& mapper
+)
+:
+    faPatchFieldBase(ptf, p),
+    Field<Type>(ptf, mapper),
+    internalField_(iF)
+{}
+
+
 template<class Type>
 Foam::faPatchField<Type>::faPatchField
 (
diff --git a/src/finiteArea/fields/faPatchFields/faPatchField/faPatchField.H b/src/finiteArea/fields/faPatchFields/faPatchField/faPatchField.H
index bc915135c5edbc953d015ad66493fd35b96ca675..fd8196ddfb7b62f569911f41771a76f71b5d271c 100644
--- a/src/finiteArea/fields/faPatchFields/faPatchField/faPatchField.H
+++ b/src/finiteArea/fields/faPatchFields/faPatchField/faPatchField.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016-2017 Wikki Ltd
-    Copyright (C) 2019-2022 OpenCFD Ltd.
+    Copyright (C) 2019-2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -51,6 +51,7 @@ SourceFiles
 
 #include "faPatch.H"
 #include "DimensionedField.H"
+#include "fieldTypes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -58,8 +59,8 @@ namespace Foam
 {
 
 // Forward Declarations
-class objectRegistry;
 class dictionary;
+class objectRegistry;
 class faPatchFieldMapper;
 class areaMesh;
 
@@ -195,6 +196,25 @@ class faPatchField
         //- Reference to internal field
         const DimensionedField<Type, areaMesh>& internalField_;
 
+protected:
+
+    // Protected Member Functions
+
+        //- Read the "value" entry into \c *this.
+        //  The reading can be optional (default), mandatory etc.
+        //  \returns True on success
+        bool readValueEntry
+        (
+            const dictionary& dict,
+            IOobjectOption::readOption readOpt = IOobjectOption::LAZY_READ
+        );
+
+        //- Write *this field as a "value" entry
+        void writeValueEntry(Ostream& os) const
+        {
+            Field<Type>::writeEntry("value", os);
+        }
+
 
 public:
 
@@ -259,12 +279,20 @@ public:
             const DimensionedField<Type, areaMesh>&
         );
 
-        //- Construct from patch and internal field and patch field
+        //- Construct from patch, internal field and patch field
+        faPatchField
+        (
+            const faPatch&,
+            const DimensionedField<Type, areaMesh>&,
+            const Field<Type>& pfld
+        );
+
+        //- Construct from patch, internal field and patch field
         faPatchField
         (
             const faPatch&,
             const DimensionedField<Type, areaMesh>&,
-            const Field<Type>&
+            Field<Type>&& pfld
         );
 
         //- Construct from patch, internal field and dictionary
@@ -375,37 +403,36 @@ public:
         static const word& zeroGradientType();
 
 
-        // Attributes
+    // Attributes
 
-            //- True if this patch field fixes a value.
-            //  Needed to check if a level has to be specified while solving
-            //  Poissons equations.
-            virtual bool fixesValue() const
-            {
-                return false;
-            }
+        //- True if this patch field fixes a value.
+        //  Needed to check if a level has to be specified while solving
+        //  Poissons equations.
+        virtual bool fixesValue() const
+        {
+            return false;
+        }
 
-            //- True if this patch field is coupled
-            virtual bool coupled() const
-            {
-                return false;
-            }
+        //- True if this patch field is coupled
+        virtual bool coupled() const
+        {
+            return false;
+        }
 
 
-        // Access
+    // Access
 
-            //- Return const-reference to the dimensioned internal field
-            const DimensionedField<Type, areaMesh>& internalField()
-            const noexcept
-            {
-                return internalField_;
-            }
+        //- Return const-reference to the dimensioned internal field
+        const DimensionedField<Type, areaMesh>& internalField() const noexcept
+        {
+            return internalField_;
+        }
 
-            //- Return const-reference to the internal field values
-            const Field<Type>& primitiveField() const noexcept
-            {
-                return internalField_;
-            }
+        //- Return const-reference to the internal field values
+        const Field<Type>& primitiveField() const noexcept
+        {
+            return internalField_;
+        }
 
 
         // Mapping
diff --git a/src/finiteArea/fields/faePatchFields/basic/calculated/calculatedFaePatchField.C b/src/finiteArea/fields/faePatchFields/basic/calculated/calculatedFaePatchField.C
index 93e3b6ccf4a4a6dd782cf2ae4179a387b92e1505..d27fa0bfa698a860eaa9a2c55ade83ccd67fd4f5 100644
--- a/src/finiteArea/fields/faePatchFields/basic/calculated/calculatedFaePatchField.C
+++ b/src/finiteArea/fields/faePatchFields/basic/calculated/calculatedFaePatchField.C
@@ -134,7 +134,7 @@ template<class Type>
 void Foam::calculatedFaePatchField<Type>::write(Ostream& os) const
 {
     faePatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    faePatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteArea/fields/faePatchFields/basic/calculated/calculatedFaePatchField.H b/src/finiteArea/fields/faePatchFields/basic/calculated/calculatedFaePatchField.H
index 3a3e2564e30cbeeb7c0b8f1db0183045fb9e9dbf..f2343d1f3f56b769d400a6a904b0e1104426bdb3 100644
--- a/src/finiteArea/fields/faePatchFields/basic/calculated/calculatedFaePatchField.H
+++ b/src/finiteArea/fields/faePatchFields/basic/calculated/calculatedFaePatchField.H
@@ -38,8 +38,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef calculatedFaePatchField_H
-#define calculatedFaePatchField_H
+#ifndef Foam_calculatedFaePatchField_H
+#define Foam_calculatedFaePatchField_H
 
 #include "faePatchField.H"
 
@@ -57,7 +57,6 @@ class calculatedFaePatchField
 :
     public faePatchField<Type>
 {
-
 public:
 
     //- Runtime type information
@@ -81,7 +80,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         calculatedFaePatchField
         (
             const calculatedFaePatchField<Type>&,
@@ -91,10 +90,7 @@ public:
         );
 
         //- Construct as copy
-        calculatedFaePatchField
-        (
-            const calculatedFaePatchField<Type>&
-        );
+        calculatedFaePatchField(const calculatedFaePatchField<Type>&);
 
         //- Construct and return a clone
         virtual tmp<faePatchField<Type>> clone() const
@@ -128,7 +124,7 @@ public:
     virtual ~calculatedFaePatchField() = default;
 
 
-    // Member functions
+    // Member Functions
 
         // Access
 
diff --git a/src/finiteArea/fields/faePatchFields/basic/coupled/coupledFaePatchField.C b/src/finiteArea/fields/faePatchFields/basic/coupled/coupledFaePatchField.C
index e0e49569f53b39151daa765798fd6dae70eeecc0..0e8f5ef63e5cf762806e78beda6c5bd11a169df9 100644
--- a/src/finiteArea/fields/faePatchFields/basic/coupled/coupledFaePatchField.C
+++ b/src/finiteArea/fields/faePatchFields/basic/coupled/coupledFaePatchField.C
@@ -104,7 +104,7 @@ template<class Type>
 void Foam::coupledFaePatchField<Type>::write(Ostream& os) const
 {
     faePatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    faePatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteArea/fields/faePatchFields/basic/coupled/coupledFaePatchField.H b/src/finiteArea/fields/faePatchFields/basic/coupled/coupledFaePatchField.H
index 08630e0a00726941425fad85d63365ef196ad2fb..a92fb3f1751a41025dfa13a87c6afea44ad81f67 100644
--- a/src/finiteArea/fields/faePatchFields/basic/coupled/coupledFaePatchField.H
+++ b/src/finiteArea/fields/faePatchFields/basic/coupled/coupledFaePatchField.H
@@ -38,8 +38,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef coupledFaePatchField_H
-#define coupledFaePatchField_H
+#ifndef Foam_coupledFaePatchField_H
+#define Foam_coupledFaePatchField_H
 
 #include "faePatchField.H"
 #include "coupledFaPatch.H"
@@ -58,7 +58,6 @@ class coupledFaePatchField
 :
     public faePatchField<Type>
 {
-
 public:
 
     //- Runtime type information
@@ -74,7 +73,7 @@ public:
             const DimensionedField<Type, edgeMesh>&
         );
 
-        //- Construct from patch and internal field and patch field
+        //- Construct from patch, internal field and patch field
         coupledFaePatchField
         (
             const faPatch&,
diff --git a/src/finiteArea/fields/faePatchFields/basic/fixedValue/fixedValueFaePatchField.C b/src/finiteArea/fields/faePatchFields/basic/fixedValue/fixedValueFaePatchField.C
index c1a626036aa92bd6a002b3c977aed7218ebe0bbf..0455efdbcfde546ac1119ab859b8e3e528b89efb 100644
--- a/src/finiteArea/fields/faePatchFields/basic/fixedValue/fixedValueFaePatchField.C
+++ b/src/finiteArea/fields/faePatchFields/basic/fixedValue/fixedValueFaePatchField.C
@@ -92,7 +92,7 @@ template<class Type>
 void Foam::fixedValueFaePatchField<Type>::write(Ostream& os) const
 {
     faePatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    faePatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteArea/fields/faePatchFields/basic/fixedValue/fixedValueFaePatchField.H b/src/finiteArea/fields/faePatchFields/basic/fixedValue/fixedValueFaePatchField.H
index 7d55e6aa050244ee75967f6a538b686ce6716331..7d36b4d063e8a51555b461bfd655522680e01b93 100644
--- a/src/finiteArea/fields/faePatchFields/basic/fixedValue/fixedValueFaePatchField.H
+++ b/src/finiteArea/fields/faePatchFields/basic/fixedValue/fixedValueFaePatchField.H
@@ -38,8 +38,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef fixedValueFaePatchField_H
-#define fixedValueFaePatchField_H
+#ifndef Foam_fixedValueFaePatchField_H
+#define Foam_fixedValueFaePatchField_H
 
 #include "faePatchField.H"
 
@@ -57,7 +57,6 @@ class fixedValueFaePatchField
 :
     public faePatchField<Type>
 {
-
 public:
 
     //- Runtime type information
@@ -81,8 +80,8 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given fixedValueFaePatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given fixedValue patch field
+        //- onto a new patch
         fixedValueFaePatchField
         (
             const fixedValueFaePatchField<Type>&,
diff --git a/src/finiteArea/fields/faePatchFields/basic/sliced/slicedFaePatchField.H b/src/finiteArea/fields/faePatchFields/basic/sliced/slicedFaePatchField.H
index 134d1cda394bea6a5f4ec5e42f371fb84681959e..40caa47ba11e75ce27f06f93f1f9bab3e47ef440 100644
--- a/src/finiteArea/fields/faePatchFields/basic/sliced/slicedFaePatchField.H
+++ b/src/finiteArea/fields/faePatchFields/basic/sliced/slicedFaePatchField.H
@@ -97,8 +97,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given slicedFaePatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given sliced patch field onto a new patch
         slicedFaePatchField
         (
             const slicedFaePatchField<Type>&,
diff --git a/src/finiteArea/fields/faePatchFields/constraint/cyclic/cyclicFaePatchField.H b/src/finiteArea/fields/faePatchFields/constraint/cyclic/cyclicFaePatchField.H
index 6034bad11f3105297173a090a1db79ed9d089fad..180033d5e7995c35b6e482fc53e02c778f2f66c9 100644
--- a/src/finiteArea/fields/faePatchFields/constraint/cyclic/cyclicFaePatchField.H
+++ b/src/finiteArea/fields/faePatchFields/constraint/cyclic/cyclicFaePatchField.H
@@ -39,8 +39,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef cyclicFaePatchField_H
-#define cyclicFaePatchField_H
+#ifndef Foam_cyclicFaePatchField_H
+#define Foam_cyclicFaePatchField_H
 
 #include "coupledFaePatchField.H"
 #include "cyclicFaPatch.H"
@@ -85,7 +85,7 @@ public:
         (
             const faPatch&,
             const DimensionedField<Type, edgeMesh>&,
-            const dictionary&
+            const dictionary& dict
         );
 
         //- Construct by mapping given cyclicFaePatchField onto a new patch
diff --git a/src/finiteArea/fields/faePatchFields/constraint/empty/emptyFaePatchField.H b/src/finiteArea/fields/faePatchFields/constraint/empty/emptyFaePatchField.H
index f92bcd0b4ec045e05dd4a1d7e3b7ebdd2068ad03..03b86c0cdaa706fd4ae6dda19b2280f914d3f19f 100644
--- a/src/finiteArea/fields/faePatchFields/constraint/empty/emptyFaePatchField.H
+++ b/src/finiteArea/fields/faePatchFields/constraint/empty/emptyFaePatchField.H
@@ -38,8 +38,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef emptyFaePatchField_H
-#define emptyFaePatchField_H
+#ifndef Foam_emptyFaePatchField_H
+#define Foam_emptyFaePatchField_H
 
 #include "faePatchField.H"
 #include "emptyFaPatch.H"
@@ -58,7 +58,6 @@ class emptyFaePatchField
 :
     public faePatchField<Type>
 {
-
 public:
 
     //- Runtime type information
diff --git a/src/finiteArea/fields/faePatchFields/constraint/processor/processorFaePatchField.C b/src/finiteArea/fields/faePatchFields/constraint/processor/processorFaePatchField.C
index 2bf557d7034cabd6396c5a358ad79fe90ab9c92d..d39e63eb2553371b4ba4b6c026d6bbc815e1b1eb 100644
--- a/src/finiteArea/fields/faePatchFields/constraint/processor/processorFaePatchField.C
+++ b/src/finiteArea/fields/faePatchFields/constraint/processor/processorFaePatchField.C
@@ -122,11 +122,4 @@ Foam::processorFaePatchField<Type>::processorFaePatchField
 {}
 
 
-// * * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * //
-
-template<class Type>
-Foam::processorFaePatchField<Type>::~processorFaePatchField()
-{}
-
-
 // ************************************************************************* //
diff --git a/src/finiteArea/fields/faePatchFields/constraint/processor/processorFaePatchField.H b/src/finiteArea/fields/faePatchFields/constraint/processor/processorFaePatchField.H
index 3b6c5f8585988e8c58f348d6210ae7ddfb785faf..c8f9e6441f8a71a5de7ffbe36974c84c157986c2 100644
--- a/src/finiteArea/fields/faePatchFields/constraint/processor/processorFaePatchField.H
+++ b/src/finiteArea/fields/faePatchFields/constraint/processor/processorFaePatchField.H
@@ -37,8 +37,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef processorFaePatchField_H
-#define processorFaePatchField_H
+#ifndef Foam_processorFaePatchField_H
+#define Foam_processorFaePatchField_H
 
 #include "coupledFaePatchField.H"
 #include "processorFaPatch.H"
@@ -57,7 +57,7 @@ class processorFaePatchField
 :
     public coupledFaePatchField<Type>
 {
-    // Private data
+    // Private Data
 
         //- Local reference cast into the processor patch
         const processorFaPatch& procPatch_;
@@ -135,8 +135,8 @@ public:
         }
 
 
-    // Destructor
-    virtual ~processorFaePatchField();
+    //- Destructor
+    virtual ~processorFaePatchField() = default;
 
 
     // Member Functions
diff --git a/src/finiteArea/fields/faePatchFields/constraint/symmetry/symmetryFaePatchField.H b/src/finiteArea/fields/faePatchFields/constraint/symmetry/symmetryFaePatchField.H
index 9c2ef73e2a4af47b269fa2013461ee97d3e793ad..ff0d676a291ac6fce029883ba54d2b37f5418012 100644
--- a/src/finiteArea/fields/faePatchFields/constraint/symmetry/symmetryFaePatchField.H
+++ b/src/finiteArea/fields/faePatchFields/constraint/symmetry/symmetryFaePatchField.H
@@ -39,8 +39,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef symmetryFaePatchField_H
-#define symmetryFaePatchField_H
+#ifndef Foam_symmetryFaePatchField_H
+#define Foam_symmetryFaePatchField_H
 
 #include "faePatchField.H"
 #include "symmetryFaPatch.H"
@@ -59,7 +59,6 @@ class symmetryFaePatchField
 :
     public faePatchField<Type>
 {
-
 public:
 
     //- Runtime type information
diff --git a/src/finiteArea/fields/faePatchFields/constraint/wedge/wedgeFaePatchField.H b/src/finiteArea/fields/faePatchFields/constraint/wedge/wedgeFaePatchField.H
index 12f943a652aa052c2b1de1069403985bc9338f0f..017e6426437930d116ebd0de30cb5055b25da2cc 100644
--- a/src/finiteArea/fields/faePatchFields/constraint/wedge/wedgeFaePatchField.H
+++ b/src/finiteArea/fields/faePatchFields/constraint/wedge/wedgeFaePatchField.H
@@ -37,8 +37,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef wedgeFaePatchField_H
-#define wedgeFaePatchField_H
+#ifndef Foam_wedgeFaePatchField_H
+#define Foam_wedgeFaePatchField_H
 
 #include "faePatchField.H"
 #include "wedgeFaPatch.H"
@@ -57,7 +57,6 @@ class wedgeFaePatchField
 :
     public faePatchField<Type>
 {
-
 public:
 
     //- Runtime type information
diff --git a/src/finiteArea/fields/faePatchFields/faePatchField/faePatchField.C b/src/finiteArea/fields/faePatchFields/faePatchField/faePatchField.C
index d45518577a19ed4cbd2924afdd6fba9458047d35..26cfa178c9b821b66254e036333f672d358495d6 100644
--- a/src/finiteArea/fields/faePatchFields/faePatchField/faePatchField.C
+++ b/src/finiteArea/fields/faePatchFields/faePatchField/faePatchField.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016-2017 Wikki Ltd
-    Copyright (C) 2022 OpenCFD Ltd.
+    Copyright (C) 2022-2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -29,6 +29,41 @@ License
 #include "faePatchField.H"
 #include "faPatchFieldMapper.H"
 
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class Type>
+bool Foam::faePatchField<Type>::readValueEntry
+(
+    const dictionary& dict,
+    IOobjectOption::readOption readOpt
+)
+{
+    const auto& p = faePatchFieldBase::patch();
+
+    if (!p.size()) return true;  // Can be exceptionally lazy
+    if (!IOobjectOption::isAnyRead(readOpt)) return false;
+
+
+    const auto* eptr = dict.findEntry("value", keyType::LITERAL);
+
+    if (eptr)
+    {
+        Field<Type>::assign(*eptr, p.size());
+        return true;
+    }
+
+    if (IOobjectOption::isReadRequired(readOpt))
+    {
+        FatalIOErrorInFunction(dict)
+            << "Required entry 'value' : missing for patch " << p.name()
+            << " in dictionary " << dict.relativeName() << nl
+            << exit(FatalIOError);
+    }
+
+    return false;
+}
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class Type>
@@ -49,11 +84,11 @@ Foam::faePatchField<Type>::faePatchField
 (
     const faPatch& p,
     const DimensionedField<Type, edgeMesh>& iF,
-    const Field<Type>& f
+    const Field<Type>& pfld
 )
 :
     faePatchFieldBase(p),
-    Field<Type>(f),
+    Field<Type>(pfld),
     internalField_(iF)
 {}
 
@@ -61,14 +96,13 @@ Foam::faePatchField<Type>::faePatchField
 template<class Type>
 Foam::faePatchField<Type>::faePatchField
 (
-    const faePatchField<Type>& ptf,
     const faPatch& p,
     const DimensionedField<Type, edgeMesh>& iF,
-    const faPatchFieldMapper& mapper
+    Field<Type>&& pfld
 )
 :
-    faePatchFieldBase(ptf, p),
-    Field<Type>(ptf, mapper),
+    faePatchFieldBase(p),
+    Field<Type>(std::move(pfld)),
     internalField_(iF)
 {}
 
@@ -98,6 +132,21 @@ Foam::faePatchField<Type>::faePatchField
 }
 
 
+template<class Type>
+Foam::faePatchField<Type>::faePatchField
+(
+    const faePatchField<Type>& ptf,
+    const faPatch& p,
+    const DimensionedField<Type, edgeMesh>& iF,
+    const faPatchFieldMapper& mapper
+)
+:
+    faePatchFieldBase(ptf, p),
+    Field<Type>(ptf, mapper),
+    internalField_(iF)
+{}
+
+
 template<class Type>
 Foam::faePatchField<Type>::faePatchField
 (
diff --git a/src/finiteArea/fields/faePatchFields/faePatchField/faePatchField.H b/src/finiteArea/fields/faePatchFields/faePatchField/faePatchField.H
index 720a4f00e50d7abfafaae00607f8c1e090a8bca7..d4b73f5b13785647fce079e2f74c6efaa900222a 100644
--- a/src/finiteArea/fields/faePatchFields/faePatchField/faePatchField.H
+++ b/src/finiteArea/fields/faePatchFields/faePatchField/faePatchField.H
@@ -51,6 +51,7 @@ SourceFiles
 
 #include "faPatch.H"
 #include "DimensionedField.H"
+#include "fieldTypes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -58,9 +59,8 @@ namespace Foam
 {
 
 // Forward Declarations
-
-class objectRegistry;
 class dictionary;
+class objectRegistry;
 class faPatchFieldMapper;
 class edgeMesh;
 
@@ -159,6 +159,25 @@ class faePatchField
         //- Reference to internal field
         const DimensionedField<Type, edgeMesh>& internalField_;
 
+protected:
+
+    // Protected Member Functions
+
+        //- Read the "value" entry into \c *this.
+        //  The reading can be optional (default), mandatory etc.
+        //  \returns True on success
+        bool readValueEntry
+        (
+            const dictionary& dict,
+            IOobjectOption::readOption readOpt = IOobjectOption::LAZY_READ
+        );
+
+        //- Write \c *this field as a "value" entry
+        void writeValueEntry(Ostream& os) const
+        {
+            Field<Type>::writeEntry("value", os);
+        }
+
 
 public:
 
@@ -223,12 +242,20 @@ public:
             const DimensionedField<Type, edgeMesh>&
         );
 
-        //- Construct from patch and internal field and patch field
+        //- Construct from patch, internal field and patch field
+        faePatchField
+        (
+            const faPatch&,
+            const DimensionedField<Type, edgeMesh>&,
+            const Field<Type>& pfld
+        );
+
+        //- Construct from patch, internal field and patch field
         faePatchField
         (
             const faPatch&,
             const DimensionedField<Type, edgeMesh>&,
-            const Field<Type>&
+            Field<Type>&& pfld
         );
 
         //- Construct from patch, internal field and dictionary
@@ -339,37 +366,36 @@ public:
         static const word& calculatedType();
 
 
-        // Attributes
+    // Attributes
 
-            //- True if this patch field fixes a value.
-            //  Needed to check if a level has to be specified while solving
-            //  Poissons equations.
-            virtual bool fixesValue() const
-            {
-                return false;
-            }
+        //- True if this patch field fixes a value.
+        //  Needed to check if a level has to be specified while solving
+        //  Poissons equations.
+        virtual bool fixesValue() const
+        {
+            return false;
+        }
 
-            //- True if this patch field is coupled
-            virtual bool coupled() const
-            {
-                return false;
-            }
+        //- True if this patch field is coupled
+        virtual bool coupled() const
+        {
+            return false;
+        }
 
 
-        // Access
+    // Access
 
-            //- Return const-reference to the dimensioned internal field
-            const DimensionedField<Type, edgeMesh>& internalField()
-            const noexcept
-            {
-                return internalField_;
-            }
+        //- Return const-reference to the dimensioned internal field
+        const DimensionedField<Type, edgeMesh>& internalField() const noexcept
+        {
+            return internalField_;
+        }
 
-            //- Return const-reference to the internal field values
-            const Field<Type>& primitiveField() const noexcept
-            {
-                return internalField_;
-            }
+        //- Return const-reference to the internal field values
+        const Field<Type>& primitiveField() const noexcept
+        {
+            return internalField_;
+        }
 
 
         // Mapping
diff --git a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFFreestreamVelocityFvPatchVectorField/SRFFreestreamVelocityFvPatchVectorField.C b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFFreestreamVelocityFvPatchVectorField/SRFFreestreamVelocityFvPatchVectorField.C
index 2293143980b872f973f2303bed878555aa7e80e9..bdd1de477973257b99d0061d304473baa251da30 100644
--- a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFFreestreamVelocityFvPatchVectorField/SRFFreestreamVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFFreestreamVelocityFvPatchVectorField/SRFFreestreamVelocityFvPatchVectorField.C
@@ -160,11 +160,11 @@ void Foam::SRFFreestreamVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::SRFFreestreamVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("relative", relative_);
     os.writeEntry("UInf", UInf_);
     os.writeEntry("phi", this->phiName_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.C b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.C
index d9fd52e7d97e841c551338bdba38a55b7888d5ae..a39dd2e62260244b8ea13b0950626eacf9d44912 100644
--- a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.C
@@ -154,10 +154,10 @@ void Foam::SRFVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::SRFVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("relative", relative_);
     inletValue_.writeEntry("inletValue", os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFWallVelocityFvPatchVectorField/SRFWallVelocityFvPatchVectorField.C b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFWallVelocityFvPatchVectorField/SRFWallVelocityFvPatchVectorField.C
index 649c6d15d15b975438e7d04fe423407a80db7f0f..4ac7e6d14ef52da10c474b5536fb649856b35132 100644
--- a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFWallVelocityFvPatchVectorField/SRFWallVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFWallVelocityFvPatchVectorField/SRFWallVelocityFvPatchVectorField.C
@@ -131,8 +131,8 @@ void Foam::SRFWallVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::SRFWallVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::write(os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchField.C b/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchField.C
index 6551b09b7aac65c595d1a5c07284536596f99c5e..1fdce54c392660597bd6a60d3c604051d3668881 100644
--- a/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchField.C
+++ b/src/finiteVolume/expressions/fields/pointPatchFields/exprValuePointPatchField.C
@@ -240,7 +240,7 @@ void Foam::exprValuePointPatchField<Type>::write(Ostream& os) const
     this->parent_bctype::write(os);
     expressions::patchExprFieldBase::write(os);
 
-    this->writeEntry("value", os);
+    this->writeValueEntry(os);
 
     driver_.writeCommon(os, this->debug_ || debug);
 }
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C
index 520c50d258f219eb197724eb05edcc24e75f5cd0..f9ecc13974f85eae2d4fd9ef49324616d96abbaf 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C
@@ -220,7 +220,7 @@ template<class Type>
 void Foam::calculatedFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.H
index 8bda1044d52818a5422705c94684d2f926aed294..075edc934509629b5a2c64358a87affe082f5ece 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.H
@@ -93,7 +93,7 @@ public:
             const bool valueRequired=true
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         calculatedFvPatchField
         (
             const calculatedFvPatchField<Type>&,
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/coupled/coupledFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/basic/coupled/coupledFvPatchField.C
index 9af6d0d98881cca34b87307bcaa2cf23c2990661..c68079214a928824de1343f2a2fddd7483fb11d2 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/coupled/coupledFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/basic/coupled/coupledFvPatchField.C
@@ -213,7 +213,7 @@ template<class Type>
 void Foam::coupledFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/directionMixed/directionMixedFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/basic/directionMixed/directionMixedFvPatchField.C
index 51fc8fd9e8ff0d3c2833e4ed877e707dbb9ece42..1f23f5acc60433dde514c2b209a02a19071eba98 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/directionMixed/directionMixedFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/basic/directionMixed/directionMixedFvPatchField.C
@@ -208,7 +208,7 @@ void Foam::directionMixedFvPatchField<Type>::write(Ostream& os) const
     refValue_.writeEntry("refValue", os);
     refGrad_.writeEntry("refGradient", os);
     valueFraction_.writeEntry("valueFraction", os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/extrapolatedCalculated/extrapolatedCalculatedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/extrapolatedCalculated/extrapolatedCalculatedFvPatchField.H
index 346fc3def6845ac1abb59ca5d01c240d495f243f..3429c1bbf44089df4c08eb5e4f20907a70a1bbdb 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/extrapolatedCalculated/extrapolatedCalculatedFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/basic/extrapolatedCalculated/extrapolatedCalculatedFvPatchField.H
@@ -92,7 +92,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         extrapolatedCalculatedFvPatchField
         (
             const extrapolatedCalculatedFvPatchField<Type>&,
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.C
index e2ca03ba1f8dc0e1cdfaa107986ba4a46cec8165..f022f059db60b27ec8664b81ccfdaa027d3e0645 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.C
@@ -156,7 +156,7 @@ template<class Type>
 void Foam::fixedValueFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.H
index e192bfba7470a702edb1b808f772fd64e2b1b2f5..13f70921531bdcb68e5b9892a9bc1e9eb353b1ca 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.H
@@ -105,8 +105,8 @@ public:
             const bool valueRequired=true
         );
 
-        //- Construct by mapping the given fixedValueFvPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given fixedValue patch field
+        //- onto a new patch
         fixedValueFvPatchField
         (
             const fixedValueFvPatchField<Type>&,
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.C
index a1ec7e3b996a1e0b3e7167263b22f2f6551953d6..3aa783d5b646b47c03519a46964e4a551f23dabd 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
+    Copyright (C) 2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -27,7 +28,58 @@ License
 
 #include "mixedFvPatchField.H"
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class Type>
+bool Foam::mixedFvPatchField<Type>::readMixedEntries
+(
+    const dictionary& dict,
+    IOobjectOption::readOption readOpt
+)
+{
+    const auto& p = fvPatchFieldBase::patch();
+
+    if (!p.size()) return true;  // Can be exceptionally lazy
+    if (!IOobjectOption::isAnyRead(readOpt)) return false;
+
+
+    // If there is a 'refValue', also require all others
+    const auto* hasValue = dict.findEntry("refValue", keyType::LITERAL);
+
+    if (!hasValue && IOobjectOption::isReadOptional(readOpt))
+    {
+        return false;
+    }
+
+    const auto* hasGrad = dict.findEntry("refGradient", keyType::LITERAL);
+    const auto* hasFrac = dict.findEntry("valueFraction", keyType::LITERAL);
+
+    // Combined error message on failure
+    if (!hasValue || !hasGrad || !hasFrac)
+    {
+        FatalIOErrorInFunction(dict)
+            << "Required entries:";
+
+        if (!hasValue) FatalIOError << " 'refValue'";
+        if (!hasGrad)  FatalIOError << " 'refGradient'";
+        if (!hasFrac)  FatalIOError << " 'valueFraction'";
+
+        FatalIOError
+            << " : missing for patch " << p.name()
+            << " : in dictionary " << dict.relativeName() << nl
+            << exit(FatalIOError);
+    }
+
+    // Everything verified - can assign
+    refValue_.assign(*hasValue, p.size());
+    refGrad_.assign(*hasGrad, p.size());
+    valueFraction_.assign(*hasFrac, p.size());
+
+    return true;
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class Type>
 Foam::mixedFvPatchField<Type>::mixedFvPatchField
@@ -239,7 +291,7 @@ void Foam::mixedFvPatchField<Type>::write(Ostream& os) const
     refGrad_.writeEntry("refGradient", os);
     valueFraction_.writeEntry("valueFraction", os);
     source_.writeEntry("source", os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.H
index deec0f77d9538834d123b389aefb82d46385c1ee..3181d45b9c51aa1b07ede5f8dc230f2298c764b7 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2017 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -70,8 +70,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef mixedFvPatchField_H
-#define mixedFvPatchField_H
+#ifndef Foam_mixedFvPatchField_H
+#define Foam_mixedFvPatchField_H
 
 #include "fvPatchField.H"
 
@@ -89,7 +89,7 @@ class mixedFvPatchField
 :
     public fvPatchField<Type>
 {
-    // Private data
+    // Private Data
 
         //- Value field
         Field<Type> refValue_;
@@ -104,6 +104,21 @@ class mixedFvPatchField
         Field<Type> source_;
 
 
+protected:
+
+        //- Read the 'refValue', 'refGradient' and 'valueFraction' entries
+        //- into their respective places.
+        //  The reading can be optional (default), mandatory etc.
+        //  If 'refValue' is to be read, refGradient and valueFraction must
+        //  also exist.
+        //  \returns True on success
+        bool readMixedEntries
+        (
+            const dictionary& dict,
+            IOobjectOption::readOption readOpt = IOobjectOption::LAZY_READ
+        );
+
+
 public:
 
     //- Runtime type information
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.C
index f444464af0084b7d00493d8ddea39e26cd419f1a..d886c4d8d37a7907ea00cd6d0645c0595b0e8c02 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.C
@@ -265,7 +265,7 @@ template<class Type>
 void Foam::slicedFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.H
index 8d1d51525193ad62df74a6b913645b5116c370d5..21ffe3bf115ac118765bbcf2359469266c720d30 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.H
@@ -103,8 +103,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given slicedFvPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given sliced patch field onto a new patch
         slicedFvPatchField
         (
             const slicedFvPatchField<Type>&,
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.H
index 53766157f87298306f7c7e8775e9ba08e68f7ba4..4bb2e5016f3ac13c28adf896e852a2ef3065c926 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.H
@@ -80,8 +80,8 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given transformFvPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given transform patch field
+        //- onto a new patch
         transformFvPatchField
         (
             const transformFvPatchField<Type>&,
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/zeroGradient/zeroGradientFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/zeroGradient/zeroGradientFvPatchField.H
index 19902ae54b677f05af7b0d3b8b07eba76747de49..05cc20e4b528fe39768ac9f40b8bb2aa0849d224 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/zeroGradient/zeroGradientFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/basic/zeroGradient/zeroGradientFvPatchField.H
@@ -90,8 +90,8 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given zeroGradientFvPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given zeroGradient patch field
+        //- onto a new patch
         zeroGradientFvPatchField
         (
             const zeroGradientFvPatchField<Type>&,
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicACMI/cyclicACMIFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicACMI/cyclicACMIFvPatchField.C
index b79699904472b4ac023b197e9112136e53e577ac..80ffb25e5c64a6c115f82c0dd680271ce4dc27e5 100644
--- a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicACMI/cyclicACMIFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicACMI/cyclicACMIFvPatchField.C
@@ -459,7 +459,7 @@ template<class Type>
 void Foam::cyclicACMIFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C
index 61a7e49820cc0ba0205ca9f119b8777c29b64dc2..462335d41801e2216a2020d44b10a5e85449acef 100644
--- a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C
@@ -439,7 +439,7 @@ template<class Type>
 void Foam::cyclicAMIFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/acousticWaveTransmissive/acousticWaveTransmissiveFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/acousticWaveTransmissive/acousticWaveTransmissiveFvPatchField.C
index 9ebb26fbd5f03c1b91eacf23fed88bc8e6a7b68d..cdad8bd4bd35c54a0473d56604580a025daef337 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/acousticWaveTransmissive/acousticWaveTransmissiveFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/acousticWaveTransmissive/acousticWaveTransmissiveFvPatchField.C
@@ -112,7 +112,7 @@ void Foam::acousticWaveTransmissiveFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
     os.writeEntry("advectiveSpeed", advectiveU_);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.C
index ade392b016d54f6314afd0efd08f360830857a4a..c894f8d5af267d86e52770a856b57f6f5d198008 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.C
@@ -295,14 +295,14 @@ void Foam::activeBaffleVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::activeBaffleVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("p", "p", pName_);
     os.writeEntry("cyclicPatch", cyclicPatchName_);
     os.writeEntry("orientation", orientation_);
     os.writeEntry("openingTime", openingTime_);
     os.writeEntry("maxOpenFractionDelta", maxOpenFractionDelta_);
     os.writeEntry("openFraction", openFraction_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C
index e8148719a0c945b775c40fe8ade7cebc0d4b26c0..275cd381513e8e6721b9d4a5f8299bb56d1ce372 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C
@@ -380,7 +380,7 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs()
 void Foam::activePressureForceBaffleVelocityFvPatchVectorField::
 write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("p", "p", pName_);
     os.writeEntry("cyclicPatch", cyclicPatchName_);
     os.writeEntry("openingTime", openingTime_);
@@ -389,7 +389,7 @@ write(Ostream& os) const
     os.writeEntry("minThresholdValue", minThresholdValue_);
     os.writeEntry("forceBased", fBased_);
     os.writeEntry("opening", opening_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C
index c3ff10de38336c3d1497de996a9aec775ecc209b..7090d4f49d59431bd19c7c27316e6015cdd5e096 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C
@@ -339,7 +339,7 @@ void Foam::advectiveFvPatchField<Type>::write(Ostream& os) const
         os.writeEntry("lInf", lInf_);
     }
 
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.C
index 0ad7d0963966f20902a7e95dde0c7a2b848e5550..e247e42d98088356fde94f40e790422ae0fa8a6c 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.C
@@ -236,7 +236,7 @@ Foam::codedFixedValueFvPatchField<Type>::redirectPatchField() const
         // Make sure to construct the patchfield with up-to-date value
 
         OStringStream os;
-        static_cast<const Field<Type>&>(*this).writeEntry("value", os);
+        this->writeValueEntry(os);
         IStringStream is(os.str());
         dictionary constructDict(is);
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/cylindricalInletVelocity/cylindricalInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/cylindricalInletVelocity/cylindricalInletVelocityFvPatchVectorField.C
index b946c66c7d1313b2956f011b6ab815eadeb41ef0..cc824309b6d98a19733cd30d6c4687e50d4cfd53 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/cylindricalInletVelocity/cylindricalInletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/cylindricalInletVelocity/cylindricalInletVelocityFvPatchVectorField.C
@@ -158,7 +158,7 @@ void Foam::cylindricalInletVelocityFvPatchVectorField::write(Ostream& os) const
     axialVelocity_->writeData(os);
     radialVelocity_->writeData(os);
     rpm_->writeData(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/electrostaticDeposition/electrostaticDepositionFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/electrostaticDeposition/electrostaticDepositionFvPatchScalarField.C
index c9718a9d7aee2cfbdbebae8c081eafc50f8bfff3..3a7ccee8383d1675dd4c73d908dfaf37b52ea931 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/electrostaticDeposition/electrostaticDepositionFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/electrostaticDeposition/electrostaticDepositionFvPatchScalarField.C
@@ -543,7 +543,7 @@ void Foam::electrostaticDepositionFvPatchScalarField::updateCoeffs()
 
 void Foam::electrostaticDepositionFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
 
     h_.writeEntry("h", os);
 
@@ -574,7 +574,7 @@ void Foam::electrostaticDepositionFvPatchScalarField::write(Ostream& os) const
     qcum_.writeEntry("qCumulative", os);
     Vfilm_.writeEntry("Vfilm", os);
 
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C
index de5afa2c8068be8b0b7f04597cf377842ddf7320..c50dea362f5d12006ce7586e068a1c93a1a09745 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C
@@ -174,8 +174,8 @@ void Foam::fixedFluxPressureFvPatchScalarField::updateCoeffs()
 
 void Foam::fixedFluxPressureFvPatchScalarField::write(Ostream& os) const
 {
-    fixedGradientFvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fixedGradientFvPatchField<scalar>::write(os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedInternalValueFvPatchField/fixedInternalValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedInternalValueFvPatchField/fixedInternalValueFvPatchField.H
index 8ab8a2be5dc8f2d2d4c71ad742d0a63132c3405c..d36397c07362c60578710921b23b460f9e4bea3a 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedInternalValueFvPatchField/fixedInternalValueFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedInternalValueFvPatchField/fixedInternalValueFvPatchField.H
@@ -100,8 +100,8 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given fixedInternalValueFvPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given fixedInternalValue patch field
+        //- onto a new patch
         fixedInternalValueFvPatchField
         (
             const fixedInternalValueFvPatchField<Type>&,
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.C
index 3c4c04659858f402abbd363cf2f859ee4898dd85..0f38fdc737b8866ea28fb18e33dee9dc190b7ed8 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.C
@@ -277,7 +277,7 @@ void Foam::fixedJumpFvPatchField<Type>::write(Ostream& os) const
         os.writeEntry("minJump", minJump_);
     }
 
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedJumpAMI/fixedJumpAMIFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedJumpAMI/fixedJumpAMIFvPatchField.C
index f818753a31141d71ae4be56f5dc48d2188dde67d..b34710df2f6aa6ecd16e54146cf39a528088b623 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedJumpAMI/fixedJumpAMIFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedJumpAMI/fixedJumpAMIFvPatchField.C
@@ -178,7 +178,7 @@ void Foam::fixedJumpAMIFvPatchField<Type>::write(Ostream& os) const
         jump_.writeEntry("jump", os);
     }
 
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedMean/fixedMeanFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedMean/fixedMeanFvPatchField.C
index 283d7cfb9ef2eaa054ea322d409e5edacdee2122..d6d8a6eb2486398ca10c1c2c5b9cb33da041eeb9 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedMean/fixedMeanFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedMean/fixedMeanFvPatchField.C
@@ -132,7 +132,7 @@ void Foam::fixedMeanFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
     meanValue_->writeData(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchField.C
index 8157fe7bd8909ef5e1fd22b788b8825844986cfd..98b4a3af5bf5a7edbe3b85b82d397d930a3b30ef 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchField.C
@@ -144,7 +144,7 @@ void Foam::fixedMeanOutletInletFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
     meanValue_->writeData(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.C
index 4e559b0ca40437801480095b5f8706d9d6df9fcc..bb58e321233d32fd7562b1dc285df3f1d276c153 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.C
@@ -183,7 +183,7 @@ void Foam::fixedNormalInletOutletVelocityFvPatchVectorField::write
 )
 const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntry("fixTangentialInflow", fixTangentialInflow_);
 
@@ -191,7 +191,7 @@ const
     normalVelocity_->write(os);
     os.endBlock();
 
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.C
index f4abae24a6c4aae9c630a936d24e10477e1278c8..557ffce4949d020d798a0c3cb4c2bbdeecf5a040 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.C
@@ -186,7 +186,7 @@ void Foam::fixedNormalSlipFvPatchField<Type>::write(Ostream& os) const
     if (writeValue_)
     {
         os.writeEntry("writeValue", "true");
-        this->writeEntry("value", os);
+        fvPatchField<Type>::writeValueEntry(os);
     }
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.C
index 26166054f1d24e2a175288de6f2de9d880fe196b..bf7f79e066bad03ad9efc7737bfcd4fce4e2ffca 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.C
@@ -129,7 +129,7 @@ void Foam::fixedPressureCompressibleDensityFvPatchScalarField::write
 {
     fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("p", "p", pName_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedProfile/fixedProfileFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedProfile/fixedProfileFvPatchField.C
index 8cdf7aa347ba69a9aa0be03458e2e3a41ed73322..d9237a2403f7feea01943ba3d22dbe0e11786aab 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedProfile/fixedProfileFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedProfile/fixedProfileFvPatchField.C
@@ -163,7 +163,7 @@ void Foam::fixedProfileFvPatchField<Type>::write(Ostream& os) const
     profile_->writeData(os);
     os.writeEntry("direction", dir_);
     os.writeEntry("origin", origin_);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C
index d2b3751b9649ac36a1579bae043b618b32e33cdf..60e974ab55318c565b62d9563c0085f254e33438 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C
@@ -258,7 +258,7 @@ void Foam::flowRateInletVelocityFvPatchVectorField::write(Ostream& os) const
     {
         os.writeEntry("extrapolateProfile", extrapolateProfile_);
     }
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/flowRateOutletVelocity/flowRateOutletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/flowRateOutletVelocity/flowRateOutletVelocityFvPatchVectorField.C
index a1edea1a7799212569766ada5fb7246d0b7c8081..a13f174803ce831951fbd43f22ee5334ba669e46 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/flowRateOutletVelocity/flowRateOutletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/flowRateOutletVelocity/flowRateOutletVelocityFvPatchVectorField.C
@@ -238,7 +238,7 @@ void Foam::flowRateOutletVelocityFvPatchVectorField::write(Ostream& os) const
         os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
         os.writeEntryIfDifferent<scalar>("rhoOutlet", -VGREAT, rhoOutlet_);
     }
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C
index b3909cc88fe8a228848941423d92addacdcb067a..fd02bf04bc08e571a317cb00516a02458d82ad39 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C
@@ -135,10 +135,10 @@ void Foam::fluxCorrectedVelocityFvPatchVectorField::evaluate
 
 void Foam::fluxCorrectedVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/freestream/freestreamFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/freestream/freestreamFvPatchField.C
index d90bd730a6f7cd1bc5894bc6f7b90ece70edae9b..437e18eadf13a34152fe89484f8aa321c5a28c1d 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/freestream/freestreamFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/freestream/freestreamFvPatchField.C
@@ -208,7 +208,7 @@ void Foam::freestreamFvPatchField<Type>::write(Ostream& os) const
     {
         freestreamValue().writeEntry("freestreamValue", os);
     }
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.C
index 84042e179f026f6170004ca489f5b986107d7c92..148b18ad74d35a75fdde025910a9c6929437d0e2 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.C
@@ -131,10 +131,10 @@ void Foam::freestreamPressureFvPatchScalarField::updateCoeffs()
 
 void Foam::freestreamPressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("U", "U", UName_);
     freestreamValue().writeEntry("freestreamValue", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/freestreamVelocity/freestreamVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/freestreamVelocity/freestreamVelocityFvPatchVectorField.C
index 4302bd4781f28aad725214f2bb6ec231ad9bea98..7953ad230d17935452fd20d6389aa6950613d610 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/freestreamVelocity/freestreamVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/freestreamVelocity/freestreamVelocityFvPatchVectorField.C
@@ -118,9 +118,9 @@ void Foam::freestreamVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::freestreamVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     freestreamValue().writeEntry("freestreamValue", os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.C
index 9d7ba7386554da7b41aff634b034ad66b36f6317..cce6c7b6af48af8ca7b248fb757b7e233a59a69a 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.C
@@ -140,7 +140,7 @@ void Foam::inletOutletFvPatchField<Type>::write(Ostream& os) const
     fvPatchField<Type>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     this->refValue().writeEntry("inletValue", os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/inletOutletTotalTemperature/inletOutletTotalTemperatureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/inletOutletTotalTemperature/inletOutletTotalTemperatureFvPatchScalarField.C
index 173f3829ce7fa331c341ad5e10d7a2bcf14e2d1f..84198f6e2e7c929790d60539fbb89cf0ee342664 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/inletOutletTotalTemperature/inletOutletTotalTemperatureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/inletOutletTotalTemperature/inletOutletTotalTemperatureFvPatchScalarField.C
@@ -191,13 +191,13 @@ void Foam::inletOutletTotalTemperatureFvPatchScalarField::updateCoeffs()
 void Foam::inletOutletTotalTemperatureFvPatchScalarField::write(Ostream& os)
 const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("U", "U", UName_);
     os.writeEntryIfDifferent<word>("phi", "phi", this->phiName_);
     os.writeEntryIfDifferent<word>("psi", "psi", psiName_);
     os.writeEntry("gamma", gamma_);
     T0_.writeEntry("T0", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/interfaceCompression/interfaceCompressionFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/interfaceCompression/interfaceCompressionFvPatchScalarField.C
index dee4c053b8e419cb8dcaf5e2610728394e1fb8dd..4bffab315dbfb9afc2cd8782ae2814ba4988f28a 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/interfaceCompression/interfaceCompressionFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/interfaceCompression/interfaceCompressionFvPatchScalarField.C
@@ -110,8 +110,8 @@ void Foam::interfaceCompressionFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::write(os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/interstitialInletVelocity/interstitialInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/interstitialInletVelocity/interstitialInletVelocityFvPatchVectorField.C
index 3a6d2f7f0fe8530faf4f81377943786f6fb58020..ddf69cd2ddb4fb8ec188c790d83e79fe45f850b2 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/interstitialInletVelocity/interstitialInletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/interstitialInletVelocity/interstitialInletVelocityFvPatchVectorField.C
@@ -147,7 +147,7 @@ void Foam::interstitialInletVelocityFvPatchVectorField::write(Ostream& os) const
     fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("alpha", "alpha", alphaName_);
     inletVelocity_.writeEntry("inletVelocity", os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/mappedField/mappedFieldFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/mappedField/mappedFieldFvPatchField.C
index 21ad7cdc0adbfe8dab011bb1c672fdbf07216565..cd3da655042cbdc7f1ec913787e566774afb6301 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/mappedField/mappedFieldFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/mappedField/mappedFieldFvPatchField.C
@@ -193,7 +193,7 @@ void Foam::mappedFieldFvPatchField<Type>::write(Ostream& os) const
     fvPatchField<Type>::write(os);
     mappedPatchBase::write(os);
     mappedPatchFieldBase<Type>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedValue/mappedFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedValue/mappedFixedValueFvPatchField.C
index b3bbd452cea765b7eae3a12be8f51482e6b50581..ec190df0f1811cc44c8f68e6510de895d487bafc 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedValue/mappedFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedValue/mappedFixedValueFvPatchField.C
@@ -140,7 +140,7 @@ void Foam::mappedFixedValueFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
     mappedPatchFieldBase<Type>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/mappedFlowRate/mappedFlowRateFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/mappedFlowRate/mappedFlowRateFvPatchVectorField.C
index f0b9e4144b99328ecfd2f12a3c337c4a5d0d2549..da5c416101170ec161d1c4709850bd63ab25a54d 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/mappedFlowRate/mappedFlowRateFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/mappedFlowRate/mappedFlowRateFvPatchVectorField.C
@@ -193,7 +193,7 @@ void Foam::mappedFlowRateFvPatchVectorField::write
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
     os.writeEntry("nbrPhi", nbrPhiName_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/mappedVelocityFluxFixedValue/mappedVelocityFluxFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/mappedVelocityFluxFixedValue/mappedVelocityFluxFixedValueFvPatchField.C
index f0643e915b53dcb09cf47a3ef6a2913d1b4fcb71..973d696f244dfa08d2870e136d93dee2fb26387f 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/mappedVelocityFluxFixedValue/mappedVelocityFluxFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/mappedVelocityFluxFixedValue/mappedVelocityFluxFixedValueFvPatchField.C
@@ -236,9 +236,9 @@ void Foam::mappedVelocityFluxFixedValueFvPatchField::write
     Ostream& os
 ) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
-    this->writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/matchedFlowRateOutletVelocity/matchedFlowRateOutletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/matchedFlowRateOutletVelocity/matchedFlowRateOutletVelocityFvPatchVectorField.C
index bd3c912d46377455ac68781773194d7845cd1854..e1806f21b7ec47d7f90d6ac412514a20cf83e8e5 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/matchedFlowRateOutletVelocity/matchedFlowRateOutletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/matchedFlowRateOutletVelocity/matchedFlowRateOutletVelocityFvPatchVectorField.C
@@ -253,7 +253,7 @@ void Foam::matchedFlowRateOutletVelocityFvPatchVectorField::write
         os.writeEntry("volumetric", volumetric_);
         os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
     }
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.C
index e6a90deaab1fe9fc43c2a86ece94cbc708bf73b3..f4fabe7729c4a5dd7b69c7c766e4c31a452cf97b 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.C
@@ -149,8 +149,8 @@ void Foam::movingWallVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::movingWallVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::write(os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/noSlip/noSlipFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/noSlip/noSlipFvPatchVectorField.C
index 5c236bdfef153c5c62603a19d23346efc6841331..039c126276ed9e79c8a7f28db9cc2338bce80d4f 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/noSlip/noSlipFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/noSlip/noSlipFvPatchVectorField.C
@@ -89,7 +89,7 @@ Foam::noSlipFvPatchVectorField::noSlipFvPatchVectorField
 
 void Foam::noSlipFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.C
index c1fef7c612e9de655bcae5ec1f396da5344cbcf1..8c621154a303a3e0c7b2e8da2b2b6c4ecb078b4a 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.C
@@ -140,7 +140,7 @@ void Foam::outletInletFvPatchField<Type>::write(Ostream& os) const
     fvPatchField<Type>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     this->refValue().writeEntry("outletValue", os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.C
index 7838e12c3f2b7224216a27af97bafc45214f9ead..32ea26c9fa25b80dce537abaa8d8ef883e5b120d 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.C
@@ -462,7 +462,7 @@ void Foam::outletMappedUniformInletFvPatchField<Type>::write(Ostream& os) const
     os.endBlock();
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
 
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/outletPhaseMeanVelocity/outletPhaseMeanVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/outletPhaseMeanVelocity/outletPhaseMeanVelocityFvPatchVectorField.C
index 64dc0e549c1c2ef6e57e868285cce6ffe2365c19..7f92fff2889d64b38e547033eb9d48abeaf062d4 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/outletPhaseMeanVelocity/outletPhaseMeanVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/outletPhaseMeanVelocity/outletPhaseMeanVelocityFvPatchVectorField.C
@@ -174,7 +174,7 @@ void Foam::outletPhaseMeanVelocityFvPatchVectorField::write
 
     os.writeEntry("Umean", Umean_);
     os.writeEntry("alpha", alphaName_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/partialSlip/partialSlipFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/partialSlip/partialSlipFvPatchField.C
index 0c7141fc13ad94f84dce5813061b0ad94596fef2..7f26c14fa95a66da98cac54836a63fe6adf98c2f 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/partialSlip/partialSlipFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/partialSlip/partialSlipFvPatchField.C
@@ -207,7 +207,7 @@ void Foam::partialSlipFvPatchField<Type>::write(Ostream& os) const
     if (writeValue_)
     {
         os.writeEntry("writeValue", "true");
-        this->writeEntry("value", os);
+        fvPatchField<Type>::writeValueEntry(os);
     }
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/phaseHydrostaticPressure/phaseHydrostaticPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/phaseHydrostaticPressure/phaseHydrostaticPressureFvPatchScalarField.C
index a5e0af6171e55caac9260a671f888a8139e7fefd..1b6a532d2288cf396079ac8b73b21e26c9bdab02 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/phaseHydrostaticPressure/phaseHydrostaticPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/phaseHydrostaticPressure/phaseHydrostaticPressureFvPatchScalarField.C
@@ -162,12 +162,12 @@ void Foam::phaseHydrostaticPressureFvPatchScalarField::updateCoeffs()
 
 void Foam::phaseHydrostaticPressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("phaseFraction", "alpha", phaseFraction_);
     os.writeEntry("rho", rho_);
     os.writeEntry("pRefValue", pRefValue_);
     os.writeEntry("pRefPoint", pRefPoint_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.C
index 321a85d299bebdf76d1ef4dc1538e561ac1e8c27..67de38f255788c0748c96844b97e85b48ebfc48f 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.C
@@ -287,7 +287,7 @@ void Foam::plenumPressureFvPatchScalarField::updateCoeffs()
 
 void Foam::plenumPressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("gamma", gamma_);
     os.writeEntry("R", R_);
     os.writeEntry("supplyMassFlowRate", supplyMassFlowRate_);
@@ -304,7 +304,7 @@ void Foam::plenumPressureFvPatchScalarField::write(Ostream& os) const
     os.writeEntryIfDifferent<scalar>("timeScale", 0.0, timeScale_);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("U", "U", UName_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletOutletVelocity/pressureDirectedInletOutletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletOutletVelocity/pressureDirectedInletOutletVelocityFvPatchVectorField.C
index 80429a583089f2207d7d510c67f7a1e996cd8055..4f1f1b5a4e8685ca8fc077ef78f9f30a4cc964b9 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletOutletVelocity/pressureDirectedInletOutletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletOutletVelocity/pressureDirectedInletOutletVelocityFvPatchVectorField.C
@@ -187,11 +187,11 @@ void Foam::pressureDirectedInletOutletVelocityFvPatchVectorField::write
     Ostream& os
 ) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
     inletDir_.writeEntry("inletDirection", os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletVelocity/pressureDirectedInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletVelocity/pressureDirectedInletVelocityFvPatchVectorField.C
index c0ef5989848c6f114e08c6cb08ef785bd2dacc66..ffe06dfa7e643e7ca177ddc4091b2bd18eed79f0 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletVelocity/pressureDirectedInletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletVelocity/pressureDirectedInletVelocityFvPatchVectorField.C
@@ -175,11 +175,11 @@ void Foam::pressureDirectedInletVelocityFvPatchVectorField::write
     Ostream& os
 ) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
     inletDir_.writeEntry("inletDirection", os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletParSlipVelocity/pressureInletOutletParSlipVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletParSlipVelocity/pressureInletOutletParSlipVelocityFvPatchVectorField.C
index 34f089687f5bc011c6c6dde2c18e86bc8615325c..6676732f4854111531aad047e83b21f3b8e67e2d 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletParSlipVelocity/pressureInletOutletParSlipVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletParSlipVelocity/pressureInletOutletParSlipVelocityFvPatchVectorField.C
@@ -161,10 +161,10 @@ void Foam::pressureInletOutletParSlipVelocityFvPatchVectorField::write
     Ostream& os
 ) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletVelocity/pressureInletOutletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletVelocity/pressureInletOutletVelocityFvPatchVectorField.C
index a30aa581c51bfa3512da8862387d608468a7a6a9..94d7392f3117ab76ef9162fd0042040a60992935 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletVelocity/pressureInletOutletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletVelocity/pressureInletOutletVelocityFvPatchVectorField.C
@@ -190,13 +190,13 @@ void Foam::pressureInletOutletVelocityFvPatchVectorField::write
 )
 const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     if (tangentialVelocity_.size())
     {
         tangentialVelocity_.writeEntry("tangentialVelocity", os);
     }
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletVelocity/pressureInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletVelocity/pressureInletVelocityFvPatchVectorField.C
index 629aad6f384d1b5e5f60dd0921699609a584f78f..720c1b57d57e3c14ebc55f3d9c21a3f1463fbfb1 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletVelocity/pressureInletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletVelocity/pressureInletVelocityFvPatchVectorField.C
@@ -140,10 +140,10 @@ void Foam::pressureInletVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::pressureInletVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureNormalInletOutletVelocity/pressureNormalInletOutletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/pressureNormalInletOutletVelocity/pressureNormalInletOutletVelocityFvPatchVectorField.C
index 7a0a8bfd74048b5d00f0e35b164cbf7ed2061ab3..4b316b0e6757700db0f2ac1034d7a9f57ea12fde 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/pressureNormalInletOutletVelocity/pressureNormalInletOutletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureNormalInletOutletVelocity/pressureNormalInletOutletVelocityFvPatchVectorField.C
@@ -157,10 +157,10 @@ void Foam::pressureNormalInletOutletVelocityFvPatchVectorField::write
     Ostream& os
 ) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("phi", phiName_);
     os.writeEntry("rho", rhoName_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressurePIDControlInletVelocity/pressurePIDControlInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/pressurePIDControlInletVelocity/pressurePIDControlInletVelocityFvPatchVectorField.C
index a93495d6fb1814e424c4dc9119d306c748bc1366..46e5bce753521b81cb8fd1e0b59a07371574b749 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/pressurePIDControlInletVelocity/pressurePIDControlInletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/pressurePIDControlInletVelocity/pressurePIDControlInletVelocityFvPatchVectorField.C
@@ -367,7 +367,7 @@ void Foam::pressurePIDControlInletVelocityFvPatchVectorField::write
     os.writeEntry("error", error_);
     os.writeEntry("errorIntegral", errorIntegral_);
 
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressurePermeableAlphaInletOutletVelocity/pressurePermeableAlphaInletOutletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/pressurePermeableAlphaInletOutletVelocity/pressurePermeableAlphaInletOutletVelocityFvPatchVectorField.C
index ddb02046260252559829a3569cbfcb335c90dfac..5bfce075573772a96ee084b782c7f0be97ab4463 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/pressurePermeableAlphaInletOutletVelocity/pressurePermeableAlphaInletOutletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/pressurePermeableAlphaInletOutletVelocity/pressurePermeableAlphaInletOutletVelocityFvPatchVectorField.C
@@ -182,7 +182,7 @@ void Foam::pressurePermeableAlphaInletOutletVelocityFvPatchVectorField::write
     Ostream& os
 ) const
 {
-    mixedFvPatchVectorField::write(os);
+    mixedFvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
     os.writeEntryIfDifferent<word>("alpha", "none", alphaName_);
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/prghPressure/prghPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/prghPressure/prghPressureFvPatchScalarField.C
index 16ef1a9e750e0c1836a703797367e776f5af5871..9baf21bbbab1b49483eba6403296074e41f52200 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/prghPressure/prghPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/prghPressure/prghPressureFvPatchScalarField.C
@@ -171,10 +171,10 @@ void Foam::prghPressureFvPatchScalarField::updateCoeffs()
 
 void Foam::prghPressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
     p_.writeEntry("p", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/prghTotalHydrostaticPressure/prghTotalHydrostaticPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/prghTotalHydrostaticPressure/prghTotalHydrostaticPressureFvPatchScalarField.C
index 424839342cf3c63c773f14cc1021a12f5c83ef9a..53fa406082821d1488a046a2b4e51eedae35bfe3 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/prghTotalHydrostaticPressure/prghTotalHydrostaticPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/prghTotalHydrostaticPressure/prghTotalHydrostaticPressureFvPatchScalarField.C
@@ -148,12 +148,12 @@ void Foam::prghTotalHydrostaticPressureFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("U", "U", UName_);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
     os.writeEntryIfDifferent<word>("ph_rgh", "ph_rgh", ph_rghName_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/prghTotalPressure/prghTotalPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/prghTotalPressure/prghTotalPressureFvPatchScalarField.C
index 42dfb9c0884f4f3feb36f1f26f76356f803e848a..41fe07eee822e2c053d1ec412553bfb14fb9d7db 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/prghTotalPressure/prghTotalPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/prghTotalPressure/prghTotalPressureFvPatchScalarField.C
@@ -188,12 +188,12 @@ void Foam::prghTotalPressureFvPatchScalarField::updateCoeffs()
 
 void Foam::prghTotalPressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("U", "U", UName_);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
     p0_.writeEntry("p0", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/rotatingPressureInletOutletVelocity/rotatingPressureInletOutletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/rotatingPressureInletOutletVelocity/rotatingPressureInletOutletVelocityFvPatchVectorField.C
index 512d5dbd64f2074b458b351bfe2f80f76266515d..b583ffed984bbbe87d1452835338133ee6599101 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/rotatingPressureInletOutletVelocity/rotatingPressureInletOutletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/rotatingPressureInletOutletVelocity/rotatingPressureInletOutletVelocityFvPatchVectorField.C
@@ -129,10 +129,10 @@ void Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::write
     Ostream& os
 ) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("phi", phiName());
     omega_->writeData(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/rotatingWallVelocity/rotatingWallVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/rotatingWallVelocity/rotatingWallVelocityFvPatchVectorField.C
index 9a8aad29f2b2457dc1358ed35d4e818b759c547e..91dfeebc25f2876c2fef21f695ccc3ab508ef56c 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/rotatingWallVelocity/rotatingWallVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/rotatingWallVelocity/rotatingWallVelocityFvPatchVectorField.C
@@ -147,11 +147,11 @@ void Foam::rotatingWallVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::rotatingWallVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("origin", origin_);
     os.writeEntry("axis", axis_);
     omega_->writeData(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/supersonicFreestream/supersonicFreestreamFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/supersonicFreestream/supersonicFreestreamFvPatchVectorField.C
index 923582b3898da9f5155154c4dbe5dd2af90a3553..7c62b6b29810a37c5255704133668f584e5f70f1 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/supersonicFreestream/supersonicFreestreamFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/supersonicFreestream/supersonicFreestreamFvPatchVectorField.C
@@ -294,7 +294,7 @@ void Foam::supersonicFreestreamFvPatchVectorField::updateCoeffs()
 
 void Foam::supersonicFreestreamFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("T", "T", TName_);
     os.writeEntryIfDifferent<word>("p", "p", pName_);
     os.writeEntryIfDifferent<word>("psi", "thermo:psi", psiName_);
@@ -302,7 +302,7 @@ void Foam::supersonicFreestreamFvPatchVectorField::write(Ostream& os) const
     os.writeEntry("pInf", pInf_);
     os.writeEntry("TInf", TInf_);
     os.writeEntry("gamma", gamma_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/surfaceNormalFixedValue/surfaceNormalFixedValueFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/surfaceNormalFixedValue/surfaceNormalFixedValueFvPatchVectorField.C
index 2d700f99e5b810bc5d862b84709f44acbdee60de..15208df805b510e95e79861e0a1475c2c9ea91b4 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/surfaceNormalFixedValue/surfaceNormalFixedValueFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/surfaceNormalFixedValue/surfaceNormalFixedValueFvPatchVectorField.C
@@ -171,7 +171,7 @@ void Foam::surfaceNormalFixedValueFvPatchVectorField::updateCoeffs()
 
 void Foam::surfaceNormalFixedValueFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     refValue_.writeEntry("refValue", os);
     if (ramp_)
     {
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/swirlFlowRateInletVelocity/swirlFlowRateInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/swirlFlowRateInletVelocity/swirlFlowRateInletVelocityFvPatchVectorField.C
index 843068589b49252f032f54ef62cc0ea59c7eb314..b4e4a38435b3ae513f30069146b0dacf8f3f2522 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/swirlFlowRateInletVelocity/swirlFlowRateInletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/swirlFlowRateInletVelocity/swirlFlowRateInletVelocityFvPatchVectorField.C
@@ -210,7 +210,7 @@ void Foam::swirlFlowRateInletVelocityFvPatchVectorField::write
     os.writeEntry("axis", axis_);
     flowRate_->writeData(os);
     rpm_->writeData(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/swirlInletVelocity/swirlInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/swirlInletVelocity/swirlInletVelocityFvPatchVectorField.C
index 1bd5718888b1bc23254ba80e0dc0eb5ff2bfdde2..d3957f09ae15993fc536c72181ed95c3b7c56e07 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/swirlInletVelocity/swirlInletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/swirlInletVelocity/swirlInletVelocityFvPatchVectorField.C
@@ -159,7 +159,7 @@ void Foam::swirlInletVelocityFvPatchVectorField::write(Ostream& os) const
     axialVelocity_->writeData(os);
     radialVelocity_->writeData(os);
     tangentialVelocity_->writeData(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/syringePressure/syringePressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/syringePressure/syringePressureFvPatchScalarField.C
index ec63722e69c3ce14387e102be6bab8fa581852d6..f484255a08630ce91a594c4bb63968041259b090 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/syringePressure/syringePressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/syringePressure/syringePressureFvPatchScalarField.C
@@ -230,7 +230,7 @@ void Foam::syringePressureFvPatchScalarField::updateCoeffs()
 
 void Foam::syringePressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
 
     os.writeEntry("Ap", Ap_);
     os.writeEntry("Sp", Sp_);
@@ -244,7 +244,7 @@ void Foam::syringePressureFvPatchScalarField::write(Ostream& os) const
     os.writeEntry("ams", ams_);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
 
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C
index e014c44d80ce00b6ce74846dceb6dc2915187ce2..184252a32cc2889f94c8cbe5974f25a410671e85 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C
@@ -202,7 +202,7 @@ void Foam::timeVaryingMappedFixedValueFvPatchField<Type>::write
 {
     fvPatchField<Type>::write(os);
     uniformValue_->writeData(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/totalPressure/totalPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/totalPressure/totalPressureFvPatchScalarField.C
index f6daed7a87773366bc29e74d7d19533226a98ce7..b3bcd9727346ab8f50e13b743906cd6eeca9cc99 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/totalPressure/totalPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/totalPressure/totalPressureFvPatchScalarField.C
@@ -244,14 +244,14 @@ void Foam::totalPressureFvPatchScalarField::updateCoeffs()
 
 void Foam::totalPressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("U", "U", UName_);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntry("rho", rhoName_);
     os.writeEntry("psi", psiName_);
     os.writeEntry("gamma", gamma_);
     p0_.writeEntry("p0", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/totalTemperature/totalTemperatureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/totalTemperature/totalTemperatureFvPatchScalarField.C
index 79c18cc670dcc30db961a5502c3466212a9f9a6d..b6ad51dd0782ba91a214f8e36a746c072c9e1ff4 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/totalTemperature/totalTemperatureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/totalTemperature/totalTemperatureFvPatchScalarField.C
@@ -179,13 +179,13 @@ void Foam::totalTemperatureFvPatchScalarField::updateCoeffs()
 
 void Foam::totalTemperatureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("U", "U", UName_);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("psi", "thermo:psi", psiName_);
     os.writeEntry("gamma", gamma_);
     T0_.writeEntry("T0", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/translatingWallVelocity/translatingWallVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/translatingWallVelocity/translatingWallVelocityFvPatchVectorField.C
index 6e5e2dfc5c59011736805a1300a98153473e3e21..8071d987a032ed66070ab4d7a14f450a7d83794c 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/translatingWallVelocity/translatingWallVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/translatingWallVelocity/translatingWallVelocityFvPatchVectorField.C
@@ -119,9 +119,9 @@ void Foam::translatingWallVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::translatingWallVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     U_->writeData(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C
index 1e7508dc47474f626bb96fdd4d4237ab46f1b1f5..3f82557b9e0e4b366a053c3d47a4fc708d3f9955 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C
@@ -1027,7 +1027,7 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::write(Ostream& os) const
     {
         L_->writeData(os);
     }
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDigitalFilterInlet/turbulentDigitalFilterInletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDigitalFilterInlet/turbulentDigitalFilterInletFvPatchField.C
index 80331851cb929ac0266ce3fe8291fcc69e1be0b5..f947bfb24f5d22cebb1eb3f954887c7cfe23be28 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDigitalFilterInlet/turbulentDigitalFilterInletFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDigitalFilterInlet/turbulentDigitalFilterInletFvPatchField.C
@@ -425,7 +425,7 @@ void Foam::turbulentDigitalFilterInletFvPatchField<Type>::write
     }
     L_.write(os);
 
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentInlet/turbulentInletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentInlet/turbulentInletFvPatchField.C
index 996575e5e2e56abf7426957a05db3f7f3e515278..8b12da4d1b3920073c486188c3640f1e64ae3bca 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentInlet/turbulentInletFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentInlet/turbulentInletFvPatchField.C
@@ -201,7 +201,7 @@ void Foam::turbulentInletFvPatchField<Type>::write(Ostream& os) const
     os.writeEntry("fluctuationScale", fluctuationScale_);
     referenceField_.writeEntry("referenceField", os);
     os.writeEntry("alpha", alpha_);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.C
index d4c054908c91bf6fb5c209b44507604ad5224997..453e96a5f2d6aef31e6f31fdbc5578a97fdb0e30 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.C
@@ -151,11 +151,11 @@ void Foam::turbulentIntensityKineticEnergyInletFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("intensity", intensity_);
     os.writeEntryIfDifferent<word>("U", "U", UName_);
     os.writeEntryIfDifferent<word>("phi", "phi", this->phiName_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.C
index 54141fdc76b0185abdda87b8b505eaa615436f47..f691d7252f562510754643c6ff1d2929ac882a46 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.C
@@ -145,11 +145,11 @@ void Foam::uniformDensityHydrostaticPressureFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("rho", rho_);
     os.writeEntry("pRefValue", pRefValue_);
     os.writeEntry("pRefPoint", pRefPoint_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C
index d9d53982c3ed99bdc8eed435eb1dbf0775735ad1..f57aa6488ca6208cf55e14a47c444943bebe2f35 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C
@@ -139,7 +139,7 @@ void Foam::uniformFixedGradientFvPatchField<Type>::write(Ostream& os) const
 {
     fixedGradientFvPatchField<Type>::write(os);
     uniformGradient_->writeData(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.C
index 4b8f236dc3871dfcd3c5b74a43b7a595e9fefaa4..106737b8e7e39d08252b4f92928d74adf3ebbeee 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.C
@@ -182,7 +182,7 @@ void Foam::uniformFixedValueFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
     uniformValue_->writeData(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformInletOutlet/uniformInletOutletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformInletOutlet/uniformInletOutletFvPatchField.C
index 1a40889aca408c902bc68cff9c9f993f2eb72bb1..d981820e7879956207e84ef2c2061a923a7fe195 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformInletOutlet/uniformInletOutletFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformInletOutlet/uniformInletOutletFvPatchField.C
@@ -169,7 +169,7 @@ void Foam::uniformInletOutletFvPatchField<Type>::write(Ostream& os) const
     fvPatchField<Type>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     this->uniformInletValue_->writeData(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformNormalFixedValue/uniformNormalFixedValueFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformNormalFixedValue/uniformNormalFixedValueFvPatchVectorField.C
index 4bede8adaaec7068ffe6bad373e624ec90ca367b..0125ba01b7ab9a639d3aacee4256e0c10ae1131e 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformNormalFixedValue/uniformNormalFixedValueFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformNormalFixedValue/uniformNormalFixedValueFvPatchVectorField.C
@@ -178,13 +178,13 @@ void Foam::uniformNormalFixedValueFvPatchVectorField::updateCoeffs()
 
 void Foam::uniformNormalFixedValueFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     uniformValue_->writeData(os);
     if (ramp_)
     {
         ramp_->writeData(os);
     }
-    this->writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.C
index f9a64f87229616616336a07d04cb3685de979dda..1ebfba52884ff9a207ff36b2b05d2c2b6ed6e01e 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.C
@@ -228,14 +228,14 @@ void Foam::uniformTotalPressureFvPatchScalarField::updateCoeffs()
 
 void Foam::uniformTotalPressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("U", "U", UName_);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntry("rho", rhoName_);
     os.writeEntry("psi", psiName_);
     os.writeEntry("gamma", gamma_);
     p0_->writeData(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.C
index 1ee1eec1c6cad83f3566215f438b4d7efc186393..308999acab8181e4e9aaa6948a770f3d3b58e68a 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.C
@@ -174,11 +174,11 @@ void Foam::variableHeightFlowRateFvPatchScalarField::updateCoeffs()
 
 void Foam::variableHeightFlowRateFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntry("lowerBound", lowerBound_);
     os.writeEntry("upperBound", upperBound_);
-    this->writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.C
index 94b3a2522e319f415d4e1e5788cfea5b630314dd..7318a394af45811e6bfdd12def249e5cd2f17d63 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.C
@@ -139,7 +139,7 @@ void Foam::variableHeightFlowRateInletVelocityFvPatchVectorField::write
     fvPatchField<vector>::write(os);
     flowRate_->writeData(os);
     os.writeEntry("alpha", alphaName_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.C
index 0be57ad25253efac7ba95385615f55ab43ed971a..0eb44f87fa69ddbc73fe328411f22f8f375b89f0 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.C
@@ -225,11 +225,11 @@ void Foam::waveSurfacePressureFvPatchScalarField::updateCoeffs()
 
 void Foam::waveSurfacePressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("zeta", "zeta", zetaName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/waveTransmissive/waveTransmissiveFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/waveTransmissive/waveTransmissiveFvPatchField.C
index aede4cebf4309b27f28d38010f23fe731e849776..3afc210796f4166fdd256383a03e56332c0c46ba 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/waveTransmissive/waveTransmissiveFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/waveTransmissive/waveTransmissiveFvPatchField.C
@@ -155,7 +155,7 @@ void Foam::waveTransmissiveFvPatchField<Type>::write(Ostream& os) const
         os.writeEntry("lInf", this->lInf_);
     }
 
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C
index f2a7c4133f8dbc30df088e809c634454e4dc029a..d8d50701e813582842f7b2e9ddd286e3ce148ea5 100644
--- a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2015-2022 OpenCFD Ltd.
+    Copyright (C) 2015-2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -32,6 +32,41 @@ License
 #include "fvPatchFieldMapper.H"
 #include "volMesh.H"
 
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class Type>
+bool Foam::fvPatchField<Type>::readValueEntry
+(
+    const dictionary& dict,
+    IOobjectOption::readOption readOpt
+)
+{
+    const auto& p = fvPatchFieldBase::patch();
+
+    if (!p.size()) return true;  // Can be exceptionally lazy
+    if (!IOobjectOption::isAnyRead(readOpt)) return false;
+
+
+    const auto* eptr = dict.findEntry("value", keyType::LITERAL);
+
+    if (eptr)
+    {
+        Field<Type>::assign(*eptr, p.size());
+        return true;
+    }
+
+    if (IOobjectOption::isReadRequired(readOpt))
+    {
+        FatalIOErrorInFunction(dict)
+            << "Required entry 'value' : missing for patch " << p.name()
+            << " in dictionary " << dict.relativeName() << nl
+            << exit(FatalIOError);
+    }
+
+    return false;
+}
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class Type>
@@ -47,6 +82,20 @@ Foam::fvPatchField<Type>::fvPatchField
 {}
 
 
+template<class Type>
+Foam::fvPatchField<Type>::fvPatchField
+(
+    const fvPatch& p,
+    const DimensionedField<Type, volMesh>& iF,
+    const word& patchType
+)
+:
+    fvPatchFieldBase(p, patchType),
+    Field<Type>(p.size()),
+    internalField_(iF)
+{}
+
+
 template<class Type>
 Foam::fvPatchField<Type>::fvPatchField
 (
@@ -66,11 +115,11 @@ Foam::fvPatchField<Type>::fvPatchField
 (
     const fvPatch& p,
     const DimensionedField<Type, volMesh>& iF,
-    const word& patchType
+    const Field<Type>& pfld
 )
 :
-    fvPatchFieldBase(p, patchType),
-    Field<Type>(p.size()),
+    fvPatchFieldBase(p),
+    Field<Type>(pfld),
     internalField_(iF)
 {}
 
@@ -80,11 +129,11 @@ Foam::fvPatchField<Type>::fvPatchField
 (
     const fvPatch& p,
     const DimensionedField<Type, volMesh>& iF,
-    const Field<Type>& f
+    Field<Type>&& pfld
 )
 :
     fvPatchFieldBase(p),
-    Field<Type>(f),
+    Field<Type>(std::move(pfld)),
     internalField_(iF)
 {}
 
diff --git a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.H b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.H
index 84d1e333cb5e37f93c60d24d48beba019850145d..3d23bc0a2c5f3dc27dab21d91d90aacecc407416 100644
--- a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2017 OpenFOAM Foundation
-    Copyright (C) 2019-2022 OpenCFD Ltd.
+    Copyright (C) 2019-2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -59,8 +59,8 @@ namespace Foam
 {
 
 // Forward Declarations
-class objectRegistry;
 class dictionary;
+class objectRegistry;
 class fvPatchFieldMapper;
 class volMesh;
 
@@ -231,6 +231,25 @@ class fvPatchField
         //- Reference to internal field
         const DimensionedField<Type, volMesh>& internalField_;
 
+protected:
+
+    // Protected Member Functions
+
+        //- Read the "value" entry into \c *this.
+        //  The reading can be optional (default), mandatory etc.
+        //  \returns True on success
+        bool readValueEntry
+        (
+            const dictionary& dict,
+            IOobjectOption::readOption readOpt = IOobjectOption::LAZY_READ
+        );
+
+        //- Write \c *this field as a "value" entry
+        void writeValueEntry(Ostream& os) const
+        {
+            Field<Type>::writeEntry("value", os);
+        }
+
 
 public:
 
@@ -295,6 +314,14 @@ public:
             const DimensionedField<Type, volMesh>&
         );
 
+        //- Construct from patch, internal field and patch type
+        fvPatchField
+        (
+            const fvPatch&,
+            const DimensionedField<Type, volMesh>&,
+            const word& patchType
+        );
+
         //- Construct from patch, internal field and value
         fvPatchField
         (
@@ -303,20 +330,20 @@ public:
             const Type& value
         );
 
-        //- Construct from patch and internal field and patch type
+        //- Construct from patch, internal field and patch field
         fvPatchField
         (
             const fvPatch&,
             const DimensionedField<Type, volMesh>&,
-            const word& patchType
+            const Field<Type>& pfld
         );
 
-        //- Construct from patch and internal field and patch field
+        //- Construct from patch, internal field and patch field
         fvPatchField
         (
             const fvPatch&,
             const DimensionedField<Type, volMesh>&,
-            const Field<Type>&
+            Field<Type>&& pfld
         );
 
         //- Construct from patch, internal field and dictionary
@@ -435,44 +462,43 @@ public:
         static const word& zeroGradientType();
 
 
-        // Attributes
+    // Attributes
 
-            //- True if this patch field fixes a value.
-            //  Needed to check if a level has to be specified while solving
-            //  Poissons equations.
-            virtual bool fixesValue() const
-            {
-                return false;
-            }
+        //- True if this patch field fixes a value.
+        //  Needed to check if a level has to be specified while solving
+        //  Poissons equations.
+        virtual bool fixesValue() const
+        {
+            return false;
+        }
 
-            //- True if the value of the patch field
-            //- is altered by assignment (the default)
-            virtual bool assignable() const
-            {
-                return true;
-            }
+        //- True if the value of the patch field
+        //- is altered by assignment (the default)
+        virtual bool assignable() const
+        {
+            return true;
+        }
 
-            //- True if this patch field is coupled
-            virtual bool coupled() const
-            {
-                return false;
-            }
+        //- True if this patch field is coupled
+        virtual bool coupled() const
+        {
+            return false;
+        }
 
 
-        // Access
+    // Access
 
-            //- Return const-reference to the dimensioned internal field
-            const DimensionedField<Type, volMesh>& internalField()
-            const noexcept
-            {
-                return internalField_;
-            }
+        //- Return const-reference to the dimensioned internal field
+        const DimensionedField<Type, volMesh>& internalField() const noexcept
+        {
+            return internalField_;
+        }
 
-            //- Return const-reference to the internal field values
-            const Field<Type>& primitiveField() const noexcept
-            {
-                return internalField_;
-            }
+        //- Return const-reference to the internal field values
+        const Field<Type>& primitiveField() const noexcept
+        {
+            return internalField_;
+        }
 
 
         // Mapping Functions
diff --git a/src/finiteVolume/fields/fvsPatchFields/basic/calculated/calculatedFvsPatchField.H b/src/finiteVolume/fields/fvsPatchFields/basic/calculated/calculatedFvsPatchField.H
index fac044a3017b672db03a6a1d09c3f63808568667..838f03b2ffccc9b6ae607d27d40f959647b98dae 100644
--- a/src/finiteVolume/fields/fvsPatchFields/basic/calculated/calculatedFvsPatchField.H
+++ b/src/finiteVolume/fields/fvsPatchFields/basic/calculated/calculatedFvsPatchField.H
@@ -77,7 +77,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         calculatedFvsPatchField
         (
             const calculatedFvsPatchField<Type>&,
diff --git a/src/finiteVolume/fields/fvsPatchFields/basic/fixedValue/fixedValueFvsPatchField.H b/src/finiteVolume/fields/fvsPatchFields/basic/fixedValue/fixedValueFvsPatchField.H
index 15da665a6257f134adacf48bb527637ee419a123..6d3d19f7e33bf2e1069f6f9ba56cdda28ccb23fc 100644
--- a/src/finiteVolume/fields/fvsPatchFields/basic/fixedValue/fixedValueFvsPatchField.H
+++ b/src/finiteVolume/fields/fvsPatchFields/basic/fixedValue/fixedValueFvsPatchField.H
@@ -77,8 +77,8 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given fixedValueFvsPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given fixedValue patch field
+        //- onto a new patch
         fixedValueFvsPatchField
         (
             const fixedValueFvsPatchField<Type>&,
diff --git a/src/finiteVolume/fields/fvsPatchFields/basic/sliced/slicedFvsPatchField.H b/src/finiteVolume/fields/fvsPatchFields/basic/sliced/slicedFvsPatchField.H
index 1f185b83f41cce113bd8dbb29e5563512b0a9873..d5ce648c96fe806396b6f780578081463cb511ec 100644
--- a/src/finiteVolume/fields/fvsPatchFields/basic/sliced/slicedFvsPatchField.H
+++ b/src/finiteVolume/fields/fvsPatchFields/basic/sliced/slicedFvsPatchField.H
@@ -97,8 +97,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping the given slicedFvsPatchField<Type>
-        //  onto a new patch
+        //- Construct by mapping the given sliced patch field onto a new patch
         slicedFvsPatchField
         (
             const slicedFvsPatchField<Type>&,
diff --git a/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.C b/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.C
index c88be8b5327d568d242ddb82ec69364a9273848c..8997ac61fc1a4847d9a39b66076018a48a133a95 100644
--- a/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.C
+++ b/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2015 OpenFOAM Foundation
-    Copyright (C) 2017-2022 OpenCFD Ltd.
+    Copyright (C) 2017-2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -32,6 +32,41 @@ License
 #include "surfaceMesh.H"
 #include "fvPatchFieldMapper.H"
 
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class Type>
+bool Foam::fvsPatchField<Type>::readValueEntry
+(
+    const dictionary& dict,
+    IOobjectOption::readOption readOpt
+)
+{
+    const auto& p = fvsPatchFieldBase::patch();
+
+    if (!p.size()) return true;  // Can be exceptionally lazy
+    if (!IOobjectOption::isAnyRead(readOpt)) return false;
+
+
+    const auto* eptr = dict.findEntry("value", keyType::LITERAL);
+
+    if (eptr)
+    {
+        Field<Type>::assign(*eptr, p.size());
+        return true;
+    }
+
+    if (IOobjectOption::isReadRequired(readOpt))
+    {
+        FatalIOErrorInFunction(dict)
+            << "Required entry 'value' : missing for patch " << p.name()
+            << " in dictionary " << dict.relativeName() << nl
+            << exit(FatalIOError);
+    }
+
+    return false;
+}
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class Type>
@@ -52,11 +87,11 @@ Foam::fvsPatchField<Type>::fvsPatchField
 (
     const fvPatch& p,
     const DimensionedField<Type, surfaceMesh>& iF,
-    const Field<Type>& f
+    const Field<Type>& pfld
 )
 :
     fvsPatchFieldBase(p),
-    Field<Type>(f),
+    Field<Type>(pfld),
     internalField_(iF)
 {}
 
@@ -64,14 +99,13 @@ Foam::fvsPatchField<Type>::fvsPatchField
 template<class Type>
 Foam::fvsPatchField<Type>::fvsPatchField
 (
-    const fvsPatchField<Type>& ptf,
     const fvPatch& p,
     const DimensionedField<Type, surfaceMesh>& iF,
-    const fvPatchFieldMapper& mapper
+    Field<Type>&& pfld
 )
 :
-    fvsPatchFieldBase(ptf, p),
-    Field<Type>(ptf, mapper),
+    fvsPatchFieldBase(p),
+    Field<Type>(std::move(pfld)),
     internalField_(iF)
 {}
 
@@ -108,6 +142,21 @@ Foam::fvsPatchField<Type>::fvsPatchField
 }
 
 
+template<class Type>
+Foam::fvsPatchField<Type>::fvsPatchField
+(
+    const fvsPatchField<Type>& ptf,
+    const fvPatch& p,
+    const DimensionedField<Type, surfaceMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    fvsPatchFieldBase(ptf, p),
+    Field<Type>(ptf, mapper),
+    internalField_(iF)
+{}
+
+
 template<class Type>
 Foam::fvsPatchField<Type>::fvsPatchField(const fvsPatchField<Type>& ptf)
 :
@@ -161,7 +210,7 @@ template<class Type>
 void Foam::fvsPatchField<Type>::write(Ostream& os) const
 {
     os.writeEntry("type", type());
-    this->writeEntry("value", os);
+    Field<Type>::writeEntry("value", os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.H b/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.H
index 3ee2f1dc26d06b4a25109bc20cc011cd8c3a5a55..1eb422705a50beb13f83843681a9556609354116 100644
--- a/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.H
+++ b/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2019-2022 OpenCFD Ltd.
+    Copyright (C) 2019-2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -49,6 +49,7 @@ SourceFiles
 
 #include "fvPatch.H"
 #include "DimensionedField.H"
+#include "fieldTypes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -56,8 +57,8 @@ namespace Foam
 {
 
 // Forward Declarations
-class objectRegistry;
 class dictionary;
+class objectRegistry;
 class fvPatchFieldMapper;
 class surfaceMesh;
 
@@ -153,6 +154,25 @@ class fvsPatchField
         //- Reference to internal field
         const DimensionedField<Type, surfaceMesh>& internalField_;
 
+protected:
+
+    // Protected Member Functions
+
+        //- Read the "value" entry into \c *this.
+        //  The reading can be optional (default), mandatory etc.
+        //  \returns True on success
+        bool readValueEntry
+        (
+            const dictionary& dict,
+            IOobjectOption::readOption readOpt = IOobjectOption::LAZY_READ
+        );
+
+        //- Write \c *this field as a "value" entry
+        void writeValueEntry(Ostream& os) const
+        {
+            Field<Type>::writeEntry("value", os);
+        }
+
 
 public:
 
@@ -217,12 +237,20 @@ public:
             const DimensionedField<Type, surfaceMesh>&
         );
 
-        //- Construct from patch and internal field and patch field
+        //- Construct from patch, internal field and patch field
         fvsPatchField
         (
             const fvPatch&,
             const DimensionedField<Type, surfaceMesh>&,
-            const Field<Type>&
+            const Field<Type>& pfld
+        );
+
+        //- Construct from patch, internal field and patch field
+        fvsPatchField
+        (
+            const fvPatch&,
+            const DimensionedField<Type, surfaceMesh>&,
+            Field<Type>&& pfld
         );
 
         //- Construct from patch, internal field and dictionary
@@ -338,37 +366,37 @@ public:
         static const word& calculatedType();
 
 
-        // Attributes
+    // Attributes
 
-            //- True if this patch field fixes a value.
-            //  Needed to check if a level has to be specified while solving
-            //  Poissons equations.
-            virtual bool fixesValue() const
-            {
-                return false;
-            }
+        //- True if this patch field fixes a value.
+        //  Needed to check if a level has to be specified while solving
+        //  Poissons equations.
+        virtual bool fixesValue() const
+        {
+            return false;
+        }
 
-            //- True if this patch field is coupled
-            virtual bool coupled() const
-            {
-                return false;
-            }
+        //- True if this patch field is coupled
+        virtual bool coupled() const
+        {
+            return false;
+        }
 
 
-        // Access
+    // Access
 
-            //- Return const-reference to the dimensioned internal field
-            const DimensionedField<Type, surfaceMesh>& internalField()
-            const noexcept
-            {
-                return internalField_;
-            }
+        //- Return const-reference to the dimensioned internal field
+        const DimensionedField<Type, surfaceMesh>& internalField()
+        const noexcept
+        {
+            return internalField_;
+        }
 
-            //- Return const-reference to the internal field values
-            const Field<Type>& primitiveField() const noexcept
-            {
-                return internalField_;
-            }
+        //- Return const-reference to the internal field values
+        const Field<Type>& primitiveField() const noexcept
+        {
+            return internalField_;
+        }
 
 
         // Mapping Functions
diff --git a/src/fvMotionSolver/fvPatchFields/derived/cellMotion/cellMotionFvPatchField.C b/src/fvMotionSolver/fvPatchFields/derived/cellMotion/cellMotionFvPatchField.C
index 2e76dd66e9cd07c8c1e020ce2506c1b16638f107..a359d8fe668f627b871fef394ad8afbbb3aa5a73 100644
--- a/src/fvMotionSolver/fvPatchFields/derived/cellMotion/cellMotionFvPatchField.C
+++ b/src/fvMotionSolver/fvPatchFields/derived/cellMotion/cellMotionFvPatchField.C
@@ -126,7 +126,7 @@ template<class Type>
 void Foam::cellMotionFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 // ************************************************************************* //
diff --git a/src/fvMotionSolver/fvPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementFvPatchField.H b/src/fvMotionSolver/fvPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementFvPatchField.H
index 08dcc13a099e7e26083162d25818e08e39bba983..b94b01d5374c20c58454c156b3c0d9b36588a884 100644
--- a/src/fvMotionSolver/fvPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementFvPatchField.H
+++ b/src/fvMotionSolver/fvPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementFvPatchField.H
@@ -143,7 +143,7 @@ public:
         {
             slipFvPatchField<Type>::write(os);
             // Only so we can easily postprocess.
-            this->writeEntry("value", os);
+            fvPatchField<Type>::writeValueEntry(os);
         }
 };
 
diff --git a/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingDisplacement/angularOscillatingDisplacementPointPatchVectorField.C b/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingDisplacement/angularOscillatingDisplacementPointPatchVectorField.C
index 5150f706f08773dbde2e62e68fa7165ef25edb4b..7ff26948cb41a44293ea6d26b7975cc6f6bef55c 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingDisplacement/angularOscillatingDisplacementPointPatchVectorField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingDisplacement/angularOscillatingDisplacementPointPatchVectorField.C
@@ -187,7 +187,7 @@ void angularOscillatingDisplacementPointPatchVectorField::write
     os.writeEntry("amplitude", amplitude_);
     os.writeEntry("omega", omega_);
     p0_.writeEntry("p0", os);
-    writeEntry("value", os);
+    this->writeValueEntry(os);
 }
 
 
diff --git a/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingDisplacement/angularOscillatingDisplacementPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingDisplacement/angularOscillatingDisplacementPointPatchVectorField.H
index 8c9224a49b00133e11ff098269fd8b5da8c48b4e..fe7841d377553e2109f05f190c18029e2fd44660 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingDisplacement/angularOscillatingDisplacementPointPatchVectorField.H
+++ b/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingDisplacement/angularOscillatingDisplacementPointPatchVectorField.H
@@ -86,7 +86,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         angularOscillatingDisplacementPointPatchVectorField
         (
             const angularOscillatingDisplacementPointPatchVectorField&,
diff --git a/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingVelocity/angularOscillatingVelocityPointPatchVectorField.C b/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingVelocity/angularOscillatingVelocityPointPatchVectorField.C
index ccde191494acc1e060c469b64027d0b67a48240c..792daffdcfea92a89bbcd77410506e576738b703 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingVelocity/angularOscillatingVelocityPointPatchVectorField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingVelocity/angularOscillatingVelocityPointPatchVectorField.C
@@ -192,7 +192,7 @@ void angularOscillatingVelocityPointPatchVectorField::write
     os.writeEntry("amplitude", amplitude_);
     os.writeEntry("omega", omega_);
     p0_.writeEntry("p0", os);
-    writeEntry("value", os);
+    this->writeValueEntry(os);
 }
 
 
diff --git a/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingVelocity/angularOscillatingVelocityPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingVelocity/angularOscillatingVelocityPointPatchVectorField.H
index f1a7ae4a29dfdfd160f9c80914b596bb85da8c52..b73fab2a6d55df0f88efea1d3ebeac77aab33ec3 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingVelocity/angularOscillatingVelocityPointPatchVectorField.H
+++ b/src/fvMotionSolver/pointPatchFields/derived/angularOscillatingVelocity/angularOscillatingVelocityPointPatchVectorField.H
@@ -86,7 +86,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         angularOscillatingVelocityPointPatchVectorField
         (
             const angularOscillatingVelocityPointPatchVectorField&,
diff --git a/src/fvMotionSolver/pointPatchFields/derived/oscillatingDisplacement/oscillatingDisplacementPointPatchVectorField.C b/src/fvMotionSolver/pointPatchFields/derived/oscillatingDisplacement/oscillatingDisplacementPointPatchVectorField.C
index f4af0339612c6f72be31423ee3acbf4cd8c5b364..ddf65df7fb036f31911cf857a98ab30d597fdf2f 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/oscillatingDisplacement/oscillatingDisplacementPointPatchVectorField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/oscillatingDisplacement/oscillatingDisplacementPointPatchVectorField.C
@@ -121,7 +121,7 @@ void oscillatingDisplacementPointPatchVectorField::write(Ostream& os) const
     pointPatchField<vector>::write(os);
     os.writeEntry("amplitude", amplitude_);
     os.writeEntry("omega", omega_);
-    writeEntry("value", os);
+    this->writeValueEntry(os);
 }
 
 
diff --git a/src/fvMotionSolver/pointPatchFields/derived/oscillatingDisplacement/oscillatingDisplacementPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/oscillatingDisplacement/oscillatingDisplacementPointPatchVectorField.H
index 34ae75cc68a261b59fe9fb5d1b974eeb9cb5254e..f77cec235380323822175f7fd4fffe6452a85f28 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/oscillatingDisplacement/oscillatingDisplacementPointPatchVectorField.H
+++ b/src/fvMotionSolver/pointPatchFields/derived/oscillatingDisplacement/oscillatingDisplacementPointPatchVectorField.H
@@ -81,7 +81,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         oscillatingDisplacementPointPatchVectorField
         (
             const oscillatingDisplacementPointPatchVectorField&,
diff --git a/src/fvMotionSolver/pointPatchFields/derived/oscillatingVelocity/oscillatingVelocityPointPatchVectorField.C b/src/fvMotionSolver/pointPatchFields/derived/oscillatingVelocity/oscillatingVelocityPointPatchVectorField.C
index a2a9fa10f5d9ada534bd0cdec5ea44f428238aae..aca3b49f051f31fff175da9c20e075036050ed73 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/oscillatingVelocity/oscillatingVelocityPointPatchVectorField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/oscillatingVelocity/oscillatingVelocityPointPatchVectorField.C
@@ -165,7 +165,7 @@ void oscillatingVelocityPointPatchVectorField::write(Ostream& os) const
     os.writeEntry("amplitude", amplitude_);
     os.writeEntry("omega", omega_);
     p0_.writeEntry("p0", os);
-    writeEntry("value", os);
+    this->writeValueEntry(os);
 }
 
 
diff --git a/src/fvMotionSolver/pointPatchFields/derived/oscillatingVelocity/oscillatingVelocityPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/oscillatingVelocity/oscillatingVelocityPointPatchVectorField.H
index 8985f06dc877d29cf7c0b57a31b13056300f709f..bacd84bc1e30fc8ace7758527ea0cb2775c28c2b 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/oscillatingVelocity/oscillatingVelocityPointPatchVectorField.H
+++ b/src/fvMotionSolver/pointPatchFields/derived/oscillatingVelocity/oscillatingVelocityPointPatchVectorField.H
@@ -83,7 +83,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         oscillatingVelocityPointPatchVectorField
         (
             const oscillatingVelocityPointPatchVectorField&,
diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.C b/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.C
index 3d244128239130f58e620c061988064ae201564b..92c499d62498f5b9cc176fc512a641cd452d16fa 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.C
@@ -463,7 +463,7 @@ void Foam::surfaceDisplacementPointPatchVectorField::updateCoeffs()
 
 void Foam::surfaceDisplacementPointPatchVectorField::write(Ostream& os) const
 {
-    fixedValuePointPatchVectorField::write(os);
+    fixedValuePointPatchField<vector>::write(os);
     os.writeEntry("velocity", velocity_);
     os.writeEntry("geometry", surfacesDict_);
     os.writeEntry("projectMode", projectModeNames_[projectMode_]);
diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.H
index 3114eb82e5079a15abf55de8574cf03ea656fb40..0c39ddc7d29fe1ceac8f11fd22c3b89a3e3639c3 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.H
+++ b/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.H
@@ -154,7 +154,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         surfaceDisplacementPointPatchVectorField
         (
             const surfaceDisplacementPointPatchVectorField&,
diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C
index 645313a74612b80e4a3ce03bb14bc1f8c8d45199..8d6b096d59d016cb5ee28d84313fa64d140f039b 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C
@@ -422,7 +422,7 @@ void Foam::surfaceSlipDisplacementPointPatchVectorField::write
     Ostream& os
 ) const
 {
-    pointPatchVectorField::write(os);
+    pointPatchField<vector>::write(os);
     os.writeEntry("geometry", surfacesDict_);
     os.writeEntry("projectMode", projectModeNames_[projectMode_]);
     os.writeEntry("projectDirection", projectDir_);
diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H
index 6020c47d3bbe833857a7cecfc04e8cf630c76c43..2a46c18454633d7e42a4b8d23003b7098d8ec87d 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H
+++ b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H
@@ -144,7 +144,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         surfaceSlipDisplacementPointPatchVectorField
         (
             const surfaceSlipDisplacementPointPatchVectorField&,
diff --git a/src/fvMotionSolver/pointPatchFields/derived/uniformInterpolatedDisplacement/uniformInterpolatedDisplacementPointPatchVectorField.C b/src/fvMotionSolver/pointPatchFields/derived/uniformInterpolatedDisplacement/uniformInterpolatedDisplacementPointPatchVectorField.C
index b22f5e8d05fc3518c90a30bacf14e08a121d3f8f..8bdfdd3ef7ccadd4ed74c75f99b75cb7c0770704 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/uniformInterpolatedDisplacement/uniformInterpolatedDisplacementPointPatchVectorField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/uniformInterpolatedDisplacement/uniformInterpolatedDisplacementPointPatchVectorField.C
@@ -261,7 +261,7 @@ const
     pointPatchField<vector>::write(os);
     os.writeEntry("field", fieldName_);
     os.writeEntry("interpolationScheme", interpolationScheme_);
-    writeEntry("value", os);
+    this->writeValueEntry(os);
 }
 
 
diff --git a/src/fvMotionSolver/pointPatchFields/derived/uniformInterpolatedDisplacement/uniformInterpolatedDisplacementPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/uniformInterpolatedDisplacement/uniformInterpolatedDisplacementPointPatchVectorField.H
index f261d3db46b81484a8c7058dcce53390300908a5..e8105cd39de95ebdd53e21829a5d515905829040 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/uniformInterpolatedDisplacement/uniformInterpolatedDisplacementPointPatchVectorField.H
+++ b/src/fvMotionSolver/pointPatchFields/derived/uniformInterpolatedDisplacement/uniformInterpolatedDisplacementPointPatchVectorField.H
@@ -120,7 +120,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         uniformInterpolatedDisplacementPointPatchVectorField
         (
             const uniformInterpolatedDisplacementPointPatchVectorField&,
diff --git a/src/fvMotionSolver/pointPatchFields/derived/waveDisplacement/waveDisplacementPointPatchVectorField.C b/src/fvMotionSolver/pointPatchFields/derived/waveDisplacement/waveDisplacementPointPatchVectorField.C
index bfdb5643ff2b4091e1bf9736ab23bd8f06c4291e..ba83666650ebd24793baf83566c481c7f1c5526e 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/waveDisplacement/waveDisplacementPointPatchVectorField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/waveDisplacement/waveDisplacementPointPatchVectorField.C
@@ -127,7 +127,7 @@ void Foam::waveDisplacementPointPatchVectorField::write(Ostream& os) const
     os.writeEntry("amplitude", amplitude_);
     os.writeEntry("omega", omega_);
     os.writeEntry("waveNumber", waveNumber_);
-    writeEntry("value", os);
+    this->writeValueEntry( os);
 }
 
 
diff --git a/src/fvMotionSolver/pointPatchFields/derived/waveDisplacement/waveDisplacementPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/waveDisplacement/waveDisplacementPointPatchVectorField.H
index 8536c06917fdf8651653b37c24f08ad9aff276f6..284ad8e84cca84fe40cd0c8170bae1ad9e1e3492 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/waveDisplacement/waveDisplacementPointPatchVectorField.H
+++ b/src/fvMotionSolver/pointPatchFields/derived/waveDisplacement/waveDisplacementPointPatchVectorField.H
@@ -82,7 +82,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         waveDisplacementPointPatchVectorField
         (
             const waveDisplacementPointPatchVectorField&,
diff --git a/src/genericPatchFields/genericFaPatchField/genericFaPatchField.C b/src/genericPatchFields/genericFaPatchField/genericFaPatchField.C
index 00bfded5d76761855268f3b418198a9e4fceea05..88bc831f560c42cfb3beccd9e93fe1f786ff04ac 100644
--- a/src/genericPatchFields/genericFaPatchField/genericFaPatchField.C
+++ b/src/genericPatchFields/genericFaPatchField/genericFaPatchField.C
@@ -108,7 +108,7 @@ void Foam::genericFaPatchField<Type>::write(Ostream& os) const
 {
     // Handle "value" separately
     genericPatchFieldBase::writeGeneric(os, true);
-    this->writeEntry("value", os);
+    faPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/genericPatchFields/genericFaPatchField/genericFaPatchField.H b/src/genericPatchFields/genericFaPatchField/genericFaPatchField.H
index fece0812dad8b00b1cf56eb561ce2ffd7c68126c..7ad03942e79cb95ff861daac16f4c68915dc6ff0 100644
--- a/src/genericPatchFields/genericFaPatchField/genericFaPatchField.H
+++ b/src/genericPatchFields/genericFaPatchField/genericFaPatchField.H
@@ -88,7 +88,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         genericFaPatchField
         (
             const genericFaPatchField<Type>&,
diff --git a/src/genericPatchFields/genericFvPatchField/genericFvPatchField.C b/src/genericPatchFields/genericFvPatchField/genericFvPatchField.C
index 0f72c34600b40662d12e45a2ae7442232ee2c302..122e534d311928f1d2b98cb4e6660229a735dd1d 100644
--- a/src/genericPatchFields/genericFvPatchField/genericFvPatchField.C
+++ b/src/genericPatchFields/genericFvPatchField/genericFvPatchField.C
@@ -108,7 +108,7 @@ void Foam::genericFvPatchField<Type>::write(Ostream& os) const
 {
     // Handle "value" separately
     genericPatchFieldBase::writeGeneric(os, true);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/genericPatchFields/genericFvPatchField/genericFvPatchField.H b/src/genericPatchFields/genericFvPatchField/genericFvPatchField.H
index 7c527fe050f86ca8d40c7b17cea0ff746c9c9909..f74273dceeba59206589701db697b8d9de309f76 100644
--- a/src/genericPatchFields/genericFvPatchField/genericFvPatchField.H
+++ b/src/genericPatchFields/genericFvPatchField/genericFvPatchField.H
@@ -88,7 +88,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         genericFvPatchField
         (
             const genericFvPatchField<Type>&,
diff --git a/src/genericPatchFields/genericFvsPatchField/genericFvsPatchField.C b/src/genericPatchFields/genericFvsPatchField/genericFvsPatchField.C
index a982f110cd75b306cc74f9ea34a1341bc299bf8c..fbf15045737102449a37cb4fa0f389fb6c79ccc3 100644
--- a/src/genericPatchFields/genericFvsPatchField/genericFvsPatchField.C
+++ b/src/genericPatchFields/genericFvsPatchField/genericFvsPatchField.C
@@ -108,7 +108,7 @@ void Foam::genericFvsPatchField<Type>::write(Ostream& os) const
 {
     // Handle "value" separately
     genericPatchFieldBase::writeGeneric(os, true);
-    this->writeEntry("value", os);
+    fvsPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/genericPatchFields/genericFvsPatchField/genericFvsPatchField.H b/src/genericPatchFields/genericFvsPatchField/genericFvsPatchField.H
index 3fe2a26c57e989661c1c0e8d69a2faa727516dc8..0447dd99710720f4c2d88ad542f144f5842e3be7 100644
--- a/src/genericPatchFields/genericFvsPatchField/genericFvsPatchField.H
+++ b/src/genericPatchFields/genericFvsPatchField/genericFvsPatchField.H
@@ -87,7 +87,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         genericFvsPatchField
         (
             const genericFvsPatchField<Type>&,
diff --git a/src/genericPatchFields/genericPointPatchField/genericPointPatchField.H b/src/genericPatchFields/genericPointPatchField/genericPointPatchField.H
index 59b3be11f4b11bf0fbb24dd091a06a877ecff223..f77201497195670dd4f49bb698a959b8f5ddd267 100644
--- a/src/genericPatchFields/genericPointPatchField/genericPointPatchField.H
+++ b/src/genericPatchFields/genericPointPatchField/genericPointPatchField.H
@@ -84,7 +84,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         genericPointPatchField
         (
             const genericPointPatchField<Type>&,
diff --git a/src/lumpedPointMotion/pointPatchFields/lumpedPointDisplacementPointPatchVectorField.C b/src/lumpedPointMotion/pointPatchFields/lumpedPointDisplacementPointPatchVectorField.C
index c239481f9e826596da102213b321f07d0cebb979..b2fad27088f2dc8321680d42cc21b567ee364657 100644
--- a/src/lumpedPointMotion/pointPatchFields/lumpedPointDisplacementPointPatchVectorField.C
+++ b/src/lumpedPointMotion/pointPatchFields/lumpedPointDisplacementPointPatchVectorField.C
@@ -446,7 +446,7 @@ const
         os.writeEntry("dataWritten", dataWritten_);
     }
 
-    writeEntry("value", os);
+    this->writeValueEntry(os);
 }
 
 
diff --git a/src/lumpedPointMotion/pointPatchFields/lumpedPointDisplacementPointPatchVectorField.H b/src/lumpedPointMotion/pointPatchFields/lumpedPointDisplacementPointPatchVectorField.H
index 26e7997b05e929c000fb510eb714217647559218..0afd14f059151e9ade76ead2b62ded7503be1ef6 100644
--- a/src/lumpedPointMotion/pointPatchFields/lumpedPointDisplacementPointPatchVectorField.H
+++ b/src/lumpedPointMotion/pointPatchFields/lumpedPointDisplacementPointPatchVectorField.H
@@ -129,7 +129,7 @@ public:
             const dictionary& dict
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         lumpedPointDisplacementPointPatchVectorField
         (
             const lumpedPointDisplacementPointPatchVectorField& rhs,
diff --git a/src/mesh/snappyHexMesh/externalDisplacementMeshMover/zeroFixedValue/zeroFixedValuePointPatchField.H b/src/mesh/snappyHexMesh/externalDisplacementMeshMover/zeroFixedValue/zeroFixedValuePointPatchField.H
index e9051ae8e84789cda8271ad47bf9cb7133ef1846..8b52d2d10e62bc58f4790d752a687a94f8cce7a4 100644
--- a/src/mesh/snappyHexMesh/externalDisplacementMeshMover/zeroFixedValue/zeroFixedValuePointPatchField.H
+++ b/src/mesh/snappyHexMesh/externalDisplacementMeshMover/zeroFixedValue/zeroFixedValuePointPatchField.H
@@ -85,7 +85,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         zeroFixedValuePointPatchField
         (
             const zeroFixedValuePointPatchField<Type>&,
diff --git a/src/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPointPatchField/cyclicACMIPointPatchField.H b/src/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPointPatchField/cyclicACMIPointPatchField.H
index 0c4017cd8dda81249623c3061d3cd24a499e12bb..fa2d54f387c692af694a3d0397660792cfbe53b5 100644
--- a/src/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPointPatchField/cyclicACMIPointPatchField.H
+++ b/src/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPointPatchField/cyclicACMIPointPatchField.H
@@ -129,7 +129,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         cyclicACMIPointPatchField
         (
             const cyclicACMIPointPatchField<Type>&,
diff --git a/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPointPatchField/cyclicAMIPointPatchField.H b/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPointPatchField/cyclicAMIPointPatchField.H
index d3237db8e59211994fc3c291f228c61e4eb67ba7..78a8148c09996a1d594ce461815a85170817999a 100644
--- a/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPointPatchField/cyclicAMIPointPatchField.H
+++ b/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPointPatchField/cyclicAMIPointPatchField.H
@@ -129,7 +129,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         cyclicAMIPointPatchField
         (
             const cyclicAMIPointPatchField<Type>&,
diff --git a/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchField.H b/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchField.H
index 6d43549b71e151c4da51ddbcea0082df37368477..cdf99837c41fd68176fbd0a14a28c9a18b227496 100644
--- a/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchField.H
+++ b/src/meshTools/fields/pointPatchFields/uniformFixedValue/uniformFixedValuePointPatchField.H
@@ -103,7 +103,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<Type> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         uniformFixedValuePointPatchField
         (
             const uniformFixedValuePointPatchField<Type>&,
diff --git a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointFarFieldPressure/adjointFarFieldPressureFvPatchScalarField.C b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointFarFieldPressure/adjointFarFieldPressureFvPatchScalarField.C
index aad795f2a934d72d47dc0eb4c167c1477645afae..c4dea30df3dd02325817c581d6166aa2521c0905 100644
--- a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointFarFieldPressure/adjointFarFieldPressureFvPatchScalarField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointFarFieldPressure/adjointFarFieldPressureFvPatchScalarField.C
@@ -252,9 +252,9 @@ Foam::adjointFarFieldPressureFvPatchScalarField::gradientBoundaryCoeffs() const
 
 void Foam::adjointFarFieldPressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointFarFieldVelocity/adjointFarFieldVelocityFvPatchVectorField.C b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointFarFieldVelocity/adjointFarFieldVelocityFvPatchVectorField.C
index 88de315419b4714102a1edbf23e48c6f33bbf724..71e56b53594bd5eb2c46b42919a6f5702a4e6e6d 100644
--- a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointFarFieldVelocity/adjointFarFieldVelocityFvPatchVectorField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointFarFieldVelocity/adjointFarFieldVelocityFvPatchVectorField.C
@@ -185,9 +185,9 @@ Foam::adjointFarFieldVelocityFvPatchVectorField::valueBoundaryCoeffs
 
 void Foam::adjointFarFieldVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointInletVelocity/adjointInletVelocityFvPatchVectorField.C b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointInletVelocity/adjointInletVelocityFvPatchVectorField.C
index a5e71cb4c3373a54f2cb890a64db5b85d9f41743..869b4c9dec5754d78edb5d59154c55e9a9b87ef3 100644
--- a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointInletVelocity/adjointInletVelocityFvPatchVectorField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointInletVelocity/adjointInletVelocityFvPatchVectorField.C
@@ -131,9 +131,9 @@ Foam::adjointInletVelocityFvPatchVectorField::valueBoundaryCoeffs
 
 void Foam::adjointInletVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointOutletPressure/adjointOutletPressureFvPatchScalarField.C b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointOutletPressure/adjointOutletPressureFvPatchScalarField.C
index b4f5015493981585dcc962ca6c8129a66997d831..0e80d181e247cb5c91d8c31118ba5f5e6f10bf2e 100644
--- a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointOutletPressure/adjointOutletPressureFvPatchScalarField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointOutletPressure/adjointOutletPressureFvPatchScalarField.C
@@ -160,9 +160,9 @@ void Foam::adjointOutletPressureFvPatchScalarField::updateCoeffs()
 
 void Foam::adjointOutletPressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointOutletVelocity/adjointOutletVelocityFvPatchVectorField.C b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointOutletVelocity/adjointOutletVelocityFvPatchVectorField.C
index 4d3f2fce75d2acb8d6fe9ab9022c454c307b62a3..49adb64b193fa5476e3156673cbef176011a1b92 100644
--- a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointOutletVelocity/adjointOutletVelocityFvPatchVectorField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointOutletVelocity/adjointOutletVelocityFvPatchVectorField.C
@@ -164,9 +164,9 @@ void Foam::adjointOutletVelocityFvPatchVectorField::evaluate
 
 void Foam::adjointOutletVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointOutletVelocityFlux/adjointOutletVelocityFluxFvPatchVectorField.C b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointOutletVelocityFlux/adjointOutletVelocityFluxFvPatchVectorField.C
index 8b70903941d87ba536188bfe5146a0fb85e0ae75..dd385480e3e2683507078c579936b43a4b3d0102 100644
--- a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointOutletVelocityFlux/adjointOutletVelocityFluxFvPatchVectorField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointOutletVelocityFlux/adjointOutletVelocityFluxFvPatchVectorField.C
@@ -207,9 +207,9 @@ void Foam::adjointOutletVelocityFluxFvPatchVectorField::write
     Ostream& os
 ) const
 {
-    fvPatchVectorField::write(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointWallVelocity/adjointWallVelocityFvPatchVectorField.C b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointWallVelocity/adjointWallVelocityFvPatchVectorField.C
index c26a7b863a7a799aa1e735fd1e8ed3a576069e97..2ee1f2a8483baa20d091df9c4f1df78359bdf2b0 100644
--- a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointWallVelocity/adjointWallVelocityFvPatchVectorField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointWallVelocity/adjointWallVelocityFvPatchVectorField.C
@@ -225,11 +225,11 @@ void Foam::adjointWallVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::adjointWallVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("kappa", kappa_);
     os.writeEntry("E", E_);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointWallVelocityLowRe/adjointWallVelocityLowReFvPatchVectorField.C b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointWallVelocityLowRe/adjointWallVelocityLowReFvPatchVectorField.C
index 606eb246250e0532ffd0565ebb61810120541df7..fb54a88b1a2c07f558b4f9c5d6037289c19cfee0 100644
--- a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointWallVelocityLowRe/adjointWallVelocityLowReFvPatchVectorField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointWallVelocityLowRe/adjointWallVelocityLowReFvPatchVectorField.C
@@ -110,9 +110,9 @@ void Foam::adjointWallVelocityLowReFvPatchVectorField::updateCoeffs()
 
 void Foam::adjointWallVelocityLowReFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
-    writeEntry("value", os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointFarFieldNuaTilda/adjointFarFieldNuaTildaFvPatchScalarField.C b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointFarFieldNuaTilda/adjointFarFieldNuaTildaFvPatchScalarField.C
index edbdc4b09ca1ac869dd95097d50d4ffedd6ca895..13340dc1b609dfa6d0a3b80b4af2a4244cfd70b2 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointFarFieldNuaTilda/adjointFarFieldNuaTildaFvPatchScalarField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointFarFieldNuaTilda/adjointFarFieldNuaTildaFvPatchScalarField.C
@@ -159,9 +159,9 @@ valueBoundaryCoeffs
 
 void adjointFarFieldNuaTildaFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointFarFieldTMVar1/adjointFarFieldTMVar1FvPatchScalarField.C b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointFarFieldTMVar1/adjointFarFieldTMVar1FvPatchScalarField.C
index 85675f0e3528df8fabc1d0edc7fe0a68f26879c3..35d9034a0c83aa22d62d946378d1f569a228f5b8 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointFarFieldTMVar1/adjointFarFieldTMVar1FvPatchScalarField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointFarFieldTMVar1/adjointFarFieldTMVar1FvPatchScalarField.C
@@ -157,9 +157,9 @@ valueBoundaryCoeffs
 
 void adjointFarFieldTMVar1FvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointFarFieldTMVar2/adjointFarFieldTMVar2FvPatchScalarField.C b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointFarFieldTMVar2/adjointFarFieldTMVar2FvPatchScalarField.C
index 1bd84898be75a318f83a3103b6e97abacabd1df7..b51d8be81243886388c6fe9df8ee63128a4e630c 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointFarFieldTMVar2/adjointFarFieldTMVar2FvPatchScalarField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointFarFieldTMVar2/adjointFarFieldTMVar2FvPatchScalarField.C
@@ -157,9 +157,9 @@ valueBoundaryCoeffs
 
 void adjointFarFieldTMVar2FvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointInletNuaTilda/adjointInletNuaTildaFvPatchScalarField.C b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointInletNuaTilda/adjointInletNuaTildaFvPatchScalarField.C
index a3d75d2fccb6fa3972277cd3f3d923a7b08daf9f..72145995d1fdd8baca078a6645498e88c23aefa9 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointInletNuaTilda/adjointInletNuaTildaFvPatchScalarField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointInletNuaTilda/adjointInletNuaTildaFvPatchScalarField.C
@@ -119,9 +119,9 @@ tmp<Field<scalar>> adjointInletNuaTildaFvPatchScalarField::valueBoundaryCoeffs
 
 void adjointInletNuaTildaFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletFlux/adjointOutletFluxFvPatchField.C b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletFlux/adjointOutletFluxFvPatchField.C
index 2ef57ef0c03692dcd4eed0b05f42ce8968f68e58..1f296db56b5962592657b64287db35592e4c41d5 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletFlux/adjointOutletFluxFvPatchField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletFlux/adjointOutletFluxFvPatchField.C
@@ -143,7 +143,7 @@ template<class Type>
 void Foam::adjointOutletFluxFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<Type>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletKa/adjointOutletKaFvPatchScalarField.C b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletKa/adjointOutletKaFvPatchScalarField.C
index 8a0aefde325becb58b2d0ed476a35b3e3794ba9f..dbbfac545113cad6ee6b1b71b26248d912109a32 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletKa/adjointOutletKaFvPatchScalarField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletKa/adjointOutletKaFvPatchScalarField.C
@@ -125,9 +125,9 @@ void adjointOutletKaFvPatchScalarField::updateCoeffs()
 
 void adjointOutletKaFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletNuaTilda/adjointOutletNuaTildaFvPatchScalarField.C b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletNuaTilda/adjointOutletNuaTildaFvPatchScalarField.C
index ef16a37865c667d389c753c052ffda5147d5acf6..32cc4f76c9bee921a64760c0b313564e9cc3d1f4 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletNuaTilda/adjointOutletNuaTildaFvPatchScalarField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletNuaTilda/adjointOutletNuaTildaFvPatchScalarField.C
@@ -123,9 +123,9 @@ void adjointOutletNuaTildaFvPatchScalarField::updateCoeffs()
 
 void adjointOutletNuaTildaFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletNuaTildaFlux/adjointOutletNuaTildaFluxFvPatchScalarField.C b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletNuaTildaFlux/adjointOutletNuaTildaFluxFvPatchScalarField.C
index f66e1972e79e8d9e1a70d9c77719a179f7c0a3ec..2382fa4e17b2060524a1c092ad499596cb082f60 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletNuaTildaFlux/adjointOutletNuaTildaFluxFvPatchScalarField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletNuaTildaFlux/adjointOutletNuaTildaFluxFvPatchScalarField.C
@@ -146,9 +146,9 @@ adjointOutletNuaTildaFluxFvPatchScalarField::gradientInternalCoeffs() const
 
 void adjointOutletNuaTildaFluxFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletWa/adjointOutletWaFvPatchScalarField.C b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletWa/adjointOutletWaFvPatchScalarField.C
index e920a5d26b43c3347a6fb55f00298d002f6ed782..68fab059d3e19a4b45657d8e07e103581a3cb8b0 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletWa/adjointOutletWaFvPatchScalarField.C
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/derivedFvPatchFields/adjointOutletWa/adjointOutletWaFvPatchScalarField.C
@@ -125,9 +125,9 @@ void adjointOutletWaFvPatchScalarField::updateCoeffs()
 
 void adjointOutletWaFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("solverName", adjointSolverName_);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/multiphaseEuler/multiphaseSystem/derivedFvPatchFields/alphaContactAngle/alphaContactAngleFvPatchScalarField.C b/src/phaseSystemModels/multiphaseEuler/multiphaseSystem/derivedFvPatchFields/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
index b1b875062568db26f46923d17d3ae02c0c4eabda..2c0e2f98bf2bdde8e1baa0c12ae67ab1b27594e3 100644
--- a/src/phaseSystemModels/multiphaseEuler/multiphaseSystem/derivedFvPatchFields/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
+++ b/src/phaseSystemModels/multiphaseEuler/multiphaseSystem/derivedFvPatchFields/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
@@ -129,9 +129,9 @@ alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
 
 void alphaContactAngleFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("thetaProperties", thetaProps_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/multiphaseInter/phasesSystem/derivedFvPatchFields/timeVaryingMassSorption/timeVaryingMassSorptionFvPatchScalarField.C b/src/phaseSystemModels/multiphaseInter/phasesSystem/derivedFvPatchFields/timeVaryingMassSorption/timeVaryingMassSorptionFvPatchScalarField.C
index a57d9ebf0902940ec75aa7be2fe9aee1523da9d9..166a9a9e0e0987bebf64cc75e879bd98cc8a7f74 100644
--- a/src/phaseSystemModels/multiphaseInter/phasesSystem/derivedFvPatchFields/timeVaryingMassSorption/timeVaryingMassSorptionFvPatchScalarField.C
+++ b/src/phaseSystemModels/multiphaseInter/phasesSystem/derivedFvPatchFields/timeVaryingMassSorption/timeVaryingMassSorptionFvPatchScalarField.C
@@ -258,13 +258,13 @@ void Foam::timeVaryingMassSorptionFvPatchScalarField::updateCoeffs()
 
 void Foam::timeVaryingMassSorptionFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
 
     os.writeEntry("kabs", kabs_);
     os.writeEntry("max", max_);
     os.writeEntryIfDifferent<scalar>("kdes", scalar(0), kdes_);
 
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphaContactAngle/alphaContactAngleFvPatchScalarField.C b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
index 8e065b876a43d544606cc20f66a691ccbdc262c1..910ccf5abf7ecbecf0e4c3610ff5778a49456e08 100644
--- a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
+++ b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
@@ -129,9 +129,9 @@ alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
 
 void alphaContactAngleFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("thetaProperties", thetaProps_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.C b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.C
index 6e37273ea062db540211baf85baf0c27e395b828..2ec483d3e894223b3bd29892e9c976305203599d 100644
--- a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.C
+++ b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.C
@@ -199,7 +199,7 @@ void alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::write
     os.writeEntry("fixedDmdt", fixedDmdt_);
     os.writeEntry("L", L_);
     dmdt_.writeEntry("dmdt", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatPhaseChangeJayatillekeWallFunction/alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField.C b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatPhaseChangeJayatillekeWallFunction/alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField.C
index b7cc56fcaae6ff5925667c7588aa3e686c8c7a20..90cf5c75707f91271862aeee19a66588be443d77 100644
--- a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatPhaseChangeJayatillekeWallFunction/alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField.C
+++ b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatPhaseChangeJayatillekeWallFunction/alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField.C
@@ -323,7 +323,7 @@ void alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField::write
     os.writeEntry("kappa", kappa_);
     os.writeEntry("E", E_);
     dmdt_.writeEntry("dmdt", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatPhaseChangeWallFunction/alphatPhaseChangeWallFunctionFvPatchScalarField.C b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatPhaseChangeWallFunction/alphatPhaseChangeWallFunctionFvPatchScalarField.C
index e15a79068453f23fefaf64cd9abd982f6e6665f1..dae81c48d9f8270a64192964f7f95dda9adcd7df 100644
--- a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatPhaseChangeWallFunction/alphatPhaseChangeWallFunctionFvPatchScalarField.C
+++ b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatPhaseChangeWallFunction/alphatPhaseChangeWallFunctionFvPatchScalarField.C
@@ -128,7 +128,7 @@ write(Ostream& os) const
     fvPatchField<scalar>::write(os);
     dmdt_.writeEntry("dmdt", os);
     mDotL_.writeEntry("mDotL", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.C b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.C
index 6e449c5080dc315c46f06354fa8082639a1d6bb4..c405a54f1a9982ecfca78cf46ec833df6c7538ff 100644
--- a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.C
+++ b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.C
@@ -1323,7 +1323,7 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::write(Ostream& os) const
     qq_.writeEntry("qQuenching", os);
     alphatConv_.writeEntry("alphatConv", os);
 
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/copiedFixedValue/copiedFixedValueFvPatchScalarField.C b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/copiedFixedValue/copiedFixedValueFvPatchScalarField.C
index d6d88cae2ef42aef7b7ef4a65548060312c585b7..147842955da323b2c270a2509dd584860846c04e 100644
--- a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/copiedFixedValue/copiedFixedValueFvPatchScalarField.C
+++ b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/copiedFixedValue/copiedFixedValueFvPatchScalarField.C
@@ -112,7 +112,7 @@ void Foam::copiedFixedValueFvPatchScalarField::write(Ostream& os) const
 {
     fvPatchField<scalar>::write(os);
     os.writeEntry("sourceFieldName", sourceFieldName_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/fixedMultiPhaseHeatFlux/fixedMultiPhaseHeatFluxFvPatchScalarField.C b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/fixedMultiPhaseHeatFlux/fixedMultiPhaseHeatFluxFvPatchScalarField.C
index 580c3e9cfc839a15fb43a92dcbda27d369c2b979..cce56b32a40aa1ee86defeca32a51b9666c51163 100644
--- a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/fixedMultiPhaseHeatFlux/fixedMultiPhaseHeatFluxFvPatchScalarField.C
+++ b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/fixedMultiPhaseHeatFlux/fixedMultiPhaseHeatFluxFvPatchScalarField.C
@@ -198,7 +198,7 @@ void Foam::fixedMultiPhaseHeatFluxFvPatchScalarField::write(Ostream& os) const
     fvPatchField<scalar>::write(os);
     os.writeEntry("relax", relax_);
     q_.writeEntry("q", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C b/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
index f2d159e07d5e47a8dd137fbb82f37e0c3715d5b9..a1d4580da78161ae179a3ee2340e0880a5aa6ef8 100644
--- a/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
+++ b/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
@@ -240,9 +240,9 @@ void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::write
     Ostream& os
 ) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("specularityCoefficient", specularityCoefficient_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C b/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
index 85f52e183bb789763cbce186ea7f404751b64c31..d46037600c94ec30e422c11cb77eabdb464fe5c0 100644
--- a/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
+++ b/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
@@ -279,10 +279,10 @@ void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("restitutionCoefficient", restitutionCoefficient_);
     os.writeEntry("specularityCoefficient", specularityCoefficient_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C b/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
index 03d3a85cbe2c9ff6aac09a113caaafb39861d8b9..84d56ae63615615e1f357d02f5a2ff1fdb9765b0 100644
--- a/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
+++ b/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
@@ -236,9 +236,9 @@ void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::write
     Ostream& os
 ) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntry("specularityCoefficient", specularityCoefficient_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C b/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
index 6d2663a470579f77d94a00f95b56a45c63ab304e..69472671352753e9c0679b0193a020973b86729d 100644
--- a/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
+++ b/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
@@ -271,10 +271,10 @@ void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("restitutionCoefficient", restitutionCoefficient_);
     os.writeEntry("specularityCoefficient", specularityCoefficient_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisRadiativeCoupledMixed/filmPyrolysisRadiativeCoupledMixedFvPatchScalarField.C b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisRadiativeCoupledMixed/filmPyrolysisRadiativeCoupledMixedFvPatchScalarField.C
index 9270915c1338230b25f72de634054b3960a58edc..0f26223b0fe82efe283a40dcf01dbf283c114651 100644
--- a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisRadiativeCoupledMixed/filmPyrolysisRadiativeCoupledMixedFvPatchScalarField.C
+++ b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisRadiativeCoupledMixed/filmPyrolysisRadiativeCoupledMixedFvPatchScalarField.C
@@ -412,7 +412,7 @@ void filmPyrolysisRadiativeCoupledMixedFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    mixedFvPatchScalarField::write(os);
+    mixedFvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>
     (
         "filmRegion",
diff --git a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.C b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.C
index 6c88b5302c6e3035518b16d7f0accb4fe9344ee2..fb60eb823593f08f836a59fbb822e70e89a03001 100644
--- a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.C
+++ b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.C
@@ -187,7 +187,7 @@ void Foam::filmPyrolysisTemperatureCoupledFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>
     (
         "filmRegion",
@@ -202,7 +202,7 @@ void Foam::filmPyrolysisTemperatureCoupledFvPatchScalarField::write
     );
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.C b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.C
index 549b41fd52423401670f784992dea3a3c634dbaa..8847b50a72a2b88336c2ec4f865492eb93f3a97f 100644
--- a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.C
+++ b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.C
@@ -212,7 +212,7 @@ void Foam::filmPyrolysisVelocityCoupledFvPatchVectorField::write
     Ostream& os
 ) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>
     (
         "filmRegion",
@@ -227,7 +227,7 @@ void Foam::filmPyrolysisVelocityCoupledFvPatchVectorField::write
     );
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/filmHeightInletVelocity/filmHeightInletVelocityFvPatchVectorField.C b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/filmHeightInletVelocity/filmHeightInletVelocityFvPatchVectorField.C
index 651f1349e05b272dc6cc00d43615a717362be325..0ecc19035a5be75c2565c6dcc1c31d1307a3e258 100644
--- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/filmHeightInletVelocity/filmHeightInletVelocityFvPatchVectorField.C
+++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/filmHeightInletVelocity/filmHeightInletVelocityFvPatchVectorField.C
@@ -129,11 +129,11 @@ void Foam::filmHeightInletVelocityFvPatchVectorField::updateCoeffs()
 
 void Foam::filmHeightInletVelocityFvPatchVectorField::write(Ostream& os) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
     os.writeEntryIfDifferent<word>("deltaf", "deltaf", deltafName_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/inclinedFilmNusseltHeight/inclinedFilmNusseltHeightFvPatchScalarField.C b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/inclinedFilmNusseltHeight/inclinedFilmNusseltHeightFvPatchScalarField.C
index dca945f905335e748f4a23de3f5a27afef5fdf6f..d8c0c9436d488445f7cd47c3b0a33bd98c7b607d 100644
--- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/inclinedFilmNusseltHeight/inclinedFilmNusseltHeightFvPatchScalarField.C
+++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/inclinedFilmNusseltHeight/inclinedFilmNusseltHeightFvPatchScalarField.C
@@ -194,7 +194,8 @@ void Foam::inclinedFilmNusseltHeightFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fixedValueFvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
+
     os.writeEntryIfDifferent<word>
     (
         "filmRegion",
@@ -204,7 +205,8 @@ void Foam::inclinedFilmNusseltHeightFvPatchScalarField::write
     GammaMean_->writeData(os);
     a_->writeData(os);
     omega_->writeData(os);
-    writeEntry("value", os);
+
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/inclinedFilmNusseltInletVelocity/inclinedFilmNusseltInletVelocityFvPatchVectorField.C b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/inclinedFilmNusseltInletVelocity/inclinedFilmNusseltInletVelocityFvPatchVectorField.C
index 5bd9ea6a50db1c83627ec8a1f4bab943c9ce139c..0833e9e46f70b63597754a7d77d57d64aa0bb28e 100644
--- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/inclinedFilmNusseltInletVelocity/inclinedFilmNusseltInletVelocityFvPatchVectorField.C
+++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/inclinedFilmNusseltInletVelocity/inclinedFilmNusseltInletVelocityFvPatchVectorField.C
@@ -193,7 +193,8 @@ void Foam::inclinedFilmNusseltInletVelocityFvPatchVectorField::write
     Ostream& os
 ) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
+
     os.writeEntryIfDifferent<word>
     (
         "filmRegion",
@@ -203,7 +204,8 @@ void Foam::inclinedFilmNusseltInletVelocityFvPatchVectorField::write
     GammaMean_->writeData(os);
     a_->writeData(os);
     omega_->writeData(os);
-    writeEntry("value", os);
+
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.C b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.C
index 2d326128ecb9be7178b02573a0746431fd1885a7..b0e370a718952d3ba7ee299d0e8b8454cd665220 100644
--- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.C
+++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.C
@@ -257,7 +257,8 @@ void alphatFilmWallFunctionFvPatchScalarField::write(Ostream& os) const
     os.writeEntryIfDifferent<scalar>("Cmu", 0.09, Cmu_);
     os.writeEntryIfDifferent<scalar>("kappa", 0.41, kappa_);
     os.writeEntryIfDifferent<scalar>("Prt", 0.85, Prt_);
-    writeEntry("value", os);
+
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/nutkFilmWallFunction/nutkFilmWallFunctionFvPatchScalarField.C b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/nutkFilmWallFunction/nutkFilmWallFunctionFvPatchScalarField.C
index 286d93216262ecc3536051b98358ce3c83638122..63661a0c4a5a74417bbcbffa8b41e8a484efa9f7 100644
--- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/nutkFilmWallFunction/nutkFilmWallFunctionFvPatchScalarField.C
+++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/nutkFilmWallFunction/nutkFilmWallFunctionFvPatchScalarField.C
@@ -273,7 +273,7 @@ void nutkFilmWallFunctionFvPatchScalarField::write(Ostream& os) const
 {
     nutWallFunctionFvPatchScalarField::write(os);
     writeLocalEntries(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
index 3c6da0ce0cd76c2a4c262e79bd6ccfe523c9d852..e804362b8b2f958b16130c540457d4b05555bde4 100644
--- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
+++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
@@ -274,7 +274,7 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::write(Ostream& os) const
 
     initialPoints_.writeEntry("initialPoints", os);
 
-    writeEntry("value", os);
+    this->writeValueEntry(os);
 }
 
 
diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H
index 06947e016db4ffccf149d4931a87e34d7a8e855d..e67f00ff6ac3575243296da2ef89ec179a02db1f 100644
--- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H
+++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H
@@ -113,7 +113,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         sixDoFRigidBodyDisplacementPointPatchVectorField
         (
             const sixDoFRigidBodyDisplacementPointPatchVectorField&,
diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
index 52073798fedea557c01a5db428ddb09027551681..df6763d435010aa5ac787d889b6f5136ac2c76a2 100644
--- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
+++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
@@ -200,7 +200,7 @@ void uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField::write
     pointPatchField<vector>::write(os);
     motion_.write(os);
     initialPoints_.writeEntry("initialPoints", os);
-    writeEntry("value", os);
+    this->writeValueEntry(os);
 }
 
 
diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H
index 339040f8fa2c5818c2ebcc7b65b6e1fded97d2d9..9bc259d00e7847112dd488836e6752b04e4127e2 100644
--- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H
+++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H
@@ -88,7 +88,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField
         (
             const uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField&,
diff --git a/src/thermoTools/derivedFvPatchFields/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.C
index 519776723ad8d6585c7d5b39ffe532ea8e0a7b1d..51d9c4d2d07709a9637d954301a5021960ca4c5c 100644
--- a/src/thermoTools/derivedFvPatchFields/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.C
@@ -164,7 +164,7 @@ void convectiveHeatTransferFvPatchScalarField::write(Ostream& os) const
 {
     fvPatchField<scalar>::write(os);
     os.writeEntry("L", L_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermoTools/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
index 26aa93d2ec0a7e2a62e399b60f3a7b659c98fd25..90fc37d1e295d67d58566fdf26918a2414bdd0a1 100644
--- a/src/thermoTools/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
@@ -476,7 +476,7 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
 
     os.writeEntry("mode", operationModeNames[mode_]);
     temperatureCoupledBase::write(os);
@@ -537,7 +537,7 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::write
     refValue().writeEntry("refValue", os);
     refGrad().writeEntry("refGradient", os);
     valueFraction().writeEntry("valueFraction", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermoTools/derivedFvPatchFields/fixedIncidentRadiation/fixedIncidentRadiationFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/fixedIncidentRadiation/fixedIncidentRadiationFvPatchScalarField.C
index 90899164ac79af77d70da6127c530619b88fc42d..16e7f55cd5bc41e2755d38f32ae6102edeba5f48 100644
--- a/src/thermoTools/derivedFvPatchFields/fixedIncidentRadiation/fixedIncidentRadiationFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/fixedIncidentRadiation/fixedIncidentRadiationFvPatchScalarField.C
@@ -195,10 +195,10 @@ void Foam::radiation::fixedIncidentRadiationFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fixedGradientFvPatchScalarField::write(os);
+    fixedGradientFvPatchField<scalar>::write(os);
     temperatureCoupledBase::write(os);
     qrIncident_.writeEntry("qrIncident", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermoTools/derivedFvPatchFields/humidityTemperatureCoupledMixed/humidityTemperatureCoupledMixedFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/humidityTemperatureCoupledMixed/humidityTemperatureCoupledMixedFvPatchScalarField.C
index 668940de7610f8d56331f692d46c87c99c3267f8..2661d4ba2e39f98e074a2e80e01dc2455ca2a4fc 100644
--- a/src/thermoTools/derivedFvPatchFields/humidityTemperatureCoupledMixed/humidityTemperatureCoupledMixedFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/humidityTemperatureCoupledMixed/humidityTemperatureCoupledMixedFvPatchScalarField.C
@@ -767,7 +767,7 @@ void Foam::humidityTemperatureCoupledMixedFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    mixedFvPatchScalarField::write(os);
+    mixedFvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("p", "p", pName_);
     os.writeEntryIfDifferent<word>("U", "U", UName_);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
diff --git a/src/thermoTools/derivedFvPatchFields/lumpedMassWallTemperature/lumpedMassWallTemperatureFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/lumpedMassWallTemperature/lumpedMassWallTemperatureFvPatchScalarField.C
index f34d171eae5bda13de7e621be475e1789d32c956..2d1ecc121ce69c4f235fd3cc4d251b6fb66ca39f 100644
--- a/src/thermoTools/derivedFvPatchFields/lumpedMassWallTemperature/lumpedMassWallTemperatureFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/lumpedMassWallTemperature/lumpedMassWallTemperatureFvPatchScalarField.C
@@ -217,7 +217,7 @@ void Foam::lumpedMassWallTemperatureFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    mixedFvPatchScalarField::write(os);
+    mixedFvPatchField<scalar>::write(os);
     temperatureCoupledBase::write(os);
 
     os.writeEntry("Cp", Cp_);
diff --git a/src/thermoTools/derivedFvPatchFields/outletMachNumberPressure/outletMachNumberPressureFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/outletMachNumberPressure/outletMachNumberPressureFvPatchScalarField.C
index 49d6b0ce93bccf36eb0299210b2610de028f33c7..8c17484d03711d49f40c9f2090d810d02675c9a6 100644
--- a/src/thermoTools/derivedFvPatchFields/outletMachNumberPressure/outletMachNumberPressureFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/outletMachNumberPressure/outletMachNumberPressureFvPatchScalarField.C
@@ -244,7 +244,7 @@ void Foam::outletMachNumberPressureFvPatchScalarField::updateCoeffs()
 
 void Foam::outletMachNumberPressureFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("pBack", pBack_);
     os.writeEntryIfDifferent<scalar>("c1", 0, c1_);
     os.writeEntryIfDifferent<scalar>("A1", 0, A1_);
@@ -256,7 +256,7 @@ void Foam::outletMachNumberPressureFvPatchScalarField::write(Ostream& os) const
     os.writeEntryIfDifferent<word>("U", "U", UName_);
     os.writeEntryIfDifferent<scalar>("M", 0, M_);
 
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermoTools/derivedFvPatchFields/outletMappedUniformInletHeatAddition/outletMappedUniformInletHeatAdditionFvPatchField.C b/src/thermoTools/derivedFvPatchFields/outletMappedUniformInletHeatAddition/outletMappedUniformInletHeatAdditionFvPatchField.C
index ac72f78aecfea14496bd29a7ba7eaca581009587..5e7b8daa3a73d5ae7453b988e3006b3d46c4fdcb 100644
--- a/src/thermoTools/derivedFvPatchFields/outletMappedUniformInletHeatAddition/outletMappedUniformInletHeatAdditionFvPatchField.C
+++ b/src/thermoTools/derivedFvPatchFields/outletMappedUniformInletHeatAddition/outletMappedUniformInletHeatAdditionFvPatchField.C
@@ -190,14 +190,14 @@ void Foam::outletMappedUniformInletHeatAdditionFvPatchField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     os.writeEntry("outletPatch", outletPatchName_);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
     os.writeEntry("Q", Q_);
     os.writeEntry("TMin", TMin_);
     os.writeEntry("TMax", TMax_);
 
-    this->writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermoTools/derivedFvPatchFields/semiPermeableBaffle/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/semiPermeableBaffle/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C
index e27c587628260bcdb7d3770dc2a1876c19f37729..d9d00a8bd3fa0df2aee252f920a54c83e3b27144 100644
--- a/src/thermoTools/derivedFvPatchFields/semiPermeableBaffle/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/semiPermeableBaffle/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C
@@ -170,11 +170,11 @@ void Foam::semiPermeableBaffleMassFractionFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     mappedPatchBase::write(os);
     os.writeEntryIfDifferent<scalar>("c", 0, c_);
     os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermoTools/derivedFvPatchFields/semiPermeableBaffle/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.C b/src/thermoTools/derivedFvPatchFields/semiPermeableBaffle/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.C
index 1af5600c2a60da7edfc2bf85c18df764a51cb0fd..579989b7f16927483f5f0b5b4e1a5e5413154597 100644
--- a/src/thermoTools/derivedFvPatchFields/semiPermeableBaffle/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.C
+++ b/src/thermoTools/derivedFvPatchFields/semiPermeableBaffle/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.C
@@ -170,9 +170,9 @@ void Foam::semiPermeableBaffleVelocityFvPatchVectorField::write
     Ostream& os
 ) const
 {
-    fvPatchVectorField::write(os);
+    fvPatchField<vector>::write(os);
     os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermoTools/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.C
index 8ce9d2e6ef663b918774e8c4652b83c73c33b624..053d10cf0622dc6a1a47c2f137e62602e4a570b7 100644
--- a/src/thermoTools/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.C
@@ -428,7 +428,7 @@ void thermalBaffle1DFvPatchScalarField<solidType>::updateCoeffs()
 template<class solidType>
 void thermalBaffle1DFvPatchScalarField<solidType>::write(Ostream& os) const
 {
-    mixedFvPatchScalarField::write(os);
+    mixedFvPatchField<scalar>::write(os);
     mappedPatchBase::write(os);
 
     if (this->owner())
diff --git a/src/thermoTools/derivedFvPatchFields/totalFlowRateAdvectiveDiffusive/totalFlowRateAdvectiveDiffusiveFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/totalFlowRateAdvectiveDiffusive/totalFlowRateAdvectiveDiffusiveFvPatchScalarField.C
index d3a6193123bea007331502e689b3e53cb587574c..c898f212d2585893f0d941636d7331b0bd77aaaf 100644
--- a/src/thermoTools/derivedFvPatchFields/totalFlowRateAdvectiveDiffusive/totalFlowRateAdvectiveDiffusiveFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/totalFlowRateAdvectiveDiffusive/totalFlowRateAdvectiveDiffusiveFvPatchScalarField.C
@@ -206,7 +206,7 @@ void Foam::totalFlowRateAdvectiveDiffusiveFvPatchScalarField::write
     os.writeEntry("phi", phiName_);
     os.writeEntry("rho", rhoName_);
     os.writeEntry("massFluxFraction", massFluxFraction_);
-    this->writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermoTools/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C
index e1b836fb1165e7b049433040474e8b99066c3fda..cba676c86c380c49b99c82682007bfa2cd6f0522 100644
--- a/src/thermoTools/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C
@@ -460,7 +460,7 @@ void turbulentTemperatureCoupledBaffleMixedFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    mixedFvPatchScalarField::write(os);
+    mixedFvPatchField<scalar>::write(os);
     os.writeEntry("Tnbr", TnbrName_);
     if (thicknessLayer_)
     {
diff --git a/src/thermoTools/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C
index 5dc9ad16eb74bb7646b2e0315b310bc30fa7a266..ad59b17622a6f78a1cb32fbdc666c9f9c7142378 100644
--- a/src/thermoTools/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C
@@ -721,7 +721,7 @@ void turbulentTemperatureRadCoupledMixedFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    mixedFvPatchScalarField::write(os);
+    mixedFvPatchField<scalar>::write(os);
 
     //os.writeEntry("Tnbr", TnbrName_);
     os.writeEntryIfDifferent<word>("Tnbr", "T", TnbrName_);
diff --git a/src/thermoTools/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C
index afd5c6d0ad2e3f60fae9ba492ec6d1bc34ff6ff9..f0f4c23109048829b6582cbc2cc534d4b30c1775 100644
--- a/src/thermoTools/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C
@@ -330,7 +330,7 @@ void alphatJayatillekeWallFunctionFvPatchScalarField::write(Ostream& os) const
     os.writeEntryIfDifferent<scalar>("Prt", 0.85, Prt_);
     os.writeEntryIfDifferent<scalar>("kappa", 0.41, kappa_);
     os.writeEntryIfDifferent<scalar>("E", 9.8, E_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermoTools/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.C
index 2e24370be4a6ea865369776d4d2a6fdf05a3c279..6849f44a1f08a30d0433333d4a05ca6a045b69b2 100644
--- a/src/thermoTools/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.C
@@ -132,7 +132,7 @@ void alphatWallFunctionFvPatchScalarField::write(Ostream& os) const
 {
     fvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<scalar>("Prt", 0.85, Prt_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermoTools/derivedFvPatchFields/wallFunctions/sorptionWallFunction/sorptionWallFunctionFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/wallFunctions/sorptionWallFunction/sorptionWallFunctionFvPatchScalarField.C
index d289f63444821e90b7d16cd2444dd40acff6a341..0c5a302f14febad9ae44f9ee8d480948a10205c4 100644
--- a/src/thermoTools/derivedFvPatchFields/wallFunctions/sorptionWallFunction/sorptionWallFunctionFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/wallFunctions/sorptionWallFunction/sorptionWallFunctionFvPatchScalarField.C
@@ -405,11 +405,11 @@ void sorptionWallFunctionFvPatchScalarField::updateCoeffs()
 
 void sorptionWallFunctionFvPatchScalarField::write(Ostream& os) const
 {
-    fixedGradientFvPatchScalarField::write(os);
+    fixedGradientFvPatchField<scalar>::write(os);
 
     writeLocalEntries(os);
 
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermoTools/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C b/src/thermoTools/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C
index fb8df7ace95aaf2f034804dc8df83f3bef326ac5..0dd64ccb0e2f855ce12333e9411679b0e7cde58c 100644
--- a/src/thermoTools/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C
+++ b/src/thermoTools/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C
@@ -175,10 +175,10 @@ void Foam::wallHeatTransferFvPatchScalarField::updateCoeffs()
 
 void Foam::wallHeatTransferFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     Tinf_.writeEntry("Tinf", os);
     alphaWall_.writeEntry("alphaWall", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJump/energyJumpFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJump/energyJumpFvPatchScalarField.C
index 50952eb0e3451944085971d9db9da90b297100d9..8f3f0de5acf5ba70ccf5992ea125973b169cf18c 100644
--- a/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJump/energyJumpFvPatchScalarField.C
+++ b/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJump/energyJumpFvPatchScalarField.C
@@ -140,7 +140,7 @@ void Foam::energyJumpFvPatchScalarField::updateCoeffs()
 void Foam::energyJumpFvPatchScalarField::write(Ostream& os) const
 {
     fixedJumpFvPatchField<scalar>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJumpAMI/energyJumpAMIFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJumpAMI/energyJumpAMIFvPatchScalarField.C
index 0ff842683ab628b4cad4a1eb17f718784d2d6f50..4e85bb0a002792f80d9d3f5acaa8686d2823b61f 100644
--- a/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJumpAMI/energyJumpAMIFvPatchScalarField.C
+++ b/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJumpAMI/energyJumpAMIFvPatchScalarField.C
@@ -138,7 +138,7 @@ void Foam::energyJumpAMIFvPatchScalarField::updateCoeffs()
 void Foam::energyJumpAMIFvPatchScalarField::write(Ostream& os) const
 {
     fixedJumpAMIFvPatchField<scalar>::write(os);
-    this->writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.C
index 75192df26660776a69a522f83806ffe887f7cb79..6d1a541014f464d4a861b59f83a4a872fa06fff0 100644
--- a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.C
+++ b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.C
@@ -121,8 +121,8 @@ void Foam::gradientEnergyFvPatchScalarField::updateCoeffs()
 
 void Foam::gradientEnergyFvPatchScalarField::write(Ostream& os) const
 {
-    fixedGradientFvPatchScalarField::write(os);
-    this->writeEntry("value", os);
+    fixedGradientFvPatchField<scalar>::write(os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiation/MarshakRadiationFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiation/MarshakRadiationFvPatchScalarField.C
index 27f4bea985b800e762bdc25957d3fce8ddace44b..7fce1ae957a2ce216cae0bee3199781d4f759288 100644
--- a/src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiation/MarshakRadiationFvPatchScalarField.C
+++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiation/MarshakRadiationFvPatchScalarField.C
@@ -168,7 +168,7 @@ void Foam::radiation::MarshakRadiationFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    mixedFvPatchScalarField::write(os);
+    mixedFvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("T", "T", TName_);
 }
 
diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiationFixedTemperature/MarshakRadiationFixedTemperatureFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiationFixedTemperature/MarshakRadiationFixedTemperatureFvPatchScalarField.C
index 53a3e74fbf81b9d9d31869471f5624be983f1bcf..6cd7f1e5e8389a69180d967f776c1a7206ed8fa5 100644
--- a/src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiationFixedTemperature/MarshakRadiationFixedTemperatureFvPatchScalarField.C
+++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiationFixedTemperature/MarshakRadiationFixedTemperatureFvPatchScalarField.C
@@ -188,7 +188,7 @@ void Foam::radiation::MarshakRadiationFixedTemperatureFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    mixedFvPatchScalarField::write(os);
+    mixedFvPatchField<scalar>::write(os);
     Trad_.writeEntry("Trad", os);
 }
 
diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C
index b97fffa818481781f4870819fa6696c66b0685fa..3257b4de806263924c657cd98cd5267280b56336 100644
--- a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C
+++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C
@@ -373,7 +373,7 @@ void Foam::radiation::greyDiffusiveRadiationMixedFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    mixedFvPatchScalarField::write(os);
+    mixedFvPatchField<scalar>::write(os);
     os.writeEntryIfDifferent<word>("T", "T", TName_);
     os.writeEntryIfDifferent<scalar>("qRadExt", Zero, qRadExt_);
     os.writeEntryIfDifferent<vector>("qRadExtDir", Zero, qRadExtDir_);
diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C
index 614bb8b5734697bd2f7ee5b0997cefc96b1b5752..f0548c186a23d5e38c2903eb044367e6bd16eaab 100644
--- a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C
+++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C
@@ -199,7 +199,7 @@ write
     Ostream& os
 ) const
 {
-    fixedValueFvPatchScalarField::write(os);
+    fixedValueFvPatchField<scalar>::write(os);
     qro_.writeEntry("qro", os);
 }
 
diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C
index a0d90058d50c96b0ae52e557221f615a68717c82..9ead8ee5c8ab849f7a0c935491b15719f61d311f 100644
--- a/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C
+++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C
@@ -305,7 +305,7 @@ void Foam::radiation::wideBandDiffusiveRadiationMixedFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    mixedFvPatchScalarField::write(os);
+    mixedFvPatchField<scalar>::write(os);
 }
 
 
diff --git a/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/enthalpySorption/enthalpySorptionFvPatchScalarField.C b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/enthalpySorption/enthalpySorptionFvPatchScalarField.C
index 7cc73bc526e1e7a38a43c32fb1c37c5fb62b3ec6..8762e826767444408da26084704c6dba83169642 100644
--- a/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/enthalpySorption/enthalpySorptionFvPatchScalarField.C
+++ b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/enthalpySorption/enthalpySorptionFvPatchScalarField.C
@@ -304,7 +304,7 @@ void Foam::enthalpySorptionFvPatchScalarField::updateCoeffs()
 
 void Foam::enthalpySorptionFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
 
     os.writeEntry("enthalpyModel", enthalpyModelTypeNames[enthalpyModel_]);
 
@@ -323,7 +323,7 @@ void Foam::enthalpySorptionFvPatchScalarField::write(Ostream& os) const
 
     dhdt_.writeEntry("dhdt", os);
 
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/speciesSorption/speciesSorptionFvPatchScalarField.C b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/speciesSorption/speciesSorptionFvPatchScalarField.C
index 7b1f9c7cd0a665b6779588745d6934918623f401..68eb91f02dbf6efd81a617977ff134b90f101b74 100644
--- a/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/speciesSorption/speciesSorptionFvPatchScalarField.C
+++ b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/speciesSorption/speciesSorptionFvPatchScalarField.C
@@ -417,7 +417,7 @@ void Foam::speciesSorptionFvPatchScalarField::updateCoeffs()
 
 void Foam::speciesSorptionFvPatchScalarField::write(Ostream& os) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
 
     os.writeEntry
     (
@@ -440,7 +440,7 @@ void Foam::speciesSorptionFvPatchScalarField::write(Ostream& os) const
     mass_.writeEntry("mass", os);
     os.writeEntryIfDifferent<word>("p", "p", pName_);
 
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/transportModels/interfaceProperties/alphaContactAngle/alphaContactAngleTwoPhaseFvPatchScalarField.C b/src/transportModels/interfaceProperties/alphaContactAngle/alphaContactAngleTwoPhaseFvPatchScalarField.C
index 9a8e306c785725aa62cb61290d1faef8520fb7f2..580b4e73109de3878bc276e527b63defb56e2da8 100644
--- a/src/transportModels/interfaceProperties/alphaContactAngle/alphaContactAngleTwoPhaseFvPatchScalarField.C
+++ b/src/transportModels/interfaceProperties/alphaContactAngle/alphaContactAngleTwoPhaseFvPatchScalarField.C
@@ -159,7 +159,7 @@ void Foam::alphaContactAngleTwoPhaseFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fixedGradientFvPatchScalarField::write(os);
+    fixedGradientFvPatchField<scalar>::write(os);
     os.writeEntry("limit", limitControlNames_[limit_]);
 }
 
diff --git a/src/transportModels/twoPhaseProperties/alphaContactAngle/constantAlphaContactAngle/constantAlphaContactAngleFvPatchScalarField.C b/src/transportModels/twoPhaseProperties/alphaContactAngle/constantAlphaContactAngle/constantAlphaContactAngleFvPatchScalarField.C
index 473f4acc95272393f1df63d4f1c49ea3c79fd7d3..7e1c16b5020c2a26c97b84d71878084720118940 100644
--- a/src/transportModels/twoPhaseProperties/alphaContactAngle/constantAlphaContactAngle/constantAlphaContactAngleFvPatchScalarField.C
+++ b/src/transportModels/twoPhaseProperties/alphaContactAngle/constantAlphaContactAngle/constantAlphaContactAngleFvPatchScalarField.C
@@ -117,7 +117,7 @@ void Foam::constantAlphaContactAngleFvPatchScalarField::write
 {
     alphaContactAngleTwoPhaseFvPatchScalarField::write(os);
     os.writeEntry("theta0", theta0_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/transportModels/twoPhaseProperties/alphaContactAngle/dynamicAlphaContactAngle/dynamicAlphaContactAngleFvPatchScalarField.C b/src/transportModels/twoPhaseProperties/alphaContactAngle/dynamicAlphaContactAngle/dynamicAlphaContactAngleFvPatchScalarField.C
index 0997a7cd49dc4fb5d840873837a354507e4626e2..7f61ba30b07d9202fe33e2a53c11105af37525fe 100644
--- a/src/transportModels/twoPhaseProperties/alphaContactAngle/dynamicAlphaContactAngle/dynamicAlphaContactAngleFvPatchScalarField.C
+++ b/src/transportModels/twoPhaseProperties/alphaContactAngle/dynamicAlphaContactAngle/dynamicAlphaContactAngleFvPatchScalarField.C
@@ -153,7 +153,7 @@ void Foam::dynamicAlphaContactAngleFvPatchScalarField::write(Ostream& os) const
     os.writeEntry("uTheta", uTheta_);
     os.writeEntry("thetaA", thetaA_);
     os.writeEntry("thetaR", thetaR_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.C b/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.C
index b748264df62b51124e7fd7695425b54b407d6e08..1b46c9c63dd776296fc47ff55c4731cb44f385c1 100644
--- a/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.C
+++ b/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.C
@@ -126,7 +126,7 @@ void Foam::temperatureDependentAlphaContactAngleFvPatchScalarField::write
     alphaContactAngleTwoPhaseFvPatchScalarField::write(os);
     os.writeEntryIfDifferent<word>("T", "T", TName_);
     theta0_->writeData(os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/transportModels/twoPhaseProperties/alphaContactAngle/timeVaryingAlphaContactAngle/timeVaryingAlphaContactAngleFvPatchScalarField.C b/src/transportModels/twoPhaseProperties/alphaContactAngle/timeVaryingAlphaContactAngle/timeVaryingAlphaContactAngleFvPatchScalarField.C
index e83e93461b114a9a56c60483bc57bc16f267445c..e0344b0b8650ab3a340cf07df5ba377ab2c60c98 100644
--- a/src/transportModels/twoPhaseProperties/alphaContactAngle/timeVaryingAlphaContactAngle/timeVaryingAlphaContactAngleFvPatchScalarField.C
+++ b/src/transportModels/twoPhaseProperties/alphaContactAngle/timeVaryingAlphaContactAngle/timeVaryingAlphaContactAngleFvPatchScalarField.C
@@ -138,7 +138,7 @@ void Foam::timeVaryingAlphaContactAngleFvPatchScalarField::write
     os.writeEntry("thetaT0", thetaT0_);
     os.writeEntry("te", te_);
     os.writeEntry("thetaTe", thetaTe_);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/transportModels/twoPhaseProperties/alphaFixedPressure/alphaFixedPressureFvPatchScalarField.C b/src/transportModels/twoPhaseProperties/alphaFixedPressure/alphaFixedPressureFvPatchScalarField.C
index a0aa069ae1b0f3db3e1f6f108d0907abb31cdeb0..55709d97ef06988a663a777599a49299f9697d44 100644
--- a/src/transportModels/twoPhaseProperties/alphaFixedPressure/alphaFixedPressureFvPatchScalarField.C
+++ b/src/transportModels/twoPhaseProperties/alphaFixedPressure/alphaFixedPressureFvPatchScalarField.C
@@ -159,9 +159,9 @@ void Foam::alphaFixedPressureFvPatchScalarField::write
     Ostream& os
 ) const
 {
-    fvPatchScalarField::write(os);
+    fvPatchField<scalar>::write(os);
     p_.writeEntry("p", os);
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/waveModels/derivedFvPatchFields/waveAlpha/waveAlphaFvPatchScalarField.C b/src/waveModels/derivedFvPatchFields/waveAlpha/waveAlphaFvPatchScalarField.C
index 257ad4f852263b49d7ef90df94d7f7932debc905..a974fe80b55acc3e983f6a78bd111df5e1fb2f74 100644
--- a/src/waveModels/derivedFvPatchFields/waveAlpha/waveAlphaFvPatchScalarField.C
+++ b/src/waveModels/derivedFvPatchFields/waveAlpha/waveAlphaFvPatchScalarField.C
@@ -125,7 +125,7 @@ void Foam::waveAlphaFvPatchScalarField::write(Ostream& os) const
 
     os.writeEntry("waveDictName", waveDictName_);
 
-    writeEntry("value", os);
+    fvPatchField<scalar>::writeValueEntry(os);
 }
 
 
diff --git a/src/waveModels/derivedFvPatchFields/waveVelocity/waveVelocityFvPatchVectorField.C b/src/waveModels/derivedFvPatchFields/waveVelocity/waveVelocityFvPatchVectorField.C
index 66b6b9d6a03c6204cdc4017806f645cf553f5d41..ec40b898190835f6a002a222e10425582d974ae0 100644
--- a/src/waveModels/derivedFvPatchFields/waveVelocity/waveVelocityFvPatchVectorField.C
+++ b/src/waveModels/derivedFvPatchFields/waveVelocity/waveVelocityFvPatchVectorField.C
@@ -125,7 +125,7 @@ void Foam::waveVelocityFvPatchVectorField::write(Ostream& os) const
 
     os.writeEntry("waveDictName", waveDictName_);
 
-    writeEntry("value", os);
+    fvPatchField<vector>::writeValueEntry(os);
 }
 
 
diff --git a/src/waveModels/derivedPointPatchFields/waveMaker/waveMakerPointPatchVectorField.C b/src/waveModels/derivedPointPatchFields/waveMaker/waveMakerPointPatchVectorField.C
index 481d88d98f5176d43ab213a3a2414bbc5468127d..be8cbfb7c3012e35a6ae7b622f0e0e51b54f45c6 100644
--- a/src/waveModels/derivedPointPatchFields/waveMaker/waveMakerPointPatchVectorField.C
+++ b/src/waveModels/derivedPointPatchFields/waveMaker/waveMakerPointPatchVectorField.C
@@ -460,7 +460,7 @@ void Foam::waveMakerPointPatchVectorField::write(Ostream& os) const
     os.writeEntry("rampTime", rampTime_);
     os.writeEntry("secondOrder", secondOrder_);
     os.writeEntry("nPaddle", nPaddle_);
-    writeEntry("value", os);
+    this->writeValueEntry(os);
 }
 
 
diff --git a/src/waveModels/derivedPointPatchFields/waveMaker/waveMakerPointPatchVectorField.H b/src/waveModels/derivedPointPatchFields/waveMaker/waveMakerPointPatchVectorField.H
index 8ccff2d454fc0babf8977a930803388b481cda2c..e71e9044efaac5fbb18facd2d89f2433b655d4e5 100644
--- a/src/waveModels/derivedPointPatchFields/waveMaker/waveMakerPointPatchVectorField.H
+++ b/src/waveModels/derivedPointPatchFields/waveMaker/waveMakerPointPatchVectorField.H
@@ -239,7 +239,7 @@ public:
             const dictionary&
         );
 
-        //- Construct by mapping given patchField<vector> onto a new patch
+        //- Construct by mapping given patch field onto a new patch
         waveMakerPointPatchVectorField
         (
             const waveMakerPointPatchVectorField&,