Skip to content

Commit

Permalink
Merge pull request #370 from UXARRAY/philipc2/refactor
Browse files Browse the repository at this point in the history
Organize Helpers and Project Structure
  • Loading branch information
rajeeja authored Jul 21, 2023
2 parents 23a9346 + bdd6f13 commit 7f59006
Show file tree
Hide file tree
Showing 28 changed files with 1,259 additions and 1,285 deletions.
2 changes: 1 addition & 1 deletion docs/examples/003-area-calc.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -586,7 +586,7 @@
},
"outputs": [],
"source": [
"from uxarray.utils.helpers import calculate_face_area"
"from uxarray.grid.area import calculate_face_area"
]
},
{
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/004-working-with-mpas-grids.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -447,7 +447,7 @@
"import matplotlib.pyplot as plt\n",
"from matplotlib.collections import PolyCollection\n",
"\n",
"from uxarray.utils.helpers import close_face_nodes"
"from uxarray.grid.connectivity import close_face_nodes"
]
},
{
Expand Down
92 changes: 39 additions & 53 deletions docs/internal_api/index.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
.. currentmodule:: uxarray

########
############
Internal API
########
############

This page shows already-implemented Uxarray internal API functions. You can also
check the draft `UXarray API
Expand All @@ -23,28 +23,27 @@ Class

UxDataset


Attributes
----------
.. autosummary::
:toctree: _autosummary

UxDataset._source_datasets
UxDataset._uxgrid



Methods
-------
.. autosummary::
:toctree: _autosummary
__getitem__
__setitem__
_calculate_binary_op
_construct_dataarray
_construct_direct
_copy
_replace

UxDataset.__getitem__
UxDataset.__setitem__
UxDataset._calculate_binary_op
UxDataset._construct_dataarray
UxDataset._construct_direct
UxDataset._copy
UxDataset._replace


UxDataArray
Expand Down Expand Up @@ -73,11 +72,9 @@ Methods
.. autosummary::
:toctree: _autosummary

_construct_direct
_copy
_replace


UxDataArray._construct_direct
UxDataArray._copy
UxDataArray._replace

Grid
===========
Expand All @@ -89,45 +86,15 @@ Class

Grid


IO
----------
.. autosummary::
:toctree: _autosummary

io._exodus._read_exodus
io._exodus._encode_exodus
io._exodus._get_element_type
io._mpas._dual_to_ugrid
io._mpas._primal_to_ugrid
io._mpas._replace_padding
io._mpas._replace_zeros
io._mpas._to_zero_index
io._mpas._set_global_attrs
io._mpas._read_mpas
io._ugrid._encode_ugrid
io._ugrid._read_ugrid
io._scrip._read_scrip
io._scrip._encode_scrip
io._scrip._to_ugrid


Methods
-------
.. autosummary::
:toctree: _autosummary

__init_grid_var_names__
__from_ds__
__from_vert__
__init_grid_var_attrs__
_build_edge_node_connectivity
_build_face_edges_connectivity
_build_nNodes_per_face
_populate_cartesian_xyz_coord
_populate_lonlat_coord


Grid.__init_grid_var_names__
Grid.__from_ds__
Grid.__from_vert__
Grid.__init_grid_var_attrs__

Attributes
----------
Expand All @@ -140,15 +107,34 @@ Operators
---------
.. autosummary::
:toctree: _autosummary

Grid.__eq__
Grid.__ne__

Helpers
===========

.. currentmodule:: uxarray
Connectivity
------------
.. autosummary::
:toctree: _autosummary

grid.connectivity._replace_fill_values
grid.connectivity._build_nNodes_per_face
grid.connectivity._build_edge_node_connectivity
grid.connectivity._build_face_edges_connectivity

Coordinates
-----------
.. autosummary::
:toctree: _autosummary

grid.coordinates._populate_cartesian_xyz_coord
grid.coordinates._populate_lonlat_coord

IO
---
.. autosummary::
:toctree: _autosummary

utils.helpers._is_ugrid
utils.helpers._replace_fill_values
io.utils._parse_grid_type
68 changes: 41 additions & 27 deletions docs/user_api/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ check the draft `UXarray API
<https://github.com/UXARRAY/uxarray/blob/main/docs/user_api/uxarray_api.md>`_
documentation to see the tentative whole API and let us know if you have any feedback!



UxDataset
=========
A ``xarray.Dataset``-like, multi-dimensional, in memory, array database.
Expand All @@ -20,7 +18,6 @@ dataset operators and attributes through the ``uxgrid`` accessor.
Below is a list of features explicitly added to `UxDataset` to work on
Unstructured Grids:


Class
-----
.. autosummary::
Expand All @@ -33,28 +30,24 @@ IO
.. autosummary::
:toctree: _autosummary

open_dataset
open_mfdataset
enable_jit_cache
disable_jit_cache
enable_jit
disable_jit
open_dataset
open_mfdataset

Attributes
----------
.. autosummary::
:toctree: _autosummary

UxDataset.uxgrid
UxDataset.source_datasets
UxDataset.uxgrid
UxDataset.source_datasets

Methods
-------
.. autosummary::
:toctree: _autosummary

UxDataset.info
UxDataset.integrate
UxDataset.info
UxDataset.integrate


UxDataArray
Expand Down Expand Up @@ -139,23 +132,44 @@ Attributes
Grid.Mesh2_edge_nodes
Grid.Mesh2_face_edges


Helpers
===========

.. currentmodule:: uxarray
Face Area
----------
.. autosummary::
:toctree: _autosummary

grid.area.calculate_face_area
grid.area.get_all_face_area_from_coords
grid.area.calculate_spherical_triangle_jacobian
grid.area.calculate_spherical_triangle_jacobian_barycentric
grid.area.get_gauss_quadratureDG
grid.area.get_tri_quadratureDG

Connectivity
------------
.. autosummary::
:toctree: _autosummary

grid.connectivity.close_face_nodes

Coordinates
-----------
.. autosummary::
:toctree: _autosummary

grid.coordinates.node_lonlat_rad_to_xyz
grid.coordinates.node_xyz_to_lonlat_rad
grid.coordinates.normalize_in_place
grid.coordinates.grid_center_lat_lon

Numba
-----
.. autosummary::
:toctree: _autosummary

calculate_face_area
calculate_spherical_triangle_jacobian
calculate_spherical_triangle_jacobian_barycentric
close_face_nodes
get_all_face_area_from_coords
get_gauss_quadratureDG
get_tri_quadratureDG
grid_center_lat_lon
node_xyz_to_lonlat_rad
node_lonlat_rad_to_xyz
normalize_in_place
parse_grid_type
utils.enable_jit_cache
utils.disable_jit_cache
utils.enable_jit
utils.disable_jit
2 changes: 1 addition & 1 deletion test/test_exodus.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from pathlib import Path

import uxarray as ux
from uxarray.utils.constants import INT_DTYPE, INT_FILL_VALUE
from uxarray.constants import INT_DTYPE, INT_FILL_VALUE

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

Expand Down
16 changes: 10 additions & 6 deletions test/test_grid.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@

import uxarray as ux

from uxarray.grid.connectivity import _build_edge_node_connectivity, _build_face_edges_connectivity

from uxarray.grid.coordinates import _populate_cartesian_xyz_coord, _populate_lonlat_coord

try:
import constants
except ImportError:
Expand Down Expand Up @@ -429,7 +433,7 @@ def test_populate_cartesian_xyz_coord(self):
verts_degree = np.stack((lon_deg, lat_deg), axis=1)

vgrid = ux.open_grid(verts_degree, islatlon=False)
vgrid._populate_cartesian_xyz_coord()
_populate_cartesian_xyz_coord(vgrid)

for i in range(0, vgrid.nMesh2_node):
nt.assert_almost_equal(vgrid._ds["Mesh2_node_cart_x"].values[i],
Expand Down Expand Up @@ -470,7 +474,7 @@ def test_populate_lonlat_coord(self):
verts_cart = np.stack((cart_x, cart_y, cart_z), axis=1)

vgrid = ux.open_grid(verts_cart, islatlon=False)
vgrid._populate_lonlat_coord()
_populate_lonlat_coord(vgrid)
# The connectivity in `__from_vert__()` will be formed in a reverse order
lon_deg, lat_deg = zip(*reversed(list(zip(lon_deg, lat_deg))))
for i in range(0, vgrid.nMesh2_node):
Expand Down Expand Up @@ -665,7 +669,7 @@ def test_build_face_edges_connectivity_mpas(self):
edge_nodes_expected = np.unique(edge_nodes_expected, axis=0)

# construct edge nodes
mpas_grid_ux._build_edge_node_connectivity(repopulate=True)
_build_edge_node_connectivity(mpas_grid_ux, repopulate=True)
edge_nodes_output = mpas_grid_ux._ds['Mesh2_edge_nodes'].values

self.assertTrue(np.array_equal(edge_nodes_expected, edge_nodes_output))
Expand All @@ -688,7 +692,7 @@ def test_build_face_edges_connectivity(self):

mesh2_face_nodes = tgrid._ds["Mesh2_face_nodes"]

tgrid._build_face_edges_connectivity()
_build_face_edges_connectivity(tgrid)
mesh2_face_edges = tgrid._ds.Mesh2_face_edges
mesh2_edge_nodes = tgrid._ds.Mesh2_edge_nodes

Expand Down Expand Up @@ -723,7 +727,7 @@ def test_build_face_edges_connectivity_mpas(self):

mesh2_face_nodes = tgrid._ds["Mesh2_face_nodes"]

tgrid._build_face_edges_connectivity()
_build_face_edges_connectivity(tgrid)
mesh2_face_edges = tgrid._ds.Mesh2_face_edges
mesh2_edge_nodes = tgrid._ds.Mesh2_edge_nodes

Expand All @@ -746,7 +750,7 @@ def test_build_face_edges_connectivity_fillvalues(self):
self.f5_deg, self.f6_deg
]
uds = ux.open_grid(verts)
uds._build_face_edges_connectivity()
_build_face_edges_connectivity(uds)
n_face = len(uds._ds["Mesh2_face_edges"].values)
n_node = uds.nMesh2_node
n_edge = len(uds._ds["Mesh2_edge_nodes"].values)
Expand Down
Loading

0 comments on commit 7f59006

Please sign in to comment.