UW-Hydro / VIC

The Variable Infiltration Capacity (VIC) Macroscale Hydrologic Model
http://vic.readthedocs.io
MIT License
261 stars 389 forks source link

Allow user to provide specific humidy or vapor pressure #418

Closed jhamman closed 8 years ago

jhamman commented 8 years ago

VIC uses vapor pressure (VP) internally. However, vic_force in both the classic and image drivers only allows specific humidity (SHUM) which is converted to VP. MTCLIM in VIC 4 produces VP when run in OUTPUT_FORCE mode. I'd like to suggest that we allow the user to provide VP or SHUM and that vic_force handles the conversions if necessary.

cc @wietsefranssen

dgergel commented 8 years ago

I'm planning to get started on this. Currently, the global parameter file for the image driver must specify vapor pressure VP but the actual forcing data must be specific humidity SHUM, so this is confusing. As the issue states, ideally we would not only fix this discrepancy between what is specified and provided but also allow the user to provide VP or SHUM, with vic_force.c doing the requisite unit conversions. @bartnijssen and @jhamman, does that sound good for our VIC 5 development timeline?

bartnijssen commented 8 years ago

I'd like to avoid having a lot of logic for the met generation as part of VIC5 itself. That is one of the reasons for pulling MTCLIM out of VIC (the main reasons are that it does not play well with the image driver and that it prevents exact restarts). My preference would be that the conversion should be done as part of a pre-processor utility that perhaps also runs MTCLIM. That said, we should still make it consistent internally so that what is required in the global parameter file is the field that is actually used, but that should be a small fix. The larger work would be on standalone MTCLIM.

jhamman commented 8 years ago

Thanks @bartnijssen. Let me lay this out in a bit more detail:

So if we are only going to go with one (SHUM or VP), I would suggest it is better to go with VP so that the VIC.5 image driver is:

  1. consistent with the VIC.5 classic driver,
  2. able to use the VP values calculated by VIC.4.2 w/ OUTPUT_FORCE
bartnijssen commented 8 years ago

Yep - that works for me. As part of tonic we can provide a conversion (or as part of MTCLIM standalone).

My main concern is not user-convenience but code maintainability and testing, which is simpler with fewer options. People can always fork and add their own conversion routine if they so desire, but I'd like the official version of VIC to be a little less accommodating than the old one (since the burden for that accommodation currently lies entirely with our group).

bartnijssen commented 8 years ago

We should at least make sure that the image driver is consistent so it can use the output from OUTPUT_FORCE and does not require:

jhamman commented 8 years ago

Okay, @dgergel was going to do this but since she's gone, I'll knock it out.

@yixinmao, can you take point on converting the image driver sample data back to the vapor pressure (units kPa).

I'll send over a PR in a few minutes.

yixinmao commented 8 years ago

@jhamman : you mean produce a new image driver forcings for the Stehekin example with vapor pressure in kPa, right?

jhamman commented 8 years ago

closed via #584