Skip to content

Commit 821893f

Browse files
committed
misc: Address reviewer comments
1 parent a51c3c3 commit 821893f

2 files changed

Lines changed: 16 additions & 20 deletions

File tree

devito/finite_differences/derivative.py

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -543,25 +543,24 @@ def _eval_expand_nest(self, **hints):
543543
Note that this is not always a valid expansion depending on the kwargs
544544
used to construct the derivative.
545545
'''
546-
expr = self.args[0]
547-
if isinstance(expr, self.__class__):
548-
new_expr = expr.args[0]
546+
if isinstance(self.expr, self.__class__):
547+
new_expr = self.expr.args[0]
549548
new_dims = [
550549
(d, ii)
551550
for d, ii in zip(
552-
chain(self.dims, expr.dims),
553-
chain(self.deriv_order, expr.deriv_order)
551+
chain(self.dims, self.expr.dims),
552+
chain(self.deriv_order, self.expr.deriv_order)
554553
)
555554
]
556555
# This is necessary as tools.abc.Reconstructable._rebuild will copy
557556
# all kwargs from the self object
558557
# TODO: This dictionary merge needs to be a lot better
559558
# EG: Don't actually expand if derivatives are incompatible
560-
new_deriv_order = tuple(chain(self.deriv_order, expr.deriv_order))
559+
new_deriv_order = tuple(chain(self.deriv_order, self.expr.deriv_order))
561560
# The `fd_order` may need to be reduced to construct the nested derivative
562561
dcounter = defaultdict(int)
563562
fcounter = defaultdict(int)
564-
new_fd_order = tuple(chain(self.fd_order, expr.fd_order))
563+
new_fd_order = tuple(chain(self.fd_order, self.expr.fd_order))
565564
for d, do, fo in zip(new_dims, new_deriv_order, new_fd_order):
566565
if isinstance(d, Iterable):
567566
dcounter[d[0]] += d[1]
@@ -572,10 +571,10 @@ def _eval_expand_nest(self, **hints):
572571
for (d, do), (_, fo) in zip(dcounter.items(), fcounter.items()):
573572
if getattr(d, 'is_Time', False):
574573
dim_name = 'time'
575-
order = expr.time_order
574+
order = self.expr.time_order
576575
else:
577576
dim_name = 'space'
578-
order = expr.space_order
577+
order = self.expr.space_order
579578
if fo > order:
580579
if do > order:
581580
raise ValueError(
@@ -602,9 +601,8 @@ def _eval_expand_mul(self, **hints):
602601
`Derivative(C·f(x)·g(c, y), x)
603602
--> C·g(y)·Derivative(f(x), x)`
604603
'''
605-
expr = self.args[0]
606-
if isinstance(expr, sympy.Mul):
607-
ind, dep = expr.as_independent(*self.dims, as_Mul=True)
604+
if self.expr.is_Mul:
605+
ind, dep = self.expr.as_independent(*self.dims, as_Mul=True)
608606
return ind*self.func(dep, *self.args[1:])
609607
else:
610608
return self
@@ -614,10 +612,9 @@ def _eval_expand_add(self, **hints):
614612
`Derivative(f(x) + g(x), x)
615613
--> Derivative(f(x), x) + Derivative(g(x), x)`
616614
'''
617-
expr = self.args[0]
618-
if isinstance(expr, sympy.Add):
619-
ind, dep = expr.as_independent(*self.dims, as_Add=True)
620-
if isinstance(dep, sympy.Add):
615+
if self.expr.is_Add:
616+
ind, dep = self.expr.as_independent(*self.dims, as_Add=True)
617+
if dep.is_Add:
621618
return Add(*[self.func(s, *self.args[1:]) for s in dep.args])
622619
else:
623620
return self.func(dep, *self.args[1:])
@@ -633,6 +630,5 @@ def _eval_expand_product_rule(self, **hints):
633630
resultant expression for higher derivatives and mixed derivatives is much
634631
more difficult to implement.
635632
'''
636-
# expr = self.args[0]
637-
# if isinstance(expr, sympy.Mul):
633+
# if self.expr.is_Mul:
638634
raise NotImplementedError('Product rule expansion has not been written')

tests/test_derivatives.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,8 +1081,8 @@ def test_dims_validation(self):
10811081
u = Function(name='u', grid=grid, space_order=4)
10821082

10831083
d = Derivative(u, x)
1084-
assert d.dims == (x, )
1085-
assert d.deriv_order == (1, )
1084+
assert d.dims == (x,)
1085+
assert d.deriv_order == (1,)
10861086

10871087
d = Derivative(u, x, y)
10881088
assert d.dims == (x, y)

0 commit comments

Comments
 (0)