set_variable_props 'merge' does not remove duplicates
The set_variable_props method does not remove duplicates using mode='merge'. The docstring says it will but it doesn't. I checked the set_source method and that method no longer uses 'merge' as a mode. Instead it uses 'add' but does delete duplicate propnames in self.settings['sources']. Although, the docstring in set_source does not say add means delete duplicates. Should we update docstring here as well?

diff --git a/openpnm/algorithms/_generic_transport.py b/openpnm/algorithms/_generic_transport.py
index 7dcf7a3d1..7920958ed 100644
--- a/openpnm/algorithms/_generic_transport.py
+++ b/openpnm/algorithms/_generic_transport.py
@@ -5,7 +5,7 @@ from openpnm.topotools import is_fully_connected
 from openpnm.algorithms import GenericAlgorithm
 from openpnm.algorithms import BCsMixin
 from openpnm.utils import logging, prettify_logger_message
-from openpnm.utils import Docorator, SettingsAttr
+from openpnm.utils import Docorator, SettingsAttr, TypedSet
 from openpnm.solvers import PardisoSpsolve
 from ._solution import SteadyStateSolution
 docstr = Docorator()
@@ -38,7 +38,7 @@ class GenericTransportSettings:
     quantity = ''
     conductance = ''
     cache = True
-    variable_props = []
+    variable_props = TypedSet()
 
 
 @docstr.get_sections(base='GenericTransport', sections=['Parameters'])
@@ -492,8 +492,8 @@ class GenericTransport(GenericAlgorithm, BCsMixin):
         # Handle mode
         mode = self._parse_mode(mode, allowed=['merge', 'overwrite'], single=True)
         if mode == 'overwrite':
-            self.settings['variable_props'] = []
+            self.settings['variable_props'] = TypedSet()
         # parse each propname and append to variable_props in settings
         for variable_prop in variable_props:
             variable_prop = self._parse_prop(variable_prop, 'pore')
-            self.settings['variable_props'].append(variable_prop)
+            self.settings['variable_props'].add(variable_prop)
diff --git a/openpnm/algorithms/_reactive_transport.py b/openpnm/algorithms/_reactive_transport.py
index bc39cc1da..3e207f1c8 100644
--- a/openpnm/algorithms/_reactive_transport.py
+++ b/openpnm/algorithms/_reactive_transport.py
@@ -298,7 +298,9 @@ class ReactiveTransport(GenericTransport):
         # Generate global dependency graph
         dg = nx.compose_all([x.models.dependency_graph(deep=True)
                              for x in [phase, *geometries, *physics]])
-        base = [self.settings["quantity"]] + self.settings["variable_props"]
+        variable_props = self.settings["variable_props"].copy()
+        variable_props.add(self.settings["quantity"])
+        base = list(variable_props)
         # Find all props downstream that depend on base props
         dg = nx.DiGraph(nx.edge_dfs(dg, source=base))
         if len(dg.nodes) == 0:
['openpnm/algorithms/_reactive_transport.py', 'openpnm/algorithms/_generic_transport.py']