CLIMADA-project / climada_python

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

Negative frequencies in TropCyclone.set_climate_scenario_knu() #317

Open zeliest opened 3 years ago

zeliest commented 3 years ago

When applying climate change with the Knutson method to a tropical cyclone hazard for RCP8.5 for the basin SP and SI for 2080 based on IBtracks, we run into the error "The application of the given climate scenario resulted in at least one negative frequency." How is it possible that we get negative frequencies? What should one do in that case?

chahank commented 3 years ago

This is due to the multiplication factor from the Knuston model. There is no quick and easy solution to that. The user must have a look at the model and decide from herself what factor to apply in this case.

sameberenz commented 3 years ago

In the implementation of tc_clim_change based on the corresponding code in CLIMADA Matlab, two safeguards where not transfered to the new python code, thereby allowing for negative frequencies and not warning the user of the module if a climate scenario beyond the scope of the Knutson paper is requested:

1) here is the original warning in the Matlab code:

if time_scale>1
    warning('Radiative forcing of selected scenario is higher than forcing in RCP4.5 end of 21st century (reference scenario). Changes in intensity & frequency are scaled with a factor larger than 1.')
end

2) avoiding negative frequencies and intensities:

% set negative values 0:
hazard_cc.frequency(hazard_cc.frequency<0)=0;
hazard_cc.intensity(hazard_cc.intensity<0)=0;

I propose that these two safeguards should also be implemented in hazard.tc_clim_change on climada_python.

zeliest commented 3 years ago

based on that should we really provide data for tropical cyclones based on the rcp8.5 in the API?

sameberenz commented 3 years ago

maybe only for the first half of the century, i.e. the time where RCP8.5 radiative forcing does not exceed end-of-century RCP4.5 radiative forcing.