diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files
index 0318aa7e39..2ea9004636 100644
--- a/src/OpenFOAM/Make/files
+++ b/src/OpenFOAM/Make/files
@@ -74,9 +74,13 @@ containers/LinkedLists/linkTypes/DLListBase/DLListBase.C
primitiveLists = primitives/Lists
$(primitiveLists)/boolList.C
$(primitiveLists)/labelIOList.C
+$(primitiveLists)/labelListIOList.C
$(primitiveLists)/scalarList.C
$(primitiveLists)/scalarIOList.C
+$(primitiveLists)/scalarListIOList.C
$(primitiveLists)/vectorList.C
+$(primitiveLists)/vectorIOList.C
+$(primitiveLists)/vectorListIOList.C
$(primitiveLists)/sphericalTensorList.C
$(primitiveLists)/symmTensorList.C
$(primitiveLists)/tensorList.C
@@ -486,9 +490,12 @@ $(Fields)/symmTensorField/symmTensorField.C
$(Fields)/tensorField/tensorField.C
$(Fields)/complexFields/complexFields.C
-$(Fields)/labelField/labelIOField.C
+$(Fields)/labelField/labelIOField.
+$(Fields)/labelField/labelFieldIOField.C
$(Fields)/scalarField/scalarIOField.C
+$(Fields)/scalarField/scalarFieldIOField.C
$(Fields)/vectorField/vectorIOField.C
+$(Fields)/vectorField/vectorFieldIOField.C
$(Fields)/vector2DField/vector2DIOField.C
$(Fields)/sphericalTensorField/sphericalTensorIOField.C
$(Fields)/diagTensorField/diagTensorIOField.C
diff --git a/src/OpenFOAM/db/IOobjects/IOFieldField/IOFieldField.C b/src/OpenFOAM/db/IOobjects/IOFieldField/IOFieldField.C
new file mode 100644
index 0000000000..db16414701
--- /dev/null
+++ b/src/OpenFOAM/db/IOobjects/IOFieldField/IOFieldField.C
@@ -0,0 +1,289 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd.
+ \\/ 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 "IOFieldField.H"
+#include "labelList.H"
+
+// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
+
+template
+void Foam::IOFieldField::readFromStream()
+{
+ Istream& is = readStream(word::null);
+
+ if (headerClassName() == IOField::typeName)
+ {
+ is >> static_cast&>(*this);
+ close();
+ }
+ else if (headerClassName() == typeName)
+ {
+ is >> *this;
+ close();
+ }
+ else
+ {
+ FatalIOErrorIn
+ (
+ "IOFieldField::readFromStream()",
+ is
+ ) << "unexpected class name " << headerClassName()
+ << " expected " << typeName << " or " << IOField::typeName
+ << endl
+ << " while reading object " << name()
+ << exit(FatalIOError);
+ }
+}
+
+
+// * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * //
+
+template
+Foam::IOFieldField::IOFieldField(const IOobject& io)
+:
+ regIOobject(io)
+{
+ if
+ (
+ io.readOpt() == IOobject::MUST_READ
+ || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
+ )
+ {
+ readFromStream();
+ }
+}
+
+
+template
+Foam::IOFieldField::IOFieldField
+(
+ const IOobject& io,
+ const label size
+)
+:
+ regIOobject(io)
+{
+ if
+ (
+ io.readOpt() == IOobject::MUST_READ
+ || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
+ )
+ {
+ readFromStream();
+ }
+ else
+ {
+ Field::setSize(size);
+ }
+}
+
+
+template
+Foam::IOFieldField::IOFieldField
+(
+ const IOobject& io,
+ const Field& list
+)
+:
+ regIOobject(io)
+{
+ if
+ (
+ io.readOpt() == IOobject::MUST_READ
+ || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
+ )
+ {
+ readFromStream();
+ }
+ else
+ {
+ Field::operator=(list);
+ }
+}
+
+
+template
+Foam::IOFieldField::IOFieldField
+(
+ const IOobject& io,
+ const Xfer >& list
+)
+:
+ regIOobject(io)
+{
+ Field::transfer(list());
+
+ if
+ (
+ io.readOpt() == IOobject::MUST_READ
+ || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
+ )
+ {
+ readFromStream();
+ }
+}
+
+
+// * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * * //
+
+template
+Foam::IOFieldField::~IOFieldField()
+{}
+
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+template
+bool Foam::IOFieldField::writeObject
+(
+ IOstream::streamFormat fmt,
+ IOstream::versionNumber ver,
+ IOstream::compressionType cmp
+) const
+{
+ if (fmt == IOstream::ASCII)
+ {
+ // Change type to be non-compact format type
+ const word oldTypeName = typeName;
+
+ const_cast(typeName) = IOField::typeName;
+
+ bool good = regIOobject::writeObject(fmt, ver, cmp);
+
+ // Change type back
+ const_cast(typeName) = oldTypeName;
+
+ return good;
+ }
+ else
+ {
+ return regIOobject::writeObject(fmt, ver, cmp);
+ }
+}
+
+
+template
+bool Foam::IOFieldField::writeData(Ostream& os) const
+{
+ return (os << *this).good();
+}
+
+
+// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
+
+template
+void Foam::IOFieldField::operator=
+(
+ const IOFieldField& rhs
+)
+{
+ Field::operator=(rhs);
+}
+
+
+template
+void Foam::IOFieldField::operator=(const Field& rhs)
+{
+ Field::operator=(rhs);
+}
+
+
+// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
+
+template
+Foam::Istream& Foam::operator>>
+(
+ Foam::Istream& is,
+ Foam::IOFieldField& L
+)
+{
+ // Read compact
+ const labelList start(is);
+ const Field elems(is);
+
+ // Convert
+ L.setSize(start.size()-1);
+
+ forAll(L, i)
+ {
+ T& subField = L[i];
+
+ label index = start[i];
+ subField.setSize(start[i+1] - index);
+
+ forAll(subField, j)
+ {
+ subField[j] = elems[index++];
+ }
+ }
+
+ return is;
+}
+
+
+template
+Foam::Ostream& Foam::operator<<
+(
+ Foam::Ostream& os,
+ const Foam::IOFieldField& L
+)
+{
+ // Keep ascii writing same.
+ if (os.format() == IOstream::ASCII)
+ {
+ os << static_cast&>(L);
+ }
+ else
+ {
+ // Convert to compact format
+ labelList start(L.size()+1);
+
+ start[0] = 0;
+ for (label i = 1; i < start.size(); i++)
+ {
+ start[i] = start[i-1]+L[i-1].size();
+ }
+
+ Field elems(start[start.size()-1]);
+
+ label elemI = 0;
+ forAll(L, i)
+ {
+ const T& subField = L[i];
+
+ forAll(subField, j)
+ {
+ elems[elemI++] = subField[j];
+ }
+ }
+ os << start << elems;
+ }
+
+ return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/db/IOobjects/IOFieldField/IOFieldField.H b/src/OpenFOAM/db/IOobjects/IOFieldField/IOFieldField.H
new file mode 100644
index 0000000000..2174d2d469
--- /dev/null
+++ b/src/OpenFOAM/db/IOobjects/IOFieldField/IOFieldField.H
@@ -0,0 +1,155 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd.
+ \\/ 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::IOFieldField
+
+Description
+ A Field of objects of type \ with automated input and output.
+
+SourceFiles
+ IOFieldField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IOFieldField_H
+#define IOFieldField_H
+
+#include "IOField.H"
+#include "regIOobject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class Istream;
+class Ostream;
+
+// Forward declaration of friend functions and operators
+template class IOFieldField;
+
+template Istream& operator>>
+(
+ Istream&,
+ IOFieldField&
+);
+template Ostream& operator<<
+(
+ Ostream&,
+ const IOFieldField&
+);
+
+/*---------------------------------------------------------------------------*\
+ Class IOFieldField Declaration
+\*---------------------------------------------------------------------------*/
+
+template
+class IOFieldField
+:
+ public regIOobject,
+ public Field
+{
+ // Private Member Functions
+
+ //- Read according to header type
+ void readFromStream();
+
+public:
+
+ //- Runtime type information
+ TypeName("FieldField");
+
+
+ // Constructors
+
+ //- Construct from IOobject
+ IOFieldField(const IOobject&);
+
+ //- Construct from IOobject and size of IOFieldField
+ IOFieldField(const IOobject&, const label);
+
+ //- Construct from IOobject and a Field
+ IOFieldField(const IOobject&, const Field&);
+
+ //- Construct by transferring the Field contents
+ IOFieldField(const IOobject&, const Xfer >&);
+
+
+ // Destructor
+
+ virtual ~IOFieldField();
+
+
+ // Member functions
+
+ virtual bool writeObject
+ (
+ IOstream::streamFormat,
+ IOstream::versionNumber,
+ IOstream::compressionType
+ ) const;
+
+ virtual bool writeData(Ostream&) const;
+
+
+ // Member operators
+
+ void operator=(const IOFieldField&);
+
+ void operator=(const Field&);
+
+
+ // IOstream operators
+
+ //- Read Field from Istream, discarding contents of existing Field.
+ friend Istream& operator>>
+ (
+ Istream&,
+ IOFieldField&
+ );
+
+ // Write Field to Ostream.
+ friend Ostream& operator<<
+ (
+ Ostream&,
+ const IOFieldField&
+ );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+# include "IOFieldField.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/db/IOobjects/IOListList/IOListList.C b/src/OpenFOAM/db/IOobjects/IOListList/IOListList.C
new file mode 100644
index 0000000000..0f1b320195
--- /dev/null
+++ b/src/OpenFOAM/db/IOobjects/IOListList/IOListList.C
@@ -0,0 +1,285 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd.
+ \\/ 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 "IOListList.H"
+#include "labelList.H"
+
+// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
+
+template
+void Foam::IOListList::readFromStream()
+{
+ Istream& is = readStream(word::null);
+
+ if (headerClassName() == IOList::typeName)
+ {
+ is >> static_cast&>(*this);
+ close();
+ }
+ else if (headerClassName() == typeName)
+ {
+ is >> *this;
+ close();
+ }
+ else
+ {
+ FatalIOErrorIn
+ (
+ "IOListList::readFromStream()",
+ is
+ ) << "unexpected class name " << headerClassName()
+ << " expected " << typeName << " or " << IOList::typeName
+ << endl
+ << " while reading object " << name()
+ << exit(FatalIOError);
+ }
+}
+
+
+// * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * //
+
+template
+Foam::IOListList::IOListList(const IOobject& io)
+:
+ regIOobject(io)
+{
+ if
+ (
+ io.readOpt() == IOobject::MUST_READ
+ || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
+ )
+ {
+ readFromStream();
+ }
+}
+
+
+template
+Foam::IOListList::IOListList(const IOobject& io, const label size)
+:
+ regIOobject(io)
+{
+ if
+ (
+ io.readOpt() == IOobject::MUST_READ
+ || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
+ )
+ {
+ readFromStream();
+ }
+ else
+ {
+ List::setSize(size);
+ }
+}
+
+
+template
+Foam::IOListList::IOListList
+(
+ const IOobject& io,
+ const List& list
+)
+:
+ regIOobject(io)
+{
+ if
+ (
+ io.readOpt() == IOobject::MUST_READ
+ || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
+ )
+ {
+ readFromStream();
+ }
+ else
+ {
+ List::operator=(list);
+ }
+}
+
+
+template
+Foam::IOListList::IOListList
+(
+ const IOobject& io,
+ const Xfer >& list
+)
+:
+ regIOobject(io)
+{
+ List::transfer(list());
+
+ if
+ (
+ io.readOpt() == IOobject::MUST_READ
+ || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
+ )
+ {
+ readFromStream();
+ }
+}
+
+
+// * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * * //
+
+template
+Foam::IOListList::~IOListList()
+{}
+
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+template
+bool Foam::IOListList::writeObject
+(
+ IOstream::streamFormat fmt,
+ IOstream::versionNumber ver,
+ IOstream::compressionType cmp
+) const
+{
+ if (fmt == IOstream::ASCII)
+ {
+ // Change type to be non-compact format type
+ const word oldTypeName = typeName;
+
+ const_cast(typeName) = IOList::typeName;
+
+ bool good = regIOobject::writeObject(fmt, ver, cmp);
+
+ // Change type back
+ const_cast(typeName) = oldTypeName;
+
+ return good;
+ }
+ else
+ {
+ return regIOobject::writeObject(fmt, ver, cmp);
+ }
+}
+
+
+template
+bool Foam::IOListList::writeData(Ostream& os) const
+{
+ return (os << *this).good();
+}
+
+
+// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
+
+template
+void Foam::IOListList::operator=
+(
+ const IOListList& rhs
+)
+{
+ List::operator=(rhs);
+}
+
+
+template
+void Foam::IOListList::operator=(const List& rhs)
+{
+ List::operator=(rhs);
+}
+
+
+// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
+
+template
+Foam::Istream& Foam::operator>>
+(
+ Foam::Istream& is,
+ Foam::IOListList& L
+)
+{
+ // Read compact
+ const labelList start(is);
+ const List elems(is);
+
+ // Convert
+ L.setSize(start.size()-1);
+
+ forAll(L, i)
+ {
+ T& subList = L[i];
+
+ label index = start[i];
+ subList.setSize(start[i+1] - index);
+
+ forAll(subList, j)
+ {
+ subList[j] = elems[index++];
+ }
+ }
+
+ return is;
+}
+
+
+template
+Foam::Ostream& Foam::operator<<
+(
+ Foam::Ostream& os,
+ const Foam::IOListList& L
+)
+{
+ // Keep ascii writing same.
+ if (os.format() == IOstream::ASCII)
+ {
+ os << static_cast&>(L);
+ }
+ else
+ {
+ // Convert to compact format
+ labelList start(L.size()+1);
+
+ start[0] = 0;
+ for (label i = 1; i < start.size(); i++)
+ {
+ start[i] = start[i-1]+L[i-1].size();
+ }
+
+ List elems(start[start.size()-1]);
+
+ label elemI = 0;
+ forAll(L, i)
+ {
+ const T& subList = L[i];
+
+ forAll(subList, j)
+ {
+ elems[elemI++] = subList[j];
+ }
+ }
+ os << start << elems;
+ }
+
+ return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/db/IOobjects/IOListList/IOListList.H b/src/OpenFOAM/db/IOobjects/IOListList/IOListList.H
new file mode 100644
index 0000000000..b5bd103183
--- /dev/null
+++ b/src/OpenFOAM/db/IOobjects/IOListList/IOListList.H
@@ -0,0 +1,155 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd.
+ \\/ 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::IOListList
+
+Description
+ A List of objects of type \ with automated input and output.
+
+SourceFiles
+ IOListList.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IOListList_H
+#define IOListList_H
+
+#include "IOList.H"
+#include "regIOobject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class Istream;
+class Ostream;
+
+// Forward declaration of friend functions and operators
+template class IOListList;
+
+template Istream& operator>>
+(
+ Istream&,
+ IOListList&
+);
+template Ostream& operator<<
+(
+ Ostream&,
+ const IOListList&
+);
+
+/*---------------------------------------------------------------------------*\
+ Class IOListList Declaration
+\*---------------------------------------------------------------------------*/
+
+template
+class IOListList
+:
+ public regIOobject,
+ public List
+{
+ // Private Member Functions
+
+ //- Read according to header type
+ void readFromStream();
+
+public:
+
+ //- Runtime type information
+ TypeName("ListList");
+
+
+ // Constructors
+
+ //- Construct from IOobject
+ IOListList(const IOobject&);
+
+ //- Construct from IOobject and size of IOListList
+ IOListList(const IOobject&, const label);
+
+ //- Construct from IOobject and a List
+ IOListList(const IOobject&, const List&);
+
+ //- Construct by transferring the List contents
+ IOListList(const IOobject&, const Xfer >&);
+
+
+ // Destructor
+
+ virtual ~IOListList();
+
+
+ // Member functions
+
+ virtual bool writeObject
+ (
+ IOstream::streamFormat,
+ IOstream::versionNumber,
+ IOstream::compressionType
+ ) const;
+
+ virtual bool writeData(Ostream&) const;
+
+
+ // Member operators
+
+ void operator=(const IOListList&);
+
+ void operator=(const List&);
+
+
+ // IOstream operators
+
+ //- Read List from Istream, discarding contents of existing List.
+ friend Istream& operator>>
+ (
+ Istream&,
+ IOListList&
+ );
+
+ // Write List to Ostream.
+ friend Ostream& operator<<
+ (
+ Ostream&,
+ const IOListList&
+ );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+# include "IOListList.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/Fields/labelField/labelFieldIOField.C b/src/OpenFOAM/fields/Fields/labelField/labelFieldIOField.C
new file mode 100644
index 0000000000..fe464093d7
--- /dev/null
+++ b/src/OpenFOAM/fields/Fields/labelField/labelFieldIOField.C
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
+ \\/ 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 .
+
+Description
+ labelField with IO.
+
+\*---------------------------------------------------------------------------*/
+
+#include "labelFieldIOField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ defineTemplateTypeNameAndDebugWithName
+ (
+ labelFieldIOField,
+ "labelFieldField",
+ 0
+ );
+
+ defineTemplateTypeNameAndDebugWithName
+ (
+ labelIOFieldField,
+ "labelCompactFieldField",
+ 0
+ );
+}
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/Fields/labelField/labelFieldIOField.H b/src/OpenFOAM/fields/Fields/labelField/labelFieldIOField.H
new file mode 100644
index 0000000000..76dda2c2f1
--- /dev/null
+++ b/src/OpenFOAM/fields/Fields/labelField/labelFieldIOField.H
@@ -0,0 +1,51 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
+ \\/ 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 .
+
+Typedef
+ Foam::labelFieldIOField
+
+Description
+ labelFieldField with IO.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef labelFieldIOField_H
+#define labelFieldIOField_H
+
+#include "labelField.H"
+#include "IOField.H"
+#include "IOFieldField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ typedef IOField labelFieldIOField;
+ typedef IOFieldField labelIOFieldField;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/Fields/scalarField/scalarFieldIOField.C b/src/OpenFOAM/fields/Fields/scalarField/scalarFieldIOField.C
new file mode 100644
index 0000000000..4c724f2b60
--- /dev/null
+++ b/src/OpenFOAM/fields/Fields/scalarField/scalarFieldIOField.C
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
+ \\/ 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 .
+
+Description
+ scalarField with IO.
+
+\*---------------------------------------------------------------------------*/
+
+#include "scalarFieldIOField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ defineTemplateTypeNameAndDebugWithName
+ (
+ scalarFieldIOField,
+ "scalarFieldField",
+ 0
+ );
+
+ defineTemplateTypeNameAndDebugWithName
+ (
+ scalarIOFieldField,
+ "scalarCompactFieldField",
+ 0
+ );
+}
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/Fields/scalarField/scalarFieldIOField.H b/src/OpenFOAM/fields/Fields/scalarField/scalarFieldIOField.H
new file mode 100644
index 0000000000..ad0ade1446
--- /dev/null
+++ b/src/OpenFOAM/fields/Fields/scalarField/scalarFieldIOField.H
@@ -0,0 +1,51 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
+ \\/ 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 .
+
+Typedef
+ Foam::scalarFieldIOField
+
+Description
+ scalarFieldField with IO.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef scalarFieldIOField_H
+#define scalarFieldIOField_H
+
+#include "scalarField.H"
+#include "IOField.H"
+#include "IOFieldField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ typedef IOField scalarFieldIOField;
+ typedef IOFieldField scalarIOFieldField;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/Fields/vectorField/vectorFieldIOField.C b/src/OpenFOAM/fields/Fields/vectorField/vectorFieldIOField.C
new file mode 100644
index 0000000000..b28fa1eefb
--- /dev/null
+++ b/src/OpenFOAM/fields/Fields/vectorField/vectorFieldIOField.C
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
+ \\/ 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 .
+
+Description
+ vectorField with IO.
+
+\*---------------------------------------------------------------------------*/
+
+#include "vectorFieldIOField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ defineTemplateTypeNameAndDebugWithName
+ (
+ vectorFieldIOField,
+ "vectorFieldField",
+ 0
+ );
+
+ defineTemplateTypeNameAndDebugWithName
+ (
+ vectorIOFieldField,
+ "vectorCompactFieldField",
+ 0
+ );
+}
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/Fields/vectorField/vectorFieldIOField.H b/src/OpenFOAM/fields/Fields/vectorField/vectorFieldIOField.H
new file mode 100644
index 0000000000..a029e33fd7
--- /dev/null
+++ b/src/OpenFOAM/fields/Fields/vectorField/vectorFieldIOField.H
@@ -0,0 +1,51 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
+ \\/ 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 .
+
+Typedef
+ Foam::vectorFieldIOField
+
+Description
+ vectorFieldField with IO.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef vectorFieldIOField_H
+#define vectorFieldIOField_H
+
+#include "vectorField.H"
+#include "IOField.H"
+#include "IOFieldField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ typedef IOField vectorFieldIOField;
+ typedef IOFieldField vectorIOFieldField;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/primitives/Lists/labelIOList.C b/src/OpenFOAM/primitives/Lists/labelIOList.C
index 0d91c9947c..6fd10f9ef9 100644
--- a/src/OpenFOAM/primitives/Lists/labelIOList.C
+++ b/src/OpenFOAM/primitives/Lists/labelIOList.C
@@ -37,7 +37,6 @@ namespace Foam
addCompoundToRunTimeSelectionTable(List