diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createMeshesPostProcess.H b/applications/solvers/lagrangian/reactingParcelFoam/createMeshesPostProcess.H
new file mode 100644
index 0000000000000000000000000000000000000000..a69a6f87ce3aa698c019821fcae17d71478abf48
--- /dev/null
+++ b/applications/solvers/lagrangian/reactingParcelFoam/createMeshesPostProcess.H
@@ -0,0 +1,28 @@
+#include "createMesh.H"
+
+IOdictionary filmDict
+(
+    IOobject
+    (
+        "surfaceFilmProperties",
+        runTime.constant(),
+        runTime,
+        IOobject::MUST_READ,
+        IOobject::NO_WRITE,
+        false
+    )
+);
+
+const word filmRegionName = filmDict.get<word>("region");
+
+fvMesh filmMesh
+(
+    IOobject
+    (
+        filmRegionName,
+        runTime.timeName(),
+        runTime,
+        IOobject::MUST_READ
+    )
+);
+
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
index 38dd7334ba4ababf4ea34abf292857a330c08ff2..9e912ce9670460a5576525bd1ee28097fc8b17dc 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
+++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
@@ -70,6 +70,7 @@ int main(int argc, char *argv[])
         " and surface film modelling."
     );
 
+    #define CREATE_MESH createMeshesPostProcess.H
     #include "postProcess.H"
 
     #include "addCheckCaseOptions.H"
diff --git a/src/regionModels/regionModel/regionModel/regionModel.C b/src/regionModels/regionModel/regionModel/regionModel.C
index d7d0d7c4f211af0174fda2c9f5facf5406e89865..0885dd53f6fa50c9dfaf5ebd1cc4ef4fca664b73 100644
--- a/src/regionModels/regionModel/regionModel/regionModel.C
+++ b/src/regionModels/regionModel/regionModel/regionModel.C
@@ -46,11 +46,9 @@ namespace regionModels
 
 void Foam::regionModels::regionModel::constructMeshObjects()
 {
-    // construct region mesh
     if (!time_.foundObject<fvMesh>(regionName_))
     {
-        regionMeshPtr_.reset
-        (
+        fvMesh* regionMeshPtr =
             new fvMesh
             (
                 IOobject
@@ -60,8 +58,9 @@ void Foam::regionModels::regionModel::constructMeshObjects()
                     time_,
                     IOobject::MUST_READ
                 )
-            )
-        );
+            );
+
+        regionMeshPtr->objectRegistry::store();
     }
 }
 
@@ -364,7 +363,6 @@ Foam::regionModels::regionModel::regionModel
     active_(false),
     infoOutput_(false),
     modelName_("none"),
-    regionMeshPtr_(nullptr),
     coeffs_(dictionary::null),
     outputPropertiesPtr_(nullptr),
     primaryPatchIDs_(),
@@ -400,7 +398,6 @@ Foam::regionModels::regionModel::regionModel
     active_(get<Switch>("active")),
     infoOutput_(true),
     modelName_(modelName),
-    regionMeshPtr_(nullptr),
     coeffs_(subOrEmptyDict(modelName + "Coeffs")),
     outputPropertiesPtr_(nullptr),
     primaryPatchIDs_(),
@@ -448,7 +445,6 @@ Foam::regionModels::regionModel::regionModel
     active_(dict.get<Switch>("active")),
     infoOutput_(false),
     modelName_(modelName),
-    regionMeshPtr_(nullptr),
     coeffs_(dict.subOrEmptyDict(modelName + "Coeffs")),
     outputPropertiesPtr_(nullptr),
     primaryPatchIDs_(),
@@ -469,12 +465,6 @@ Foam::regionModels::regionModel::regionModel
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::regionModels::regionModel::~regionModel()
-{}
-
-
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 void Foam::regionModels::regionModel::evolve()
diff --git a/src/regionModels/regionModel/regionModel/regionModel.H b/src/regionModels/regionModel/regionModel/regionModel.H
index 5d846dc42ffe869fbc2d540888422a8a671462dc..f237810fad39818c26171633e2eeed7ac1addff3 100644
--- a/src/regionModels/regionModel/regionModel/regionModel.H
+++ b/src/regionModels/regionModel/regionModel/regionModel.H
@@ -99,9 +99,6 @@ protected:
         //- Model name
         const word modelName_;
 
-        //- Pointer to the region mesh database
-        autoPtr<fvMesh> regionMeshPtr_;
-
         //- Model coefficients dictionary
         dictionary coeffs_;
 
@@ -185,7 +182,7 @@ public:
 
 
     //- Destructor
-    virtual ~regionModel();
+    virtual ~regionModel() = default;
 
 
     // Member Functions
diff --git a/src/regionModels/regionModel/regionModel/regionModelI.H b/src/regionModels/regionModel/regionModel/regionModelI.H
index afa1189f8dda63952a2c2fb77cb3c5e42272ef14..abd9a942833a374212236ea5cc8b23632b16fd87 100644
--- a/src/regionModels/regionModel/regionModel/regionModelI.H
+++ b/src/regionModels/regionModel/regionModel/regionModelI.H
@@ -62,19 +62,15 @@ inline const Foam::word& Foam::regionModels::regionModel::modelName() const
 
 inline const Foam::fvMesh& Foam::regionModels::regionModel::regionMesh() const
 {
-    const fvMesh* regionPtr = time_.findObject<fvMesh>(regionName_);
+    const fvMesh* regionPtr = time_.getObjectPtr<fvMesh>(regionName_);
 
-    if (regionPtr)
-    {
-        return *regionPtr;
-    }
-    else if (!regionMeshPtr_.valid())
+    if (!regionPtr)
     {
         FatalErrorInFunction
             << "Region mesh not available" << abort(FatalError);
     }
 
-    return *regionMeshPtr_;
+    return *regionPtr;
 }
 
 
@@ -82,17 +78,13 @@ inline Foam::fvMesh& Foam::regionModels::regionModel::regionMesh()
 {
     fvMesh* regionPtr = time_.getObjectPtr<fvMesh>(regionName_);
 
-    if (regionPtr)
-    {
-        return *regionPtr;
-    }
-    else if (!regionMeshPtr_.valid())
+    if (!regionPtr)
     {
         FatalErrorInFunction
             << "Region mesh not available" << abort(FatalError);
     }
 
-    return *regionMeshPtr_;
+    return *regionPtr;
 }