diff --git a/NumLib/ODESolver/ODESystem.h b/NumLib/ODESolver/ODESystem.h
index 233ea92da8f8b0c3f5c963f3f0710cf4cc39038d..1f7437ebb344388f607d3b87a27f90dec25abc98 100644
--- a/NumLib/ODESolver/ODESystem.h
+++ b/NumLib/ODESolver/ODESystem.h
@@ -125,7 +125,8 @@ public:
      * \mathtt{Jac} \f$.
      * \endparblock
      */
-    virtual void assembleWithJacobian(const double t, GlobalVector const& x,
+    virtual void assembleWithJacobian(const double t, double const dt,
+                                      GlobalVector const& x,
                                       GlobalVector const& xdot,
                                       const double dxdot_dx, const double dx_dx,
                                       GlobalMatrix& M, GlobalMatrix& K,
diff --git a/NumLib/ODESolver/TimeDiscretization.h b/NumLib/ODESolver/TimeDiscretization.h
index e65f20459dc17c0a27806e05e4192f0326e750d1..4033a5f232fb3437aebc17128aa0d05217397734 100644
--- a/NumLib/ODESolver/TimeDiscretization.h
+++ b/NumLib/ODESolver/TimeDiscretization.h
@@ -166,6 +166,10 @@ public:
     //! assembled.
     virtual double getCurrentTime() const = 0;
 
+    //! Returns \f$ \Delta t_C \f$, i.e., the time at which the equation will be
+    //! assembled.
+    virtual double getCurrentTimeIncrement() const = 0;
+
     //! Returns \f$ \hat x \f$, i.e. the discretized approximation of \f$ \dot x
     //! \f$.
     void getXdot(GlobalVector const& x_at_new_timestep, GlobalVector& xdot) const
@@ -286,6 +290,7 @@ public:
     }
 
     double getCurrentTime() const override { return _t; }
+    double getCurrentTimeIncrement() const override { return _delta_t; }
     double getNewXWeight() const override { return 1.0 / _delta_t; }
     void getWeightedOldX(GlobalVector& y) const override
     {
@@ -349,6 +354,8 @@ public:
         return _t_old;  // forward Euler does assembly at the preceding timestep
     }
 
+    double getCurrentTimeIncrement() const override { return _delta_t; }
+
     GlobalVector const& getCurrentX(
         const GlobalVector& /*x_at_new_timestep*/) const override
     {
@@ -430,6 +437,7 @@ public:
     }
 
     double getCurrentTime() const override { return _t; }
+    double getCurrentTimeIncrement() const override { return _delta_t; }
     double getNewXWeight() const override { return 1.0 / _delta_t; }
     void getWeightedOldX(GlobalVector& y) const override
     {
@@ -509,6 +517,7 @@ public:
     }
 
     double getCurrentTime() const override { return _t; }
+    double getCurrentTimeIncrement() const override { return _delta_t; }
 
     double getNewXWeight() const override;
 
diff --git a/NumLib/ODESolver/TimeDiscretizedODESystem.cpp b/NumLib/ODESolver/TimeDiscretizedODESystem.cpp
index 0b6dc1741e9ae9814245042bc16daeab3239c5d4..6fd0a0b847f318cbd488813f16d867c10a7f6e8a 100644
--- a/NumLib/ODESolver/TimeDiscretizedODESystem.cpp
+++ b/NumLib/ODESolver/TimeDiscretizedODESystem.cpp
@@ -76,6 +76,7 @@ void TimeDiscretizedODESystem<
     namespace LinAlg = MathLib::LinAlg;
 
     auto const t = _time_disc.getCurrentTime();
+    auto const dt = _time_disc.getCurrentTimeIncrement();
     auto const& x_curr = _time_disc.getCurrentX(x_new_timestep);
     auto const dxdot_dx = _time_disc.getNewXWeight();
     auto const dx_dx = _time_disc.getDxDx();
@@ -89,8 +90,8 @@ void TimeDiscretizedODESystem<
     _Jac->setZero();
 
     _ode.preAssemble(t, x_curr);
-    _ode.assembleWithJacobian(t, x_curr, xdot, dxdot_dx, dx_dx, *_M, *_K, *_b,
-                              *_Jac);
+    _ode.assembleWithJacobian(t, dt, x_curr, xdot, dxdot_dx, dx_dx, *_M, *_K,
+                              *_b, *_Jac);
 
     LinAlg::finalizeAssembly(*_M);
     LinAlg::finalizeAssembly(*_K);
diff --git a/ProcessLib/AbstractJacobianAssembler.h b/ProcessLib/AbstractJacobianAssembler.h
index 54a31db8452e8da4c5d1f514cb661f24a60522d4..7eb946c11571c70208316b64c475ccf1f9d167c2 100644
--- a/ProcessLib/AbstractJacobianAssembler.h
+++ b/ProcessLib/AbstractJacobianAssembler.h
@@ -24,13 +24,15 @@ class AbstractJacobianAssembler
 public:
     //! Assembles the Jacobian, the matrices \f$M\f$ and \f$K\f$, and the vector
     //! \f$b\f$.
-    virtual void assembleWithJacobian(
-        LocalAssemblerInterface& local_assembler, double const t,
-        std::vector<double> const& local_x,
-        std::vector<double> const& local_xdot, const double dxdot_dx,
-        const double dx_dx, std::vector<double>& local_M_data,
-        std::vector<double>& local_K_data, std::vector<double>& local_b_data,
-        std::vector<double>& local_Jac_data) = 0;
+    virtual void assembleWithJacobian(LocalAssemblerInterface& local_assembler,
+                                      double const t, double const dt,
+                                      std::vector<double> const& local_x,
+                                      std::vector<double> const& local_xdot,
+                                      const double dxdot_dx, const double dx_dx,
+                                      std::vector<double>& local_M_data,
+                                      std::vector<double>& local_K_data,
+                                      std::vector<double>& local_b_data,
+                                      std::vector<double>& local_Jac_data) = 0;
 
     //! Assembles the Jacobian, the matrices \f$M\f$ and \f$K\f$, and the vector
     //! \f$b\f$ with coupling.
diff --git a/ProcessLib/AnalyticalJacobianAssembler.cpp b/ProcessLib/AnalyticalJacobianAssembler.cpp
index 8d9fd3d04951bd8cf90cdccce43cd351710d9067..5bf99eca0489eb7b43b5f8075c3fba0f537dd425 100644
--- a/ProcessLib/AnalyticalJacobianAssembler.cpp
+++ b/ProcessLib/AnalyticalJacobianAssembler.cpp
@@ -15,13 +15,13 @@
 namespace ProcessLib
 {
 void AnalyticalJacobianAssembler::assembleWithJacobian(
-    LocalAssemblerInterface& local_assembler, double const t,
+    LocalAssemblerInterface& local_assembler, double const t, double const dt,
     std::vector<double> const& local_x, std::vector<double> const& local_xdot,
     const double dxdot_dx, const double dx_dx,
     std::vector<double>& local_M_data, std::vector<double>& local_K_data,
     std::vector<double>& local_b_data, std::vector<double>& local_Jac_data)
 {
-    local_assembler.assembleWithJacobian(t, local_x, local_xdot, dxdot_dx,
+    local_assembler.assembleWithJacobian(t, dt, local_x, local_xdot, dxdot_dx,
                                          dx_dx, local_M_data, local_K_data,
                                          local_b_data, local_Jac_data);
 }
diff --git a/ProcessLib/AnalyticalJacobianAssembler.h b/ProcessLib/AnalyticalJacobianAssembler.h
index 3df92c3839d9896838f0300d5001c1bb67d56c55..e71d15dc886a5d391f86ae3cbb1f5dee4307174a 100644
--- a/ProcessLib/AnalyticalJacobianAssembler.h
+++ b/ProcessLib/AnalyticalJacobianAssembler.h
@@ -31,13 +31,15 @@ public:
     //! \f$b\f$.
     //! In this implementation the call is only forwarded to the respective
     //! method of the given \c local_assembler.
-    void assembleWithJacobian(
-        LocalAssemblerInterface& local_assembler, double const t,
-        std::vector<double> const& local_x,
-        std::vector<double> const& local_xdot, const double dxdot_dx,
-        const double dx_dx, std::vector<double>& local_M_data,
-        std::vector<double>& local_K_data, std::vector<double>& local_b_data,
-        std::vector<double>& local_Jac_data) override;
+    void assembleWithJacobian(LocalAssemblerInterface& local_assembler,
+                              double const t, double const dt,
+                              std::vector<double> const& local_x,
+                              std::vector<double> const& local_xdot,
+                              const double dxdot_dx, const double dx_dx,
+                              std::vector<double>& local_M_data,
+                              std::vector<double>& local_K_data,
+                              std::vector<double>& local_b_data,
+                              std::vector<double>& local_Jac_data) override;
 
     void assembleWithJacobianForStaggeredScheme(
         LocalAssemblerInterface& local_assembler,
diff --git a/ProcessLib/CentralDifferencesJacobianAssembler.cpp b/ProcessLib/CentralDifferencesJacobianAssembler.cpp
index c335fa99933afe6e1298e712b42b86c2d5c07aeb..3a93d3496c2aa0c58be56b8e6747236f69d3a406 100644
--- a/ProcessLib/CentralDifferencesJacobianAssembler.cpp
+++ b/ProcessLib/CentralDifferencesJacobianAssembler.cpp
@@ -26,7 +26,7 @@ CentralDifferencesJacobianAssembler::CentralDifferencesJacobianAssembler(
 }
 
 void CentralDifferencesJacobianAssembler::assembleWithJacobian(
-    LocalAssemblerInterface& local_assembler, const double t,
+    LocalAssemblerInterface& local_assembler, const double t, double const dt,
     const std::vector<double>& local_x_data,
     const std::vector<double>& local_xdot_data, const double dxdot_dx,
     const double dx_dx, std::vector<double>& local_M_data,
diff --git a/ProcessLib/CentralDifferencesJacobianAssembler.h b/ProcessLib/CentralDifferencesJacobianAssembler.h
index 27b68a30684f8f4bd69aedcd83ed03ef4c165749..2d5736fd18b2ad3069339817b0744163081ed34e 100644
--- a/ProcessLib/CentralDifferencesJacobianAssembler.h
+++ b/ProcessLib/CentralDifferencesJacobianAssembler.h
@@ -50,13 +50,15 @@ public:
     //!
     //! \attention It is assumed that the local vectors and matrices are ordered
     //! by component.
-    void assembleWithJacobian(
-        LocalAssemblerInterface& local_assembler, double const t,
-        std::vector<double> const& local_x,
-        std::vector<double> const& local_xdot, const double dxdot_dx,
-        const double dx_dx, std::vector<double>& local_M_data,
-        std::vector<double>& local_K_data, std::vector<double>& local_b_data,
-        std::vector<double>& local_Jac_data) override;
+    void assembleWithJacobian(LocalAssemblerInterface& local_assembler,
+                              double const t, double const dt,
+                              std::vector<double> const& local_x,
+                              std::vector<double> const& local_xdot,
+                              const double dxdot_dx, const double dx_dx,
+                              std::vector<double>& local_M_data,
+                              std::vector<double>& local_K_data,
+                              std::vector<double>& local_b_data,
+                              std::vector<double>& local_Jac_data) override;
 
 private:
     std::vector<double> const _absolute_epsilons;
diff --git a/ProcessLib/CompareJacobiansJacobianAssembler.cpp b/ProcessLib/CompareJacobiansJacobianAssembler.cpp
index 0955881bc42ba61fe72d92af85a3fcb86b9db76a..816f60130c09e8a6447f4993ef117e45ed13981e 100644
--- a/ProcessLib/CompareJacobiansJacobianAssembler.cpp
+++ b/ProcessLib/CompareJacobiansJacobianAssembler.cpp
@@ -125,7 +125,7 @@ const std::string msg_fatal =
 namespace ProcessLib
 {
 void CompareJacobiansJacobianAssembler::assembleWithJacobian(
-    LocalAssemblerInterface& local_assembler, double const t,
+    LocalAssemblerInterface& local_assembler, double const t, double const dt,
     std::vector<double> const& local_x, std::vector<double> const& local_xdot,
     const double dxdot_dx, const double dx_dx,
     std::vector<double>& local_M_data, std::vector<double>& local_K_data,
@@ -147,7 +147,7 @@ void CompareJacobiansJacobianAssembler::assembleWithJacobian(
 
     // First assembly -- the one whose results will be added to the global
     // equation system finally.
-    _asm1->assembleWithJacobian(local_assembler, t, local_x, local_xdot,
+    _asm1->assembleWithJacobian(local_assembler, t, dt, local_x, local_xdot,
                                 dxdot_dx, dx_dx, local_M_data, local_K_data,
                                 local_b_data, local_Jac_data);
 
@@ -161,7 +161,7 @@ void CompareJacobiansJacobianAssembler::assembleWithJacobian(
     std::vector<double> local_Jac_data2;
 
     // Second assembly -- used for checking only.
-    _asm2->assembleWithJacobian(local_assembler, t, local_x, local_xdot,
+    _asm2->assembleWithJacobian(local_assembler, t, dt, local_x, local_xdot,
                                 dxdot_dx, dx_dx, local_M_data2, local_K_data2,
                                 local_b_data2, local_Jac_data2);
 
diff --git a/ProcessLib/CompareJacobiansJacobianAssembler.h b/ProcessLib/CompareJacobiansJacobianAssembler.h
index e4170e1287f2e26c6a9f5ee5de74ea8ec12f61f5..3c429372b3f14c770fd25691bb7e421f876ee24a 100644
--- a/ProcessLib/CompareJacobiansJacobianAssembler.h
+++ b/ProcessLib/CompareJacobiansJacobianAssembler.h
@@ -52,7 +52,7 @@ public:
     }
 
     void assembleWithJacobian(LocalAssemblerInterface& local_assembler,
-                              double const t,
+                              double const t, double const dt,
                               std::vector<double> const& local_x,
                               std::vector<double> const& local_xdot,
                               const double dxdot_dx, const double dx_dx,
diff --git a/ProcessLib/LocalAssemblerInterface.cpp b/ProcessLib/LocalAssemblerInterface.cpp
index a7f7d059506f50883e86d41255e2e2f8d945b733..4c35edd87287415b7791183d4e4fb5f3e47930e8 100644
--- a/ProcessLib/LocalAssemblerInterface.cpp
+++ b/ProcessLib/LocalAssemblerInterface.cpp
@@ -39,7 +39,8 @@ void LocalAssemblerInterface::assembleForStaggeredScheme(
 }
 
 void LocalAssemblerInterface::assembleWithJacobian(
-    double const /*t*/, std::vector<double> const& /*local_x*/,
+    double const /*t*/, double const /*dt*/,
+    std::vector<double> const& /*local_x*/,
     std::vector<double> const& /*local_xdot*/, const double /*dxdot_dx*/,
     const double /*dx_dx*/, std::vector<double>& /*local_M_data*/,
     std::vector<double>& /*local_K_data*/,
diff --git a/ProcessLib/LocalAssemblerInterface.h b/ProcessLib/LocalAssemblerInterface.h
index b19832a86dd650242fab4df530dc2d9dd1649b4a..dcac7e9e4aa047a71ea37c64583a300abd775a91 100644
--- a/ProcessLib/LocalAssemblerInterface.h
+++ b/ProcessLib/LocalAssemblerInterface.h
@@ -58,7 +58,7 @@ public:
         std::vector<double>& local_b_data,
         LocalCoupledSolutions const& coupled_solutions);
 
-    virtual void assembleWithJacobian(double const t,
+    virtual void assembleWithJacobian(double const t, double const dt,
                                       std::vector<double> const& local_x,
                                       std::vector<double> const& local_xdot,
                                       const double dxdot_dx, const double dx_dx,
diff --git a/ProcessLib/Process.cpp b/ProcessLib/Process.cpp
index f131c7d716b0cf3c73b3ebba9dbec8db66e36bf6..f4c04257a40ea00c399b1b49aacc4ccff072a6f1 100644
--- a/ProcessLib/Process.cpp
+++ b/ProcessLib/Process.cpp
@@ -210,7 +210,8 @@ void Process::assemble(const double t, GlobalVector const& x, GlobalMatrix& M,
     _source_term_collections[pcs_id].integrate(t, x, b, nullptr);
 }
 
-void Process::assembleWithJacobian(const double t, GlobalVector const& x,
+void Process::assembleWithJacobian(const double t, double const dt,
+                                   GlobalVector const& x,
                                    GlobalVector const& xdot,
                                    const double dxdot_dx, const double dx_dx,
                                    GlobalMatrix& M, GlobalMatrix& K,
@@ -219,8 +220,8 @@ void Process::assembleWithJacobian(const double t, GlobalVector const& x,
     MathLib::LinAlg::setLocalAccessibleVector(x);
     MathLib::LinAlg::setLocalAccessibleVector(xdot);
 
-    assembleWithJacobianConcreteProcess(t, x, xdot, dxdot_dx, dx_dx, M, K, b,
-                                        Jac);
+    assembleWithJacobianConcreteProcess(t, dt, x, xdot, dxdot_dx, dx_dx, M, K,
+                                        b, Jac);
 
     // TODO: apply BCs to Jacobian.
     const auto pcs_id =
diff --git a/ProcessLib/Process.h b/ProcessLib/Process.h
index 3de497f10bfccba1248eb3457564173be2d090ee..22ce9b9a881f5df982aafec40de891e216660fb7 100644
--- a/ProcessLib/Process.h
+++ b/ProcessLib/Process.h
@@ -101,10 +101,10 @@ public:
     void assemble(const double t, GlobalVector const& x, GlobalMatrix& M,
                   GlobalMatrix& K, GlobalVector& b) final;
 
-    void assembleWithJacobian(const double t, GlobalVector const& x,
-                              GlobalVector const& xdot, const double dxdot_dx,
-                              const double dx_dx, GlobalMatrix& M,
-                              GlobalMatrix& K, GlobalVector& b,
+    void assembleWithJacobian(const double t, double const dt,
+                              GlobalVector const& x, GlobalVector const& xdot,
+                              const double dxdot_dx, const double dx_dx,
+                              GlobalMatrix& M, GlobalMatrix& K, GlobalVector& b,
                               GlobalMatrix& Jac) final;
 
     std::vector<NumLib::IndexValueVector<GlobalIndexType>> const*
@@ -194,9 +194,10 @@ private:
                                          GlobalVector& b) = 0;
 
     virtual void assembleWithJacobianConcreteProcess(
-        const double t, GlobalVector const& x, GlobalVector const& xdot,
-        const double dxdot_dx, const double dx_dx, GlobalMatrix& M,
-        GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) = 0;
+        const double t, double const dt, GlobalVector const& x,
+        GlobalVector const& xdot, const double dxdot_dx, const double dx_dx,
+        GlobalMatrix& M, GlobalMatrix& K, GlobalVector& b,
+        GlobalMatrix& Jac) = 0;
 
     virtual void preTimestepConcreteProcess(GlobalVector const& /*x*/,
                                             const double /*t*/,
diff --git a/ProcessLib/SmallDeformation/SmallDeformationFEM.h b/ProcessLib/SmallDeformation/SmallDeformationFEM.h
index 82bad1bd52f5527a4e735ad2c7904ca55f0f2d17..0b4988ef9df057c43a88c18e41aff010d344ffac 100644
--- a/ProcessLib/SmallDeformation/SmallDeformationFEM.h
+++ b/ProcessLib/SmallDeformation/SmallDeformationFEM.h
@@ -230,7 +230,7 @@ public:
             "implemented.");
     }
 
-    void assembleWithJacobian(double const t,
+    void assembleWithJacobian(double const t, double const dt,
                               std::vector<double> const& local_x,
                               std::vector<double> const& /*local_xdot*/,
                               const double /*dxdot_dx*/, const double /*dx_dx*/,
@@ -295,8 +295,8 @@ public:
                     local_x.data(), ShapeFunction::NPOINTS * DisplacementDim);
 
             auto&& solution = _ip_data[ip].solid_material.integrateStress(
-                t, x_position, _process_data.dt, eps_prev, eps, sigma_prev,
-                *state, _process_data.reference_temperature);
+                t, x_position, dt, eps_prev, eps, sigma_prev, *state,
+                _process_data.reference_temperature);
 
             if (!solution)
             {
diff --git a/ProcessLib/SmallDeformation/SmallDeformationProcess.cpp b/ProcessLib/SmallDeformation/SmallDeformationProcess.cpp
index f884f4c96983a471c6f3b6c7489c75f8648208ce..beca0fe087cf600516303f7ac9dc5740e86c8d0d 100644
--- a/ProcessLib/SmallDeformation/SmallDeformationProcess.cpp
+++ b/ProcessLib/SmallDeformation/SmallDeformationProcess.cpp
@@ -260,12 +260,10 @@ void SmallDeformationProcess<DisplacementDim>::assembleConcreteProcess(
 
 template <int DisplacementDim>
 void SmallDeformationProcess<DisplacementDim>::
-    assembleWithJacobianConcreteProcess(const double t, GlobalVector const& x,
-                                        GlobalVector const& xdot,
-                                        const double dxdot_dx,
-                                        const double dx_dx, GlobalMatrix& M,
-                                        GlobalMatrix& K, GlobalVector& b,
-                                        GlobalMatrix& Jac)
+    assembleWithJacobianConcreteProcess(
+        const double t, double const dt, GlobalVector const& x,
+        GlobalVector const& xdot, const double dxdot_dx, const double dx_dx,
+        GlobalMatrix& M, GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac)
 {
     DBUG("AssembleWithJacobian SmallDeformationProcess.");
 
@@ -277,23 +275,13 @@ void SmallDeformationProcess<DisplacementDim>::
     // Call global assembler for each local assembly item.
     GlobalExecutor::executeSelectedMemberDereferenced(
         _global_assembler, &VectorMatrixAssembler::assembleWithJacobian,
-        _local_assemblers, pv.getActiveElementIDs(), dof_table, t, x,
-        xdot, dxdot_dx, dx_dx, M, K, b, Jac, _coupled_solutions);
+        _local_assemblers, pv.getActiveElementIDs(), dof_table, t, dt, x, xdot,
+        dxdot_dx, dx_dx, M, K, b, Jac, _coupled_solutions);
 
     transformVariableFromGlobalVector(b, 0, *_local_to_global_index_map,
                                       *_nodal_forces, std::negate<double>());
 }
 
-template <int DisplacementDim>
-void SmallDeformationProcess<DisplacementDim>::preTimestepConcreteProcess(
-    GlobalVector const& /*x*/, double const /*t*/, double const dt,
-    const int /*process_id*/)
-{
-    DBUG("PreTimestep SmallDeformationProcess.");
-
-    _process_data.dt = dt;
-}
-
 template <int DisplacementDim>
 void SmallDeformationProcess<DisplacementDim>::postTimestepConcreteProcess(
     GlobalVector const& x, const double t, const double dt,
diff --git a/ProcessLib/SmallDeformation/SmallDeformationProcess.h b/ProcessLib/SmallDeformation/SmallDeformationProcess.h
index 9529ec70a944a1a15b6c92149d7883513acff89e..8cb3a8ef46d7eca80222fe9f1cc7354366d9d5ce 100644
--- a/ProcessLib/SmallDeformation/SmallDeformationProcess.h
+++ b/ProcessLib/SmallDeformation/SmallDeformationProcess.h
@@ -55,13 +55,10 @@ private:
         GlobalVector& b) override;
 
     void assembleWithJacobianConcreteProcess(
-        const double t, GlobalVector const& x, GlobalVector const& xdot,
-        const double dxdot_dx, const double dx_dx, GlobalMatrix& M,
-        GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override;
-
-    void preTimestepConcreteProcess(
-        GlobalVector const& x, double const t, double const dt,
-        const int process_id) override;
+        const double t, double const dt, GlobalVector const& x,
+        GlobalVector const& xdot, const double dxdot_dx, const double dx_dx,
+        GlobalMatrix& M, GlobalMatrix& K, GlobalVector& b,
+        GlobalMatrix& Jac) override;
 
     void postTimestepConcreteProcess(GlobalVector const& x, const double t,
                                      const double delta_t,
diff --git a/ProcessLib/SmallDeformation/SmallDeformationProcessData.h b/ProcessLib/SmallDeformation/SmallDeformationProcessData.h
index f0dcd2cc5551e756413f195963704a4a05959815..8b5a21e98db3291783865ba6c5836e7268eebeb8 100644
--- a/ProcessLib/SmallDeformation/SmallDeformationProcessData.h
+++ b/ProcessLib/SmallDeformation/SmallDeformationProcessData.h
@@ -53,8 +53,6 @@ struct SmallDeformationProcessData
 
     double const reference_temperature =
         std::numeric_limits<double>::quiet_NaN();
-
-    double dt = std::numeric_limits<double>::quiet_NaN();
 };
 
 }  // namespace SmallDeformation
diff --git a/ProcessLib/VectorMatrixAssembler.cpp b/ProcessLib/VectorMatrixAssembler.cpp
index efdda6826e91d4d135c3b86db7d6dee437e6112c..45abf2db3bb07fa4f134ceaa52547fb6b206dea8 100644
--- a/ProcessLib/VectorMatrixAssembler.cpp
+++ b/ProcessLib/VectorMatrixAssembler.cpp
@@ -108,9 +108,9 @@ void VectorMatrixAssembler::assembleWithJacobian(
     std::size_t const mesh_item_id, LocalAssemblerInterface& local_assembler,
     std::vector<std::reference_wrapper<NumLib::LocalToGlobalIndexMap>> const&
         dof_tables,
-    const double t, GlobalVector const& x, GlobalVector const& xdot,
-    const double dxdot_dx, const double dx_dx, GlobalMatrix& M, GlobalMatrix& K,
-    GlobalVector& b, GlobalMatrix& Jac,
+    const double t, double const dt, GlobalVector const& x,
+    GlobalVector const& xdot, const double dxdot_dx, const double dx_dx,
+    GlobalMatrix& M, GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac,
     CoupledSolutionsForStaggeredScheme const* const cpl_xs)
 {
     std::vector<std::vector<GlobalIndexType>> indices_of_processes;
@@ -135,7 +135,7 @@ void VectorMatrixAssembler::assembleWithJacobian(
     {
         auto const local_x = x.get(indices);
         _jacobian_assembler->assembleWithJacobian(
-            local_assembler, t, local_x, local_xdot, dxdot_dx, dx_dx,
+            local_assembler, t, dt, local_x, local_xdot, dxdot_dx, dx_dx,
             _local_M_data, _local_K_data, _local_b_data, _local_Jac_data);
     }
     else
diff --git a/ProcessLib/VectorMatrixAssembler.h b/ProcessLib/VectorMatrixAssembler.h
index 62da2ad0ec188c0a1acc96910ac043ebce984944..677e91d846c2025fab8a93056acfcf1f3f69c7ff 100644
--- a/ProcessLib/VectorMatrixAssembler.h
+++ b/ProcessLib/VectorMatrixAssembler.h
@@ -59,9 +59,9 @@ public:
         std::vector<
             std::reference_wrapper<NumLib::LocalToGlobalIndexMap>> const&
             dof_tables,
-        const double t, GlobalVector const& x, GlobalVector const& xdot,
-        const double dxdot_dx, const double dx_dx, GlobalMatrix& M,
-        GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac,
+        const double t, double const dt, GlobalVector const& x,
+        GlobalVector const& xdot, const double dxdot_dx, const double dx_dx,
+        GlobalMatrix& M, GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac,
         CoupledSolutionsForStaggeredScheme const* const cpl_xs);
 
 private: