FEniCS / FEniCS/ffcx

Missing bessel functions

Open
#673 8 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Python
Stars
192
Forks
45
Avg merge
1d 11h
Merged PRs (30d)
16

Description

We currently do not support `bessel_I` or `bessel_K` functions from ufl.

```python
import ufl
import basix.ufl

c_el = basix.ufl.element("Lagrange", "triangle", 1, shape=(2,))
mesh = ufl.Mesh(c_el)
x = ufl.SpatialCoordinate(mesh)
J = ufl.bessel_K(1, x[0]) * ufl.dx
```
and
```python
import ufl
import basix.ufl

c_el = basix.ufl.element("Lagrange", "triangle", 1, shape=(2,))
mesh = ufl.Mesh(c_el)
x = ufl.SpatialCoordinate(mesh)
J = ufl.bessel_I(1, x[0]) * ufl.dx
```
throws
```bash
root@dokken-XPS-9320:~/shared/adios4dolfinx/tests# python3 -m ffcx dd.py
Traceback (most recent call last):
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/root/shared/ffcx/ffcx/__main__.py", line 14, in
sys.exit(main())
File "/root/shared/ffcx/ffcx/main.py", line 75, in main
code_h, code_c = compiler.compile_ufl_objects(
File "/root/shared/ffcx/ffcx/compiler.py", line 111, in compile_ufl_objects
code = generate_code(ir, options)
File "/root/shared/ffcx/ffcx/codegeneration/codegeneration.py", line 53, in generate_code
code_integrals = [integral_generator(integral_ir, options) for integral_ir in ir.integrals]
File "/root/shared/ffcx/ffcx/codegeneration/codegeneration.py", line 53, in
code_integrals = [integral_generator(integral_ir, options) for integral_ir in ir.integrals]
File "/root/shared/ffcx/ffcx/codegeneration/C/integrals.py", line 40, in generator
parts = ig.generate()
File "/root/shared/ffcx/ffcx/codegeneration/integral_generator.py", line 164, in generate
all_quadparts += self.generate_quadrature_loop(rule)
File "/root/shared/ffcx/ffcx/codegeneration/integral_generator.py", line 266, in generate_quadrature_loop
definitions, intermediates_0 = self.generate_varying_partition(quadrature_rule)
File "/root/shared/ffcx/ffcx/codegeneration/integral_generator.py", line 309, in generate_varying_partition
return self.generate_partition(arraysymbol, F, "varying", quadrature_rule)
File "/root/shared/ffcx/ffcx/codegeneration/integral_generator.py", line 342, in generate_partition
vexpr = L.ufl_to_lnodes(v, *vops)
File "/root/shared/ffcx/ffcx/codegeneration/lnodes.py", line 1127, in ufl_to_lnodes
raise RuntimeError(f"Missing lookup for expr type {optype}.")
RuntimeError: Missing lookup for expr type .
```
```bash
Traceback (most recent call last):
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/root/shared/ffcx/ffcx/__main__.py", line 14, in
sys.exit(main())
File "/root/shared/ffcx/ffcx/main.py", line 75, in main
code_h, code_c = compiler.compile_ufl_objects(
File "/root/shared/ffcx/ffcx/compiler.py", line 111, in compile_ufl_objects
code = generate_code(ir, options)
File "/root/shared/ffcx/ffcx/codegeneration/codegeneration.py", line 53, in generate_code
code_integrals = [integral_generator(integral_ir, options) for integral_ir in ir.integrals]
File "/root/shared/ffcx/ffcx/codegeneration/codegeneration.py", line 53, in
code_integrals = [integral_generator(integral_ir, options) for integral_ir in ir.integrals]
File "/root/shared/ffcx/ffcx/codegeneration/C/integrals.py", line 40, in generator
parts = ig.generate()
File "/root/shared/ffcx/ffcx/codegeneration/integral_generator.py", line 164, in generate
all_quadparts += self.generate_quadrature_loop(rule)
File "/root/shared/ffcx/ffcx/codegeneration/integral_generator.py", line 266, in generate_quadrature_loop
definitions, intermediates_0 = self.generate_varying_partition(quadrature_rule)
File "/root/shared/ffcx/ffcx/codegeneration/integral_generator.py", line 309, in generate_varying_partition
return self.generate_partition(arraysymbol, F, "varying", quadrature_rule)
File "/root/shared/ffcx/ffcx/codegeneration/integral_generator.py", line 342, in generate_partition
vexpr = L.ufl_to_lnodes(v, *vops)
File "/root/shared/ffcx/ffcx/codegeneration/lnodes.py", line 1127, in ufl_to_lnodes
raise RuntimeError(f"Missing lookup for expr type {optype}.")
RuntimeError: Missing lookup for expr type
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.