diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files
index 42be066ee2..d611ff0e53 100644
--- a/src/OpenFOAM/Make/files
+++ b/src/OpenFOAM/Make/files
@@ -503,6 +503,7 @@ $(mapPolyMesh)/faceMapper/faceMapper.C
$(mapPolyMesh)/cellMapper/cellMapper.C
$(mapPolyMesh)/mapDistribute/mapDistribute.C
$(mapPolyMesh)/mapDistribute/mapDistributePolyMesh.C
+$(mapPolyMesh)/mapDistribute/IOmapDistribute.C
$(mapPolyMesh)/mapAddedPolyMesh.C
PrimitivePatch = $(primitiveMesh)/PrimitivePatch
diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/IOmapDistribute.C b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/IOmapDistribute.C
new file mode 100644
index 0000000000..bb057b63f4
--- /dev/null
+++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/IOmapDistribute.C
@@ -0,0 +1,159 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2014 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 "IOmapDistribute.H"
+
+/* * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * */
+
+namespace Foam
+{
+ defineTypeNameAndDebug(IOmapDistribute, 0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::IOmapDistribute::IOmapDistribute(const IOobject& io)
+:
+ regIOobject(io)
+{
+ // Temporary warning
+ if (io.readOpt() == IOobject::MUST_READ_IF_MODIFIED)
+ {
+ WarningIn("IOmapDistribute::IOmapDistribute(const IOobject&)")
+ << "IOmapDistribute " << name()
+ << " constructed with IOobject::MUST_READ_IF_MODIFIED"
+ " but IOmapDistribute does not support automatic rereading."
+ << endl;
+ }
+
+ if
+ (
+ (
+ io.readOpt() == IOobject::MUST_READ
+ || io.readOpt() == IOobject::MUST_READ_IF_MODIFIED
+ )
+ || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
+ )
+ {
+ readStream(typeName) >> *this;
+ close();
+ }
+}
+
+
+Foam::IOmapDistribute::IOmapDistribute
+(
+ const IOobject& io,
+ const mapDistribute& map
+)
+:
+ regIOobject(io)
+{
+ // Temporary warning
+ if (io.readOpt() == IOobject::MUST_READ_IF_MODIFIED)
+ {
+ WarningIn("IOmapDistribute::IOmapDistribute(const IOobject&)")
+ << "IOmapDistribute " << name()
+ << " constructed with IOobject::MUST_READ_IF_MODIFIED"
+ " but IOmapDistribute does not support automatic rereading."
+ << endl;
+ }
+
+ if
+ (
+ (
+ io.readOpt() == IOobject::MUST_READ
+ || io.readOpt() == IOobject::MUST_READ_IF_MODIFIED
+ )
+ || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
+ )
+ {
+ readStream(typeName) >> *this;
+ close();
+ }
+ else
+ {
+ mapDistribute::operator=(map);
+ }
+}
+
+
+Foam::IOmapDistribute::IOmapDistribute
+(
+ const IOobject& io,
+ const Xfer& map
+)
+:
+ regIOobject(io)
+{
+ // Temporary warning
+ if (io.readOpt() == IOobject::MUST_READ_IF_MODIFIED)
+ {
+ WarningIn("IOmapDistribute::IOmapDistribute(const IOobject&)")
+ << "IOmapDistribute " << name()
+ << " constructed with IOobject::MUST_READ_IF_MODIFIED"
+ " but IOmapDistribute does not support automatic rereading."
+ << endl;
+ }
+
+ mapDistribute::transfer(map());
+
+ if
+ (
+ (
+ io.readOpt() == IOobject::MUST_READ
+ || io.readOpt() == IOobject::MUST_READ_IF_MODIFIED
+ )
+ || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
+ )
+ {
+ readStream(typeName) >> *this;
+ close();
+ }
+}
+
+
+// * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * * //
+
+Foam::IOmapDistribute::~IOmapDistribute()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+bool Foam::IOmapDistribute::readData(Istream& is)
+{
+ return (is >> *this).good();
+}
+
+
+bool Foam::IOmapDistribute::writeData(Ostream& os) const
+{
+ return (os << *this).good();
+}
+
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/IOmapDistribute.H b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/IOmapDistribute.H
new file mode 100644
index 0000000000..271fb062f5
--- /dev/null
+++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/IOmapDistribute.H
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2014 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 .
+
+Class
+ Foam::IOmapDistribute
+
+Description
+ IOmapDistribute is derived from mapDistribute and
+ IOobject to give the mapDistribute
+ automatic IO functionality via the objectRegistry.
+
+SourceFiles
+ IOmapDistribute.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IOmapDistribute_H
+#define IOmapDistribute_H
+
+#include "mapDistribute.H"
+#include "regIOobject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+ Class IOmapDistribute Declaration
+\*---------------------------------------------------------------------------*/
+
+class IOmapDistribute
+:
+ public regIOobject,
+ public mapDistribute
+{
+
+public:
+
+ //- Runtime type information
+ TypeName("mapDistribute");
+
+ // Constructors
+
+ //- Construct given an IOobject
+ IOmapDistribute(const IOobject&);
+
+ //- Construct given an IOobject and mapDistribute
+ IOmapDistribute(const IOobject&, const mapDistribute&);
+
+ //- Construct by transferring the mapDistribute contents
+ IOmapDistribute(const IOobject&, const Xfer&);
+
+
+ //- Destructor
+ virtual ~IOmapDistribute();
+
+
+ // Member functions
+
+ //- ReadData function required for regIOobject read operation
+ virtual bool readData(Istream&);
+
+ //- WriteData function required for regIOobject write operation
+ virtual bool writeData(Ostream&) const;
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.C b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.C
index de84240300..8feeefcffe 100644
--- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.C
+++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -1341,4 +1341,31 @@ void Foam::mapDistribute::operator=(const mapDistribute& rhs)
}
+// * * * * * * * * * * * * * * Istream Operator * * * * * * * * * * * * * * //
+
+Foam::Istream& Foam::operator>>(Istream& is, mapDistribute& map)
+{
+ is.fatalCheck("operator>>(Istream&, mapDistribute&)");
+
+ is >> map.constructSize_ >> map.subMap_ >> map.constructMap_
+ >> map.transformElements_ >> map.transformStart_;
+
+ return is;
+}
+
+
+// * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * * //
+
+Foam::Ostream& Foam::operator<<(Ostream& os, const mapDistribute& map)
+{
+ os << map.constructSize_ << token::NL
+ << map.subMap_ << token::NL
+ << map.constructMap_ << token::NL
+ << map.transformElements_ << token::NL
+ << map.transformStart_ << token::NL;
+
+ return os;
+}
+
+
// ************************************************************************* //
diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.H b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.H
index 96004c3e26..9495302726 100644
--- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.H
+++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -676,6 +676,15 @@ public:
void operator=(const mapDistribute&);
+
+ // IOstream operators
+
+ //- Read dictionary from Istream
+ friend Istream& operator>>(Istream&, mapDistribute&);
+
+ //- Write dictionary to Ostream
+ friend Ostream& operator<<(Ostream&, const mapDistribute&);
+
};