mscross / pysplit

A package for HYSPLIT air parcel trajectory analysis.
BSD 3-Clause "New" or "Revised" License
144 stars 79 forks source link

Sodemann et al. (2008) moisture uptake method #59

Open zhx215 opened 5 years ago

zhx215 commented 5 years ago

In Sodemann et al. (2008), they did not discount previous dq at h = 0 (see table 1), but in the current code it did get discounted. If the current code was applied to data shown in table 1 of that publication, then dq values at -18h, -36h, and -48h, would be discounted by precipitation at 0h. Then the dq values will change from 0.3, 1.380, 0.736 to 0.242, 1.115, 0.594. This commit will keep dq discounting procedure strictly as same as Sodemann et al. (2008).

However, the reason why Sodemann did not include precipitation discounting for dq at 0h is unknown. Discounting or not at 0h is not important, and does make too much difference in results.

mscross commented 5 years ago

Thanks for bringing this to my attention, I never noticed that Sodemann et al. didn't discount previous dq when t=0. That kind of seems like an oversight to me. If t=0 has dq_initial > evaporation, do Sodemann et al adjust the previous 'above' and 'below' fractions like PySPLIT does in lines 386-390 or do they skip that too?

I think it would be valuable to keep the original behavior as well as allow for following the Sodemann et al procedure exactly. It would be easy to do by introducing a new kwarg, something like adjustdq_iftime0, where True is the original PySPLIT behavior and False is the Sodemann behavior; and adding an or clause to your if statement:

if self.uptake.loc[w, 'Timestep'] != 0 or adjustdq_ift0: