示例#1
0
 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
示例#2
0
 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
示例#3
0
 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
示例#4
0
 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
示例#5
0
 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
示例#6
0
 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
示例#7
0
 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
示例#8
0
 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
示例#9
0
 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
示例#10
0
 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