diff --git a/meshmode/discretization/connection/__init__.py b/meshmode/discretization/connection/__init__.py index bb5a0bf90d07591f27846e9448a0675171833f95..da982c9d94868d2f9f1f5ef386f2fcaeb7b33342 100644 --- a/meshmode/discretization/connection/__init__.py +++ b/meshmode/discretization/connection/__init__.py @@ -211,15 +211,25 @@ class ChainedDiscretizationConnection(DiscretizationConnection): .. attribute:: connections """ - def __init__(self, connections): - if not connections: - raise ValueError("connections may not be empty") + def __init__(self, connections, from_discr=None): + if connections: + if from_discr is not None: + assert from_discr is connections[0].from_discr + else: + from_discr = connections[0].from_discr + is_surjective = all(cnx.is_surjective for cnx in connections) + else: + if from_discr is None: + raise ValueError("connections may not be empty if from_discr " + "is not specified") + + to_discr = from_discr + + # It's an identity + is_surjective = True super(ChainedDiscretizationConnection, self).__init__( - connections[0].from_discr, - connections[-1].to_discr, - is_surjective=all( - cnx.is_surjective for cnx in connections)) + from_discr, to_discr, is_surjective=is_surjective) self.connections = connections