diff --git a/Documentation/ProjectFile/prj/processes/process/HYDRO_MECHANICS/t_mass_lumping.md b/Documentation/ProjectFile/prj/processes/process/HYDRO_MECHANICS/t_mass_lumping.md
new file mode 100644
index 0000000000000000000000000000000000000000..fb209990048c2bf38cf028265aadd0d60994b03f
--- /dev/null
+++ b/Documentation/ProjectFile/prj/processes/process/HYDRO_MECHANICS/t_mass_lumping.md
@@ -0,0 +1 @@
+\copydoc ProcessLib::HydroMechanics::HydroMechanicsProcessData::mass_lumping
diff --git a/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp b/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp
index c381578582e18576612e92a9bada8b56b4a0532d..b4c8cf25cf569781e375ece9b87794896f83d63b 100644
--- a/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp
+++ b/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp
@@ -131,6 +131,9 @@ std::unique_ptr<Process> createHydroMechanicsProcess(
         std::copy_n(b.data(), b.size(), specific_body_force.data());
     }
 
+    //! \ogs_file_param{prj__processes__process__HYDRO_MECHANICS__mass_lumping}
+    auto mass_lumping = config.getConfigParameter<bool>("mass_lumping", false);
+
     auto media_map =
         MaterialPropertyLib::createMaterialSpatialDistributionMap(media, mesh);
 
@@ -165,7 +168,8 @@ std::unique_ptr<Process> createHydroMechanicsProcess(
     HydroMechanicsProcessData<DisplacementDim> process_data{
         materialIDs(mesh),     std::move(media_map),
         std::move(solid_constitutive_relations),
-        initial_stress,        specific_body_force};
+        initial_stress,        specific_body_force,
+        mass_lumping};
 
     SecondaryVariableCollection secondary_variables;
 
diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h
index 7138be5cf4a6247a90e1cf29c026cf8da0a9bdb5..02ba47c17fd8cead4d4fa443c4079a779161bb22 100644
--- a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h
+++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h
@@ -303,6 +303,11 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement,
                                                           pressure_index)
         .noalias() = -Kup;
 
+    if (_process_data.mass_lumping)
+    {
+        storage_p = storage_p.colwise().sum().eval().asDiagonal();
+    }
+
     // pressure equation, pressure part.
     local_Jac
         .template block<pressure_size, pressure_size>(pressure_index,
diff --git a/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h b/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h
index 362f502ebd10abda8e3ac86d0d84b818449658cc..ddeafa5b5221ccf18e915f4b3556a436c8e034ee 100644
--- a/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h
+++ b/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h
@@ -55,6 +55,8 @@ struct HydroMechanicsProcessData
     /// A vector of displacement dimension's length.
     Eigen::Matrix<double, DisplacementDim, 1> const specific_body_force;
 
+    bool const mass_lumping;
+
     MeshLib::PropertyVector<double>* pressure_interpolated = nullptr;
     std::array<MeshLib::PropertyVector<double>*, 3> principal_stress_vector = {
         nullptr, nullptr, nullptr};