From 4c8ff5a514a22715152f6542465606f09b754a29 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Sun, 19 Feb 2017 13:03:17 -0600
Subject: [PATCH] Add
 PolynomialSimplexElementGroupBase.{is_orthogonal_basis,mass_matrix}

---
 meshmode/discretization/poly_element.py | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/meshmode/discretization/poly_element.py b/meshmode/discretization/poly_element.py
index f509a911..cef3d667 100644
--- a/meshmode/discretization/poly_element.py
+++ b/meshmode/discretization/poly_element.py
@@ -64,11 +64,29 @@ from meshmode.discretization import ElementGroupBase
 # {{{ concrete element groups
 
 class PolynomialSimplexElementGroupBase(ElementGroupBase):
+    def is_orthogonal_basis(self):
+        return self.dim <= 3
+
     def basis(self):
-        return mp.simplex_best_available_basis(self.dim, self.order)
+        if self.dim <= 3:
+            return mp.simplex_onb(self.dim, self.order)
+        else:
+            return mp.simplex_monomial_basis(self.dim, self.order)
 
     def grad_basis(self):
-        return mp.grad_simplex_best_available_basis(self.dim, self.order)
+        if self.dim <= 3:
+            return mp.grad_simplex_onb(self.dim, self.order)
+        else:
+            return mp.grad_simplex_monomial_basis(self.dim, self.order)
+
+    @memoize_method
+    def mass_matrix(self):
+        assert self.is_orthogonal_basis()
+
+        import modepy as mp
+        return mp.mass_matrix(
+                self.basis(),
+                self.unit_nodes)
 
     @memoize_method
     def from_mesh_interp_matrix(self):
-- 
GitLab