diff --git a/etc/caseDicts/functions/control/userTimeStep b/etc/caseDicts/functions/control/userTimeStep
new file mode 100644
index 0000000000..4a6beac014
--- /dev/null
+++ b/etc/caseDicts/functions/control/userTimeStep
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration | Website: https://openfoam.org
+ \\ / A nd | Version: dev
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+Description
+ Writes the user time step to a file for monitoring.
+
+\*---------------------------------------------------------------------------*/
+
+type userTimeStep;
+libs ("libutilityFunctionObjects.so");
+
+writeControl timeStep;
+writeInterval 1;
+
+// ************************************************************************* //
diff --git a/src/functionObjects/utilities/Make/files b/src/functionObjects/utilities/Make/files
index 05c9fbb68c..b0839b6112 100644
--- a/src/functionObjects/utilities/Make/files
+++ b/src/functionObjects/utilities/Make/files
@@ -2,6 +2,7 @@ codedFunctionObject/codedFunctionObject.C
residuals/residuals.C
timeActivatedFileUpdate/timeActivatedFileUpdate.C
timeStep/timeStepFunctionObject.C
+userTimeStep/userTimeStepFunctionObject.C
setTimeStep/setTimeStepFunctionObject.C
setWriteInterval/setWriteIntervalFunctionObject.C
systemCall/systemCall.C
diff --git a/src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.C b/src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.C
new file mode 100644
index 0000000000..6aa65a5b4a
--- /dev/null
+++ b/src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.C
@@ -0,0 +1,119 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration | Website: https://openfoam.org
+ \\ / A nd | Copyright (C) 2024 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 "userTimeStepFunctionObject.H"
+#include "Time.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace functionObjects
+{
+ defineTypeNameAndDebug(userTimeStep, 0);
+
+ addToRunTimeSelectionTable
+ (
+ functionObject,
+ userTimeStep,
+ dictionary
+ );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::functionObjects::userTimeStep::userTimeStep
+(
+ const word& name,
+ const Time& runTime,
+ const dictionary& dict
+)
+:
+ regionFunctionObject(name, runTime, dict),
+ logFiles(obr_, name)
+{
+ read(dict);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::functionObjects::userTimeStep::~userTimeStep()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+bool Foam::functionObjects::userTimeStep::read(const dictionary& dict)
+{
+ functionObject::read(dict);
+
+ resetName(typeName);
+
+ return true;
+}
+
+
+void Foam::functionObjects::userTimeStep::writeFileHeader(const label i)
+{
+ if (Pstream::master())
+ {
+ writeHeader(file(), "User time step");
+ writeCommented(file(), "Time");
+
+ file() << tab << "deltaT";
+
+ file() << endl;
+ }
+}
+
+
+bool Foam::functionObjects::userTimeStep::execute()
+{
+ return true;
+}
+
+
+bool Foam::functionObjects::userTimeStep::write()
+{
+ logFiles::write();
+
+ if (Pstream::master())
+ {
+ writeTime(file());
+
+ file() << tab << time_.timeToUserTime(time_.deltaTValue());
+
+ file() << endl;
+ }
+
+ return true;
+}
+
+
+// ************************************************************************* //
diff --git a/src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.H b/src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.H
new file mode 100644
index 0000000000..f96105d6f6
--- /dev/null
+++ b/src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.H
@@ -0,0 +1,144 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration | Website: https://openfoam.org
+ \\ / A nd | Copyright (C) 2024 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::functionObjects::userTimeStep
+
+Description
+ Writes the time step
+
+ Example of function object specification:
+ \verbatim
+ userTimeStep
+ {
+ type userTimeStep;
+
+ libs ("libutilityFunctionObjects.so");
+
+ writeControl userTimeStep;
+ writeInterval 1;
+ }
+ \endverbatim
+
+ Output data is written to the dir postProcessing/userTimeStep/\/
+
+See also
+ Foam::functionObject
+ Foam::functionObjects::regionFunctionObject
+ Foam::functionObjects::logFiles
+
+SourceFiles
+ userTimeStep.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef userTimeStepFunctionObject_H
+#define userTimeStepFunctionObject_H
+
+#include "regionFunctionObject.H"
+#include "logFiles.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace functionObjects
+{
+
+/*---------------------------------------------------------------------------*\
+ Class userTimeStep Declaration
+\*---------------------------------------------------------------------------*/
+
+class userTimeStep
+:
+ public regionFunctionObject,
+ public logFiles
+{
+
+protected:
+
+ // Protected Member Functions
+
+ //- Output file header information
+ virtual void writeFileHeader(const label i);
+
+
+public:
+
+ //- Runtime type information
+ TypeName("userTimeStep");
+
+
+ // Constructors
+
+ //- Construct from Time and dictionary
+ userTimeStep
+ (
+ const word& name,
+ const Time& runTime,
+ const dictionary& dict
+ );
+
+ //- Disallow default bitwise copy construction
+ userTimeStep(const userTimeStep&) = delete;
+
+
+ //- Destructor
+ virtual ~userTimeStep();
+
+
+ // Member Functions
+
+ //- Read the controls
+ virtual bool read(const dictionary&);
+
+ //- Return the list of fields required
+ virtual wordList fields() const
+ {
+ return wordList::null();
+ }
+
+ //- Execute, currently does nothing
+ virtual bool execute();
+
+ //- Write the time step value
+ virtual bool write();
+
+
+ // Member Operators
+
+ //- Disallow default bitwise assignment
+ void operator=(const userTimeStep&) = delete;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace functionObjects
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //