diff --git a/src/language/modules/SchemeModule.cpp b/src/language/modules/SchemeModule.cpp
index 8481a1ed20958162866820c139983971e35f373b..f1a7d8d73606a6cd71e4aa6b4f7253f8773a804e 100644
--- a/src/language/modules/SchemeModule.cpp
+++ b/src/language/modules/SchemeModule.cpp
@@ -42,10 +42,12 @@
 #include <scheme/IBoundaryConditionDescriptor.hpp>
 #include <scheme/IDiscreteFunctionDescriptor.hpp>
 #include <scheme/InflowBoundaryConditionDescriptor.hpp>
+#include <scheme/InflowListBoundaryConditionDescriptor.hpp>
 #include <scheme/NeumannBoundaryConditionDescriptor.hpp>
 #include <scheme/OutflowBoundaryConditionDescriptor.hpp>
 #include <scheme/SymmetryBoundaryConditionDescriptor.hpp>
 #include <scheme/VariableBCDescriptor.hpp>
+#include <scheme/WallBoundaryConditionDescriptor.hpp>
 #include <utils/Socket.hpp>
 
 #include <utils/checkpointing/ReadDiscreteFunctionVariant.hpp>
@@ -348,6 +350,15 @@ SchemeModule::SchemeModule()
 
                                           ));
 
+  this->_addBuiltinFunction("wall", std::function(
+
+                                      [](std::shared_ptr<const IBoundaryDescriptor> boundary)
+                                        -> std::shared_ptr<const IBoundaryConditionDescriptor> {
+                                        return std::make_shared<WallBoundaryConditionDescriptor>(boundary);
+                                      }
+
+                                      ));
+
   this->_addBuiltinFunction("pressure", std::function(
 
                                           [](std::shared_ptr<const IBoundaryDescriptor> boundary,
@@ -407,6 +418,18 @@ SchemeModule::SchemeModule()
 
                                         ));
 
+  this->_addBuiltinFunction("inflow_list",
+                            std::function(
+
+                              [](std::shared_ptr<const IBoundaryDescriptor> boundary,
+                                 const std::vector<FunctionSymbolId>& function_id_list)
+                                -> std::shared_ptr<const IBoundaryConditionDescriptor> {
+                                return std::make_shared<InflowListBoundaryConditionDescriptor>(boundary,
+                                                                                               function_id_list);
+                              }
+
+                              ));
+
   this->_addBuiltinFunction("outflow", std::function(
 
                                          [](std::shared_ptr<const IBoundaryDescriptor> boundary)
diff --git a/src/scheme/IBoundaryConditionDescriptor.hpp b/src/scheme/IBoundaryConditionDescriptor.hpp
index 58e8b6076ff2c363049de6f107e6a949966d6c72..fc9ff381b97758e79642647a36680364093c193b 100644
--- a/src/scheme/IBoundaryConditionDescriptor.hpp
+++ b/src/scheme/IBoundaryConditionDescriptor.hpp
@@ -18,9 +18,11 @@ class IBoundaryConditionDescriptor
     fixed,
     free,
     inflow,
+    inflow_list,
     neumann,
     outflow,
-    symmetry
+    symmetry,
+    wall
   };
 
  protected:
diff --git a/src/scheme/InflowListBoundaryConditionDescriptor.hpp b/src/scheme/InflowListBoundaryConditionDescriptor.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..ad1427cf72532b770a378c5e86ecbc1cc39ac063
--- /dev/null
+++ b/src/scheme/InflowListBoundaryConditionDescriptor.hpp
@@ -0,0 +1,48 @@
+#ifndef INFLOW_LIST_BOUNDARY_CONDITION_DESCRIPTOR_HPP
+#define INFLOW_LIST_BOUNDARY_CONDITION_DESCRIPTOR_HPP
+
+#include <language/utils/FunctionSymbolId.hpp>
+#include <mesh/IBoundaryDescriptor.hpp>
+#include <scheme/BoundaryConditionDescriptorBase.hpp>
+
+#include <memory>
+
+class InflowListBoundaryConditionDescriptor : public BoundaryConditionDescriptorBase
+{
+ private:
+  std::ostream&
+  _write(std::ostream& os) const final
+  {
+    os << "inflow_list(" << ',' << *m_boundary_descriptor << ")";
+    return os;
+  }
+
+  const std::vector<FunctionSymbolId> m_function_symbol_id_list;
+
+ public:
+  const std::vector<FunctionSymbolId>&
+  functionSymbolIdList() const
+  {
+    return m_function_symbol_id_list;
+  }
+
+  Type
+  type() const final
+  {
+    return Type::inflow_list;
+  }
+
+  InflowListBoundaryConditionDescriptor(std::shared_ptr<const IBoundaryDescriptor> boundary_descriptor,
+                                        const std::vector<FunctionSymbolId>& function_symbol_id_list)
+    : BoundaryConditionDescriptorBase{boundary_descriptor}, m_function_symbol_id_list{function_symbol_id_list}
+  {
+    ;
+  }
+
+  InflowListBoundaryConditionDescriptor(const InflowListBoundaryConditionDescriptor&) = delete;
+  InflowListBoundaryConditionDescriptor(InflowListBoundaryConditionDescriptor&&)      = delete;
+
+  ~InflowListBoundaryConditionDescriptor() = default;
+};
+
+#endif   // INFLOW_LIST_BOUNDARY_CONDITION_DESCRIPTOR_HPP
diff --git a/src/scheme/WallBoundaryConditionDescriptor.hpp b/src/scheme/WallBoundaryConditionDescriptor.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..cf16fba7d1186f0d3c200884ebc319c4b461e582
--- /dev/null
+++ b/src/scheme/WallBoundaryConditionDescriptor.hpp
@@ -0,0 +1,40 @@
+#ifndef WALL_BOUNDARY_CONDITION_DESCRIPTOR_HPP
+#define WALL_BOUNDARY_CONDITION_DESCRIPTOR_HPP
+
+#include <language/utils/FunctionSymbolId.hpp>
+#include <mesh/IBoundaryDescriptor.hpp>
+#include <scheme/BoundaryConditionDescriptorBase.hpp>
+
+#include <memory>
+
+class WallBoundaryConditionDescriptor : public BoundaryConditionDescriptorBase
+{
+ private:
+  std::ostream&
+  _write(std::ostream& os) const final
+  {
+    os << "wall(" << *m_boundary_descriptor << ")";
+    return os;
+  }
+
+ public:
+  Type
+  type() const final
+  {
+    return Type::wall;
+  }
+
+  WallBoundaryConditionDescriptor(const std::shared_ptr<const IBoundaryDescriptor>& boundary_descriptor)
+
+    : BoundaryConditionDescriptorBase{boundary_descriptor}
+  {
+    ;
+  }
+
+  WallBoundaryConditionDescriptor(const WallBoundaryConditionDescriptor&) = delete;
+  WallBoundaryConditionDescriptor(WallBoundaryConditionDescriptor&&)      = delete;
+
+  ~WallBoundaryConditionDescriptor() = default;
+};
+
+#endif   // WALL_BOUNDARY_CONDITION_DESCRIPTOR_HPP
diff --git a/src/utils/checkpointing/IBoundaryConditionDescriptorHFType.hpp b/src/utils/checkpointing/IBoundaryConditionDescriptorHFType.hpp
index 4a7632af5b933710d6ddf1356c7b83aa3562442a..210b521164075f275829865397ea1771a460c207 100644
--- a/src/utils/checkpointing/IBoundaryConditionDescriptorHFType.hpp
+++ b/src/utils/checkpointing/IBoundaryConditionDescriptorHFType.hpp
@@ -15,9 +15,11 @@ create_enum_i_boundary_condition_descriptor_type()
           {"fourier", IBoundaryConditionDescriptor::Type::fourier},
           {"free", IBoundaryConditionDescriptor::Type::free},
           {"inflow", IBoundaryConditionDescriptor::Type::inflow},
+          {"inflow_list", IBoundaryConditionDescriptor::Type::inflow_list},
           {"neumann", IBoundaryConditionDescriptor::Type::neumann},
           {"outflow", IBoundaryConditionDescriptor::Type::outflow},
-          {"symmetry", IBoundaryConditionDescriptor::Type::symmetry}};
+          {"symmetry", IBoundaryConditionDescriptor::Type::symmetry},
+          {"wall", IBoundaryConditionDescriptor::Type::wall}};
 }
 HIGHFIVE_REGISTER_TYPE(IBoundaryConditionDescriptor::Type, create_enum_i_boundary_condition_descriptor_type)
 
diff --git a/src/utils/checkpointing/ReadIBoundaryConditionDescriptor.cpp b/src/utils/checkpointing/ReadIBoundaryConditionDescriptor.cpp
index 671a9e7ece3198f766f5ceea45b27a4372e5dcc3..55b43c9f04bf1b3b585df208bd7a3ea86a3d2850 100644
--- a/src/utils/checkpointing/ReadIBoundaryConditionDescriptor.cpp
+++ b/src/utils/checkpointing/ReadIBoundaryConditionDescriptor.cpp
@@ -10,9 +10,11 @@
 #include <scheme/FourierBoundaryConditionDescriptor.hpp>
 #include <scheme/FreeBoundaryConditionDescriptor.hpp>
 #include <scheme/InflowBoundaryConditionDescriptor.hpp>
+#include <scheme/InflowListBoundaryConditionDescriptor.hpp>
 #include <scheme/NeumannBoundaryConditionDescriptor.hpp>
 #include <scheme/OutflowBoundaryConditionDescriptor.hpp>
 #include <scheme/SymmetryBoundaryConditionDescriptor.hpp>
+#include <scheme/WallBoundaryConditionDescriptor.hpp>
 #include <utils/Exceptions.hpp>
 #include <utils/checkpointing/IBoundaryConditionDescriptorHFType.hpp>
 #include <utils/checkpointing/ReadIBoundaryDescriptor.hpp>
@@ -82,6 +84,19 @@ readIBoundaryConditionDescriptor(const HighFive::Group& iboundaryconditiondecrip
                                                                   function_id));
     break;
   }
+  case IBoundaryConditionDescriptor::Type::inflow_list: {
+    const std::vector function_id_list =
+      iboundaryconditiondecriptor_group.getAttribute("function_id_list").read<std::vector<size_t>>();
+
+    std::vector<FunctionSymbolId> function_symbol_id_list;
+    for (auto function_id : function_id_list) {
+      function_symbol_id_list.push_back(*ResumingData::instance().functionSymbolId(function_id));
+    }
+
+    bc_descriptor =
+      std::make_shared<const InflowListBoundaryConditionDescriptor>(i_boundary_descriptor, function_symbol_id_list);
+    break;
+  }
   case IBoundaryConditionDescriptor::Type::neumann: {
     const std::string name = iboundaryconditiondecriptor_group.getAttribute("name").read<std::string>();
     const size_t rhs_id    = iboundaryconditiondecriptor_group.getAttribute("rhs_function_id").read<size_t>();
@@ -99,6 +114,10 @@ readIBoundaryConditionDescriptor(const HighFive::Group& iboundaryconditiondecrip
     bc_descriptor = std::make_shared<const SymmetryBoundaryConditionDescriptor>(i_boundary_descriptor);
     break;
   }
+  case IBoundaryConditionDescriptor::Type::wall: {
+    bc_descriptor = std::make_shared<const WallBoundaryConditionDescriptor>(i_boundary_descriptor);
+    break;
+  }
   }
 
   return bc_descriptor;
diff --git a/src/utils/checkpointing/WriteIBoundaryConditionDescriptor.cpp b/src/utils/checkpointing/WriteIBoundaryConditionDescriptor.cpp
index ca26fdf359c51050b5edc0f82818a2522b8dfb1e..66a8670583ae63442313da42c847bbeee758a2d5 100644
--- a/src/utils/checkpointing/WriteIBoundaryConditionDescriptor.cpp
+++ b/src/utils/checkpointing/WriteIBoundaryConditionDescriptor.cpp
@@ -9,9 +9,11 @@
 #include <scheme/FourierBoundaryConditionDescriptor.hpp>
 #include <scheme/FreeBoundaryConditionDescriptor.hpp>
 #include <scheme/InflowBoundaryConditionDescriptor.hpp>
+#include <scheme/InflowListBoundaryConditionDescriptor.hpp>
 #include <scheme/NeumannBoundaryConditionDescriptor.hpp>
 #include <scheme/OutflowBoundaryConditionDescriptor.hpp>
 #include <scheme/SymmetryBoundaryConditionDescriptor.hpp>
+#include <scheme/WallBoundaryConditionDescriptor.hpp>
 #include <utils/Exceptions.hpp>
 #include <utils/checkpointing/IBoundaryConditionDescriptorHFType.hpp>
 #include <utils/checkpointing/WriteIBoundaryDescriptor.hpp>
@@ -81,6 +83,17 @@ writeIBoundaryConditionDescriptor(HighFive::Group& variable_group,
     variable_group.createAttribute("function_id", inflow_bc_descriptor.functionSymbolId().id());
     break;
   }
+  case IBoundaryConditionDescriptor::Type::inflow_list: {
+    const InflowListBoundaryConditionDescriptor& inflow_list_bc_descriptor =
+      dynamic_cast<const InflowListBoundaryConditionDescriptor&>(iboundary_condition_descriptor);
+    writeIBoundaryDescriptor(boundary_group, inflow_list_bc_descriptor.boundaryDescriptor());
+    std::vector<size_t> function_id_list;
+    for (auto&& function_symbol_id : inflow_list_bc_descriptor.functionSymbolIdList()) {
+      function_id_list.push_back(function_symbol_id.id());
+    }
+    variable_group.createAttribute("function_id_list", function_id_list);
+    break;
+  }
   case IBoundaryConditionDescriptor::Type::neumann: {
     const NeumannBoundaryConditionDescriptor& neumann_bc_descriptor =
       dynamic_cast<const NeumannBoundaryConditionDescriptor&>(iboundary_condition_descriptor);
@@ -101,6 +114,12 @@ writeIBoundaryConditionDescriptor(HighFive::Group& variable_group,
     writeIBoundaryDescriptor(boundary_group, symmetric_bc_descriptor.boundaryDescriptor());
     break;
   }
+  case IBoundaryConditionDescriptor::Type::wall: {
+    const WallBoundaryConditionDescriptor& wall_bc_descriptor =
+      dynamic_cast<const WallBoundaryConditionDescriptor&>(iboundary_condition_descriptor);
+    writeIBoundaryDescriptor(boundary_group, wall_bc_descriptor.boundaryDescriptor());
+    break;
+  }
   }
 }
 
diff --git a/tests/test_checkpointing_IBoundaryConditionDescriptor.cpp b/tests/test_checkpointing_IBoundaryConditionDescriptor.cpp
index f2924291796aa66e6b32866c188860d300b20ad3..34505db62eff529b480c912ce5ca36714c7bc17b 100644
--- a/tests/test_checkpointing_IBoundaryConditionDescriptor.cpp
+++ b/tests/test_checkpointing_IBoundaryConditionDescriptor.cpp
@@ -14,9 +14,11 @@
 #include <scheme/FourierBoundaryConditionDescriptor.hpp>
 #include <scheme/FreeBoundaryConditionDescriptor.hpp>
 #include <scheme/InflowBoundaryConditionDescriptor.hpp>
+#include <scheme/InflowListBoundaryConditionDescriptor.hpp>
 #include <scheme/NeumannBoundaryConditionDescriptor.hpp>
 #include <scheme/OutflowBoundaryConditionDescriptor.hpp>
 #include <scheme/SymmetryBoundaryConditionDescriptor.hpp>
+#include <scheme/WallBoundaryConditionDescriptor.hpp>
 #include <utils/checkpointing/ReadIBoundaryConditionDescriptor.hpp>
 #include <utils/checkpointing/ResumingData.hpp>
 #include <utils/checkpointing/WriteIBoundaryConditionDescriptor.hpp>
@@ -139,6 +141,13 @@ let i: R -> R, x -> x+3;
                                                          p_sym_bc_descriptor)},
                                                        file, useless_group, symbol_table_group);
 
+      auto p_wall_bc_descriptor = std::make_shared<const WallBoundaryConditionDescriptor>(p_boundary_1);
+      checkpointing::writeIBoundaryConditionDescriptor("wall_bc_descriptor",
+                                                       EmbeddedData{std::make_shared<
+                                                         DataHandler<const IBoundaryConditionDescriptor>>(
+                                                         p_wall_bc_descriptor)},
+                                                       file, useless_group, symbol_table_group);
+
       auto p_outflow_bc_descriptor = std::make_shared<const OutflowBoundaryConditionDescriptor>(p_boundary_2);
       checkpointing::writeIBoundaryConditionDescriptor("outflow_bc_descriptor",
                                                        EmbeddedData{std::make_shared<
@@ -199,6 +208,16 @@ let i: R -> R, x -> x+3;
                                                          p_inflow_bc_descriptor)},
                                                        file, useless_group, symbol_table_group);
 
+      const std::vector<FunctionSymbolId> inflow_list_function_id_list{FunctionSymbolId{2, symbol_table},
+                                                                       FunctionSymbolId{3, symbol_table}};
+      auto p_inflow_list_bc_descriptor =
+        std::make_shared<const InflowListBoundaryConditionDescriptor>(p_boundary_1, inflow_list_function_id_list);
+      checkpointing::writeIBoundaryConditionDescriptor("inflow_list_bc_descriptor",
+                                                       EmbeddedData{std::make_shared<
+                                                         DataHandler<const IBoundaryConditionDescriptor>>(
+                                                         p_inflow_list_bc_descriptor)},
+                                                       file, useless_group, symbol_table_group);
+
       file.flush();
 
       checkpointing::ResumingData::create();
@@ -211,6 +230,9 @@ let i: R -> R, x -> x+3;
       EmbeddedData read_sym_bc_descriptor =
         checkpointing::readIBoundaryConditionDescriptor("sym_bc_descriptor", symbol_table_group);
 
+      EmbeddedData read_wall_bc_descriptor =
+        checkpointing::readIBoundaryConditionDescriptor("wall_bc_descriptor", symbol_table_group);
+
       EmbeddedData read_outflow_bc_descriptor =
         checkpointing::readIBoundaryConditionDescriptor("outflow_bc_descriptor", symbol_table_group);
 
@@ -232,12 +254,16 @@ let i: R -> R, x -> x+3;
       EmbeddedData read_inflow_bc_descriptor =
         checkpointing::readIBoundaryConditionDescriptor("inflow_bc_descriptor", symbol_table_group);
 
+      EmbeddedData read_inflow_list_bc_descriptor =
+        checkpointing::readIBoundaryConditionDescriptor("inflow_list_bc_descriptor", symbol_table_group);
+
       auto get_value = [](const EmbeddedData& embedded_data) -> const IBoundaryConditionDescriptor& {
         return *dynamic_cast<const DataHandler<const IBoundaryConditionDescriptor>&>(embedded_data.get()).data_ptr();
       };
 
       REQUIRE_NOTHROW(get_value(read_axis_bc_descriptor));
       REQUIRE_NOTHROW(get_value(read_sym_bc_descriptor));
+      REQUIRE_NOTHROW(get_value(read_wall_bc_descriptor));
       REQUIRE_NOTHROW(get_value(read_outflow_bc_descriptor));
       REQUIRE_NOTHROW(get_value(read_free_bc_descriptor));
       REQUIRE_NOTHROW(get_value(read_fixed_bc_descriptor));
@@ -245,9 +271,11 @@ let i: R -> R, x -> x+3;
       REQUIRE_NOTHROW(get_value(read_neumann_bc_descriptor));
       REQUIRE_NOTHROW(get_value(read_fourier_bc_descriptor));
       REQUIRE_NOTHROW(get_value(read_inflow_bc_descriptor));
+      REQUIRE_NOTHROW(get_value(read_inflow_list_bc_descriptor));
 
       REQUIRE(get_value(read_axis_bc_descriptor).type() == IBoundaryConditionDescriptor::Type::axis);
       REQUIRE(get_value(read_sym_bc_descriptor).type() == IBoundaryConditionDescriptor::Type::symmetry);
+      REQUIRE(get_value(read_wall_bc_descriptor).type() == IBoundaryConditionDescriptor::Type::wall);
       REQUIRE(get_value(read_outflow_bc_descriptor).type() == IBoundaryConditionDescriptor::Type::outflow);
       REQUIRE(get_value(read_free_bc_descriptor).type() == IBoundaryConditionDescriptor::Type::free);
       REQUIRE(get_value(read_fixed_bc_descriptor).type() == IBoundaryConditionDescriptor::Type::fixed);
@@ -255,9 +283,11 @@ let i: R -> R, x -> x+3;
       REQUIRE(get_value(read_neumann_bc_descriptor).type() == IBoundaryConditionDescriptor::Type::neumann);
       REQUIRE(get_value(read_fourier_bc_descriptor).type() == IBoundaryConditionDescriptor::Type::fourier);
       REQUIRE(get_value(read_inflow_bc_descriptor).type() == IBoundaryConditionDescriptor::Type::inflow);
+      REQUIRE(get_value(read_inflow_list_bc_descriptor).type() == IBoundaryConditionDescriptor::Type::inflow_list);
 
       REQUIRE_NOTHROW(dynamic_cast<const AxisBoundaryConditionDescriptor&>(get_value(read_axis_bc_descriptor)));
       REQUIRE_NOTHROW(dynamic_cast<const SymmetryBoundaryConditionDescriptor&>(get_value(read_sym_bc_descriptor)));
+      REQUIRE_NOTHROW(dynamic_cast<const WallBoundaryConditionDescriptor&>(get_value(read_wall_bc_descriptor)));
       REQUIRE_NOTHROW(dynamic_cast<const OutflowBoundaryConditionDescriptor&>(get_value(read_outflow_bc_descriptor)));
       REQUIRE_NOTHROW(dynamic_cast<const FreeBoundaryConditionDescriptor&>(get_value(read_free_bc_descriptor)));
       REQUIRE_NOTHROW(dynamic_cast<const FixedBoundaryConditionDescriptor&>(get_value(read_fixed_bc_descriptor)));
@@ -266,9 +296,12 @@ let i: R -> R, x -> x+3;
       REQUIRE_NOTHROW(dynamic_cast<const NeumannBoundaryConditionDescriptor&>(get_value(read_neumann_bc_descriptor)));
       REQUIRE_NOTHROW(dynamic_cast<const FourierBoundaryConditionDescriptor&>(get_value(read_fourier_bc_descriptor)));
       REQUIRE_NOTHROW(dynamic_cast<const InflowBoundaryConditionDescriptor&>(get_value(read_inflow_bc_descriptor)));
+      REQUIRE_NOTHROW(
+        dynamic_cast<const InflowListBoundaryConditionDescriptor&>(get_value(read_inflow_list_bc_descriptor)));
 
       auto& read_axis_bc = dynamic_cast<const AxisBoundaryConditionDescriptor&>(get_value(read_axis_bc_descriptor));
       auto& read_sym_bc  = dynamic_cast<const SymmetryBoundaryConditionDescriptor&>(get_value(read_sym_bc_descriptor));
+      auto& read_wall_bc = dynamic_cast<const WallBoundaryConditionDescriptor&>(get_value(read_wall_bc_descriptor));
       auto& read_outflow_bc =
         dynamic_cast<const OutflowBoundaryConditionDescriptor&>(get_value(read_outflow_bc_descriptor));
       auto& read_free_bc  = dynamic_cast<const FreeBoundaryConditionDescriptor&>(get_value(read_free_bc_descriptor));
@@ -281,9 +314,12 @@ let i: R -> R, x -> x+3;
         dynamic_cast<const FourierBoundaryConditionDescriptor&>(get_value(read_fourier_bc_descriptor));
       auto& read_inflow_bc =
         dynamic_cast<const InflowBoundaryConditionDescriptor&>(get_value(read_inflow_bc_descriptor));
+      auto& read_inflow_list_bc =
+        dynamic_cast<const InflowListBoundaryConditionDescriptor&>(get_value(read_inflow_list_bc_descriptor));
 
       REQUIRE(read_axis_bc.boundaryDescriptor().type() == p_axis_bc_descriptor->boundaryDescriptor().type());
       REQUIRE(read_sym_bc.boundaryDescriptor().type() == p_sym_bc_descriptor->boundaryDescriptor().type());
+      REQUIRE(read_wall_bc.boundaryDescriptor().type() == p_wall_bc_descriptor->boundaryDescriptor().type());
       REQUIRE(read_outflow_bc.boundaryDescriptor().type() == p_outflow_bc_descriptor->boundaryDescriptor().type());
       REQUIRE(read_free_bc.boundaryDescriptor().type() == p_free_bc_descriptor->boundaryDescriptor().type());
       REQUIRE(read_fixed_bc.boundaryDescriptor().type() == p_fixed_bc_descriptor->boundaryDescriptor().type());
@@ -299,6 +335,12 @@ let i: R -> R, x -> x+3;
       REQUIRE(read_fourier_bc.rhsSymbolId().id() == p_fourier_bc_descriptor->rhsSymbolId().id());
       REQUIRE(read_inflow_bc.boundaryDescriptor().type() == p_inflow_bc_descriptor->boundaryDescriptor().type());
       REQUIRE(read_inflow_bc.functionSymbolId().id() == p_inflow_bc_descriptor->functionSymbolId().id());
+      REQUIRE(read_inflow_list_bc.boundaryDescriptor().type() ==
+              p_inflow_list_bc_descriptor->boundaryDescriptor().type());
+      for (size_t i = 0; i < read_inflow_list_bc.functionSymbolIdList().size(); ++i) {
+        REQUIRE(read_inflow_list_bc.functionSymbolIdList()[i].id() ==
+                p_inflow_list_bc_descriptor->functionSymbolIdList()[i].id());
+      }
 
       checkpointing::ResumingData::destroy();
       ast->m_symbol_table->clearValues();