Skip to content

Commit f994a84

Browse files
remove the duplicate call for face_edges_cartesian calculation
1 parent bbf52c3 commit f994a84

8 files changed

Lines changed: 63 additions & 160 deletions

File tree

test/test_geometry.py

Lines changed: 25 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from uxarray.grid.coordinates import _populate_node_latlon, _lonlat_rad_to_xyz, _normalize_xyz, _xyz_to_lonlat_rad, \
1313
_xyz_to_lonlat_deg, _xyz_to_lonlat_rad_scalar
1414
from uxarray.grid.arcs import extreme_gca_latitude, extreme_gca_z
15-
from uxarray.grid.utils import _get_cartesian_face_edge_nodes, _get_lonlat_rad_face_edge_nodes
15+
from uxarray.grid.utils import _get_cartesian_faces_edge_nodes, _get_lonlat_rad_faces_edge_nodes
1616

1717
from uxarray.grid.geometry import _populate_face_latlon_bound, _populate_bounds, _pole_point_inside_polygon_cartesian, \
1818
stereographic_projection, inverse_stereographic_projection, point_in_face, haversine_distance
@@ -1184,14 +1184,9 @@ def test_point_inside():
11841184
grid = ux.open_grid(grid_mpas_2)
11851185

11861186
# Get the face edges of all faces in the grid
1187-
faces_edges_cartesian = _get_cartesian_face_edge_nodes(
1188-
grid.face_node_connectivity.values,
1189-
grid.n_face,
1190-
grid.n_max_face_edges,
1191-
grid.node_x.values,
1192-
grid.node_y.values,
1193-
grid.node_z.values,
1194-
)
1187+
faces_edges_cartesian = _get_cartesian_faces_edge_nodes(grid.face_node_connectivity.values, grid.n_face,
1188+
grid.n_max_face_edges, grid.node_x.values,
1189+
grid.node_y.values, grid.node_z.values)
11951190

11961191
# Loop through each face
11971192
for i in range(grid.n_face):
@@ -1209,14 +1204,9 @@ def test_point_outside():
12091204
grid = ux.open_grid(grid_mpas_2)
12101205

12111206
# Get the face edges of all faces in the grid
1212-
faces_edges_cartesian = _get_cartesian_face_edge_nodes(
1213-
grid.face_node_connectivity.values,
1214-
grid.n_face,
1215-
grid.n_max_face_edges,
1216-
grid.node_x.values,
1217-
grid.node_y.values,
1218-
grid.node_z.values,
1219-
)
1207+
faces_edges_cartesian = _get_cartesian_faces_edge_nodes(grid.face_node_connectivity.values, grid.n_face,
1208+
grid.n_max_face_edges, grid.node_x.values,
1209+
grid.node_y.values, grid.node_z.values)
12201210

12211211
# Set the point as the face center of a different face than the face tested
12221212
point_xyz = np.array([grid.face_x[1].values, grid.face_y[1].values, grid.face_z[1].values])
@@ -1232,14 +1222,9 @@ def test_point_on_node():
12321222
grid = ux.open_grid(grid_mpas_2)
12331223

12341224
# Get the face edges of all faces in the grid
1235-
faces_edges_cartesian = _get_cartesian_face_edge_nodes(
1236-
grid.face_node_connectivity.values,
1237-
grid.n_face,
1238-
grid.n_max_face_edges,
1239-
grid.node_x.values,
1240-
grid.node_y.values,
1241-
grid.node_z.values,
1242-
)
1225+
faces_edges_cartesian = _get_cartesian_faces_edge_nodes(grid.face_node_connectivity.values, grid.n_face,
1226+
grid.n_max_face_edges, grid.node_x.values,
1227+
grid.node_y.values, grid.node_z.values)
12431228

12441229
# Set the point as a node
12451230
point_xyz = np.array([*faces_edges_cartesian[0][0][0]])
@@ -1263,14 +1248,9 @@ def test_point_inside_close():
12631248

12641249
# Create the grid and face edges
12651250
grid = ux.Grid.from_face_vertices(vertices_lonlat, latlon=True)
1266-
faces_edges_cartesian = _get_cartesian_face_edge_nodes(
1267-
grid.face_node_connectivity.values,
1268-
grid.n_face,
1269-
grid.n_max_face_edges,
1270-
grid.node_x.values,
1271-
grid.node_y.values,
1272-
grid.node_z.values,
1273-
)
1251+
faces_edges_cartesian = _get_cartesian_faces_edge_nodes(grid.face_node_connectivity.values, grid.n_face,
1252+
grid.n_max_face_edges, grid.node_x.values,
1253+
grid.node_y.values, grid.node_z.values)
12741254

12751255
# Use point in face to determine if the point is inside or out of the face
12761256
assert point_in_face(faces_edges_cartesian[0], point_xyz=point, inclusive=False)
@@ -1288,14 +1268,9 @@ def test_point_outside_close():
12881268

12891269
# Create the grid and face edges
12901270
grid = ux.Grid.from_face_vertices(vertices_lonlat, latlon=True)
1291-
faces_edges_cartesian = _get_cartesian_face_edge_nodes(
1292-
grid.face_node_connectivity.values,
1293-
grid.n_face,
1294-
grid.n_max_face_edges,
1295-
grid.node_x.values,
1296-
grid.node_y.values,
1297-
grid.node_z.values,
1298-
)
1271+
faces_edges_cartesian = _get_cartesian_faces_edge_nodes(grid.face_node_connectivity.values, grid.n_face,
1272+
grid.n_max_face_edges, grid.node_x.values,
1273+
grid.node_y.values, grid.node_z.values)
12991274

13001275
# Use point in face to determine if the point is inside or out of the face
13011276
assert not point_in_face(faces_edges_cartesian[0], point_xyz=point, inclusive=False)
@@ -1312,14 +1287,9 @@ def test_face_at_pole():
13121287

13131288
# Create the grid and face edges
13141289
grid = ux.Grid.from_face_vertices(vertices_lonlat, latlon=True)
1315-
faces_edges_cartesian = _get_cartesian_face_edge_nodes(
1316-
grid.face_node_connectivity.values,
1317-
grid.n_face,
1318-
grid.n_max_face_edges,
1319-
grid.node_x.values,
1320-
grid.node_y.values,
1321-
grid.node_z.values,
1322-
)
1290+
faces_edges_cartesian = _get_cartesian_faces_edge_nodes(grid.face_node_connectivity.values, grid.n_face,
1291+
grid.n_max_face_edges, grid.node_x.values,
1292+
grid.node_y.values, grid.node_z.values)
13231293

13241294
assert point_in_face(faces_edges_cartesian[0], point_xyz=point, inclusive=True)
13251295

@@ -1334,14 +1304,9 @@ def test_face_at_antimeridian():
13341304

13351305
# Create the grid and face edges
13361306
grid = ux.Grid.from_face_vertices(vertices_lonlat, latlon=True)
1337-
faces_edges_cartesian = _get_cartesian_face_edge_nodes(
1338-
grid.face_node_connectivity.values,
1339-
grid.n_face,
1340-
grid.n_max_face_edges,
1341-
grid.node_x.values,
1342-
grid.node_y.values,
1343-
grid.node_z.values,
1344-
)
1307+
faces_edges_cartesian = _get_cartesian_faces_edge_nodes(grid.face_node_connectivity.values, grid.n_face,
1308+
grid.n_max_face_edges, grid.node_x.values,
1309+
grid.node_y.values, grid.node_z.values)
13451310

13461311
assert point_in_face(faces_edges_cartesian[0], point_xyz=point, inclusive=True)
13471312

@@ -1357,14 +1322,9 @@ def test_face_normal_face():
13571322

13581323
# Create the grid and face edges
13591324
grid = ux.Grid.from_face_vertices(vertices_lonlat, latlon=True)
1360-
faces_edges_cartesian = _get_cartesian_face_edge_nodes(
1361-
grid.face_node_connectivity.values,
1362-
grid.n_face,
1363-
grid.n_max_face_edges,
1364-
grid.node_x.values,
1365-
grid.node_y.values,
1366-
grid.node_z.values,
1367-
)
1325+
faces_edges_cartesian = _get_cartesian_faces_edge_nodes(grid.face_node_connectivity.values, grid.n_face,
1326+
grid.n_max_face_edges, grid.node_x.values,
1327+
grid.node_y.values, grid.node_z.values)
13681328

13691329
assert point_in_face(faces_edges_cartesian[0], point_xyz=point, inclusive=True)
13701330

test/test_helpers.py

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from uxarray.constants import INT_DTYPE, INT_FILL_VALUE
1212
from uxarray.grid.coordinates import _lonlat_rad_to_xyz, _normalize_xyz, _xyz_to_lonlat_rad
1313
from uxarray.grid.arcs import point_within_gca, _angle_of_2_vectors, in_between
14-
from uxarray.grid.utils import _get_cartesian_face_edge_nodes, _get_lonlat_rad_face_edge_nodes
14+
from uxarray.grid.utils import _get_cartesian_faces_edge_nodes, _get_lonlat_rad_faces_edge_nodes
1515
from uxarray.grid.geometry import pole_point_inside_polygon, _pole_point_inside_polygon_cartesian
1616

1717
try:
@@ -273,9 +273,8 @@ def test_get_cartesian_face_edge_nodes_pipeline():
273273
node_y = grid.node_y.values
274274
node_z = grid.node_z.values
275275

276-
face_edges_connectivity_cartesian = _get_cartesian_face_edge_nodes(
277-
face_node_conn, n_face, n_max_face_edges, node_x, node_y, node_z
278-
)
276+
face_edges_connectivity_cartesian = _get_cartesian_faces_edge_nodes(face_node_conn, n_face, n_max_face_edges,
277+
node_x, node_y, node_z)
279278

280279
result = _pole_point_inside_polygon_cartesian(
281280
'North', face_edges_connectivity_cartesian[0]
@@ -298,9 +297,8 @@ def test_get_cartesian_face_edge_nodes_filled_value():
298297
node_y = grid.node_y.values
299298
node_z = grid.node_z.values
300299

301-
face_edges_connectivity_cartesian = _get_cartesian_face_edge_nodes(
302-
face_node_conn, n_face, n_max_face_edges, node_x, node_y, node_z
303-
)
300+
face_edges_connectivity_cartesian = _get_cartesian_faces_edge_nodes(face_node_conn, n_face, n_max_face_edges,
301+
node_x, node_y, node_z)
304302

305303
result = _pole_point_inside_polygon_cartesian(
306304
'North', face_edges_connectivity_cartesian[0]
@@ -335,9 +333,8 @@ def test_get_cartesian_face_edge_nodes_filled_value2():
335333
node_y = np.array([v0_cart[1],v1_cart[1],v2_cart[1],v3_cart[1],v4_cart[1]])
336334
node_z = np.array([v0_cart[2],v1_cart[2],v2_cart[2],v3_cart[2],v4_cart[2]])
337335

338-
face_edges_connectivity_cartesian = _get_cartesian_face_edge_nodes(
339-
face_node_conn, n_face, n_max_face_edges, node_x, node_y, node_z
340-
)
336+
face_edges_connectivity_cartesian = _get_cartesian_faces_edge_nodes(face_node_conn, n_face, n_max_face_edges,
337+
node_x, node_y, node_z)
341338

342339
correct_result = np.array([
343340
[
@@ -368,9 +365,8 @@ def test_get_lonlat_face_edge_nodes_pipeline():
368365
node_lon = grid.node_lon.values
369366
node_lat = grid.node_lat.values
370367

371-
face_edges_connectivity_lonlat = _get_lonlat_rad_face_edge_nodes(
372-
face_node_conn, n_face, n_max_face_edges, node_lon, node_lat
373-
)
368+
face_edges_connectivity_lonlat = _get_lonlat_rad_faces_edge_nodes(face_node_conn, n_face, n_max_face_edges,
369+
node_lon, node_lat)
374370

375371
face_edges_connectivity_lonlat = face_edges_connectivity_lonlat[0]
376372
face_edges_connectivity_cartesian = []
@@ -398,9 +394,8 @@ def test_get_lonlat_face_edge_nodes_filled_value():
398394
node_lon = grid.node_lon.values
399395
node_lat = grid.node_lat.values
400396

401-
face_edges_connectivity_lonlat = _get_lonlat_rad_face_edge_nodes(
402-
face_node_conn, n_face, n_max_face_edges, node_lon, node_lat
403-
)
397+
face_edges_connectivity_lonlat = _get_lonlat_rad_faces_edge_nodes(face_node_conn, n_face, n_max_face_edges,
398+
node_lon, node_lat)
404399

405400
face_edges_connectivity_lonlat = face_edges_connectivity_lonlat[0]
406401
face_edges_connectivity_cartesian = []
@@ -434,9 +429,8 @@ def test_get_lonlat_face_edge_nodes_filled_value2():
434429
node_lon = np.array([v0_rad[0],v1_rad[0],v2_rad[0],v3_rad[0],v4_rad[0]])
435430
node_lat = np.array([v0_rad[1],v1_rad[1],v2_rad[1],v3_rad[1],v4_rad[1]])
436431

437-
face_edges_connectivity_lonlat = _get_lonlat_rad_face_edge_nodes(
438-
face_node_conn, n_face, n_max_face_edges, node_lon, node_lat
439-
)
432+
face_edges_connectivity_lonlat = _get_lonlat_rad_faces_edge_nodes(face_node_conn, n_face, n_max_face_edges,
433+
node_lon, node_lat)
440434

441435
correct_result = np.array([
442436
[

test/test_integrate.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
_get_faces_constLat_intersection_info, _zonal_face_weights, \
2020
_zonal_face_weights_robust
2121

22-
from uxarray.grid.utils import _get_cartesian_face_edge_nodes
22+
from uxarray.grid.utils import _get_cartesian_faces_edge_nodes
2323

2424
current_path = Path(os.path.dirname(os.path.realpath(__file__)))
2525

@@ -1037,14 +1037,9 @@ def test_compare_zonal_weights():
10371037
for gridfile in gridfiles:
10381038
uxgrid = ux.open_grid(gridfile)
10391039
n_nodes_per_face = uxgrid.n_nodes_per_face.values
1040-
face_edge_nodes_xyz = _get_cartesian_face_edge_nodes(
1041-
uxgrid.face_node_connectivity.values,
1042-
uxgrid.n_face,
1043-
uxgrid.n_max_face_edges,
1044-
uxgrid.node_x.values,
1045-
uxgrid.node_y.values,
1046-
uxgrid.node_z.values,
1047-
)
1040+
face_edge_nodes_xyz = _get_cartesian_faces_edge_nodes(uxgrid.face_node_connectivity.values, uxgrid.n_face,
1041+
uxgrid.n_max_face_edges, uxgrid.node_x.values,
1042+
uxgrid.node_y.values, uxgrid.node_z.values)
10481043
bounds = uxgrid.bounds.values
10491044

10501045
for i, lat in enumerate(latitudes):

test/test_intersections.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -161,20 +161,16 @@ def test_GCA_GCA_north_pole_angled():
161161

162162
def test_GCA_edge_intersection_count():
163163

164-
from uxarray.grid.utils import _get_cartesian_face_edge_nodes
164+
from uxarray.grid.utils import _get_cartesian_faces_edge_nodes
165165

166166
# Generate a normal face that is not crossing the antimeridian or the poles
167167
vertices_lonlat = [[29.5, 11.0], [29.5, 10.0], [30.5, 10.0], [30.5, 11.0]]
168168
vertices_lonlat = np.array(vertices_lonlat)
169169

170170
grid = ux.Grid.from_face_vertices(vertices_lonlat, latlon=True)
171-
face_edge_nodes_cartesian = _get_cartesian_face_edge_nodes(
172-
grid.face_node_connectivity.values,
173-
grid.n_face,
174-
grid.n_max_face_edges,
175-
grid.node_x.values,
176-
grid.node_y.values,
177-
grid.node_z.values)
171+
face_edge_nodes_cartesian = _get_cartesian_faces_edge_nodes(grid.face_node_connectivity.values, grid.n_face,
172+
grid.n_max_face_edges, grid.node_x.values,
173+
grid.node_y.values, grid.node_z.values)
178174

179175
face_center_xyz = np.array([grid.face_x.values[0], grid.face_y.values[0], grid.face_z.values[0]], dtype=np.float64)
180176
north_pole_xyz = np.array([0.0, 0.0, 1.0], dtype=np.float64)

uxarray/core/zonal.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def _compute_non_conservative_zonal_mean(uxda, latitudes, use_robust_weights=Fal
1919
result = np.zeros(shape, dtype=uxda.dtype)
2020

2121
bounds = uxgrid.bounds.values
22-
faces_edges_cartesian = uxgrid.face_edges_cartesian.values
22+
faces_edges_cartesian = uxgrid.faces_edges_cartesian.values
2323

2424
for i, lat in enumerate(latitudes):
2525
face_indices = uxda.uxgrid.get_faces_at_constant_latitude(lat)

uxarray/grid/geometry.py

Lines changed: 8 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
gca_gca_intersection,
3030
)
3131
from uxarray.grid.utils import (
32-
_get_cartesian_face_edge_nodes,
33-
_get_lonlat_rad_face_edge_nodes,
32+
_get_cartesian_faces_edge_nodes,
33+
_get_lonlat_rad_faces_edge_nodes,
3434
)
3535
from uxarray.utils.computing import allclose, isclose
3636

@@ -1346,42 +1346,10 @@ def compute_temp_latlon_array(
13461346
return temp_latlon_array
13471347

13481348

1349-
def _populate_face_edges_cartesian(grid, return_array=False):
1350-
faces_edges_cartesian = _get_cartesian_face_edge_nodes(
1351-
grid.face_node_connectivity.values,
1352-
grid.n_face,
1353-
grid.n_max_face_edges,
1354-
grid.node_x.values,
1355-
grid.node_y.values,
1356-
grid.node_z.values,
1357-
)
1358-
1359-
faces_edges_cartesian_xarray = xr.DataArray(
1360-
faces_edges_cartesian,
1361-
dims=["n_face", "n_max_face_edges", "two", "three"],
1362-
attrs={
1363-
"cf_role": "face_edges_cartesian",
1364-
"_FillValue": INT_FILL_VALUE,
1365-
"long_name": "Provide the Cartesian coordinates of the edge for each face",
1366-
"start_index": INT_DTYPE(0)
1367-
},
1368-
)
1369-
1370-
if return_array:
1371-
return faces_edges_cartesian_xarray
1372-
else:
1373-
grid._ds["face_edges_cartesian"] = faces_edges_cartesian_xarray
1374-
1375-
13761349
def _populate_faces_edges_cartesian(grid, return_array=False):
1377-
faces_edges_cartesian = _get_cartesian_face_edge_nodes(
1378-
grid.face_node_connectivity.values,
1379-
grid.n_face,
1380-
grid.n_max_face_edges,
1381-
grid.node_x.values,
1382-
grid.node_y.values,
1383-
grid.node_z.values,
1384-
)
1350+
faces_edges_cartesian = _get_cartesian_faces_edge_nodes(grid.face_node_connectivity.values, grid.n_face,
1351+
grid.n_max_face_edges, grid.node_x.values,
1352+
grid.node_y.values, grid.node_z.values)
13851353

13861354
faces_edges_cartesian_xarray = xr.DataArray(
13871355
faces_edges_cartesian,
@@ -1401,13 +1369,9 @@ def _populate_faces_edges_cartesian(grid, return_array=False):
14011369

14021370

14031371
def _populate_faces_edges_spherical(grid, return_array=False):
1404-
faces_edges_lonlat_rad = _get_lonlat_rad_face_edge_nodes(
1405-
grid.face_node_connectivity.values,
1406-
grid.n_face,
1407-
grid.n_max_face_edges,
1408-
grid.node_lon.values,
1409-
grid.node_lat.values,
1410-
)
1372+
faces_edges_lonlat_rad = _get_lonlat_rad_faces_edge_nodes(grid.face_node_connectivity.values, grid.n_face,
1373+
grid.n_max_face_edges, grid.node_lon.values,
1374+
grid.node_lat.values)
14111375

14121376
faces_edges_lonlat_rad_xarray = xr.DataArray(
14131377
faces_edges_lonlat_rad,

uxarray/grid/grid.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
Tuple,
1515
)
1616

17-
from uxarray.grid.utils import _get_cartesian_face_edge_nodes
17+
from uxarray.grid.utils import _get_cartesian_faces_edge_nodes
1818

1919
# reader and writer imports
2020
from uxarray.io._exodus import _read_exodus, _encode_exodus
@@ -2664,14 +2664,10 @@ def get_faces_containing_point(
26642664
return np.empty(0, dtype=np.int64)
26652665

26662666
# Get the faces in terms of their edges
2667-
face_edge_nodes_xyz = _get_cartesian_face_edge_nodes(
2668-
subset.face_node_connectivity.values,
2669-
subset.n_face,
2670-
subset.n_max_face_nodes,
2671-
subset.node_x.values,
2672-
subset.node_y.values,
2673-
subset.node_z.values,
2674-
)
2667+
# Since this is a new subset, the cartesian_faces_edge_nodes need to be recalculated anyway
2668+
face_edge_nodes_xyz = _get_cartesian_faces_edge_nodes(subset.face_node_connectivity.values, subset.n_face,
2669+
subset.n_max_face_nodes, subset.node_x.values,
2670+
subset.node_y.values, subset.node_z.values)
26752671

26762672
# Get the original face indices from the subset
26772673
inverse_indices = subset.inverse_indices.face.values

0 commit comments

Comments
 (0)