diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
index ba6791e9ce189205f38205bcb097fd303bd8a86a..2e9abddf5f65c526529d0d43cab3b54b6507771c 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
@@ -39,6 +39,11 @@ void Foam::sixDoFRigidBodyMotion::applyRestraints()
     {
         forAll(restraints_, rI)
         {
+            if (report_)
+            {
+                Info<< "Restraint " << restraintNames_[rI];
+            }
+
             // restraint position
             point rP = vector::zero;
 
@@ -85,6 +90,11 @@ void Foam::sixDoFRigidBodyMotion::applyConstraints(scalar deltaT)
 
             forAll(constraints_, cI)
             {
+                if (report_)
+                {
+                    Info<< "Constraint " << constraintNames_[cI];
+                }
+
                 // constraint position
                 point cP = vector::zero;
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C
index 9993dfcece2b16f5f74470f575c6905706d86c11..699849929ab0046de5b15fe92400354fbf5a2fed 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C
@@ -123,8 +123,7 @@ bool Foam::sixDoFRigidBodyMotionConstraints::fixedAxis::constrain
 
     if (motion.report())
     {
-        Info<< "Constraint " << this->name()
-            << " angle " << theta
+        Info<< " angle " << theta
             << " force " << constraintForceIncrement
             << " moment " << constraintMomentIncrement;
 
@@ -175,4 +174,14 @@ bool Foam::sixDoFRigidBodyMotionConstraints::fixedAxis::read
     return true;
 }
 
+
+void Foam::sixDoFRigidBodyMotionConstraints::fixedAxis::write
+(
+    Ostream& os
+) const
+{
+    os.writeKeyword("axis")
+        << fixedAxis_ << token::END_STATEMENT << nl;
+}
+
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H
index 5ba3dcb60d04295b388742cb96ba66b8cfae3641..ed9f103a098ddc3840b41862def5f4ebaeccedb5 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H
@@ -111,6 +111,9 @@ public:
 
         //- Update properties from given dictionary
         virtual bool read(const dictionary& sDoFRBMCCoeff);
+
+        //- Write
+        virtual void write(Ostream&) const;
 };
 
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C
index 635267a259685dc663d1e2f0a6bf75fdf095dc93..1bd544eae56c6b3d30537f521f7eee67f45754c6 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C
@@ -109,8 +109,7 @@ bool Foam::sixDoFRigidBodyMotionConstraints::fixedLine::constrain
 
     if (motion.report())
     {
-        Info<< "Constraint " << this->name()
-            << " error << " << error
+        Info<< " error " << error
             << " force " << constraintForceIncrement
             << " moment " << constraintMomentIncrement;
 
@@ -163,4 +162,17 @@ bool Foam::sixDoFRigidBodyMotionConstraints::fixedLine::read
     return true;
 }
 
+
+void Foam::sixDoFRigidBodyMotionConstraints::fixedLine::write
+(
+    Ostream& os
+) const
+{
+    os.writeKeyword("refPoint")
+        << refPt_ << token::END_STATEMENT << nl;
+
+    os.writeKeyword("direction")
+        << dir_ << token::END_STATEMENT << nl;
+}
+
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H
index 01cc8ff52f9b5121230291aaf012609328a6a810..2ffb44e6075d719e876294f7001b8994eac8adad 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H
@@ -112,6 +112,9 @@ public:
 
         //- Update properties from given dictionary
         virtual bool read(const dictionary& sDoFRBMCCoeff);
+
+        //- Write
+        virtual void write(Ostream&) const;
 };
 
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C
index 74112ab3b40f24a9deee3f00c5693e56fd4581c9..eb634772c446bfed3b9ab6e427252a3e3f7fabc8 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C
@@ -150,8 +150,7 @@ bool Foam::sixDoFRigidBodyMotionConstraints::fixedOrientation::constrain
 
     if (motion.report())
     {
-        Info<< "Constraint " << this->name()
-            << " max angle " << maxTheta
+        Info<< " max angle " << maxTheta
             << " force " << constraintForceIncrement
             << " moment " << constraintMomentIncrement;
 
@@ -198,4 +197,14 @@ bool Foam::sixDoFRigidBodyMotionConstraints::fixedOrientation::read
     return true;
 }
 
+
+void Foam::sixDoFRigidBodyMotionConstraints::fixedOrientation::write
+(
+    Ostream& os
+) const
+{
+    os.writeKeyword("fixedOrientation")
+        << fixedOrientation_ << token::END_STATEMENT << nl;
+}
+
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H
index 0d46cddea979c2f91f943c1ddb21662cb840a288..8975f6086247f1ec49a640c7ad5c2cd2f5ff0a3f 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H
@@ -112,6 +112,9 @@ public:
 
         //- Update properties from given dictionary
         virtual bool read(const dictionary& sDoFRBMCCoeff);
+
+        //- Write
+        virtual void write(Ostream&) const;
 };
 
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C
index 6d5ba4962bd375e5a38aa8d9a72f08ee314fb6bf..81f1394ac8b1308ef7be97e76325c97ec9a8e5ec 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C
@@ -109,8 +109,7 @@ bool Foam::sixDoFRigidBodyMotionConstraints::fixedPlane::constrain
 
     if (motion.report())
     {
-        Info<< "Constraint " << this->name()
-            << " error " << error
+        Info<< " error " << error
             << " force " << constraintForceIncrement
             << " moment " << constraintMomentIncrement;
 
@@ -146,4 +145,17 @@ bool Foam::sixDoFRigidBodyMotionConstraints::fixedPlane::read
     return true;
 }
 
+
+void Foam::sixDoFRigidBodyMotionConstraints::fixedPlane::write
+(
+    Ostream& os
+) const
+{
+    os.writeKeyword("refPoint")
+        << fixedPlane_.refPoint() << token::END_STATEMENT << nl;
+
+    os.writeKeyword("normal")
+        << fixedPlane_.normal() << token::END_STATEMENT << nl;
+}
+
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H
index 45f35dbbb4ccf7eab7e122dcb486e2ee8bce1599..84328312f89a7efa83a15114c886c6346b2c6fcf 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H
@@ -110,6 +110,9 @@ public:
 
         //- Update properties from given dictionary
         virtual bool read(const dictionary& sDoFRBMCCoeff);
+
+        //- Write
+        virtual void write(Ostream&) const;
 };
 
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C
index 5d03ab411f6a654fa9ff516b700b59dda7c33b37..692289851c381235074cbf035d3fd77ee0deebeb 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C
@@ -118,8 +118,7 @@ bool Foam::sixDoFRigidBodyMotionConstraints::fixedPoint::constrain
 
     if (motion.report())
     {
-        Info<< "Constraint " << this->name()
-            << " error " << error
+        Info<< " error " << error
             << " force " << constraintForceIncrement
             << " moment " << constraintMomentIncrement;
 
@@ -151,4 +150,14 @@ bool Foam::sixDoFRigidBodyMotionConstraints::fixedPoint::read
     return true;
 }
 
+
+void Foam::sixDoFRigidBodyMotionConstraints::fixedPoint::write
+(
+    Ostream& os
+) const
+{
+    os.writeKeyword("fixedPoint")
+        << fixedPoint_ << token::END_STATEMENT << nl;
+}
+
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H
index 933ba2db09233d9ab5a67f324462cc0f6f34a2b5..a18444c5686529dfc2ad0e9cea6fce9e78c70486 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H
@@ -111,6 +111,9 @@ public:
 
         //- Update properties from given dictionary
         virtual bool read(const dictionary& sDoFRBMCCoeff);
+
+        //- Write
+        virtual void write(Ostream&) const;
 };
 
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
index a272e0f986b32110e9ca86daf794e23773b07db9..ade362f3885dfaa5e15935b90dd2d100f08dc2b9 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
@@ -39,7 +39,6 @@ Foam::sixDoFRigidBodyMotionConstraint::sixDoFRigidBodyMotionConstraint
     const dictionary& sDoFRBMCDict
 )
 :
-    name_(fileName(sDoFRBMCDict.name().name()).components(token::COLON).last()),
     sDoFRBMCCoeffs_
     (
         sDoFRBMCDict.subDict
@@ -69,9 +68,6 @@ bool Foam::sixDoFRigidBodyMotionConstraint::read
     const dictionary& sDoFRBMCDict
 )
 {
-    name_ =
-        fileName(sDoFRBMCDict.name().name()).components(token::COLON).last();
-
     tolerance_ = (readScalar(sDoFRBMCDict.lookup("tolerance")));
 
     relaxationFactor_ = sDoFRBMCDict.lookupOrDefault<scalar>
@@ -86,4 +82,13 @@ bool Foam::sixDoFRigidBodyMotionConstraint::read
 }
 
 
+void Foam::sixDoFRigidBodyMotionConstraint::write(Ostream& os) const
+{
+    os.writeKeyword("tolerance")
+        << tolerance_ << token::END_STATEMENT << nl;
+
+    os.writeKeyword("relaxationFactor")
+        << relaxationFactor_ << token::END_STATEMENT << nl;
+}
+
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
index 22e57702028dc1c2bc447dd6ca0553ce09790434..d7cf88887149ad010d00e10e44eff2c7a07d116c 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
@@ -70,9 +70,6 @@ protected:
 
     // Protected data
 
-        //- Name of the constraint in dictionary
-        word name_;
-
         //- Constraint model specific coefficient dictionary
         dictionary sDoFRBMCCoeffs_;
 
@@ -145,16 +142,10 @@ public:
         ) const = 0;
 
         //- Update properties from given dictionary
-        virtual bool read(const dictionary& sDoFRBMCDict) = 0;
+        virtual bool read(const dictionary& sDoFRBMCDict);
 
         // Access
 
-            //- Return access to the name of the restraint
-            inline const word& name() const
-            {
-                return name_;
-            }
-
             // Return access to sDoFRBMCCoeffs
             inline const dictionary& coeffDict() const
             {
@@ -172,6 +163,9 @@ public:
             {
                 return relaxationFactor_;
             }
+
+        //- Write
+        virtual void write(Ostream&) const;
 };
 
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
index e8d1b187a0bd608de3552e8e26a7e01aff4e9e7b..ab76faa033d35c4476459cfb5816e58e5ad85715 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
@@ -42,68 +42,67 @@ void Foam::sixDoFRigidBodyMotion::write(Ostream& os) const
     os.writeKeyword("report")
         << report_ << token::END_STATEMENT << nl;
 
-    if (restraints_.size())
+    if (!restraints_.empty())
     {
-        dictionary restraintsDict;
+        os  << indent << "restraints" << nl
+            << indent << token::BEGIN_BLOCK << incrIndent << nl;
 
         forAll(restraints_, rI)
         {
             word restraintType = restraints_[rI].type();
 
-            dictionary restraintDict;
+            os  << indent << restraintNames_[rI] << nl
+                << indent << token::BEGIN_BLOCK << incrIndent << endl;
 
-            restraintDict.add("sixDoFRigidBodyMotionRestraint", restraintType);
+            os.writeKeyword("sixDoFRigidBodyMotionRestraint")
+                << restraintType << token::END_STATEMENT << nl;
 
-            restraintDict.add
-            (
-                word(restraintType + "Coeffs"), restraints_[rI].coeffDict()
-            );
+            os.writeKeyword(word(restraintType + "Coeffs")) << nl;
 
-            restraintsDict.add(restraints_[rI].name(), restraintDict);
+            os  << indent << token::BEGIN_BLOCK << nl << incrIndent;
+
+            restraints_[rI].write(os);
+
+            os << decrIndent << indent << token::END_BLOCK << nl;
+
+            os  << decrIndent << indent << token::END_BLOCK << endl;
         }
 
-        os.writeKeyword("restraints") << restraintsDict;
+        os  << decrIndent << indent << token::END_BLOCK << nl;
     }
 
-    if (constraints_.size())
+    if (!constraints_.empty())
     {
-        dictionary constraintsDict;
+        os  << indent << "constraints" << nl
+            << indent << token::BEGIN_BLOCK << incrIndent << nl;
 
-        constraintsDict.add("maxIterations", maxConstraintIterations_);
+        os.writeKeyword("maxIterations")
+            << maxConstraintIterations_ << token::END_STATEMENT << nl;
 
         forAll(constraints_, rI)
         {
             word constraintType = constraints_[rI].type();
 
-            dictionary constraintDict;
+            os  << indent << constraintNames_[rI] << nl
+                << indent << token::BEGIN_BLOCK << incrIndent << endl;
+
+            os.writeKeyword("sixDoFRigidBodyMotionConstraint")
+                << constraintType << token::END_STATEMENT << nl;
+
+            constraints_[rI].sixDoFRigidBodyMotionConstraint::write(os);
 
-            constraintDict.add
-            (
-                "sixDoFRigidBodyMotionConstraint",
-                constraintType
-            );
+            os.writeKeyword(word(constraintType + "Coeffs")) << nl;
 
-            constraintDict.add
-            (
-                "tolerance",
-                constraints_[rI].tolerance()
-            );
+            os  << indent << token::BEGIN_BLOCK << nl << incrIndent;
 
-            constraintDict.add
-            (
-                "relaxationFactor",
-                constraints_[rI].relaxationFactor()
-            );
+            constraints_[rI].write(os);
 
-            constraintDict.add
-            (
-                word(constraintType + "Coeffs"), constraints_[rI].coeffDict()
-            );
+            os << decrIndent << indent << token::END_BLOCK << nl;
 
-            constraintsDict.add(constraints_[rI].name(), constraintDict);
+            os  << decrIndent << indent << token::END_BLOCK << endl;
         }
 
-        os.writeKeyword("constraints") << constraintsDict;
+        os  << decrIndent << indent << token::END_BLOCK << nl;
     }
 }
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C
index 5aa198f2b740cc521bdc7cafc02fe7d9f2f9014b..16c72280d6e65d303145af1851f3992941696d3e 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C
@@ -136,8 +136,7 @@ Foam::sixDoFRigidBodyMotionRestraints::linearAxialAngularSpring::restrain
 
     if (motion.report())
     {
-        Info<< "Restraint " << this->name()
-            << " angle " << theta
+        Info<< " angle " << theta
             << " force " << restraintForce
             << " moment " << restraintMoment
             << endl;
@@ -199,4 +198,23 @@ bool Foam::sixDoFRigidBodyMotionRestraints::linearAxialAngularSpring::read
     return true;
 }
 
+
+void Foam::sixDoFRigidBodyMotionRestraints::linearAxialAngularSpring::write
+(
+    Ostream& os
+) const
+{
+    os.writeKeyword("referenceOrientation")
+        << refQ_ << token::END_STATEMENT << nl;
+
+    os.writeKeyword("axis")
+        << axis_ << token::END_STATEMENT << nl;
+
+    os.writeKeyword("stiffness")
+        << stiffness_ << token::END_STATEMENT << nl;
+
+    os.writeKeyword("damping")
+        << damping_ << token::END_STATEMENT << nl;
+}
+
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H
index 780598afb2b5429fdab5ed28af059c521239ea30..fe6e36801d579939e8a1aff3935489c513e916fe 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H
@@ -114,6 +114,9 @@ public:
 
         //- Update properties from given dictionary
         virtual bool read(const dictionary& sDoFRBMRCoeff);
+
+        //- Write
+        virtual void write(Ostream&) const;
 };
 
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C
index 8067233e1c37a9e072284006606634e2c38c0965..dd1bb539456b59da2a75dfa19c9d5176e87c6b14 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C
@@ -96,8 +96,7 @@ void Foam::sixDoFRigidBodyMotionRestraints::linearSpring::restrain
 
     if (motion.report())
     {
-        Info<< "Restraint " << this->name()
-            << " spring length " << magR
+        Info<< " spring length " << magR
             << " force " << restraintForce
             << " moment " << restraintMoment
             << endl;
@@ -125,4 +124,26 @@ bool Foam::sixDoFRigidBodyMotionRestraints::linearSpring::read
     return true;
 }
 
+
+void Foam::sixDoFRigidBodyMotionRestraints::linearSpring::write
+(
+    Ostream& os
+) const
+{
+    os.writeKeyword("anchor")
+        << anchor_ << token::END_STATEMENT << nl;
+
+    os.writeKeyword("refAttachmentPt")
+        << refAttachmentPt_ << token::END_STATEMENT << nl;
+
+    os.writeKeyword("stiffness")
+        << stiffness_ << token::END_STATEMENT << nl;
+
+    os.writeKeyword("damping")
+        << damping_ << token::END_STATEMENT << nl;
+
+    os.writeKeyword("restLength")
+        << restLength_ << token::END_STATEMENT << nl;
+}
+
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H
index c5dc9bc074db09b1d77b0275fa9bf411a5d130c9..a16893eb72d790eeddac64c7e0017b60ef8ce005 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H
@@ -117,6 +117,9 @@ public:
 
         //- Update properties from given dictionary
         virtual bool read(const dictionary& sDoFRBMRCoeff);
+
+        //- Write
+        virtual void write(Ostream&) const;
 };
 
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C
index 13c72afc5b2fe1c375b86cba7d99c7e091517e77..c397e1fc2eab4aa3c8ed0d0d949e4b288f5c6532 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C
@@ -1,4 +1,4 @@
-/*---------------------------------------------------------------------------*\
+/*---------------------------------------------------------------------------* \
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
@@ -39,7 +39,6 @@ Foam::sixDoFRigidBodyMotionRestraint::sixDoFRigidBodyMotionRestraint
     const dictionary& sDoFRBMRDict
 )
 :
-    name_(fileName(sDoFRBMRDict.name().name()).components(token::COLON).last()),
     sDoFRBMRCoeffs_
     (
         sDoFRBMRDict.subDict
@@ -64,9 +63,6 @@ bool Foam::sixDoFRigidBodyMotionRestraint::read
     const dictionary& sDoFRBMRDict
 )
 {
-    name_ =
-        fileName(sDoFRBMRDict.name().name()).components(token::COLON).last();
-
     sDoFRBMRCoeffs_ = sDoFRBMRDict.subDict(type() + "Coeffs");
 
     return true;
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H
index 1bdabb57e3875c97e6d277a58e495eb900031a88..bc5ba2d1002e51c9983a6126c4865484eafbe447 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H
@@ -70,9 +70,6 @@ protected:
 
     // Protected data
 
-        //- Name of the constraint in dictionary
-        word name_;
-
         //- Restraint model specific coefficient dictionary
         dictionary sDoFRBMRCoeffs_;
 
@@ -134,21 +131,18 @@ public:
         ) const = 0;
 
         //- Update properties from given dictionary
-        virtual bool read(const dictionary& sDoFRBMRDict) = 0;
+        virtual bool read(const dictionary& sDoFRBMRDict);
 
         // Access
 
-            //- Return access to the name of the restraint
-            inline const word& name() const
-            {
-                return name_;
-            }
-
             // Return access to sDoFRBMRCoeffs
             inline const dictionary& coeffDict() const
             {
                 return sDoFRBMRCoeffs_;
             }
+
+        //- Write
+        virtual void write(Ostream&) const = 0;
 };
 
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C
index a961e5591a8f753eda327846216a8429c446aaa5..c3f4292e7b119f4eff613c754c566a834069c994 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C
@@ -113,8 +113,7 @@ Foam::sixDoFRigidBodyMotionRestraints::sphericalAngularSpring::restrain
 
     if (motion.report())
     {
-        Info<< "Restraint " << this->name()
-            << " force " << restraintForce
+        Info<< " force " << restraintForce
             << " moment " << restraintMoment
             << endl;
     }
@@ -153,4 +152,19 @@ bool Foam::sixDoFRigidBodyMotionRestraints::sphericalAngularSpring::read
     return true;
 }
 
+
+void Foam::sixDoFRigidBodyMotionRestraints::sphericalAngularSpring::write
+(
+    Ostream& os
+) const
+{
+    os.writeKeyword("referenceOrientation")
+        << refQ_ << token::END_STATEMENT << nl;
+
+    os.writeKeyword("stiffness") << stiffness_ << token::END_STATEMENT << nl;
+
+    os.writeKeyword("damping") << damping_ << token::END_STATEMENT << nl;
+}
+
+
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H
index 6ee6636b299248e56bfa2c68bcd140634c99498e..51095adb392f46c06c91d632cf63004b9d83d7d4 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H
@@ -111,6 +111,9 @@ public:
 
         //- Update properties from given dictionary
         virtual bool read(const dictionary& sDoFRBMRCoeff);
+
+        //- Write
+        virtual void write(Ostream&) const;
 };
 
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
index 159419d44accff0022f9194aadf619341ab69fcc..d5c4a50d667402243303416176935641c369864f 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
@@ -136,8 +136,7 @@ Foam::sixDoFRigidBodyMotionRestraints::tabulatedAxialAngularSpring::restrain
 
     if (motion.report())
     {
-        Info<< "Restraint " << this->name()
-            << " angle " << theta
+        Info<< " angle " << theta
             << " force " << restraintForce
             << " moment " << restraintMoment
             << endl;
@@ -223,4 +222,34 @@ bool Foam::sixDoFRigidBodyMotionRestraints::tabulatedAxialAngularSpring::read
     return true;
 }
 
+
+void Foam::sixDoFRigidBodyMotionRestraints::tabulatedAxialAngularSpring::write
+(
+    Ostream& os
+) const
+{
+    os.writeKeyword("referenceOrientation")
+        << refQ_ << token::END_STATEMENT << nl;
+
+    os.writeKeyword("axis")
+        << axis_ << token::END_STATEMENT << nl;
+
+    moment_.write(os);
+
+    os.writeKeyword("angleFormat");
+
+    if (convertToDegrees_)
+    {
+        os  << "degrees" << token::END_STATEMENT << nl;
+    }
+    else
+    {
+        os  << "radians" << token::END_STATEMENT << nl;
+    }
+
+    os.writeKeyword("damping")
+        << damping_ << token::END_STATEMENT << nl;
+}
+
+
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H
index 09cc336e0e3fa2a295a8f9e8c55c00cacd8a2510..f29563b9ca0ec6ee0c5abfd574dd12a698d6cae3 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H
@@ -121,6 +121,9 @@ public:
 
         //- Update properties from given dictionary
         virtual bool read(const dictionary& sDoFRBMRCoeff);
+
+        //- Write
+        virtual void write(Ostream&) const;
 };