Skip to content

Commit 82ad06a

Browse files
committed
add grid_convergence_index calculation
1 parent bb27980 commit 82ad06a

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

mhkit/river/io/d3d.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -894,3 +894,29 @@ 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+
def calculate_grid_convergence_index(fine_grid, coarse_grid, refinement_ratio,factor_of_safety=1.25, order=2):
898+
"""
899+
Calculate the Grid Convergence Index (GCI) between two grid sizes. https://www.grc.nasa.gov/WWW/wind/valid/tutorial/spatconv.html
900+
901+
Parameters
902+
----------
903+
fine_grid: numpy.ndarray
904+
Results from the finer grid.
905+
coarse_grid: numpy.ndarray
906+
Results from the coarser grid.
907+
refinement_ratio: float
908+
Refinement ratio between the grids.
909+
order: int
910+
Order of accuracy (default is 2).
911+
912+
Returns
913+
-------
914+
gci: float
915+
Grid Convergence Index (GCI).
916+
"""
917+
# Calculate the approximate relative error
918+
error = np.abs((fine_grid - coarse_grid) / fine_grid)
919+
920+
# Calculate the GCI
921+
gci = (factor_of_safety * error) / (refinement_ratio**order - 1)
922+
return gci

0 commit comments

Comments
 (0)