From d8cc53c6e52965d5e26663d3fa24b1262cc27983 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Mon, 4 Sep 2023 15:53:57 +1000 Subject: [PATCH] quad_area -> quadrilateral_area + one more test --- regional_mom6/regional_mom6.py | 6 +++--- tests/test_grid_generation.py | 15 +++++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/regional_mom6/regional_mom6.py b/regional_mom6/regional_mom6.py index f8daa9b6..0818c14a 100644 --- a/regional_mom6/regional_mom6.py +++ b/regional_mom6/regional_mom6.py @@ -21,7 +21,7 @@ "motu_requests", "dz", "angle_between", - "quad_area", + "quadilateral_area", "rectangular_hgrid", "experiment", "segment", @@ -300,7 +300,7 @@ def angle_between(v1, v2, v3): # Borrowed from grid tools (GFDL) -def quad_area(lat, lon): +def quadilateral_area(lat, lon): """Returns area of spherical quadrilaterals (bounded by great arcs).""" # x, y, z are 3D coordinates on the unit sphere @@ -356,7 +356,7 @@ def rectangular_hgrid(λ, φ): lon, lat = np.meshgrid(λ, φ) - area = quad_area(lat, lon) * R**2 + area = quadilateral_area(lat, lon) * R**2 attrs = { "tile": { diff --git a/tests/test_grid_generation.py b/tests/test_grid_generation.py index 3a7f2da0..5b89f78e 100644 --- a/tests/test_grid_generation.py +++ b/tests/test_grid_generation.py @@ -1,7 +1,7 @@ import numpy as np import pytest from regional_mom6 import angle_between -from regional_mom6 import quad_area +from regional_mom6 import quadilateral_area from regional_mom6 import rectangular_hgrid import xarray as xr @@ -13,22 +13,25 @@ ([1, 0, 0], [1, 1, 0], [0, 1, 1], np.pi / 4), ], ) + def test_angle_between(v1, v2, v3, true_angle): assert np.isclose(angle_between(v1, v2, v3), true_angle) - # create a lat-lon mesh that covers 1/4 of the North Hemisphere -lon, lat = np.meshgrid(np.linspace(0, 90, 5), np.linspace(0, 90, 5)) +lon1, lat1 = np.meshgrid(np.linspace(0, 90, 5), np.linspace(0, 90, 5)) +# create a lat-lon mesh that covers 1/4 of the whole globe +lon2, lat2 = np.meshgrid(np.linspace(-45, 45, 5), np.linspace(-90, 90, 5)) @pytest.mark.parametrize( ("lat", "lon", "true_area"), [ - (lat, lon, 0.5 * np.pi), + (lat1, lon1, 0.5 * np.pi), + (lat2, lon2, np.pi), ], ) -def test_quad_area(lat, lon, true_area): - assert np.isclose(np.sum(quad_area(lat, lon)), true_area) +def test_quadilateral_area(lat, lon, true_area): + assert np.isclose(np.sum(quadilateral_area(lat, lon)), true_area) # a simple test that rectangular_hgrid runs without erroring