diff --git a/ProcessLib/HT/CreateHTProcess.cpp b/ProcessLib/HT/CreateHTProcess.cpp
index 9caebb641d1c44d2baf19834f0c359c243ee69bd..7250c0875150660ad85b71543490df136117d314 100644
--- a/ProcessLib/HT/CreateHTProcess.cpp
+++ b/ProcessLib/HT/CreateHTProcess.cpp
@@ -135,14 +135,22 @@ std::unique_ptr<Process> createHTProcess(
          thermal_conductivity_fluid.name.c_str());
 
     // Specific body force parameter.
-    Eigen::Vector3d specific_body_force;
+    Eigen::VectorXd specific_body_force;
     std::vector<double> const b =
         //! \ogs_file_param{prj__processes__process__HT__specific_body_force}
         config.getConfigParameter<std::vector<double>>("specific_body_force");
-    assert(!b.empty() && b.size() < 4);
+    assert(b.size() > 0 && b.size() < 4);
+    if (b.size() < mesh.getDimension())
+        OGS_FATAL(
+            "specific body force (gravity vector) has %d components, mesh "
+            "dimension is %d",
+            b.size(), mesh.getDimension());
     bool const has_gravity = MathLib::toVector(b).norm() > 0;
     if (has_gravity)
+    {
+        specific_body_force.resize(b.size());
         std::copy_n(b.data(), b.size(), specific_body_force.data());
+    }
 
     HTProcessData process_data{
         std::move(porous_media_properties),
diff --git a/ProcessLib/HT/HTFEM.h b/ProcessLib/HT/HTFEM.h
index 92ff83a8aaa995c68237c8b9455c751ad6253ce1..b7afdf6fc207ee573ae08f0d59275f09d1adc7b1 100644
--- a/ProcessLib/HT/HTFEM.h
+++ b/ProcessLib/HT/HTFEM.h
@@ -146,7 +146,7 @@ public:
         auto p_nodal_values =
             Eigen::Map<const NodalVectorType>(&local_x[num_nodes], num_nodes);
 
-        auto const & b = _process_data.specific_body_force.head(GlobalDim);
+        auto const& b = _process_data.specific_body_force;
 
         MaterialLib::Fluid::FluidProperty::ArrayType vars;
 
diff --git a/ProcessLib/HT/HTProcessData.h b/ProcessLib/HT/HTProcessData.h
index 94343ddeae1788e0a131af1478be0d6702d7f4ea..906ef3e60239184d3396f295a4888a1e8b508aaa 100644
--- a/ProcessLib/HT/HTProcessData.h
+++ b/ProcessLib/HT/HTProcessData.h
@@ -39,7 +39,7 @@ struct HTProcessData
         ProcessLib::Parameter<double> const& specific_heat_capacity_fluid_,
         ProcessLib::Parameter<double> const& thermal_conductivity_solid_,
         ProcessLib::Parameter<double> const& thermal_conductivity_fluid_,
-        Eigen::Vector3d specific_body_force_,
+        Eigen::VectorXd specific_body_force_,
         bool const has_gravity_)
         : porous_media_properties(std::move(porous_media_properties_)),
           viscosity_model(std::move(viscosity_model_)),
@@ -96,7 +96,7 @@ struct HTProcessData
     Parameter<double> const& thermal_dispersivity_transversal;
     Parameter<double> const& thermal_conductivity_solid;
     Parameter<double> const& thermal_conductivity_fluid;
-    Eigen::Vector3d const specific_body_force;
+    Eigen::VectorXd const specific_body_force;
     bool const has_gravity;
 };