Correct counting on cylinder mesh!

This commit is contained in:
rowanc1
2014-02-14 20:25:57 -08:00
parent 250108277f
commit dc563ff6c5
2 changed files with 87 additions and 26 deletions
+54 -16
View File
@@ -31,6 +31,15 @@ class CylMesh(TensorMesh):
TensorMesh.__init__(self, h, x0) TensorMesh.__init__(self, h, x0)
@property
def nNx(self):
"""
Number of nodes in the x-direction
:rtype: int
:return: nNx
"""
return self.nCx
@property @property
def nNy(self): def nNy(self):
@@ -40,7 +49,7 @@ class CylMesh(TensorMesh):
:rtype: int :rtype: int
:return: nNy :return: nNy
""" """
return self.nCy return self.nCy - 1
@property @property
def nN(self): def nN(self):
@@ -49,15 +58,29 @@ class CylMesh(TensorMesh):
:rtype: int :rtype: int
:return: nN :return: nN
.. plot::
:include-source:
from SimPEG import Mesh, np
Mesh.TensorMesh([np.ones(n) for n in [2,3]]).plotGrid(nodes=True,showIt=True)
""" """
return (np.r_[self.nNx, self.nNy, self.nNz]).prod() return (np.r_[self.nNx, self.nNy, self.nNz]).prod()
@property
def nFx(self):
"""
Number of x-faces
:rtype: int
:return: nFx
"""
return self.nC
@property
def vnFx(self):
"""
Number of x-faces in each direction
:rtype: numpy.array (dim, )
:return: vnFx
"""
return self.vnC
@property @property
def nFy(self): def nFy(self):
""" """
@@ -69,19 +92,34 @@ class CylMesh(TensorMesh):
return (self.vnC + np.r_[0,-1,0][:self.dim]).prod() return (self.vnC + np.r_[0,-1,0][:self.dim]).prod()
@property @property
def vnF(self): def nEx(self):
"""Total number of faces in each direction""" """
return np.array([self.nFr, self.vnFz]) Number of x-edges
:rtype: int
:return: nEx
"""
return (self._n + np.r_[0,-1,1]).prod()
@property @property
def nF(self): def nEy(self):
"""Total number of faces""" """
return self.nFr + self.vnFz Number of y-edges
:rtype: int
:return: nEy
"""
return (self._n + np.r_[0,0,1]).prod()
@property @property
def nE(self): def nEz(self):
"""Number of edges""" """
return self.nN Number of z-edges
:rtype: int
:return: nEz
"""
return (self._n + np.r_[0,-1,0]).prod()
@property @property
def vectorNx(self): def vectorNx(self):
+33 -10
View File
@@ -3,12 +3,11 @@ import sys
from SimPEG import * from SimPEG import *
class TestCylMesh(unittest.TestCase): class TestCyl1DMesh(unittest.TestCase):
def setUp(self): def setUp(self):
hx = np.ones(10) hx = np.ones(3)
hz = np.ones(5) hz = np.ones(2)
self.mesh = Mesh.CylMesh([hx, 1,hz]) self.mesh = Mesh.CylMesh([hx, 1,hz])
def test_cylMeshInheritance(self): def test_cylMeshInheritance(self):
@@ -17,13 +16,37 @@ class TestCylMesh(unittest.TestCase):
def test_cylMeshDimensions(self): def test_cylMeshDimensions(self):
self.assertTrue(self.mesh.dim == 3) self.assertTrue(self.mesh.dim == 3)
def test_cylMesh_nc(self): def test_cylMesh_numbers(self):
self.assertTrue(np.all(self.mesh.vnC == [10, 1, 5])) self.assertTrue(self.mesh.nCx == 3)
def test_cylMesh_nc_xyz(self):
self.assertTrue(self.mesh.nCx == 10)
self.assertTrue(self.mesh.nCy == 1) self.assertTrue(self.mesh.nCy == 1)
self.assertTrue(self.mesh.nCz == 5) self.assertTrue(self.mesh.nCz == 2)
self.assertTrue(np.all(self.mesh.vnC == [3, 1, 2]))
self.assertTrue(self.mesh.nN == 0)
self.assertTrue(self.mesh.nNx == 3)
self.assertTrue(self.mesh.nNy == 0)
self.assertTrue(self.mesh.nNz == 3)
self.assertTrue(np.all(self.mesh.vnN == [3, 0, 3]))
self.assertTrue(self.mesh.nFx == 6)
self.assertTrue(np.all(self.mesh.vnFx == [3, 1, 2]))
self.assertTrue(self.mesh.nFy == 0)
self.assertTrue(np.all(self.mesh.vnFy == [3, 0, 2]))
self.assertTrue(self.mesh.nFz == 9)
self.assertTrue(np.all(self.mesh.vnFz == [3, 1, 3]))
self.assertTrue(self.mesh.nF == 15)
self.assertTrue(np.all(self.mesh.vnF == [6, 0, 9]))
self.assertTrue(self.mesh.nEx == 0)
self.assertTrue(np.all(self.mesh.vnEx == [3, 0, 3]))
self.assertTrue(self.mesh.nEy == 9)
self.assertTrue(np.all(self.mesh.vnEy == [3, 1, 3]))
self.assertTrue(self.mesh.nEz == 0)
self.assertTrue(np.all(self.mesh.vnEz == [3, 0, 2]))
self.assertTrue(self.mesh.nE == 9)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()