Skip to content

Conversation

@tovogt
Copy link
Collaborator

@tovogt tovogt commented Nov 3, 2022

Changes proposed in this PR:

  • Go through the existing TC wind code and double-check units (fixes a bug in Holland et al. 2010 implementation).
  • Add a new TC wind model "ER11" that implements Emanuel and Rotunno 2011.

PR Author Checklist

PR Reviewer Checklist

Copy link
Collaborator Author

@tovogt tovogt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added some comments about the meaning of the changes.

Comment on lines +115 to +116
"H10": [27.604317, 28.720708, 29.894993, 27.52234 , 32.512395, 37.114355,
23.848917, 29.614752, 33.775593, 32.545347, 19.957627, 41.014578],
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The values for this test changed because the H10 model had a small bug related to units.

Comment on lines +119 to +120
"H1980": [21.376807, 21.957217, 22.569568, 21.284351, 24.254226, 26.971303,
19.220149, 21.984516, 24.196388, 23.449116, 0, 31.550207],
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The values for this test changed because the H1980 model had a small bug related to units.

Comment on lines +241 to +242
d_centr = np.array([[35, 75, 220], [30, 1000, 300]], dtype=float)
r_max = np.array([75, 40], dtype=float)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These variables need to be provided in kilometers. Before this PR, we wrongly assumed that they need to be provided in meters. This was not as bad as it sounds because in most formulas, only the ratio between the two variables is taken into account.

# convert recorded surface winds to gradient-level winds without translational influence
t_vmax = track.max_sustained_wind.values.copy()
# convert surface winds (in m/s) to gradient winds without translational influence
t_vmax = track.max_sustained_wind.values.copy() * KN_TO_MS
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was a bug in the H1980 model: We forgot to convert from knots to meters per second.

return np.clip(hol_b, 1, 2.5)

def _x_holland_2010(d_centr, r_max, v_max_s, hol_b, close_centr, v_n=17.0, r_n=300e3):
def _x_holland_2010(d_centr, r_max, v_max_s, hol_b, close_centr, v_n=17.0, r_n=300):
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was a bug in the H2010 model: We wrongly assumed that all variables are in SI units, but actually, we currently use km for distances everywhere.

Comment on lines +990 to +992
# linearly interpolate between max exponent and peripheral exponent
x_max = 0.5
x[close_centr] = x_max + np.fmax(0, d_centr - r_max) * (x_n - x_max) / (r_n - r_max)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't change the behavior, it's just a refactoring.

@emanuel-schmid emanuel-schmid merged commit f22c3b5 into develop Nov 3, 2022
@emanuel-schmid emanuel-schmid deleted the feature/trop_cyclone_er11 branch November 3, 2022 13:14
@emanuel-schmid
Copy link
Collaborator

🤞 😁

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants