From 5ca94e819b63fb88582f7c079ffac27e597d3a2a Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Mon, 20 Nov 2017 23:46:25 -0600
Subject: [PATCH] ChainedDiscretizationConnection: allow empty list of
 connections if specifying from_discr

---
 .../discretization/connection/__init__.py     | 24 +++++++++++++------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/meshmode/discretization/connection/__init__.py b/meshmode/discretization/connection/__init__.py
index bb5a0bf9..da982c9d 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
 
-- 
GitLab