diff --git a/CHANGELOG.md b/CHANGELOG.md
index dd48f7bd05b9f1db1ada9208d075213efda0ebf4..41311b2538a02b3017b5862e97c90d1a2430d921 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
 # Master
 
+- The file `rod3d.cc` has been renamed to `cosserat-rod.cc`,
+  to better reflect what it does.
+
 - In the `BulkCosseratDensity` class: Make the type of curvature
   tensor controllable at run-time (previously, ugly preprocessor switches
   where used).  Among its parameters `BulkCosseratDensity` now expects
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index d52c8b69c9f9cf4049075705aac85aeff9a263e1..2ea90e75e816e00f7d67b28b85ea96b1721c8387 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,8 +1,8 @@
 set(programs compute-disc-error
+             cosserat-rod
              film-on-substrate-stress-plot
              gradient-flow
              harmonicmaps
-             rod3d
              simofoxshell)
 #            rodobstacle)
 
diff --git a/src/rod3d.cc b/src/cosserat-rod.cc
similarity index 98%
rename from src/rod3d.cc
rename to src/cosserat-rod.cc
index faed0ac09d120e965cc16f48dbf393112fc4fc04..9105b469c2c8e3c4d53e90aa995973c4cf19a978 100644
--- a/src/rod3d.cc
+++ b/src/cosserat-rod.cc
@@ -56,7 +56,7 @@ int main (int argc, char *argv[]) try
 
   // Check for appropriate number of command line arguments
   if (argc < 3)
-    DUNE_THROW(Exception, "Usage: ./rod3d <python path> <parameter file>");
+    DUNE_THROW(Exception, "Usage: ./cosserat-rod <python path> <parameter file>");
 
   // Start Python interpreter
   Python::start();
@@ -334,7 +334,7 @@ int main (int argc, char *argv[]) try
     vtkWriter.addPointData(*directorFunction[i], "director " + std::to_string(i), 3);
   }
 
-  vtkWriter.write(resultPath + "rod3d-result");
+  vtkWriter.write(resultPath + "cosserat-rod-result");
 
 }
 catch (Exception& e)