def __init__(self, N, BC, quad="GL", dim = "1"): self.quad = quad self.BC = BC self.k = self.wavenumbers(N) self.ak, self.bk = self.shenCoefficients(self.k, self.BC) self.a0 = zeros(N[0]-2) self.b0 = zeros(N[0]-2) self.kk= zeros(N[0]) self.Bm = B_matrix(self.kk, self.quad, self.ak, self.bk, self.ak, self.bk) self.a0[2:], self.b0[1:], self.c0, self.d0, self.e0 = self.Bm.diags()
class PDMA(Shen): def __init__(self, N, BC, quad="GL", dim = "1"): self.quad = quad self.BC = BC self.k = self.wavenumbers(N) self.ak, self.bk = self.shenCoefficients(self.k, self.BC) self.a0 = zeros(N[0]-2) self.b0 = zeros(N[0]-2) self.kk= zeros(N[0]) self.Bm = B_matrix(self.kk, self.quad, self.ak, self.bk, self.ak, self.bk) self.a0[2:], self.b0[1:], self.c0, self.d0, self.e0 = self.Bm.diags() def __call__(self, u, b): if self.dim=="1": SFTc.PDMA_1D(self.a0, self.b0, self.c0, self.d0, self.e0, u, b) elif self.dim=="3": SFTc.PDMA(self.a0, self.b0, self.c0, self.d0, self.e0, u, b) return b