From ae0cff2f8e0b8e92e5db39b2be282315266832cf Mon Sep 17 00:00:00 2001 From: Florian Ziemen Date: Fri, 30 Aug 2024 14:30:54 +0300 Subject: [PATCH] improve vert int --- B2/L6/docs/result_evaluation.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/B2/L6/docs/result_evaluation.md b/B2/L6/docs/result_evaluation.md index 1dd147c..b53e62b 100644 --- a/B2/L6/docs/result_evaluation.md +++ b/B2/L6/docs/result_evaluation.md @@ -207,16 +207,16 @@ Solution: Vertical interpolation to the pressure levels of HERA. Solution: Vertical interpolation to the pressure levels of HERA. ```python -def hacky_linear_interpolation(data, target_grid, target, dim="level_full"): +def hacky_linear_interpolation(data, data_grid, target, dim="level_full"): from collections.abc import Iterable if isinstance(target, Iterable) and len(target) > 1: - return np.array([hacky_linear_interpolation(data, target_grid, y, dim) for y in target ]) + return np.array([hacky_linear_interpolation(data, data_grid, y, dim) for y in target ]) else: - level_above = (target_grid > target).argmax(dim=dim) + level_above = (data_grid > target).argmax(dim=dim) level_below = level_above - 1 - value_above = target_grid.isel(**{dim: level_above}) - value_below = target_grid.isel(**{dim: level_below}) + value_above = data_grid.isel(**{dim: level_above}) + value_below = data_grid.isel(**{dim: level_below}) f = (target - value_below) / (value_above - value_below) interpolated = (1-f) * data.isel(**{dim: level_below}) + f * data.isel(**{dim: level_above}) return np.where(level_above > 0, interpolated, np.nan) @@ -224,7 +224,8 @@ def hacky_linear_interpolation(data, target_grid, target, dim="level_full"): # Wind speed zonal mean -``` +```python +target = hera.u.level.values interpolated = hacky_linear_interpolation( icon.ua.sel(time=timeslice).mean(dim='time').compute(), icon.pfull.sel(time=timeslice).mean(dim='time').compute(),