@@ -613,11 +613,34 @@ def pt_in_itriangle_proj(ix, iy):
613613 z_attrs = da .cf ["vertical" ].attrs
614614 z_attrs .update ({"axis" : "Z" })
615615 zkey = da .cf ["vertical" ].name
616- da = xgcm_grid .transform (
617- da , "Z" , np .array (Z ), target_data = da .cf ["vertical" ], method = "linear"
618- )
619- da [zkey ].attrs = z_attrs
620- da = order (da ) # reorder dimensions to convention
616+ if isinstance (da , xr .DataArray ):
617+ with warnings .catch_warnings ():
618+ warnings .simplefilter ("ignore" )
619+ da = xgcm_grid .transform (
620+ da , "Z" , np .array (Z ), target_data = da .cf ["vertical" ], method = "linear"
621+ )
622+ da [zkey ].attrs = z_attrs
623+ da = order (da ) # reorder dimensions to convention
624+ elif isinstance (da , xr .Dataset ):
625+ da_calcs = {}
626+ for data_var in da .data_vars :
627+ if "s_rho" in da .dims :
628+ dause = da [data_var ].chunk ({"s_rho" : - 1 })#.copy()
629+ else :
630+ dause = da [data_var ]
631+ with warnings .catch_warnings ():
632+ warnings .simplefilter ("ignore" )
633+ da_calcs [data_var ] = xgcm_grid .transform (
634+ dause ,
635+ "Z" ,
636+ np .array (Z ),
637+ target_data = dause .cf ["vertical" ],
638+ method = "linear" ,
639+ )
640+ da_calcs [data_var ][zkey ].attrs = z_attrs
641+ for data_var in da_calcs .keys ():
642+ da [data_var ] = da_calcs [data_var ]
643+ da = order (da ) # reorder dimensions to convention
621644
622645 # # if the vertical coord is greater than 1D, can only do restricted interpolation
623646 # # at the moment
@@ -902,11 +925,10 @@ def sel2d(
902925 return output
903926
904927 else :
905-
906928 # make sure the mask matches
907929 if mask is not None :
908- # import pdb; pdb.set_trace()
909- msg = f"Mask { mask .name } dimensions do not match horizontal var { var .name } dimensions. mask dims: { mask .dims } , var dims: { var .dims } "
930+ msg = f"Mask { mask . name } dimensions do not match horizontal Dataset/DataArray dimensions. mask dims: { mask . dims } , var dims: { var . dims } "
931+ # msg = f"Mask {mask.name} dimensions do not match horizontal var {var.name} dimensions. mask dims: {mask.dims}, var dims: {var.dims}"
910932 assert len (set (mask .dims ) - set (var .dims )) == 0 , msg
911933
912934 # currently lons, lats 1D only
0 commit comments