From bb35dce4d7331a1953eb1e9a6b1d557fef8c06f6 Mon Sep 17 00:00:00 2001 From: "Keaton J. Burns" Date: Tue, 18 Jun 2024 16:45:37 -0400 Subject: [PATCH] Fix dispatching issues with get_basis on cartesian coordinates --- dedalus/core/operators.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/dedalus/core/operators.py b/dedalus/core/operators.py index c78a6a14..100db0dd 100644 --- a/dedalus/core/operators.py +++ b/dedalus/core/operators.py @@ -3415,8 +3415,8 @@ class CartesianDivergence(Divergence): @classmethod def _preprocess_args(cls, operand, index=0, out=None): coordsys = operand.tensorsig[index] - if operand.domain.get_basis(coordsys) is None: - raise SkipDispatchException(output=0) + if not any([operand.domain.get_basis(cs) for cs in coordsys.coords]): + raise SkipDispatchException(output=0) return [operand], {'index': index, 'out': out} def __init__(self, operand, index=0, out=None): @@ -3964,7 +3964,13 @@ def _preprocess_args(cls, operand, coordsys=None, out=None): coordsys = operand.dist.single_coordsys if coordsys is False: raise ValueError("coordsys must be specified.") - elif not isinstance(coordsys, coords.DirectProduct) and operand.domain.get_basis(coordsys) is None: + elif isinstance(coordsys, coords.DirectProduct): + if not any([operand.domain.get_basis(cs) for cs in coordsys.coordsystems]): + raise SkipDispatchException(output=0) + elif isinstance(coordsys, coords.CartesianCoordinates): + if not any([operand.domain.get_basis(cs) for cs in coordsys.coords]): + raise SkipDispatchException(output=0) + elif operand.domain.get_basis(coordsys) is None: raise SkipDispatchException(output=0) return [operand, coordsys], {'out': out}