ATLAS icon indicating copy to clipboard operation
ATLAS copied to clipboard

Land outputs

Open znicholls opened this issue 3 years ago • 0 comments

(And one more...)

I'm trying to reproduce the world, land mask values for CESM2-WACCM r1i1p1f1 ssp585 and am struggling. My script is below

import iris
import numpy as np

tas = iris.load_cube("tas_Amon_CESM2-WACCM_ssp585_r1i1p1f1_gn_201501-210012.nc")
land_frac = iris.load_cube("land_sea_mask_1degree.nc4")

tas_regridded = tas.regrid(land_frac, iris.analysis.Linear())

cosine_latitude_weights = np.cos(np.pi * tas_regridded.coords("latitude")[0].points / 180)
# really stupid way to do to this but fine as a hack
cosine_latitude_weights_lat_lon = []
for i in range(tas_regridded.coords("longitude")[0].shape[0]):
    cosine_latitude_weights_lat_lon.append(cosine_latitude_weights)

cosine_latitude_weights_lat_lon = np.vstack(cosine_latitude_weights_lat_lon).T

tas_regridded_weighted_mean = tas_regridded.collapsed(
    ["longitude", "latitude"],
    iris.analysis.MEAN,
    weights=(land_frac.data > 0.999).astype(int) * np.broadcast_to(cosine_latitude_weights_lat_lon, tas_regridded.shape)
)

tas_regridded_weighted_mean.data[:5]
tas_regridded_weighted_mean.data[:5] - 273.15
# gives 5.454, 5.387, 7.496, 10.090, 12.722

For 2015-01 I get: 5.454 C You report: -0.106 C

For 2015-02 I get: 5.387 C You report: -0.364 C

For 2015-05 I get: 12.722 C You report: 7.01 C

This seems a large difference to put down only to regridding?

znicholls avatar Oct 08 '20 03:10 znicholls