Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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() 
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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
Exemplo n.º 10
0
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,
    )
Exemplo n.º 11
0
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
Exemplo n.º 12
0
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)
Exemplo n.º 13
0
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
Exemplo n.º 14
0
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
Exemplo n.º 15
0
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
Exemplo n.º 16
0
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)
Exemplo n.º 17
0
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
Exemplo n.º 18
0
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
Exemplo n.º 19
0
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
Exemplo n.º 20
0
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
Exemplo n.º 21
0
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
Exemplo n.º 22
0
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)
Exemplo n.º 23
0
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)
Exemplo n.º 24
0
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
Exemplo n.º 25
0
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)
Exemplo n.º 26
0
    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
Exemplo n.º 27
0
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)
Exemplo n.º 28
0
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)
Exemplo n.º 29
0
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
Exemplo n.º 30
0
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