Skip to content

Halocarbon update and fix#806

Open
kdorheim wants to merge 16 commits into
devfrom
halocarb_fix
Open

Halocarbon update and fix#806
kdorheim wants to merge 16 commits into
devfrom
halocarb_fix

Conversation

@kdorheim
Copy link
Copy Markdown
Contributor

The main objectives of this PR are to

  1. Update the halocarbon parameters used by hector's halocarbon component
  2. Fix units used internally to calculate the emission -> concentration conversion factor
  3. Clarify the strings used to label the raw (absolute RF calculated by the halocarbon component) vs the RF that is queried by users.

@kdorheim
Copy link
Copy Markdown
Contributor Author

kdorheim commented May 23, 2026

When it came to updating the halocarbon parameter values (tau, rho, molar mass), many of the parameter values stayed the same, but there were some changes, which are highlighted here.

tau

No changes in tau - the halocarbon lifetime

rho

A few halocarbons has small changes in the rho, radiative efficiencies W/m2/ppt

halo parameter new old diff
CFC11_emissions rho 0.000291 0.000259 -3.2e-05
CFC12_emissions rho 0.000358 0.000320 -3.8e-05
halon1211_emissions rho 0.000300 0.000030 -2.7e-04

molar mass

Most of the changes in the molar mass parameter values were small with the exception of CH3Br which appeared to be using the wrong value.

halo parameter new old diff
CH3Br_emissions molar mass 94.94 50.4500 -44.4900
HFC245fa_emissions molar mass 134.05 134.0000 -0.0500
HFC4310_emissions molar mass 252.05 252.0000 -0.0500
CH3CCl3_emissions molar mass 133.40 133.3500 -0.0500
CH3Cl_emissions molar mass 50.49 50.4500 -0.0400
HCFC141b_emissions molar mass 116.94 116.9000 -0.0400
HCFC142b_emissions molar mass 100.49 100.4500 -0.0400
CFC11_emissions molar mass 137.37 137.3500 -0.0200
CFC113_emissions molar mass 187.37 187.3500 -0.0200
CFC115_emissions molar mass 154.47 154.4500 -0.0200
HFC32_emissions molar mass 52.02 52.0000 -0.0200
HCFC22_emissions molar mass 86.47 86.4500 -0.0200
halon2402_emissions molar mass 259.82 259.8000 -0.0200
halon1211_emissions molar mass 165.36 165.3500 -0.0100
C2F6_emissions molar mass 138.02 138.0100 -0.0100
HFC23_emissions molar mass 70.01 70.0000 -0.0100
HFC134a_emissions molar mass 102.03 102.0200 -0.0100
CFC12_emissions molar mass 120.91 120.9000 -0.0100
CCl4_emissions molar mass 153.81 153.8000 -0.0100
halon1301_emissions molar mass 148.91 148.9000 -0.0100
CF4_emissions molar mass 88.01 88.0043 -0.0057

H0

Preindustrial concentration

halo parameter new old diff
CH3Cl_emissions H0 457.0000000 504.0 47.0000000
CF4_emissions H0 34.0500000 35.0 0.9500000
CH3Br_emissions H0 5.3000000 5.8 0.5000000
CCl4_emissions H0 0.0250004 0.0 -0.0250004
halon1211_emissions H0 0.0044466 0.0 -0.0044466
HFC32_emissions H0 0.0002184 0.0 -0.0002184
HFC227ea_emissions H0 0.0000040 0.0 -0.0000040
C2F6_emissions H0 0.0000013 0.0 -0.0000013

Conversion Factor

Now let's compare how the parameters contribute to calculating the conversion factor that is used to calculate the change in concentrations from annual emissions.

halo parameter new old diff
CH3Br_emissions conversion factor 0.0609900 0.1101200 0.0491301
CH3Cl_emissions conversion factor 0.1146839 0.1101200 -0.0045638
HFC32_emissions conversion factor 0.1113108 0.1068376 -0.0044732
HFC23_emissions conversion factor 0.0827080 0.0793651 -0.0033429
HFC143a_emissions conversion factor 0.0689004 0.0661061 -0.0027943
HCFC22_emissions conversion factor 0.0669641 0.0642632 -0.0027009
CF4_emissions conversion factor 0.0657924 0.0631282 -0.0026642
HCFC142b_emissions conversion factor 0.0576215 0.0553067 -0.0023149
HFC134a_emissions conversion factor 0.0567518 0.0544556 -0.0022963
HCFC141b_emissions conversion factor 0.0495159 0.0475240 -0.0019919
HFC125_emissions conversion factor 0.0482452 0.0462886 -0.0019566
CFC12_emissions conversion factor 0.0478901 0.0459517 -0.0019384
CH3CCl3_emissions conversion factor 0.0434062 0.0416615 -0.0017447
HFC245fa_emissions conversion factor 0.0431957 0.0414594 -0.0017364
CFC11_emissions conversion factor 0.0421518 0.0404482 -0.0017036
C2F6_emissions conversion factor 0.0419533 0.0402547 -0.0016985
SF6_emissions conversion factor 0.0396439 0.0380361 -0.0016078
halon1301_emissions conversion factor 0.0388852 0.0373106 -0.0015745
CCl4_emissions conversion factor 0.0376464 0.0361219 -0.0015244
CFC115_emissions conversion factor 0.0374855 0.0359699 -0.0015156
halon1211_emissions conversion factor 0.0350169 0.0335988 -0.0014181
HFC227ea_emissions conversion factor 0.0340551 0.0326740 -0.0013811
CFC114_emissions conversion factor 0.0338817 0.0325076 -0.0013741
CFC113_emissions conversion factor 0.0309035 0.0296534 -0.0012501
HFC4310_emissions conversion factor 0.0229732 0.0220459 -0.0009273
halon2402_emissions conversion factor 0.0222862 0.0213840 -0.0009022

@kdorheim
Copy link
Copy Markdown
Contributor Author

What does this mean for halocarbon-related variables?

There were no changes in the input halocarbon emissions.

variable RMSE
CF4_emissions 0
C2F6_emissions 0
HFC23_emissions 0
HFC32_emissions 0
HFC4310_emissions 0
HFC125_emissions 0
HFC134a_emissions 0
HFC143a_emissions 0
HFC227ea_emissions 0
HFC245fa_emissions 0
SF6_emissions 0
CFC11_emissions 0
CFC12_emissions 0
CFC113_emissions 0
CFC114_emissions 0
CFC115_emissions 0
CCl4_emissions 0
CH3CCl3_emissions 0
HCFC22_emissions 0
HCFC141b_emissions 0
HCFC142b_emissions 0
halon1211_emissions 0
halon1301_emissions 0
halon2402_emissions 0
CH3Cl_emissions 0
CH3Br_emissions 0

When it comes to concentrations, the annual RMSE ranged from ~19 ppt to 0.002 ppt.

variable RMSE
CH3Cl_concentration 18.386
CFC12_concentration 7.498
CH3Br_concentration 4.660
CFC11_concentration 3.691
HCFC22_concentration 2.235
CCl4_concentration 1.925
CH3CCl3_concentration 1.195
CFC113_concentration 1.046
CF4_concentration 0.862
HFC134a_concentration 0.587
HFC23_concentration 0.247
CFC114_concentration 0.243
HCFC141b_concentration 0.209
HCFC142b_concentration 0.196
HFC143a_concentration 0.111
HFC125_concentration 0.106
CFC115_concentration 0.103
SF6_concentration 0.074
HFC32_concentration 0.056
halon1211_concentration 0.050
C2F6_concentration 0.046
halon1301_concentration 0.038
HFC245fa_concentration 0.014
HFC227ea_concentration 0.007
halon2402_concentration 0.006
HFC4310_concentration 0.002

Highlighted here are the concentration plots with the largest differences between the two Hector versions (old vs new) and, when available, results from ARG and RCMIP I.

CH3Cl_concentration_conc CFC12_concentration_conc CH3Br_concentration_conc CFC11_concentration_conc HFC23_concentration_conc

conc_figs.zip

@kdorheim
Copy link
Copy Markdown
Contributor Author

What does this mean for halocarbon RF?

variable RMSE
RF_CFC12 0.011
RF_CFC11 0.004
RF_CF4 0.003
RF_CH3Cl 0.002
RF_HCFC22 0.000
RF_halon1211 0.000
RF_CCl4 0.000
RF_CFC113 0.000
RF_HFC134a 0.000
RF_CH3CCl3 0.000
RF_CFC114 0.000
RF_HFC23 0.000
RF_SF6 0.000
RF_CH3Br 0.000
RF_HCFC142b 0.000
RF_HCFC141b 0.000
RF_CFC115 0.000
RF_HFC125 0.000
RF_HFC143a 0.000
RF_C2F6 0.000
RF_halon1301 0.000
RF_HFC32 0.000
RF_HFC245fa 0.000
RF_halon2402 0.000
RF_HFC227ea 0.000
RF_HFC4310 0.000

The RMSE of the RF changes from 0.011 to 0.

RF_CFC12_rf RF_CFC11_rf RF_CF4_rf RF_CH3Cl_rf

rf_figs.zip

@github-actions
Copy link
Copy Markdown

📊 Report Generated 🤖

Here is the latest automated report:

Leeyabot report!

2026-05-25

Hello, this is Leeyabot! I look for differences between the this “dev”
version of Hector and make some standard diagnostic plots. I
specifically compare this version of Hector with

  • old-new test data - 3.5.0 (commit e98dc2d)
  • previous release data - 3.5.0 (commit )

Previous Dev Version Comparison

The old-new test data is used in the R testthat unit tests to verify
that recent model development has not introduced changes to Hector’s
output. Here, we generate standard diagnostic plots to identify any
changes in model behavior.

This summary table indicates the $R^2$, root mean squared error (RMSE),
and normalized RMSE (NRMSE) for each variable and scenario. An $R^2$ of
1 and NRMSE of 0 indicate that the Hector results are identical to the
previous developmental version of Hector.

scenario variable R.squared RMSE NRMSE
ssp245 CO2_concentration (ppmv CO2) 1e+00 3.7e-02 0e+00
ssp245 global_tas (degC) 1e+00 8.0e-03 6e-03
ssp245 RF_CO2 (W/m2) 1e+00 0.0e+00 0e+00
ssp245 RF_tot (W/m2) 1e+00 1.3e-02 6e-03
## The current pull request's outputs differ from 3.5.0, e98dc2d

## Run leeyabot locally to generate diagnostic plots showing the differences.

Release Version Comparison

In the remainder of the document we compare this version of Hector, the
dev version with the minted results from Hector 3.5.0 the most
recent major release. There are two different sets of experiments to be
considered here - idealized and multiforcing scenarios. Each summary
table will contain results from both types of experiments while the
diagnostic plots will consider them separately.

Idealized Experiments

scenario

variable

R.squared

RMSE

NRMSE

1pctCO2

CO2_concentration (ppmv CO2)

1e+00

0e+00

0e+00

abruptx4CO2

CO2_concentration (ppmv CO2)

1e+00

0e+00

0e+00

1pctCO2

global_tas (degC)

1e+00

0e+00

0e+00

abruptx4CO2

global_tas (degC)

1e+00

0e+00

0e+00

1pctCO2

RF_tot (W/m2)

1e+00

0e+00

0e+00

abruptx4CO2

RF_tot (W/m2)

1e+00

0e+00

0e+00

## The current pull request's idealized outputs do not differ from the Hector release 3.5.0,

Multiforcing Experiments

scenario

variable

R.squared

RMSE

NRMSE

ssp119

CO2_concentration (ppmv CO2)

1e+00

8.4e-02

0e+00

ssp245

CO2_concentration (ppmv CO2)

1e+00

3.7e-02

0e+00

ssp585

CO2_concentration (ppmv CO2)

1e+00

6.4e-02

0e+00

ssp119

global_tas (degC)

1e+00

5.0e-03

8e-03

ssp245

global_tas (degC)

1e+00

8.0e-03

6e-03

ssp585

global_tas (degC)

1e+00

1.0e-02

3e-03

ssp119

RF_tot (W/m2)

1e+00

1.0e-02

1e-02

ssp245

RF_tot (W/m2)

1e+00

1.3e-02

6e-03

ssp585

RF_tot (W/m2)

1e+00

1.6e-02

3e-03

## The current pull request's multiforcing outputs differ from 3.5.0,

## Run leeyabot locally to generate diagnostic plots showing the differences.

@kdorheim
Copy link
Copy Markdown
Contributor Author

Leeyabot flagged that when looking at the idealized runs there are no differences between this current dev and the past hector release. This is expected since the only changes that are made here affect halocarbon concentrations/forcings which are constrained to 0 during these idealized runs.

When we've seen that the changes in halocarbon forcings/concentrations are somewhat small and have small effects on CO2 concentrations and global temperature.

oldnew-1 oldnew-2

@kdorheim
Copy link
Copy Markdown
Contributor Author

Finally, this PR removes the Fadj string and clarifies which halocarbon RF is being called/returned. Previously, Fadj_halocarbon was used to fetch the halocarbon RF relative to the base year, returned as RF_halocarbon. While the RF_halocarbon string would return the unadjusted RF also labeled as RF_halocarbon. This caused confusion among users and with the GCAM coupling.

Now we have clearer labels RF_unadj_halocarbon which is only used internally and the adjusted halocarbon forcing RF_halocarbon follows the same naming convention as all the other hector forcing agents.

@kdorheim kdorheim marked this pull request as ready for review May 26, 2026 15:54
@kdorheim kdorheim requested review from bpbond and ssmithClimate May 26, 2026 15:54
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.

1 participant