Error: Metaclass conflict, cylinder test case with openmp backend

Hi,

I have installed PyFR and I was able to run the euler vortex and couette flow cases as expected with openmp as the backend.

But when I tried to run the 2d inc cylinder test case with openmp as the backend, I am getting the following error:

$ pyfr import inc-cylinder.msh inc-cylinder.pyfrm
$ pyfr run -b openmp -p inc-cylinder.pyfrm inc-cylinder.ini
Traceback (most recent call last):
  File "/usr/bin/pyfr", line 11, in <module>
    load_entry_point('pyfr==1.5.0', 'console_scripts', 'pyfr')()
  File "/usr/share/pyfr/pyfr/__main__.py", line 110, in main
    args.process(args)
  File "/usr/share/pyfr/pyfr/__main__.py", line 234, in process_run
    _process_common(
  File "/usr/share/pyfr/pyfr/__main__.py", line 216, in _process_common
    solver = get_solver(backend, rallocs, mesh, soln, cfg)
  File "/usr/share/pyfr/pyfr/solvers/__init__.py", line 14, in get_solver
    return get_integrator(backend, systemcls, rallocs, mesh, initsoln, cfg)
  File "/usr/share/pyfr/pyfr/integrators/__init__.py", line 40, in get_integrator
    integrator = type(name, tuple(bc for bn, bc in bases), dict(name=name))
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

Help me with this, Thanks.

PyFR v1.5.0 is almost 7 years old at this point. It is unlikely to be compatible with current versions of Python and our current test cases (which are designed around v1.15.0).

Regards, Freddie.

I installed pyfr following the instructions given in Installation — Documentation
in ubuntu-20.04

i was able to run the euler vortex and couette flow test cases, i am getting this error in all other test cases. what should i do now? can you please give me some ways to resolve this?

Thanks

I installed pyfr 1.13.0, still i am getting this error:

(myenv) @DESKTOP:~$ cd test5
(myenv) @DESKTOP:~/test5$ ls
viscous-shock-tube.ini  viscous-shock-tube.msh
(myenv) @DESKTOP:~/test5$ pyfr import viscous-shock-tube.msh viscous-shock-tube.pyfrm
Traceback (most recent call last):
  File "/home//.local/bin/pyfr", line 8, in <module>
    sys.exit(main())
  File "/home//.local/lib/python3.8/site-packages/pyfr/__main__.py", line 117, in main
    args.process(args)
  File "/home//.local/lib/python3.8/site-packages/pyfr/__main__.py", line 131, in process_import
    mesh = reader.to_pyfrm(args.lintol)
  File "/home//.local/lib/python3.8/site-packages/pyfr/readers/base.py", line 23, in to_pyfrm
    mesh = self._to_raw_pyfrm(lintol)
  File "/home//.local/lib/python3.8/site-packages/pyfr/readers/gmsh.py", line 413, in _to_raw_pyfrm
    return mesh.get_connectivity() | mesh.get_shape_points(lintol)
TypeError: unsupported operand type(s) for |: 'dict' and 'dict'

I want to learn pyfr from scratch, can you please give me an idea, how and where to start from?

It looks like you are using python3.8, for the current version of PyFR you will need python>=3.10.