diff --git a/src/regionModels/surfaceFilmModels/submodels/subModelBase.H b/src/regionModels/surfaceFilmModels/submodels/subModelBase.H
index 1280fb11fd849f06446bbe65b4f852ec6bbffeb3..74a5fdbecea5cc09f2b52d4b15ace95c913c808b 100644
--- a/src/regionModels/surfaceFilmModels/submodels/subModelBase.H
+++ b/src/regionModels/surfaceFilmModels/submodels/subModelBase.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -99,11 +99,16 @@ public:
 
         // Access
 
+            virtual const word& type() const = 0;
+
             //- Return the reference to the owner surface film model
             inline const surfaceFilmModel& owner() const;
 
             //- Return the model coefficients dictionary
             inline const dictionary& coeffs() const;
+
+            template<class FilmType>
+            inline const FilmType& filmType() const;
 };
 
 
@@ -119,6 +124,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "subModelBaseTemplates.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/regionModels/surfaceFilmModels/submodels/subModelBaseTemplates.C b/src/regionModels/surfaceFilmModels/submodels/subModelBaseTemplates.C
new file mode 100644
index 0000000000000000000000000000000000000000..b7252b310a6d9ae2f07ecafb2f72934c7b4a5e1f
--- /dev/null
+++ b/src/regionModels/surfaceFilmModels/submodels/subModelBaseTemplates.C
@@ -0,0 +1,56 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+namespace Foam
+{
+namespace regionModels
+{
+namespace surfaceFilmModels
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+template<class FilmType>
+const FilmType& subModelBase::filmType() const
+{
+    if (!isA<FilmType>(owner_))
+    {
+        FatalErrorIn("FilmType& subModelBase::film() const")
+            << "Model " << type() << " requested film type "
+            << FilmType::typeName << " but film is type " << owner_.type()
+            << abort(FatalError);
+    }
+
+    return refCast<const FilmType>(owner_);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace surfaceFilmModels
+} // End namespace regionModels
+} // End namespace Foam
+
+// ************************************************************************* //