diff --git a/grudge/models/__init__.py b/grudge/models/__init__.py index bc780365cd89169aae11358288b17d57825c61cd..c251d8f74aceddc743efa15b3f51d59ac289a78f 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 37ed429be37250f102812127c5eab28a7a495b91..fa4df66458b3b49d84164c95f684db8d0765d9f2 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 44ec4a6edeccb7abc2d0a3bfe14f0673f8db8e14..c77d82db5f806d9777371dfad641f507adead969 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 ed0d40198397f070f9fba35300a0b932e99a1497..5001b0b224aee1d72fc479113dd61cbc22463e62 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))