UW-Hydro / RVIC

RVIC Streamflow Routing Model
http://rvic.readthedocs.org
GNU General Public License v3.0
34 stars 58 forks source link

Coupling Timestep not calculating correct for hourly data #103

Open PhilippBuehler opened 6 years ago

PhilippBuehler commented 6 years ago

I'm getting this error running RVIC in hourly timesteps.

INFO:get_time_mode>> Coupling Timestep is (seconds): 3599.99999665 INFO:get_time_mode>> RVIC Timestep is (seconds): 86400.0

This problem seems to be (another) floating-point problem since the internal calculation does compute 1/24*8640 which ends up being an double instead of an int: https://github.com/UW-Hydro/RVIC/blob/622f45d2d92532db6dd92a887492d6e37d9fcc9e/rvic/core/read_forcing.py#L168

I worked around it by rounding the result whoch gives me 3600 seconds :

        self.secs_per_step = round((t1 - t0) * SECSPERDAY)

See thecommit in my fork: https://github.com/PhilippBuehler/RVIC/commit/8f333ce039a5bc3f693c144b3790f2a921c6d35c

I also created a pull request: https://github.com/UW-Hydro/RVIC/pull/104

I have to do additional testing of any of the other errors are related to my tweak (right now I'm getting ERROR:write>> local variable 'end_timestamp' referenced before assignment)

Philipp

PhilippBuehler commented 6 years ago

I tried to make it work out, but the problem is deep within the code and the use of datenum which is not working out. One fix could be to change the internal time format to "hours since xxx" instead of "days since xxx", but this is marked in the function as "DO NOT CHANGE".. So there probably needs to be a bigger fix for this.