From 5f6f2347ed10e78fdd746200a09eed455294dbf2 Mon Sep 17 00:00:00 2001
From: Thomas Gibson <gibsonthomas1120@hotmail.com>
Date: Tue, 11 May 2021 10:47:46 -0500
Subject: [PATCH] Memoize metric computations for global-to-reference
 transformations

---
 grudge/geometry/metrics.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/grudge/geometry/metrics.py b/grudge/geometry/metrics.py
index 46dd62c0..401aa1cc 100644
--- a/grudge/geometry/metrics.py
+++ b/grudge/geometry/metrics.py
@@ -31,6 +31,7 @@ from grudge.dof_desc import (
 from meshmode.dof_array import thaw
 from pymbolic.geometric_algebra import MultiVector
 from pytools.obj_array import make_obj_array
+from pytools import memoize_on_first_arg
 
 
 def forward_metric_nth_derivative(actx, dcoll, xyz_axis, ref_axes, dd=None):
@@ -195,6 +196,7 @@ def inverse_metric_derivative(actx, dcoll, rst_axis, xyz_axis, dd):
     return result
 
 
+@memoize_on_first_arg
 def inverse_surface_metric_derivative(actx, dcoll, rst_axis, xyz_axis, dd=None):
 
     dim = dcoll.dim
@@ -263,6 +265,7 @@ def pseudoscalar(actx, dcoll, dim=None, dd=None):
     ).project_max_grade()
 
 
+@memoize_on_first_arg
 def area_element(actx, dcoll, dim=None, dd=None):
 
     return actx.np.sqrt(
-- 
GitLab