diff --git a/src/language/modules/SchemeModule.cpp b/src/language/modules/SchemeModule.cpp
index e3c6f1b96bf5ae660f7e3648ab70858edd4c20a3..b111e8510232be7ea87d8807a0cae93cd50d0c64 100644
--- a/src/language/modules/SchemeModule.cpp
+++ b/src/language/modules/SchemeModule.cpp
@@ -31,6 +31,7 @@
 #include <scheme/FixedBoundaryConditionDescriptor.hpp>
 #include <scheme/FourierBoundaryConditionDescriptor.hpp>
 #include <scheme/FreeBoundaryConditionDescriptor.hpp>
+#include <scheme/HyperelasticSolver.hpp>
 #include <scheme/IBoundaryConditionDescriptor.hpp>
 #include <scheme/IDiscreteFunction.hpp>
 #include <scheme/IDiscreteFunctionDescriptor.hpp>
@@ -404,6 +405,14 @@ SchemeModule::SchemeModule()
 
                               ));
 
+  this->_addBuiltinFunction("hyperelastic_dt", std::function(
+
+                                                 [](const std::shared_ptr<const IDiscreteFunction>& c) -> double {
+                                                   return hyperelastic_dt(c);
+                                                 }
+
+                                                 ));
+
   this
     ->_addBuiltinFunction("cell_volume",
                           std::function(
diff --git a/src/scheme/CMakeLists.txt b/src/scheme/CMakeLists.txt
index 115d7bc08ce9aa72dced807b9120431f17543864..349f5cfd968c63b98fd6b010bd43dedf2caaafcf 100644
--- a/src/scheme/CMakeLists.txt
+++ b/src/scheme/CMakeLists.txt
@@ -3,6 +3,7 @@
 add_library(
   PugsScheme
   AcousticSolver.cpp
+  HyperelasticSolver.cpp
   DiscreteFunctionIntegrator.cpp
   DiscreteFunctionInterpoler.cpp
   DiscreteFunctionUtils.cpp