def _aveN2Fx(self): if self.dim == 1: aveN2Fx = av(self.nCx) elif self.dim == 2: aveN2Fx = sp.kron(av(self.nCy), speye(self.nNx)) elif self.dim == 3: aveN2Fx = kron3(av(self.nCz), av(self.nCy), speye(self.nNx)) return aveN2Fx
def _aveN2Fy(self): if self.dim == 1: return None elif self.dim == 2: aveN2Fy = sp.kron(speye(self.nNy), av(self.nCx)) elif self.dim == 3: aveN2Fy = kron3(av(self.nCz), speye(self.nNy), av(self.nCx)) return aveN2Fy
def _aveN2Ey(self): """ Averaging operator on cell nodes to y-edges """ if self.dim == 1: return None elif self.dim == 2: aveN2Ey = sp.kron(av(self.nCy), speye(self.nNx)) elif self.dim == 3: aveN2Ey = kron3(speye(self.nNz), av(self.nCy), speye(self.nNx)) return aveN2Ey
def _aveN2Ex(self): """ Averaging operator on cell nodes to x-edges """ if self.dim == 1: aveN2Ex = av(self.nCx) elif self.dim == 2: aveN2Ex = sp.kron(speye(self.nNy), av(self.nCx)) elif self.dim == 3: aveN2Ex = kron3(speye(self.nNz), speye(self.nNy), av(self.nCx)) return aveN2Ex
def aveEz2CC(self): """ Construct the averaging operator on cell edges in the z direction to cell centers. """ if self.dim < 3: return None if getattr(self, '_aveEz2CC', None) is None: # The number of cell centers in each direction n = self.vnC if (self.dim == 3): self._aveEz2CC = kron3(speye(n[2]), av(n[1]), av(n[0])) return self._aveEz2CC
def aveFy2CC(self): """ Construct the averaging operator on cell faces in the y direction to cell centers. """ if self.dim < 2: return None if getattr(self, '_aveFy2CC', None) is None: n = self.vnC if (self.dim == 2): self._aveFy2CC = sp.kron(av(n[1]), speye(n[0])) elif self.dim == 3: self._aveFy2CC = kron3(speye(n[2]), av(n[1]), speye(n[0])) return self._aveFy2CC
def aveEx2CC(self): """ Construct the averaging operator on cell edges in the x direction to cell centers. """ if getattr(self, '_aveEx2CC', None) is None: # The number of cell centers in each direction n = self.vnC if self.dim == 1: self._aveEx2CC = speye(n[0]) elif self.dim == 2: self._aveEx2CC = sp.kron(av(n[1]), speye(n[0])) elif self.dim == 3: self._aveEx2CC = kron3(av(n[2]), av(n[1]), speye(n[0])) return self._aveEx2CC
def aveN2CC(self): "Construct the averaging operator on cell nodes to cell centers." if getattr(self, '_aveN2CC', None) is None: # The number of cell centers in each direction if self.dim == 1: self._aveN2CC = av(self.nCx) elif self.dim == 2: self._aveN2CC = sp.kron(av(self.nCy), av(self.nCx)).tocsr() elif self.dim == 3: self._aveN2CC = kron3(av(self.nCz), av(self.nCy), av(self.nCx)).tocsr() return self._aveN2CC
def _aveN2Fz(self): if self.dim == 1 or self.dim == 2: return None else: aveN2Fz = kron3(speye(self.nNz), av(self.nCy), av(self.nCx)) return aveN2Fz
def _aveN2Ez(self): if self.dim == 1 or self.dim == 2: return None elif self.dim == 3: aveN2Ez = kron3(av(self.nCz), speye(self.nNy), speye(self.nNx)) return aveN2Ez