예제 #1
0
def test_halfspace(show=False):
    geo = dmsh.Intersection([
        dmsh.HalfSpace(np.sqrt(0.5) * np.array([1.0, 1.0])),
        dmsh.Circle([0.0, 0.0], 1.0),
    ])
    X, cells = dmsh.generate(geo, 0.1, show=show, max_steps=100)

    ref_norms = [
        1.6399670188761661e02, 1.0011048291798387e01, 9.9959986881486440e-01
    ]
    assert_norm_equality(X.flatten(), ref_norms, 1.0e-6)
    return X, cells
예제 #2
0
def test_halfspace(show=False):
    geo = dmsh.Intersection([
        dmsh.HalfSpace(numpy.sqrt(0.5) * numpy.array([1.0, 1.0]), 0.0),
        dmsh.Circle([0.0, 0.0], 1.0),
    ])
    X, cells = dmsh.generate(geo, 0.1, show=show)

    ref_norms = [
        1.6445971629723411e02, 1.0032823867864321e01, 9.9962000746451751e-01
    ]
    assert_norm_equality(X.flatten(), ref_norms, 1.0e-12)
    return X, cells
예제 #3
0
angles = np.pi * np.array([3.0 / 6.0, 7.0 / 6.0, 11.0 / 6.0])
geo = dmsh.Intersection(
    [
        dmsh.Circle([np.cos(angles[0]), np.sin(angles[0])], 1.5),
        dmsh.Circle([np.cos(angles[1]), np.sin(angles[1])], 1.5),
        dmsh.Circle([np.cos(angles[2]), np.sin(angles[2])], 1.5),
    ]
)
X, cells = dmsh.generate(geo, 0.1, tol=1.0e-10)
save(X, cells, "intersection-three-circles.svg")


geo = dmsh.Intersection(
    [
        dmsh.HalfSpace(np.sqrt(0.5) * np.array([1.0, 1.0]), 0.0),
        dmsh.Circle([0.0, 0.0], 1.0),
    ]
)
X, cells = dmsh.generate(geo, 0.1)
save(X, cells, "intersection-circle-halfspace.svg")


geo = dmsh.Rotation(dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0), 0.1 * np.pi)
X, cells = dmsh.generate(geo, 0.1, tol=1.0e-10)
save(X, cells, "rotation.svg")


geo = dmsh.Scaling(dmsh.Rectangle(-1.0, +2.0, -1.0, +1.0), 2.0)
X, cells = dmsh.generate(geo, 0.1, tol=1.0e-5)
save(X, cells, "scaling.svg")