Global QBX FMM currently fails with multiple groups
Traceback (most recent call last):
File "helmholtz-dirichlet.py", line 156, in <module>
main()
File "helmholtz-dirichlet.py", line 64, in main
fmm_order=fmm_order
File "/home/andreask/src/pytools/pytools/__init__.py", line 488, in wrapper
result = function(obj, *args, **kwargs)
File "/home/andreask/src/pytential/pytential/qbx/__init__.py", line 259, in with_refinement
InterpolatoryQuadratureSimplexGroupFactory(target_order))
File "/home/andreask/src/pytential/pytential/qbx/refinement.py", line 724, in __call__
tree = self.tree_builder(queue, lpot_source)
File "/home/andreask/src/pytential/pytential/qbx/utils.py", line 214, in __call__
centers = get_interleaved_centers(queue, lpot_source)
File "/home/andreask/src/pytential/pytential/qbx/utils.py", line 102, in get_interleaved_centers
int_centers = lpot_source.centers(-1)
File "/home/andreask/src/pytools/pytools/__init__.py", line 488, in wrapper
result = function(obj, *args, **kwargs)
File "/home/andreask/src/pytential/pytential/qbx/__init__.py", line 385, in centers
panel_sizes = self.panel_sizes().with_queue(queue)
File "/home/andreask/src/pytools/pytools/__init__.py", line 488, in wrapper
result = function(obj, *args, **kwargs)
File "/home/andreask/src/pytential/pytential/qbx/__init__.py", line 367, in panel_sizes
discr, group_nr)(panel_sizes))
File "/home/andreask/src/loopy/loopy/kernel/__init__.py", line 1327, in __call__
return kex(*args, **kwargs)
File "/home/andreask/src/loopy/loopy/target/pyopencl_execution.py", line 745, in __call__
out_host, **kwargs)
File "<generated function invoke_compute_size_loopy_kernel>", line 121, in invoke_compute_size_loopy_kernel
ValueError: Argument 'ds' does not allow arrays with offsets. Try passing default_offset=loopy.auto to make_kernel().
Could be as simple as doing what the message suggests. But as that path is currently untested, I'm not going near it. I'll write a group merger instead. This is low priority for now. To reproduce, make a multi-group mesh, e.g. with meshmode.mesh.processing.merge_disjoint_meshes
.
cc @mattwala