|
1 | 1 | from LoopStructural.interpolators import StructuredGrid
|
2 | 2 | import numpy as np
|
3 |
| - |
| 3 | +import pytest |
4 | 4 |
|
5 | 5 | ## structured grid tests
|
6 | 6 | def test_create_support(support):
|
@@ -40,17 +40,17 @@ def test_evaluate_value(support):
|
40 | 40 | == 0
|
41 | 41 | )
|
42 | 42 |
|
43 |
| - |
44 |
| -def test_evaluate_gradient(support_class): |
45 |
| - support = support_class() |
| 43 | +@pytest.mark.parametrize('steps',[10,20,100]) |
| 44 | +def test_evaluate_gradient(support_class,steps): |
| 45 | + support = support_class(nsteps=[steps]*3) |
46 | 46 | # test by setting the scalar field to the y coordinate
|
47 | 47 | vector = support.evaluate_gradient(support.barycentre, support.nodes[:, 1])
|
48 | 48 | assert np.sum(vector - np.array([0, 1, 0])) == 0
|
49 | 49 |
|
50 |
| - # same test but for a bigger grid, making sure scaling for cell is ok |
51 |
| - support = support_class(step_vector=np.array([100, 100, 100])) |
52 |
| - vector = support.evaluate_gradient(support.barycentre, support.nodes[:, 1]) |
53 |
| - assert np.sum(vector - np.array([0, 1, 0])) == 0 |
| 50 | + # # same test but for a bigger grid, making sure scaling for cell is ok |
| 51 | + # support = support_class(step_vector=np.array([100, 100, 100]),) |
| 52 | + # vector = support.evaluate_gradient(support.barycentre, support.nodes[:, 1]) |
| 53 | + # assert np.sum(vector - np.array([0, 1, 0])) == 0 |
54 | 54 |
|
55 | 55 |
|
56 | 56 | def test_outside_box(support):
|
@@ -78,21 +78,18 @@ def test_outside_box(support):
|
78 | 78 | vector = support.evaluate_gradient(support.nodes, support.nodes[:, 1])
|
79 | 79 |
|
80 | 80 |
|
81 |
| -def test_evaluate_gradient2(support_class): |
82 |
| - # this test is the same as above but we will use a random vector |
83 |
| - rng = np.random.default_rng(10) |
84 |
| - _i = 0 |
85 |
| - for _i in range(10): |
86 |
| - step = rng.uniform(0, 100) |
87 |
| - grid = support_class(step_vector=np.array([step, step, step])) |
88 |
| - |
89 |
| - # define random vector |
90 |
| - n = rng.random(3) |
91 |
| - n /= np.linalg.norm(n) |
92 |
| - distance = n[0] * grid.nodes[:, 0] + n[1] * grid.nodes[:, 1] + n[2] * grid.nodes[:, 2] |
93 |
| - vector = grid.evaluate_gradient(rng.uniform(1, 8, size=(100, 3)), distance) |
94 |
| - assert np.all(np.isclose(np.sum(vector - n[None, :], axis=1), 0, atol=1e-3, rtol=1e-3)) |
95 |
| - assert _i == 9 |
| 81 | +@pytest.mark.parametrize("seed", range(10)) |
| 82 | +def test_evaluate_gradient2(support_class, seed): |
| 83 | + rng = np.random.default_rng(seed) |
| 84 | + step = rng.uniform(0, 100) |
| 85 | + grid = support_class(step_vector=np.array([step, step, step])) |
| 86 | + |
| 87 | + # define random vector |
| 88 | + n = rng.random(3) |
| 89 | + n /= np.linalg.norm(n) |
| 90 | + distance = n[0] * grid.nodes[:, 0] + n[1] * grid.nodes[:, 1] + n[2] * grid.nodes[:, 2] |
| 91 | + vector = grid.evaluate_gradient(rng.uniform(1, 8, size=(100, 3)), distance) |
| 92 | + assert np.all(np.isclose(np.sum(vector - n[None, :], axis=1), 0, atol=1e-3, rtol=1e-3)) |
96 | 93 |
|
97 | 94 |
|
98 | 95 | def test_get_element(support):
|
|
0 commit comments