Dual Integrators Missing Serialiser in v3.0

Dual integrators missing serialiser

Hello,

I started transitioning to the 3.0 release from 2.1, and I came upon this issue when running some simulations using the ac-navier-stokes solver. I seem to have fixed it by importing the serialiser in the pyfr.integrators.pseudo.base file and then instantiating the object (self.serialiser = Serialiser()) in the __init__ method of the BaseDualPseudoIntegrator class. It seems to be working now and the printed data looks OK.

I’m not sure what unexpected behaviour this could cause (I’m new to this software and not confident in my bug fix), but I wanted to bring it to your attention.

Thank you :slight_smile:

Error print out (if applicable)

Traceback (most recent call last):
  File "/home/fredm/pyFR/contained/env3/bin/pyfr", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/__main__.py", line 242, in main
    args.process(args)
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/__main__.py", line 552, in process_run
    _process_common(args, None, Inifile.load(args.cfg))
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/__main__.py", line 537, in _process_common
    solver = get_solver(backend, mesh, soln, cfg)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/solvers/__init__.py", line 14, in get_solver
    return get_integrator(backend, systemcls, mesh, initsoln, cfg)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/integrators/__init__.py", line 34, in get_integrator
    return integrator(backend, systemcls, mesh, initsoln, cfg)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/integrators/dual/phys/controllers.py", line 6, in __init__
    super().__init__(*args, **kwargs)
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/integrators/dual/phys/steppers.py", line 14, in __init__
    super().__init__(*args, **kwargs)
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/integrators/dual/phys/base.py", line 14, in __init__
    self.pseudointegrator = get_pseudo_integrator(
                            ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/integrators/dual/pseudo/__init__.py", line 45, in get_pseudo_integrator
    return pseudointegrator(backend, systemcls, mesh, initsoln, cfg,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/integrators/dual/pseudo/pseudocontrollers.py", line 87, in __init__
    super().__init__(*args, **kwargs)
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/integrators/dual/pseudo/pseudocontrollers.py", line 9, in __init__
    super().__init__(*args, **kwargs)
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/integrators/dual/pseudo/pseudosteppers.py", line 184, in __init__
    super().__init__(*args, **kwargs)
  File "/home/fredm/pyFR/contained/PyFR-release-v3.0/pyfr/integrators/dual/pseudo/base.py", line 50, in __init__
    self.serialiser)
    ^^^^^^^^^^^^^^^
AttributeError: 'DualLocalPiRk45Pseudointegrator' object has no attribute 'serialiser'

PyFR information

  • PyFR version: 3.0 (release)
  • OS: Ubuntu 24.04
  • Compiler and version: Python 3.12.3
  • Backend (if applicable): CUDA

Hi @fredmorin18,

Sorry about that, I’ve opened a PR to fix this. I’ll let you know once its been merged in.

Thanks,
Toby

1 Like

Hi @fredmorin18,

The PR has now been merged into the develop branch.

Thanks,
Toby

2 Likes