mirror of
https://github.com/wassname/simpeg.git
synced 2026-09-10 12:37:30 +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)
|
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):
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user