File: test_triangle.py

package info (click to toggle)
python-meshzoo 0.9.4-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 316 kB
  • sloc: python: 1,691; makefile: 8
file content (45 lines) | stat: -rw-r--r-- 1,291 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import numpy as np

import meshzoo

from .helpers import is_near_equal, signed_simplex_volumes


def _get_points(bary):
    corners = np.array(
        [[0.0, -0.5 * np.sqrt(3.0), +0.5 * np.sqrt(3.0)], [1.0, -0.5, -0.5]]
    )
    return np.dot(corners, bary).T


def test_triangle():
    bary, cells = meshzoo.triangle(4)
    assert len(bary.T) == 15
    assert is_near_equal(np.sum(_get_points(bary), axis=0), [0.0, 0.0])
    assert len(cells) == 16

    # make sure the order of the nodes in each cell is counterclockwise
    corner_coords = np.array([[0.0, 1.0, 0.0], [0.0, 0.0, 1.0]])
    coords = np.dot(corner_coords, bary)
    assert np.all(signed_simplex_volumes(coords.T, cells) > 0.0)


def test_plot2d():
    bary, cells = meshzoo.triangle(4)
    meshzoo.show2d(_get_points(bary), cells)


def test_edges():
    _, cells = meshzoo.triangle(2)
    edges_nodes, edges_cells = meshzoo.create_edges(cells)
    assert np.all(
        edges_nodes
        == [[0, 1], [0, 3], [1, 2], [1, 3], [1, 4], [2, 4], [3, 4], [3, 5], [4, 5]]
    )
    assert np.all(edges_cells == [[3, 1, 0], [5, 4, 2], [6, 3, 4], [8, 7, 6]])


if __name__ == "__main__":
    points, cells = meshzoo.triangle(5000)
    # import meshio
    # meshio.write_points_cells('triangle.vtk', points, {'triangle': cells})