mirror of
https://github.com/wassname/simpeg.git
synced 2026-06-28 10:01:35 +08:00
Correct counting on cylinder mesh!
This commit is contained in:
+54
-16
@@ -31,6 +31,15 @@ class CylMesh(TensorMesh):
|
||||
|
||||
TensorMesh.__init__(self, h, x0)
|
||||
|
||||
@property
|
||||
def nNx(self):
|
||||
"""
|
||||
Number of nodes in the x-direction
|
||||
|
||||
:rtype: int
|
||||
:return: nNx
|
||||
"""
|
||||
return self.nCx
|
||||
|
||||
@property
|
||||
def nNy(self):
|
||||
@@ -40,7 +49,7 @@ class CylMesh(TensorMesh):
|
||||
:rtype: int
|
||||
:return: nNy
|
||||
"""
|
||||
return self.nCy
|
||||
return self.nCy - 1
|
||||
|
||||
@property
|
||||
def nN(self):
|
||||
@@ -49,15 +58,29 @@ class CylMesh(TensorMesh):
|
||||
|
||||
:rtype: int
|
||||
: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()
|
||||
|
||||
@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
|
||||
def nFy(self):
|
||||
"""
|
||||
@@ -69,19 +92,34 @@ class CylMesh(TensorMesh):
|
||||
return (self.vnC + np.r_[0,-1,0][:self.dim]).prod()
|
||||
|
||||
@property
|
||||
def vnF(self):
|
||||
"""Total number of faces in each direction"""
|
||||
return np.array([self.nFr, self.vnFz])
|
||||
def nEx(self):
|
||||
"""
|
||||
Number of x-edges
|
||||
|
||||
:rtype: int
|
||||
:return: nEx
|
||||
"""
|
||||
return (self._n + np.r_[0,-1,1]).prod()
|
||||
|
||||
@property
|
||||
def nF(self):
|
||||
"""Total number of faces"""
|
||||
return self.nFr + self.vnFz
|
||||
def nEy(self):
|
||||
"""
|
||||
Number of y-edges
|
||||
|
||||
:rtype: int
|
||||
:return: nEy
|
||||
"""
|
||||
return (self._n + np.r_[0,0,1]).prod()
|
||||
|
||||
@property
|
||||
def nE(self):
|
||||
"""Number of edges"""
|
||||
return self.nN
|
||||
def nEz(self):
|
||||
"""
|
||||
Number of z-edges
|
||||
|
||||
:rtype: int
|
||||
:return: nEz
|
||||
"""
|
||||
return (self._n + np.r_[0,-1,0]).prod()
|
||||
|
||||
@property
|
||||
def vectorNx(self):
|
||||
|
||||
@@ -3,12 +3,11 @@ import sys
|
||||
from SimPEG import *
|
||||
|
||||
|
||||
class TestCylMesh(unittest.TestCase):
|
||||
class TestCyl1DMesh(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
hx = np.ones(10)
|
||||
hz = np.ones(5)
|
||||
|
||||
hx = np.ones(3)
|
||||
hz = np.ones(2)
|
||||
self.mesh = Mesh.CylMesh([hx, 1,hz])
|
||||
|
||||
def test_cylMeshInheritance(self):
|
||||
@@ -17,13 +16,37 @@ class TestCylMesh(unittest.TestCase):
|
||||
def test_cylMeshDimensions(self):
|
||||
self.assertTrue(self.mesh.dim == 3)
|
||||
|
||||
def test_cylMesh_nc(self):
|
||||
self.assertTrue(np.all(self.mesh.vnC == [10, 1, 5]))
|
||||
|
||||
def test_cylMesh_nc_xyz(self):
|
||||
self.assertTrue(self.mesh.nCx == 10)
|
||||
def test_cylMesh_numbers(self):
|
||||
self.assertTrue(self.mesh.nCx == 3)
|
||||
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__':
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user