Skip to content

Commit

Permalink
Merge pull request #294 from DedalusProject/getbasis
Browse files Browse the repository at this point in the history
Fix dispatching issues with get_basis on cartesian coordinates
  • Loading branch information
lecoanet authored Jun 18, 2024
2 parents 9870268 + bb35dce commit f5c07ab
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions dedalus/core/operators.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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}

Expand Down

0 comments on commit f5c07ab

Please sign in to comment.