:py:mod:`dynamic_characterization.ipcc_ar6.radiative_forcing` ============================================================= .. py:module:: dynamic_characterization.ipcc_ar6.radiative_forcing Module Contents --------------- Functions ~~~~~~~~~ .. autoapisummary:: dynamic_characterization.ipcc_ar6.radiative_forcing.IRF_co2 dynamic_characterization.ipcc_ar6.radiative_forcing.characterize_co2 dynamic_characterization.ipcc_ar6.radiative_forcing.characterize_co2_uptake dynamic_characterization.ipcc_ar6.radiative_forcing.characterize_co dynamic_characterization.ipcc_ar6.radiative_forcing.characterize_ch4 dynamic_characterization.ipcc_ar6.radiative_forcing.characterize_n2o dynamic_characterization.ipcc_ar6.radiative_forcing.create_generic_characterization_function .. py:function:: IRF_co2(year) -> callable Impulse Resonse Function (IRF) of CO2 :param year: The year after emission for which the IRF is calculated. :type year: int :returns: The IRF value for the given year. :rtype: float .. py:function:: characterize_co2(series, period: int | None = 100, cumulative: bool | None = False) -> dynamic_characterization.classes.CharacterizedRow Calculate the cumulative or marginal radiative forcing (CRF) from CO2 for each year in a given period. Based on characterize_co2 from bw_temporalis, but updated numerical values from IPCC AR6 Ch7 & SM. If `cumulative` is True, the cumulative CRF is calculated. If `cumulative` is False, the marginal CRF is calculated. Takes a single row of the TimeSeries Pandas DataFrame (corresponding to a set of (`date`/`amount`/`flow`/`activity`). For each year in the given period, the CRF is calculated. Units are watts/square meter/kilogram of CO2. :returns: * *A CharacterizedRow object (namedtuple) with the following fields* * **- date** (*datetime64[s]*) * **- amount** (*float*) * **- flow** (*str*) * **- activity** (*str*) .. seealso:: :obj:`Joos2013` Relevant scientific publication on CRF: https://doi.org/10.5194/acp-13-2793-2013 :obj:`Schivley2015` Relevant scientific publication on the numerical calculation of CRF: https://doi.org/10.1021/acs.est.5b01118 :obj:`Forster2023` Updated numerical values from IPCC AR6 Chapter 7 (Table 7.15): https://doi.org/10.1017/9781009157896.009 .. py:function:: characterize_co2_uptake(series, period: int | None = 100, cumulative: bool | None = False) -> dynamic_characterization.classes.CharacterizedRow The same as characterize_co2, but with a negative sign for uptake of CO2. Based on characterize_co2 from bw_temporalis, but updated numerical values from IPCC AR6 Ch7 & SM. Calculate the negative cumulative or marginal radiative forcing (CRF) from CO2-uptake for each year in a given period. If `cumulative` is True, the cumulative CRF is calculated. If `cumulative` is False, the marginal CRF is calculated. Takes a single row of the TimeSeries Pandas DataFrame (corresponding to a set of (`date`/`amount`/`flow`/`activity`). For each year in the given period, the CRF is calculated. Units are watts/square meter/kilogram of CO2. :returns: * *A CharacterizedRow object (namedtuple) with the following fields* * **- date** (*datetime64[s]*) * **- amount** (*float*) * **- flow** (*str*) * **- activity** (*str*) .. seealso:: :obj:`Joos2013` Relevant scientific publication on CRF: https://doi.org/10.5194/acp-13-2793-2013 :obj:`Schivley2015` Relevant scientific publication on the numerical calculation of CRF: https://doi.org/10.1021/acs.est.5b01118 :obj:`Forster2023` Updated numerical values from IPCC AR6 Chapter 7 (Table 7.15): https://doi.org/10.1017/9781009157896.009 .. py:function:: characterize_co(series, period: int | None = 100, cumulative: bool | None = False) -> dynamic_characterization.classes.CharacterizedRow Calculate the cumulative or marginal radiative forcing (CRF) from CO for each year in a given period. This is exactly the same function as for CO2, it's just scaled by the ratio of molar masses of CO and CO2. This is because CO is very short-lived (lifetime ~2 months) and we assume that it completely reacts to CO2 within the first year. Based on characterize_co2 from bw_temporalis, but updated numerical values from IPCC AR6 Ch7 & SM. Calculate the cumulative or marginal radiative forcing (CRF) from CO2 for each year in a given period. If `cumulative` is True, the cumulative CRF is calculated. If `cumulative` is False, the marginal CRF is calculated. Takes a single row of the TimeSeries Pandas DataFrame (corresponding to a set of (`date`/`amount`/`flow`/`activity`). For each year in the given period, the CRF is calculated. Units are watts/square meter/kilogram of CO2. :returns: * *A CharacterizedRow object (namedtuple) with the following fields* * **- date** (*datetime64[s]*) * **- amount** (*float*) * **- flow** (*str*) * **- activity** (*str*) .. seealso:: :obj:`Joos2013` Relevant scientific publication on CRF: https://doi.org/10.5194/acp-13-2793-2013 :obj:`Schivley2015` Relevant scientific publication on the numerical calculation of CRF: https://doi.org/10.1021/acs.est.5b01118 :obj:`Forster2023` Updated numerical values from IPCC AR6 Chapter 7 (Table 7.15): https://doi.org/10.1017/9781009157896.009 .. py:function:: characterize_ch4(series, period: int = 100, cumulative=False) -> dynamic_characterization.classes.CharacterizedRow Calculate the cumulative or marginal radiative forcing (CRF) from CH4 for each year in a given period. Based on characterize_methane from bw_temporalis, but updated numerical values from IPCC AR6 Ch7 & SM. This DOES include indirect effects of CH4 on ozone and water vapor, but DOES NOT include the decay to CO2. For more info on that, see the deprecated version of bw_temporalis. If `cumulative` is True, the cumulative CRF is calculated. If `cumulative` is False, the marginal CRF is calculated. Takes a single row of the TimeSeries Pandas DataFrame (corresponding to a set of (`date`/`amount`/`flow`/`activity`). For earch year in the given period, the CRF is calculated. Units are watts/square meter/kilogram of CH4. :param series: A single row of the TimeSeries dataframe. :type series: array-like :param period: Time period for calculation (number of years), by default 100 :type period: int, optional :param cumulative: Should the RF amounts be summed over time? :type cumulative: bool, optional :returns: * *A CharacterizedRow object (namedtuple) with the following fields* * **- date** (*datetime64[s]*) * **- amount** (*float*) * **- flow** (*str*) * **- activity** (*str*) .. seealso:: :obj:`Joos2013` Relevant scientific publication on CRF: https://doi.org/10.5194/acp-13-2793-2013 :obj:`Schivley2015` Relevant scientific publication on the numerical calculation of CRF: https://doi.org/10.1021/acs.est.5b01118 :obj:`Forster2023` Updated numerical values from IPCC AR6 Chapter 7 (Table 7.15): https://doi.org/10.1017/9781009157896.009 .. py:function:: characterize_n2o(series, period: int = 100, cumulative=False) -> dynamic_characterization.classes.CharacterizedRow Calculate the cumulative or marginal radiative forcing (CRF) from N2O for each year in a given period. Based on characterize_methane from bw_temporalis, but updated numerical values from IPCC AR6 Ch7 & SM. If `cumulative` is True, the cumulative CRF is calculated. If `cumulative` is False, the marginal CRF is calculated. Takes a single row of the TimeSeries Pandas DataFrame (corresponding to a set of (`date`/`amount`/`flow`/`activity`). For earch year in the given period, the CRF is calculated. Units are watts/square meter/kilogram of N2O. :param series: A single row of the TimeSeries dataframe. :type series: array-like :param period: Time period for calculation (number of years), by default 100 :type period: int, optional :param cumulative: Should the RF amounts be summed over time? :type cumulative: bool, optional :returns: * *A CharacterizedRow object (namedtuple) with the following fields* * **- date** (*datetime64[s]*) * **- amount** (*float*) * **- flow** (*str*) * **- activity** (*str*) .. seealso:: :obj:`Joos2013` Relevant scientific publication on CRF: https://doi.org/10.5194/acp-13-2793-2013 :obj:`Schivley2015` Relevant scientific publication on the numerical calculation of CRF: https://doi.org/10.1021/acs.est.5b01118 :obj:`Forster2023` Updated numerical values from IPCC AR6 Chapter 7 (Table 7.15): https://doi.org/10.1017/9781009157896.009 .. py:function:: create_generic_characterization_function(decay_series) -> dynamic_characterization.classes.CharacterizedRow Creates a characterization function for a GHG based on a decay series, by calling the nested method `characterize_generic()`. :param decay_series: A decay series for a specific GHG. This is retrieved from `../data/decay_multipliers.pkl` :type decay_series: np.ndarray :rtype: A function called `characterize_generic`, which in turn returns a TimeSeries dataframe that contains the forcing of the emission of the row over the given period based on the decay series of that biosphere flow.