Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions ufl/algorithms/apply_derivatives.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Apply derivatives algorithm which computes the derivatives of a form of expression."""

# Copyright (C) 2008-2016 Martin Sandve Alnæs
# Copyright (C) 2008-2026 Martin Sandve Alnæs
#
# This file is part of UFL (https://www.fenicsproject.org)
#
Expand All @@ -17,6 +17,7 @@
from ufl.action import Action
from ufl.algorithms.analysis import extract_arguments, extract_coefficients
from ufl.algorithms.map_integrands import map_integrands
from ufl.algorithms.remove_complex_nodes import remove_complex_nodes
from ufl.algorithms.replace_derivative_nodes import replace_derivative_nodes
from ufl.argument import Argument, BaseArgument, Coargument
from ufl.averaging import CellAvg, FacetAvg
Expand Down Expand Up @@ -2204,10 +2205,13 @@ def _(self, o: Expr) -> Expr:
# d (grad_X(x))/d x => grad_X(Argument(x.function_space())
for w, v in zip(self._w, self._v):
if extract_unique_domain(o) == extract_unique_domain(w) and isinstance(
v.ufl_operands[0], # type: ignore
remove_complex_nodes(v).ufl_operands[0], # type: ignore
FormArgument,
):
return ReferenceGrad(v)
if isinstance(v, Conj):
return Conj(ReferenceGrad(remove_complex_nodes(v)))
else:
return ReferenceGrad(v)
return self.independent_terminal(o)


Expand Down