ec-jrc / lisflood-lisvap

Lisflood OS (LISVAP)
https://ec-jrc.github.io/lisflood-lisvap/
European Union Public License 1.2
8 stars 6 forks source link

Make Lisvap work with 1 arcmin wgs84 maps #30

Closed gnrgomes closed 3 years ago

gnrgomes commented 4 years ago

EFAS is shifting to work with 1 arc minute grids in WGS84. Lisvap need to be prepared to process these new grids. Actions to be taken: 1) Create in wgs84 the files arean.nc, dem.nc, lat.nc 2) Change the code to allow processing and producing wgs84 1 arc minute maps 3) Because the 1 arc minute maps are 10 times bigger lisvap need also to start compressing them.

gnrgomes commented 4 years ago

The DEM and LAT maps used in Lisvap have the Y inverted inside the data matrix. So, the wgs84 dem.nc and lat.nc were corrected by inverting/flipping the data matrix on the Y axis. The resulting 1arcmin maps are very big, I also made the output to be compressed by using zip=4 and packed all the data into short int.

Here you have a link to the folder on JRCBox where you can find some example output: https://jrcbox.jrc.ec.europa.eu/index.php/apps/files/?dir=/lisvap&fileid=20543564

All the changes made are in the branch called 1arcmin.

PS: On the example output, please ignore the dates, because the 1 arcmin files don't have the proper date.

gnrgomes commented 4 years ago

Peter Salamon made the following suggestions:

In the meantime I have looked at the ranges for potential evapotranspiration. If we use a minimum value of 0 and a maximum of 50mm/day we should be on the save side. At a global level values range usually between 0 and 15mm/day so using 50mm/day as a maximum should cover definitely the entire range. Therefore, to make LISVAP efficient in output writing I would suggest to produce the e0/es/et output in netCDF using a short integer with the following definition: :valid_min = 0S; // short :valid_max = 5000S; // short :scale_factor = 0.01; // double :add_offset = 0.0; // double

To be netCDF-CF compliant please also define the standard names as follows: For E0 :standard_name = "water_potential_evaporation_flux"; For ET0 :standard_name = "water_evapotranspiration_flux"; For ES0 :standard_name = " water_evaporation_flux_from_soil"; Keep the long_names unchanged as these should contain the original LISVAP output names.

For average temperature use the following: :valid_min = -600S; // short :valid_max = 600S; // short :scale_factor = 0.1; // double :add_offset = 0.0; // double A temperature range of -60 to plus 60 should cover all cases also at global level. The standard name for average temperature should be :standard_name = "air_temperature";

One more strange thing that I have observed: While the longitude values seem to be correct ranging from approx 25 degrees West (-25) until 50 degrees east, the latitude value in the LISVAP output ranges from approx -29.9 degree South until until 22.9 degrees North. However, the latitude should range from approx 22 South until 72 degrees North. This explains why the values are projected around the equator.