dolfinx icon indicating copy to clipboard operation
dolfinx copied to clipboard

Tensor valued Expressions are broken

Open atouminet opened this issue 3 years ago • 0 comments

Instantiating an expression from a tensor valued constant fails.

MWE

import dolfinx.fem, dolfinx.mesh
from mpi4py import MPI
import numpy as np

mesh = dolfinx.mesh.create_unit_square(MPI.COMM_SELF, 3, 3)
V = dolfinx.fem.TensorFunctionSpace(mesh, ("DG", 0), shape=(2, 2))
alpha = dolfinx.fem.Constant(mesh, np.array([[0.0, 1.0], [2.0, 3.0]]))
expr = dolfinx.fem.Expression(alpha, V.element.interpolation_points())

Error:

Traceback (most recent call last):
  File "/home/armand/s/mwe/mwe.py", line 8, in <module>
    expr = dolfinx.fem.Expression(alpha, V.element.interpolation_points())
  File "/home/armand/mambaforge/envs/dolfinx-stable/lib/python3.10/site-packages/dolfinx/fem/function.py", line 117, in __init__
    self._ufcx_expression, module, self._code = jit.ffcx_jit(mesh.comm, (ufl_expression, _X),
  File "/home/armand/mambaforge/envs/dolfinx-stable/lib/python3.10/site-packages/dolfinx/jit.py", line 56, in mpi_jit
    return local_jit(*args, **kwargs)
  File "/home/armand/mambaforge/envs/dolfinx-stable/lib/python3.10/site-packages/dolfinx/jit.py", line 211, in ffcx_jit
    r = ffcx.codegeneration.jit.compile_expressions([ufl_object], parameters=p_ffcx, **p_jit)
  File "/home/armand/mambaforge/envs/dolfinx-stable/lib/python3.10/site-packages/ffcx/codegeneration/jit.py", line 193, in compile_expressions
    ffcx.naming.compute_signature(expressions, _compute_parameter_signature(p)
  File "/home/armand/mambaforge/envs/dolfinx-stable/lib/python3.10/site-packages/ffcx/naming.py", line 62, in compute_signature
    signature = ufl.algorithms.signature.compute_expression_signature(expr, rn)
  File "/home/armand/mambaforge/envs/dolfinx-stable/lib/python3.10/site-packages/ufl/algorithms/signature.py", line 118, in compute_expression_signature
    terminal_hashdata = compute_terminal_hashdata([expr], renumbering)
  File "/home/armand/mambaforge/envs/dolfinx-stable/lib/python3.10/site-packages/ufl/algorithms/signature.py", line 64, in compute_terminal_hashdata
    data = expr._ufl_signature_data_(renumbering)
  File "/home/armand/mambaforge/envs/dolfinx-stable/lib/python3.10/site-packages/ufl/constant.py", line 72, in _ufl_signature_data_
    self._ufl_domain._ufl_signature_data_(renumbering), repr(self._ufl_shape),
  File "/home/armand/mambaforge/envs/dolfinx-stable/lib/python3.10/site-packages/ufl/domain.py", line 121, in _ufl_signature_data_
    return ("Mesh", renumbering[self], self._ufl_coordinate_element)
KeyError: Mesh(VectorElement(FiniteElement('Lagrange', triangle, 1), dim=2), 0)

dolfinx version is from latest conda update:

print(dolfinx.__version__)
0.5.0

The above MWE used to work in the previous conda version (0.4.2)

atouminet avatar Aug 17 '22 12:08 atouminet