Error in vertical interpolation on a 3D grid

18 views
Skip to first unread message

vikas _

unread,
Dec 4, 2024, 2:38:00 AM12/4/24
to wrfpython-talk
Hello all,

I'm trying to vertically interpolate few variables on a 3D grid. I have created 10 vertical levels between the 5m to mixing height. The height_levels are defined separately for each grid point. It is a 3D array with shape (10,159,154), where 159 are the latitudes and 154 are the longitudes.

num_levels= 10
for t in range(len(ds['Time'])):
        pblh_t = ds['PBLH'].isel(Time=t).values
        height_levels = np.logspace(np.log10(5), np.log10(pblh_t), num_levels)

        field = ds[var].isel(Time=t)
        Z = ds['Z_center'].isel(Time=t)

        interpolated_data = interplevel(field, Z, height_levels) 


The shape and the dimension of field and Z is matching exactly. However, this code is giving the following error:

File ~/miniconda3/envs/spyder-env/lib/python3.9/site-packages/wrf/specialdec.py:685 in func_wrapper
"the same leftmost and rightmost "

ValueError: argument 1 and 2 must have the same leftmost and rightmost dimensions.

If i give a list of values to interpolate, for example: height_levels = [50, 100,200,300]. code works fine and give the results without any error.

on inspecting the specialdec.py file, following are the lines which are raising the error

line:681

 if is2dlev:
            if levels.ndim != 2:
                if (levels.shape[0:-2] != z.shape[0:-3] or
                        levels.shape[-2:] != z.shape[-2:]):
                    raise ValueError("argument 1 and 2 must have "
                                     "the same leftmost and rightmost "
                                     "dimensions")


For my case, levels.shape[-2:] = z.shape[-2:]),

height_levels.shape[-2:]
Out[99]: (159, 154)

Z.shape[-2:]
Out[100]: (159, 154)

but,
height_levels.shape[0:-2]
Out[101]: (10,)

Z.shape[0:-3]
Out[102]: ()

Z.shape[0:-3] is empty since the Z has only 3 dimensions (10,159,154).

Can anyone please help me fix this.

Thank you for your time!!!

Regards
Vikas




Reply all
Reply to author
Forward
0 new messages