def test(show=False): # should both work geo = [1.0, 1.0] + dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0) geo = dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0) + [1.0, 1.0] X, _ = dmsh.generate(geo, 0.1, show=show, max_steps=100) ref_norms = [1.7524999999999998e03, 5.5612899955332637e01, 3.0000000000000000e00] assert_norm_equality(X.flatten(), ref_norms, 1.0e-7)
def test(show=False): # should both work geo = dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0) * 2.0 geo = 2.0 * dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0) X, cells = dmsh.generate(geo, 0.1, show=show, tol=1.0e-5, max_steps=100) ref_norms = [7.6829959173892494e03, 1.2466061090733828e02, 4.0000000000000000e00] assert_norm_equality(X.flatten(), ref_norms, 1.0e-7) return X, cells
def test_union_rectangles(show=False): geo = dmsh.Rectangle(-1.0, +0.5, -1.0, +0.5) | dmsh.Rectangle( -0.5, +1.0, -0.5, +1.0) X, cells = dmsh.generate(geo, 0.15, show=show, tol=1.0e-5, max_steps=100) ref_norms = [ 1.8417796811774514e02, 1.1277323166424049e01, 1.0000000000000000e00 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-10) return X, cells
def test_union(show=False): geo = dmsh.Union([ dmsh.Rectangle(-1.0, +0.5, -1.0, +0.5), dmsh.Rectangle(-0.5, +1.0, -0.5, +1.0) ]) X, cells = dmsh.generate(geo, 0.15, show=show, tol=1.0e-10) ref_norms = [1.7868961429998612e+02, 1.1117047580567053e+01, 1.0] assert_norm_equality(X.flatten(), ref_norms, 1.0e-12) return X, cells
def test_rectangle_hole(): r = dmsh.Rectangle(60, 330, 380, 650) h = dmsh.Rectangle(143, 245, 440, 543) geo = dmsh.Difference(r, h) X, cells = dmsh.generate(geo, 20, tol=1.0e-5, show=False) ref_norms = [ 1.2901184909133780e05, 7.6243606395500592e03, 6.5000000000000000e02 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-10)
def test_union(show=False): geo = dmsh.Union([ dmsh.Rectangle(-1.0, +0.5, -1.0, +0.5), dmsh.Rectangle(-0.5, +1.0, -0.5, +1.0) ]) X, cells = dmsh.generate(geo, 0.15, show=show, tol=1.0e-5) ref_norms = [ 1.8432376349018622e02, 1.1278734993846784e01, 1.0000000000000000e00 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-10) return X, cells
def main(): fig = plt.figure() position = 231 geo = dmsh.Union( [dmsh.Rectangle(-1.0, +0.5, -1.0, +0.5), dmsh.Rectangle(-0.5, +1.0, -0.5, +1.0)] ) for it in [1, 3, 5, 10, 30, 50]: ax = fig.add_subplot(position) drawPlot(it, ax, geo) position += 1 plt.show()
def test_rectangle_hole(show=False): geo = dmsh.Difference(dmsh.Rectangle(60, 330, 380, 650), dmsh.Rectangle(143, 245, 440, 543)) X, cells = dmsh.generate(geo, 20, tol=1.0e-5, show=show, flip_tol=1.0e-10, max_steps=100) ref_norms = [ 1.2931633675576400e05, 7.6377328985582844e03, 6.5000000000000000e02 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-10)
def test(show=True): geo = dmsh.Stretch(dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0), [1.0, 1.0]) X, cells = dmsh.generate(geo, 0.2, show=show, tol=1.0e-3) ref_norms = [4.3338293115124242e02, 2.3621770543834902e01, 2.6213203435596428e00] assert_norm_equality(X.flatten(), ref_norms, 1.0e-12) return X, cells
def rect_with_refinement(h): return dmsh.generate( dmsh.Rectangle(-1.0, 1.0, -1.0, 1.0), edge_size=lambda x: h + 0.1 * numpy.sqrt(x[0]**2 + x[1]**2), tol=1.0e-10, max_steps=max_steps, )
def test(show=False): geo = dmsh.Rotation(dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0), 0.1 * numpy.pi) X, cells = dmsh.generate(geo, 0.1, show=show, tol=1.0e-10) ref_norms = [9.5457720168192884e+02, 3.1356929329612782e+01, 2.2111300269652543e+00] assert_norm_equality(X.flatten(), ref_norms, 1.0e-12) return X, cells
def test_boundary_step(): geo = dmsh.Rectangle(-2.0, +2.0, -1.0, +1.0) # Check boundary steps out = geo.boundary_step([0.1, 0.0]) assert np.all(np.abs(out - [2.0, 0.0]) < 1.0e-10) out = geo.boundary_step([0.0, 0.1]) assert np.all(np.abs(out - [0.0, 1.0]) < 1.0e-10) out = geo.boundary_step([-0.1, 0.0]) assert np.all(np.abs(out - [-2.0, 0.0]) < 1.0e-10) out = geo.boundary_step([0.0, -0.1]) assert np.all(np.abs(out - [0.0, -1.0]) < 1.0e-10) out = geo.boundary_step([2.1, 0.037]) assert np.all(np.abs(out - [2.0, 0.037]) < 1.0e-10) out = geo.boundary_step([0.037, 1.1]) assert np.all(np.abs(out - [0.037, 1.0]) < 1.0e-10) out = geo.boundary_step([-2.1, 0.037]) assert np.all(np.abs(out - [-2.0, 0.037]) < 1.0e-10) out = geo.boundary_step([0.037, -1.1]) assert np.all(np.abs(out - [0.037, -1.0]) < 1.0e-10) out = geo.boundary_step([2.1, 1.1]) assert np.all(np.abs(out - [2.0, 1.0]) < 1.0e-10) out = geo.boundary_step([-2.1, 1.1]) assert np.all(np.abs(out - [-2.0, 1.0]) < 1.0e-10) out = geo.boundary_step([2.1, -1.1]) assert np.all(np.abs(out - [2.0, -1.0]) < 1.0e-10) out = geo.boundary_step([-2.1, -1.1]) assert np.all(np.abs(out - [-2.0, -1.0]) < 1.0e-10)
def test(show=False): geo = dmsh.Translation(dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0), [1.0, 1.0]) X, cells = dmsh.generate(geo, 0.1, show=show) ref_norms = [1.7525e+03, 5.5677441324948013e+01, 3.0] assert_norm_equality(X.flatten(), ref_norms, 1.0e-12) return
def test_rectangle(show=False): geo = dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0) X, cells = dmsh.generate(geo, 0.1, show=show) ref_norms = [9.7542898028694776e02, 3.1710503119308623e01, 2.0] assert_norm_equality(X.flatten(), ref_norms, 1.0e-12) return X, cells
def test(show=False): geo = dmsh.Scaling(dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0), 2.0) X, cells = dmsh.generate(geo, 0.1, show=show, tol=1.0e-5) ref_norms = [7.7120645429243405e03, 1.2509238632152577e02, 4.0] assert_norm_equality(X.flatten(), ref_norms, 1.0e-12) return X, cells
def test(show=False): geo = dmsh.Translation(dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0), [1.0, 1.0]) X, cells = dmsh.generate(geo, 0.1, show=show, max_steps=100) ref_norms = [ 1.7524999999999998e03, 5.5612899955332637e01, 3.0000000000000000e00 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-7)
def test(show=False): geo = dmsh.Stretch(dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0), [1.0, 1.0]) X, cells = dmsh.generate(geo, 0.3, show=show, tol=1.0e-3, max_steps=100) ref_norms = [ 1.9006907971528796e02, 1.5666202908904914e01, 2.6213203435596428e00 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-2) return X, cells
def test(show=False): geo = dmsh.Rotation(dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0), 0.1 * numpy.pi) X, cells = dmsh.generate(geo, 0.1, show=show, tol=1.0e-10) ref_norms = [ 9.5352192763033452e02, 3.1344318120314945e01, 2.2111300269652543e00 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-10) return X, cells
def test_rectangle(show=False): geo = dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0) X, cells = dmsh.generate(geo, 0.1, show=show, max_steps=100) ref_norms = [ 9.7172325705673779e02, 3.1615286239175994e01, 2.0000000000000000e00 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-10) return X, cells
def test(show=False): geo = dmsh.Rotation(dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0), 0.1 * np.pi) X, cells = dmsh.generate(geo, 0.1, show=show, tol=1.0e-10, max_steps=100) ref_norms = [ 9.4730152857365385e02, 3.1160562530932285e01, 2.2111300269652543e00 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-10) return X, cells
def test(show=True): geo = dmsh.Stretch(dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0), [1.0, 1.0]) X, cells = dmsh.generate(geo, 0.3, show=show, tol=1.0e-3) ref_norms = [ 1.9391178579025609e02, 1.5890693098212086e01, 2.6213203435596428e00 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-2) return X, cells
def sartenTriangulation(size, edge_size): """ Triangulación de silueta de una sartén de cocina """ c = dmsh.Circle([0, 0], size) r = dmsh.Rectangle(-2.5*size, -size*0.9, -size/8, size/8) geo = dmsh.Union([c, r]) points, cells = dmsh.generate(geo, edge_size) return Triangulation(points, cells)
def test(show=False): geo = dmsh.Difference( dmsh.Rectangle(0.0, 5.0, 0.0, 5.0), dmsh.Polygon([[1, 1], [4, 1], [4, 4], [1, 4]]), ) X, cells = dmsh.generate(geo, 1.0, show=show, tol=1.0e-3) ref_norms = [ 1.4000000000000000e02, 2.3176757306973560e01, 5.0000000000000000e00 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-10)
def test(show=False): geo = dmsh.Difference( dmsh.Rectangle(0.0, 5.0, 0.0, 5.0), dmsh.Polygon([[1, 1], [4, 1], [4, 4], [1, 4]]), ) X, cells = dmsh.generate(geo, 1.0, show=show, tol=1.0e-3) assert_norm_equality(X.flatten(), [1.2599887992309357e02, 2.2109217065599051e01, 5.0], 1.0e-12) return
def test_rectangle_hole2(show=False): geo = dmsh.Difference( dmsh.Rectangle(0.0, 5.0, 0.0, 5.0), dmsh.Polygon([[1, 1], [4, 1], [4, 4], [1, 4]]), ) X, cells = dmsh.generate(geo, 1.0, show=show, tol=1.0e-3, max_steps=100) ref_norms = [ 1.3990406144096474e02, 2.2917592510234346e01, 5.0000000000000000e00 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-2)
def mesh(self) -> MeshTri: geo = dmsh.Difference( dmsh.Rectangle(0.0, self.length, 0.0, self.height), dmsh.Circle(self.centre, self.radius) ) points, triangles = dmsh.generate(geo, 0.025, tol=1e-9) m = MeshTri(points.T, triangles.T) m.define_boundary("inlet", lambda x: x[0] == .0) m.define_boundary("outlet", lambda x: x[0] == self.length) return m
def test_large(show=False): # https://github.com/nschloe/dmsh/issues/11 r = dmsh.Rectangle(-10.0, +20.0, -10.0, +20.0) c = dmsh.Circle([0.0, 0.0], 3) geo = dmsh.Difference(r, c) X, cells = dmsh.generate(geo, 2.0, tol=1.0e-5, max_steps=100, show=show) ref_norms = [ 4.6292581642363657e03, 2.4187329297982635e02, 2.0000000000000000e01 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-4)
def test_large(): # https://github.com/nschloe/dmsh/issues/11 r = dmsh.Rectangle(-10.0, +20.0, -10.0, +20.0) c = dmsh.Circle([0.0, 0.0], 3) geo = dmsh.Difference(r, c) X, cells = dmsh.generate(geo, 2.0, tol=1.0e-5, max_steps=10000) ref_norms = [ 4.6422985179724637e03, 2.4202897690682192e02, 2.0000000000000000e01 ] assert_norm_equality(X.flatten(), ref_norms, 1.0e-4)
def test(show=False): r = dmsh.Rectangle(-1.0, +1.0, -1.0, +1.0) c = dmsh.Circle([0.0, 0.0], 0.3) geo = dmsh.Difference(r, c) X, cells = dmsh.generate( geo, lambda pts: numpy.abs(c.dist(pts)) / 5 + 0.05, show=show, tol=1.0e-10 ) ref_norms = [2.48e02, 1.200e01, 1.0] assert_norm_equality(X.flatten(), ref_norms, 1.0e-3) return X, cells
def test(show=False): geo = dmsh.Rectangle(0.0, 1.0, 0.0, 1.0) # p0 = dmsh.Path([[0.0, 0.0]]) p1 = dmsh.Path([[0.4, 0.6], [0.6, 0.4]]) def edge_size(x): return 0.03 + 0.1 * p1.dist(x) X, cells = dmsh.generate(geo, edge_size, show=show, tol=1.0e-10, max_steps=100) ref_norms = [3.7918105331047593e02, 1.5473837427489348e01, 1.0000000000000000e00] assert_norm_equality(X.flatten(), ref_norms, 1.0e-3) return X, cells