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.
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.)
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.
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
toidx
in the line:end_cor = sea_land_idx[idx + 1]
under
_apply_decay_coeffs()
in theclimada.hazard.tc_tracks_synth
module. (But would need to test to ensure this fix does not introduce other bugs.)