diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.C b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.C
index 9359883d01735b0feed401d124e29d15fb41e324..53ce51cc13a30e58ed5ce7fe5f218c1932e3570d 100644
--- a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.C
+++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.C
@@ -81,14 +81,20 @@ DimensionedField<Type, GeoMesh>::DimensionedField
 (
     const IOobject& io,
     const Mesh& mesh,
-    const dimensionSet& dims
+    const dimensionSet& dims,
+    const bool checkIOFlags
 )
 :
     regIOobject(io),
     Field<Type>(GeoMesh::size(mesh)),
     mesh_(mesh),
     dimensions_(dims)
-{}
+{
+    if (checkIOFlags)
+    {
+        readIfPresent();
+    }
+}
 
 
 template<class Type, class GeoMesh>
@@ -96,14 +102,20 @@ DimensionedField<Type, GeoMesh>::DimensionedField
 (
     const IOobject& io,
     const Mesh& mesh,
-    const dimensioned<Type>& dt
+    const dimensioned<Type>& dt,
+    const bool checkIOFlags
 )
 :
     regIOobject(io),
     Field<Type>(GeoMesh::size(mesh), dt.value()),
     mesh_(mesh),
     dimensions_(dt.dimensions())
-{}
+{
+    if (checkIOFlags)
+    {
+        readIfPresent();
+    }
+}
 
 
 template<class Type, class GeoMesh>
diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.H b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.H
index 621114c7166156622a64f27fa92dc50ca4c2ccc1..4342d3a41db6e64003d178f3f1a656b370bb156d 100644
--- a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.H
+++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.H
@@ -94,6 +94,11 @@ private:
         dimensionSet dimensions_;
 
 
+    // Private Member Functions
+
+        void readIfPresent(const word& fieldDictEntry = "value");
+
+
 public:
 
     //- Runtime type information
@@ -122,7 +127,8 @@ public:
         (
             const IOobject&,
             const Mesh& mesh,
-            const dimensionSet&
+            const dimensionSet&,
+            const bool checkIOFlags = true
         );
 
         //- Construct from components
@@ -130,7 +136,8 @@ public:
         (
             const IOobject&,
             const Mesh& mesh,
-            const dimensioned<Type>&
+            const dimensioned<Type>&,
+            const bool checkIOFlags = true
         );
 
         //- Construct from Istream
@@ -141,12 +148,6 @@ public:
             const word& fieldDictEntry="value"
         );
 
-        void readField
-        (
-            const dictionary& fieldDict,
-            const word& fieldDictEntry="value"
-        );
-
         //- Construct as copy
         DimensionedField
         (
@@ -222,6 +223,12 @@ public:
 
     // Member Functions
 
+        void readField
+        (
+            const dictionary& fieldDict,
+            const word& fieldDictEntry = "value"
+        );
+
         //- Return mesh
         inline const Mesh& mesh() const;
 
diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldIO.C b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldIO.C
index d5f84f59ce7cf6a38da70be20f3133d6c44285ac..86be3e985e0507c1b58353f3845cf4e57ed5adfa 100644
--- a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldIO.C
+++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldIO.C
@@ -47,6 +47,21 @@ void DimensionedField<Type, GeoMesh>::readField
 }
 
 
+template<class Type, class GeoMesh>
+void DimensionedField<Type, GeoMesh>::readIfPresent(const word& fieldDictEntry)
+{
+    if
+    (
+        (this->headerOk() && this->readOpt() == IOobject::READ_IF_PRESENT)
+     || this->readOpt() == IOobject::MUST_READ
+     || this->readOpt() == IOobject::MUST_READ_IF_MODIFIED
+    )
+    {
+        readField(dictionary(readStream(typeName)), fieldDictEntry);
+    }
+}
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class Type, class GeoMesh>
diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C
index fd86f6bd8c4dbc6ed0364c3908a4c222b19c0167..b77b68d1e88d7e52e412b9e947bc7330dec457c6 100644
--- a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C
+++ b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C
@@ -209,7 +209,7 @@ Foam::GeometricField<Type, PatchField, GeoMesh>::GeometricField
     const word& patchFieldType
 )
 :
-    DimensionedField<Type, GeoMesh>(io, mesh, ds),
+    DimensionedField<Type, GeoMesh>(io, mesh, ds, false),
     timeIndex_(this->time().timeIndex()),
     field0Ptr_(NULL),
     fieldPrevIterPtr_(NULL),
@@ -240,7 +240,7 @@ Foam::GeometricField<Type, PatchField, GeoMesh>::GeometricField
     const wordList& actualPatchTypes
 )
 :
-    DimensionedField<Type, GeoMesh>(io, mesh, ds),
+    DimensionedField<Type, GeoMesh>(io, mesh, ds, false),
     timeIndex_(this->time().timeIndex()),
     field0Ptr_(NULL),
     fieldPrevIterPtr_(NULL),
@@ -267,7 +267,7 @@ Foam::GeometricField<Type, PatchField, GeoMesh>::GeometricField
     const word& patchFieldType
 )
 :
-    DimensionedField<Type, GeoMesh>(io, mesh, dt),
+    DimensionedField<Type, GeoMesh>(io, mesh, dt, false),
     timeIndex_(this->time().timeIndex()),
     field0Ptr_(NULL),
     fieldPrevIterPtr_(NULL),
@@ -297,7 +297,7 @@ Foam::GeometricField<Type, PatchField, GeoMesh>::GeometricField
     const wordList& actualPatchTypes
 )
 :
-    DimensionedField<Type, GeoMesh>(io, mesh, dt),
+    DimensionedField<Type, GeoMesh>(io, mesh, dt, false),
     timeIndex_(this->time().timeIndex()),
     field0Ptr_(NULL),
     fieldPrevIterPtr_(NULL),
@@ -327,7 +327,7 @@ Foam::GeometricField<Type, PatchField, GeoMesh>::GeometricField
     const PtrList<PatchField<Type> >& ptfl
 )
 :
-    DimensionedField<Type, GeoMesh>(io, mesh, ds, iField),
+    DimensionedField<Type, GeoMesh>(io, mesh, ds, iField, false),
     timeIndex_(this->time().timeIndex()),
     field0Ptr_(NULL),
     fieldPrevIterPtr_(NULL),
@@ -351,7 +351,7 @@ Foam::GeometricField<Type, PatchField, GeoMesh>::GeometricField
     const Mesh& mesh
 )
 :
-    DimensionedField<Type, GeoMesh>(io, mesh, dimless),
+    DimensionedField<Type, GeoMesh>(io, mesh, dimless, false),
     timeIndex_(this->time().timeIndex()),
     field0Ptr_(NULL),
     fieldPrevIterPtr_(NULL),
@@ -392,7 +392,7 @@ Foam::GeometricField<Type, PatchField, GeoMesh>::GeometricField
     Istream& is
 )
 :
-    DimensionedField<Type, GeoMesh>(io, mesh, dimless),
+    DimensionedField<Type, GeoMesh>(io, mesh, dimless, false),
     timeIndex_(this->time().timeIndex()),
     field0Ptr_(NULL),
     fieldPrevIterPtr_(NULL),
@@ -431,7 +431,7 @@ Foam::GeometricField<Type, PatchField, GeoMesh>::GeometricField
     const dictionary& dict
 )
 :
-    DimensionedField<Type, GeoMesh>(io, mesh, dimless),
+    DimensionedField<Type, GeoMesh>(io, mesh, dimless, false),
     timeIndex_(this->time().timeIndex()),
     field0Ptr_(NULL),
     fieldPrevIterPtr_(NULL),