Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add monsoon to GLEAMviz inputs #443

Open
wolverdude opened this issue May 7, 2020 · 7 comments
Open

Add monsoon to GLEAMviz inputs #443

wolverdude opened this issue May 7, 2020 · 7 comments
Labels

Comments

@wolverdude
Copy link
Contributor

wolverdude commented May 7, 2020

Blocked by #444

Seasonality affects β according to an annual curve, but GLEAMviz doesn't appear to take the monsoon season into account for South/Southeast Asia (does it?). We need to manually add it using time-bounded exceptions in the definitions file.

Currently, GLEAMviz exceptions and parameters are being compiled using this collab. What's notably different about the monsoon from countermeasure exceptions is that its effects are cumulative with any exception in play. A countermeasure that overlaps with the monsoon will have to be scaled accordingly. The scaling formula should be:

Beta = (Beta_Exc || Beta_0) * M

where Beta_0 is the global β, Beta_Exc is the β defined by any active exception, and M is the monsoon factor as defined by:

M = (1 + (1 - S(t_start) / 1.1) * M_0)

Where M_0 is the unscaled monsoon factor (explained next paragraph), t_start is the start date of the monsoon in days and S is the seasonality factor at that time. Gleam finds the seasonality factor based on a sine wave, with the bottom of the sine wave being the seasonality parameter S_0, and the top of the sine wave horribly going to 1.1 instead of 1. S_0 is reached on Jul 15 in Gleam, meaning it peaks on Jan 15. The factor S(t) at a given time can then be found with:

S(t) = S_0 + (1.1 - S_0) / 2 * (1 + cos(2π / 365 * (t - 15)))

(Note the t-15 to adjust the peak by 15 days.)

The monsoon factor M_0 is a factor of up to 1 which is the sum of 3 equally-weighted chunks: staying indoors, temperature, and relative humidity. All of these vary from 0 to ⅓ based on whether the value is like summer during the monsoon (rated at 0) or like winter during the monsoon (rated at ⅓). So, for Pakistani monsoon-affected provinces, staying indoors was rated ⅓ (assuming heavy rain is about as annoying to go out in as winter’s cold), temperature was rated ⅙ (it takes summer temps about halfway toward winter temps), and relative humidity was rated 0 (summerlike humidity during heavy rains). These sum to 3/6, so M = ½ for Pakistan.

Once this is implemented, modelers should be able to easily specify Beta_0, M_0, S_0, t_start, and t_end for any given scenario.

@wolverdude wolverdude self-assigned this May 7, 2020
@wolverdude
Copy link
Contributor Author

@lagerros
Copy link
Contributor

lagerros commented May 7, 2020

Great spec!

  • Monsoon end date should also be specified
  • For the MVP it's fine if the monsoon is applied and removed all at once; later we can add support for gradual inrease/decrease. Currently your spec has M as a function of t; which corresponds to the more complicated version. (E.g. it would require adding a new gleam exception daily/weekly/similar to change the beta gradually.)

@wolverdude
Copy link
Contributor Author

The t in the M formula is actually the start date of the monsoon exception, so it actually is constant.

@lagerros
Copy link
Contributor

lagerros commented May 7, 2020

Aha! Calling it t0 would have made that clearer.

@wolverdude
Copy link
Contributor Author

wolverdude commented May 7, 2020

I've implemented the formula in python (see colab here) and added an alternative that uses a sinusoidal adjustment. I'll implement Connor's formula for now, but I would like feedback on what the more smoothed-out curve should look like.

curves

@wolverdude
Copy link
Contributor Author

Depends on #444.

@wolverdude
Copy link
Contributor Author

wolverdude commented May 8, 2020

I did a little bit of research, and I'm not sure how relevant this feature is for Pakistan, in particular. There appears to be a narrow band in the Himalayan foothills that is heavily affected by the monsoon, but the rest of the country, (Balochistan and Sindh in particular) are not affected very much. Quetta gets about 25mm of rainfall in total from the monsoon. Karachi and Hyderabad do a little better at ~140mm, but remember this is stretched out over 3 months and then compare it to Islamabad's 700mm of monsoon rainfall.

Based on this:

  1. Monsoon intensity value (M_0) should be required and configured by region. (We could make this as user-friendly as a simple tally of the total monsoon rainfall that will then be scaled programmatically.)
  2. Unless we're taking on pro-bono modeling for less arid regions of south/east Asia, this feature probably shouldn't be such a high priority.

@wolverdude wolverdude removed their assignment May 26, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants