Skip to content
Draft
Show file tree
Hide file tree
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
2 changes: 2 additions & 0 deletions .github/actions/install/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,8 @@ runs:
--extra-index-url https://download.pytorch.org/whl/cpu \
"./firedrake-repo[${{ inputs.deps }}]"

pip install -v --no-deps --ignore-installed git+https://github.com/firedrakeproject/fiat.git@pbrubeck/cancel-jacobian
pip install -v --no-deps --ignore-installed git+https://github.com/firedrakeproject/ufl.git@pbrubeck/cancel-jacobian
Comment thread
pbrubeck marked this conversation as resolved.
firedrake-clean
pip list

Expand Down
14 changes: 13 additions & 1 deletion tsfc/ufl_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
from ufl.algorithms.apply_derivatives import apply_derivatives
from ufl.algorithms.apply_geometry_lowering import apply_geometry_lowering
from ufl.algorithms.apply_restrictions import apply_restrictions
from ufl.algorithms.cancel_jacobian_products import cancel_jacobian_products
from ufl.algorithms.remove_component_tensors import remove_component_tensors
from ufl.algorithms.comparison_checker import do_comparison_check
from ufl.algorithms.remove_complex_nodes import remove_complex_nodes
from ufl.algorithms.signature import compute_expression_signature
Expand All @@ -40,6 +42,7 @@ def compute_form_data(form,
do_apply_integral_scaling=True,
do_apply_geometry_lowering=True,
preserve_geometry_types=preserve_geometry_types,
do_cancel_jacobian_products=True,
do_apply_default_restrictions=True,
do_apply_restrictions=True,
do_estimate_degrees=True,
Expand All @@ -62,6 +65,7 @@ def compute_form_data(form,
do_apply_integral_scaling=do_apply_integral_scaling,
do_apply_geometry_lowering=do_apply_geometry_lowering,
preserve_geometry_types=preserve_geometry_types,
do_cancel_jacobian_products=do_cancel_jacobian_products,
do_apply_default_restrictions=do_apply_default_restrictions,
do_apply_restrictions=do_apply_restrictions,
do_estimate_degrees=do_estimate_degrees,
Expand Down Expand Up @@ -136,11 +140,19 @@ def preprocess_expression(expression, complex_mode=False,
expression = do_comparison_check(expression)
else:
expression = remove_complex_nodes(expression)
jacobian_types = (Jacobian, JacobianInverse, JacobianDeterminant)
lowering_preserve_types = preserve_geometry_types + jacobian_types
expression = apply_algebra_lowering(expression)
expression = apply_derivatives(expression)
expression = apply_function_pullbacks(expression)
expression = apply_geometry_lowering(expression, preserve_geometry_types)
expression = apply_geometry_lowering(expression, lowering_preserve_types)
expression = apply_derivatives(expression)
expression = apply_geometry_lowering(expression, lowering_preserve_types)
expression = apply_derivatives(expression)
# Cancel contractions of the Jacobian with its inverse before
# expanding the inverse into individual matrix entries
expression = remove_component_tensors(expression)
expression = cancel_jacobian_products(expression)
expression = apply_geometry_lowering(expression, preserve_geometry_types)
expression = apply_derivatives(expression)
if not complex_mode:
Expand Down
Loading