def __init__(self, nodes): assert type(nodes) == list, ("'nodes' variable must be a list of " "np.ndarray") assert len(nodes) > 1, "len(node) must be greater than 1" for i, nodes_i in enumerate(nodes): assert isinstance(nodes_i, np.ndarray), ("nodes[{0:d}] is not a" "numpy array.".format(i)) assert nodes_i.shape == nodes[0].shape, ("nodes[{0:d}] is not the " "same shape as nodes[0]" .format(i)) assert len(nodes[0].shape) == len(nodes), "Dimension mismatch" assert len(nodes[0].shape) > 1, "Not worth using Curv for a 1D mesh." BaseRectangularMesh.__init__(self, np.array(nodes[0].shape)-1, None) # Save nodes to private variable _gridN as vectors self._gridN = np.ones((nodes[0].size, self.dim)) for i, node_i in enumerate(nodes): self._gridN[:, i] = Utils.mkvc(node_i.astype(float))
def __init__(self, nodes): assert type(nodes) == list, ("'nodes' variable must be a list of " "np.ndarray") assert len(nodes) > 1, "len(node) must be greater than 1" for i, nodes_i in enumerate(nodes): assert isinstance(nodes_i, np.ndarray), ("nodes[{0:d}] is not a" "numpy array.".format(i)) assert nodes_i.shape == nodes[0].shape, ( "nodes[{0:d}] is not the " "same shape as nodes[0]".format(i)) assert len(nodes[0].shape) == len(nodes), "Dimension mismatch" assert len(nodes[0].shape) > 1, "Not worth using Curv for a 1D mesh." BaseRectangularMesh.__init__(self, np.array(nodes[0].shape) - 1, None) # Save nodes to private variable _gridN as vectors self._gridN = np.ones((nodes[0].size, self.dim)) for i, node_i in enumerate(nodes): self._gridN[:, i] = Utils.mkvc(node_i.astype(float))
def setUp(self): self.mesh = BaseRectangularMesh([6, 2, 3])
class TestBaseMesh(unittest.TestCase): def setUp(self): self.mesh = BaseRectangularMesh([6, 2, 3]) def test_meshDimensions(self): self.assertTrue(self.mesh.dim, 3) def test_mesh_nc(self): self.assertTrue(self.mesh.nC == 36) self.assertTrue(np.all(self.mesh.vnC == [6, 2, 3])) def test_mesh_nc_xyz(self): self.assertTrue(np.all(self.mesh.nCx == 6)) self.assertTrue(np.all(self.mesh.nCy == 2)) self.assertTrue(np.all(self.mesh.nCz == 3)) def test_mesh_nf(self): self.assertTrue(np.all(self.mesh.vnFx == [7, 2, 3])) self.assertTrue(np.all(self.mesh.vnFy == [6, 3, 3])) self.assertTrue(np.all(self.mesh.vnFz == [6, 2, 4])) def test_mesh_ne(self): self.assertTrue(np.all(self.mesh.vnEx == [6, 3, 4])) self.assertTrue(np.all(self.mesh.vnEy == [7, 2, 4])) self.assertTrue(np.all(self.mesh.vnEz == [7, 3, 3])) def test_mesh_numbers(self): self.assertTrue(self.mesh.nC == 36) self.assertTrue(np.all(self.mesh.vnF == [42, 54, 48])) self.assertTrue(np.all(self.mesh.vnE == [72, 56, 63])) self.assertTrue(np.all(self.mesh.nF == np.sum([42, 54, 48]))) self.assertTrue(np.all(self.mesh.nE == np.sum([72, 56, 63]))) def test_mesh_r_E_V(self): ex = np.ones(self.mesh.nEx) ey = np.ones(self.mesh.nEy) * 2 ez = np.ones(self.mesh.nEz) * 3 e = np.r_[ex, ey, ez] tex = self.mesh.r(e, 'E', 'Ex', 'V') tey = self.mesh.r(e, 'E', 'Ey', 'V') tez = self.mesh.r(e, 'E', 'Ez', 'V') self.assertTrue(np.all(tex == ex)) self.assertTrue(np.all(tey == ey)) self.assertTrue(np.all(tez == ez)) tex, tey, tez = self.mesh.r(e, 'E', 'E', 'V') self.assertTrue(np.all(tex == ex)) self.assertTrue(np.all(tey == ey)) self.assertTrue(np.all(tez == ez)) def test_mesh_r_F_V(self): fx = np.ones(self.mesh.nFx) fy = np.ones(self.mesh.nFy) * 2 fz = np.ones(self.mesh.nFz) * 3 f = np.r_[fx, fy, fz] tfx = self.mesh.r(f, 'F', 'Fx', 'V') tfy = self.mesh.r(f, 'F', 'Fy', 'V') tfz = self.mesh.r(f, 'F', 'Fz', 'V') self.assertTrue(np.all(tfx == fx)) self.assertTrue(np.all(tfy == fy)) self.assertTrue(np.all(tfz == fz)) tfx, tfy, tfz = self.mesh.r(f, 'F', 'F', 'V') self.assertTrue(np.all(tfx == fx)) self.assertTrue(np.all(tfy == fy)) self.assertTrue(np.all(tfz == fz)) def test_mesh_r_E_M(self): g = np.ones((np.prod(self.mesh.vnEx), 3)) g[:, 1] = 2 g[:, 2] = 3 Xex, Yex, Zex = self.mesh.r(g, 'Ex', 'Ex', 'M') self.assertTrue(np.all(Xex.shape == self.mesh.vnEx)) self.assertTrue(np.all(Yex.shape == self.mesh.vnEx)) self.assertTrue(np.all(Zex.shape == self.mesh.vnEx)) self.assertTrue(np.all(Xex == 1)) self.assertTrue(np.all(Yex == 2)) self.assertTrue(np.all(Zex == 3)) def test_mesh_r_F_M(self): g = np.ones((np.prod(self.mesh.vnFx), 3)) g[:, 1] = 2 g[:, 2] = 3 Xfx, Yfx, Zfx = self.mesh.r(g, 'Fx', 'Fx', 'M') self.assertTrue(np.all(Xfx.shape == self.mesh.vnFx)) self.assertTrue(np.all(Yfx.shape == self.mesh.vnFx)) self.assertTrue(np.all(Zfx.shape == self.mesh.vnFx)) self.assertTrue(np.all(Xfx == 1)) self.assertTrue(np.all(Yfx == 2)) self.assertTrue(np.all(Zfx == 3)) def test_mesh_r_CC_M(self): g = np.ones((self.mesh.nC, 3)) g[:, 1] = 2 g[:, 2] = 3 Xc, Yc, Zc = self.mesh.r(g, 'CC', 'CC', 'M') self.assertTrue(np.all(Xc.shape == self.mesh.vnC)) self.assertTrue(np.all(Yc.shape == self.mesh.vnC)) self.assertTrue(np.all(Zc.shape == self.mesh.vnC)) self.assertTrue(np.all(Xc == 1)) self.assertTrue(np.all(Yc == 2)) self.assertTrue(np.all(Zc == 3))
class TestMeshNumbers2D(unittest.TestCase): def setUp(self): self.mesh = BaseRectangularMesh([6, 2]) def test_meshDimensions(self): self.assertTrue(self.mesh.dim, 2) def test_mesh_nc(self): self.assertTrue(np.all(self.mesh.vnC == [6, 2])) def test_mesh_nc_xyz(self): self.assertTrue(np.all(self.mesh.nCx == 6)) self.assertTrue(np.all(self.mesh.nCy == 2)) self.assertTrue(self.mesh.nCz is None) def test_mesh_nf(self): self.assertTrue(np.all(self.mesh.vnFx == [7, 2])) self.assertTrue(np.all(self.mesh.vnFy == [6, 3])) self.assertTrue(self.mesh.vnFz is None) def test_mesh_ne(self): self.assertTrue(np.all(self.mesh.vnEx == [6, 3])) self.assertTrue(np.all(self.mesh.vnEy == [7, 2])) self.assertTrue(self.mesh.vnEz is None) def test_mesh_numbers(self): c = self.mesh.nC == 12 self.assertTrue(np.all(self.mesh.vnF == [14, 18])) self.assertTrue(np.all(self.mesh.nFx == 14)) self.assertTrue(np.all(self.mesh.nFy == 18)) self.assertTrue(np.all(self.mesh.nEx == 18)) self.assertTrue(np.all(self.mesh.nEy == 14)) self.assertTrue(np.all(self.mesh.vnE == [18, 14])) self.assertTrue(np.all(self.mesh.vnE == [18, 14])) self.assertTrue(np.all(self.mesh.nF == np.sum([14, 18]))) self.assertTrue(np.all(self.mesh.nE == np.sum([18, 14]))) def test_mesh_r_E_V(self): ex = np.ones(self.mesh.nEx) ey = np.ones(self.mesh.nEy) * 2 e = np.r_[ex, ey] tex = self.mesh.r(e, 'E', 'Ex', 'V') tey = self.mesh.r(e, 'E', 'Ey', 'V') self.assertTrue(np.all(tex == ex)) self.assertTrue(np.all(tey == ey)) tex, tey = self.mesh.r(e, 'E', 'E', 'V') self.assertTrue(np.all(tex == ex)) self.assertTrue(np.all(tey == ey)) self.assertRaises(AssertionError, self.mesh.r, e, 'E', 'Ez', 'V') def test_mesh_r_F_V(self): fx = np.ones(self.mesh.nFx) fy = np.ones(self.mesh.nFy) * 2 f = np.r_[fx, fy] tfx = self.mesh.r(f, 'F', 'Fx', 'V') tfy = self.mesh.r(f, 'F', 'Fy', 'V') self.assertTrue(np.all(tfx == fx)) self.assertTrue(np.all(tfy == fy)) tfx, tfy = self.mesh.r(f, 'F', 'F', 'V') self.assertTrue(np.all(tfx == fx)) self.assertTrue(np.all(tfy == fy)) self.assertRaises(AssertionError, self.mesh.r, f, 'F', 'Fz', 'V') def test_mesh_r_E_M(self): g = np.ones((np.prod(self.mesh.vnEx), 2)) g[:, 1] = 2 Xex, Yex = self.mesh.r(g, 'Ex', 'Ex', 'M') self.assertTrue(np.all(Xex.shape == self.mesh.vnEx)) self.assertTrue(np.all(Yex.shape == self.mesh.vnEx)) self.assertTrue(np.all(Xex == 1)) self.assertTrue(np.all(Yex == 2)) def test_mesh_r_F_M(self): g = np.ones((np.prod(self.mesh.vnFx), 2)) g[:, 1] = 2 Xfx, Yfx = self.mesh.r(g, 'Fx', 'Fx', 'M') self.assertTrue(np.all(Xfx.shape == self.mesh.vnFx)) self.assertTrue(np.all(Yfx.shape == self.mesh.vnFx)) self.assertTrue(np.all(Xfx == 1)) self.assertTrue(np.all(Yfx == 2)) def test_mesh_r_CC_M(self): g = np.ones((self.mesh.nC, 2)) g[:, 1] = 2 Xc, Yc = self.mesh.r(g, 'CC', 'CC', 'M') self.assertTrue(np.all(Xc.shape == self.mesh.vnC)) self.assertTrue(np.all(Yc.shape == self.mesh.vnC)) self.assertTrue(np.all(Xc == 1)) self.assertTrue(np.all(Yc == 2))
class TestBaseMesh(unittest.TestCase): def setUp(self): self.mesh = BaseRectangularMesh([6, 2, 3]) def test_meshDimensions(self): self.assertTrue(self.mesh.dim, 3) def test_mesh_nc(self): self.assertTrue(self.mesh.nC == 36) self.assertTrue(np.all(self.mesh.vnC == [6, 2, 3])) def test_mesh_nc_xyz(self): self.assertTrue(np.all(self.mesh.nCx == 6)) self.assertTrue(np.all(self.mesh.nCy == 2)) self.assertTrue(np.all(self.mesh.nCz == 3)) def test_mesh_nf(self): self.assertTrue(np.all(self.mesh.vnFx == [7, 2, 3])) self.assertTrue(np.all(self.mesh.vnFy == [6, 3, 3])) self.assertTrue(np.all(self.mesh.vnFz == [6, 2, 4])) def test_mesh_ne(self): self.assertTrue(np.all(self.mesh.vnEx == [6, 3, 4])) self.assertTrue(np.all(self.mesh.vnEy == [7, 2, 4])) self.assertTrue(np.all(self.mesh.vnEz == [7, 3, 3])) def test_mesh_numbers(self): self.assertTrue(self.mesh.nC == 36) self.assertTrue(np.all(self.mesh.vnF == [42, 54, 48])) self.assertTrue(np.all(self.mesh.vnE == [72, 56, 63])) self.assertTrue(np.all(self.mesh.nF == np.sum([42, 54, 48]))) self.assertTrue(np.all(self.mesh.nE == np.sum([72, 56, 63]))) def test_mesh_r_E_V(self): ex = np.ones(self.mesh.nEx) ey = np.ones(self.mesh.nEy)*2 ez = np.ones(self.mesh.nEz)*3 e = np.r_[ex, ey, ez] tex = self.mesh.r(e, 'E', 'Ex', 'V') tey = self.mesh.r(e, 'E', 'Ey', 'V') tez = self.mesh.r(e, 'E', 'Ez', 'V') self.assertTrue(np.all(tex == ex)) self.assertTrue(np.all(tey == ey)) self.assertTrue(np.all(tez == ez)) tex, tey, tez = self.mesh.r(e, 'E', 'E', 'V') self.assertTrue(np.all(tex == ex)) self.assertTrue(np.all(tey == ey)) self.assertTrue(np.all(tez == ez)) def test_mesh_r_F_V(self): fx = np.ones(self.mesh.nFx) fy = np.ones(self.mesh.nFy)*2 fz = np.ones(self.mesh.nFz)*3 f = np.r_[fx, fy, fz] tfx = self.mesh.r(f, 'F', 'Fx', 'V') tfy = self.mesh.r(f, 'F', 'Fy', 'V') tfz = self.mesh.r(f, 'F', 'Fz', 'V') self.assertTrue(np.all(tfx == fx)) self.assertTrue(np.all(tfy == fy)) self.assertTrue(np.all(tfz == fz)) tfx, tfy, tfz = self.mesh.r(f, 'F', 'F', 'V') self.assertTrue(np.all(tfx == fx)) self.assertTrue(np.all(tfy == fy)) self.assertTrue(np.all(tfz == fz)) def test_mesh_r_E_M(self): g = np.ones((np.prod(self.mesh.vnEx), 3)) g[:, 1] = 2 g[:, 2] = 3 Xex, Yex, Zex = self.mesh.r(g, 'Ex', 'Ex', 'M') self.assertTrue(np.all(Xex.shape == self.mesh.vnEx)) self.assertTrue(np.all(Yex.shape == self.mesh.vnEx)) self.assertTrue(np.all(Zex.shape == self.mesh.vnEx)) self.assertTrue(np.all(Xex == 1)) self.assertTrue(np.all(Yex == 2)) self.assertTrue(np.all(Zex == 3)) def test_mesh_r_F_M(self): g = np.ones((np.prod(self.mesh.vnFx), 3)) g[:, 1] = 2 g[:, 2] = 3 Xfx, Yfx, Zfx = self.mesh.r(g, 'Fx', 'Fx', 'M') self.assertTrue(np.all(Xfx.shape == self.mesh.vnFx)) self.assertTrue(np.all(Yfx.shape == self.mesh.vnFx)) self.assertTrue(np.all(Zfx.shape == self.mesh.vnFx)) self.assertTrue(np.all(Xfx == 1)) self.assertTrue(np.all(Yfx == 2)) self.assertTrue(np.all(Zfx == 3)) def test_mesh_r_CC_M(self): g = np.ones((self.mesh.nC, 3)) g[:, 1] = 2 g[:, 2] = 3 Xc, Yc, Zc = self.mesh.r(g, 'CC', 'CC', 'M') self.assertTrue(np.all(Xc.shape == self.mesh.vnC)) self.assertTrue(np.all(Yc.shape == self.mesh.vnC)) self.assertTrue(np.all(Zc.shape == self.mesh.vnC)) self.assertTrue(np.all(Xc == 1)) self.assertTrue(np.all(Yc == 2)) self.assertTrue(np.all(Zc == 3))
class TestMeshNumbers2D(unittest.TestCase): def setUp(self): self.mesh = BaseRectangularMesh([6, 2]) def test_meshDimensions(self): self.assertTrue(self.mesh.dim, 2) def test_mesh_nc(self): self.assertTrue(np.all(self.mesh.vnC == [6, 2])) def test_mesh_nc_xyz(self): self.assertTrue(np.all(self.mesh.nCx == 6)) self.assertTrue(np.all(self.mesh.nCy == 2)) self.assertTrue(self.mesh.nCz is None) def test_mesh_nf(self): self.assertTrue(np.all(self.mesh.vnFx == [7, 2])) self.assertTrue(np.all(self.mesh.vnFy == [6, 3])) self.assertTrue(self.mesh.vnFz is None) def test_mesh_ne(self): self.assertTrue(np.all(self.mesh.vnEx == [6, 3])) self.assertTrue(np.all(self.mesh.vnEy == [7, 2])) self.assertTrue(self.mesh.vnEz is None) def test_mesh_numbers(self): c = self.mesh.nC == 12 self.assertTrue(np.all(self.mesh.vnF == [14, 18])) self.assertTrue(np.all(self.mesh.nFx == 14)) self.assertTrue(np.all(self.mesh.nFy == 18)) self.assertTrue(np.all(self.mesh.nEx == 18)) self.assertTrue(np.all(self.mesh.nEy == 14)) self.assertTrue(np.all(self.mesh.vnE == [18, 14])) self.assertTrue(np.all(self.mesh.vnE == [18, 14])) self.assertTrue(np.all(self.mesh.nF == np.sum([14, 18]))) self.assertTrue(np.all(self.mesh.nE == np.sum([18, 14]))) def test_mesh_r_E_V(self): ex = np.ones(self.mesh.nEx) ey = np.ones(self.mesh.nEy)*2 e = np.r_[ex, ey] tex = self.mesh.r(e, 'E', 'Ex', 'V') tey = self.mesh.r(e, 'E', 'Ey', 'V') self.assertTrue(np.all(tex == ex)) self.assertTrue(np.all(tey == ey)) tex, tey = self.mesh.r(e, 'E', 'E', 'V') self.assertTrue(np.all(tex == ex)) self.assertTrue(np.all(tey == ey)) self.assertRaises(AssertionError, self.mesh.r, e, 'E', 'Ez', 'V') def test_mesh_r_F_V(self): fx = np.ones(self.mesh.nFx) fy = np.ones(self.mesh.nFy)*2 f = np.r_[fx, fy] tfx = self.mesh.r(f, 'F', 'Fx', 'V') tfy = self.mesh.r(f, 'F', 'Fy', 'V') self.assertTrue(np.all(tfx == fx)) self.assertTrue(np.all(tfy == fy)) tfx, tfy = self.mesh.r(f, 'F', 'F', 'V') self.assertTrue(np.all(tfx == fx)) self.assertTrue(np.all(tfy == fy)) self.assertRaises(AssertionError, self.mesh.r, f, 'F', 'Fz', 'V') def test_mesh_r_E_M(self): g = np.ones((np.prod(self.mesh.vnEx), 2)) g[:, 1] = 2 Xex, Yex = self.mesh.r(g, 'Ex', 'Ex', 'M') self.assertTrue(np.all(Xex.shape == self.mesh.vnEx)) self.assertTrue(np.all(Yex.shape == self.mesh.vnEx)) self.assertTrue(np.all(Xex == 1)) self.assertTrue(np.all(Yex == 2)) def test_mesh_r_F_M(self): g = np.ones((np.prod(self.mesh.vnFx), 2)) g[:, 1] = 2 Xfx, Yfx = self.mesh.r(g, 'Fx', 'Fx', 'M') self.assertTrue(np.all(Xfx.shape == self.mesh.vnFx)) self.assertTrue(np.all(Yfx.shape == self.mesh.vnFx)) self.assertTrue(np.all(Xfx == 1)) self.assertTrue(np.all(Yfx == 2)) def test_mesh_r_CC_M(self): g = np.ones((self.mesh.nC, 2)) g[:, 1] = 2 Xc, Yc = self.mesh.r(g, 'CC', 'CC', 'M') self.assertTrue(np.all(Xc.shape == self.mesh.vnC)) self.assertTrue(np.all(Yc.shape == self.mesh.vnC)) self.assertTrue(np.all(Xc == 1)) self.assertTrue(np.all(Yc == 2))