From 8c135a9d21e0b00e3036baa493cd115e47a3c6ae Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Thu, 20 Jul 2023 17:20:42 -0700 Subject: [PATCH 01/15] BedMachine v4 to v5 Issue #33 --- README.org | 7 ++ freshwater.org | 61 +++++------ update_2023.org | 281 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 314 insertions(+), 35 deletions(-) create mode 100644 update_2023.org diff --git a/README.org b/README.org index 3fe80b6..a49c674 100644 --- a/README.org +++ b/README.org @@ -2,6 +2,7 @@ * Table of contents :toc_5:noexport: - [[#greenland-liquid-water-discharge-from-1950-through-2021][Greenland liquid water discharge from 1950 through 2021]] - [[#updates-since-last-publication][Updates since last publication]] + - [[#v-2023][v 2023]] - [[#v-2022-10][v 2022-10]] - [[#v-2022-08][v 2022-08]] - [[#warning][WARNING]] @@ -51,6 +52,12 @@ The source for this work is hosted on GitHub at https://github.com/GEUS-PROMICE/ ** Updates since last publication +*** v 2023 + +v 2023 has the following changes from v2022-10. See 2023 Milestone and git log for more details ++ BedMachine updated to v5 from v4 ++ + *** v 2022-10 v 2022-10 has the following changes: diff --git a/freshwater.org b/freshwater.org index babc851..865e43f 100644 --- a/freshwater.org +++ b/freshwater.org @@ -2930,34 +2930,34 @@ Band 1 Block=16620x1 Type=Int16, ColorInterp=Gray #+end_example -*** BedMachine v4 +*** BedMachine v5 #+NAME: BM4_md5sum_ncdump #+BEGIN_SRC bash :results verbatim :exports both -md5sum ${DATADIR}/Morlighem_2017/BedMachineGreenland-2021-04-20.nc +md5sum ${DATADIR}/Morlighem_2017/BedMachineGreenland-v5.nc echo "" -ncdump -chs ${DATADIR}/Morlighem_2017/BedMachineGreenland-2021-04-20.nc +ncdump -chs ${DATADIR}/Morlighem_2017/BedMachineGreenland-v5.nc #+END_SRC #+RESULTS: BM4_md5sum_ncdump #+begin_example -11f50b15079b4a8eb06ec98c142ff4bf /home/kdm/data/Morlighem_2017/BedMachineGreenland-2021-04-20.nc +7387182a059dd8cad66ce7638eb0d7cd /home/kdm/data/Morlighem_2017/BedMachineGreenland-v5.nc -netcdf BedMachineGreenland-2021-04-20 { +netcdf BedMachineGreenland-v5 { dimensions: x = 10218 ; y = 18346 ; variables: char mapping ; - mapping:geoid = "eigen-6c4" ; mapping:grid_mapping_name = "polar_stereographic" ; mapping:latitude_of_projection_origin = 90. ; mapping:standard_parallel = 70. ; mapping:straight_vertical_longitude_from_pole = -45. ; - mapping:semi_major_axis = 6378273. ; - mapping:inverse_flattening = 298.27940504282 ; mapping:false_easting = 0. ; mapping:false_northing = 0. ; + mapping:proj4text = "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs" ; + mapping:crs_wkt = "PROJCS[\"WGS 84 / NSIDC Sea Ice Polar Stereographic North\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\",70],PARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3413\"]]" ; + mapping:_Storage = "contiguous" ; int x(x) ; x:long_name = "Cartesian x-coordinate" ; x:standard_name = "projection_x_coordinate" ; @@ -2976,14 +2976,14 @@ variables: mask:valid_range = 0b, 4b ; mask:flag_values = 0b, 1b, 2b, 3b, 4b ; mask:flag_meanings = "ocean ice_free_land grounded_ice floating_ice non_greenland_land" ; - mask:source = "gimpmask v2.0 (http://bprc.osu.edu/GDG/icemask.php) combined with coastline from Jeremie Mouginot" ; + mask:source = "gimpmask v2.0 (https://byrd.osu.edu/research/groups/glacier-dynamics/data/icemask) combined with coastline from Jeremie Mouginot" ; mask:_Storage = "contiguous" ; float surface(y, x) ; surface:long_name = "ice surface elevation" ; surface:standard_name = "surface_altitude" ; surface:units = "meters" ; surface:grid_mapping = "mapping" ; - surface:source = "gimpdem v2.1 (http://bprc.osu.edu/GDG/gimpdem.php)" ; + surface:source = "gimpdem v2.1 (https://byrd.osu.edu/research/groups/glacier-dynamics/data/gimpdem)" ; surface:_Storage = "contiguous" ; surface:_Endianness = "little" ; float thickness(y, x) ; @@ -3010,17 +3010,17 @@ variables: errbed:source = "Mathieu Morlighem" ; errbed:_FillValue = -9999s ; errbed:_Storage = "chunked" ; - errbed:_ChunkSizes = 1835, 1022 ; + errbed:_ChunkSizes = 3670, 2044 ; errbed:_DeflateLevel = 2 ; errbed:_Shuffle = "true" ; errbed:_Endianness = "little" ; byte source(y, x) ; - source:long_name = "data source (0 = none, 1 = gimpdem, 2 = Mass conservation, 3 = synthetic, 4 = interpolation, 5 = hydrostatic equilibrium, 6 = kriging, 7 = RTOPO-2, 8 = gravity inversion, 10+ = bathymetry data)" ; + source:long_name = "data source (0 = none, 1 = gimpdem, 2 = Mass conservation, 3 = synthetic, 4 = interpolation, 5 = hydrostatic equilibrium, 6 = kriging, 7 = RTOPO-2, 8 = gravity inversion, 9 = Millan et al. 2021, 10+ = bathymetry data)" ; source:grid_mapping = "mapping" ; - source:valid_range = 0b, 46b ; - source:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 10b, 11b, 12b, 13b, 14b, 15b, 16b, 17b, 18b, 19b, 20b, 21b, 22b, 23b, 24b, 25b, 26b, 27b, 28b, 29b, 30b, 31b, 32b, 33b, 34b, 35b, 36b, 37b, 38b, 39b, 40b, 41b, 42b, 43b, 44b, 45b, 46b ; - source:flag_meanings = "none gimpdem mass_conservation synthetic interpolation hydrodstatic_equilibrium kriging RTopo_2 gravity_inversion bathymetry1 bathymetry2 bathymetry3 bathymetry4 bathymetry5 bathymetry6 bathymetry7 bathymetry8 bathymetry9 bathymetry10 bathymetry11 bathymetry12 bathymetry13 bathymetry14 bathymetry15 bathymetry16 bathymetry17 bathymetry18 bathymetry19 bathymetry20 bathymetry21 bathymetry22 bathymetry23 bathymetry24 bathymetry25 bathymetry26 bathymetry27 bathymetry28 bathymetry29 bathymetry30 bathymetry31 bathymetry32 bathymetry33 bathymetry34 bathymetry35 bathymetry36 bathymetry37" ; - source:source = "Mathieu Morlighem, RTOPO-2" ; + source:valid_range = 0b, 50b ; + source:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b, 10b, 11b, 12b, 13b, 14b, 15b, 16b, 17b, 18b, 19b, 20b, 21b, 22b, 23b, 24b, 25b, 26b, 27b, 28b, 29b, 30b, 31b, 32b, 33b, 34b, 35b, 36b, 37b, 38b, 39b, 40b, 41b, 42b, 43b, 44b, 45b, 46b, 47b, 48b, 49b, 50b ; + source:flag_meanings = "none gimpdem mass_conservation synthetic interpolation hydrodstatic_equilibrium kriging RTopo_2 gravity_inversion millan_etal_2021 bathymetry1 bathymetry2 bathymetry3 bathymetry4 bathymetry5 bathymetry6 bathymetry7 bathymetry8 bathymetry9 bathymetry10 bathymetry11 bathymetry12 bathymetry13 bathymetry14 bathymetry15 bathymetry16 bathymetry17 bathymetry18 bathymetry19 bathymetry20 bathymetry21 bathymetry22 bathymetry23 bathymetry24 bathymetry25 bathymetry26 bathymetry27 bathymetry28 bathymetry29 bathymetry30 bathymetry31 bathymetry32 bathymetry33 bathymetry34 bathymetry35 bathymetry36 bathymetry37 bathymetry38 bathymetry39 bathymetry40 bathymetry41" ; + source:source = "Mathieu Morlighem" ; source:_Storage = "contiguous" ; byte dataid(y, x) ; dataid:long_name = "data id" ; @@ -3030,17 +3030,17 @@ variables: dataid:flag_meanings = "GIMPdem Radar seismic multibeam" ; dataid:source = "Mathieu Morlighem" ; dataid:_Storage = "chunked" ; - dataid:_ChunkSizes = 2621, 1460 ; + dataid:_ChunkSizes = 4587, 2555 ; dataid:_DeflateLevel = 1 ; dataid:_Shuffle = "true" ; short geoid(y, x) ; - geoid:long_name = "EIGEN-EC4 Geoid - WGS84 Ellipsoid difference" ; + geoid:long_name = "EIGEN-6C4 Geoid - WGS84 Ellipsoid difference" ; geoid:standard_name = "geoid_height_above_reference_ellipsoid" ; geoid:units = "meters" ; geoid:grid_mapping = "mapping" ; geoid:geoid = "eigen-6c4 (Forste et al 2014)" ; geoid:_Storage = "chunked" ; - geoid:_ChunkSizes = 1835, 1022 ; + geoid:_ChunkSizes = 3670, 2044 ; geoid:_DeflateLevel = 2 ; geoid:_Shuffle = "true" ; geoid:_Endianness = "little" ; @@ -3049,7 +3049,7 @@ variables: :Conventions = "CF-1.7" ; :Title = "BedMachine Greenland" ; :Author = "Mathieu Morlighem" ; - :version = "20-Apr-2021 (v4.10)" ; + :version = "28-Jul-2022 (v5.5)" ; :nx = 10218. ; :ny = 18346. ; :Projection = "Polar Stereographic North (70N, 45W)" ; @@ -3062,8 +3062,9 @@ variables: :no_data = -9999. ; :license = "No restrictions on access or use" ; :Data_citation = "Morlighem M. et al., (2017), BedMachine v3: Complete bed topography and ocean bathymetry mapping of Greenland from multi-beam echo sounding combined with mass conservation, Geophys. Res. Lett., 44, doi:10.1002/2017GL074954. (http://onlinelibrary.wiley.com/doi/10.1002/2017GL074954/full)" ; - :_SuperblockVersion = 2 ; - :_IsNetcdf4 = 1 ; + :_NCProperties = "version=2,netcdf=4.7.4,hdf5=1.8.12" ; + :_SuperblockVersion = 0 ; + :_IsNetcdf4 = 0 ; :_Format = "netCDF-4 classic model" ; } #+end_example @@ -4142,21 +4143,11 @@ r.mapcalc "z_s = if(mask_o_l_i == 1, null(), z_s_ocean)" #+END_SRC -*** BedMachine v4 +*** BedMachine v5 :PROPERTIES: -:CUSTOM_ID: import_BM4 +:CUSTOM_ID: import_BM5 :END: -BedMachine v4 no longer in EPSG:3413 format. Now in EPSG:3411. Extract from NetCDF to GeoTIFF and convert with the following: - -#+BEGIN_SRC bash :tangle no -vars=$(cdo showname BedMachineGreenland-2021-04-20.nc) -mkdir -p BMv4_3411 BMv4_3413 -parallel --bar "gdal_translate -co COMPRESS=DEFLATE NetCDF:BedMachineGreenland-2021-04-20.nc:{1} ./BMv4_3411/{1}.tif" ::: ${vars} -parallel --bar "gdalwarp -co COMPRESS=DEFLATE -t_srs EPSG:3413 ./BMv4_3411/{1}.tif ./BMv4_3413/{1}.tif" ::: ${vars} -#+END_SRC - - #+BEGIN_SRC bash :results verbatim log_info "Importing BedMachine" g.mapset -c BedMachine @@ -4165,7 +4156,7 @@ ROOT=${DATADIR}/Morlighem_2017 for var in mask surface thickness bed errbed geoid source; do echo $var - r.external source=${DATADIR}/Morlighem_2017/BMv4_3413/${var}.tif output=${var} + r.in.gdal -o input="NetCDF:${DATADIR}/Morlighem_2017/BedMachineGreenland-v5.nc:"${var} output=${var} done g.rename raster=surface,z_s g.rename raster=bed,z_b diff --git a/update_2023.org b/update_2023.org new file mode 100644 index 0000000..8742a19 --- /dev/null +++ b/update_2023.org @@ -0,0 +1,281 @@ + +* Table of contents :toc_2:noexport: +- [[#introduction][Introduction]] +- [[#racmo][RACMO]] + - [[#update][Update]] + - [[#old-files][Old files]] +- [[#mar][MAR]] +- [[#bedmachine-v5][BedMachine v5]] + +* Introduction + +* RACMO +:PROPERTIES: +:header-args: :dir "/home/kdm/tmp/tmp/webspace.science.uu.nl/~noel0002/Share/Ken/runoff" +:END: + +** Update + +Provided with the following files: + +*** md5sum + +#+BEGIN_SRC bash :exports both :results verbatim +md5sum *.nc.gz +#+END_SRC + +#+BEGIN_SRC bash :exports both :results verbatim +parallel --progress gunzip {} ::: *.gz +#+END_SRC + +#+BEGIN_SRC bash :exports both :results verbatim +md5sum *.nc +#+END_SRC + +#+RESULTS: +: ad571c679a87c83ce909fad2b1b6e4bc runoff.2022_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc +: db31a4655a9bccb96b131841d1153e62 runoff.2022_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc +: a449be8541fe5bdeea31a99c34f32936 runoff.2022_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc +: fa554cbf0d760a8bb50813bbdf58d1e2 runoff.2022_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc + +*** ncdump +#+BEGIN_SRC bash :exports both :results verbatim +ncdump -chs runoff.2022_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc +#+END_SRC + +#+RESULTS: +#+begin_example +netcdf runoff.2022_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD { +dimensions: + time = 92 ; + x = 1496 ; + y = 2700 ; +variables: + float time(time) ; + time:units = "DAYS since 2022-10-01 00:00:00" ; + time:long_name = "time" ; + time:standard_name = "time" ; + float x(x) ; + x:units = "km" ; + x:long_name = "x" ; + x:standard_name = "x" ; + float y(y) ; + y:units = "km" ; + y:long_name = "y" ; + y:standard_name = "y" ; + float LON(y, x) ; + LON:units = "Degree" ; + LON:long_name = "Longitude" ; + LON:standard_name = "Longitude" ; + LON:actual_range = -639.4561f, 855.5441f ; + LON:missing_value = -1.e+30f ; + float LAT(y, x) ; + LAT:units = "Degree" ; + LAT:long_name = "Latitude" ; + LAT:standard_name = "Latitude" ; + LAT:actual_range = -3355.096f, -656.096f ; + LAT:missing_value = -1.e+30f ; + float runoffcorr(time, y, x) ; + runoffcorr:units = "mm w.e. per day" ; + runoffcorr:long_name = "1km Topography corrected runoff" ; + runoffcorr:standard_name = "1km_Topography_corrected_runoff" ; + runoffcorr:actual_range = 0.f, 80.17568f ; + runoffcorr:missing_value = -1.e+30f ; + +// global attributes: + :title = "Daily mean runoff field at 1km (RACMO2.3p2 FGRN055 ERA)" ; + :institution = "IMAU (Brice Noel)" ; + :grid = "Map Projection:Polar Stereographic Ellipsoid - Map Reference Latitude: 90.0 - Map Reference Longitude: -39.0 - Map Second Reference Latitude: 71.0 - Map Eccentricity: 0.081819190843 ;wgs84 - Map Equatorial Radius: 6378137.0 ;wgs84 meters - Grid Map Origin Column: 160 - Grid Map Origin Row: -120 - Grid Map Units per Cell: 5000 - Grid Width: 301 - Grid Height: 561" ; + :history = "libUN (2013.05.22) - Tue Jan 10 13:09:27 2023" ; + :netcdf = "4.7.4 of Nov 4 2021 16:22:15 $" ; + :_Format = "classic" ; +} +#+end_example + +** Old files +:PROPERTIES: +:header-args: :dir "/home/kdm/data/RACMO/freshwater" +:END: + +*** File list + +#+BEGIN_SRC bash :exports both :results verbatim +ls -l +#+END_SRC + +#+RESULTS: +: total 70020 +: -rw-rw-r-- 1 kdm kdm 6953540 May 18 2022 FGRN055_Masks_5.5km.nc +: -rw-rw-r-- 1 kdm kdm 64648132 May 16 2022 Icemask_Topo_Iceclasses_lon_lat_average_1km.nc +: -rw-r--r-- 1 kdm kdm 41187 May 6 2022 README.org +: drwxr-xr-x 2 kdm kdm 28672 May 16 2022 runoff_ice_1km +: drwxrwxr-x 3 kdm kdm 4096 May 18 2022 runoff_land_1km_regrid +: drwxrwxr-x 2 kdm kdm 12288 May 16 2022 runoff_land_5.5km + +#+BEGIN_SRC bash :exports both :results verbatim + +#+END_SRC + +* MAR +:PROPERTIES: +:header-args: :dir "/home/kdm/tmp/tmp/climato.be/fettweis/tmp/ken/1km" +:END: + +Provided all files updated from =v3.12= to =v3.13= + +#+BEGIN_SRC bash :exports both :results verbatim +ls +#+END_SRC + +#+RESULTS: +: MARv3.13-daily-ERA5-1950.nc + +#+BEGIN_SRC bash :exports both :results verbatim +ncdump -h MARv3.13-daily-ERA5-1950.nc +#+END_SRC + + +* BedMachine v5 +:PROPERTIES: +:header-args: :dir "/home/kdm/data/Morlighem_2017" +:END: + +#+BEGIN_SRC bash :exports both :results verbatim +md5sum *v5* +#+END_SRC + +#+RESULTS: +: d78c1583d7a27c9d095de262fa16bc62 BedMachineGreenland-v5_bed.tif +: 7387182a059dd8cad66ce7638eb0d7cd BedMachineGreenland-v5.nc + +#+BEGIN_SRC bash :exports both :results verbatim +ncdump -chs BedMachineGreenland-v5.nc +#+END_SRC + +#+RESULTS: +#+begin_example +netcdf BedMachineGreenland-v5 { +dimensions: + x = 10218 ; + y = 18346 ; +variables: + char mapping ; + mapping:grid_mapping_name = "polar_stereographic" ; + mapping:latitude_of_projection_origin = 90. ; + mapping:standard_parallel = 70. ; + mapping:straight_vertical_longitude_from_pole = -45. ; + mapping:false_easting = 0. ; + mapping:false_northing = 0. ; + mapping:proj4text = "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs" ; + mapping:crs_wkt = "PROJCS[\"WGS 84 / NSIDC Sea Ice Polar Stereographic North\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\",70],PARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3413\"]]" ; + mapping:_Storage = "contiguous" ; + int x(x) ; + x:long_name = "Cartesian x-coordinate" ; + x:standard_name = "projection_x_coordinate" ; + x:units = "meter" ; + x:_Storage = "contiguous" ; + x:_Endianness = "little" ; + int y(y) ; + y:long_name = "Cartesian y-coordinate" ; + y:standard_name = "projection_y_coordinate" ; + y:units = "meter" ; + y:_Storage = "contiguous" ; + y:_Endianness = "little" ; + byte mask(y, x) ; + mask:long_name = "mask (0 = ocean, 1 = ice-free land, 2 = grounded ice, 3 = floating ice, 4 = non-Greenland land)" ; + mask:grid_mapping = "mapping" ; + mask:valid_range = 0b, 4b ; + mask:flag_values = 0b, 1b, 2b, 3b, 4b ; + mask:flag_meanings = "ocean ice_free_land grounded_ice floating_ice non_greenland_land" ; + mask:source = "gimpmask v2.0 (https://byrd.osu.edu/research/groups/glacier-dynamics/data/icemask) combined with coastline from Jeremie Mouginot" ; + mask:_Storage = "contiguous" ; + float surface(y, x) ; + surface:long_name = "ice surface elevation" ; + surface:standard_name = "surface_altitude" ; + surface:units = "meters" ; + surface:grid_mapping = "mapping" ; + surface:source = "gimpdem v2.1 (https://byrd.osu.edu/research/groups/glacier-dynamics/data/gimpdem)" ; + surface:_Storage = "contiguous" ; + surface:_Endianness = "little" ; + float thickness(y, x) ; + thickness:long_name = "ice thickness" ; + thickness:standard_name = "land_ice_thickness" ; + thickness:units = "meters" ; + thickness:grid_mapping = "mapping" ; + thickness:source = "Mass conservation (Mathieu Morlighem)" ; + thickness:_Storage = "contiguous" ; + thickness:_Endianness = "little" ; + float bed(y, x) ; + bed:long_name = "bed topography" ; + bed:standard_name = "bedrock_altitude" ; + bed:units = "meters" ; + bed:grid_mapping = "mapping" ; + bed:source = "Mass conservation (Mathieu Morlighem)" ; + bed:_FillValue = -9999.f ; + bed:_Storage = "contiguous" ; + bed:_Endianness = "little" ; + short errbed(y, x) ; + errbed:long_name = "bed topography/ice thickness error" ; + errbed:units = "meters" ; + errbed:grid_mapping = "mapping" ; + errbed:source = "Mathieu Morlighem" ; + errbed:_FillValue = -9999s ; + errbed:_Storage = "chunked" ; + errbed:_ChunkSizes = 3670, 2044 ; + errbed:_DeflateLevel = 2 ; + errbed:_Shuffle = "true" ; + errbed:_Endianness = "little" ; + byte source(y, x) ; + source:long_name = "data source (0 = none, 1 = gimpdem, 2 = Mass conservation, 3 = synthetic, 4 = interpolation, 5 = hydrostatic equilibrium, 6 = kriging, 7 = RTOPO-2, 8 = gravity inversion, 9 = Millan et al. 2021, 10+ = bathymetry data)" ; + source:grid_mapping = "mapping" ; + source:valid_range = 0b, 50b ; + source:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b, 10b, 11b, 12b, 13b, 14b, 15b, 16b, 17b, 18b, 19b, 20b, 21b, 22b, 23b, 24b, 25b, 26b, 27b, 28b, 29b, 30b, 31b, 32b, 33b, 34b, 35b, 36b, 37b, 38b, 39b, 40b, 41b, 42b, 43b, 44b, 45b, 46b, 47b, 48b, 49b, 50b ; + source:flag_meanings = "none gimpdem mass_conservation synthetic interpolation hydrodstatic_equilibrium kriging RTopo_2 gravity_inversion millan_etal_2021 bathymetry1 bathymetry2 bathymetry3 bathymetry4 bathymetry5 bathymetry6 bathymetry7 bathymetry8 bathymetry9 bathymetry10 bathymetry11 bathymetry12 bathymetry13 bathymetry14 bathymetry15 bathymetry16 bathymetry17 bathymetry18 bathymetry19 bathymetry20 bathymetry21 bathymetry22 bathymetry23 bathymetry24 bathymetry25 bathymetry26 bathymetry27 bathymetry28 bathymetry29 bathymetry30 bathymetry31 bathymetry32 bathymetry33 bathymetry34 bathymetry35 bathymetry36 bathymetry37 bathymetry38 bathymetry39 bathymetry40 bathymetry41" ; + source:source = "Mathieu Morlighem" ; + source:_Storage = "contiguous" ; + byte dataid(y, x) ; + dataid:long_name = "data id" ; + dataid:grid_mapping = "mapping" ; + dataid:valid_range = 1b, 10b ; + dataid:flag_values = 1b, 2b, 7b, 10b ; + dataid:flag_meanings = "GIMPdem Radar seismic multibeam" ; + dataid:source = "Mathieu Morlighem" ; + dataid:_Storage = "chunked" ; + dataid:_ChunkSizes = 4587, 2555 ; + dataid:_DeflateLevel = 1 ; + dataid:_Shuffle = "true" ; + short geoid(y, x) ; + geoid:long_name = "EIGEN-6C4 Geoid - WGS84 Ellipsoid difference" ; + geoid:standard_name = "geoid_height_above_reference_ellipsoid" ; + geoid:units = "meters" ; + geoid:grid_mapping = "mapping" ; + geoid:geoid = "eigen-6c4 (Forste et al 2014)" ; + geoid:_Storage = "chunked" ; + geoid:_ChunkSizes = 3670, 2044 ; + geoid:_DeflateLevel = 2 ; + geoid:_Shuffle = "true" ; + geoid:_Endianness = "little" ; + +// global attributes: + :Conventions = "CF-1.7" ; + :Title = "BedMachine Greenland" ; + :Author = "Mathieu Morlighem" ; + :version = "28-Jul-2022 (v5.5)" ; + :nx = 10218. ; + :ny = 18346. ; + :Projection = "Polar Stereographic North (70N, 45W)" ; + :proj4 = "+init=epsg:3413" ; + :sea_water_density\ \(kg\ m-3\) = 1023. ; + :ice_density\ \(kg\ m-3\) = 917. ; + :xmin = -652925 ; + :ymax = -632675 ; + :spacing = 150 ; + :no_data = -9999. ; + :license = "No restrictions on access or use" ; + :Data_citation = "Morlighem M. et al., (2017), BedMachine v3: Complete bed topography and ocean bathymetry mapping of Greenland from multi-beam echo sounding combined with mass conservation, Geophys. Res. Lett., 44, doi:10.1002/2017GL074954. (http://onlinelibrary.wiley.com/doi/10.1002/2017GL074954/full)" ; + :_NCProperties = "version=2,netcdf=4.7.4,hdf5=1.8.12" ; + :_SuperblockVersion = 0 ; + :_IsNetcdf4 = 0 ; + :_Format = "netCDF-4 classic model" ; +} +#+end_example From f676ecc0d88d2d14aba4d218b863837686af990c Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Sat, 22 Jul 2023 18:35:03 +0200 Subject: [PATCH 02/15] More BedMachine v5 updates #33 --- freshwater.bib | 17 +++++++++++++++++ freshwater.org | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/freshwater.bib b/freshwater.bib index e4b477c..2558c31 100644 --- a/freshwater.bib +++ b/freshwater.bib @@ -1048,6 +1048,23 @@ @misc{NSIDC_BedMachine_GL_v4 doi = {10.5067/VLJ5YXKCNGXO} } +@misc{NSIDC_BedMachine_GL_v5, + author = {Morlighem, M. and Williams, C. and Rignot, E. and An, L. and Arndt, J. E. and Bamber, + J. and Catania, G. and Chauché, N. and Dowdeswell, J. A. and Dorschel, B. and + Fenty, I. and Hogan, K. and Howat, I. and Hubbard, A. and Jakobsson, M. and + Jordan, T. M. and Kjeldsen, K. K. and Millan, R. and Mayer, L. and Mouginot, J. + and Noël, B. and O'Cofaigh, C. and Palmer, S. J. and Rysgaard, S. and Seroussi, H. + and Siegert, M. J. and Slabon, P. and Straneo, F. and van den Broeke, M. R. and + Weinrebe, W. and Wood, M. and Zinglersen, K.}, + year = {2022}, + title = {{IceBridge} {BedMachine} {G}reenland, Version 5}, + note = {Updated 2022. Accessed 2023-07-19}, + address = {{NASA} National Snow and Ice Data Center Distributed Active Archive Center. Boulder, + Colorado USA}, + publisher = {{NASA} National Snow and Ice Data Center Distributed Active Archive Center}, + doi = {10.5067/GMEVBWFLWA7X} +} + @article{citterio_2013, author = {Citterio, M. and Ahlstr{\o}m, A. P.}, journal = {The Cryosphere}, diff --git a/freshwater.org b/freshwater.org index 865e43f..6818401 100644 --- a/freshwater.org +++ b/freshwater.org @@ -189,7 +189,7 @@ This is captured programatically by [[workflow-update]] The discussion of quality control and land runoff with depth < 0 as invalid has been updated. Land runoff with depth << 0 is possible and occurs when land-source runoff enters the subglacial system and discharges subglacially at depth from a marine terminating glacier. This occurs often when runoff is sourced from nunatuks. This scenario also generates land outlets that exist outside of land basins. -Various input data products have been upgraded. BedMachine has been upgraded from v3 to v4. MAR has been upgraded from version 3.11 to 3.12, and the simulation period has been extended from 1979 through September 2019, to 1950 through September 2021. The RACMO simulation period has been extended from 1958 through September 2019 to 1958 through December 2021. Prior to 1990, the RACMO data is unchanged (6-hourly ERA-Interim forcing). From 1990 onward, we now use 3-hourly ERA5 forcing. Both the MAR and RACMO domain boundaries have been corrected, fixing a small alignment error in the initial version. +Various input data products have been upgraded. BedMachine has been upgraded from v3 to v5. MAR has been upgraded from version 3.11 to 3.12, and the simulation period has been extended from 1979 through September 2019, to 1950 through September 2021. The RACMO simulation period has been extended from 1958 through September 2019 to 1958 through December 2021. Prior to 1990, the RACMO data is unchanged (6-hourly ERA-Interim forcing). From 1990 onward, we now use 3-hourly ERA5 forcing. Both the MAR and RACMO domain boundaries have been corrected, fixing a small alignment error in the initial version. Additional metadata now includes the citet:mouginot_2019_data basins and regions and the citet:zwally_2012_data sector nearest to each outlet, and shortest distance between the outlet and the basin, region, or sector boundary. This should be used with caution - some peripheral ice cap outlets may be assigned to the ice sheet, or land-terminating outlets may be nearest to an ice basin that does not overlap with hydrological basin. The distance can be used as a filter. We also include the nearest named glacier from citet:bjork_2015, and distance to the citet:bjork_2015 point. We also include the nearest citet:mankoff_2020_solid gate and distance to gate. Because citet:mankoff_2020_solid is a continually updating product, and gate locations and IDs may change in the future, we note here that we use gates V3 (file: https://doi.org/10.22008/promice/data/ice_discharge/gates/v02/GSEWLR) that are associated with discharge V55. The gate IDs used here are also valid with many previous ice discharge versions, and likely to be valid with many following ice discharge versions. @@ -207,7 +207,7 @@ Freshwater discharge from Greenland primarily takes three forms: solid ice from * Input and validation data ** Static data -The static products (streams, outlets, and basins (Fig. [[fig:overview]])) are derived from an ice sheet surface digital elevation model (DEM), an ice sheet bed DEM, an ice sheet mask, the land surface DEM, and an ocean mask. For the surface DEM, we use ArcticDEM v7 100 m citep:ArcticDEM. Subglacial routing uses ArcticDEM and ice thickness from BedMachine v4 citep:NSIDC_BedMachine_GL_v4,morlighem_2017. Both DEMs are referenced to the WGS84 ellipsoid. For the ice mask we use the Programme for Monitoring of the Greenland Ice Sheet (PROMICE) ice extent citep:citterio_2013. For the ocean mask we use the Making Earth System Data Records for Use in Research Environments (MEaSUREs) Greenland Ice Mapping Project (GIMP) Land Ice and Ocean Classification Mask, Version 1 citep:NSIDC_0714,howat_2014. +The static products (streams, outlets, and basins (Fig. [[fig:overview]])) are derived from an ice sheet surface digital elevation model (DEM), an ice sheet bed DEM, an ice sheet mask, the land surface DEM, and an ocean mask. For the surface DEM, we use ArcticDEM v7 100 m citep:ArcticDEM. Subglacial routing uses ArcticDEM and ice thickness from BedMachine v5 citep:NSIDC_BedMachine_GL_v5,morlighem_2017. Both DEMs are referenced to the WGS84 ellipsoid. For the ice mask we use the Programme for Monitoring of the Greenland Ice Sheet (PROMICE) ice extent citep:citterio_2013. For the ocean mask we use the Making Earth System Data Records for Use in Research Environments (MEaSUREs) Greenland Ice Mapping Project (GIMP) Land Ice and Ocean Classification Mask, Version 1 citep:NSIDC_0714,howat_2014. ** RCM time series From 97e39e5f26d7c0778c65ba61aef2a41ec57c3bb0 Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Sat, 22 Jul 2023 18:35:21 +0200 Subject: [PATCH 03/15] MAR 2023 #36 --- freshwater.org | 106 ++++++++++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/freshwater.org b/freshwater.org index 6818401..0c4219e 100644 --- a/freshwater.org +++ b/freshwater.org @@ -218,7 +218,7 @@ The time series product (daily discharge) is derived from daily runoff estimates R = ME + RA - RT - RF. \end{equation} -In Eq. \ref{eq:runoff}, \(ME\) is melt, \(RA\) is rainfall, \(RT\) is retention, and \(RF\) is refreezing. In RACMO, retention occurs only when firn is present (not with bare ice). MAR does have a delay for bare ice runoff. Neither have a delay for land runoff. Both RCM outputs were provided regridded to the same 1 km grid using an offline statistical downscaling technique based on the local vertical runoff gradient applied to the subgrid topography citep:noel_2016,fettweis_2020. MAR (v 3.12; citet:delhasse_2020) ran with 7.5 km resolution and ERA5 6 h forcing. RACMO (v 2.3p2; citet:noel_2018,noel_2019) ran with 5.5 km resolution and ERA-Interim 6-hour forcing. Runoff is assigned an uncertainty of \pm15 % (Sect. \ref{sec:uncertain:RCM}). +In Eq. \ref{eq:runoff}, \(ME\) is melt, \(RA\) is rainfall, \(RT\) is retention, and \(RF\) is refreezing. In RACMO, retention occurs only when firn is present (not with bare ice). MAR does have a delay for bare ice runoff. Neither have a delay for land runoff. Both RCM outputs were provided regridded to the same 1 km grid using an offline statistical downscaling technique based on the local vertical runoff gradient applied to the subgrid topography citep:noel_2016,fettweis_2020. MAR (v 3.13; citet:delhasse_2020) ran with 7.5 km resolution and ERA5 6 h forcing. RACMO (v 2.3p2; citet:noel_2018,noel_2019) ran with 5.5 km resolution and ERA-Interim 6-hour forcing. Runoff is assigned an uncertainty of \pm15 % (Sect. \ref{sec:uncertain:RCM}). ** River discharge observations @@ -1388,7 +1388,7 @@ import numpy as np import xarray as xr <> -ds = xr.open_dataset(DATADIR+"/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2000.nc") +ds = xr.open_dataset(DATADIR+"/MAR/3.13-freshwater/MARv3.13-daily-ERA5-2000.nc") lon = ds['LON'].values.flatten() lat = ds['LAT'].values.flatten() @@ -1609,16 +1609,16 @@ Over sea, you can use RF+SF area = xr.open_dataset("./tmp/err_2D_area_MAR.nc") -ROOT=DATADIR+"/MAR/3.12-freshwater" +ROOT=DATADIR+"/MAR/3.13-freshwater" -filelist = np.sort(glob.glob(ROOT+"/MARv3.12-daily-ERA5-????.nc")) +filelist = np.sort(glob.glob(ROOT+"/MARv3.13-daily-ERA5-????.nc")) years = [_.split("-")[-1].split(".")[0] for _ in filelist] for y in years: outfile = "./tmp/MAR_runoff_ice_" + y + ".nc" if os.path.exists(outfile): continue - infile = ROOT+"/MARv3.12-daily-ERA5-" + y + ".nc" + infile = ROOT+"/MARv3.13-daily-ERA5-" + y + ".nc" print("infile: ", infile, "outfile: ", outfile) ds = xr.open_mfdataset(infile, chunks={'time': 30}, @@ -1635,7 +1635,7 @@ for y in years: if os.path.exists(outfile): continue - infile = ROOT+"/MARv3.12-daily-ERA5-" + y + ".nc" + infile = ROOT+"/MARv3.13-daily-ERA5-" + y + ".nc" print("infile: ", infile, "outfile: ", outfile) ds = xr.open_mfdataset(infile, chunks={'time': 30}, @@ -1962,7 +1962,7 @@ r.mapcalc "mask_land_basin = if(not(isnull(basins@land_100)) & isnull(mask_ice_b r.mapcalc "mask_ice_land_basin = if(not(isnull(basins_filled@land_100)), 1, null())" g.region MAR@MAR -p -r.in.gdal -o input="NetCDF:${DATADIR}/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2000.nc:MSK" output=MSK +r.in.gdal -o input="NetCDF:${DATADIR}/MAR/3.13-freshwater/MARv3.13-daily-ERA5-2000.nc:MSK" output=MSK r.region map=MSK region=MAR@MAR r.mapcalc "mask_ice_MAR = if((MSK == 2) & mask_ice_land_basin, 1, null())" r.mapcalc "mask_land_MAR = if((MSK == 1) & mask_ice_land_basin, 1, null())" @@ -2135,7 +2135,7 @@ import xarray as xr import numpy as np <> -mask = xr.open_dataset(DATADIR+"/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2000.nc")['MSK'] +mask = xr.open_dataset(DATADIR+"/MAR/3.13-freshwater/MARv3.13-daily-ERA5-2000.nc")['MSK'] # First day match? # convert mm/grid cell to m^3 o = pd.read_csv('./dat/runoff_ice2margin_MAR.bsv', sep="|", index_col=0, nrows=1) * 1E-3 * 100 * 100 @@ -3075,34 +3075,34 @@ variables: + WARNING :: May be stale. Using pre-computed md5sum because it takes so long to calculate. #+BEGIN_SRC bash :results verbatim :exports both :session -ROOT=${DATADIR}/MAR/3.12-freshwater +ROOT=${DATADIR}/MAR/3.13-freshwater LIST=$(cd ${ROOT}; ls *.nc | { tee >(head -n4 >&3; cat >/dev/null) | tail -n4; } 3>&1 ) # first and last four files parallel --keep-order md5sum ${ROOT}/{} ::: ${LIST} #+END_SRC #+RESULTS: -: f678065481615c0d74078dacf0350457 /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2000.nc -: ae0e868b79f0a9554779d85c0260115e /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2001.nc -: 792b2794f606127aa3f00b215d641859 /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2002.nc -: 19ad04f82cce52403533582c4df236cf /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2003.nc -: f678065481615c0d74078dacf0350457 /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2000.nc -: ae0e868b79f0a9554779d85c0260115e /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2001.nc -: 792b2794f606127aa3f00b215d641859 /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2002.nc -: 19ad04f82cce52403533582c4df236cf /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2003.nc +: 7daa88bfe68f36cf2bb3d12764bfadad /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-1950.nc +: 50cc1900742779e805e5324579ec7870 /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-1951.nc +: 8ac7f5a937319cb543f87aee8777029e /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-1952.nc +: b9922ce8774366a7f30d12a521e0b20d /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-1953.nc +: f4b5e6b752efcd9eec004dc75cd912bc /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-2019.nc +: 64f2a047f794b04e38937f36ac98fbd6 /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-2020.nc +: ef67efc9d87b4c2970b4ecaa493fd063 /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-2021.nc +: e9d574a1bab385523d80f1e448378c6d /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-2022.nc **** ncdump #+NAME: MAR_QC_ncdump #+BEGIN_SRC bash :results verbatim :exports both -ROOT=${DATADIR}/MAR/3.12-freshwater -ncdump -chs ${ROOT}/MARv3.12-daily-ERA5-2000.nc +ROOT=${DATADIR}/MAR/3.13-freshwater +ncdump -chs ${ROOT}/MARv3.13-daily-ERA5-2000.nc #+END_SRC #+RESULTS: MAR_QC_ncdump #+begin_example -netcdf MARv3.12-daily-ERA5-2000 { +netcdf MARv3.13-daily-ERA5-2000 { dimensions: y = 2700 ; x = 1496 ; @@ -3130,6 +3130,17 @@ variables: LON:_DeflateLevel = 6 ; LON:_Shuffle = "true" ; LON:_Endianness = "little" ; + float MEcorr(time, y, x) ; + MEcorr:units = "mmWE/day" ; + MEcorr:long_name = "Total melting (sub-pixel 1)" ; + MEcorr:standard_name = "Total_melting__sub-pixel_1_" ; + MEcorr:_FillValue = 9.96921e+36f ; + MEcorr:missing_value = 9.96921e+36f ; + MEcorr:_Storage = "chunked" ; + MEcorr:_ChunkSizes = 100, 2700, 1496 ; + MEcorr:_DeflateLevel = 6 ; + MEcorr:_Shuffle = "true" ; + MEcorr:_Endianness = "little" ; float MSK(y, x) ; MSK:units = "-" ; MSK:long_name = "Land/Ice Mask" ; @@ -3143,8 +3154,8 @@ variables: MSK:_Endianness = "little" ; float MSK_MAR(y, x) ; MSK_MAR:units = "-" ; - MSK_MAR:long_name = "Original MAR 10x10km2 Ice Mask" ; - MSK_MAR:standard_name = "Original_MAR_10x10km2_Ice_Mask" ; + MSK_MAR:long_name = "Original MAR 5x 5km2 Ice Mask" ; + MSK_MAR:standard_name = "Original_MAR__5x_5km2_Ice_Mask" ; MSK_MAR:_FillValue = 9.96921e+36f ; MSK_MAR:missing_value = 9.96921e+36f ; MSK_MAR:_Storage = "chunked" ; @@ -3152,17 +3163,6 @@ variables: MSK_MAR:_DeflateLevel = 6 ; MSK_MAR:_Shuffle = "true" ; MSK_MAR:_Endianness = "little" ; - float RU2(time, y, x) ; - RU2:units = "mmWE/day" ; - RU2:long_name = "Water run-off (sub-pixel 2)" ; - RU2:standard_name = "Water_run-off__sub-pixel_2_" ; - RU2:_FillValue = 9.96921e+36f ; - RU2:missing_value = 9.96921e+36f ; - RU2:_Storage = "chunked" ; - RU2:_ChunkSizes = 100, 2700, 1496 ; - RU2:_DeflateLevel = 6 ; - RU2:_Shuffle = "true" ; - RU2:_Endianness = "little" ; float RUcorr(time, y, x) ; RUcorr:units = "mmWEday" ; RUcorr:long_name = "Water run-off (sub-pixel 1)" ; @@ -3174,17 +3174,6 @@ variables: RUcorr:_DeflateLevel = 6 ; RUcorr:_Shuffle = "true" ; RUcorr:_Endianness = "little" ; - float SMB2(time, y, x) ; - SMB2:units = "mmWE/day" ; - SMB2:long_name = "Surface Mass Balance (sub-pixel 2)" ; - SMB2:standard_name = "Surface_Mass_Balance__sub-pixel_2_" ; - SMB2:_FillValue = 9.96921e+36f ; - SMB2:missing_value = 9.96921e+36f ; - SMB2:_Storage = "chunked" ; - SMB2:_ChunkSizes = 100, 2700, 1496 ; - SMB2:_DeflateLevel = 6 ; - SMB2:_Shuffle = "true" ; - SMB2:_Endianness = "little" ; float SMBcorr(time, y, x) ; SMBcorr:units = "mmWE/day" ; SMBcorr:long_name = "Surface Mass Balance (sub-pixel 1)" ; @@ -3209,8 +3198,8 @@ variables: SRF:_Endianness = "little" ; float SRF_MAR(y, x) ; SRF_MAR:units = "m" ; - SRF_MAR:long_name = "Original MAR 10x10km2 Surface height" ; - SRF_MAR:standard_name = "Original_MAR_10x10km2_Surface_height" ; + SRF_MAR:long_name = "Original MAR 5x 5km2 Surface height" ; + SRF_MAR:standard_name = "Original_MAR__5x_5km2_Surface_height" ; SRF_MAR:_FillValue = 9.96921e+36f ; SRF_MAR:missing_value = 9.96921e+36f ; SRF_MAR:_Storage = "chunked" ; @@ -3218,6 +3207,17 @@ variables: SRF_MAR:_DeflateLevel = 6 ; SRF_MAR:_Shuffle = "true" ; SRF_MAR:_Endianness = "little" ; + float TTcorr(time, y, x) ; + TTcorr:units = "degC" ; + TTcorr:long_name = "2m-Temperature" ; + TTcorr:standard_name = "2m-Temperature" ; + TTcorr:_FillValue = 9.96921e+36f ; + TTcorr:missing_value = 9.96921e+36f ; + TTcorr:_Storage = "chunked" ; + TTcorr:_ChunkSizes = 100, 2700, 1496 ; + TTcorr:_DeflateLevel = 6 ; + TTcorr:_Shuffle = "true" ; + TTcorr:_Endianness = "little" ; float time(time) ; time:units = "DAYS since 2000-01-01 12:00:00" ; time:long_name = "time" ; @@ -3247,17 +3247,17 @@ variables: y:_Endianness = "little" ; // global attributes: - :title = "Daily MARv3.12 outputs in 2000 interpolated on the 1x1km^2 grid from Noel et al. using ERA5" ; + :title = "Daily MARv3.13 outputs (5km) in 2000 interpolated on the 1x1km^2 grid from Noel et al. using ERA5" ; :institution = "University of Liège (Belgium)" ; :contact = "xavier.fettweis@uliege.be" ; :institute = "University of Liège (Belgium)" ; - :model = "regional climate model MARv3.12.0" ; + :model = "regional climate model MARv3.13.0" ; :forcing = "ERA5" ; - :creation_date = "2021-11-18-T114559Z" ; - :history = "Thu Nov 18 11:45:59 2021: ncks --cnk_dmn time,100 -L 6 MARv3.12-daily-ERA5-2000.nc MARv3.12-daily-ERA5-2000.nc4" ; - :NCO = "netCDF Operators version 4.8.1 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; - :_NCProperties = "version=2,netcdf=4.7.3,hdf5=1.10.5," ; - :_SuperblockVersion = 0 ; + :creation_date = "2023-07-13-T005156Z" ; + :history = "Thu Jul 13 00:51:56 2023: ncks --cnk_dmn time,100 -L 6 MARv3.13-daily-ERA5-2000.nc MARv3.13-daily-ERA5-2000.nc4" ; + :NCO = "netCDF Operators version 5.0.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; + :_NCProperties = "version=2,netcdf=4.8.1,hdf5=1.10.8" ; + :_SuperblockVersion = 2 ; :_IsNetcdf4 = 1 ; :_Format = "netCDF-4" ; } From cebf9c5cadc5c54fe171ec69a827f61ebcf51296 Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Thu, 27 Jul 2023 13:15:29 -0700 Subject: [PATCH 04/15] Document updated environment --- freshwater.org | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/freshwater.org b/freshwater.org index 0c4219e..4d95fcd 100644 --- a/freshwater.org +++ b/freshwater.org @@ -6539,17 +6539,17 @@ for tool in gdal-bin parallel sed gawk netcdf-bin proj-bin nco cdo bash grass-gu #+END_SRC #+RESULTS: -| bash | 5.0-6ubuntu1.1 | -| cdo | 1.9.9~rc1-1 | -| datamash | 1.4-1 | -| gawk | 1:5.0.1+dfsg-1 | -| gdal-bin | 3.1.3+dfsg-1~focal0 | -| grass-gui | 7.8.4-1~focal1 | -| nco | 4.9.1-1build2 | -| netcdf-bin | 1:4.7.3-1 | -| parallel | 20161222-1.1 | -| proj-bin | 7.1.1-1~focal0 | -| sed | 4.7-1 | +| bash | 5.1-6ubuntu1 | +| cdo | 2.0.4-1 | +| datamash | 1.7-2 | +| gawk | 1:5.1.0-1build3 | +| gdal-bin | 3.4.1+dfsg-1build4 | +| grass-gui | 7.8.7-1 | +| nco | 5.0.6-1 | +| netcdf-bin | 1:4.8.1-1 | +| parallel | 20210822+ds-2 | +| proj-bin | 8.2.1-1 | +| sed | 4.8-1ubuntu2 | *** Org Mode @@ -6558,11 +6558,11 @@ for tool in gdal-bin parallel sed gawk netcdf-bin proj-bin nco cdo bash grass-gu #+END_SRC #+RESULTS: -: Org mode version 9.4 (9.4-19-gb1de0c-elpaplus @ /home/kdm/.emacs.d/elpa/org-plus-contrib-20201019/) +: Org mode version 9.5.5 (release_9.5.5 @ /home/kdm/local/src/org-mode/lisp/) *** Python -The code below produces [[./environment.yml]] when this file is exported. If that file exists, then =conda env create= and =source activate PROJECTNAME= will install all the python packages used in this document. +The code below produces [[./environment.yml]] when this file is exported. If that file exists, then ~mamba env create -f environment.yml~ and ~mamba activate freshwater~ will install all the python packages used in this document. #+NAME: conda_env #+BEGIN_SRC bash :cmdline -i :results verbatim :eval no-export :exports both From 707ab233037ca8f40fc10242c33cdf8647e29468 Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Thu, 27 Jul 2023 13:22:42 -0700 Subject: [PATCH 05/15] MAR RU2 -> MEcorr --- freshwater.org | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freshwater.org b/freshwater.org index 4d95fcd..aba8184 100644 --- a/freshwater.org +++ b/freshwater.org @@ -1598,6 +1598,8 @@ Over land you can use RUcorr and RU2 in fct of MSK_GIMP Over sea, you can use RF+SF #+END_QUOTE ++ It appears this is now called 'MEcorr' as of MAR v3.13 + **** Extract MAR vars :PROPERTIES: :ID: d698cc04-c4d7-4812-a274-fca1a83ee0eb @@ -1640,7 +1642,7 @@ for y in years: ds = xr.open_mfdataset(infile, chunks={'time': 30}, combine='by_coords') - da = ds['RU2'] * (ds['MSK'] == 1) * area['Band1'].values # runoff over land + da = ds['MEcorr'] * (ds['MSK'] == 1) * area['Band1'].values # runoff over land da.variable.attrs = {'units':'mmWE/day','long_name':'Water runoff','standard_name':'Water runoff'} ds_sub = da.to_dataset(name='runoff') delayed_obj = ds_sub.to_netcdf(outfile, compute=False) From a0931d0d82c84c815be02db63aa3d8c4def90010 Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Fri, 28 Jul 2023 07:22:13 -0700 Subject: [PATCH 06/15] Revert commits Wrong files sent and MEcorr should be RU2 Revert "MAR RU2 -> MEcorr" 707ab23 Revert "MAR 2023 #36" 97e39e5 --- freshwater.org | 78 ++++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 40 deletions(-) diff --git a/freshwater.org b/freshwater.org index aba8184..33e1594 100644 --- a/freshwater.org +++ b/freshwater.org @@ -1598,8 +1598,6 @@ Over land you can use RUcorr and RU2 in fct of MSK_GIMP Over sea, you can use RF+SF #+END_QUOTE -+ It appears this is now called 'MEcorr' as of MAR v3.13 - **** Extract MAR vars :PROPERTIES: :ID: d698cc04-c4d7-4812-a274-fca1a83ee0eb @@ -1642,7 +1640,7 @@ for y in years: ds = xr.open_mfdataset(infile, chunks={'time': 30}, combine='by_coords') - da = ds['MEcorr'] * (ds['MSK'] == 1) * area['Band1'].values # runoff over land + da = ds['RU2'] * (ds['MSK'] == 1) * area['Band1'].values # runoff over land da.variable.attrs = {'units':'mmWE/day','long_name':'Water runoff','standard_name':'Water runoff'} ds_sub = da.to_dataset(name='runoff') delayed_obj = ds_sub.to_netcdf(outfile, compute=False) @@ -3083,14 +3081,14 @@ parallel --keep-order md5sum ${ROOT}/{} ::: ${LIST} #+END_SRC #+RESULTS: -: 7daa88bfe68f36cf2bb3d12764bfadad /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-1950.nc -: 50cc1900742779e805e5324579ec7870 /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-1951.nc -: 8ac7f5a937319cb543f87aee8777029e /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-1952.nc -: b9922ce8774366a7f30d12a521e0b20d /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-1953.nc -: f4b5e6b752efcd9eec004dc75cd912bc /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-2019.nc -: 64f2a047f794b04e38937f36ac98fbd6 /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-2020.nc -: ef67efc9d87b4c2970b4ecaa493fd063 /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-2021.nc -: e9d574a1bab385523d80f1e448378c6d /home/kdm/data/MAR/3.13-freshwater/MARv3.13-daily-ERA5-2022.nc +: f678065481615c0d74078dacf0350457 /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2000.nc +: ae0e868b79f0a9554779d85c0260115e /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2001.nc +: 792b2794f606127aa3f00b215d641859 /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2002.nc +: 19ad04f82cce52403533582c4df236cf /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2003.nc +: f678065481615c0d74078dacf0350457 /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2000.nc +: ae0e868b79f0a9554779d85c0260115e /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2001.nc +: 792b2794f606127aa3f00b215d641859 /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2002.nc +: 19ad04f82cce52403533582c4df236cf /home/kdm/data/MAR/3.12-freshwater/MARv3.12-daily-ERA5-2003.nc **** ncdump @@ -3132,17 +3130,6 @@ variables: LON:_DeflateLevel = 6 ; LON:_Shuffle = "true" ; LON:_Endianness = "little" ; - float MEcorr(time, y, x) ; - MEcorr:units = "mmWE/day" ; - MEcorr:long_name = "Total melting (sub-pixel 1)" ; - MEcorr:standard_name = "Total_melting__sub-pixel_1_" ; - MEcorr:_FillValue = 9.96921e+36f ; - MEcorr:missing_value = 9.96921e+36f ; - MEcorr:_Storage = "chunked" ; - MEcorr:_ChunkSizes = 100, 2700, 1496 ; - MEcorr:_DeflateLevel = 6 ; - MEcorr:_Shuffle = "true" ; - MEcorr:_Endianness = "little" ; float MSK(y, x) ; MSK:units = "-" ; MSK:long_name = "Land/Ice Mask" ; @@ -3165,6 +3152,17 @@ variables: MSK_MAR:_DeflateLevel = 6 ; MSK_MAR:_Shuffle = "true" ; MSK_MAR:_Endianness = "little" ; + float RU2(time, y, x) ; + RU2:units = "mmWE/day" ; + RU2:long_name = "Water run-off (sub-pixel 2)" ; + RU2:standard_name = "Water_run-off__sub-pixel_2_" ; + RU2:_FillValue = 9.96921e+36f ; + RU2:missing_value = 9.96921e+36f ; + RU2:_Storage = "chunked" ; + RU2:_ChunkSizes = 100, 2700, 1496 ; + RU2:_DeflateLevel = 6 ; + RU2:_Shuffle = "true" ; + RU2:_Endianness = "little" ; float RUcorr(time, y, x) ; RUcorr:units = "mmWEday" ; RUcorr:long_name = "Water run-off (sub-pixel 1)" ; @@ -3176,6 +3174,17 @@ variables: RUcorr:_DeflateLevel = 6 ; RUcorr:_Shuffle = "true" ; RUcorr:_Endianness = "little" ; + float SMB2(time, y, x) ; + SMB2:units = "mmWE/day" ; + SMB2:long_name = "Surface Mass Balance (sub-pixel 2)" ; + SMB2:standard_name = "Surface_Mass_Balance__sub-pixel_2_" ; + SMB2:_FillValue = 9.96921e+36f ; + SMB2:missing_value = 9.96921e+36f ; + SMB2:_Storage = "chunked" ; + SMB2:_ChunkSizes = 100, 2700, 1496 ; + SMB2:_DeflateLevel = 6 ; + SMB2:_Shuffle = "true" ; + SMB2:_Endianness = "little" ; float SMBcorr(time, y, x) ; SMBcorr:units = "mmWE/day" ; SMBcorr:long_name = "Surface Mass Balance (sub-pixel 1)" ; @@ -3209,17 +3218,6 @@ variables: SRF_MAR:_DeflateLevel = 6 ; SRF_MAR:_Shuffle = "true" ; SRF_MAR:_Endianness = "little" ; - float TTcorr(time, y, x) ; - TTcorr:units = "degC" ; - TTcorr:long_name = "2m-Temperature" ; - TTcorr:standard_name = "2m-Temperature" ; - TTcorr:_FillValue = 9.96921e+36f ; - TTcorr:missing_value = 9.96921e+36f ; - TTcorr:_Storage = "chunked" ; - TTcorr:_ChunkSizes = 100, 2700, 1496 ; - TTcorr:_DeflateLevel = 6 ; - TTcorr:_Shuffle = "true" ; - TTcorr:_Endianness = "little" ; float time(time) ; time:units = "DAYS since 2000-01-01 12:00:00" ; time:long_name = "time" ; @@ -3249,17 +3247,17 @@ variables: y:_Endianness = "little" ; // global attributes: - :title = "Daily MARv3.13 outputs (5km) in 2000 interpolated on the 1x1km^2 grid from Noel et al. using ERA5" ; + :title = "Daily MARv3.12 outputs in 2000 interpolated on the 1x1km^2 grid from Noel et al. using ERA5" ; :institution = "University of Liège (Belgium)" ; :contact = "xavier.fettweis@uliege.be" ; :institute = "University of Liège (Belgium)" ; - :model = "regional climate model MARv3.13.0" ; + :model = "regional climate model MARv3.12.0" ; :forcing = "ERA5" ; - :creation_date = "2023-07-13-T005156Z" ; - :history = "Thu Jul 13 00:51:56 2023: ncks --cnk_dmn time,100 -L 6 MARv3.13-daily-ERA5-2000.nc MARv3.13-daily-ERA5-2000.nc4" ; - :NCO = "netCDF Operators version 5.0.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; - :_NCProperties = "version=2,netcdf=4.8.1,hdf5=1.10.8" ; - :_SuperblockVersion = 2 ; + :creation_date = "2021-11-18-T114559Z" ; + :history = "Thu Nov 18 11:45:59 2021: ncks --cnk_dmn time,100 -L 6 MARv3.12-daily-ERA5-2000.nc MARv3.12-daily-ERA5-2000.nc4" ; + :NCO = "netCDF Operators version 4.8.1 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; + :_NCProperties = "version=2,netcdf=4.7.3,hdf5=1.10.5," ; + :_SuperblockVersion = 0 ; :_IsNetcdf4 = 1 ; :_Format = "netCDF-4" ; } From 09a25e2e68258555321e5c9594dc89b076715003 Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Tue, 1 Aug 2023 12:19:52 -0700 Subject: [PATCH 07/15] ArcticDEM v4.1 --- freshwater.org | 62 +++++++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/freshwater.org b/freshwater.org index 33e1594..ac180cb 100644 --- a/freshwater.org +++ b/freshwater.org @@ -2776,7 +2776,7 @@ clean_sob: #+NAME: ArcticDEM_provenance #+BEGIN_SRC bash :results verbatim :exports both -file=${DATADIR}/ArcticDEM/arcticdem_mosaic_100m_v3.0.tif +file=${DATADIR}/ArcticDEM/arcticdem_mosaic_100m_v4.1_dem.tif md5sum ${file} echo "" gdalinfo ${file} @@ -2785,21 +2785,29 @@ gdalinfo ${file} #+RESULTS: ArcticDEM_provenance #+begin_example -53f6024b12f216c8d965ffe428289f20 /home/kdm/data/ArcticDEM/arcticdem_mosaic_100m_v3.0.tif +be66611e17eb925404daa080e690522a /home/kdm/data/ArcticDEM/arcticdem_mosaic_100m_v4.1_dem.tif Driver: GTiff/GeoTIFF -Files: /home/kdm/data/ArcticDEM/arcticdem_mosaic_100m_v3.0.tif -Size is 74000, 75000 +Files: /home/kdm/data/ArcticDEM/arcticdem_mosaic_100m_v4.1_dem.tif +Size is 74002, 75002 Coordinate System is: -PROJCRS["unnamed", +PROJCRS["WGS 84 / NSIDC Sea Ice Polar Stereographic North", BASEGEOGCRS["WGS 84", - DATUM["World Geodetic System 1984", + ENSEMBLE["World Geodetic System 1984 ensemble", + MEMBER["World Geodetic System 1984 (Transit)"], + MEMBER["World Geodetic System 1984 (G730)"], + MEMBER["World Geodetic System 1984 (G873)"], + MEMBER["World Geodetic System 1984 (G1150)"], + MEMBER["World Geodetic System 1984 (G1674)"], + MEMBER["World Geodetic System 1984 (G1762)"], + MEMBER["World Geodetic System 1984 (G2139)"], ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1]]], + LENGTHUNIT["metre",1]], + ENSEMBLEACCURACY[2.0]], PRIMEM["Greenwich",0, ANGLEUNIT["degree",0.0174532925199433]], ID["EPSG",4326]], - CONVERSION["Polar Stereographic (variant B)", + CONVERSION["US NSIDC Sea Ice polar stereographic north", METHOD["Polar Stereographic (variant B)", ID["EPSG",9829]], PARAMETER["Latitude of standard parallel",70, @@ -2815,34 +2823,40 @@ PROJCRS["unnamed", LENGTHUNIT["metre",1], ID["EPSG",8807]]], CS[Cartesian,2], - AXIS["(E)",south, - MERIDIAN[90, - ANGLEUNIT["degree",0.0174532925199433, - ID["EPSG",9122]]], + AXIS["easting (X)",south, + MERIDIAN[45, + ANGLEUNIT["degree",0.0174532925199433]], ORDER[1], LENGTHUNIT["metre",1]], - AXIS["(N)",south, - MERIDIAN[180, - ANGLEUNIT["degree",0.0174532925199433, - ID["EPSG",9122]]], + AXIS["northing (Y)",south, + MERIDIAN[135, + ANGLEUNIT["degree",0.0174532925199433]], ORDER[2], - LENGTHUNIT["metre",1]]] + LENGTHUNIT["metre",1]], + USAGE[ + SCOPE["Polar research."], + AREA["Northern hemisphere - north of 60°N onshore and offshore, including Arctic."], + BBOX[60,-180,90,180]], + ID["EPSG",3413]] Data axis to CRS axis mapping: 1,2 -Origin = (-4000000.000000000000000,4100000.000000000000000) +Origin = (-4000100.000000000000000,4100100.000000000000000) Pixel Size = (100.000000000000000,-100.000000000000000) Metadata: AREA_OR_POINT=Area Image Structure Metadata: COMPRESSION=LZW INTERLEAVE=BAND + LAYOUT=COG + PREDICTOR=3 Corner Coordinates: -Upper Left (-4000000.000, 4100000.000) (179d17'33.65"E, 40d21'21.16"N) -Lower Left (-4000000.000,-3400000.000) ( 94d38' 7.67"W, 44d 4' 3.58"N) -Upper Right ( 3400000.000, 4100000.000) ( 95d19'55.77"E, 43d27'58.63"N) -Lower Right ( 3400000.000,-3400000.000) ( 0d 0' 0.01"E, 47d35' 3.32"N) +Upper Left (-4000100.000, 4100100.000) (179d17'33.71"E, 40d21'17.26"N) +Lower Left (-4000100.000,-3400100.000) ( 94d38' 7.22"W, 44d 3'59.59"N) +Upper Right ( 3400100.000, 4100100.000) ( 95d19'55.26"E, 43d27'54.66"N) +Lower Right ( 3400100.000,-3400100.000) ( 0d 0' 0.01"E, 47d34'59.22"N) Center ( -300000.000, 350000.000) (175d36' 4.66"E, 85d44'47.27"N) -Band 1 Block=256x256 Type=Float32, ColorInterp=Gray +Band 1 Block=512x512 Type=Float32, ColorInterp=Gray NoData Value=-9999 + Overviews: 37001x37501, 18500x18750, 9250x9375, 4625x4687, 2312x2343, 1156x1171, 578x585, 289x292 #+end_example *** Citterio 2013 @@ -4121,7 +4135,7 @@ r.null mask_ice null=0 log_info "Importing ArcticDEM" g.mapset -c ArcticDEM -r.external source=${DATADIR}/ArcticDEM/arcticdem_mosaic_100m_v3.0.tif output=arctic_raw # all arctic +r.external source=${DATADIR}/ArcticDEM/arcticdem_mosaic_100m_v4.1_dem.tif output=arctic_raw # all arctic g.region raster=mask_ocean@GIMP_0714 align=arctic_raw From 0be7e36abebfb10e547be65e3c36bd59e2e8acfe Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Fri, 4 Aug 2023 12:05:05 -0700 Subject: [PATCH 08/15] 2021 -> 2022 --- freshwater.bib | 12 ++ freshwater.org | 454 ++++++++----------------------------------------- 2 files changed, 79 insertions(+), 387 deletions(-) diff --git a/freshwater.bib b/freshwater.bib index 2558c31..197d0c6 100644 --- a/freshwater.bib +++ b/freshwater.bib @@ -1,3 +1,15 @@ +@article{li_2022, + author = {Ya Li and Kang Yang and Shuai Gao and Laurence C. Smith and Xavier Fettweis and + Manchun Li}, + title = {Surface meltwater runoff routing through a coupled supraglacial-proglacial drainage + system, Inglefield Land, northwest Greenland}, + journal = {International Journal of Applied Earth Observation and Geoinformation}, + year = 2022, + volume = 106, + pages = 102647, + doi = {10.1016/j.jag.2021.102647}, + publisher = {Elsevier {BV}}} + @article{ESSD_reviewer1, doi = {10.5194/essd-2020-47-rc1}, url = {https://doi.org/10.5194/essd-2020-47-rc1}, diff --git a/freshwater.org b/freshwater.org index ac180cb..1204f8c 100644 --- a/freshwater.org +++ b/freshwater.org @@ -45,7 +45,7 @@ #+RESULTS: workflow-update #+BEGIN_EXPORT LaTeX -\title{Greenland liquid water discharge from 1950 through December 2021} +\title{Greenland liquid water discharge from 1950 through December 2022} \Author[1]{Kenneth D.}{Mankoff} \Author[2]{Brice}{Noël} \Author[3]{Xavier}{Fettweis} @@ -79,7 +79,7 @@ #+END_EXPORT #+BEGIN_abstract -Greenland runoff, from ice mass loss and rainfall, is increasing. That runoff, as discharge, impacts the physical, chemical, and biological properties of the adjacent fjords. However, where and when the discharge occurs is not readily available in an open database. Here we provide data sets of high-resolution Greenland hydrologic outlets, basins, and streams, as well as a daily 1950 through December 2021 time series of Greenland liquid water discharge for each outlet. The data include src_bash{cat ./freshwater/ice/basins.csv | grep -v "^cat" |wc -l} {{{results(=24500=)}}} ice marginal outlets and upstream basins, and src_bash{cat ./freshwater/land/basins.csv | grep -v "^cat" |wc -l} {{{results(=29638=)}}} land coast outlets and upstream basins, derived from the 100 m ArcticDEM and 150 m BedMachine. At each outlet there are daily discharge data for src_jupyter-python[:eval no :session export]{import xarray as xr; ds = xr.open_mfdataset("./freshwater/land/discharge/*.nc", combine='nested', concat_dim='time'); (ds.time.max() - ds.time.min()).values.astype('timedelta64[D]').tolist().days+1} {{{results(=26298=)}}} days - ice sheet runoff routed subglacially to ice margin outlets, and land runoff routed to coast outlets - from two regional climate models (RCMs; MAR and RACMO). +Greenland runoff, from ice mass loss and rainfall, is increasing. That runoff, as discharge, impacts the physical, chemical, and biological properties of the adjacent fjords. However, where and when the discharge occurs is not readily available in an open database. Here we provide data sets of high-resolution Greenland hydrologic outlets, basins, and streams, as well as a daily 1950 through December 2022 time series of Greenland liquid water discharge for each outlet. The data include src_bash{cat ./freshwater/ice/basins.csv | grep -v "^cat" |wc -l} {{{results(=24500=)}}} ice marginal outlets and upstream basins, and src_bash{cat ./freshwater/land/basins.csv | grep -v "^cat" |wc -l} {{{results(=29638=)}}} land coast outlets and upstream basins, derived from the 100 m ArcticDEM and 150 m BedMachine. At each outlet there are daily discharge data for src_jupyter-python[:eval no :session export]{import xarray as xr; ds = xr.open_mfdataset("./freshwater/land/discharge/*.nc", combine='nested', concat_dim='time'); (ds.time.max() - ds.time.min()).values.astype('timedelta64[D]').tolist().days+1} {{{results(=26298=)}}} days - ice sheet runoff routed subglacially to ice margin outlets, and land runoff routed to coast outlets - from two regional climate models (RCMs; MAR and RACMO). Our sensitivity study of how outlet location changes for every inland cell based on subglacial routing assumptions, shows that most inland cells where runoff occurs are not highly sensitive to those routing assumptions, and outflow location does not move far. We compare RCM results with 10 gauges from streams with discharge rates spanning 4 orders of magnitude. Results show that for daily discharge at the individual basin scale the 5 to 95 % prediction interval between modeled discharge and observations generally falls within plus or minus a factor of 5 (half an order of magnitude, or +500%/-80%). Results from this study are available at doi:10.22008/promice/freshwater citep:GEUS_freshwater_paper and code is available at https://github.com/GEUS-Glaciology-and-Climate/freshwater citep:github_freshwater. #+END_abstract @@ -189,7 +189,7 @@ This is captured programatically by [[workflow-update]] The discussion of quality control and land runoff with depth < 0 as invalid has been updated. Land runoff with depth << 0 is possible and occurs when land-source runoff enters the subglacial system and discharges subglacially at depth from a marine terminating glacier. This occurs often when runoff is sourced from nunatuks. This scenario also generates land outlets that exist outside of land basins. -Various input data products have been upgraded. BedMachine has been upgraded from v3 to v5. MAR has been upgraded from version 3.11 to 3.12, and the simulation period has been extended from 1979 through September 2019, to 1950 through September 2021. The RACMO simulation period has been extended from 1958 through September 2019 to 1958 through December 2021. Prior to 1990, the RACMO data is unchanged (6-hourly ERA-Interim forcing). From 1990 onward, we now use 3-hourly ERA5 forcing. Both the MAR and RACMO domain boundaries have been corrected, fixing a small alignment error in the initial version. +Various input data products have been upgraded. BedMachine has been upgraded from v3 to v5. MAR has been upgraded from version 3.11 to 3.12, and the simulation period has been extended from 1979 through September 2019, to 1950 through December 2022. The RACMO simulation period has been extended from 1958 through September 2019 to 1958 through December 2022. Prior to 1990, the RACMO data is unchanged (6-hourly ERA-Interim forcing). From 1990 onward, we now use 3-hourly ERA5 forcing. Both the MAR and RACMO domain boundaries have been corrected, fixing a small alignment error in the initial version. Additional metadata now includes the citet:mouginot_2019_data basins and regions and the citet:zwally_2012_data sector nearest to each outlet, and shortest distance between the outlet and the basin, region, or sector boundary. This should be used with caution - some peripheral ice cap outlets may be assigned to the ice sheet, or land-terminating outlets may be nearest to an ice basin that does not overlap with hydrological basin. The distance can be used as a filter. We also include the nearest named glacier from citet:bjork_2015, and distance to the citet:bjork_2015 point. We also include the nearest citet:mankoff_2020_solid gate and distance to gate. Because citet:mankoff_2020_solid is a continually updating product, and gate locations and IDs may change in the future, we note here that we use gates V3 (file: https://doi.org/10.22008/promice/data/ice_discharge/gates/v02/GSEWLR) that are associated with discharge V55. The gate IDs used here are also valid with many previous ice discharge versions, and likely to be valid with many following ice discharge versions. @@ -199,7 +199,7 @@ Additional metadata now includes the citet:mouginot_2019_data basins and regions Over the past decades, liquid runoff from Greenland has increased citep:mernild_2012,bamber_2018_freshwater,trusel_2018,perner_2019 contributing to mass decrease citep:sasgen_2020. When that runoff leaves the ice sheet and discharges into fjords and coastal seas, it influences a wide range of physical citep:straneo_2011,an_2012,mortensen_2013,bendtsen_2015,cowton_2015,mankoff_2016,fried_2019,cowton_2019,beckmann_2019, chemical citep:kanna_2018,balmonte_2019, and biological citep:kamenos_2012,kanna_2018,balmonte_2019 systems citep:catania_2020. The scales of the impacts range from instantaneous at the ice--ocean boundary to decadal in the distal ocean citep:gillard_2016. The influence of freshwater on multiple domains and disciplines citep:catania_2020 is the reason several past studies have estimated runoff and discharge at various temporal and spatial scales (e.g., citet:mernild_2008,mernild_2009,mernild_2010,langen_2015,ahlstrom_2017,citterio_2017,van-as_2018,bamber_2018_freshwater,perner_2019,slater_2019). -To date no product provides discharge estimates at high spatial resolution (~100 m; resolving individual streams), daily temporal resolution, for all of Greenland, covering a broad time span (1950 through September 2021), from multiple regional climate models (RCMs), and with a simple database access software to support downstream users. Here we present these data. In the following description and methods, we document the inputs, assumptions, methodologies, and results we use to estimate Greenland discharge from 1950 through September 2021. +To date no product provides discharge estimates at high spatial resolution (~100 m; resolving individual streams), daily temporal resolution, for all of Greenland, covering a broad time span (1950 through September 2022), from multiple regional climate models (RCMs), and with a simple database access software to support downstream users. Here we present these data. In the following description and methods, we document the inputs, assumptions, methodologies, and results we use to estimate Greenland discharge from 1950 through December 2022. Freshwater discharge from Greenland primarily takes three forms: solid ice from calving at marine-terminating glaciers; submarine meltwater from ice-ocean boundary melting at marine-terminating glaciers; and liquid runoff from melted inland surface ice, rain, and condensation. A recent paper by citet:mankoff_2020_ice targets the solid ice discharge plus submarine melt budget by estimating the ice flow rate across gates 5 km upstream from all fast-flowing marine-terminating glaciers in Greenland. Complementing that paper, this paper targets Greenland's point-source liquid water discharge budget by partitioning RCM runoff estimates to all ice margin and coastal outlets. The sum of these data and citet:mankoff_2020_ice is an estimate of the majority of freshwater (in both liquid and solid form) volume flow rates into Greenland fjords. Those two terms comprise the bulk but not all freshwater - they exclude precipitation directly onto the fjord or ocean surface, as well as relatively minor contributions from evaporation and condensation, sea ice formation and melt, or subglacial basal melting. @@ -620,7 +620,7 @@ Below, we discuss the known uncertainties, ranging from least to most uncertain. The basins presented here are static approximations based on the 100 m DEM of a dynamic system. Land basin boundaries are likely to be more precise and accurate than ice basins because the land surface is better resolved, has larger surface slopes, has negligible subsurface flow, and is less dynamic than the ice surface. Even if basins and outlets seem visually correct from the 100 m product, the basin outline still has uncertainty on the order of hundreds of meters and will therefore include many minor errors and nonphysical properties, such as drainage basin boundaries bisecting lakes. However, all artifacts we did find are significantly smaller than the 1 km^{2} grid of the RCM inputs. We do not show but note that when doing the same work with the 150 m BedMachine land surface DEM, some basins change their outlet locations significantly - draining on the opposite side of a spit or isthmus and into a different fjord than the streams do when observed in satellite imagery. We have not observed these errors in streams and basins derived from the 100 m ArcticDEM in a visual comparison with Google Earth, although they may still exist. -Moving from land basins to subglacial ice basins, the uncertainty increases because subglacial routing is highly dynamic on timescales from minutes to seasons (e.g., citet:werder_2013). This dynamic system may introduce large spatial changes in outflow location (water or basin "piracy", citet:ahlstrom_2002,lindback_2015 and citet:chu_2016_rerouting), but citet:stevens_2018 suggests basins switching outlet locations may not be as common as earlier work suggests, and our sensitivity analysis suggests that near the margin where the majority of runoff occurs, outlet location often changes by less than 10 km under different routing assumptions (Fig. [[fig:k_basin_change]]). The largest (> 100 km) changes in outlet location in Fig. [[fig:k_basin_change]] occur when the continental or ice flow divides move, and one or two of the \(k\) scenario(s) drain cells to an entirely different coast or sector of the ice sheet. Finally, in some locations water is routed supraglacially, not subglacially (c.f. 10.1016/j.jag.2021.102647). +Moving from land basins to subglacial ice basins, the uncertainty increases because subglacial routing is highly dynamic on timescales from minutes to seasons (e.g., citet:werder_2013). This dynamic system may introduce large spatial changes in outflow location (water or basin "piracy", citet:ahlstrom_2002,lindback_2015 and citet:chu_2016_rerouting), but citet:stevens_2018 suggests basins switching outlet locations may not be as common as earlier work suggests, and our sensitivity analysis suggests that near the margin where the majority of runoff occurs, outlet location often changes by less than 10 km under different routing assumptions (Fig. [[fig:k_basin_change]]). The largest (> 100 km) changes in outlet location in Fig. [[fig:k_basin_change]] occur when the continental or ice flow divides move, and one or two of the \(k\) scenario(s) drain cells to an entirely different coast or sector of the ice sheet. Finally, in some locations water is routed supraglacially, not subglacially (c.f. citet:li_2022). The regions near the domain edges - both the land coast and the ice margin - are covered by many small basins, and in this work basins < 1 km^{2} are absorbed into their largest neighbor (see Methods section). By definition these basins are now hydraulically incorrect. An example can be seen in the Zackenberg basin (Fig. [[fig:Z]]a, southwest corner of the basin), where one small basin on the southern side of a hydraulic divide was absorbed into the large Zackenberg basin that should be defined by and limited to the northern side of the mountain range. @@ -773,7 +773,7 @@ If the script is accessed from within Python, then the =discharge= option return * Conclusions :ignore: \conclusions -We provide a 100 m spatial resolution data set of streams, outlets, and basins, and a 1 day temporal resolution data set of discharge through those outlets for the entire ice sheet area from 1950 through September 2021. Access to this database is made simple for nonspecialists with a Python script. Comparing the two RCM-derived discharge products to 10 gauged streams shows the uncertainty is approximately plus or minus a factor of 5, or half an order of magnitude, or +500%/-80%, when comparing daily discharge for single or few basins. +We provide a 100 m spatial resolution data set of streams, outlets, and basins, and a 1 day temporal resolution data set of discharge through those outlets for the entire ice sheet area from 1950 through December 2022. Access to this database is made simple for nonspecialists with a Python script. Comparing the two RCM-derived discharge products to 10 gauged streams shows the uncertainty is approximately plus or minus a factor of 5, or half an order of magnitude, or +500%/-80%, when comparing daily discharge for single or few basins. Because of the high spatial (individual basins) and temporal (daily) resolution, larger uncertainty exists than when working over larger areas or time steps. These larger areas and times can be achieved through spatial and temporal aggregating or by implementing a lag function. @@ -1562,7 +1562,7 @@ At this point the static work is done - we have basins, streams, and outlets for The remaining tasks are to SUM the daily model variables by each basin, and assign results to the outlet for each basin. -Working with the provided NetCDF files directly is possible but accessing them is very slow (in GRASS). I believe this has to do with extracting one variable from a multi-variable file, and/or chunking and compression issues. Given that the code operates day-by-day, that means from 1950 through September 2021 there are src_bash{echo $(( ($(date -d 2021-09-30 +%s) - $(date -d 1950-01-01 +%s)) / 86400 ))} {{{results(=26204=)}}} days, if I can cut access time down by 1 second that save 6.3 hours. In reality, by pre-processing the NetCDF files access time is reduced from 10 seconds to 1 second, saving ~2.5 days of processing time (cutting processing time in half). The cost for this savings is a few dozen lines of code and a few hours of processing. +Working with the provided NetCDF files directly is possible but accessing them is very slow (in GRASS). I believe this has to do with extracting one variable from a multi-variable file, and/or chunking and compression issues. Given that the code operates day-by-day, that means from 1950 through December 2022 there are src_bash{echo $(( ($(date -d 2022-12-31 +%s) - $(date -d 1950-01-01 +%s)) / 86400 ))} {{{results(=26662=)}}} days, if I can cut access time down by 1 second that save 6.3 hours. In reality, by pre-processing the NetCDF files access time is reduced from 10 seconds to 1 second, saving ~2.5 days of processing time (cutting processing time in half). The cost for this savings is a few dozen lines of code and a few hours of processing. + MAR: One RUNOFF variable that contains appropriate runoff for both ice and land + RACMO: One RUNOFF variable that contains appropriate runoff for both ice and land @@ -2102,7 +2102,7 @@ r.univar -t map=model zones=basins@land_${k_pct} \ log_info "Using EXTRA GNU parallel options via \${PARALLEL}: ${PARALLEL:-Not set}" -for y in $(seq 1950 2021); do +for y in $(seq 1950 2022); do for k_pct in 100 90 80; do file_base=MAR_runoff_ice_${y} infile=${file_base}.nc @@ -2170,7 +2170,7 @@ print(isum/osum) log_info "Using EXTRA GNU parallel options via \${PARALLEL}: ${PARALLEL:-Not set}" k_pct=100 -for y in $(seq 1950 2021); do +for y in $(seq 1950 2022); do file_base=MAR_runoff_land_${y} infile=${file_base}.nc outfile=${file_base}_${k_pct}.bsv @@ -2221,7 +2221,7 @@ g.mapset RACMO log_info "Using EXTRA GNU parallel options via \${PARALLEL}: ${PARALLEL:-Not set}" # ice -for y in $(seq 1958 2021); do +for y in $(seq 1958 2022); do for k_pct in 100 90 80; do file_base=RACMO_runoff_ice_${y} infile=${file_base}.nc @@ -2245,7 +2245,7 @@ done # land k_pct=100 -for y in $(seq 1958 2021); do +for y in $(seq 1958 2022); do file_base=RACMO_runoff_land_${y} infile=${file_base}.nc outfile=${file_base}_${k_pct}.bsv @@ -3287,386 +3287,66 @@ variables: echo 'ice' (cd ${DATADIR}/RACMO/freshwater/runoff_ice_1km; find . -type f -name "*.nc" | LC_ALL=C sort | head -n8 | parallel --keep-order md5sum) (cd ${DATADIR}/RACMO/freshwater/runoff_ice_1km; find . -type f -name "*.nc" | LC_ALL=C sort | tail -n8 | parallel --keep-order md5sum) -echo 'land' +echo 'land_5.5_km' (cd ${DATADIR}/RACMO/freshwater/runoff_land_5.5km; find . -type f -name "*.nc" | LC_ALL=C sort | head -n8 | parallel --keep-order md5sum) (cd ${DATADIR}/RACMO/freshwater/runoff_land_5.5km; find . -type f -name "*.nc" | LC_ALL=C sort | tail -n8 | parallel --keep-order md5sum) +echo 'land_1_km' +(cd ${DATADIR}/RACMO/freshwater/runoff_land_1km_regrid; find . -type f -name "*.nc" | LC_ALL=C sort | head -n8 | parallel --keep-order md5sum) +(cd ${DATADIR}/RACMO/freshwater/runoff_land_1km_regrid; find . -type f -name "*.nc" | LC_ALL=C sort | tail -n8 | parallel --keep-order md5sum) #+END_SRC #+RESULTS: RACMO_QC_md5sum -| ice | | -| 219834ba9f1bc98e0a87ab37ea88863d | ./runoff.1990_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | -| 7bde9226e0651e2cfbb8082424ba5181 | ./runoff.1990_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | -| 76d77c3ac9881521825d93c1c43af7d5 | ./runoff.1990_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | -| 17dd60fa5964af322624e72d9b58ea7c | ./runoff.1990_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | -| fcdd6121b4c1c94d1fe5018966deacac | ./runoff.1991_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | -| 48c894ad8d7c95b5521892c18183ea41 | ./runoff.1991_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | -| d405a62f91a201e3b7be931c12e1f678 | ./runoff.1991_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | -| bcaadbf2e742b533a612417f748dd5f0 | ./runoff.1991_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | -| acf9b55165baf20b613067383ea3d1fc | ./runoff_WJB_int.1988_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc | -| 08d48cb9b85912742785fc089a8462bb | ./runoff_WJB_int.1988_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc | -| 9c26be97b007d967bdcc48c34ad1c3ea | ./runoff_WJB_int.1988_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc | -| 0673a072bd62d2957f01d5ca6c6cf570 | ./runoff_WJB_int.1988_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc | -| c9d47dea1a7fe5317447734ac19b7faa | ./runoff_WJB_int.1989_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc | -| 46b5f01a3dce922eee06f48f415ec9fb | ./runoff_WJB_int.1989_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc | -| dbfdf673dc82d957b5109b34724db0a6 | ./runoff_WJB_int.1989_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc | -| af207835fe80b60d58e06b5f6035bf18 | ./runoff_WJB_int.1989_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc | -| land | | -| f60e7505e75e58133e82d381db5caa43 | ./runoff.1957.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | -| 7b2de3637a9b79647aa600c8da7d2990 | ./runoff.1958.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | -| cf60a1b81f84975ee741b483ddedb46c | ./runoff.1959.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | -| fd74c2d30a0d6589303b8ccbc4679694 | ./runoff.1960.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | -| d364c5db102ee36981d55e0b46277673 | ./runoff.1961.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | -| fcb4b8154fce45145ba468c7b0c2a1e6 | ./runoff.1962.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | -| b87dfb7d13426080a58745d9a917de2b | ./runoff.1963.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | -| 3d055d1d9c0ddacae46acad23a421a9e | ./runoff.1964.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | -| 32e7fa643ae40f346999e09c1b17a6d5 | ./runoff.2014.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | -| 1a6d4fdbb8dd14aa5311b3d43954c331 | ./runoff.2015.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | -| a5f91f7731fb2a7418a7e89e9f67fb43 | ./runoff.2016.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | -| 90634adf3dd1b9ee409002a29ac3e08f | ./runoff.2017.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | -| 906751f527cdb51f5448fd324a705a29 | ./runoff.2018.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | -| 0e481615b966397f0a4c50f48ba1dab9 | ./runoff.2019.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | -| a813eb69a66bd4c23cf15afcac592420 | ./runoff.2020.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | -| c5ae487f3ecc5987a17c3c06083ebd5a | ./runoff.2021.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | - -**** File list and md5sums - -+ WARN :: May be stale - -#+BEGIN_SRC bash :results verbatim :exports both -ROOT=${DATADIR}/RACMO/freshwater/ -echo "ice" -cat ${ROOT}/runoff_ice_1km/md5sum.txt -echo "land" -cat ${ROOT}/runoff_land_5.5km/md5sum.txt -#+END_SRC - -#+RESULTS: -#+begin_example - -ice -219834ba9f1bc98e0a87ab37ea88863d runoff.1990_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -7bde9226e0651e2cfbb8082424ba5181 runoff.1990_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -76d77c3ac9881521825d93c1c43af7d5 runoff.1990_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -17dd60fa5964af322624e72d9b58ea7c runoff.1990_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -fcdd6121b4c1c94d1fe5018966deacac runoff.1991_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -48c894ad8d7c95b5521892c18183ea41 runoff.1991_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -d405a62f91a201e3b7be931c12e1f678 runoff.1991_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -bcaadbf2e742b533a612417f748dd5f0 runoff.1991_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -bc5861da0a5bdc247fe974ca4a61d8e7 runoff.1992_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -0413e31913c1549a2f3964a6bb13d708 runoff.1992_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -bee14c9b28b2a7afac60033543e0a0f1 runoff.1992_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -0fc2ace771ecfe5c2c21745eda01d9e7 runoff.1992_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -cbf259892b64f9c4ee1cb27e331d4850 runoff.1993_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -50006792c2898ec66c0dabb1a10086f1 runoff.1993_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -5b92dee94b264f9eefb8f011306b1cd1 runoff.1993_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -d38cde6bd9bd98e2b5be4ffad0b69953 runoff.1993_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -6e4e917e514cf2da216b43b9840eee42 runoff.1994_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -8d3c9c13be4e94493ad50358a24dc986 runoff.1994_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -ecc4ee4042822c9a95bc1cb37a15a8af runoff.1994_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -efea3f2a529be4f78203dc116832a5c3 runoff.1994_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -f312a5cd30a1d16c859ff6308a85b3ca runoff.1995_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -c771ec797020c57570a856bcae3cb1f4 runoff.1995_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -35a4fa0d3c18f8e3ee6f69cd7e281af4 runoff.1995_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -47b1c1b1d9c23543aa6e56bb7aca0845 runoff.1995_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -480cf36f8e635a7e25dba675ed57b2b7 runoff.1996_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -ce80b7ca943f73ffe69ea25e0388cae7 runoff.1996_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -de6b6f04ad87caec15212121ae5d8d22 runoff.1996_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -79b37c995632dcd2f9bb740e66188524 runoff.1996_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -e59031096c7cb902dfc003e6572b2c42 runoff.1997_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -d40027f77fa7f4818cfb10f880c07cd5 runoff.1997_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -47a1ddbe445937cfb11578733bdfcd6b runoff.1997_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -4f83ebbe97762f815bbf919104437132 runoff.1997_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -81f6c14ea7849916e27bc8dc759202f2 runoff.1998_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -87bcc1dd852dfb04c618c0df9d093dd9 runoff.1998_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -cccf436828b03da711695e28eaba34c3 runoff.1998_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -6ea46e7b013a3828419a543efde7c850 runoff.1998_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -57bf6228aec2875c2e75274573e8aca7 runoff.1999_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -1859a281686a239121fe589d0bd31126 runoff.1999_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -97e5d924fdbe58f387704142d81f556f runoff.1999_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -364fbbe7cfd6275ce585c9f539dda769 runoff.1999_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -2b020d58b5e4fac8be3f7037ee32a400 runoff.2000_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -d245240adfd4b9cbd2e482b5ae6e256c runoff.2000_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -282b521a3263de3d473ccd2900b19821 runoff.2000_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -1cb2e6721be3273e1105aba6b44faf2e runoff.2000_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -35135dc8782d8d215b118732e72ade1b runoff.2001_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -560929bea1db4b5a22be5f0ad5cece48 runoff.2001_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -65acfcd4e62d3a68f19fda6e47d943a4 runoff.2001_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -a378ab8b9135b0eebd572b13ea45612f runoff.2001_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -177cd01600c37588d3bcb2b84208010a runoff.2002_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -fee45f7319f0c293bed344739428474a runoff.2002_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -c6360eb85a8fd8d669390dc8d595b29c runoff.2002_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -d5d2a5ec3542969ff535a2f1c255654f runoff.2002_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -abc6710d0884bc03fc9f10853e65d499 runoff.2003_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -1c85381acfbcc275629ec9bc0dfba5f9 runoff.2003_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -3a29fe538efa7d3f1828bbe8c1dbd039 runoff.2003_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -b9acafa6ec31a600c7a2dc47790d3a25 runoff.2003_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -778cef31ff7cf1cc16ad64715de70e4e runoff.2004_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -ec1aa23ef7ddbbf373945a7c1864c1e9 runoff.2004_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -fdd92899ba1eb76cacabef182b76d923 runoff.2004_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -895fb68d0f29f7c510317f22ed81d31b runoff.2004_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -e6bc2eddcfd7c6188e14bf18614e99b4 runoff.2005_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -2d0b56ff82ee34410b40da338a586835 runoff.2005_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -6a15fcd7320064bf4b37bb33beed25b1 runoff.2005_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -ff87becae9341f946be9d54dc7ac8ef5 runoff.2005_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -fdbd9297433a9f845011de11b4579ca0 runoff.2006_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -7098da43696b6a60d1565bb8ce555482 runoff.2006_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -3c7126290054d6955e7dbf552749612b runoff.2006_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -c26513af55400904d92833d8dee086a2 runoff.2006_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -ac9f21f058e22f220267ed3db5055ed3 runoff.2007_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -163690313cb567579d87a0010a4409f4 runoff.2007_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -ce8ee4cebe528a871e762246c5cc7153 runoff.2007_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -b018be117ffe75b23ab7c13dbe95110e runoff.2007_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -2794debe9b49b253c6dd3d5e9ec4dcda runoff.2008_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -4186160a709d919a259e6abc50813931 runoff.2008_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -6e1e002ae77b535b2d180b3d4e848eab runoff.2008_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -8cc4642f6934a1c6e88c1682bf8be066 runoff.2008_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -58064cac954d7123e5d0f8636bb45dc1 runoff.2009_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -61da947ec8c5f5f5a69cdc9a50c908ee runoff.2009_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -fd4443c4495a57cd61fca40349d96ae2 runoff.2009_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -5eb250d7784c38e21a66a1838ee1341d runoff.2009_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -7d07383807279b33dffd8534b57c1ce3 runoff.2010_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -e6a8d9f9b7f5a239517767c76a534f17 runoff.2010_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -2120ce2449ffc784e3cccf78b48bc933 runoff.2010_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -c1f6f6d1473076a8e99de6ce772c5e1d runoff.2010_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -eb848fc163c6746eb6b7bcaaa1cef494 runoff.2011_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -4edf15c93ce3a70d9c35eff197234bca runoff.2011_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -27abfdbdb7e472d595538e088a5d463a runoff.2011_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -1b5024fb722d5f284ced86fa328febed runoff.2011_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -195abccd0339a6528a2de7120c0e35d7 runoff.2012_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -73194467cde78186529826e175f7ce19 runoff.2012_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -0d30b2f5cd5e062e0d6494ceb2129d23 runoff.2012_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -2e5fb39a21eb186870971521b6adfb6c runoff.2012_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -1a90c208c6c347c068cb7206648065e1 runoff.2013_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -af05a6592ded57d40867b2c862733c0e runoff.2013_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -af92431c425b46731b6b8c024655793c runoff.2013_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -0e024bdbce77cc9a242b849cf908ad47 runoff.2013_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -c51ca68b78b4f781398494bd0d6c0b73 runoff.2014_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -332b0fbb9b920e8a52bc11e2dcc3d363 runoff.2014_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -943cbf76f6e78ec6af3e8bb69c11a454 runoff.2014_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -85fd543000c25df95404c58ec6f3f4bf runoff.2014_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -168e2583c8ed5370754c649f137ecdc3 runoff.2015_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -708d862ac66220863108fc79fd15ce98 runoff.2015_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -90bf70e990ca5de7509572676a711f5d runoff.2015_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -838afc858615977164652ce54284691a runoff.2015_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -0c1fe6a31cadfd6ae9dff4bfd60523cc runoff.2016_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -a9638d3b5d5e8e20069a275fa55c92cf runoff.2016_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -e2fcd11edb1fd101140f5f1e0e5f796d runoff.2016_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -75802c041f6b47e64f21fd9e3ede2250 runoff.2016_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -dbf8697f05fd94c9b9a824ac8eed11f9 runoff.2017_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -a0f22c7f05c222a87c59fdc29c7f3c30 runoff.2017_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -efad52aa924a696d08d8f137c99587fb runoff.2017_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -78ebd90d083b73e39bb5f547873ffffa runoff.2017_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -64adf24f338579da065fdb3dbb80adf4 runoff.2018_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -c8f8dad8938bf07502113fcb4ad5706d runoff.2018_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -5bb097ab2ea66effc911e4f135581e16 runoff.2018_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -9d0a46c805bbeaf5f608f131a873395c runoff.2018_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -2bc27a32e353458c2a008113b37f5795 runoff.2019_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -7bd52c0f5cb2248b112b2d033f0908fb runoff.2019_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -1f6a12dd237a7f8d0d748968bc49d547 runoff.2019_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -23576a86520b43d24d2f3a42d0074ad7 runoff.2019_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -afe7c870b4eee5863db2cc524984bf19 runoff.2020_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -21f62fc28bf0bc3e9a44d318338aa116 runoff.2020_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -6017284d7e65b577045793c8e3aadf0f runoff.2020_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -850a1ec17dc889c85f0ec09eca3f09bf runoff.2020_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -888d3163746c5e1b5600aaa5f46241b6 runoff.2021_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -935ac328b8d14fc4726aef8794f2dfa6 runoff.2021_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -7139dbbf975a0b6ec7ce974b32d16d82 runoff.2021_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -1e2fdc3e277dd92c6b92eacc747f041a runoff.2021_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -64241bb54cce1e7775a9e9731a35a0e3 runoff_WJB_int.1958_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -d8095667054beaee95233abba729c8f3 runoff_WJB_int.1958_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -cd13ed09aed1c36ead164e21fe798a7c runoff_WJB_int.1958_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -f5980b1d49a9f940a3147d592b5a6a63 runoff_WJB_int.1958_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -c2fac8a350b7d6545bbacab3bada55c8 runoff_WJB_int.1959_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -d7994ea65d0e0de229622c9d890f8527 runoff_WJB_int.1959_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -3cce52a9d80e2159058da877ea023166 runoff_WJB_int.1959_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -6db6b22ab690345d7136dc83bbc40755 runoff_WJB_int.1959_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -b9083f7f36b12affef36672903ae5edc runoff_WJB_int.1960_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -5496276c8d2d911423343a8307833b6d runoff_WJB_int.1960_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -a928757ebe8a42ea427adaebb1521b79 runoff_WJB_int.1960_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -7450d29c4a039fd204e1dfa3ad5e0e0e runoff_WJB_int.1960_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -25f13169dfabf114f5c82553a97463b9 runoff_WJB_int.1961_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -1d4506af679b2693971d645b9f10d2c6 runoff_WJB_int.1961_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -6cda161df4e0a7aef5b815176e939814 runoff_WJB_int.1961_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -579ce58b7ef1afdcec7b4fcf5d68a259 runoff_WJB_int.1961_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -1293cb33af63304b75a8a1ea9833e0f3 runoff_WJB_int.1962_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -967a23bc49f290b5d0ccc70b2e637bbd runoff_WJB_int.1962_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -86a0436c37fbee5c3ed7bc6e903d4e3a runoff_WJB_int.1962_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -aafe5139392520feb00b0ac539ad6be9 runoff_WJB_int.1962_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -130d493137a923bb340ed0622ae6b610 runoff_WJB_int.1963_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -6058e4a9125d986814a1c00380709c54 runoff_WJB_int.1963_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -247d6009ca952b1a54afe75888acc9f4 runoff_WJB_int.1963_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -9907716998da130e1bbd47ad5509f9cf runoff_WJB_int.1963_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -8a6210cabe5eaf33a1db3dbeb89ec0b9 runoff_WJB_int.1964_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -9bb6a19674de49fecbff614e5da58d81 runoff_WJB_int.1964_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -6c1e9138706277e99fa6132abf6bc23c runoff_WJB_int.1964_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -84c526133edcf0209593d01eb5abcfc2 runoff_WJB_int.1964_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -4b19072820be20cdce9942100356433f runoff_WJB_int.1965_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -52f088826e67670423e9eeca2b3541c4 runoff_WJB_int.1965_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -7b9150e24b1473089bb0ef352327ce78 runoff_WJB_int.1965_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -d348412435181e46a0424b75b595fdf9 runoff_WJB_int.1965_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -587539aa9c6dbeeb2f47825080259afa runoff_WJB_int.1966_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -a7fbf1f79576aa06ac55ac840de01715 runoff_WJB_int.1966_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -b93280544ae32d874b8cdd4f7392f411 runoff_WJB_int.1966_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -bf15d81ad88b6ae83818c01b8e151ed3 runoff_WJB_int.1966_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -d051616fa15277fd777495d5a8963326 runoff_WJB_int.1967_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -f943c7957322a995976675038c51c2a4 runoff_WJB_int.1967_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -2d658e03ac948f348f127b390fa934bc runoff_WJB_int.1967_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -9d05a0ff9dfdebe1abaae170d3395e24 runoff_WJB_int.1967_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -e111df9de58ecf3ea812bd465c7cab57 runoff_WJB_int.1968_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -9809ea060e1f168707faf8f8efae3334 runoff_WJB_int.1968_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -07ccbe40a8d46dc7e4157d25fb5b63e1 runoff_WJB_int.1968_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -afec5082ca706e97159d439c2522d486 runoff_WJB_int.1968_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -92d20159ab25a657d5e9c885897fb74c runoff_WJB_int.1969_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -281d23e98426fe7b3a5824a097a36fec runoff_WJB_int.1969_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -bab4fd1f9d8633f80a4de24e9e516a3c runoff_WJB_int.1969_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -f0f25744a613137217d7b1226a59a3ff runoff_WJB_int.1969_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -2491027ab1b0c401e612319ef97ae825 runoff_WJB_int.1970_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -f3e9ab96cf20aca3b7cf910be705e55c runoff_WJB_int.1970_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -f2e8ebec4ff5a5cc35450d48f7fa94f7 runoff_WJB_int.1970_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -eecfac68ffb6de9f08a85581b8bc13a2 runoff_WJB_int.1970_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -1276ce4ab34206ee08f037c8494211cd runoff_WJB_int.1971_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -1ff1eab6760adff8cce9b90a70c32b82 runoff_WJB_int.1971_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -c1d8941b76bf9a7a27135d990d7112c4 runoff_WJB_int.1971_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -4eb287248a0abf7df801c6be97c148e7 runoff_WJB_int.1971_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -82644e4934e7f20744cad45a7ad46eff runoff_WJB_int.1972_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -8579ec84e2115cae36ca04ac1577c321 runoff_WJB_int.1972_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -0e68f64f04946ae804d07b0dcf5c5dc8 runoff_WJB_int.1972_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -d925a2d2df384f6939c48b88b13283f7 runoff_WJB_int.1972_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -42d89e050b1d3009f2d36082f5a9845f runoff_WJB_int.1973_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -b0721384dad57aa0a429a1449b460815 runoff_WJB_int.1973_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -58b90739dff180d2c42ae0a7b23cbf1a runoff_WJB_int.1973_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -fab651e9caae513a2b1089ede87912f4 runoff_WJB_int.1973_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -ecec3a5766a0f68daac74e128111ecaa runoff_WJB_int.1974_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -8568a5b97428bacc2ca9762ef04a016e runoff_WJB_int.1974_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -71c1735fe24b9fa2fa601ab0466004b4 runoff_WJB_int.1974_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -d228a310bf0dc0cf5f72572bd1e1e89b runoff_WJB_int.1974_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -360026a61fcfea74ec51017ca028de99 runoff_WJB_int.1975_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -78af88f875e427d751177f03463b1680 runoff_WJB_int.1975_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -d6f9854f2dbcb863fb0ea67528cae85d runoff_WJB_int.1975_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -1465ccc92ed69f445ec4b0175a5554e7 runoff_WJB_int.1975_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -b578c8ecffb2d3da102ceb6b31ed51f0 runoff_WJB_int.1976_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -99512f1022c704c102fd392d497497d1 runoff_WJB_int.1976_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -a6766e74f6acab6ef3a7d522107a9037 runoff_WJB_int.1976_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -ab9238cb595796f34ab0c9d8df62ea20 runoff_WJB_int.1976_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -53ffa46e73b0009a9e1d3bb9d260485f runoff_WJB_int.1977_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -742107abd2610f131740921545e52ecb runoff_WJB_int.1977_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -9aaa82a6a61a99777d17cc55a5c48a02 runoff_WJB_int.1977_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -9e58e57c7a2e8f12f169174c22c06412 runoff_WJB_int.1977_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -7b80f1459bd583543d2466261aa1e988 runoff_WJB_int.1978_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -7d66b47b096755ac54de8991cb5914a7 runoff_WJB_int.1978_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -7cb2251d9f29788fda0d79574740339d runoff_WJB_int.1978_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -a250fa885a0373c25335ba2974c20282 runoff_WJB_int.1978_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -30f62e24df34cf8a6f485298db78328c runoff_WJB_int.1979_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -c940b7b6a9f0fd16b1b1fcded14e4afc runoff_WJB_int.1979_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -d7fd7790ed02800e946150c4c77c308e runoff_WJB_int.1979_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -8040c5aba8151a13bbdc47231aeb12cf runoff_WJB_int.1979_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -8127c36e479016d94c9a130e6bfb7c9e runoff_WJB_int.1980_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -c80e971a10850c05b9339c08f82ac4c0 runoff_WJB_int.1980_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -0d10342970f563ef4fba7fded040043c runoff_WJB_int.1980_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -04f028321ac6377b71d95469fc5afda3 runoff_WJB_int.1980_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -d2c81bfc02dc5826296e93ac2b4943ab runoff_WJB_int.1981_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -6ae327477a36cee447c9521883c9b802 runoff_WJB_int.1981_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -e672dae3a195ef67f32361f53b0a20f2 runoff_WJB_int.1981_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -b673c4a4aa7533ef7e0eab174a245864 runoff_WJB_int.1981_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -84645c85c849717b95bd737807ae61a5 runoff_WJB_int.1982_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -821d417c4eca4cd4629762b3495e35df runoff_WJB_int.1982_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -49670165f48cdc5c3bf543baf7048cdd runoff_WJB_int.1982_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -e66e23aa7a289a2156e8e4535853acb0 runoff_WJB_int.1982_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -82a63249d73564abb53cf03d0186713c runoff_WJB_int.1983_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -3cd95ed753d4057c2ab891b0b4192373 runoff_WJB_int.1983_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -f4ab3b2a6242b687a3518224f838e05b runoff_WJB_int.1983_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -bf090db4aa9e79cf82e598a341e72f19 runoff_WJB_int.1983_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -97cc1c3b125215e5895076f922e59218 runoff_WJB_int.1984_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -85ee7c09368076acb7595a2cbda9e1d6 runoff_WJB_int.1984_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -6241db88231756b193ff8645b2e6b4b0 runoff_WJB_int.1984_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -870ce9e007e9eff6b21dec712adf78f4 runoff_WJB_int.1984_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -57de9919e9eb2fe0c0b20732777306e7 runoff_WJB_int.1985_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -e56b44157a65f50d5f3c94941effbf2b runoff_WJB_int.1985_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -6ba91a7c176b0d9fee39baf0e81e9024 runoff_WJB_int.1985_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -41b7a38f27a940ef1dafc00108958bf9 runoff_WJB_int.1985_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -71cdac7490fa232dfe379d2b42e8db69 runoff_WJB_int.1986_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -89f9be6833a4ebfe47f4fc40b32ee48f runoff_WJB_int.1986_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -13090054bc48ce755f58245e18a278b7 runoff_WJB_int.1986_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -949f2e303e4e3be24ed36365f8337251 runoff_WJB_int.1986_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -7af74134cceba21f175f1ebe40b1b6ef runoff_WJB_int.1987_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -f4a407a3703b31c441b9b9a0d1c7c76b runoff_WJB_int.1987_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -95c325eec23c5861012beff972ac993d runoff_WJB_int.1987_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -ca9075c8262eeb7080c688bd679d45bd runoff_WJB_int.1987_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -acf9b55165baf20b613067383ea3d1fc runoff_WJB_int.1988_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -08d48cb9b85912742785fc089a8462bb runoff_WJB_int.1988_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -9c26be97b007d967bdcc48c34ad1c3ea runoff_WJB_int.1988_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -0673a072bd62d2957f01d5ca6c6cf570 runoff_WJB_int.1988_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -c9d47dea1a7fe5317447734ac19b7faa runoff_WJB_int.1989_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc -46b5f01a3dce922eee06f48f415ec9fb runoff_WJB_int.1989_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc -dbfdf673dc82d957b5109b34724db0a6 runoff_WJB_int.1989_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc -af207835fe80b60d58e06b5f6035bf18 runoff_WJB_int.1989_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc -land -f60e7505e75e58133e82d381db5caa43 runoff.1957.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -7b2de3637a9b79647aa600c8da7d2990 runoff.1958.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -cf60a1b81f84975ee741b483ddedb46c runoff.1959.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -fd74c2d30a0d6589303b8ccbc4679694 runoff.1960.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -d364c5db102ee36981d55e0b46277673 runoff.1961.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -fcb4b8154fce45145ba468c7b0c2a1e6 runoff.1962.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -b87dfb7d13426080a58745d9a917de2b runoff.1963.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -3d055d1d9c0ddacae46acad23a421a9e runoff.1964.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -34cd210d4605cae5f783efaf3693ab08 runoff.1965.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -68599e37e38e853c3eabef5e4a850dcc runoff.1966.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -f26fad28e3c0f98f569c310bf432685f runoff.1967.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -39e57ea7464612acc0e69ea86906cd71 runoff.1968.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -76ef376660a1d5488cee37f0175a1199 runoff.1969.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -9353dfa484674e7e0b29e56f8e4a3e60 runoff.1970.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -b3f83a6899c5eca44924397da69edb93 runoff.1971.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -160d63470feac79d0f36847855c21c1a runoff.1972.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -cea261e3a82aa7440734792fc177ac2c runoff.1973.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -a210aa4fc1fd1020ecca97ed06393e3d runoff.1974.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -80829724ec47ecd898569d1531af7d05 runoff.1975.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -8b2c2766b99f3c43382069de6123d63d runoff.1976.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -fa51c006fe7f4e77d774be263d6cfea7 runoff.1977.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -3b3affe6be5eb98c8fc7cd3d50efeada runoff.1978.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -ac60e8f76ec7ec1db4e9a70293b642d1 runoff.1979.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -272ab8f4fc965c852791da6b7465e4b6 runoff.1980.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -2cc00a0aeb1c7a9e1dde19015b1e5639 runoff.1981.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -26342b06440529f95a411e199cac1986 runoff.1982.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -d66c9b61598ffe3715788ecbcdcb0540 runoff.1983.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -90670c85d5a75c1cadb2461d1ca4d517 runoff.1984.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -9b89dbe49058b979917df136842acfc4 runoff.1985.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -1cb9dccb2693ded7d18d231146e101ca runoff.1986.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -e648743c13293bd51ded7125372cc2f6 runoff.1987.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -35d13edff77eb5d8cea9060cf769c5c6 runoff.1988.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -98054422c2d6c210b5e6289003636fbf runoff.1989.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc -460483acd554576412840500930fd9e2 runoff.1990.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -05b66fd95807cb85b575c815a92ad500 runoff.1991.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -d983d8475391cb832356653c46e3f646 runoff.1992.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -a8aff8eee53d50e534baaa0f5135f8d7 runoff.1993.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -bf6118ab0f3e3d72003f6c968d90a054 runoff.1994.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -1cac73ffc6bcfb7483200ac2a799d6e5 runoff.1995.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -28bd9dd37706d7a025a6354f412d281b runoff.1996.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -90ed41ef2db3413f7d887accc5ec9ed0 runoff.1997.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -1e323bf43d1c7567d0968c312ac0a55e runoff.1998.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -497d5574e476102f2b11b390ca50dbc0 runoff.1999.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -fa1f0b4e5f609036b310bfbd82c31191 runoff.2000.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -9bc0b9162858e28a8cfbad39e8369a18 runoff.2001.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -b1f0f262536e6db671f4700bf9fd5177 runoff.2002.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -4766d63995d6b8f5bfc0a052305ce6cb runoff.2003.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -91fe6559990db744899cb61f85f38e86 runoff.2004.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -8af3b5737185719d75c773fcb2b4ae4b runoff.2005.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -f043647a503bc2d570f20dea16b421af runoff.2006.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -6a4916af4fec372070cf803eca98427c runoff.2007.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -4c3ba06503f05727f104791ca473b4a8 runoff.2008.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -6e1716d041ab12e44d6d7380332812c9 runoff.2009.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -4f49d488ad5008f01e06a37ec94bd97e runoff.2010.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -876bf352205330672d12c9b8d2404d23 runoff.2011.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -debd90a6dd11aee77277c9b55f4b218b runoff.2012.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -df30979211a95cf4bea2d283f582c61f runoff.2013.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -32e7fa643ae40f346999e09c1b17a6d5 runoff.2014.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -1a6d4fdbb8dd14aa5311b3d43954c331 runoff.2015.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -a5f91f7731fb2a7418a7e89e9f67fb43 runoff.2016.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -90634adf3dd1b9ee409002a29ac3e08f runoff.2017.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -906751f527cdb51f5448fd324a705a29 runoff.2018.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -0e481615b966397f0a4c50f48ba1dab9 runoff.2019.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -a813eb69a66bd4c23cf15afcac592420 runoff.2020.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -c5ae487f3ecc5987a17c3c06083ebd5a runoff.2021.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc -#+end_example +| ice | | +| 219834ba9f1bc98e0a87ab37ea88863d | ./runoff.1990_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | +| 7bde9226e0651e2cfbb8082424ba5181 | ./runoff.1990_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | +| 76d77c3ac9881521825d93c1c43af7d5 | ./runoff.1990_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | +| 17dd60fa5964af322624e72d9b58ea7c | ./runoff.1990_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | +| fcdd6121b4c1c94d1fe5018966deacac | ./runoff.1991_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | +| 48c894ad8d7c95b5521892c18183ea41 | ./runoff.1991_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | +| d405a62f91a201e3b7be931c12e1f678 | ./runoff.1991_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | +| bcaadbf2e742b533a612417f748dd5f0 | ./runoff.1991_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc | +| acf9b55165baf20b613067383ea3d1fc | ./runoff_WJB_int.1988_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc | +| 08d48cb9b85912742785fc089a8462bb | ./runoff_WJB_int.1988_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc | +| 9c26be97b007d967bdcc48c34ad1c3ea | ./runoff_WJB_int.1988_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc | +| 0673a072bd62d2957f01d5ca6c6cf570 | ./runoff_WJB_int.1988_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc | +| c9d47dea1a7fe5317447734ac19b7faa | ./runoff_WJB_int.1989_AMJ.BN_RACMO2.3p2_FGRN055_1km.DD.nc | +| 46b5f01a3dce922eee06f48f415ec9fb | ./runoff_WJB_int.1989_JAS.BN_RACMO2.3p2_FGRN055_1km.DD.nc | +| dbfdf673dc82d957b5109b34724db0a6 | ./runoff_WJB_int.1989_JFM.BN_RACMO2.3p2_FGRN055_1km.DD.nc | +| af207835fe80b60d58e06b5f6035bf18 | ./runoff_WJB_int.1989_OND.BN_RACMO2.3p2_FGRN055_1km.DD.nc | +| land_5.5_km | | +| f60e7505e75e58133e82d381db5caa43 | ./runoff.1957.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | +| 7b2de3637a9b79647aa600c8da7d2990 | ./runoff.1958.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | +| cf60a1b81f84975ee741b483ddedb46c | ./runoff.1959.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | +| fd74c2d30a0d6589303b8ccbc4679694 | ./runoff.1960.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | +| d364c5db102ee36981d55e0b46277673 | ./runoff.1961.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | +| fcb4b8154fce45145ba468c7b0c2a1e6 | ./runoff.1962.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | +| b87dfb7d13426080a58745d9a917de2b | ./runoff.1963.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | +| 3d055d1d9c0ddacae46acad23a421a9e | ./runoff.1964.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc | +| 32e7fa643ae40f346999e09c1b17a6d5 | ./runoff.2014.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | +| 1a6d4fdbb8dd14aa5311b3d43954c331 | ./runoff.2015.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | +| a5f91f7731fb2a7418a7e89e9f67fb43 | ./runoff.2016.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | +| 90634adf3dd1b9ee409002a29ac3e08f | ./runoff.2017.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | +| 906751f527cdb51f5448fd324a705a29 | ./runoff.2018.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | +| 0e481615b966397f0a4c50f48ba1dab9 | ./runoff.2019.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | +| a813eb69a66bd4c23cf15afcac592420 | ./runoff.2020.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | +| c5ae487f3ecc5987a17c3c06083ebd5a | ./runoff.2021.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc | +| land_1_km | | +| 879f40c2e9c4598a83458ab93bcd2246 | ./Grid_regular_EPSG3413_1km.nc | +| c2caab22f5dc8b816d26b15b07c6c732 | ./Tundra_Mask_1km.nc | +| c0c69a24c76cb909ea2ee463d79d10b6 | ./mask.nc | +| a3c0a6c3762155ad404fe6be75c49251 | ./out/runoff.1957.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc.1km-bilin.nc | +| 76d34a54d246b6872d913e7889f66772 | ./out/runoff.1958.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc.1km-bilin.nc | +| 5f1f04983c6f79fc1d89ccb15ec5946b | ./out/runoff.1959.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc.1km-bilin.nc | +| b5d9ffdd8b73d22d9b6bc7da5cbc3c0d | ./out/runoff.1960.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc.1km-bilin.nc | +| dc269d5d295640ed71f033bce1d30489 | ./out/runoff.1961.FGRN055_BN_RACMO2.3p2_FGRN055.DD.nc.1km-bilin.nc | +| 78000c74d9e9553e5237c20205b6f891 | ./out/runoff.2017.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc.1km-bilin.nc | +| ced4b9dd79d5c2e0a612b01bd07d2afd | ./out/runoff.2018.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc.1km-bilin.nc | +| 9f520292d3ab4dbf40246bc462cda4e3 | ./out/runoff.2019.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc.1km-bilin.nc | +| 59b9237449e3c8dfe1b62e8a330bffbd | ./out/runoff.2020.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc.1km-bilin.nc | +| c03ce8c3865abad695537b78e5fcbe13 | ./out/runoff.2021.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc.1km-bilin.nc | +| 0d0023a324f077136cf8e69b96440617 | ./out/runoff.2022.FGRN055_BN_RACMO2.3p2_ERA5_3h_FGRN055.DD.nc.1km-bilin.nc | +| c5e011d91b9feb6b7a533b9f146486f8 | ./weights_FGRN055_to_EPSG3413_1km_bilinear.nc | +| 8f7bea66a91abcea8f2995a9d36b1132 | ./weights_FGRN055_to_EPSG3413_1km_neareststod.nc | **** ncdump @@ -6456,7 +6136,7 @@ plt.savefig('./fig/watson_adjusted_south.png', transparent=True, bbox_inches='ti * README :noexport: #+BEGIN_SRC org :tangle ./freshwater/README.txt :mkdirp ./freshwater :eval no -README for "Greenland liquid water runoff from 1950 through September 2021" +README for "Greenland liquid water runoff from 1950 through December 2022" Data DOI: doi:10.22008/promice/freshwater Source: https://github.com/GEUS-Glaciology-and-Climate/freshwater From 90ce75782a0623afd8cf0b89209380bb31c5d088 Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Sun, 6 Aug 2023 07:18:19 -0700 Subject: [PATCH 09/15] notes --- freshwater.org | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/freshwater.org b/freshwater.org index 1204f8c..b148a5f 100644 --- a/freshwater.org +++ b/freshwater.org @@ -2672,8 +2672,13 @@ ds.to_netcdf(OUTFILE, unlimited_dims='time', encoding={'discharge': {'zlib': Tru *** Combine NetCDF +Note: ++ ~ln -s ice_100 ice~ ++ ~ln -s land_100 land~ + #+BEGIN_SRC jupyter-python :tangle netcdf_combine.py import xarray as xr +import numpy as np for d in ['ice','land']: for r in ['RACMO','MAR']: From b41291f6ef3589815aed7e13cb26641492a698c6 Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Sun, 6 Aug 2023 07:57:06 -0700 Subject: [PATCH 10/15] Document difference between r2022 and r2023 --- ...cac59c0cfaacfa5fcacdf5901b79d47e8870a5.png | Bin 0 -> 34226 bytes ...8db525122cda3d47e02e93fa4d1fcf60b6b0d9.png | Bin 0 -> 37552 bytes ...2135ab547341c90acc76e179fe45f340dc432b.png | Bin 0 -> 37627 bytes update_2023.org | 314 ++++-------------- 4 files changed, 70 insertions(+), 244 deletions(-) create mode 100644 figs_tmp/14cac59c0cfaacfa5fcacdf5901b79d47e8870a5.png create mode 100644 figs_tmp/398db525122cda3d47e02e93fa4d1fcf60b6b0d9.png create mode 100644 figs_tmp/8e2135ab547341c90acc76e179fe45f340dc432b.png diff --git a/figs_tmp/14cac59c0cfaacfa5fcacdf5901b79d47e8870a5.png b/figs_tmp/14cac59c0cfaacfa5fcacdf5901b79d47e8870a5.png new file mode 100644 index 0000000000000000000000000000000000000000..1441a784805d05241214f58143a9785f4c4a4106 GIT binary patch literal 34226 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 literal 0 HcmV?d00001 diff --git a/figs_tmp/398db525122cda3d47e02e93fa4d1fcf60b6b0d9.png b/figs_tmp/398db525122cda3d47e02e93fa4d1fcf60b6b0d9.png new file mode 100644 index 0000000000000000000000000000000000000000..c203adb5dcb608c5e7a2471aeeeb18bffe97e6f7 GIT binary patch literal 37552 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 Z;l;$+QttQYFDUr$j+~lozO;$|e*-Grl#T!Z literal 0 HcmV?d00001 diff --git a/figs_tmp/8e2135ab547341c90acc76e179fe45f340dc432b.png b/figs_tmp/8e2135ab547341c90acc76e179fe45f340dc432b.png new file mode 100644 index 0000000000000000000000000000000000000000..9f7913be4ecf52b8256a7a97db4afbdce20c8cc7 GIT binary patch literal 37627 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 MRz;>n%IL-a0)Pd>?f?J) literal 0 HcmV?d00001 diff --git a/update_2023.org b/update_2023.org index 8742a19..dbb5ebd 100644 --- a/update_2023.org +++ b/update_2023.org @@ -1,281 +1,107 @@ -* Table of contents :toc_2:noexport: +#+PROPERTY: header-args:jupyter-python+ :kernel freshwater :session fw :exports both +#+PROPERTY: :header-args:bash+ :session "*freshwater.update-shell*" :results verbatim :exports both + +* Table of contents :toc_5:noexport: - [[#introduction][Introduction]] -- [[#racmo][RACMO]] - - [[#update][Update]] - - [[#old-files][Old files]] -- [[#mar][MAR]] -- [[#bedmachine-v5][BedMachine v5]] +- [[#summary-of-differences][Summary of differences]] +- [[#release_2022-vs-release_2023-discharge][release_2022 vs release_2023 discharge]] + - [[#extract-time-series][Extract time series]] + - [[#graphics][Graphics]] + - [[#r2023][r2023]] +- [[#compare-using-upstream-basins][Compare using upstream basins]] + - [[#recreate-using-old-data][Recreate using 'old' data]] + - [[#recreate-using-new-data][Recreate using 'new' data]] * Introduction -* RACMO -:PROPERTIES: -:header-args: :dir "/home/kdm/tmp/tmp/webspace.science.uu.nl/~noel0002/Share/Ken/runoff" -:END: - -** Update +This document shows changes between the [[https://github.com/GEUS-Glaciology-and-Climate/freshwater/tree/release_2022][release_2022]] and [[https://github.com/GEUS-Glaciology-and-Climate/freshwater/tree/release_2023][release_2023]] freshwater discharge product. -Provided with the following files: +Changes to the code and manuscript can be seen at https://github.com/GEUS-Glaciology-and-Climate/freshwater/compare/release_2022...release_2023 -*** md5sum +* Summary of differences -#+BEGIN_SRC bash :exports both :results verbatim -md5sum *.nc.gz -#+END_SRC ++ Added 2022 RACMO data ++ Added 2022 MAR data ++ Updated MAR data from 3.12 to 3.13 ++ Updated BedMachine from v4 to v5 ++ Updated ArcticDEM from v3.0 to v4.1 -#+BEGIN_SRC bash :exports both :results verbatim -parallel --progress gunzip {} ::: *.gz -#+END_SRC +* release_2022 vs release_2023 discharge -#+BEGIN_SRC bash :exports both :results verbatim -md5sum *.nc -#+END_SRC +** Extract time series +#+BEGIN_SRC bash :results verbatim :exports results :wrap xml +mamba activate freshwater_user -#+RESULTS: -: ad571c679a87c83ce909fad2b1b6e4bc runoff.2022_AMJ.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -: db31a4655a9bccb96b131841d1153e62 runoff.2022_JAS.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -: a449be8541fe5bdeea31a99c34f32936 runoff.2022_JFM.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc -: fa554cbf0d760a8bb50813bbdf58d1e2 runoff.2022_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc +python ./discharge.py --base="/home/kdm/data/Mankoff_2020/water/release_2022" --roi="-51.50,66.93 -51.21,66.74 -49.44,66.91 -49.84,67.18" -d -u > ./dat/r2022_roi.csv -*** ncdump -#+BEGIN_SRC bash :exports both :results verbatim -ncdump -chs runoff.2022_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD.nc +python ./discharge.py --base="/home/kdm/data/Mankoff_2020/water/release_2023" --roi="-51.50,66.93 -51.21,66.74 -49.44,66.91 -49.84,67.18" -d -u > ./dat/r2023_roi.csv #+END_SRC -#+RESULTS: -#+begin_example -netcdf runoff.2022_OND.BN_RACMO2.3p2_ERA5_3h_FGRN055.1km.DD { -dimensions: - time = 92 ; - x = 1496 ; - y = 2700 ; -variables: - float time(time) ; - time:units = "DAYS since 2022-10-01 00:00:00" ; - time:long_name = "time" ; - time:standard_name = "time" ; - float x(x) ; - x:units = "km" ; - x:long_name = "x" ; - x:standard_name = "x" ; - float y(y) ; - y:units = "km" ; - y:long_name = "y" ; - y:standard_name = "y" ; - float LON(y, x) ; - LON:units = "Degree" ; - LON:long_name = "Longitude" ; - LON:standard_name = "Longitude" ; - LON:actual_range = -639.4561f, 855.5441f ; - LON:missing_value = -1.e+30f ; - float LAT(y, x) ; - LAT:units = "Degree" ; - LAT:long_name = "Latitude" ; - LAT:standard_name = "Latitude" ; - LAT:actual_range = -3355.096f, -656.096f ; - LAT:missing_value = -1.e+30f ; - float runoffcorr(time, y, x) ; - runoffcorr:units = "mm w.e. per day" ; - runoffcorr:long_name = "1km Topography corrected runoff" ; - runoffcorr:standard_name = "1km_Topography_corrected_runoff" ; - runoffcorr:actual_range = 0.f, 80.17568f ; - runoffcorr:missing_value = -1.e+30f ; +** Graphics -// global attributes: - :title = "Daily mean runoff field at 1km (RACMO2.3p2 FGRN055 ERA)" ; - :institution = "IMAU (Brice Noel)" ; - :grid = "Map Projection:Polar Stereographic Ellipsoid - Map Reference Latitude: 90.0 - Map Reference Longitude: -39.0 - Map Second Reference Latitude: 71.0 - Map Eccentricity: 0.081819190843 ;wgs84 - Map Equatorial Radius: 6378137.0 ;wgs84 meters - Grid Map Origin Column: 160 - Grid Map Origin Row: -120 - Grid Map Units per Cell: 5000 - Grid Width: 301 - Grid Height: 561" ; - :history = "libUN (2013.05.22) - Tue Jan 10 13:09:27 2023" ; - :netcdf = "4.7.4 of Nov 4 2021 16:22:15 $" ; - :_Format = "classic" ; -} -#+end_example +#+BEGIN_SRC jupyter-python :kernel ds +df_r2022 = pd.read_csv('./dat/r2022_roi.csv', index_col=0) +df_r2023 = pd.read_csv('./dat/r2023_roi.csv', index_col=0) -** Old files -:PROPERTIES: -:header-args: :dir "/home/kdm/data/RACMO/freshwater" -:END: +df_r2022 = df_r2022[['MAR_ice','RACMO_ice']]\ + .rename(columns={'MAR_ice':'MAR_ice_2022', + 'RACMO_ice':'RACMO_ice_2022'}) -*** File list +df_r2023 = df_r2023[['MAR_ice','RACMO_ice']]\ + .rename(columns={'MAR_ice':'MAR_ice_2023', + 'RACMO_ice':'RACMO_ice_2023'}) -#+BEGIN_SRC bash :exports both :results verbatim -ls -l -#+END_SRC - -#+RESULTS: -: total 70020 -: -rw-rw-r-- 1 kdm kdm 6953540 May 18 2022 FGRN055_Masks_5.5km.nc -: -rw-rw-r-- 1 kdm kdm 64648132 May 16 2022 Icemask_Topo_Iceclasses_lon_lat_average_1km.nc -: -rw-r--r-- 1 kdm kdm 41187 May 6 2022 README.org -: drwxr-xr-x 2 kdm kdm 28672 May 16 2022 runoff_ice_1km -: drwxrwxr-x 3 kdm kdm 4096 May 18 2022 runoff_land_1km_regrid -: drwxrwxr-x 2 kdm kdm 12288 May 16 2022 runoff_land_5.5km - -#+BEGIN_SRC bash :exports both :results verbatim +df = df_r2022.merge(df_r2023, left_index=True, right_index=True) +p = df.loc['2012-04-01':'2012-11-15']\ + .rolling(5)\ + .mean()\ + .plot(drawstyle='steps') #+END_SRC -* MAR -:PROPERTIES: -:header-args: :dir "/home/kdm/tmp/tmp/climato.be/fettweis/tmp/ken/1km" -:END: +#+RESULTS: +[[file:./figs_tmp/14cac59c0cfaacfa5fcacdf5901b79d47e8870a5.png]] -Provided all files updated from =v3.12= to =v3.13= +*** r2023 -#+BEGIN_SRC bash :exports both :results verbatim -ls +#+BEGIN_SRC jupyter-python :display plain :kernel ds +df = pd.read_csv('./dat/r2023_roi.csv', index_col=0) +df[['MAR_ice','RACMO_ice']]\ + .loc['2012-04-01':'2012-11-15']\ + .rolling(5)\ + .mean()\ + .plot(drawstyle='steps') #+END_SRC -#+RESULTS: -: MARv3.13-daily-ERA5-1950.nc -#+BEGIN_SRC bash :exports both :results verbatim -ncdump -h MARv3.13-daily-ERA5-1950.nc -#+END_SRC ++ Note :: graphics appear roughly the same, but the x-axis has nearly doubled. +* Compare using upstream basins -* BedMachine v5 -:PROPERTIES: -:header-args: :dir "/home/kdm/data/Morlighem_2017" -:END: +** Recreate using 'old' data -#+BEGIN_SRC bash :exports both :results verbatim -md5sum *v5* +#+BEGIN_SRC jupyter-python :kernel ds +df = pd.read_csv('./dat/r2022_roi.csv', index_col=0) +p = df.loc['2012-04-01':'2012-11-15']\ + .rolling(5)\ + .mean()\ + .plot(drawstyle='steps') #+END_SRC #+RESULTS: -: d78c1583d7a27c9d095de262fa16bc62 BedMachineGreenland-v5_bed.tif -: 7387182a059dd8cad66ce7638eb0d7cd BedMachineGreenland-v5.nc +[[file:./figs_tmp/8e2135ab547341c90acc76e179fe45f340dc432b.png]] + +** Recreate using 'new' data -#+BEGIN_SRC bash :exports both :results verbatim -ncdump -chs BedMachineGreenland-v5.nc +#+BEGIN_SRC jupyter-python :kernel ds +df = pd.read_csv('./dat/r2023_roi.csv', index_col=0) +p = df.loc['2012-04-01':'2012-11-15']\ + .rolling(5)\ + .mean()\ + .plot(drawstyle='steps') #+END_SRC #+RESULTS: -#+begin_example -netcdf BedMachineGreenland-v5 { -dimensions: - x = 10218 ; - y = 18346 ; -variables: - char mapping ; - mapping:grid_mapping_name = "polar_stereographic" ; - mapping:latitude_of_projection_origin = 90. ; - mapping:standard_parallel = 70. ; - mapping:straight_vertical_longitude_from_pole = -45. ; - mapping:false_easting = 0. ; - mapping:false_northing = 0. ; - mapping:proj4text = "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs" ; - mapping:crs_wkt = "PROJCS[\"WGS 84 / NSIDC Sea Ice Polar Stereographic North\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\",70],PARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3413\"]]" ; - mapping:_Storage = "contiguous" ; - int x(x) ; - x:long_name = "Cartesian x-coordinate" ; - x:standard_name = "projection_x_coordinate" ; - x:units = "meter" ; - x:_Storage = "contiguous" ; - x:_Endianness = "little" ; - int y(y) ; - y:long_name = "Cartesian y-coordinate" ; - y:standard_name = "projection_y_coordinate" ; - y:units = "meter" ; - y:_Storage = "contiguous" ; - y:_Endianness = "little" ; - byte mask(y, x) ; - mask:long_name = "mask (0 = ocean, 1 = ice-free land, 2 = grounded ice, 3 = floating ice, 4 = non-Greenland land)" ; - mask:grid_mapping = "mapping" ; - mask:valid_range = 0b, 4b ; - mask:flag_values = 0b, 1b, 2b, 3b, 4b ; - mask:flag_meanings = "ocean ice_free_land grounded_ice floating_ice non_greenland_land" ; - mask:source = "gimpmask v2.0 (https://byrd.osu.edu/research/groups/glacier-dynamics/data/icemask) combined with coastline from Jeremie Mouginot" ; - mask:_Storage = "contiguous" ; - float surface(y, x) ; - surface:long_name = "ice surface elevation" ; - surface:standard_name = "surface_altitude" ; - surface:units = "meters" ; - surface:grid_mapping = "mapping" ; - surface:source = "gimpdem v2.1 (https://byrd.osu.edu/research/groups/glacier-dynamics/data/gimpdem)" ; - surface:_Storage = "contiguous" ; - surface:_Endianness = "little" ; - float thickness(y, x) ; - thickness:long_name = "ice thickness" ; - thickness:standard_name = "land_ice_thickness" ; - thickness:units = "meters" ; - thickness:grid_mapping = "mapping" ; - thickness:source = "Mass conservation (Mathieu Morlighem)" ; - thickness:_Storage = "contiguous" ; - thickness:_Endianness = "little" ; - float bed(y, x) ; - bed:long_name = "bed topography" ; - bed:standard_name = "bedrock_altitude" ; - bed:units = "meters" ; - bed:grid_mapping = "mapping" ; - bed:source = "Mass conservation (Mathieu Morlighem)" ; - bed:_FillValue = -9999.f ; - bed:_Storage = "contiguous" ; - bed:_Endianness = "little" ; - short errbed(y, x) ; - errbed:long_name = "bed topography/ice thickness error" ; - errbed:units = "meters" ; - errbed:grid_mapping = "mapping" ; - errbed:source = "Mathieu Morlighem" ; - errbed:_FillValue = -9999s ; - errbed:_Storage = "chunked" ; - errbed:_ChunkSizes = 3670, 2044 ; - errbed:_DeflateLevel = 2 ; - errbed:_Shuffle = "true" ; - errbed:_Endianness = "little" ; - byte source(y, x) ; - source:long_name = "data source (0 = none, 1 = gimpdem, 2 = Mass conservation, 3 = synthetic, 4 = interpolation, 5 = hydrostatic equilibrium, 6 = kriging, 7 = RTOPO-2, 8 = gravity inversion, 9 = Millan et al. 2021, 10+ = bathymetry data)" ; - source:grid_mapping = "mapping" ; - source:valid_range = 0b, 50b ; - source:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b, 10b, 11b, 12b, 13b, 14b, 15b, 16b, 17b, 18b, 19b, 20b, 21b, 22b, 23b, 24b, 25b, 26b, 27b, 28b, 29b, 30b, 31b, 32b, 33b, 34b, 35b, 36b, 37b, 38b, 39b, 40b, 41b, 42b, 43b, 44b, 45b, 46b, 47b, 48b, 49b, 50b ; - source:flag_meanings = "none gimpdem mass_conservation synthetic interpolation hydrodstatic_equilibrium kriging RTopo_2 gravity_inversion millan_etal_2021 bathymetry1 bathymetry2 bathymetry3 bathymetry4 bathymetry5 bathymetry6 bathymetry7 bathymetry8 bathymetry9 bathymetry10 bathymetry11 bathymetry12 bathymetry13 bathymetry14 bathymetry15 bathymetry16 bathymetry17 bathymetry18 bathymetry19 bathymetry20 bathymetry21 bathymetry22 bathymetry23 bathymetry24 bathymetry25 bathymetry26 bathymetry27 bathymetry28 bathymetry29 bathymetry30 bathymetry31 bathymetry32 bathymetry33 bathymetry34 bathymetry35 bathymetry36 bathymetry37 bathymetry38 bathymetry39 bathymetry40 bathymetry41" ; - source:source = "Mathieu Morlighem" ; - source:_Storage = "contiguous" ; - byte dataid(y, x) ; - dataid:long_name = "data id" ; - dataid:grid_mapping = "mapping" ; - dataid:valid_range = 1b, 10b ; - dataid:flag_values = 1b, 2b, 7b, 10b ; - dataid:flag_meanings = "GIMPdem Radar seismic multibeam" ; - dataid:source = "Mathieu Morlighem" ; - dataid:_Storage = "chunked" ; - dataid:_ChunkSizes = 4587, 2555 ; - dataid:_DeflateLevel = 1 ; - dataid:_Shuffle = "true" ; - short geoid(y, x) ; - geoid:long_name = "EIGEN-6C4 Geoid - WGS84 Ellipsoid difference" ; - geoid:standard_name = "geoid_height_above_reference_ellipsoid" ; - geoid:units = "meters" ; - geoid:grid_mapping = "mapping" ; - geoid:geoid = "eigen-6c4 (Forste et al 2014)" ; - geoid:_Storage = "chunked" ; - geoid:_ChunkSizes = 3670, 2044 ; - geoid:_DeflateLevel = 2 ; - geoid:_Shuffle = "true" ; - geoid:_Endianness = "little" ; +[[file:./figs_tmp/398db525122cda3d47e02e93fa4d1fcf60b6b0d9.png]] -// global attributes: - :Conventions = "CF-1.7" ; - :Title = "BedMachine Greenland" ; - :Author = "Mathieu Morlighem" ; - :version = "28-Jul-2022 (v5.5)" ; - :nx = 10218. ; - :ny = 18346. ; - :Projection = "Polar Stereographic North (70N, 45W)" ; - :proj4 = "+init=epsg:3413" ; - :sea_water_density\ \(kg\ m-3\) = 1023. ; - :ice_density\ \(kg\ m-3\) = 917. ; - :xmin = -652925 ; - :ymax = -632675 ; - :spacing = 150 ; - :no_data = -9999. ; - :license = "No restrictions on access or use" ; - :Data_citation = "Morlighem M. et al., (2017), BedMachine v3: Complete bed topography and ocean bathymetry mapping of Greenland from multi-beam echo sounding combined with mass conservation, Geophys. Res. Lett., 44, doi:10.1002/2017GL074954. (http://onlinelibrary.wiley.com/doi/10.1002/2017GL074954/full)" ; - :_NCProperties = "version=2,netcdf=4.7.4,hdf5=1.8.12" ; - :_SuperblockVersion = 0 ; - :_IsNetcdf4 = 0 ; - :_Format = "netCDF-4 classic model" ; -} -#+end_example From d16ba461ae8d053d4c3d4d67061e24a7a2a6386e Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Sun, 6 Aug 2023 08:15:48 -0700 Subject: [PATCH 11/15] WIP: README update --- README.org | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/README.org b/README.org index a49c674..0ee3b10 100644 --- a/README.org +++ b/README.org @@ -54,9 +54,13 @@ The source for this work is hosted on GitHub at https://github.com/GEUS-PROMICE/ *** v 2023 -v 2023 has the following changes from v2022-10. See 2023 Milestone and git log for more details -+ BedMachine updated to v5 from v4 -+ +[[https://github.com/GEUS-Glaciology-and-Climate/freshwater/tree/release_2023][release_2023]] has the following changes from [[https://github.com/GEUS-Glaciology-and-Climate/freshwater/tree/release_2022][v2022-08]]. See [[https://github.com/GEUS-Glaciology-and-Climate/freshwater/milestone/1][2023 Milestone]], https://github.com/GEUS-Glaciology-and-Climate/freshwater/compare/release_2022...release_2023, and git log for more details + ++ Added 2022 RACMO data ++ Added 2022 MAR data ++ Updated MAR data from 3.12 to 3.13 ++ Updated BedMachine from v4 to v5 ++ Updated ArcticDEM from v3.0 to v4.1 *** v 2022-10 @@ -65,8 +69,8 @@ v 2022-10 has the following changes: + Data product has been reformatted to 4 NetCDF files: One per RCM (2) and domain (2), each containing all years of data + E.g., MAR_ice, MAR_land, RACMO_ice, RACMO_Land + Data files are now part of the dataset that contains the Geopackages of streams, outlets, and basins, rather than their own dataset on the dataverse - + DOI: .... has been Deaccesioned - + DOI: .... now contains the discharge data + + DOI: 10.22008/FK2/AA6MTB has been Deaccesioned + + DOI: [[https://doi.org/10.22008/FK2/XKQVL7][10.22008/FK2/XKQVL7]] now contains the discharge data + The README has been updated to show some additional examples using the metadata added in v3 *** v 2022-08 @@ -122,7 +126,7 @@ As an example, it is easiest to begin working with the outlets, save subsetted d #+BEGIN_SRC jupyter-python :exports code import pandas as pd -import geopandas as gpd +import geopandas as gp df = pd.read_csv('./freshwater/ice/outlets.csv', index_col=0) gdf = gp.GeoDataFrame(df, geometry=gp.points_from_xy(df['lon'],df['lat'])) @@ -167,6 +171,7 @@ find ./freshwater/land/ ./freshwater/ice/ -maxdepth 1 | sort ./freshwater/ice/basins.csv ./freshwater/ice/basins_filled.gpkg ./freshwater/ice/basins.gpkg +./freshwater/ice/discharge ./freshwater/ice/MAR.nc ./freshwater/ice/outlets.csv ./freshwater/ice/outlets.gpkg @@ -177,6 +182,7 @@ find ./freshwater/land/ ./freshwater/ice/ -maxdepth 1 | sort ./freshwater/land/basins.csv ./freshwater/land/basins_filled.gpkg ./freshwater/land/basins.gpkg +./freshwater/land/discharge ./freshwater/land/MAR.nc ./freshwater/land/outlets.csv ./freshwater/land/outlets.gpkg @@ -257,7 +263,7 @@ python ./discharge.py --base ./freshwater --roi=-50.5,67.2 -o -q #+RESULTS: | index | id | lon | lat | x | y | elev | Z2012_sector | Z2012_sector_dist | M2019_ID | M2019_ID_dist | M2019_basin | M2019_region | M2020_gate | M2020_gate_dist | B2015_name | B2015_dist | domain | upstream | coast_id | coast_lon | coast_lat | coast_x | coast_y | -| 0 | 112448 | -51.233 | 67.156 | -272150 | -2491850 | 42 | 62 | 38911 | 71 | 38634 | ISUNNGUATA-RUSSELL | SW | 195 | 193720 | Isunnguata Sermia | 46536 | land | False | -1 | | | -1 | -1 | +| 0 | 121108 | -51.219 | 67.153 | -271550 | -2492150 | 4 | 62 | 38320 | 71 | 38035 | ISUNNGUATA-RUSSELL | SW | 195 | 193828 | Isunnguata Sermia | 45930 | land | False | -1 | | | -1 | -1 | If we move 10° east to somewhere over the ice, there should be four rows: one for the land outlet and basin, and three more for the three ice scenario: @@ -267,8 +273,8 @@ python ./discharge.py --base ./freshwater --roi=-40.5,67.2 -o -q #+RESULTS: | index | id | lon | lat | x | y | elev | Z2012_sector | Z2012_sector_dist | M2019_ID | M2019_ID_dist | M2019_basin | M2019_region | M2020_gate | M2020_gate_dist | B2015_name | B2015_dist | domain | upstream | coast_id | coast_lon | coast_lat | coast_x | coast_y | -| 0 | 118180 | -38.071 | 66.33 | 313650 | -2580750 | -133 | 41 | 5796 | 63 | 0 | HELHEIMGLETSCHER | SE | 231 | 9650 | Helheim Gletsjer | 11776 | land | False | -1 | | | -1 | -1 | -| 1 | 67065 | -38.11 | 66.333 | 311850 | -2580650 | -88 | 41 | 4177 | 63 | 0 | HELHEIMGLETSCHER | SE | 231 | 7850 | Helheim Gletsjer | 10042 | ice | False | 118180 | -38.071 | 66.33 | 313650 | -2580750 | +| 0 | 126875 | -38.071 | 66.330 | 313650 | -2580750 | -187 | 41 | 5796 | 63 | 0 | HELHEIMGLETSCHER | SE | 231 | 9650 | Helheim Gletsjer | 11776 | land | False | -1 | | | -1 | -1 | +| 1 | 67985 | -38.110 | 66.333 | 311850 | -2580650 | -244 | 41 | 4177 | 63 | 0 | HELHEIMGLETSCHER | SE | 231 | 7850 | Helheim Gletsjer | 10042 | ice | False | 126875 | -38.071 | 66.330 | 313650 | -2580750 | ***** Polygon covering multiple land and ice outlets @@ -300,12 +306,11 @@ python ./discharge.py --base ./freshwater --roi="-51.50,66.93 -51.21,66.74 -49.4 #+RESULTS: | index | id | lon | lat | x | y | elev | Z2012_sector | Z2012_sector_dist | M2019_ID | M2019_ID_dist | M2019_basin | M2019_region | M2020_gate | M2020_gate_dist | B2015_name | B2015_dist | domain | upstream | coast_id | coast_lon | coast_lat | coast_x | coast_y | -| 0 | 113526 | -50.713 | 67.002 | -251250 | -2511450 | 17 | 62 | 22184 | 71 | 22906 | ISUNNGUATA-RUSSELL | SW | 195 | 207779 | Isunnguata Sermia | 31644 | land | False | -1 | | | -1 | -1 | -| 1 | 113705 | -50.735 | 66.988 | -252350 | -2512850 | 7 | 62 | 23683 | 71 | 24427 | ISUNNGUATA-RUSSELL | SW | 195 | 209355 | Isunnguata Sermia | 33360 | land | False | -1 | | | -1 | -1 | -| 200 | 67072 | -49.538 | 66.425 | -204850 | -2580850 | 792 | 62 | 0 | 40 | 0 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 198569 | Quantum Gletsjer | 78854 | ice | True | 114921 | -50.652 | 66.868 | -250050 | -2526750 | -| 201 | 67096 | -49.544 | 66.419 | -205150 | -2581550 | 825 | 62 | 0 | 40 | 184 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 197830 | Quantum Gletsjer | 78386 | ice | True | 114921 | -50.652 | 66.868 | -250050 | -2526750 | -| 202 | 67140 | -49.537 | 66.407 | -204950 | -2582950 | 873 | 62 | 0 | 40 | 0 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 196481 | Quantum Gletsjer | 78243 | ice | True | 114921 | -50.652 | 66.868 | -250050 | -2526750 | - +| 0 | 122055 | -50.713 | 67.002 | -251250 | -2511450 | 20 | 62 | 22184 | 71 | 22906 | ISUNNGUATA-RUSSELL | SW | 195 | 207779 | Isunnguata Sermia | 31644 | land | False | -1 | | | -1 | -1 | +| 1 | 122222 | -50.735 | 66.988 | -252350 | -2512850 | 7 | 62 | 23683 | 71 | 24427 | ISUNNGUATA-RUSSELL | SW | 195 | 209355 | Isunnguata Sermia | 33360 | land | False | -1 | | | -1 | -1 | +| 203 | 67946 | -49.521 | 66.438 | -203950 | -2579550 | 767 | 62 | 0 | 40 | 0 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 199999 | Quantum Gletsjer | 80065 | ice | True | 123466 | -50.652 | 66.868 | -250050 | -2526750 | +| 204 | 68014 | -49.544 | 66.419 | -205150 | -2581550 | 825 | 62 | 0 | 40 | 184 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 197830 | Quantum Gletsjer | 78386 | ice | True | 123466 | -50.652 | 66.868 | -250050 | -2526750 | +| 205 | 68056 | -49.535 | 66.407 | -204850 | -2582950 | 859 | 62 | 0 | 40 | 0 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 196497 | Quantum Gletsjer | 78340 | ice | True | 123466 | -50.652 | 66.868 | -250050 | -2526750 | **** Discharge From 527d29e35c888caaeaed6452014ae203c458d94d Mon Sep 17 00:00:00 2001 From: Taryn Black Date: Wed, 7 Jun 2023 16:41:57 -0700 Subject: [PATCH 12/15] Fix: deprecation updates for pandas --- discharge.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/discharge.py b/discharge.py index d994270..9f95ae6 100644 --- a/discharge.py +++ b/discharge.py @@ -10,6 +10,7 @@ from argparse import ArgumentParser import fiona +fiona.drvsupport.supported_drivers["KML"] = "rw" # https://gis.stackexchange.com/a/258370/609 fiona.drvsupport.supported_drivers["LIBKML"] = "rw" # https://gis.stackexchange.com/a/258370/609 class discharge(object): @@ -85,8 +86,8 @@ def outlets(self): # df.groupby('id').first() solves this, except for the basin column that needs a custom aggregate fuction. # except we need to aggregate the 'basin' column to convert to multipolygon def p2mp(da): # polygon to multipolygon - from shapely.ops import cascaded_union - return cascaded_union(da) # https://stackoverflow.com/questions/36774049/ + from shapely.ops import unary_union # cascaded_union deprecated, replace with unary_union + return unary_union(da) # https://stackoverflow.com/questions/36774049/ for key in self._outlets.keys(): if self._outlets[key] is not None: @@ -110,7 +111,7 @@ def p2mp(da): # polygon to multipolygon otmp = self._outlets[key].reset_index() # otmp["domain"], otmp["k"], otmp["upstream"] = d,k,False otmp["domain"], otmp["upstream"] = key,False - o = o.append(otmp) + o = pd.concat([o, otmp]) # .append() deprecated if self._upstream: for key in self._outlets_u.keys(): if self._outlets_u[key] is not None: @@ -118,15 +119,16 @@ def p2mp(da): # polygon to multipolygon otmp = self._outlets_u[key].reset_index() # otmp["domain"], otmp["k"], otmp["upstream"] = d,k,True otmp["domain"], otmp["upstream"] = key,True - o = o.append(otmp) + o = pd.concat([o, otmp]) # .append() deprecated o['coast_id'] = o['coast_id'].fillna(-1).astype(int) o['coast_x'] = o['coast_x'].fillna(-1).astype(int) o['coast_y'] = o['coast_y'].fillna(-1).astype(int) o = o.reset_index().drop(columns="index").rename(columns={"cat":"id"}) o.index.name = "index" - o = gp.GeoDataFrame(o, crs="EPSG:3413").set_geometry("basin") # GeoPandas 0.7 + # o = gp.GeoDataFrame(o, crs="EPSG:3413").set_geometry("basin") # GeoPandas 0.7 # o = gp.GeoDataFrame(o).set_geometry("basin").to_crs("EPSG:3413") # GeoPandas 0.8 + o = gp.GeoDataFrame(o, crs="EPSG:3413", geometry="basin") # GeoPandas 0.9 return o From e4cafdba325d0c6fa2f00af9b47a6995a3ab0f03 Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Sun, 6 Aug 2023 08:40:29 -0700 Subject: [PATCH 13/15] Update README w/ r2023 data --- README.org | 125 +++++++++++++++++++++----------------------- fig/api_example.png | Bin 18931 -> 21009 bytes 2 files changed, 61 insertions(+), 64 deletions(-) diff --git a/README.org b/README.org index 0ee3b10..84aff5f 100644 --- a/README.org +++ b/README.org @@ -211,7 +211,7 @@ find ./freshwater/land/ ./freshwater/ice/ -maxdepth 1 | sort *** Requirements :PROPERTIES: -:header-args:jupyter-python: :kernel freshwater :session using :eval no-export +:header-args:jupyter-python: :kernel freshwater_user :session using :eval no-export :END: See =environment.yml= file in Git repository, or @@ -325,17 +325,17 @@ python ./discharge.py --base ./freshwater --roi=-50.5,67.2 -q -d | (head -n1; gr #+END_SRC #+RESULTS: -| time | MAR_land | RACMO_land | -| 2012-06-01 | 1.249776 | 0.029927 | -| 2012-06-02 | 0.831023 | 0.001237 | -| 2012-06-03 | 0.504199 | 0.001330 | -| 2012-06-04 | 0.503719 | 0.000000 | -| 2012-06-05 | 0.503333 | -0.001197 | -| 2012-06-06 | 0.510772 | 0.304393 | -| 2012-06-07 | 0.502683 | 0.007438 | -| 2012-06-08 | 0.502530 | 0.194025 | -| 2012-06-09 | 2.195973 | 0.087407 | -| 2012-06-10 | 0.501820 | 0.024703 | +| time | MAR_land | RACMO_land | +| 2012-06-01 | 11.893755 | 0.029936 | +| 2012-06-02 | 10.126999 | 0.001237 | +| 2012-06-03 | 8.114753 | 0.001323 | +| 2012-06-04 | 3.970580 | 0.000000 | +| 2012-06-05 | 0.313908 | -0.001191 | +| 2012-06-06 | 0.478592 | 0.303289 | +| 2012-06-07 | 0.330184 | 0.007452 | +| 2012-06-08 | 2.857732 | 0.193424 | +| 2012-06-09 | 0.308489 | 0.087070 | +| 2012-06-10 | 0.308755 | 0.024483 | + If we move 10° east to somewhere over the ice we add two columns: One for each of the two RCMs over the ice domain. + If the =--upstream= flag is set, we add two columns: One for each of the RCMs over the *upstream* ice domains. Results are summed across outlets per domain. @@ -381,7 +381,7 @@ df.drop(columns=["outlet","basin"]) #+RESULTS: | index | id | lon | lat | x | y | elev | Z2012_sector | Z2012_sector_dist | M2019_ID | M2019_ID_dist | M2019_basin | M2019_region | M2020_gate | M2020_gate_dist | B2015_name | B2015_dist | domain | upstream | coast_id | coast_lon | coast_lat | coast_x | coast_y | |-------+--------+----------+---------+---------+----------+------+--------------+-------------------+----------+---------------+--------------------+--------------+------------+-----------------+-------------------+------------+--------+----------+----------+-----------+-----------+---------+---------| -| 0 | 112448 | -51.2329 | 67.1555 | -272150 | -2491850 | 42 | 62 | 38911 | 71 | 38634 | ISUNNGUATA-RUSSELL | SW | 195 | 193720 | Isunnguata Sermia | 46536 | land | False | -1 | nan | nan | -1 | -1 | +| 0 | 121108 | -51.2185 | 67.1535 | -271550 | -2492150 | 4 | 62 | 38320 | 71 | 38035 | ISUNNGUATA-RUSSELL | SW | 195 | 193828 | Isunnguata Sermia | 45930 | land | False | -1 | nan | nan | -1 | -1 | ***** Polygon covering multiple land and ice outlets @@ -403,11 +403,11 @@ df.drop(columns=["outlet","basin"]).head() #+RESULTS: | index | id | lon | lat | x | y | elev | Z2012_sector | Z2012_sector_dist | M2019_ID | M2019_ID_dist | M2019_basin | M2019_region | M2020_gate | M2020_gate_dist | B2015_name | B2015_dist | domain | upstream | coast_id | coast_lon | coast_lat | coast_x | coast_y | |-------+--------+----------+---------+---------+----------+------+--------------+-------------------+----------+---------------+--------------------+--------------+------------+-----------------+-------------------+------------+--------+----------+----------+-----------+-----------+---------+---------| -| 0 | 113526 | -50.713 | 67.0017 | -251250 | -2511450 | 17 | 62 | 22184 | 71 | 22906 | ISUNNGUATA-RUSSELL | SW | 195 | 207779 | Isunnguata Sermia | 31644 | land | False | -1 | nan | nan | -1 | -1 | -| 1 | 113705 | -50.7346 | 66.9884 | -252350 | -2512850 | 7 | 62 | 23683 | 71 | 24427 | ISUNNGUATA-RUSSELL | SW | 195 | 209355 | Isunnguata Sermia | 33360 | land | False | -1 | nan | nan | -1 | -1 | -| 2 | 113729 | -50.7771 | 66.9849 | -254250 | -2513050 | -1 | 62 | 25538 | 71 | 26272 | ISUNNGUATA-RUSSELL | SW | 195 | 209906 | Isunnguata Sermia | 35015 | land | False | -1 | nan | nan | -1 | -1 | -| 3 | 113767 | -50.8634 | 66.9752 | -258150 | -2513750 | 14 | 62 | 29457 | 71 | 30178 | ISUNNGUATA-RUSSELL | SW | 195 | 211369 | Isunnguata Sermia | 38643 | land | False | -1 | nan | nan | -1 | -1 | -| 4 | 113787 | -50.9575 | 66.9688 | -262350 | -2514050 | 11 | 62 | 33559 | 71 | 34261 | ISUNNGUATA-RUSSELL | SW | 195 | 212574 | Isunnguata Sermia | 42388 | land | False | -1 | nan | nan | -1 | -1 | +| 0 | 122055 | -50.713 | 67.0017 | -251250 | -2511450 | 20 | 62 | 22184 | 71 | 22906 | ISUNNGUATA-RUSSELL | SW | 195 | 207779 | Isunnguata Sermia | 31644 | land | False | -1 | nan | nan | -1 | -1 | +| 1 | 122222 | -50.7346 | 66.9884 | -252350 | -2512850 | 7 | 62 | 23683 | 71 | 24427 | ISUNNGUATA-RUSSELL | SW | 195 | 209355 | Isunnguata Sermia | 33360 | land | False | -1 | nan | nan | -1 | -1 | +| 2 | 122251 | -50.7748 | 66.985 | -254150 | -2513050 | -1 | 62 | 25444 | 71 | 26179 | ISUNNGUATA-RUSSELL | SW | 195 | 209887 | Isunnguata Sermia | 34934 | land | False | -1 | nan | nan | -1 | -1 | +| 3 | 122275 | -50.8707 | 66.9767 | -258450 | -2513550 | 4 | 62 | 29682 | 71 | 30397 | ISUNNGUATA-RUSSELL | SW | 195 | 211236 | Isunnguata Sermia | 38789 | land | False | -1 | nan | nan | -1 | -1 | +| 4 | 122285 | -50.8569 | 66.9764 | -257850 | -2513650 | 15 | 62 | 29141 | 71 | 29862 | ISUNNGUATA-RUSSELL | SW | 195 | 211209 | Isunnguata Sermia | 38336 | land | False | -1 | nan | nan | -1 | -1 | View the last few rows: @@ -420,11 +420,11 @@ df.drop(columns=["outlet","basin"]).tail() #+RESULTS: | index | id | lon | lat | x | y | elev | Z2012_sector | Z2012_sector_dist | M2019_ID | M2019_ID_dist | M2019_basin | M2019_region | M2020_gate | M2020_gate_dist | B2015_name | B2015_dist | domain | upstream | coast_id | coast_lon | coast_lat | coast_x | coast_y | |-------+-------+----------+---------+---------+----------+------+--------------+-------------------+----------+---------------+-----------------------------------------------+--------------+------------+-----------------+------------------+------------+--------+----------+----------+-----------+-----------+---------+----------| -| 198 | 67008 | -49.5386 | 66.4387 | -204750 | -2579350 | 759 | 62 | 0 | 40 | 52 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 200066 | Quantum Gletsjer | 79350 | ice | True | 114921 | -50.6517 | 66.8677 | -250050 | -2526750 | -| 199 | 67022 | -49.5206 | 66.4375 | -203950 | -2579550 | 754 | 62 | 0 | 40 | 0 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 199999 | Quantum Gletsjer | 80065 | ice | True | 114921 | -50.6517 | 66.8677 | -250050 | -2526750 | -| 200 | 67072 | -49.5382 | 66.4254 | -204850 | -2580850 | 792 | 62 | 0 | 40 | 0 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 198569 | Quantum Gletsjer | 78854 | ice | True | 114921 | -50.6517 | 66.8677 | -250050 | -2526750 | -| 201 | 67096 | -49.5436 | 66.419 | -205150 | -2581550 | 825 | 62 | 0 | 40 | 184 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 197830 | Quantum Gletsjer | 78386 | ice | True | 114921 | -50.6517 | 66.8677 | -250050 | -2526750 | -| 202 | 67140 | -49.5368 | 66.4068 | -204950 | -2582950 | 873 | 62 | 0 | 40 | 0 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 196481 | Quantum Gletsjer | 78243 | ice | True | 114921 | -50.6517 | 66.8677 | -250050 | -2526750 | +| 201 | 67919 | -49.4996 | 66.4435 | -202950 | -2578950 | 791 | 62 | 0 | 40 | 6 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 200758 | Quantum Gletsjer | 81191 | ice | True | 123466 | -50.6517 | 66.8677 | -250050 | -2526750 | +| 202 | 67935 | -49.5385 | 66.4378 | -204750 | -2579450 | 764 | 62 | 0 | 40 | 0 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 199967 | Quantum Gletsjer | 79323 | ice | True | 123466 | -50.6517 | 66.8677 | -250050 | -2526750 | +| 203 | 67946 | -49.5206 | 66.4375 | -203950 | -2579550 | 767 | 62 | 0 | 40 | 0 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 199999 | Quantum Gletsjer | 80065 | ice | True | 123466 | -50.6517 | 66.8677 | -250050 | -2526750 | +| 204 | 68014 | -49.5436 | 66.419 | -205150 | -2581550 | 825 | 62 | 0 | 40 | 184 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 197830 | Quantum Gletsjer | 78386 | ice | True | 123466 | -50.6517 | 66.8677 | -250050 | -2526750 | +| 205 | 68056 | -49.5346 | 66.4068 | -204850 | -2582950 | 859 | 62 | 0 | 40 | 0 | SAQQAP-MAJORQAQ-SOUTHTERRUSSEL_SOUTHQUARUSSEL | SW | 262 | 196497 | Quantum Gletsjer | 78340 | ice | True | 123466 | -50.6517 | 66.8677 | -250050 | -2526750 | Finally, write data to various file formats. GeoPandas DataFrames can only have one geometry, so we must select one and drop the other before writing the file. @@ -434,7 +434,6 @@ df.set_geometry("outlet").drop(columns="basin").to_file("outlets.gpkg", driver=" df.set_geometry("basin").drop(columns="outlet").to_file("basins.gpkg", driver="GPKG") #+END_SRC - **** Discharge The code here is the same as above from the "Outlets and basins" section, but we call =discharge()= rather than =outlets()=. @@ -456,13 +455,13 @@ print(ds) #+RESULTS: : -: Dimensions: (land: 1, time: 26298) +: Dimensions: (land: 1, time: 26663) : Coordinates: -: * time (time) datetime64[ns] 1950-01-01 1950-01-02 ... 2021-12-31 -: * land (land) uint64 112448 +: * time (time) datetime64[ns] 1950-01-01 1950-01-02 ... 2022-12-31 +: * land (land) uint64 121108 : Data variables: -: MAR_land (time, land) float64 0.03053 0.03059 0.03063 ... nan nan nan -: RACMO_land (time, land) float64 nan nan nan nan ... 0.04167 0.03844 0.03304 +: MAR_land (time, land) float64 0.0007218 0.0007235 ... 0.6995 0.7007 +: RACMO_land (time, land) float64 nan nan nan nan ... 0.1555 0.1591 0.1549 Display the time series. Unlike the command line interface, here the outlets are not merged. @@ -471,18 +470,18 @@ ds.sel(time=slice('2012-06-01','2012-06-10')).to_dataframe() #+END_SRC #+RESULTS: -| | MAR_land | RACMO_land | -|--------------------------------------------+----------+-------------| -| (112448, Timestamp('2012-06-01 00:00:00')) | 1.24978 | 0.0299266 | -| (112448, Timestamp('2012-06-02 00:00:00')) | 0.831023 | 0.00123663 | -| (112448, Timestamp('2012-06-03 00:00:00')) | 0.504199 | 0.00133009 | -| (112448, Timestamp('2012-06-04 00:00:00')) | 0.503719 | 0 | -| (112448, Timestamp('2012-06-05 00:00:00')) | 0.503333 | -0.00119686 | -| (112448, Timestamp('2012-06-06 00:00:00')) | 0.510772 | 0.304393 | -| (112448, Timestamp('2012-06-07 00:00:00')) | 0.502683 | 0.00743797 | -| (112448, Timestamp('2012-06-08 00:00:00')) | 0.50253 | 0.194025 | -| (112448, Timestamp('2012-06-09 00:00:00')) | 2.19597 | 0.0874073 | -| (112448, Timestamp('2012-06-10 00:00:00')) | 0.50182 | 0.0247026 | +| | MAR_land | RACMO_land | +|------------------------------------------------------+----------+------------| +| (121108, Timestamp('2012-06-01 00:00:00', freq='D')) | 11.8938 | 0.029936 | +| (121108, Timestamp('2012-06-02 00:00:00', freq='D')) | 10.127 | 0.00123702 | +| (121108, Timestamp('2012-06-03 00:00:00', freq='D')) | 8.11475 | 0.00132286 | +| (121108, Timestamp('2012-06-04 00:00:00', freq='D')) | 3.97058 | 0 | +| (121108, Timestamp('2012-06-05 00:00:00', freq='D')) | 0.313908 | -0.0011907 | +| (121108, Timestamp('2012-06-06 00:00:00', freq='D')) | 0.478592 | 0.303289 | +| (121108, Timestamp('2012-06-07 00:00:00', freq='D')) | 0.330184 | 0.00745243 | +| (121108, Timestamp('2012-06-08 00:00:00', freq='D')) | 2.85773 | 0.193424 | +| (121108, Timestamp('2012-06-09 00:00:00', freq='D')) | 0.308489 | 0.0870701 | +| (121108, Timestamp('2012-06-10 00:00:00', freq='D')) | 0.308755 | 0.0244829 | In order to merge the outlets, select all coordinates that are *not time* and merge them. Also, apply a rolling mean: @@ -499,16 +498,16 @@ ds.sum(dim=dims)\ #+RESULTS: | time | MAR_land | RACMO_land | |---------------------+----------+------------| -| 2012-06-01 00:00:00 | 8.60773 | 1.39995 | -| 2012-06-02 00:00:00 | 8.35813 | 1.24619 | -| 2012-06-03 00:00:00 | 5.53362 | 0.460494 | -| 2012-06-04 00:00:00 | 3.02151 | 0.15819 | -| 2012-06-05 00:00:00 | 1.45469 | 0.089366 | -| 2012-06-06 00:00:00 | 0.773539 | 0.0882229 | -| 2012-06-07 00:00:00 | 0.657929 | 0.0490182 | -| 2012-06-08 00:00:00 | 0.55118 | 0.0724609 | -| 2012-06-09 00:00:00 | 0.746173 | 0.084771 | -| 2012-06-10 00:00:00 | 0.745833 | 0.08811 | +| 2012-06-01 00:00:00 | 30.644 | 1.39377 | +| 2012-06-02 00:00:00 | 31.1031 | 1.2407 | +| 2012-06-03 00:00:00 | 27.5909 | 0.458691 | +| 2012-06-04 00:00:00 | 21.0425 | 0.157925 | +| 2012-06-05 00:00:00 | 14.3486 | 0.0893565 | +| 2012-06-06 00:00:00 | 8.40202 | 0.0880673 | +| 2012-06-07 00:00:00 | 5.03268 | 0.0488637 | +| 2012-06-08 00:00:00 | 3.74182 | 0.0722192 | +| 2012-06-09 00:00:00 | 2.33918 | 0.084481 | +| 2012-06-10 00:00:00 | 1.22403 | 0.0877896 | ***** Polygon covering multiple land and ice outlets @@ -519,8 +518,6 @@ from discharge import discharge ds = discharge(base="./freshwater", roi="-51.50,66.93 -51.21,66.74 -49.44,66.91 -49.84,67.18", quiet=True, upstream=True).discharge() #+END_SRC -#+RESULTS: - What are the dimensions (i.e. how many outlets in each domain?) #+BEGIN_SRC jupyter-python :session using :exports both @@ -530,19 +527,19 @@ print(ds) #+RESULTS: #+begin_example -Dimensions: (ice: 35, ice_upstream: 84, land: 84, time: 26298) +Dimensions: (ice: 33, ice_upstream: 85, land: 88, time: 26663) Coordinates: - ,* ice_upstream (ice_upstream) uint64 65473 65477 65483 ... 67096 67140 - ,* time (time) datetime64[ns] 1950-01-01 ... 2021-12-31 - ,* land (land) uint64 113526 113705 113729 ... 115311 115336 - ,* ice (ice) uint64 65487 65492 65509 ... 65668 65671 65714 + ,* ice_upstream (ice_upstream) uint64 66407 66414 66416 ... 68014 68056 + ,* time (time) datetime64[ns] 1950-01-01 ... 2022-12-31 + ,* land (land) uint64 122055 122222 122251 ... 123897 123926 + ,* ice (ice) uint64 66425 66427 66444 ... 66595 66596 66639 Data variables: - MAR_land (time, land) float64 0.005423 1.435e-05 ... nan nan - MAR_ice (time, ice) float64 3.245e-15 1.975e-16 ... nan nan - RACMO_land (time, land) float64 nan nan nan ... 0.001391 0.02869 - RACMO_ice (time, ice) float64 nan nan nan ... 0.006565 0.003061 - MAR_ice_upstream (time, ice_upstream) float64 2.406e-16 3.296e-16 ... nan - RACMO_ice_upstream (time, ice_upstream) float64 nan nan ... 4.135e-05 + MAR_land (time, land) float64 0.0002109 1.244e-06 ... 0.005236 + MAR_ice (time, ice) float64 2.94e-16 2.026e-17 ... 2.785e-18 + RACMO_land (time, land) float64 nan nan nan ... 0.001346 0.1365 + RACMO_ice (time, ice) float64 nan nan nan ... 0.0001123 0.004071 + MAR_ice_upstream (time, ice_upstream) float64 1.261e-17 ... 1.855e-17 + RACMO_ice_upstream (time, ice_upstream) float64 nan nan ... 5.79e-05 #+end_example With these results: diff --git a/fig/api_example.png b/fig/api_example.png index fd606cc1de3103d339e8ae162cdce079c483e096..0ec86582d16b224191f971079f20b56a6eecdfc0 100644 GIT binary patch literal 21009 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 literal 18931 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 Ae*gdg From 74e7e38fe8e0f88bee8edcc16a30c346ff6d949f Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Sun, 6 Aug 2023 08:46:53 -0700 Subject: [PATCH 14/15] No discharge subfolders anymore --- README.org | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.org b/README.org index 84aff5f..4d5f9a2 100644 --- a/README.org +++ b/README.org @@ -171,7 +171,6 @@ find ./freshwater/land/ ./freshwater/ice/ -maxdepth 1 | sort ./freshwater/ice/basins.csv ./freshwater/ice/basins_filled.gpkg ./freshwater/ice/basins.gpkg -./freshwater/ice/discharge ./freshwater/ice/MAR.nc ./freshwater/ice/outlets.csv ./freshwater/ice/outlets.gpkg @@ -182,7 +181,6 @@ find ./freshwater/land/ ./freshwater/ice/ -maxdepth 1 | sort ./freshwater/land/basins.csv ./freshwater/land/basins_filled.gpkg ./freshwater/land/basins.gpkg -./freshwater/land/discharge ./freshwater/land/MAR.nc ./freshwater/land/outlets.csv ./freshwater/land/outlets.gpkg From 37f2a197860903c9f8320eb71ca29807ab3a5821 Mon Sep 17 00:00:00 2001 From: "Kenneth D. Mankoff" Date: Sun, 6 Aug 2023 08:50:26 -0700 Subject: [PATCH 15/15] :exports both for GitHub --- update_2023.org | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/update_2023.org b/update_2023.org index dbb5ebd..88e4ad1 100644 --- a/update_2023.org +++ b/update_2023.org @@ -30,7 +30,7 @@ Changes to the code and manuscript can be seen at https://github.com/GEUS-Glacio * release_2022 vs release_2023 discharge ** Extract time series -#+BEGIN_SRC bash :results verbatim :exports results :wrap xml +#+BEGIN_SRC bash :results verbatim :exports results :wrap xml :exports both mamba activate freshwater_user python ./discharge.py --base="/home/kdm/data/Mankoff_2020/water/release_2022" --roi="-51.50,66.93 -51.21,66.74 -49.44,66.91 -49.84,67.18" -d -u > ./dat/r2022_roi.csv @@ -40,7 +40,7 @@ python ./discharge.py --base="/home/kdm/data/Mankoff_2020/water/release_2023" -- ** Graphics -#+BEGIN_SRC jupyter-python :kernel ds +#+BEGIN_SRC jupyter-python :kernel ds :exports both df_r2022 = pd.read_csv('./dat/r2022_roi.csv', index_col=0) df_r2023 = pd.read_csv('./dat/r2023_roi.csv', index_col=0) @@ -65,7 +65,7 @@ p = df.loc['2012-04-01':'2012-11-15']\ *** r2023 -#+BEGIN_SRC jupyter-python :display plain :kernel ds +#+BEGIN_SRC jupyter-python :display plain :kernel ds :exports both df = pd.read_csv('./dat/r2023_roi.csv', index_col=0) df[['MAR_ice','RACMO_ice']]\ .loc['2012-04-01':'2012-11-15']\ @@ -81,7 +81,7 @@ df[['MAR_ice','RACMO_ice']]\ ** Recreate using 'old' data -#+BEGIN_SRC jupyter-python :kernel ds +#+BEGIN_SRC jupyter-python :kernel ds :exports both df = pd.read_csv('./dat/r2022_roi.csv', index_col=0) p = df.loc['2012-04-01':'2012-11-15']\ .rolling(5)\ @@ -94,7 +94,7 @@ p = df.loc['2012-04-01':'2012-11-15']\ ** Recreate using 'new' data -#+BEGIN_SRC jupyter-python :kernel ds +#+BEGIN_SRC jupyter-python :kernel ds :exports both df = pd.read_csv('./dat/r2023_roi.csv', index_col=0) p = df.loc['2012-04-01':'2012-11-15']\ .rolling(5)\