diff --git a/ProcessLib/ComponentTransport/ComponentTransportFEM.h b/ProcessLib/ComponentTransport/ComponentTransportFEM.h
index 0e64d8fda203840b9a2798fab0aaa14c689c4e00..c362b29ab69578c33e9389d83bd441f7ec60482d 100644
--- a/ProcessLib/ComponentTransport/ComponentTransportFEM.h
+++ b/ProcessLib/ComponentTransport/ComponentTransportFEM.h
@@ -70,6 +70,12 @@ public:
         std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
         std::vector<double>& cache) const = 0;
 
+    virtual std::vector<double> const& getInterpolatedLocalSolution(
+        const double /*t*/,
+        std::vector<GlobalVector*> const& int_pt_x,
+        std::vector<NumLib::LocalToGlobalIndexMap const*> const& /*dof_table*/,
+        std::vector<double>& cache) const = 0;
+
 protected:
     CoupledSolutionsForStaggeredScheme* _coupled_solutions{nullptr};
 };
@@ -891,6 +897,24 @@ public:
         return flux;
     }
 
+    std::vector<double> const& getInterpolatedLocalSolution(
+        const double /*t*/,
+        std::vector<GlobalVector*> const& int_pt_x,
+        std::vector<NumLib::LocalToGlobalIndexMap const*> const& /*dof_table*/,
+        std::vector<double>& cache) const override
+    {
+        assert(_process_data.chemical_process_data);
+        assert(int_pt_x.size() == 1);
+
+        cache.clear();
+        auto const ele_id = _element.getID();
+        auto const& indices = _process_data.chemical_process_data
+                                  ->chemical_system_index_map[ele_id];
+        cache = int_pt_x[0]->get(indices);
+
+        return cache;
+    }
+
 private:
     MeshLib::Element const& _element;
     ComponentTransportProcessData const& _process_data;