CLIMADA-project / climada_python

Python (3.8+) version of CLIMADA
GNU General Public License v3.0
318 stars 125 forks source link

Unrealistically extreme re-intensification if synthetic TC has 2nd landfall with 1-hour duration #534

Open rick-russotto opened 2 years ago

rick-russotto commented 2 years ago

When generating synthetic tracks, if a storm makes landfall, re-emerges over ocean, and then makes a second landfall that lasts one hour, the wind speed abruptly re-strengthens to the original storm's wind speed.

Example plot attached. Top panel shows value of the "on_land" variable, while bottom panel shows "max_wind_speed". Blue is the original historical track, orange is the synthetic track. X-axis is elapsed time in hours. Just after the second-to-last landfall, the synthetic track abruptly re-strengthens by over 50 knots in one hour, which is not physically realistic.

Climada_bug_example

I believe this bug is caused by the fact that the wind speeds for storms that re-emerge over ocean are corrected by subtracting a constant from the historical wind speed "until the next landfall", but this correction is applied for one too many time steps. After the subsequent, one-hour landfall, the code attempts to determine the new wind speed by comparing two time steps, both of which have already had the same correction applied, which causes the storm to abruptly revert to the historical wind speed. I think this could be fixed by changing idx + 1 to idx in the line:

end_cor = sea_land_idx[idx + 1]

under _apply_decay_coeffs() in the climada.hazard.tc_tracks_synth module. (But would need to test to ensure this fix does not introduce other bugs.)

tovogt commented 2 years ago

I'm not very familiar with the synthetic track generation, but this reminds me of #151, so @bguillod should probably be able to comment on this.