diff --git a/applications/solvers/heatTransfer/buoyantFoam/createFields.H b/applications/solvers/heatTransfer/buoyantFoam/createFields.H
index 99cb78bcacbf2c8ad175430fdc988a98a9f6c747..03f021f08db0acf3b45da4cef29253c986e77f38 100644
--- a/applications/solvers/heatTransfer/buoyantFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantFoam/createFields.H
@@ -67,10 +67,14 @@
         (
             "pd",
             runTime.timeName(),
-            mesh
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
         ),
-        p - rho*gh - pRef,
-        p.boundaryField().types()
+        mesh
     );
 
+    p = pd + rho*gh + pRef;
+    thermo->correct();
+
     dimensionedScalar initialMass = fvc::domainIntegrate(rho);
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H
index 1bdb4d874b86e6792ea858a186b385388ae6e3ec..84d260b9beea03a258fdb4e4412ad3ee364e3ff0 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H
@@ -64,12 +64,16 @@
         (
             "pd",
             runTime.timeName(),
-            mesh
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
         ),
-        p - rho*gh - pRef,
-        p.boundaryField().types()
+        mesh
     );
 
+    p = pd + rho*gh + pRef;
+    thermo->correct();
+
 
     label pdRefCell = 0;
     scalar pdRefValue = 0.0;
diff --git a/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/createFields.H b/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/createFields.H
index 0cdc89f1175ee348bb66bb5be46b839c4fbe3fd7..ceab125f146af5946236d1777c6c08d84167a686 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/createFields.H
@@ -65,12 +65,16 @@
         (
             "pd",
             runTime.timeName(),
-            mesh
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
         ),
-        p - rho*gh - pRef,
-        p.boundaryField().types()
+        mesh
     );
 
+    p = pd + rho*gh + pRef;
+    thermo->correct();
+
 
     label pdRefCell = 0;
     scalar pdRefValue = 0.0;
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
index aec296a1b36138dc3c1dadb79197aa30a935dac4..903ec348b0d7e0dc29863be8607857c4173548f2 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
@@ -173,7 +173,7 @@
 
         Info<< "    Updating p from pd\n" << endl;
         thermof[i].p() == pdf[i] + rhof[i]*ghf[i] + pRef;
-
+        thermof[i].correct();
 
         initialMassf[i] = fvc::domainIntegrate(rhof[i]).value();
     }
diff --git a/applications/solvers/heatTransfer/lesBuoyantFoam/createFields.H b/applications/solvers/heatTransfer/lesBuoyantFoam/createFields.H
index 3fd85b36c5a20f77a5836d4dcd61fbe1d822ba80..bad19da4471fdc008bf8eb08a74d8e5fca0c3bba 100644
--- a/applications/solvers/heatTransfer/lesBuoyantFoam/createFields.H
+++ b/applications/solvers/heatTransfer/lesBuoyantFoam/createFields.H
@@ -37,7 +37,7 @@
         mesh
     );
 
-#   include "compressibleCreatePhi.H"
+    #include "compressibleCreatePhi.H"
 
 
     Info<< "Creating turbulence model\n" << endl;
@@ -69,7 +69,7 @@
         mesh
     );
 
-    //pd = p - rho*gh - pRef;
     p = pd + rho*gh + pRef;
+    thermo->correct();
 
     dimensionedScalar initialMass = fvc::domainIntegrate(rho);