diff --git a/src/postProcessing/functionObjects/IO/partialWrite/partialWriteTemplates.C b/src/postProcessing/functionObjects/IO/partialWrite/partialWriteTemplates.C
new file mode 100644
index 0000000000..56e0089313
--- /dev/null
+++ b/src/postProcessing/functionObjects/IO/partialWrite/partialWriteTemplates.C
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "partialWrite.H"
+#include "volFields.H"
+#include "surfaceFields.H"
+#include "Time.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+template
+void Foam::partialWrite::loadField
+(
+ const word& fieldName,
+ UPtrList >& vflds,
+ UPtrList >& sflds
+) const
+{
+ typedef GeometricField vfType;
+ typedef GeometricField sfType;
+
+ if (obr_.foundObject(fieldName))
+ {
+ if (debug)
+ {
+ Info<< "partialWrite : Field "
+ << fieldName << " found in database" << endl;
+ }
+
+ vfType& vField =
+ const_cast
+ (
+ obr_.lookupObject(fieldName)
+ );
+
+
+ const unsigned int sz = vflds.size();
+ vflds.setSize(sz + 1);
+ vflds.set(sz, &vField);
+ }
+ else if (obr_.foundObject(fieldName))
+ {
+ if (debug)
+ {
+ Info<< "partialWrite : Field " << fieldName
+ << " found in database" << endl;
+ }
+
+ sfType& sField =
+ const_cast
+ (
+ obr_.lookupObject(fieldName)
+ );
+
+
+ const unsigned int sz = sflds.size();
+ sflds.setSize(sz + 1);
+ sflds.set(sz, &sField);
+ }
+}
+
+
+template
+void Foam::partialWrite::changeWriteOptions
+(
+ UPtrList >& vflds,
+ UPtrList >& sflds,
+ const IOobject::writeOption wOption
+) const
+{
+ forAll(vflds , i)
+ {
+ vflds[i].writeOpt() = wOption;
+ }
+
+ forAll(sflds , i)
+ {
+ sflds[i].writeOpt() = wOption;
+ }
+}
+
+
+// ************************************************************************* //