|
13 | 13 |
|
14 | 14 | @pytest.fixture |
15 | 15 | def test_system_fixed_tilt(): |
| 16 | + """ |
| 17 | + row -1 row 0 row 1 row 2 |
| 18 | +- - - - |
| 19 | + - - - - |
| 20 | + - - - - |
| 21 | + | - | - | - | |
| 22 | + | - | - | - | |
| 23 | + | | | | |
| 24 | + | | | | |
| 25 | + | | | | |
| 26 | +----------------------------x-----------x-----------x-------------------------- |
| 27 | + 0 1 2 |
| 28 | + """ |
16 | 29 | syst = {'height': 1.0, |
17 | 30 | 'pitch': 2., |
18 | 31 | 'surface_tilt': 30., |
19 | 32 | 'surface_azimuth': 180., |
20 | 33 | 'axis_azimuth': None, |
21 | 34 | 'rotation': -30.} |
22 | 35 | syst['gcr'] = 1.0 / syst['pitch'] |
| 36 | + |
23 | 37 | # view factors from 3 points on the ground between rows to the sky |
24 | 38 | pts = np.linspace(0, 1, num=3) |
25 | 39 | sqr3 = np.sqrt(3) / 4 |
26 | | - # c_i,j = cos(angle from point i to edge of row j), j=0 is row = -1 |
27 | | - # c_i,j = cos(angle from point i to edge of row j), j=0 is row = -1 |
28 | | - c00 = (-2 - sqr3) / np.sqrt(1.25**2 + (2 + sqr3)**2) # right edge row -1 |
29 | | - c01 = -sqr3 / np.sqrt(1.25**2 + sqr3**2) # right edge row 0 |
30 | | - c02 = sqr3 / np.sqrt(0.75**2 + sqr3**2) # left edge of row 0 |
31 | | - c03 = (2 - sqr3) / np.sqrt(1.25**2 + (2 - sqr3)**2) # right edge of row 1 |
| 40 | + |
| 41 | + # c_ij = cos(angle from point i to a row edge, from left to right) |
| 42 | + c00 = (-2 - sqr3) / np.sqrt(1.25**2 + (2 + sqr3)**2) # left edge row -1 |
| 43 | + c01 = -sqr3 / np.sqrt(1.25**2 + sqr3**2) # left edge row 0 |
| 44 | + c02 = sqr3 / np.sqrt(0.75**2 + sqr3**2) # right edge of row 0 |
| 45 | + c03 = (2 - sqr3) / np.sqrt(1.25**2 + (2 - sqr3)**2) # left edge of row 1 |
| 46 | + # cannot see sky between rows 1 and 2 |
32 | 47 | vf_0 = 0.5 * (c03 - c02 + c01 - c00) # vf at point 0 |
33 | | - c10 = (-3 - sqr3) / np.sqrt(1.25**2 + (3 + sqr3)**2) # right edge row -1 |
34 | | - c11 = (-1 - sqr3) / np.sqrt(1.25**2 + (1 + sqr3)**2) # right edge row 0 |
35 | | - c12 = (-1 + sqr3) / np.sqrt(0.75**2 + (-1 + sqr3)**2) # left edge row 0 |
36 | | - c13 = (1 - sqr3) / np.sqrt(1.25**2 + (1 - sqr3)**2) # right edge row |
37 | | - vf_1 = 0.5 * (c13 - c12 + c11 - c10) # vf at point 1 |
38 | | - c20 = -(4 + sqr3) / np.sqrt(1.25**2 + (4 + sqr3)**2) # right edge row -1 |
39 | | - c21 = (-2 + sqr3) / np.sqrt(0.75**2 + (-2 + sqr3)**2) # left edge row 0 |
40 | | - c22 = (-2 - sqr3) / np.sqrt(1.25**2 + (2 + sqr3)**2) # right edge row 0 |
41 | | - c23 = (0 - sqr3) / np.sqrt(1.25**2 + (0 - sqr3)**2) # right edge row 1 |
42 | | - vf_2 = 0.5 * (c23 - c22 + c21 - c20) # vf at point 1 |
| 48 | + |
| 49 | + c10 = (-3 - sqr3) / np.sqrt(1.25**2 + (3 + sqr3)**2) # left edge row -1 |
| 50 | + c11 = (-1 - sqr3) / np.sqrt(1.25**2 + (1 + sqr3)**2) # left edge row 0 |
| 51 | + c12 = (-1 + sqr3) / np.sqrt(0.75**2 + (-1 + sqr3)**2) # right edge row 0 |
| 52 | + c13 = (1 - sqr3) / np.sqrt(1.25**2 + (1 - sqr3)**2) # left edge row 1 |
| 53 | + c14 = (1 + sqr3) / np.sqrt(0.75**2 + (1 + sqr3)**2) # right edge row 1 |
| 54 | + c15 = (3 - sqr3) / np.sqrt(1.25**2 + (3 - sqr3)**2) # left edge row 2 |
| 55 | + vf_1 = 0.5 * (c15 - c14 + c13 - c12 + c11 - c10) # vf at point 1 |
| 56 | + |
| 57 | + c20 = -(4 + sqr3) / np.sqrt(1.25**2 + (4 + sqr3)**2) # left edge row -1 |
| 58 | + c21 = (-2 + sqr3) / np.sqrt(0.75**2 + (-2 + sqr3)**2) # right edge row 0 |
| 59 | + c22 = (-2 - sqr3) / np.sqrt(1.25**2 + (2 + sqr3)**2) # left edge row 0 |
| 60 | + c23 = (0 - sqr3) / np.sqrt(1.25**2 + (0 - sqr3)**2) # left edge row 1 |
| 61 | + c24 = (0 + sqr3) / np.sqrt(0.75**2 + (0 + sqr3)**2) # right edge row 1 |
| 62 | + c25 = (2 - sqr3) / np.sqrt(1.25**2 + (2 - sqr3)**2) # left edge row 2 |
| 63 | + vf_2 = 0.5 * (c25 - c24 + c23 - c22 + c21 - c20) # vf at point 1 |
43 | 64 | vfs_ground_sky = np.array([[vf_0], [vf_1], [vf_2]]) |
44 | 65 | return syst, pts, vfs_ground_sky |
45 | 66 |
|
|
0 commit comments