Source code for pyfr.integrators.dual.steppers
# -*- coding: utf-8 -*-
from pyfr.integrators.dual.base import BaseDualIntegrator
class BaseDualStepper(BaseDualIntegrator):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
elementscls = self.system.elementscls
self._subdims = [elementscls.convarmap[self.system.ndims].index(v)
for v in elementscls.dualcoeffs[self.system.ndims]]
@property
def _stepper_nregs(self):
return self._pseudo_stepper_nregs + len(self._dual_time_source) - 1
[docs]class DualBDF2Stepper(BaseDualStepper):
stepper_name = 'bdf2'
@property
def _stepper_order(self):
return 2
@property
def _dual_time_source(self):
return [-1.5, 2.0, -0.5]
[docs]class DualBDF3Stepper(BaseDualStepper):
stepper_name = 'bdf3'
@property
def _stepper_order(self):
return 3
@property
def _dual_time_source(self):
return [-11.0/6.0, 3.0, -1.5, 1.0/3.0]
[docs]class DualBackwardEulerStepper(BaseDualStepper):
stepper_name = 'backward-euler'
@property
def _stepper_order(self):
return 1
@property
def _dual_time_source(self):
return [-1.0, 1.0]