Skip to content

Commit 2e78821

Browse files
committed
calculate_grid_convergence_index
1 parent bb27980 commit 2e78821

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

mhkit/river/io/d3d.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -894,3 +894,30 @@ def list_variables(data: Union[netCDF4.Dataset, xr.Dataset, xr.DataArray]) -> Li
894894
"data must be a NetCDF4 Dataset, xarray Dataset, or "
895895
f"xarray DataArray. Got: {type(data)}"
896896
)
897+
898+
def calculate_grid_convergence_index(fine_grid, coarse_grid, refinement_ratio,factor_of_safety=1.25, order=2):
899+
"""
900+
Calculate the Grid Convergence Index (GCI) between two grid sizes. https://www.grc.nasa.gov/WWW/wind/valid/tutorial/spatconv.html
901+
902+
Parameters
903+
----------
904+
fine_grid: numpy.ndarray
905+
Results from the finer grid.
906+
coarse_grid: numpy.ndarray
907+
Results from the coarser grid.
908+
refinement_ratio: float
909+
Refinement ratio between the grids.
910+
order: int
911+
Order of accuracy (default is 2).
912+
913+
Returns
914+
-------
915+
gci: float
916+
Grid Convergence Index (GCI).
917+
"""
918+
# Calculate the approximate relative error
919+
error = np.abs((fine_grid - coarse_grid) / fine_grid)
920+
921+
# Calculate the GCI
922+
gci = (factor_of_safety * error) / (refinement_ratio**order - 1)
923+
return gci

0 commit comments

Comments
 (0)