from pyremap import LatLonGridDescriptor, Remapper from mpas_analysis.shared.constants import constants inputFileName = '/media/xylar/extra_data/analysis/output/GMPAS-QU240/' \ 'remap_obs/clim/obs/mld_1.0x1.0degree.nc' obsDescriptor = LatLonGridDescriptor.read(fileName=inputFileName, latVarName='lat', lonVarName='lon') comparisonLatRes = 4. comparisonLonRes = 4. nLat = int((constants.latmax - constants.latmin) / comparisonLatRes) + 1 nLon = int((constants.lonmax - constants.lonmin) / comparisonLonRes) + 1 lat = numpy.linspace(constants.latmin, constants.latmax, nLat) lon = numpy.linspace(constants.lonmin, constants.lonmax, nLon) comparisonDescriptor = LatLonGridDescriptor.create(lat, lon, units='degrees') remapper = Remapper(obsDescriptor, comparisonDescriptor, mappingFileName='map.nc') remapper.build_mapping_file() remapper.remap_file(inputFileName, 'mld_4.0x4.0degree.nc', ['mld', 'month', 'year'], renormalize=0.05)
# modify the size and resolution of the Antarctic grid as desired outDescriptor = get_polar_descriptor(Lx=6000., Ly=5000., dx=10., dy=10., projection='antarctic') outGridName = outDescriptor.meshName mappingFileName = 'map_{}_to_{}_bilinear.nc'.format(inGridName, outGridName) remapper = Remapper(inDescriptor, outDescriptor, mappingFileName) # conservative remapping with 4 MPI tasks (using mpirun) remapper.build_mapping_file(method='bilinear', mpiTasks=4) # select the SST at the initial time as an example data set srcFileName = 'temp_{}.nc'.format(inGridName) ds = xarray.open_dataset(inGridFileName) dsOut = xarray.Dataset() dsOut['temperature'] = ds['temperature'].isel(nVertLevels=0, Time=0) dsOut.to_netcdf(srcFileName) # do remapping with ncremap outFileName = 'temp_{}_file.nc'.format(outGridName) remapper.remap_file(srcFileName, outFileName) # do remapping again, this time with python remapping outFileName = 'temp_{}_array.nc'.format(outGridName) dsOut = remapper.remap(dsOut) dsOut.to_netcdf(outFileName)