From 534f0597dc13f9b313e33b634dc4f8a0b3d08a90 Mon Sep 17 00:00:00 2001
From: Thomas Gibson <gibsonthomas1120@hotmail.com>
Date: Sun, 30 May 2021 12:45:36 -0500
Subject: [PATCH] Use dt utility functions to estimate timestep in models

---
 grudge/models/__init__.py  | 17 ++++++++---------
 grudge/models/advection.py |  2 +-
 grudge/models/em.py        |  2 +-
 grudge/models/wave.py      |  4 ++--
 4 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/grudge/models/__init__.py b/grudge/models/__init__.py
index bc780365..c251d8f7 100644
--- a/grudge/models/__init__.py
+++ b/grudge/models/__init__.py
@@ -36,16 +36,15 @@ class Operator:
 class HyperbolicOperator(Operator):
     """A base class for hyperbolic Discontinuous Galerkin operators."""
 
-    def max_eigenvalue(self, t, fields, discr):
+    def max_eigenvalue(self, t, fields, dcoll):
         raise NotImplementedError
 
-    def estimate_rk4_timestep(self, discr, t=None, fields=None):
+    def estimate_rk4_timestep(self, dcoll, t=None, fields=None):
         """Estimate the largest stable timestep for an RK4 method.
         """
-
-        from grudge.dt_finding import (
-                dt_non_geometric_factor,
-                dt_geometric_factor)
-        return 1 / self.max_eigenvalue(t, fields, discr) \
-                * (dt_non_geometric_factor(discr)
-                * dt_geometric_factor(discr))
+        from grudge.dt_utils import (dt_non_geometric_factor,
+                                     dt_geometric_factor)
+   
+        return 1 / self.max_eigenvalue(t, fields, dcoll) \
+            * (dt_non_geometric_factor(dcoll)
+               * dt_geometric_factor(dcoll))
diff --git a/grudge/models/advection.py b/grudge/models/advection.py
index 37ed429b..fa4df664 100644
--- a/grudge/models/advection.py
+++ b/grudge/models/advection.py
@@ -84,7 +84,7 @@ class AdvectionOperatorBase(HyperbolicOperator):
     def weak_flux(self, u_tpair):
         return advection_weak_flux(self.dcoll, self.flux_type, u_tpair, self.v)
 
-    def max_eigenvalue(self, t=None, fields=None, discr=None):
+    def max_eigenvalue(self, t=None, fields=None, dcoll=None):
         return np.linalg.norm(self.v)
 
 
diff --git a/grudge/models/em.py b/grudge/models/em.py
index 44ec4a6e..c77d82db 100644
--- a/grudge/models/em.py
+++ b/grudge/models/em.py
@@ -344,7 +344,7 @@ class MaxwellOperator(HyperbolicOperator):
             return op.nodal_max(self.dcoll, "vol",
                                 1 / actx.np.sqrt(self.epsilon * self.mu))
 
-    def max_eigenvalue(self, t, fields=None, discr=None, context=None):
+    def max_eigenvalue(self, t, fields=None, dcoll=None, context=None):
         if context is None:
             context = {}
         if self.fixed_material:
diff --git a/grudge/models/wave.py b/grudge/models/wave.py
index ed0d4019..5001b0b2 100644
--- a/grudge/models/wave.py
+++ b/grudge/models/wave.py
@@ -175,7 +175,7 @@ class WeakWaveOperator(HyperbolicOperator):
             self.neumann_tag,
             self.radiation_tag])
 
-    def max_eigenvalue(self, t, fields=None, discr=None):
+    def max_eigenvalue(self, t, fields=None, dcoll=None):
         return abs(self.c)
 
 
@@ -331,7 +331,7 @@ class VariableCoefficientWeakWaveOperator(HyperbolicOperator):
             self.neumann_tag,
             self.radiation_tag])
 
-    def max_eigenvalue(self, t, fields=None, discr=None):
+    def max_eigenvalue(self, t, fields=None, dcoll=None):
         actx = self.dcoll._setup_actx
         return op.nodal_max(self.dcoll, "vol", actx.np.fabs(self.c))
 
-- 
GitLab