# Source code for pyfr.integrators.dual.base

    # -*- coding: utf-8 -*-

    from abc import abstractmethod

    from pyfr.integrators.base import BaseIntegrator

    class BaseDualIntegrator(BaseIntegrator):
        formulation = 'dual'

        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)

            self._dtau = self.cfg.getfloat('solver-time-integrator', 'pseudo-dt')
            self.dtaumin = 1.0e-12

        @property
        def _stepper_regidx(self):
            return self._regidx[:self._pseudo_stepper_nregs]

        @property
        def _source_regidx(self):
            return self._regidx[self._pseudo_stepper_nregs:]

        @abstractmethod
        def _dual_time_source(self):
            pass

        @abstractmethod
        def finalise_step(self, currsoln):
            pass