diff --git a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C
index f0f2b59cc7543587a73c85174c0fffa70d9349d0..1430ad67fd1ff03ff5878f4e51d6c6c300266182 100644
--- a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C
+++ b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016-2017 OpenFOAM Foundation
-    Copyright (C) 2020 OpenCFD Ltd.
+    Copyright (C) 2020-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -50,7 +50,7 @@ Foam::RBD::rigidBodyMotion::rigidBodyMotion(const Time& time)
     rigidBodyModel(time),
     motionState_(*this),
     motionState0_(*this),
-    aRelax_(1.0),
+    aRelax_(nullptr),
     aDamp_(1.0),
     report_(false),
     solver_(nullptr)
@@ -66,7 +66,16 @@ Foam::RBD::rigidBodyMotion::rigidBodyMotion
     motionState_(*this, dict),
     motionState0_(motionState_),
     X00_(X0_.size()),
-    aRelax_(dict.getOrDefault<scalar>("accelerationRelaxation", 1)),
+    aRelax_
+    (
+        Function1<scalar>::NewIfPresent
+        (
+            "accelerationRelaxation",
+            dict,
+            word::null,
+            &time
+        )
+    ),
     aDamp_(dict.getOrDefault<scalar>("accelerationDamping", 1)),
     report_(dict.getOrDefault<Switch>("report", false)),
     solver_(rigidBodySolver::New(*this, dict.subDict("solver")))
@@ -91,7 +100,16 @@ Foam::RBD::rigidBodyMotion::rigidBodyMotion
     motionState_(*this, stateDict),
     motionState0_(motionState_),
     X00_(X0_.size()),
-    aRelax_(dict.getOrDefault<scalar>("accelerationRelaxation", 1)),
+    aRelax_
+    (
+        Function1<scalar>::NewIfPresent
+        (
+            "accelerationRelaxation",
+            dict,
+            word::null,
+            &time
+        )
+    ),
     aDamp_(dict.getOrDefault<scalar>("accelerationDamping", 1)),
     report_(dict.getOrDefault<Switch>("report", false)),
     solver_(rigidBodySolver::New(*this, dict.subDict("solver")))
@@ -139,7 +157,14 @@ void Foam::RBD::rigidBodyMotion::forwardDynamics
 {
     scalarField qDdotPrev = state.qDdot();
     rigidBodyModel::forwardDynamics(state, tau, fx);
-    state.qDdot() = aDamp_*(aRelax_*state.qDdot() + (1 - aRelax_)*qDdotPrev);
+
+    scalar aRelax = 1;
+    if (aRelax_)
+    {
+        aRelax = aRelax_->value(motionState_.t());
+    }
+
+    state.qDdot() = aDamp_*(aRelax*state.qDdot() + (1 - aRelax)*qDdotPrev);
 }
 
 
diff --git a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H
index 284d5b12b909ca5cc7e72d4749acea0a55526851..3b97d3bb358da24a2dcbade40482965f309f8033 100644
--- a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H
+++ b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016-2017 OpenFOAM Foundation
+    Copyright (C) 2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -52,6 +53,7 @@ SourceFiles
 #include "rigidBodyModelState.H"
 #include "pointField.H"
 #include "Switch.H"
+#include "Function1.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -89,7 +91,7 @@ class rigidBodyMotion
         List<spatialTransform> X00_;
 
         //- Acceleration relaxation coefficient
-        scalar aRelax_;
+        autoPtr<Function1<scalar>> aRelax_;
 
         //- Acceleration damping coefficient (for steady-state simulations)
         scalar aDamp_;
diff --git a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotionIO.C b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotionIO.C
index 95da0ad66fada9e12e1f458d3036cb06ee2d048a..ac8ef96103e7cdb2aec9d93df2754514400d0cd6 100644
--- a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotionIO.C
+++ b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotionIO.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016 OpenFOAM Foundation
-    Copyright (C) 2020 OpenCFD Ltd.
+    Copyright (C) 2020-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -33,13 +33,23 @@ License
 
 bool Foam::RBD::rigidBodyMotion::read(const dictionary& dict)
 {
-    rigidBodyModel::read(dict);
+    if (rigidBodyModel::read(dict))
+    {
+        aRelax_ =
+            Function1<scalar>::NewIfPresent
+            (
+                "accelerationRelaxation",
+                dict,
+                word::null,
+                &time()
+            );
+        aDamp_ = dict.getOrDefault<scalar>("accelerationDamping", 1);
+        report_ = dict.getOrDefault<Switch>("report", false);
 
-    aRelax_ = dict.getOrDefault<scalar>("accelerationRelaxation", 1);
-    aDamp_ = dict.getOrDefault<scalar>("accelerationDamping", 1);
-    report_ = dict.getOrDefault<Switch>("report", false);
+        return true;
+    }
 
-    return true;
+    return false;
 }
 
 
@@ -47,7 +57,10 @@ void Foam::RBD::rigidBodyMotion::write(Ostream& os) const
 {
     rigidBodyModel::write(os);
 
-    os.writeEntry("accelerationRelaxation", aRelax_);
+    if (aRelax_)
+    {
+        aRelax_->writeData(os);
+    }
     os.writeEntry("accelerationDamping", aDamp_);
     os.writeEntry("report", report_);
 }
diff --git a/tutorials/multiphase/interFoam/RAS/floatingObject/constant/dynamicMeshDict b/tutorials/multiphase/interFoam/RAS/floatingObject/constant/dynamicMeshDict
index 43863cdbca76693475c9dfdde856eca4946debac..5b643003b90c68fdb4908e5025be3d429dadd303 100644
--- a/tutorials/multiphase/interFoam/RAS/floatingObject/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interFoam/RAS/floatingObject/constant/dynamicMeshDict
@@ -29,7 +29,13 @@ rigidBodyMotionCoeffs
         type Newmark;
     }
 
-    accelerationRelaxation 0.7;
+    accelerationRelaxation table
+    (
+        // time     relaxation-factor
+        (0          0)
+        (3.99999    0)
+        (4          0.7)
+    );
 
     bodies
     {