diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index ac42439..b01b911 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -6,3 +6,4 @@ | mo-jmanners | James Manners | Met Office | 2025-12-18 | | t00sa | Sam Clarke-Green | Met Office | 2026-03-02 | | Pierre-siddall | Pierre Siddall | Met Office | 2026-03-16 | +| nichollsh | Harrison Nicholls | University of Cambridge | 2026-03-24 | diff --git a/src/interface_core/socrates_set_spectrum.F90 b/src/interface_core/socrates_set_spectrum.F90 index 3295847..fded282 100644 --- a/src/interface_core/socrates_set_spectrum.F90 +++ b/src/interface_core/socrates_set_spectrum.F90 @@ -27,14 +27,20 @@ module socrates_set_spectrum contains subroutine set_spectrum(n_instances, spectrum, spectrum_name, spectral_file, & - l_h2o, l_co2, l_o3, l_n2o, l_co, l_ch4, l_o2, l_no, l_so2, l_no2, l_nh3, & - l_hno3, l_n2, l_cfc11, l_cfc12, l_cfc113, l_hcfc22, l_hfc125, l_hfc134a, & - l_cfc114, l_tio, l_vo, l_h2, l_he, l_ocs, l_na, l_k, l_feh, l_crh, l_li, & - l_rb, l_cs, l_ph3, l_c2h2, l_hcn, l_h2s, l_ar, l_o, l_n, l_no3, l_n2o5, & - l_hono, l_ho2no2, l_h2o2, l_c2h6, l_ch3, l_h2co, l_ho2, l_hdo, l_hcl, & - l_hf, l_cosso, l_tosso, l_yosos, l_ch3cho, l_ch3ooh, l_ch3coch3, & - l_ch3cocho, l_chocho, l_c2h5cho, l_hoch2cho, l_c2h5coch3, l_mvk, l_macr, & - l_pan, l_ch3ono2, & + l_h2o, l_co2, l_o3, l_n2o, l_co, l_ch4, l_o2, l_no, l_so2, l_no2, & + l_nh3, l_hno3, l_n2, l_cfc11, l_cfc12, l_cfc113, l_hcfc22, & + l_hfc125, l_hfc134a, l_cfc114, l_tio, l_vo, l_h2, l_he, l_ocs, & + l_na, l_k, l_feh, l_crh, l_li, l_rb, l_cs, l_ph3, l_c2h2, l_hcn, & + l_h2s, l_ar, l_air, l_o, l_n, l_no3, l_n2o5, l_hono, l_ho2no2, & + l_h2o2, l_c2h6, l_ch3, l_h2co, l_ho2, l_hdo, l_hcl, l_hf, l_cosso, & + l_tosso, l_yosos, l_ch3cho, l_ch3ooh, l_ch3coch3, l_ch3cocho, & + l_chocho, l_c2h5cho, l_hoch2cho, l_c2h5coch3, l_mvk, l_macr, l_pan, & + l_ch3ono2, l_c2h3, l_c2h4, l_oh, l_hco, l_n2o4, l_c2n2, l_n2h4, & + l_n2o3, l_si, l_sio, l_sio2, l_mg, l_mg2, l_mgo, l_tio2, l_fe, & + l_feo, l_ca, l_cao, l_alo, l_na2, l_nao, l_naoh, l_koh, l_hminus, & + l_ps, l_po, l_pn, l_ch3sh, l_ch3s, l_c2h6s, l_c2h6s2, l_c3h4, & + l_c4h3, l_sih4, l_s2, l_sf6, l_cs2, l_s8, l_cn, l_ch3cl, l_ch3f, & + l_ch3br, & l_all_gases, wavelength_blue) use errormessagelength_mod, only: errormessagelength @@ -58,14 +64,21 @@ subroutine set_spectrum(n_instances, spectrum, spectrum_name, spectral_file, & character(len=*), intent(in), optional :: spectral_file logical, intent(in), optional :: & - l_h2o, l_co2, l_o3, l_n2o, l_co, l_ch4, l_o2, l_no, l_so2, l_no2, l_nh3, & - l_hno3, l_n2, l_cfc11, l_cfc12, l_cfc113, l_hcfc22, l_hfc125, l_hfc134a, & - l_cfc114, l_tio, l_vo, l_h2, l_he, l_ocs, l_na, l_k, l_feh, l_crh, l_li, & - l_rb, l_cs, l_ph3, l_c2h2, l_hcn, l_h2s, l_ar, l_o, l_n, l_no3, l_n2o5, & - l_hono, l_ho2no2, l_h2o2, l_c2h6, l_ch3, l_h2co, l_ho2, l_hdo, l_hcl, & - l_hf, l_cosso, l_tosso, l_yosos, l_ch3cho, l_ch3ooh, l_ch3coch3, & - l_ch3cocho, l_chocho, l_c2h5cho, l_hoch2cho, l_c2h5coch3, l_mvk, l_macr, & - l_pan, l_ch3ono2, l_all_gases + l_h2o, l_co2, l_o3, l_n2o, l_co, l_ch4, l_o2, l_no, l_so2, l_no2, & + l_nh3, l_hno3, l_n2, l_cfc11, l_cfc12, l_cfc113, l_hcfc22, & + l_hfc125, l_hfc134a, l_cfc114, l_tio, l_vo, l_h2, l_he, l_ocs, & + l_na, l_k, l_feh, l_crh, l_li, l_rb, l_cs, l_ph3, l_c2h2, l_hcn, & + l_h2s, l_ar, l_air, l_o, l_n, l_no3, l_n2o5, l_hono, l_ho2no2, & + l_h2o2, l_c2h6, l_ch3, l_h2co, l_ho2, l_hdo, l_hcl, l_hf, l_cosso, & + l_tosso, l_yosos, l_ch3cho, l_ch3ooh, l_ch3coch3, l_ch3cocho, & + l_chocho, l_c2h5cho, l_hoch2cho, l_c2h5coch3, l_mvk, l_macr, l_pan, & + l_ch3ono2, l_c2h3, l_c2h4, l_oh, l_hco, l_n2o4, l_c2n2, l_n2h4, & + l_n2o3, l_si, l_sio, l_sio2, l_mg, l_mg2, l_mgo, l_tio2, l_fe, & + l_feo, l_ca, l_cao, l_alo, l_na2, l_nao, l_naoh, l_koh, l_hminus, & + l_ps, l_po, l_pn, l_ch3sh, l_ch3s, l_c2h6s, l_c2h6s2, l_c3h4, & + l_c4h3, l_sih4, l_s2, l_sf6, l_cs2, l_s8, l_cn, l_ch3cl, l_ch3f, & + l_ch3br, & + l_all_gases real(RealExt), intent(in), optional :: wavelength_blue @@ -132,14 +145,21 @@ subroutine set_spectrum(n_instances, spectrum, spectrum_name, spectral_file, & end if ! Remove gases that are not required call compress_spectrum(spec, & - l_h2o, l_co2, l_o3, l_n2o, l_co, l_ch4, l_o2, l_no, l_so2, l_no2, l_nh3, & - l_hno3, l_n2, l_cfc11, l_cfc12, l_cfc113, l_hcfc22, l_hfc125, l_hfc134a, & - l_cfc114, l_tio, l_vo, l_h2, l_he, l_ocs, l_na, l_k, l_feh, l_crh, l_li, & - l_rb, l_cs, l_ph3, l_c2h2, l_hcn, l_h2s, l_ar, l_o, l_n, l_no3, l_n2o5, & - l_hono, l_ho2no2, l_h2o2, l_c2h6, l_ch3, l_h2co, l_ho2, l_hdo, l_hcl, & - l_hf, l_cosso, l_tosso, l_yosos, l_ch3cho, l_ch3ooh, l_ch3coch3, & - l_ch3cocho, l_chocho, l_c2h5cho, l_hoch2cho, l_c2h5coch3, l_mvk, l_macr, & - l_pan, l_ch3ono2, l_all_gases) + l_h2o, l_co2, l_o3, l_n2o, l_co, l_ch4, l_o2, l_no, l_so2, l_no2, & + l_nh3, l_hno3, l_n2, l_cfc11, l_cfc12, l_cfc113, l_hcfc22, & + l_hfc125, l_hfc134a, l_cfc114, l_tio, l_vo, l_h2, l_he, l_ocs, & + l_na, l_k, l_feh, l_crh, l_li, l_rb, l_cs, l_ph3, l_c2h2, l_hcn, & + l_h2s, l_ar, l_air, l_o, l_n, l_no3, l_n2o5, l_hono, l_ho2no2, & + l_h2o2, l_c2h6, l_ch3, l_h2co, l_ho2, l_hdo, l_hcl, l_hf, l_cosso, & + l_tosso, l_yosos, l_ch3cho, l_ch3ooh, l_ch3coch3, l_ch3cocho, & + l_chocho, l_c2h5cho, l_hoch2cho, l_c2h5coch3, l_mvk, l_macr, l_pan, & + l_ch3ono2, l_c2h3, l_c2h4, l_oh, l_hco, l_n2o4, l_c2n2, l_n2h4, & + l_n2o3, l_si, l_sio, l_sio2, l_mg, l_mg2, l_mgo, l_tio2, l_fe, & + l_feo, l_ca, l_cao, l_alo, l_na2, l_nao, l_naoh, l_koh, l_hminus, & + l_ps, l_po, l_pn, l_ch3sh, l_ch3s, l_c2h6s, l_c2h6s2, l_c3h4, & + l_c4h3, l_sih4, l_s2, l_sf6, l_cs2, l_s8, l_cn, l_ch3cl, l_ch3f, & + l_ch3br, & + l_all_gases) ! Map the gas k-terms and weights to the sub-bands call map_sub_bands(spec) end if @@ -150,38 +170,58 @@ end subroutine set_spectrum subroutine compress_spectrum(spec, & - l_h2o, l_co2, l_o3, l_n2o, l_co, l_ch4, l_o2, l_no, l_so2, l_no2, l_nh3, & - l_hno3, l_n2, l_cfc11, l_cfc12, l_cfc113, l_hcfc22, l_hfc125, l_hfc134a, & - l_cfc114, l_tio, l_vo, l_h2, l_he, l_ocs, l_na, l_k, l_feh, l_crh, l_li, & - l_rb, l_cs, l_ph3, l_c2h2, l_hcn, l_h2s, l_ar, l_o, l_n, l_no3, l_n2o5, & - l_hono, l_ho2no2, l_h2o2, l_c2h6, l_ch3, l_h2co, l_ho2, l_hdo, l_hcl, & - l_hf, l_cosso, l_tosso, l_yosos, l_ch3cho, l_ch3ooh, l_ch3coch3, & - l_ch3cocho, l_chocho, l_c2h5cho, l_hoch2cho, l_c2h5coch3, l_mvk, l_macr, & - l_pan, l_ch3ono2, l_all_gases) + l_h2o, l_co2, l_o3, l_n2o, l_co, l_ch4, l_o2, l_no, l_so2, l_no2, & + l_nh3, l_hno3, l_n2, l_cfc11, l_cfc12, l_cfc113, l_hcfc22, & + l_hfc125, l_hfc134a, l_cfc114, l_tio, l_vo, l_h2, l_he, l_ocs, & + l_na, l_k, l_feh, l_crh, l_li, l_rb, l_cs, l_ph3, l_c2h2, l_hcn, & + l_h2s, l_ar, l_air, l_o, l_n, l_no3, l_n2o5, l_hono, l_ho2no2, & + l_h2o2, l_c2h6, l_ch3, l_h2co, l_ho2, l_hdo, l_hcl, l_hf, l_cosso, & + l_tosso, l_yosos, l_ch3cho, l_ch3ooh, l_ch3coch3, l_ch3cocho, & + l_chocho, l_c2h5cho, l_hoch2cho, l_c2h5coch3, l_mvk, l_macr, l_pan, & + l_ch3ono2, l_c2h3, l_c2h4, l_oh, l_hco, l_n2o4, l_c2n2, l_n2h4, & + l_n2o3, l_si, l_sio, l_sio2, l_mg, l_mg2, l_mgo, l_tio2, l_fe, & + l_feo, l_ca, l_cao, l_alo, l_na2, l_nao, l_naoh, l_koh, l_hminus, & + l_ps, l_po, l_pn, l_ch3sh, l_ch3s, l_c2h6s, l_c2h6s2, l_c3h4, & + l_c4h3, l_sih4, l_s2, l_sf6, l_cs2, l_s8, l_cn, l_ch3cl, l_ch3f, & + l_ch3br, & + l_all_gases) use gas_list_pcf, only: & ip_h2o, ip_co2, ip_o3, ip_n2o, ip_co, ip_ch4, ip_o2, ip_no, ip_so2, ip_no2, & - ip_nh3, ip_hno3, ip_n2, ip_cfc11, ip_cfc12, ip_cfc113, ip_hcfc22, ip_hfc125, & - ip_hfc134a, ip_cfc114, ip_tio, ip_vo, ip_h2, ip_he, ip_ocs, ip_na, ip_k, & - ip_feh, ip_crh, ip_li, ip_rb, ip_cs, ip_ph3, ip_c2h2, ip_hcn, ip_h2s, ip_ar, & - ip_o, ip_n, ip_no3, ip_n2o5, ip_hono, ip_ho2no2, ip_h2o2, ip_c2h6, ip_ch3, & - ip_h2co, ip_ho2, ip_hdo, ip_hcl, ip_hf, ip_cosso, ip_tosso, ip_yosos, & - ip_ch3cho, ip_ch3ooh, ip_ch3coch3, ip_ch3cocho, ip_chocho, ip_c2h5cho, & - ip_hoch2cho, ip_c2h5coch3, ip_mvk, ip_macr, ip_pan, ip_ch3ono2 + ip_nh3, ip_hno3, ip_n2, ip_cfc11, ip_cfc12, ip_cfc113, ip_hcfc22, & + ip_hfc125, ip_hfc134a, ip_cfc114, ip_tio, ip_vo, ip_h2, ip_he, ip_ocs, & + ip_na, ip_k, ip_feh, ip_crh, ip_li, ip_rb, ip_cs, ip_ph3, ip_c2h2, ip_hcn, & + ip_h2s, ip_ar, ip_air, ip_o, ip_n, ip_no3, ip_n2o5, ip_hono, ip_ho2no2, & + ip_h2o2, ip_c2h6, ip_ch3, ip_h2co, ip_ho2, ip_hdo, ip_hcl, ip_hf, ip_cosso, & + ip_tosso, ip_yosos, ip_ch3cho, ip_ch3ooh, ip_ch3coch3, ip_ch3cocho, & + ip_chocho, ip_c2h5cho, ip_hoch2cho, ip_c2h5coch3, ip_mvk, ip_macr, ip_pan, & + ip_ch3ono2, ip_c2h3, ip_c2h4, ip_oh, ip_hco, ip_n2o4, ip_c2n2, ip_n2h4, & + ip_n2o3, ip_si, ip_sio, ip_sio2, ip_mg, ip_mg2, ip_mgo, ip_tio2, ip_fe, & + ip_feo, ip_ca, ip_cao, ip_alo, ip_na2, ip_nao, ip_naoh, ip_koh, ip_hminus, & + ip_ps, ip_po, ip_pn, ip_ch3sh, ip_ch3s, ip_c2h6s, ip_c2h6s2, ip_c3h4, & + ip_c4h3, ip_sih4, ip_s2, ip_sf6, ip_cs2, ip_s8, ip_cn, ip_ch3cl, ip_ch3f, & + ip_ch3br implicit none type(StrSpecData), intent(inout) :: spec logical, intent(in), optional :: & - l_h2o, l_co2, l_o3, l_n2o, l_co, l_ch4, l_o2, l_no, l_so2, l_no2, l_nh3, & - l_hno3, l_n2, l_cfc11, l_cfc12, l_cfc113, l_hcfc22, l_hfc125, l_hfc134a, & - l_cfc114, l_tio, l_vo, l_h2, l_he, l_ocs, l_na, l_k, l_feh, l_crh, l_li, & - l_rb, l_cs, l_ph3, l_c2h2, l_hcn, l_h2s, l_ar, l_o, l_n, l_no3, l_n2o5, & - l_hono, l_ho2no2, l_h2o2, l_c2h6, l_ch3, l_h2co, l_ho2, l_hdo, l_hcl, & - l_hf, l_cosso, l_tosso, l_yosos, l_ch3cho, l_ch3ooh, l_ch3coch3, & - l_ch3cocho, l_chocho, l_c2h5cho, l_hoch2cho, l_c2h5coch3, l_mvk, l_macr, & - l_pan, l_ch3ono2, l_all_gases + l_h2o, l_co2, l_o3, l_n2o, l_co, l_ch4, l_o2, l_no, l_so2, l_no2, & + l_nh3, l_hno3, l_n2, l_cfc11, l_cfc12, l_cfc113, l_hcfc22, & + l_hfc125, l_hfc134a, l_cfc114, l_tio, l_vo, l_h2, l_he, l_ocs, & + l_na, l_k, l_feh, l_crh, l_li, l_rb, l_cs, l_ph3, l_c2h2, l_hcn, & + l_h2s, l_ar, l_air, l_o, l_n, l_no3, l_n2o5, l_hono, l_ho2no2, & + l_h2o2, l_c2h6, l_ch3, l_h2co, l_ho2, l_hdo, l_hcl, l_hf, l_cosso, & + l_tosso, l_yosos, l_ch3cho, l_ch3ooh, l_ch3coch3, l_ch3cocho, & + l_chocho, l_c2h5cho, l_hoch2cho, l_c2h5coch3, l_mvk, l_macr, l_pan, & + l_ch3ono2, l_c2h3, l_c2h4, l_oh, l_hco, l_n2o4, l_c2n2, l_n2h4, & + l_n2o3, l_si, l_sio, l_sio2, l_mg, l_mg2, l_mgo, l_tio2, l_fe, & + l_feo, l_ca, l_cao, l_alo, l_na2, l_nao, l_naoh, l_koh, l_hminus, & + l_ps, l_po, l_pn, l_ch3sh, l_ch3s, l_c2h6s, l_c2h6s2, l_c3h4, & + l_c4h3, l_sih4, l_s2, l_sf6, l_cs2, l_s8, l_cn, l_ch3cl, l_ch3f, & + l_ch3br, & + l_all_gases integer :: i, j, i_sub, n_band_absorb logical :: l_retain_absorb(spec%gas%n_absorb), l_retain_major @@ -235,6 +275,7 @@ subroutine compress_spectrum(spec, & retain_absorber(ip_hcn, l_hcn ) .or. & retain_absorber(ip_h2s, l_h2s ) .or. & retain_absorber(ip_ar, l_ar ) .or. & + retain_absorber(ip_air, l_air ) .or. & retain_absorber(ip_o, l_o ) .or. & retain_absorber(ip_n, l_n ) .or. & retain_absorber(ip_no3, l_no3 ) .or. & @@ -263,7 +304,50 @@ subroutine compress_spectrum(spec, & retain_absorber(ip_mvk, l_mvk ) .or. & retain_absorber(ip_macr, l_macr ) .or. & retain_absorber(ip_pan, l_pan ) .or. & - retain_absorber(ip_ch3ono2, l_ch3ono2 )) then + retain_absorber(ip_ch3ono2, l_ch3ono2 ) .or. & + retain_absorber(ip_c2h3, l_c2h3 ) .or. & + retain_absorber(ip_c2h4, l_c2h4 ) .or. & + retain_absorber(ip_oh, l_oh ) .or. & + retain_absorber(ip_hco, l_hco ) .or. & + retain_absorber(ip_n2o4, l_n2o4 ) .or. & + retain_absorber(ip_c2n2, l_c2n2 ) .or. & + retain_absorber(ip_n2h4, l_n2h4 ) .or. & + retain_absorber(ip_n2o3, l_n2o3 ) .or. & + retain_absorber(ip_si, l_si ) .or. & + retain_absorber(ip_sio, l_sio ) .or. & + retain_absorber(ip_sio2, l_sio2 ) .or. & + retain_absorber(ip_mg, l_mg ) .or. & + retain_absorber(ip_mg2, l_mg2 ) .or. & + retain_absorber(ip_mgo, l_mgo ) .or. & + retain_absorber(ip_tio2, l_tio2 ) .or. & + retain_absorber(ip_fe, l_fe ) .or. & + retain_absorber(ip_feo, l_feo ) .or. & + retain_absorber(ip_ca, l_ca ) .or. & + retain_absorber(ip_cao, l_cao ) .or. & + retain_absorber(ip_alo, l_alo ) .or. & + retain_absorber(ip_na2, l_na2 ) .or. & + retain_absorber(ip_nao, l_nao ) .or. & + retain_absorber(ip_naoh, l_naoh ) .or. & + retain_absorber(ip_koh, l_koh ) .or. & + retain_absorber(ip_hminus, l_hminus ) .or. & + retain_absorber(ip_ps, l_ps ) .or. & + retain_absorber(ip_po, l_po ) .or. & + retain_absorber(ip_pn, l_pn ) .or. & + retain_absorber(ip_ch3sh, l_ch3sh ) .or. & + retain_absorber(ip_ch3s, l_ch3s ) .or. & + retain_absorber(ip_c2h6s, l_c2h6s ) .or. & + retain_absorber(ip_c2h6s2, l_c2h6s2 ) .or. & + retain_absorber(ip_c3h4, l_c3h4 ) .or. & + retain_absorber(ip_c4h3, l_c4h3 ) .or. & + retain_absorber(ip_sih4, l_sih4 ) .or. & + retain_absorber(ip_s2, l_s2 ) .or. & + retain_absorber(ip_sf6, l_sf6 ) .or. & + retain_absorber(ip_cs2, l_cs2 ) .or. & + retain_absorber(ip_s8, l_s8 ) .or. & + retain_absorber(ip_cn, l_cn ) .or. & + retain_absorber(ip_ch3cl, l_ch3cl ) .or. & + retain_absorber(ip_ch3f, l_ch3f ) .or. & + retain_absorber(ip_ch3br, l_ch3br )) then l_retain_absorb(i)=.true. end if end do diff --git a/src/radiance_core/def_control.F90 b/src/radiance_core/def_control.F90 index 70245e2..cb1e248 100644 --- a/src/radiance_core/def_control.F90 +++ b/src/radiance_core/def_control.F90 @@ -144,6 +144,8 @@ MODULE def_control ! Flag for absorption by nitrogen LOGICAL :: l_ar = .FALSE. ! Flag for absorption by argon + LOGICAL :: l_air = .FALSE. +! Flag for absorption by dry air LOGICAL :: l_o = .FALSE. ! Flag for absorption by atomic oxygen LOGICAL :: l_n = .FALSE. @@ -184,8 +186,8 @@ MODULE def_control ! Flag for absorption by OSO-S LOGICAL :: l_h2s = .FALSE. ! Flag for absorption by Hydrogen sulphide - LOGICAL :: l_cocs = .FALSE. -! Flag for absorption by Carbonyl sulphide + LOGICAL :: l_ocs = .FALSE. +! Flag for absorption by carbonyl sulphide LOGICAL :: l_ch3cho = .FALSE. ! Flag for absorption by Acetaldehyde LOGICAL :: l_ch3ooh = .FALSE. @@ -210,6 +212,92 @@ MODULE def_control ! Flag for absorption by peroxyacetyl nitrate (PAN) LOGICAL :: l_ch3ono2 = .FALSE. ! Flag for absorption by methylnitrate + LOGICAL :: l_c2h3 = .FALSE. +! Flag for absorption by vinyl radical + LOGICAL :: l_c2h4 = .FALSE. +! Flag for absorption by ethylene + LOGICAL :: l_oh = .FALSE. +! Flag for absorption by hydroxyl radical + LOGICAL :: l_hco = .FALSE. +! Flag for absorption by formyl radical + LOGICAL :: l_n2o4 = .FALSE. +! Flag for absorption by dinitrogen tetroxide + LOGICAL :: l_c2n2 = .FALSE. +! Flag for absorption by cyanogen + LOGICAL :: l_n2h4 = .FALSE. +! Flag for absorption by hydrazine + LOGICAL :: l_n2o3 = .FALSE. +! Flag for absorption by dinitrogen trioxide + LOGICAL :: l_si = .FALSE. +! Flag for absorption by silicon + LOGICAL :: l_sio = .FALSE. +! Flag for absorption by silicon monoxide + LOGICAL :: l_sio2 = .FALSE. +! Flag for absorption by silicon dioxide + LOGICAL :: l_mg = .FALSE. +! Flag for absorption by atomic magnesium + LOGICAL :: l_mg2 = .FALSE. +! Flag for absorption by magnesium dimer + LOGICAL :: l_mgo = .FALSE. +! Flag for absorption by magnesium oxide + LOGICAL :: l_tio2 = .FALSE. +! Flag for absorption by titanium dioxide + LOGICAL :: l_fe = .FALSE. +! Flag for absorption by atomic iron + LOGICAL :: l_feo = .FALSE. +! Flag for absorption by iron(ii) oxide + LOGICAL :: l_ca = .FALSE. +! Flag for absorption by calcium + LOGICAL :: l_cao = .FALSE. +! Flag for absorption by calcium oxide + LOGICAL :: l_alo = .FALSE. +! Flag for absorption by aluminium monoxide + LOGICAL :: l_na2 = .FALSE. +! Flag for absorption by disodium + LOGICAL :: l_nao = .FALSE. +! Flag for absorption by sodium oxide + LOGICAL :: l_naoh = .FALSE. +! Flag for absorption by sodium hydroxide + LOGICAL :: l_koh = .FALSE. +! Flag for absorption by potassium hydroxide + LOGICAL :: l_hminus = .FALSE. +! Flag for absorption by hydride anion + LOGICAL :: l_ps = .FALSE. +! Flag for absorption by phosphorus sulfide + LOGICAL :: l_po = .FALSE. +! Flag for absorption by phosphorus monoxide + LOGICAL :: l_pn = .FALSE. +! Flag for absorption by phosphorus nitride + LOGICAL :: l_ch3sh = .FALSE. +! Flag for absorption by methanethiol + LOGICAL :: l_ch3s = .FALSE. +! Flag for absorption by methylthiyl radical + LOGICAL :: l_c2h6s = .FALSE. +! Flag for absorption by dimethyl sulfide + LOGICAL :: l_c2h6s2 = .FALSE. +! Flag for absorption by dimethyl disulfide + LOGICAL :: l_c3h4 = .FALSE. +! Flag for absorption by propyne/allene + LOGICAL :: l_c4h3 = .FALSE. +! Flag for absorption by butadiynyl radical + LOGICAL :: l_sih4 = .FALSE. +! Flag for absorption by silane + LOGICAL :: l_s2 = .FALSE. +! Flag for absorption by disulfur + LOGICAL :: l_sf6 = .FALSE. +! Flag for absorption by sulfur hexafluoride + LOGICAL :: l_cs2 = .FALSE. +! Flag for absorption by carbon disulfide + LOGICAL :: l_s8 = .FALSE. +! Flag for absorption by octasulfur + LOGICAL :: l_cn = .FALSE. +! Flag for absorption by cyanogen radical + LOGICAL :: l_ch3cl = .FALSE. +! Flag for absorption by methyl chloride + LOGICAL :: l_ch3f = .FALSE. +! Flag for absorption by methyl fluoride + LOGICAL :: l_ch3br = .FALSE. +! Flag for absorption by methyl bromide LOGICAL :: l_include_gas(npd_gases) = .FALSE. ! Flags to treat radiative effect of gases diff --git a/src/radiance_core/gas_list_pcf.F90 b/src/radiance_core/gas_list_pcf.F90 index 5ecd15c..c4a795f 100644 --- a/src/radiance_core/gas_list_pcf.F90 +++ b/src/radiance_core/gas_list_pcf.F90 @@ -20,7 +20,7 @@ MODULE gas_list_pcf INTEGER, PRIVATE :: i -INTEGER, PARAMETER :: npd_gases = 75 +INTEGER, PARAMETER :: npd_gases = 110 ! Number of indexed gases INTEGER, PARAMETER :: IP_h2o = 1 @@ -173,6 +173,76 @@ MODULE gas_list_pcf ! Identifier for hydrazine INTEGER, PARAMETER :: IP_n2o3 = 75 ! Identifier for dinitrogen trioxide +INTEGER, PARAMETER :: IP_si = 76 +! Identifier for silicon +INTEGER, PARAMETER :: IP_sio = 77 +! Identifier for silicon monoxide +INTEGER, PARAMETER :: IP_sio2 = 78 +! Identifier for silicon dioxide +INTEGER, PARAMETER :: IP_mg = 79 +! Identifier for atomic magnesium +INTEGER, PARAMETER :: IP_mg2 = 80 +! Identifier for magnesium dimer +INTEGER, PARAMETER :: IP_mgo = 81 +! Identifier for magnesium oxide +INTEGER, PARAMETER :: IP_tio2 = 82 +! Identifier for titanium dioxide +INTEGER, PARAMETER :: IP_fe = 83 +! Identifier for atomic iron +INTEGER, PARAMETER :: IP_feo = 84 +! Identifier for iron(ii) oxide +INTEGER, PARAMETER :: IP_ca = 85 +! Identifier for calcium +INTEGER, PARAMETER :: IP_cao = 86 +! Identifier for calcium oxide +INTEGER, PARAMETER :: IP_alo = 87 +! Identifier for aluminium monoxide +INTEGER, PARAMETER :: IP_na2 = 88 +! Identifier for disodium +INTEGER, PARAMETER :: IP_nao = 89 +! Identifier for sodium oxide +INTEGER, PARAMETER :: IP_naoh = 90 +! Identifier for sodium hydroxide +INTEGER, PARAMETER :: IP_koh = 91 +! Identifier for potassium hydroxide +INTEGER, PARAMETER :: IP_hminus = 92 +! Identifier for hydride anion +INTEGER, PARAMETER :: IP_ps = 93 +! Identifier for phosphorus sulfide +INTEGER, PARAMETER :: IP_po = 94 +! Identifier for phosphorus monoxide +INTEGER, PARAMETER :: IP_pn = 95 +! Identifier for phosphorus nitride +INTEGER, PARAMETER :: IP_ch3sh = 96 +! Identifier for methanethiol +INTEGER, PARAMETER :: IP_ch3s = 97 +! Identifier for methylthiyl radical +INTEGER, PARAMETER :: IP_c2h6s = 98 +! Identifier for dimethyl sulfide +INTEGER, PARAMETER :: IP_c2h6s2 = 99 +! Identifier for dimethyl disulfide +INTEGER, PARAMETER :: IP_c3h4 = 100 +! Identifier for propyne +INTEGER, PARAMETER :: IP_c4h3 = 101 +! Identifier for butadiynyl radical +INTEGER, PARAMETER :: IP_sih4 = 102 +! Identifier for silane +INTEGER, PARAMETER :: IP_s2 = 103 +! Identifier for disulfur +INTEGER, PARAMETER :: IP_sf6 = 104 +! Identifier for sulfur hexafluoride +INTEGER, PARAMETER :: IP_cs2 = 105 +! Identifier for carbon disulfide +INTEGER, PARAMETER :: IP_s8 = 106 +! Identifier for octasulfur +INTEGER, PARAMETER :: IP_cn = 107 +! Identifier for cyanogen radical +INTEGER, PARAMETER :: IP_ch3cl = 108 +! Identifier for methyl chloride +INTEGER, PARAMETER :: IP_ch3f = 109 +! Identifier for methyl fluoride +INTEGER, PARAMETER :: IP_ch3br = 110 +! Identifier for methyl bromide ! Column headers for reading data in raw_input @@ -195,7 +265,16 @@ MODULE gas_list_pcf 'C2H5CHO ', 'HOCH2CHO ', 'C2H5COCH3 ', 'MVK ', & 'MACR ', 'PAN ', 'CH3ONO2 ', 'C2H3 ', & 'C2H4 ', 'OH ', 'HCO ', 'N2O4 ', & - 'C2N2 ', 'N2H4 ', 'N2O3 '/) + 'C2N2 ', 'N2H4 ', 'N2O3 ', 'Si ', & + 'SiO ', 'SiO2 ', 'Mg ', 'Mg2 ', & + 'MgO ', 'TiO2 ', 'Fe ', 'FeO ', & + 'Ca ', 'CaO ', 'AlO ', 'Na2 ', & + 'NaO ', 'NaOH ', 'KOH ', 'H- ', & + 'PS ', 'PO ', 'PN ', 'CH3SH ', & + 'CH3S ', 'C2H6S ', 'C2H6S2 ', 'C3H4 ', & + 'C4H3 ', 'SiH4 ', 'S2 ', 'SF6 ', & + 'CS2 ', 'S8 ', 'CN ', 'CH3Cl ', & + 'CH3F ', 'CH3Br ' /) ! File suffixes CHARACTER (LEN=12), PARAMETER :: gas_suffix(npd_gases) = (/ & @@ -217,7 +296,16 @@ MODULE gas_list_pcf 'c2h5cho ', 'hoch2cho ', 'c2h5coch3 ', 'mvk ', & 'macr ', 'pan ', 'ch3ono2 ', 'c2h3 ', & 'c2h4 ', 'oh ', 'hco ', 'n2o4 ', & - 'c2n2 ', 'n2h4 ', 'n2o3 '/) + 'c2n2 ', 'n2h4 ', 'n2o3 ', 'si ', & + 'sio ', 'sio2 ', 'mg ', 'mg2 ', & + 'mgo ', 'tio2 ', 'fe ', 'feo ', & + 'ca ', 'cao ', 'alo ', 'na2 ', & + 'nao ', 'naoh ', 'koh ', 'hminus ', & + 'ps ', 'po ', 'pn ', 'ch3sh ', & + 'ch3s ', 'c2h6s ', 'c2h6s2 ', 'c3h4 ', & + 'c4h3 ', 'sih4 ', 's2 ', 'sf6 ', & + 'cs2 ', 's8 ', 'cn ', 'ch3cl ', & + 'ch3f ', 'ch3br ' /) ! Long names CHARACTER (LEN=20), PARAMETER :: name_absorb(npd_gases) = (/ & @@ -295,7 +383,42 @@ MODULE gas_list_pcf "Dinitrogen tetroxide", & "Cyanogen ", & "Hydrazine ", & - "Dinitrogen trioxide "/) + "Dinitrogen trioxide ", & + "Silicon ", & + "Silicon monoxide ", & + "Silicon dioxide ", & + "Atomic magnesium ", & + "Magnesium dimer ", & + "Magnesium oxide ", & + "Titanium dioxide ", & + "Iron ", & + "Iron(II) oxide ", & + "Calcium ", & + "Calcium oxide ", & + "Aluminium monoxide ", & + "Disodium ", & + "Sodium oxide ", & + "Sodium hydroxide ", & + "Potassium hydroxide ", & + "Hydride anion ", & + "Phosphorus sulfide ", & + "Phosphorus monoxide ", & + "Phosphorus nitride ", & + "Methanethiol ", & + "Methylthiyl radical ", & + "Dimethyl sulfide ", & + "Dimethyl disulfide ", & + "Propyne ", & + "Butadiynyl radical ", & + "Silane ", & + "Disulfur ", & + "Sulfur hexafluoride ", & + "Carbon disulfide ", & + "Octasulfur ", & + "Cyanogen radical ", & + "Methyl chloride ", & + "Methyl fluoride ", & + "Methyl bromide " /) ! Molecular weights taken from "General Inorganic Chemistry" @@ -375,7 +498,42 @@ MODULE gas_list_pcf 91.0110_RealK, & ! 72: N2O4 (from NIST) 52.0348_RealK, & ! 73: C2N2 (from NIST) 32.0452_RealK, & ! 74: N2H4 (from NIST) - 76.0116_RealK /) ! 75: N2O3 (from NIST) + 76.0116_RealK, & ! 75: N2O3 (from NIST) + 28.0855_RealK, & ! 76: Si (from NIST) + 44.0849_RealK, & ! 77: SiO (from NIST) + 60.0843_RealK, & ! 78: SiO2 (from NIST) + 24.3050_RealK, & ! 79: Mg (from NIST) + 48.6100_RealK, & ! 80: Mg2 (from NIST) + 40.3044_RealK, & ! 81: MgO (from NIST) + 79.8660_RealK, & ! 82: TiO2 (from NIST) + 55.8450_RealK, & ! 83: Fe (from NIST) + 71.8440_RealK, & ! 84: FeO (from NIST) + 40.0780_RealK, & ! 85: Ca (from NIST) + 56.0770_RealK, & ! 86: CaO (from NIST) + 42.9809_RealK, & ! 87: AlO (from NIST) + 45.9795_RealK, & ! 88: Na2 (from NIST) + 38.9892_RealK, & ! 89: NaO (from NIST) + 39.9971_RealK, & ! 90: NaOH (from NIST) + 56.1056_RealK, & ! 91: KOH (from NIST) + 1.0085_RealK, & ! 92: H- (from NIST) + 63.0390_RealK, & ! 93: PS (from NIST) + 46.9732_RealK, & ! 94: PO (from NIST) + 44.9805_RealK, & ! 95: PN (from NIST) + 48.1070_RealK, & ! 96: CH3SH (from NIST) + 47.1000_RealK, & ! 97: CH3S (from NIST) + 62.1340_RealK, & ! 98: C2H6S (from NIST) + 94.1990_RealK, & ! 99: C2H6S2 (from NIST) + 40.0638_RealK, & ! 100: C3H4 (from NIST) + 51.0680_RealK, & ! 101: C4H3 (4*C + 3*H) + 32.1173_RealK, & ! 102: SiH4 (from NIST) + 64.1300_RealK, & ! 103: S2 (from NIST) + 146.0550_RealK, & ! 104: SF6 (from NIST) + 76.1410_RealK, & ! 105: CS2 (from NIST) + 256.5200_RealK, & ! 106: S8 (from NIST) + 26.0174_RealK, & ! 107: CN (from NIST) + 50.4880_RealK, & ! 108: CH3Cl (from NIST) + 34.0329_RealK, & ! 109: CH3F (from NIST) + 94.9390_RealK /) ! 110: CH3Br (from NIST) ! Array of identifiers in HITRAN for each gas in the radiation code. @@ -453,7 +611,43 @@ MODULE gas_list_pcf 0, & ! 71: HCO 0, & ! 72: N2O4 48, & ! 73: C2N2 - (0, i=ip_n2h4, npd_gases) /) + 0 , & ! 74: N2H4 + 0, & ! 75: N2H3 + 0 , & ! 76: Si + 0 , & ! 77: SiO + 0 , & ! 78: SiO2 + 0 , & ! 79: Mg + 0 , & ! 80: Mg2 + 0 , & ! 81: MgO + 0 , & ! 82: TiO2 + 0 , & ! 83: Fe + 0 , & ! 84: FeO + 0 , & ! 85: Ca + 0 , & ! 86: CaO + 0 , & ! 87: AlO + 0 , & ! 88: Na2 + 0 , & ! 89: NaO + 0 , & ! 90: NaOH + 0 , & ! 91: KOH + 0 , & ! 92: H- + 0 , & ! 93: PS + 0 , & ! 94: PO + 0 , & ! 95: PN + 0 , & ! 96: CH3SH + 0 , & ! 97: CH3S + 0 , & ! 98: C2H6S + 0 , & ! 99: C2H6S2 + 0 , & ! 100: C3H4 + 0 , & ! 101: C4H3 + 0 , & ! 102: SiH4 + 58 , & ! 103: S2 + 30 , & ! 104: SF6 + 53 , & ! 105: CS2 + 0 , & ! 106: S8 + 0 , & ! 107: CN + 24 , & ! 108: CH3Cl + 51 , & ! 109: CH3F + 40 /) ! 110: CH3Br ! Maximum number of specified HITRAN isotopes for a given absorber INTEGER, PARAMETER :: npd_isotopes = 3 @@ -468,79 +662,261 @@ MODULE gas_list_pcf ! Depolarization factors used to compute the Rayleigh scattering coefficients REAL (RealK), PARAMETER :: depolarization_factor(npd_gases) = (/ & - 0.0_RealK, & ! H2O - 0.0922_RealK, & ! CO2 (Parthasarathy, Indian J. Phys. 25, 21 (1951)) - 0.0_RealK, & ! O3 - 0.1197_RealK, & ! N2O (Parthasarathy, Indian J. Phys. 25, 21 (1951)) - 0.08_RealK, & ! CO (Parthasarathy, Indian J. Phys. 25, 21 (1951)) - 0.0_RealK, & ! CH4 - 0.06_RealK, & ! O2 (Parthasarathy, Indian J. Phys. 25, 21 (1951)) - 0.0218_RealK, & ! NO (Parthasarathy, Indian J. Phys. 25, 21 (1951)) - 0.0_RealK, & ! SO2 - 0.0_RealK, & ! NO2 - 0.0_RealK, & ! NH3 - 0.0_RealK, & ! HNO3 - 0.0305_RealK, & ! N2 (Parthasarathy, Indian J. Phys. 25, 21 (1951)) - 0.0_RealK, & ! CFC11 - 0.0_RealK, & ! CFC12 - 0.0_RealK, & ! CFC113 - 0.0_RealK, & ! HCFC22 - 0.0_RealK, & ! HFC125 - 0.0_RealK, & ! HFC134a - 0.0_RealK, & ! CFC114 - 0.0_RealK, & ! TiO - 0.0_RealK, & ! VO - 0.0221_RealK, & ! H2 (Parthasarathy, Indian J. Phys. 25, 21 (1951)) - 0.025_RealK, & ! He (Parthasarathy, Indian J. Phys. 25, 21 (1951)) - 0.0_RealK, & ! OCS - 0.0_RealK, & ! Na - 0.0_RealK, & ! K - 0.0_RealK, & ! FeH - 0.0_RealK, & ! CrH - 0.0_RealK, & ! Li - 0.0_RealK, & ! Rb - 0.0_RealK, & ! Cs - 0.0_RealK, & ! PH3 - 0.0_RealK, & ! C2H2 - 0.0_RealK, & ! HCN - 0.0_RealK, & ! H2S - 0.0006_RealK, & ! Ar (Parthasarathy, Indian J. Phys. 25, 21 (1951)) - 0.0279_RealK, & ! Dry air - 0.0_RealK, & ! O - 0.0_RealK, & ! N - (0.0_RealK, i=ip_no3, npd_gases) /) + 0.0_RealK, & ! 1: H2O + 0.0922_RealK, & ! 2: CO2 (Parthasarathy, Indian J. Phys. 25, 21 (1951)) + 0.0_RealK, & ! 3: O3 + 0.1197_RealK, & ! 4: N2O (Parthasarathy, Indian J. Phys. 25, 21 (1951)) + 0.08_RealK, & ! 5: CO (Parthasarathy, Indian J. Phys. 25, 21 (1951)) + 0.0_RealK, & ! 6: CH4 + 0.06_RealK, & ! 7: O2 (Parthasarathy, Indian J. Phys. 25, 21 (1951)) + 0.0218_RealK, & ! 8: NO (Parthasarathy, Indian J. Phys. 25, 21 (1951)) + 0.0_RealK, & ! 9: SO2 + 0.0_RealK, & ! 10: NO2 + 0.0_RealK, & ! 11: NH3 + 0.0_RealK, & ! 12: HNO3 + 0.0305_RealK, & ! 22: N2 (Parthasarathy, Indian J. Phys. 25, 21 (1951)) + 0.0_RealK, & ! 14: CFC11 + 0.0_RealK, & ! 15: CFC12 + 0.0_RealK, & ! 16: CFC113 + 0.0_RealK, & ! 17: HCFC22 + 0.0_RealK, & ! 18: HFC125 + 0.0_RealK, & ! 19: HFC134a + 0.0_RealK, & ! 20: CFC114 + 0.0_RealK, & ! 21: TiO + 0.0_RealK, & ! 22: VO + 0.0221_RealK, & ! 23: H2 (Parthasarathy, Indian J. Phys. 25, 21 (1951)) + 0.025_RealK, & ! 24: He (Parthasarathy, Indian J. Phys. 25, 21 (1951)) + 0.0_RealK, & ! 25: OCS + 0.0_RealK, & ! 26: Na + 0.0_RealK, & ! 27: K + 0.0_RealK, & ! 28: FeH + 0.0_RealK, & ! 29: CrH + 0.0_RealK, & ! 30: Li + 0.0_RealK, & ! 31: Rb + 0.0_RealK, & ! 32: Cs + 0.0_RealK, & ! 33: PH3 + 0.0_RealK, & ! 34: C2H2 + 0.0_RealK, & ! 35: HCN + 0.0_RealK, & ! 36: H2S + 0.0006_RealK, & ! 37: Ar (Parthasarathy, Indian J. Phys. 25, 21 (1951)) + 0.0279_RealK, & ! 38: Dry air + 0.0_RealK, & ! 39: O + 0.0_RealK, & ! 40: N + 0.0_RealK, & ! 41: NO3 + 0.0_RealK, & ! 42: N2O5 + 0.0_RealK, & ! 43: HONO + 0.0_RealK, & ! 44: HO2NO2 + 0.0_RealK, & ! 45: H2O2 + 0.0_RealK, & ! 46: C2H6 + 0.0_RealK, & ! 47: CH3 + 0.0_RealK, & ! 48: H2CO + 0.0_RealK, & ! 49: HO2 + 0.0_RealK, & ! 50: HDO + 0.0_RealK, & ! 51: HCl + 0.0_RealK, & ! 52: HF + 0.0_RealK, & ! 53: cis-OSSO + 0.0_RealK, & ! 54: trans-OSSO + 0.0_RealK, & ! 55: OSO-S + 0.0_RealK, & ! 56: CH3CHO + 0.0_RealK, & ! 57: CH3OOH + 0.0_RealK, & ! 58: CH3COCH3 + 0.0_RealK, & ! 59: CH3COCHO + 0.0_RealK, & ! 60: CHOCHO + 0.0_RealK, & ! 61: C2H5CHO + 0.0_RealK, & ! 62: HOCH2CHO + 0.0_RealK, & ! 63: C2H5COCH3 + 0.0_RealK, & ! 64: MVK + 0.0_RealK, & ! 65: MACR + 0.0_RealK, & ! 66: PAN + 0.0_RealK, & ! 67: CH3ONO2 + 0.0_RealK, & ! 68: C2H3 + 0.0_RealK, & ! 69: C2H4 + 0.0_RealK, & ! 70: OH + 0.0_RealK, & ! 71: HCO + 0.0_RealK, & ! 72: N2O4 + 0.0_RealK, & ! 73: C2N2 + 0.0_RealK, & ! 74: N2H4 + 0.0_RealK, & ! 75: N2H3 + 0.0_RealK, & ! 76: Si + 0.0_RealK, & ! 77: SiO + 0.0_RealK, & ! 78: SiO2 + 0.0_RealK, & ! 79: Mg + 0.0_RealK, & ! 80: Mg2 + 0.0_RealK, & ! 81: MgO + 0.0_RealK, & ! 82: TiO2 + 0.0_RealK, & ! 83: Fe + 0.0_RealK, & ! 84: FeO + 0.0_RealK, & ! 85: Ca + 0.0_RealK, & ! 86: CaO + 0.0_RealK, & ! 87: AlO + 0.0_RealK, & ! 88: Na2 + 0.0_RealK, & ! 89: NaO + 0.0_RealK, & ! 90: NaOH + 0.0_RealK, & ! 91: KOH + 0.0_RealK, & ! 92: H- + 0.0_RealK, & ! 93: PS + 0.0_RealK, & ! 94: PO + 0.0_RealK, & ! 95: PN + 0.0_RealK, & ! 96: CH3SH + 0.0_RealK, & ! 97: CH3S + 0.0_RealK, & ! 98: C2H6S + 0.0_RealK, & ! 99: C2H6S2 + 0.0_RealK, & ! 100: C3H4 + 0.0_RealK, & ! 101: C4H3 + 0.0_RealK, & ! 102: SiH4 + 0.0_RealK, & ! 103: S2 + 0.0_RealK, & ! 104: SF6 + 0.0_RealK, & ! 105: CS2 + 0.0_RealK, & ! 106: S8 + 0.0_RealK, & ! 107: CN + 0.0_RealK, & ! 108: CH3Cl + 0.0_RealK, & ! 109: CH3F + 0.0_RealK /) ! 110: CH3Br ! Minimum wavelength to consider Rayleigh scattering REAL (RealK), PARAMETER :: rayleigh_cutoff(npd_gases) = (/ & - 175.0E-09_RealK, & ! H2O ( threshold for H2O -> O(1D) + H2 ) - 167.1E-09_RealK, & ! CO2 ( threshold for CO2 -> CO + O(1D) ) - 0.0_RealK, & ! O3 - 0.0_RealK, & ! N2O - 0.0_RealK, & ! CO - 0.0_RealK, & ! CH4 - 175.0E-09_RealK, & ! O2 ( threshold for O2 -> O(3P) + O(1D) ) - 0.0_RealK, & ! NO - 0.0_RealK, & ! SO2 - 0.0_RealK, & ! NO2 - 0.0_RealK, & ! NH3 - 0.0_RealK, & ! HNO3 - 79.8E-09_RealK, & ! N2 ( threshold for N2 -> N2+ ) - (0.0_RealK, i=ip_cfc11, npd_gases) /) + 175.0E-09_RealK, & ! 1: H2O ( threshold for H2O -> O(1D) + H2 ) + 167.1E-09_RealK, & ! 2: CO2 ( threshold for CO2 -> CO + O(1D) ) + 0.0_RealK, & ! 3: O3 + 0.0_RealK, & ! 4: N2O + 0.0_RealK, & ! 5: CO + 0.0_RealK, & ! 6: CH4 + 175.0E-09_RealK, & ! 7: O2 ( threshold for O2 -> O(3P) + O(1D) ) + 0.0_RealK, & ! 8: NO + 0.0_RealK, & ! 9: SO2 + 0.0_RealK, & ! 10: NO2 + 0.0_RealK, & ! 11: NH3 + 0.0_RealK, & ! 12: HNO3 + 79.8E-09_RealK, & ! 13: N2 ( threshold for N2 -> N2+ ) + 0.0_RealK, & ! 14: CFC11 + 0.0_RealK, & ! 15: CFC12 + 0.0_RealK, & ! 16: CFC113 + 0.0_RealK, & ! 17: HCFC22 + 0.0_RealK, & ! 18: HFC125 + 0.0_RealK, & ! 19: HFC134a + 0.0_RealK, & ! 20: CFC114 + 0.0_RealK, & ! 21: TiO + 0.0_RealK, & ! 22: VO + 0.0_RealK, & ! 23: H2 + 0.0_RealK, & ! 24: He + 0.0_RealK, & ! 25: OCS + 0.0_RealK, & ! 26: Na + 0.0_RealK, & ! 27: K + 0.0_RealK, & ! 28: FeH + 0.0_RealK, & ! 29: CrH + 0.0_RealK, & ! 30: Li + 0.0_RealK, & ! 31: Rb + 0.0_RealK, & ! 32: Cs + 0.0_RealK, & ! 33: PH3 + 0.0_RealK, & ! 34: C2H2 + 0.0_RealK, & ! 35: HCN + 0.0_RealK, & ! 36: H2S + 0.0_RealK, & ! 37: Ar + 0.0_RealK, & ! 38: Dry air + 0.0_RealK, & ! 39: O + 0.0_RealK, & ! 40: N + 0.0_RealK, & ! 41: NO3 + 0.0_RealK, & ! 42: N2O5 + 0.0_RealK, & ! 43: HONO + 0.0_RealK, & ! 44: HO2NO2 + 0.0_RealK, & ! 45: H2O2 + 0.0_RealK, & ! 46: C2H6 + 0.0_RealK, & ! 47: CH3 + 0.0_RealK, & ! 48: H2CO + 0.0_RealK, & ! 49: HO2 + 0.0_RealK, & ! 50: HDO + 0.0_RealK, & ! 51: HCl + 0.0_RealK, & ! 52: HF + 0.0_RealK, & ! 53: cis-OSSO + 0.0_RealK, & ! 54: trans-OSSO + 0.0_RealK, & ! 55: OSO-S + 0.0_RealK, & ! 56: CH3CHO + 0.0_RealK, & ! 57: CH3OOH + 0.0_RealK, & ! 58: CH3COCH3 + 0.0_RealK, & ! 59: CH3COCHO + 0.0_RealK, & ! 60: CHOCHO + 0.0_RealK, & ! 61: C2H5CHO + 0.0_RealK, & ! 62: HOCH2CHO + 0.0_RealK, & ! 63: C2H5COCH3 + 0.0_RealK, & ! 64: MVK + 0.0_RealK, & ! 65: MACR + 0.0_RealK, & ! 66: PAN + 0.0_RealK, & ! 67: CH3ONO2 + 0.0_RealK, & ! 68: C2H3 + 0.0_RealK, & ! 69: C2H4 + 0.0_RealK, & ! 70: OH + 0.0_RealK, & ! 71: HCO + 0.0_RealK, & ! 72: N2O4 + 0.0_RealK, & ! 73: C2N2 + 0.0_RealK, & ! 74: N2H4 + 0.0_RealK, & ! 75: N2H3 + 0.0_RealK, & ! 76: Si + 0.0_RealK, & ! 77: SiO + 0.0_RealK, & ! 78: SiO2 + 0.0_RealK, & ! 79: Mg + 0.0_RealK, & ! 80: Mg2 + 0.0_RealK, & ! 81: MgO + 0.0_RealK, & ! 82: TiO2 + 0.0_RealK, & ! 83: Fe + 0.0_RealK, & ! 84: FeO + 0.0_RealK, & ! 85: Ca + 0.0_RealK, & ! 86: CaO + 0.0_RealK, & ! 87: AlO + 0.0_RealK, & ! 88: Na2 + 0.0_RealK, & ! 89: NaO + 0.0_RealK, & ! 90: NaOH + 0.0_RealK, & ! 91: KOH + 0.0_RealK, & ! 92: H- + 0.0_RealK, & ! 93: PS + 0.0_RealK, & ! 94: PO + 0.0_RealK, & ! 95: PN + 0.0_RealK, & ! 96: CH3SH + 0.0_RealK, & ! 97: CH3S + 0.0_RealK, & ! 98: C2H6S + 0.0_RealK, & ! 99: C2H6S2 + 0.0_RealK, & ! 100: C3H4 + 0.0_RealK, & ! 101: C4H3 + 0.0_RealK, & ! 102: SiH4 + 0.0_RealK, & ! 103: S2 + 0.0_RealK, & ! 104: SF6 + 0.0_RealK, & ! 105: CS2 + 0.0_RealK, & ! 106: S8 + 0.0_RealK, & ! 107: CN + 0.0_RealK, & ! 108: CH3Cl + 0.0_RealK, & ! 109: CH3F + 0.0_RealK /) ! 110: CH3Br ! Maximum number of photolysis products for a given absorber INTEGER, PARAMETER :: npd_products = 9 INTEGER, PARAMETER :: npd_pathway = npd_gases * (npd_products + 1) CHARACTER(LEN=56), PARAMETER :: blank = "" + ! Description of photolysis products -CHARACTER(LEN=56), PARAMETER :: photol_products(npd_products, npd_gases) & - = RESHAPE([CHARACTER(LEN=56) :: & +! 1: H2O +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_h2o(npd_products) & + = [CHARACTER(LEN=56) :: & "H2O -> O(3P) + H2 ", & "H2O -> OH(X2Pi) + H ", & "H2O -> O(1D) + H2 ", & "H2O -> OH(A2Sigma+) + H ", & "H2O -> O(3P) + H + H ", & - (blank, i=1, npd_products-5), & ! H2O + (blank, i=1, npd_products-5)] + +REAL (RealK), PARAMETER :: threshold_wavelength_h2o(npd_products) & + = [REAL(RealK) :: & + 246.0E-09_RealK, & ! H2O -> O(3P) + H2 + 242.0E-09_RealK, & ! H2O -> OH(X2Pi) + H + 175.0E-09_RealK, & ! H2O -> O(1D) + H2 + 134.0E-09_RealK, & ! H2O -> OH(A2Sigma+) + H + 129.0E-09_RealK, & ! H2O -> O(3P) + H + H + (0.0_RealK, i=1, npd_products-5)] + +! 2: CO2 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_co2(npd_products) & + = [CHARACTER(LEN=56) :: & "CO2 -> CO + O(3P) ", & "CO2 -> CO + O(1D) ", & "CO2 -> CO + O(1S) ", & @@ -549,7 +925,24 @@ MODULE gas_list_pcf "CO2 -> CO + O+ ", & "CO2 -> CO+ + O(3P) ", & "CO2 -> O2 + C+ ", & - (blank, i=1, npd_products-8), & ! CO2 + (blank, i=1, npd_products-8)] + +REAL (RealK), PARAMETER :: threshold_wavelength_co2(npd_products) & + = [REAL(RealK) :: & + 227.5E-09_RealK, & ! CO2 -> CO + O(3P) + 167.1E-09_RealK, & ! CO2 -> CO + O(1D) + 128.6E-09_RealK, & ! CO2 -> CO + O(1S) + 108.2E-09_RealK, & ! CO2 -> CO(a3Pi) + O(3P) + 89.922E-09_RealK, & ! CO2 -> CO2+ + 65.026E-09_RealK, & ! CO2 -> CO + O+ + 63.693E-09_RealK, & ! CO2 -> CO+ + O + 54.655E-09_RealK, & ! CO2 -> O2 + C+ + (0.0_RealK, i=1, npd_products-8)] ! Heubner 92 + +! 3: O3 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_o3(npd_products) & + = [CHARACTER(LEN=56) :: & "O3 -> O(3P) + O2(X3Sigmag-) ", & "O3 -> O(3P) + O2(a1Deltag) ", & "O3 -> O(3P) + O2(b1Sigmag+) ", & @@ -558,19 +951,72 @@ MODULE gas_list_pcf "O3 -> O(1D) + O2(b1Sigmag+) ", & "O3 -> 3 O(3P) ", & "O3 -> O(1S) + O2(a1Deltag) ", & - (blank, i=1, npd_products-8), & ! O3 + (blank, i=1, npd_products-8)] + +REAL (RealK), PARAMETER :: threshold_wavelength_o3(npd_products) & + = [REAL(RealK) :: & + 1180.0E-09_RealK, & ! O3 -> O(3P) + O2(X3Sigmag-) + 612.0E-09_RealK, & ! O3 -> O(3P) + O2(a1Deltag) + 463.0E-09_RealK, & ! O3 -> O(3P) + O2(b1Sigmag+) + 411.0E-09_RealK, & ! O3 -> O(1D) + O2(X3Sigmag-) + 310.0E-09_RealK, & ! O3 -> O(1D) + O2(a1Deltag) + 267.0E-09_RealK, & ! O3 -> O(1D) + O2(b1Sigmag+) + 201.0E-09_RealK, & ! O3 -> 3 O(3P) + 196.0E-09_RealK, & ! O3 -> O(1S) + O2(a1Deltag) + (0.0_RealK, i=1, npd_products-8)] + +! 4: N2O +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_n2o(npd_products) & + = [CHARACTER(LEN=56) :: & "N2O -> N2 + O(1D) ", & "N2O -> N2 + O(3P) ", & "N2O -> N(4S) + NO(2Pi) ", & "N2O -> N2 + O(1S) ", & - (blank, i=1, npd_products-4), & ! N2O + (blank, i=1, npd_products-4)] + +REAL (RealK), PARAMETER :: threshold_wavelength_n2o(npd_products) & + = [REAL(RealK) :: & + 336.0E-09_RealK, & ! N2O -> N2 + O(1D) + 713.0E-09_RealK, & ! N2O -> N2 + O(3P) + 248.0E-09_RealK, & ! N2O -> N(4S) + NO(2Pi) + 210.0E-09_RealK, & ! N2O -> N2 + O(1S) + (0.0_RealK, i=1, npd_products-4)] + +! 5: CO +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_co(npd_products) & + = [CHARACTER(LEN=56) :: & "CO -> C + O(3P) ", & - (blank, i=1, npd_products-1), & ! CO + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_co(npd_products) & + = [REAL(RealK) :: & + 111.78E-09_RealK, & ! CO -> CO + O(3P) + (0.0_RealK, i=1, npd_products-1)] ! Huebner 92 + +! 6: CH4 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_ch4(npd_products) & + = [CHARACTER(LEN=56) :: & "CH4 -> CH3 + H ", & "CH4 -> CH2(1) + H2 ", & "CH4 -> CH2(3) + H + H ", & "CH4 -> CH + H2 + H ", & - (blank, i=1, npd_products-4), & ! CH4 + (blank, i=1, npd_products-4)] + +REAL (RealK), PARAMETER :: threshold_wavelength_ch4(npd_products) & + = [REAL(RealK) :: & + 277.0E-09_RealK, & ! CH4 -> CH3 + H + 237.3E-09_RealK, & ! CH4 -> CH2(1) + H2 + 132.2E-09_RealK, & ! CH4 -> CH2(3) + H + H + 137.0E-09_RealK, & ! CH4 -> CH + H2 + H + (0.0_RealK, i=1, npd_products-4)] ! Huebner 92 + +! 7: O2 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_o2(npd_products) & + = [CHARACTER(LEN=56) :: & "O2 -> O(3P) + O(3P) ", & "O2 -> O(3P) + O(1D) ", & "O2 -> O(1D) + O(1D) ", & @@ -578,58 +1024,163 @@ MODULE gas_list_pcf "O2 -> O(1D) + O(1S) ", & "O2 -> O2+ ", & "O2 -> O+ + O ", & - (blank, i=1, npd_products-7), & ! O2 + (blank, i=1, npd_products-7)] + +REAL (RealK), PARAMETER :: threshold_wavelength_o2(npd_products) & + = [REAL(RealK) :: & + 242.3E-09_RealK, & ! O2 -> O(3P) + O(3P) + 175.0E-09_RealK, & ! O2 -> O(3P) + O(1D) + 137.0E-09_RealK, & ! O2 -> O(1D) + O(1D) + 132.0E-09_RealK, & ! O2 -> O(3P) + O(1S) + 110.0E-09_RealK, & ! O2 -> O(1D) + O(1S) + 102.78E-09_RealK, & ! O2 -> O2+ + 66.2E-09_RealK, & ! O2 -> O+ + O + (0.0_RealK, i=1, npd_products-7)] + +! 8: NO +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_no(npd_products) & + = [CHARACTER(LEN=56) :: & "NO -> O(3P) + N(4S) ", & - (blank, i=1, npd_products-1), & ! NO + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_no(npd_products) & + = [REAL(RealK) :: & + 191.0E-09_RealK, & ! NO -> O(3P) + N(4S) + (0.0_RealK, i=1, npd_products-1)] ! Huebner 92 + +! 9: SO2 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_so2(npd_products) & + = [CHARACTER(LEN=56) :: & "SO2 -> SO + O(3P) ", & - (blank, i=1, npd_products-1), & ! SO2 + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_so2(npd_products) & + = [REAL(RealK) :: & + 218.7E-09_RealK, & ! SO2 -> SO + O(3P) + (0.0_RealK, i=1, npd_products-1)] ! Becker 95 + +! 10: NO2 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_no2(npd_products) & + = [CHARACTER(LEN=56) :: & "NO2 -> NO + O(3P) ", & "NO2 -> NO + O(1D) ", & - (blank, i=1, npd_products-2), & ! NO2 + (blank, i=1, npd_products-2)] + +REAL (RealK), PARAMETER :: threshold_wavelength_no2(npd_products) & + = [REAL(RealK) :: & + 398.0E-09_RealK, & ! NO2 -> NO + O(3P) + 244.0E-09_RealK, & ! NO2 -> NO + O(1D) + (0.0_RealK, i=1, npd_products-2)] + +! 11: NH3 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_nh3(npd_products) & + = [CHARACTER(LEN=56) :: & "NH3 -> NH2 + H ", & - (blank, i=1, npd_products-1), & ! NH3 + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_nh3(npd_products) & + = [REAL(RealK) :: & + 279.8E-09_RealK, & ! NH3 -> NH2 + H + (0.0_RealK, i=1, npd_products-1)] ! Huebner 92 + +! 12: HNO3 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_hno3(npd_products) & + = [CHARACTER(LEN=56) :: & "HNO3 -> OH + NO2 ", & "HNO3 -> HONO + O(3P) ", & "HNO3 -> H + NO3 ", & "HNO3 -> OH + NO2*(12B2) ", & "HNO3 -> HONO + O(1D) ", & "HNO3 -> HONO (a3A)+ O(3P) ", & - (blank, i=1, npd_products-6), & ! HNO3 + (blank, i=1, npd_products-6)] + +REAL (RealK), PARAMETER :: threshold_wavelength_hno3(npd_products) & + = [REAL(RealK) :: & + 604.0E-09_RealK, & ! HNO3 -> OH + NO2 + 393.0E-09_RealK, & ! HNO3 -> HONO + O(3P) + 278.0E-09_RealK, & ! HNO3 -> H + NO3 + 381.0E-09_RealK, & ! HNO3 -> OH + NO2*(12B2) + 242.0E-09_RealK, & ! HNO3 -> HONO + O(1D) + 216.0E-09_RealK, & ! HNO3 -> HONO (a3A)+ O(3P) + (0.0_RealK, i=1, npd_products-6)] ! IUPAC PNOx2 + +! 13: N2 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_n2(npd_products) & + = [CHARACTER(LEN=56) :: & "N2 -> N + N ", & "N2 -> N2+ ", & "N2 -> N+ + N ", & - (blank, i=1, npd_products-3), & ! N2 - (blank, i=1, npd_products), & ! CFC11 - (blank, i=1, npd_products), & ! CFC12 - (blank, i=1, npd_products), & ! CFC113 - (blank, i=1, npd_products), & ! HCFC22 - (blank, i=1, npd_products), & ! HFC125 - (blank, i=1, npd_products), & ! HFC134a - (blank, i=1, npd_products), & ! CFC114 - (blank, i=1, npd_products), & ! TiO - (blank, i=1, npd_products), & ! VO + (blank, i=1, npd_products-3)] + +REAL (RealK), PARAMETER :: threshold_wavelength_n2(npd_products) & + = [REAL(RealK) :: & + 98.6E-09_RealK, & ! N2 -> N + N + 79.8E-09_RealK, & ! N2 -> N2+ + 51.0E-09_RealK, & ! N2 -> N+ + N + (0.0_RealK, i=1, npd_products-3)] + +! 23: H2 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_h2(npd_products) & + = [CHARACTER(LEN=56) :: & "H2 -> H + H ", & - (blank, i=1, npd_products-1), & ! H2 - (blank, i=1, npd_products), & ! He + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_h2(npd_products) & + = [REAL(RealK) :: & + 276.885E-09_RealK, & ! H2 -> H + H + (0.0_RealK, i=1, npd_products-1)] ! Huebner 92 + +! 25: OCS +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_ocs(npd_products) & + = [CHARACTER(LEN=56) :: & "OCS -> CO + S(3P) ", & "OCS -> CO + S(1D) ", & "OCS -> CO + S(1S) ", & - (blank, i=1, npd_products-3), & ! OCS - (blank, i=1, npd_products), & ! Na - (blank, i=1, npd_products), & ! K - (blank, i=1, npd_products), & ! FeH - (blank, i=1, npd_products), & ! CrH - (blank, i=1, npd_products), & ! Li - (blank, i=1, npd_products), & ! Rb - (blank, i=1, npd_products), & ! Cs - (blank, i=1, npd_products), & ! PH3 + (blank, i=1, npd_products-3)] + +REAL (RealK), PARAMETER :: threshold_wavelength_ocs(npd_products) & + = [REAL(RealK) :: & + 388.0E-09_RealK, & ! OCS -> CO + S(3P) + 285.0E-09_RealK, & ! OCS -> CO + S(1D) + 209.0E-09_RealK, & ! OCS -> CO + S(1S) + (0.0_RealK, i=1, npd_products-3)] + +! 34: C2H2 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_c2h2(npd_products) & + = [CHARACTER(LEN=56) :: & "C2H2 -> C2H + H ", & - (blank, i=1, npd_products-1), & ! C2H2 + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_c2h2(npd_products) & + = [REAL(RealK) :: & + 230.6E-09_RealK, & ! C2H2 -> C2H + H + (0.0_RealK, i=1, npd_products-1)] ! Huebner 92 + +! 35: HCN +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_hcn(npd_products) & + = [CHARACTER(LEN=56) :: & "HCN -> CN + H ", & - (blank, i=1, npd_products-1), & ! HCN - (blank, i=1, npd_products), & ! H2S - (blank, i=1, npd_products), & ! Ar - (blank, i=1, npd_products), & ! Dry air + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_hcn(npd_products) & + = [REAL(RealK) :: & + 195.0E-09_RealK, & ! HCN -> CN + H + (0.0_RealK, i=1, npd_products-1)] ! Huebner 92 + +! 39: O +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_o(npd_products) & + = [CHARACTER(LEN=56) :: & "O -> O+(4S) ", & "O -> O+(2D) ", & "O -> O+(2P) ", & @@ -637,19 +1188,79 @@ MODULE gas_list_pcf "O -> O+(2Pe) ", & "O -> O++ ", & "O -> O+++ ", & - (blank, i=1, npd_products-7), & ! O + (blank, i=1, npd_products-7)] + +REAL (RealK), PARAMETER :: threshold_wavelength_o(npd_products) & + = [REAL(RealK) :: & + 91.25E-09_RealK, & ! O -> O+(4S) + 73.18E-09_RealK, & ! O -> O+(2D) + 66.58E-09_RealK, & ! O -> O+(2P) + 43.50E-09_RealK, & ! O -> O+(4Pe) + 31.00E-09_RealK, & ! O -> O+(2Pe) + 24.80E-09_RealK, & ! O -> O++ + 12.179E-09_RealK, & ! O -> O+++ + (0.0_RealK, i=1, npd_products-7)] + +! 40: N +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_n(npd_products) & + = [CHARACTER(LEN=56) :: & "N -> N+ ", & "N -> N++ ", & - (blank, i=1, npd_products-2), & ! N + (blank, i=1, npd_products-2)] + +REAL (RealK), PARAMETER :: threshold_wavelength_n(npd_products) & + = [REAL(RealK) :: & + 85.92E-09_RealK, & ! N -> N+ + 28.00E-09_RealK, & ! N -> N++ + (0.0_RealK, i=1, npd_products-2)] + +! 41: NO3 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_no3(npd_products) & + = [CHARACTER(LEN=56) :: & "NO3 -> NO + O2 ", & "NO3 -> NO2 + O(3P) ", & - (blank, i=1, npd_products-2) , & ! NO3 + (blank, i=1, npd_products-2)] + +REAL (RealK), PARAMETER :: threshold_wavelength_no3(npd_products) & + = [REAL(RealK) :: & + 7320.0E-09_RealK, & ! NO3 -> NO + O2 + 574.0E-09_RealK, & ! NO3 -> NO2 + O(3P) + (0.0_RealK, i=1, npd_products-2)] ! JPL 19-5 + +! 42: N2O5 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_n2o5(npd_products) & + = [CHARACTER(LEN=56) :: & "N2O5 -> NO3 + NO2 ", & "N2O5 -> NO3 + NO + O(3P) ", & - (blank, i=1, npd_products-2) , & ! N2O5 + (blank, i=1, npd_products-2)] + +REAL (RealK), PARAMETER :: threshold_wavelength_n2o5(npd_products) & + = [REAL(RealK) :: & + 1255.0E-09_RealK, & ! N2O5 -> NO3 + NO2 + 298.0E-09_RealK, & ! N2O5 -> NO3 + NO + O(3P) + (0.0_RealK, i=1, npd_products-2)] ! JPL 19-5 + +! 43: HONO +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_hono(npd_products) & + = [CHARACTER(LEN=56) :: & "HONO -> OH + NO ", & "HONO -> H + NO2 ", & - (blank, i=1, npd_products-2) , & ! HONO + (blank, i=1, npd_products-2)] + +REAL (RealK), PARAMETER :: threshold_wavelength_hono(npd_products) & + = [REAL(RealK) :: & + 579.0E-09_RealK, & ! HONO -> OH + NO + 362.0E-09_RealK, & ! HONO -> H + NO2 + (0.0_RealK, i=1, npd_products-2)] ! JPL 19-5 + +! 44: HO2NO2 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_ho2no2(npd_products) & + = [CHARACTER(LEN=56) :: & "HO2NO2 -> HO2 + NO2 ", & "HO2NO2 -> OH + NO3 ", & "HO2NO2 -> O(3P) + HNO3 ", & @@ -659,78 +1270,283 @@ MODULE gas_list_pcf "HO2NO2 -> H + O(3P) + NO3 ", & "HO2NO2 -> HONO + O2(1Sigma) ", & "HO2NO2 -> HONO + O2(1Lambda) ", & - (blank, i=1, npd_products-9) , & ! HO2NO2 + (blank, i=1, npd_products-9)] + +REAL (RealK), PARAMETER :: threshold_wavelength_ho2no2(npd_products) & + = [REAL(RealK) :: & + 1207.0E-09_RealK, & ! HO2NO2 -> HO2 + NO2 + 726.0E-09_RealK, & ! HO2NO2 -> OH + NO3 + 713.0E-09_RealK, & ! HO2NO2 -> O(3P) + HNO3 + 393.0E-09_RealK, & ! HO2NO2 -> H + NO2 + O2 + 339.0E-09_RealK, & ! HO2NO2 -> HO2 + NO + O(3P) + 321.0E-09_RealK, & ! HO2NO2 -> OH + NO2 + O(3P) + 201.0E-09_RealK, & ! HO2NO2 -> H + O(3P) + NO3 + 911.0E-09_RealK, & ! HO2NO2 -> HONO + O2(1Sigma) + 1744.0E-09_RealK, & ! HO2NO2 -> HONO + O2(1Lambda) + (0.0_RealK, i=1, npd_products-9)] ! JPL 19-5 + +! 45: H2O2 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_h2o2(npd_products) & + = [CHARACTER(LEN=56) :: & "H2O2 -> OH + OH ", & "H2O2 -> H2O + O(1D) ", & "H2O2 -> H + HO2 ", & - (blank, i=1, npd_products-3) , & ! H2O2 + (blank, i=1, npd_products-3)] + +REAL (RealK), PARAMETER :: threshold_wavelength_h2o2(npd_products) & + = [REAL(RealK) :: & + 557.0E-09_RealK, & ! H2O2 -> OH + OH + 359.0E-09_RealK, & ! H2O2 -> H2O + O(1D) + 324.0E-09_RealK, & ! H2O2 -> H + HO2 + (0.0_RealK, i=1, npd_products-3)] ! JPL 19-5 + +! 46: C2H6 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_c2h6(npd_products) & + = [CHARACTER(LEN=56) :: & "C2H6 -> C2H4 + H2 ", & "C2H6 -> C2H4 + H + H ", & "C2H6 -> C2H2 + H2 + H2 ", & "C2H6 -> CH4 + CH2(1) ", & "C2H6 -> CH3 + CH3 ", & - (blank, i=1, npd_products-5) , & ! C2H6 - "CH3 -> CH2(1) + H ", & ! - (blank, i=1, npd_products-1) , & ! CH3 + (blank, i=1, npd_products-5)] + +REAL (RealK), PARAMETER :: threshold_wavelength_c2h6(npd_products) & + = [REAL(RealK) :: & + 874.3E-09_RealK, & ! C2H6 -> C2H4 + H2 : Huebner 92 + 290.0E-09_RealK, & ! C2H6 -> C2H4 + H + H :Huebner 92/Lias 70 + 428.7E-09_RealK, & ! C2H6 -> C2H2 + H2 + H2 :Chang 2020 + 272.6E-09_RealK, & ! C2H6 -> CH4 + CH2(1) :Huebner 92 + 322.0E-09_RealK, & ! C2H6 -> CH3 + CH3 :Huebner 92 + (0.0_RealK, i=1, npd_products-5)] + +! 47: CH3 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_ch3(npd_products) & + = [CHARACTER(LEN=56) :: & + "CH3 -> CH2(1) + H ", & + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_ch3(npd_products) & + = [REAL(RealK) :: & + 216.0E-09_RealK, & ! CH3 -> CH2(1) + H + (0.0_RealK, i=1, npd_products-1)] ! Venot 2012-highest non zero qy + +! 48: H2CO +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_h2co(npd_products) & + = [CHARACTER(LEN=56) :: & "H2CO -> H + HCO ", & "H2CO -> H2 + CO ", & "H2CO -> H + H + CO ", & - (blank, i=1, npd_products-3) , & ! H2CO + (blank, i=1, npd_products-3)] + +REAL (RealK), PARAMETER :: threshold_wavelength_h2co(npd_products) & + = [REAL(RealK) :: & + 330.0E-09_RealK, & ! H2CO -> H + HCO + 361.0E-09_RealK, & ! H2CO -> H2 + CO + 283.0E-09_RealK, & ! H2CO -> H + H + CO + (0.0_RealK, i=1, npd_products-3)] ! JPL 19-5 + +! 49: HO2 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_ho2(npd_products) & + = [CHARACTER(LEN=56) :: & "HO2 -> OH + O(3P) ", & "HO2 -> OH + O(1D) ", & - (blank, i=1, npd_products-2) , & ! HO2 - (blank, i=1, npd_products) , & ! HDO - (blank, i=1, npd_products) , & ! HCl - (blank, i=1, npd_products) , & ! HF - (blank, i=1, npd_products) , & ! cis-OSSO - (blank, i=1, npd_products) , & ! trans-OSSO - (blank, i=1, npd_products) , & ! OSO-S + (blank, i=1, npd_products-2)] + +REAL (RealK), PARAMETER :: threshold_wavelength_ho2(npd_products) & + = [REAL(RealK) :: & + 438.0E-09_RealK, & ! HO2 -> OH + O(3P) + 259.0E-09_RealK, & ! HO2 -> OH + O(1D) + (0.0_RealK, i=1, npd_products-2)] ! JPL 19-5 + +! 56: CH3CHO +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_ch3cho(npd_products) & + = [CHARACTER(LEN=56) :: & "CH3CHO -> CH3 + HCO ", & "CH3CHO -> CH4 + CO ", & "CH3CHO -> CH3CO + H ", & - (blank, i=1, npd_products-3) , & ! CH3CHO + (blank, i=1, npd_products-3)] + +REAL (RealK), PARAMETER :: threshold_wavelength_ch3cho(npd_products) & + = [REAL(RealK) :: & + 335.0E-09_RealK, & ! CH3CHO -> CH3 + HCO + 1.0_RealK, & ! CH3CHO -> CH4 + CO + 320.0E-09_RealK, & ! CH3CHO -> CH3CO + H + (0.0_RealK, i=1, npd_products-3)] ! JPL 19-5 + +! 57: CH3OOH +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_ch3ooh(npd_products) & + = [CHARACTER(LEN=56) :: & "CH3OOH -> CH3O + OH ", & "CH3OOH -> CH3 + HO2 ", & "CH3OOH -> CH3O2 + H ", & "CH3OOH -> CH3OH + O(3P) ", & - (blank, i=1, npd_products-4) , & ! CH3OOH + (blank, i=1, npd_products-4)] + +REAL (RealK), PARAMETER :: threshold_wavelength_ch3ooh(npd_products) & + = [REAL(RealK) :: & + 645.0E-09_RealK, & ! CH3OOH -> CH3O + OH + 410.0E-09_RealK, & ! CH3OOH -> CH3 + HO2 + 334.0E-09_RealK, & ! CH3OOH -> CH3O2 + H + 670.0E-09_RealK, & ! CH3OOH -> CH3OH + O(3P) + (0.0_RealK, i=1, npd_products-4)] ! JPL 19-5 + +! 58: CH3COCH3 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_ch3coch3(npd_products) & + = [CHARACTER(LEN=56) :: & "CH3COCH3 -> CH3CO + CH3 ", & "CH3COCH3 -> 2 CH3 + CO ", & - (blank, i=1, npd_products-2) , & ! CH3COCH3 + (blank, i=1, npd_products-2)] + +REAL (RealK), PARAMETER :: threshold_wavelength_ch3coch3(npd_products) & + = [REAL(RealK) :: & + 338.0E-09_RealK, & ! CH3COCH3 -> CH3CO + CH3 + 299.0E-09_RealK, & ! CH3COCH3 -> 2 CH3 + CO + (0.0_RealK, i=1, npd_products-2)] ! JPL 19-5 + +! 59: CH3COCHO +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_ch3cocho(npd_products) & + = [CHARACTER(LEN=56) :: & "CH3COCHO -> CH3CO + HCO ", & "CH3COCHO -> CH4 + 2 CO ", & "CH3COCHO -> CH3CHO + CO ", & - (blank, i=1, npd_products-3) , & ! CH3COCHO + (blank, i=1, npd_products-3)] + +REAL (RealK), PARAMETER :: threshold_wavelength_ch3cocho(npd_products) & + = [REAL(RealK) :: & + 422.0E-09_RealK, & ! CH3COCHO -> CH3CO + HCO + 1.0_RealK, & ! CH3COCHO -> CH4 + 2 CO + 1.0_RealK, & ! CH3COCHO -> CH3CHO + CO + (0.0_RealK, i=1, npd_products-3)] ! JPL 19-5 + +! 60: CHOCHO +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_chocho(npd_products) & + = [CHARACTER(LEN=56) :: & "CHOCHO -> HCO + HCO ", & "CHOCHO -> H2 + 2 CO ", & "CHOCHO -> HCHO + CO ", & "CHOCHO -> H + CO + HCO ", & - (blank, i=1, npd_products-4) , & ! CHOCHO + (blank, i=1, npd_products-4)] + +REAL (RealK), PARAMETER :: threshold_wavelength_chocho(npd_products) & + = [REAL(RealK) :: & + 399.0E-09_RealK, & ! CHOCHO -> HCO + HCO + 1.0_RealK, & ! CHOCHO -> H2 + 2 CO + 1.0_RealK, & ! CHOCHO -> HCHO + CO + 329.0E-09_RealK, & ! CHOCHO -> H + CO + HCO + (0.0_RealK, i=1, npd_products-4)] ! JPL 19-5 + +! 61: C2H5CHO +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_c2h5cho(npd_products) & + = [CHARACTER(LEN=56) :: & "C2H5CHO -> C2H5 + HCO ", & "C2H5CHO -> C2H6 + CO ", & "C2H5CHO -> C2H4 + HCHO ", & "C2H5CHO -> CH3 + CH2CHO ", & - (blank, i=1, npd_products-4) , & ! C2H5CHO + (blank, i=1, npd_products-4)] + +REAL (RealK), PARAMETER :: threshold_wavelength_c2h5cho(npd_products) & + = [REAL(RealK) :: & + 341.0E-09_RealK, & ! C2H5CHO -> C2H5 + HCO + 1.0_RealK, & ! C2H5CHO -> C2H6 + CO + 926.0E-09_RealK, & ! C2H5CHO -> C2H4 + HCHO + 349.0E-09_RealK, & ! C2H5CHO -> CH3 + CH2CHO + (0.0_RealK, i=1, npd_products-4)] ! JPL 19-5 + +! 62: HOCH2CHO +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_hoch2cho(npd_products) & + = [CHARACTER(LEN=56) :: & "HOCH2CHO -> CH2OH + HCO ", & "HOCH2CHO -> CH3OH + CO ", & "HOCH2CHO -> OH + CH2CHO ", & "HOCH2CHO -> HOCH2CO + H ", & - (blank, i=1, npd_products-4) , & ! HOCH2CHO + (blank, i=1, npd_products-4)] + +REAL (RealK), PARAMETER :: threshold_wavelength_hoch2cho(npd_products) & + = [REAL(RealK) :: & + 347.0E-09_RealK, & ! HOCH2CHO -> CH2OH + HCO + 1910.0E-09_RealK, & ! HOCH2CHO -> CH3OH + CO + 328.0E-09_RealK, & ! HOCH2CHO -> OH + CH2CHO + 314.0E-09_RealK, & ! HOCH2CHO -> HOCH2CO + H + (0.0_RealK, i=1, npd_products-4)] + +! 63: C2H5COCH3 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_c2h5coch3(npd_products) & + = [CHARACTER(LEN=56) :: & "C2H5COCH3 -> CH3CO + C2H5 ", & "C2H5COCH3 -> C2H5CO + CH3 ", & "C2H5COCH3 -> C2H5 + CO + CH3 ", & - (blank, i=1, npd_products-3) , & ! C2H5COCH3 + (blank, i=1, npd_products-3)] + +REAL (RealK), PARAMETER :: threshold_wavelength_c2h5coch3(npd_products) & + = [REAL(RealK) :: & + 342.0E-09_RealK, & ! C2H5COCH3 -> CH3CO + C2H5 + 339.0E-09_RealK, & ! C2H5COCH3 -> C2H5CO + CH3 + 303.0E-09_RealK, & ! C2H5COCH3 -> C2H5 + CO + CH3 + (0.0_RealK, i=1, npd_products-3)] ! Zborowska 21 + +! 64: CH3C(O)CH=CH2 (MVK) +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_mvk(npd_products) & + = [CHARACTER(LEN=56) :: & "CH3C(O)CH=CH2 -> CH3-CH=CH2 + CO ", & "CH3C(O)CH=CH2 -> CH=CH2 + CH3C(O) ", & "CH3C(O)CH=CH2 -> CH=CH2C(O) + CH3 ", & - (blank, i=1, npd_products-3) , & ! CH3C(O)CH=CH2 (MVK) + (blank, i=1, npd_products-3)] + +REAL (RealK), PARAMETER :: threshold_wavelength_mvk(npd_products) & + = [REAL(RealK) :: & + 1.0_RealK, & ! CH3C(O)CH=CH2 -> CH3-CH=CH2 + CO + 1.0_RealK, & ! CH3C(O)CH=CH2 -> CH=CH2 + CH3C(O) + 1.0_RealK, & ! CH3C(O)CH=CH2 -> CH=CH2C(O) + CH3 + (0.0_RealK, i=1, npd_products-3)] ! JPL 19-5 + +! 65: CH2=C(CH3)CHO (MACR) +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_macr(npd_products) & + = [CHARACTER(LEN=56) :: & "CH2=C(CH3)CHO -> CH2=CCH3 + CHO ", & "CH2=C(CH3)CHO -> C3H6 + CO ", & "CH2=C(CH3)CHO -> H + CH2=C(CH3)CO ", & - (blank, i=1, npd_products-3) , & ! CH2=C(CH3)CHO (MACR) + (blank, i=1, npd_products-3)] + +REAL (RealK), PARAMETER :: threshold_wavelength_macr(npd_products) & + = [REAL(RealK) :: & + 1.0_RealK, & ! CH2=C(CH3)CHO -> CH2=CCH3 + CHO + 1.0_RealK, & ! CH2=C(CH3)CHO -> C3H6 + CO + 1.0_RealK, & ! CH2=C(CH3)CHO -> H + CH2=C(CH3)CO + (0.0_RealK, i=1, npd_products-3)] ! JPL 19-5 + +! 66: CH3C(O)OONO2 (PAN) +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_pan(npd_products) & + = [CHARACTER(LEN=56) :: & "CH3C(O)OONO2 -> CH3C(O)OO + NO2 ", & "CH3C(O)OONO2 -> CH3C(O)O + NO3 ", & - (blank, i=1, npd_products-2) , & ! CH3C(O)OONO2 (PAN) + (blank, i=1, npd_products-2)] + +REAL (RealK), PARAMETER :: threshold_wavelength_pan(npd_products) & + = [REAL(RealK) :: & + 1004.0E-09_RealK, & ! CH3C(O)OONO2 -> CH3C(O)OO + NO2 + 963.0E-09_RealK, & ! CH3C(O)OONO2 -> CH3C(O)O + NO3 + (0.0_RealK, i=1, npd_products-2)] ! IUPAC P21 + +! 67: CH3ONO2 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_ch3ono2(npd_products) & + = [CHARACTER(LEN=56) :: & "CH3ONO2 -> CH3O + NO2 ", & "CH3ONO2 -> HCHO + HONO ", & "CH3ONO2 -> HCHO + NO + OH ", & @@ -739,25 +1555,117 @@ MODULE gas_list_pcf "CH3ONO2 -> CH2ONO2 + H ", & "CH3ONO2 -> CH3O + NO + O(3P) ", & "CH3ONO2 -> CH3ONO + O(1D) ", & - (blank, i=1, npd_products-8) , & ! CH3ONO2 + (blank, i=1, npd_products-8)] + +REAL (RealK), PARAMETER :: threshold_wavelength_ch3ono2(npd_products) & + = [REAL(RealK) :: & + 697.0E-09_RealK, & ! CH3ONO2 -> CH3O + NO2 + 1.0_RealK, & ! CH3ONO2 -> HCHO + HONO + 497.0E-09_RealK, & ! CH3ONO2 -> HCHO + NO + OH + 391.0E-09_RealK, & ! CH3ONO2 -> CH3ONO + O(3P) + 344.0E-09_RealK, & ! CH3ONO2 -> CH3 + NO3 + 294.0E-09_RealK, & ! CH3ONO2 -> CH2ONO2 + H + 250.0E-09_RealK, & ! CH3ONO2 -> CH3O + NO + O(3P) + 241.0E-09_RealK, & ! CH3ONO2 -> CH3ONO + O(1D) + (0.0_RealK, i=1, npd_products-8)] ! JPL 19-5 + +! 68: C2H3 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_c2h3(npd_products) & + = [CHARACTER(LEN=56) :: & "C2H3 -> C2H2 + H ", & - (blank, i=1, npd_products-1) , & ! C2H3 - "C2H4 -> C2H2 + H2 ", & + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_c2h3(npd_products) & + = [REAL(RealK) :: & + 237.0E-09_RealK, & ! C2H3 -> C2H2 + H + (0.0_RealK, i=1, npd_products-1)] ! Venot 2012-highest non zero qy + +! 69: C2H4 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_c2h4(npd_products) & + = [CHARACTER(LEN=56) :: & + "C2H4 -> C2H2 + H2 ", & "C2H4 -> C2H2 + H + H ", & - (blank, i=1, npd_products-2) , & ! C2H4 + (blank, i=1, npd_products-2)] + +REAL (RealK), PARAMETER :: threshold_wavelength_c2h4(npd_products) & + = [REAL(RealK) :: & + 720.0E-09_RealK, & ! C2H4 -> C2H2 + H2 + 196.0E-09_RealK, & ! C2H4 -> C2H2 + H + H + (0.0_RealK, i=1, npd_products-2)] ! Huebner 92 + +! 70: OH +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_oh(npd_products) & + = [CHARACTER(LEN=56) :: & "OH -> O(1D) + H ", & - (blank, i=1, npd_products-1) , & ! OH + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_oh(npd_products) & + = [REAL(RealK) :: & + 511.4E-09_RealK, & ! OH -> O(1D) + H + (0.0_RealK, i=1, npd_products-1)] ! Huebner 1992 + +! 71: HCO +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_hco(npd_products) & + = [CHARACTER(LEN=56) :: & "HCO -> H + CO ", & - (blank, i=1, npd_products-1) , & ! HCO + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_hco(npd_products) & + = [REAL(RealK) :: & + 229.0E-09_RealK, & ! HCO -> H + CO + (0.0_RealK, i=1, npd_products-1)] ! Venot 2012-highest non zero xsc + +! 72: N2O4 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_n2o4(npd_products) & + = [CHARACTER(LEN=56) :: & "N2O4 -> NO2 + NO2 ", & - (blank, i=1, npd_products-1) , & ! N2O4 + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_n2o4(npd_products) & + = [REAL(RealK) :: & + 453.0E-09_RealK, & ! N2O4 -> NO2 + NO2 + (0.0_RealK, i=1, npd_products-1)] ! Venot 2012-highest non zero xsc + +! 73: C2N2 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_c2n2(npd_products) & + = [CHARACTER(LEN=56) :: & "C2N2 -> C2 + N2 ", & - (blank, i=1, npd_products-1) , & ! C2N2 + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_c2n2(npd_products) & + = [REAL(RealK) :: & + 224.0E-09_RealK, & ! C2N2 -> C2 + N2 + (0.0_RealK, i=1, npd_products-1)] ! Venot 2012-highest non zero xsc + +! 74: N2H4 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_n2h4(npd_products) & + = [CHARACTER(LEN=56) :: & "N2H4 -> N2H3 + H ", & - (blank, i=1, npd_products-1) , & ! N2H4 + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_n2h4(npd_products) & + = [REAL(RealK) :: & + 290.0E-09_RealK, & ! N2H4 -> N2H3 + H + (0.0_RealK, i=1, npd_products-1)] ! Venot 2012-highest non zero xsc + +! 75: N2O3 +! -------------------------- +CHARACTER(LEN=56), PARAMETER :: photol_products_n2o3(npd_products) & + = [CHARACTER(LEN=56) :: & "N2O3 -> NO2 + NO ", & - (blank, i=1, npd_products-1) & ! N2O3 - ], shape=[npd_products, npd_gases] ) + (blank, i=1, npd_products-1)] + +REAL (RealK), PARAMETER :: threshold_wavelength_n2o3(npd_products) & + = [REAL(RealK) :: & + 398.0E-09_RealK, & ! N2O3 -> NO2 + NO + (0.0_RealK, i=1, npd_products-1)] ! Venot 2012-highest non zero xsc ! Name used by UKCA for photolysis pathway CHARACTER(LEN=56), PARAMETER :: photol_fldname(0:npd_products, npd_gases) & @@ -878,234 +1786,271 @@ MODULE gas_list_pcf (blank, i=0, npd_products), & ! N2O4 (blank, i=0, npd_products), & ! C2N2 (blank, i=0, npd_products), & ! N2H4 - (blank, i=0, npd_products) & ! N2O3 + (blank, i=0, npd_products), & ! N2O3 + (blank, i=0, npd_products), & ! Si + (blank, i=0, npd_products), & ! SiO + (blank, i=0, npd_products), & ! SiO2 + (blank, i=0, npd_products), & ! Mg + (blank, i=0, npd_products), & ! Mg2 + (blank, i=0, npd_products), & ! MgO + (blank, i=0, npd_products), & ! TiO2 + (blank, i=0, npd_products), & ! Fe + (blank, i=0, npd_products), & ! FeO + (blank, i=0, npd_products), & ! Ca + (blank, i=0, npd_products), & ! CaO + (blank, i=0, npd_products), & ! AlO + (blank, i=0, npd_products), & ! Na2 + (blank, i=0, npd_products), & ! NaO + (blank, i=0, npd_products), & ! NaOH + (blank, i=0, npd_products), & ! KOH + (blank, i=0, npd_products), & ! H- + (blank, i=0, npd_products), & ! PS + (blank, i=0, npd_products), & ! PO + (blank, i=0, npd_products), & ! PN + (blank, i=0, npd_products), & ! CH3SH + (blank, i=0, npd_products), & ! CH3S + (blank, i=0, npd_products), & ! C2H6S + (blank, i=0, npd_products), & ! C2H6S2 + (blank, i=0, npd_products), & ! C3H4 + (blank, i=0, npd_products), & ! C4H3 + (blank, i=0, npd_products), & ! SiH4 + (blank, i=0, npd_products), & ! S2 + (blank, i=0, npd_products), & ! SF6 + (blank, i=0, npd_products), & ! CS2 + (blank, i=0, npd_products), & ! S8 + (blank, i=0, npd_products), & ! CN + (blank, i=0, npd_products), & ! CH3Cl + (blank, i=0, npd_products), & ! CH3F + (blank, i=0, npd_products) & ! CH3Br ], shape=[npd_products+1, npd_gases] ) +CHARACTER(LEN=56), PARAMETER :: photol_products(npd_products, npd_gases) & + = RESHAPE([CHARACTER(LEN=56) :: & + photol_products_h2o, & ! 1: H2O + photol_products_co2, & ! 2: CO2 + photol_products_o3, & ! 3: O3 + photol_products_n2o, & ! 4: N2O + photol_products_co, & ! 5: CO + photol_products_ch4, & ! 6: CH4 + photol_products_o2, & ! 7: O2 + photol_products_no, & ! 8: NO + photol_products_so2, & ! 9: SO2 + photol_products_no2, & ! 10: NO2 + photol_products_nh3, & ! 11: NH3 + photol_products_hno3, & ! 12: HNO3 + photol_products_n2, & ! 13: N2 + (blank, i=1, npd_products), & ! 14: CFC11 + (blank, i=1, npd_products), & ! 15: CFC12 + (blank, i=1, npd_products), & ! 16: CFC113 + (blank, i=1, npd_products), & ! 17: HCFC22 + (blank, i=1, npd_products), & ! 18: HFC125 + (blank, i=1, npd_products), & ! 19: HFC134a + (blank, i=1, npd_products), & ! 20: CFC114 + (blank, i=1, npd_products), & ! 21: TiO + (blank, i=1, npd_products), & ! 22: VO + photol_products_h2, & ! 23: H2 + (blank, i=1, npd_products), & ! 24: He + photol_products_ocs, & ! 25: OCS + (blank, i=1, npd_products), & ! 26: Na + (blank, i=1, npd_products), & ! 27: K + (blank, i=1, npd_products), & ! 28: FeH + (blank, i=1, npd_products), & ! 29: CrH + (blank, i=1, npd_products), & ! 30: Li + (blank, i=1, npd_products), & ! 31: Rb + (blank, i=1, npd_products), & ! 32: Cs + (blank, i=1, npd_products), & ! 33: PH3 + photol_products_c2h2, & ! 34: C2H2 + photol_products_hcn, & ! 35: HCN + (blank, i=1, npd_products), & ! 36: H2S + (blank, i=1, npd_products), & ! 37: Ar + (blank, i=1, npd_products), & ! 38: Dry air + photol_products_o, & ! 39: O + photol_products_n, & ! 40: N + photol_products_no3, & ! 41: NO3 + photol_products_n2o5, & ! 42: N2O5 + photol_products_hono, & ! 43: HONO + photol_products_ho2no2, & ! 44: HO2NO2 + photol_products_h2o2, & ! 45: H2O2 + photol_products_c2h6, & ! 46: C2H6 + photol_products_ch3, & ! 47: CH3 + photol_products_h2co, & ! 48: H2CO + photol_products_ho2, & ! 49: HO2 + (blank, i=1, npd_products), & ! 50: HDO + (blank, i=1, npd_products), & ! 51: HCl + (blank, i=1, npd_products), & ! 52: HF + (blank, i=1, npd_products), & ! 53: cis-OSSO + (blank, i=1, npd_products), & ! 54: trans-OSSO + (blank, i=1, npd_products), & ! 55: OSO-S + photol_products_ch3cho, & ! 56: CH3CHO + photol_products_ch3ooh, & ! 57: CH3OOH + photol_products_ch3coch3, & ! 58: CH3COCH3 + photol_products_ch3cocho, & ! 59: CH3COCHO + photol_products_chocho, & ! 60: CHOCHO + photol_products_c2h5cho, & ! 61: C2H5CHO + photol_products_hoch2cho, & ! 62: HOCH2CHO + photol_products_c2h5coch3, & ! 63: C2H5COCH3 + photol_products_mvk, & ! 64: CH3C(O)CH=CH2 (MVK) + photol_products_macr, & ! 65: CH2=C(CH3)CHO (MACR) + photol_products_pan, & ! 66: CH3C(O)OONO2 (PAN) + photol_products_ch3ono2, & ! 67: CH3ONO2 + photol_products_c2h3, & ! 68: C2H3 + photol_products_c2h4, & ! 69: C2H4 + photol_products_oh, & ! 70: OH + photol_products_hco, & ! 71: HCO + photol_products_n2o4, & ! 72: N2O4 + photol_products_c2n2, & ! 73: C2N2 + photol_products_n2h4, & ! 74: N2H4 + photol_products_n2o3, & ! 75: N2O3 + (blank, i=1, npd_products), & ! 76: Si + (blank, i=1, npd_products), & ! 77: SiO + (blank, i=1, npd_products), & ! 78: SiO2 + (blank, i=1, npd_products), & ! 79: Mg + (blank, i=1, npd_products), & ! 80: Mg2 + (blank, i=1, npd_products), & ! 81: MgO + (blank, i=1, npd_products), & ! 82: TiO2 + (blank, i=1, npd_products), & ! 83: Fe + (blank, i=1, npd_products), & ! 84: FeO + (blank, i=1, npd_products), & ! 85: Ca + (blank, i=1, npd_products), & ! 86: CaO + (blank, i=1, npd_products), & ! 87: AlO + (blank, i=1, npd_products), & ! 88: Na2 + (blank, i=1, npd_products), & ! 89: NaO + (blank, i=1, npd_products), & ! 90: NaOH + (blank, i=1, npd_products), & ! 91: KOH + (blank, i=1, npd_products), & ! 92: H- + (blank, i=1, npd_products), & ! 93: PS + (blank, i=1, npd_products), & ! 94: PO + (blank, i=1, npd_products), & ! 95: PN + (blank, i=1, npd_products), & ! 96: CH3SH + (blank, i=1, npd_products), & ! 97: CH3S + (blank, i=1, npd_products), & ! 98: C2H6S + (blank, i=1, npd_products), & ! 99: C2H6S2 + (blank, i=1, npd_products), & ! 100: C3H4 + (blank, i=1, npd_products), & ! 101: C4H3 + (blank, i=1, npd_products), & ! 102: SiH4 + (blank, i=1, npd_products), & ! 103: S2 + (blank, i=1, npd_products), & ! 104: SF6 + (blank, i=1, npd_products), & ! 105: CS2 + (blank, i=1, npd_products), & ! 106: S8 + (blank, i=1, npd_products), & ! 107: CN + (blank, i=1, npd_products), & ! 108: CH3Cl + (blank, i=1, npd_products), & ! 109: CH3F + (blank, i=1, npd_products) & ! 110: CH3Br + ], shape=[npd_products, npd_gases] ) + ! Threshold wavelength defining energy required for photolysis REAL (RealK), PARAMETER :: threshold_wavelength(npd_products, npd_gases) & = RESHAPE ( [REAL(RealK) :: & - 246.0E-09_RealK, & ! H2O -> O(3P) + H2 - 242.0E-09_RealK, & ! H2O -> OH(X2Pi) + H - 175.0E-09_RealK, & ! H2O -> O(1D) + H2 - 134.0E-09_RealK, & ! H2O -> OH(A2Sigma+) + H - 129.0E-09_RealK, & ! H2O -> O(3P) + H + H - (0.0_RealK, i=1, npd_products-5), & ! H2O - 227.5E-09_RealK, & ! CO2 -> CO + O(3P) : Heubner 92 - 167.1E-09_RealK, & ! CO2 -> CO + O(1D) : Heubner 92 - 128.6E-09_RealK, & ! CO2 -> CO + O(1S) : Heubner 92 - 108.2E-09_RealK, & ! CO2 -> CO(a3Pi) + O(3P) : Heubner 92 - 89.922E-09_RealK, & ! CO2 -> CO2+ : Heubner 92 - 65.026E-09_RealK, & ! CO2 -> CO + O+ : Heubner 92 - 63.693E-09_RealK, & ! CO2 -> CO+ + O : Heubner 92 - 54.655E-09_RealK, & ! CO2 -> O2 + C+ : Heubner 92 - (0.0_RealK, i=1, npd_products-8), & ! CO2 - 1180.0E-09_RealK, & ! O3 -> O(3P) + O2(X3Sigmag-) - 612.0E-09_RealK, & ! O3 -> O(3P) + O2(a1Deltag) - 463.0E-09_RealK, & ! O3 -> O(3P) + O2(b1Sigmag+) - 411.0E-09_RealK, & ! O3 -> O(1D) + O2(X3Sigmag-) - 310.0E-09_RealK, & ! O3 -> O(1D) + O2(a1Deltag) - 267.0E-09_RealK, & ! O3 -> O(1D) + O2(b1Sigmag+) - 201.0E-09_RealK, & ! O3 -> 3 O(3P) - 196.0E-09_RealK, & ! O3 -> O(1S) + O2(a1Deltag) - (0.0_RealK, i=1, npd_products-8), & ! O3 - 336.0E-09_RealK, & ! N2O -> N2 + O(1D) - 713.0E-09_RealK, & ! N2O -> N2 + O(3P) - 248.0E-09_RealK, & ! N2O -> N(4S) + NO(2Pi) - 210.0E-09_RealK, & ! N2O -> N2 + O(1S) - (0.0_RealK, i=1, npd_products-4), & ! N2O - 111.78E-09_RealK, & ! CO -> CO + O(3P) :Huebner 92 - (0.0_RealK, i=1, npd_products-1), & ! CO - 277.0E-09_RealK, & ! CH4 -> CH3 + H - 237.3E-09_RealK, & ! CH4 -> CH2(1) + H2 - 132.2E-09_RealK, & ! CH4 -> CH2(3) + H + H - 137.0E-09_RealK, & ! CH4 -> CH + H2 + H - (0.0_RealK, i=1, npd_products-4), & ! CH4 :Huebner 92 - 242.3E-09_RealK, & ! O2 -> O(3P) + O(3P) - 175.0E-09_RealK, & ! O2 -> O(3P) + O(1D) - 137.0E-09_RealK, & ! O2 -> O(1D) + O(1D) - 132.0E-09_RealK, & ! O2 -> O(3P) + O(1S) - 110.0E-09_RealK, & ! O2 -> O(1D) + O(1S) - 102.78E-09_RealK, & ! O2 -> O2+ - 66.2E-09_RealK, & ! O2 -> O+ + O - (0.0_RealK, i=1, npd_products-7), & ! O2 - 191.0E-09_RealK, & ! NO -> O(3P) + N(4S) :Huebner 92 - (0.0_RealK, i=1, npd_products-1), & ! NO - 218.7E-09_RealK, & ! SO2 -> SO + O(3P) : Becker 95 - (0.0_RealK, i=1, npd_products-1), & ! SO2 - 398.0E-09_RealK, & ! NO2 -> NO + O(3P) - 244.0E-09_RealK, & ! NO2 -> NO + O(1D) - (0.0_RealK, i=1, npd_products-2), & ! NO2 - 279.8E-09_RealK, & ! NH3 -> NH2 + H :Huebner - (0.0_RealK, i=1, npd_products-1), & ! NH3 - 604.0E-09_RealK, & ! HNO3 -> OH + NO2 - 393.0E-09_RealK, & ! HNO3 -> HONO + O(3P) - 278.0E-09_RealK, & ! HNO3 -> H + NO3 - 381.0E-09_RealK, & ! HNO3 -> OH + NO2*(12B2) - 242.0E-09_RealK, & ! HNO3 -> HONO + O(1D) - 216.0E-09_RealK, & ! HNO3 -> HONO (a3A)+ O(3P) - (0.0_RealK, i=1, npd_products-6), & ! HNO3 : IUPAC PNOx2 - 98.6E-09_RealK, & ! N2 -> N + N - 79.8E-09_RealK, & ! N2 -> N2+ - 51.0E-09_RealK, & ! N2 -> N+ + N - (0.0_RealK, i=1, npd_products-3), & ! N2 - (0.0_RealK, i=1, npd_products), & ! CFC11 - (0.0_RealK, i=1, npd_products), & ! CFC12 - (0.0_RealK, i=1, npd_products), & ! CFC113 - (0.0_RealK, i=1, npd_products), & ! HCFC22 - (0.0_RealK, i=1, npd_products), & ! HFC125 - (0.0_RealK, i=1, npd_products), & ! HFC134a - (0.0_RealK, i=1, npd_products), & ! CFC114 - (0.0_RealK, i=1, npd_products), & ! TiO - (0.0_RealK, i=1, npd_products), & ! VO - 276.885E-09_RealK, & ! H2 -> H + H :Huebner 92 - (0.0_RealK, i=1, npd_products-1), & ! H2 - (0.0_RealK, i=1, npd_products), & ! He - 388.0E-09_RealK, & ! OCS -> CO + S(3P) - 285.0E-09_RealK, & ! OCS -> CO + S(1D) - 209.0E-09_RealK, & ! OCS -> CO + S(1S) - (0.0_RealK, i=1, npd_products-3), & ! OCS - (0.0_RealK, i=1, npd_products), & ! Na - (0.0_RealK, i=1, npd_products), & ! K - (0.0_RealK, i=1, npd_products), & ! FeH - (0.0_RealK, i=1, npd_products), & ! CrH - (0.0_RealK, i=1, npd_products), & ! Li - (0.0_RealK, i=1, npd_products), & ! Rb - (0.0_RealK, i=1, npd_products), & ! Cs - (0.0_RealK, i=1, npd_products), & ! PH3 - 230.6E-09_RealK, & ! C2H2 -> C2H + H :Huebner 92 - (0.0_RealK, i=1, npd_products-1), & ! C2H2 - 195.0E-09_RealK, & ! HCN -> CN + H :Huebner 92 - (0.0_RealK, i=1, npd_products-1), & ! HCN - (0.0_RealK, i=1, npd_products), & ! H2S - (0.0_RealK, i=1, npd_products), & ! Ar - (0.0_RealK, i=1, npd_products), & ! Dry air - 91.25E-09_RealK, & ! O -> O+(4S) - 73.18E-09_RealK, & ! O -> O+(2D) - 66.58E-09_RealK, & ! O -> O+(2P) - 43.50E-09_RealK, & ! O -> O+(4Pe) - 31.00E-09_RealK, & ! O -> O+(2Pe) - 24.80E-09_RealK, & ! O -> O++ - 12.179E-09_RealK, & ! O -> O+++ - (0.0_RealK, i=1, npd_products-7), & ! O - 85.92E-09_RealK, & ! N -> N+ - 28.00E-09_RealK, & ! N -> N++ - (0.0_RealK, i=1, npd_products-2), & ! N - 7320.0E-09_RealK, & ! NO3 -> NO + O2 : JPL 19-5 - 574.0E-09_RealK, & ! NO3 -> NO2 + O(3P) : JPL 19-5 - (0.0_RealK, i=1, npd_products-2), & ! NO3 - 1255.0E-09_RealK, & ! N2O5 -> NO3 + NO2 : JPL 19-5 - 298.0E-09_RealK, & ! N2O5 -> NO3 + NO + O(3P) : JPL 19-5 - (0.0_RealK, i=1, npd_products-2), & ! N2O5 - 579.0E-09_RealK, & ! HONO -> OH + NO : JPL 19-5 - 362.0E-09_RealK, & ! HONO -> H + NO2 : JPL 19-5 - (0.0_RealK, i=1, npd_products-2), & ! HONO - 1207.0E-09_RealK, & ! HO2NO2 -> HO2 + NO2 : JPL 19-5 - 726.0E-09_RealK, & ! HO2NO2 -> OH + NO3 : JPL 19-5 - 713.0E-09_RealK, & ! HO2NO2 -> O(3P) + HNO3 : JPL 19-5 - 393.0E-09_RealK, & ! HO2NO2 -> H + NO2 + O2 : JPL 19-5 - 339.0E-09_RealK, & ! HO2NO2 -> HO2 + NO + O(3P) : JPL 19-5 - 321.0E-09_RealK, & ! HO2NO2 -> OH + NO2 + O(3P) : JPL 19-5 - 201.0E-09_RealK, & ! HO2NO2 -> H + O(3P) + NO3 : JPL 19-5 - 911.0E-09_RealK, & ! HO2NO2 -> HONO + O2(1Sigma) : JPL 19-5 - 1744.0E-09_RealK, & ! HO2NO2 -> HONO + O2(1Lambda) : JPL 19-5 - (0.0_RealK, i=1, npd_products-9), & ! HO2NO2 - 557.0E-09_RealK, & ! H2O2 -> OH + OH : JPL 19-5 - 359.0E-09_RealK, & ! H2O2 -> H2O + O(1D) : JPL 19-5 - 324.0E-09_RealK, & ! H2O2 -> H + HO2 : JPL 19-5 - (0.0_RealK, i=1, npd_products-3), & ! H2O2 - 874.3E-09_RealK, & ! C2H6 -> C2H4 + H2 : Huebner 92 - 290.0E-09_RealK, & ! C2H6 -> C2H4 + H + H :Huebner 92/Lias 70 - 428.7E-09_RealK, & ! C2H6 -> C2H2 + H2 + H2 :Chang 2020 - 272.6E-09_RealK, & ! C2H6 -> CH4 + CH2(1) :Huebner 92 - 322.0E-09_RealK, & ! C2H6 -> CH3 + CH3 :Huebner 92 - (0.0_RealK, i=1, npd_products-5), & ! C2H6 - 216.0E-09_RealK, & ! CH3 -> CH2(1) + H - (0.0_RealK, i=1, npd_products-1), & ! CH3- Venot 2012-highest non zero qy - 330.0E-09_RealK, & ! H2CO -> H + HCO : JPL 19-5 - 361.0E-09_RealK, & ! H2CO -> H2 + CO : JPL 19-5 - 283.0E-09_RealK, & ! H2CO -> H + H + CO : JPL 19-5 - (0.0_RealK, i=1, npd_products-3), & ! H2CO - 438.0E-09_RealK, & ! HO2 -> OH + O(3P) : JPL 19-5 - 259.0E-09_RealK, & ! HO2 -> OH + O(1D) : JPL 19-5 - (0.0_RealK, i=1, npd_products-2), & ! HO2 - (0.0_RealK, i=1, npd_products), & ! HDO - (0.0_RealK, i=1, npd_products), & ! HCl - (0.0_RealK, i=1, npd_products), & ! HF - (0.0_RealK, i=1, npd_products), & ! cis-OSSO - (0.0_RealK, i=1, npd_products), & ! trans-OSSO - (0.0_RealK, i=1, npd_products), & ! OSO-S - 335.0E-09_RealK, & ! CH3CHO -> CH3 + HCO : JPL 19-5 - 1.0_RealK, & ! CH3CHO -> CH4 + CO : JPL 19-5 - 320.0E-09_RealK, & ! CH3CHO -> CH3CO + H : JPL 19-5 - (0.0_RealK, i=1, npd_products-3), & ! CH3CHO - 645.0E-09_RealK, & ! CH3OOH -> CH3O + OH : JPL 19-5 - 410.0E-09_RealK, & ! CH3OOH -> CH3 + HO2 : JPL 19-5 - 334.0E-09_RealK, & ! CH3OOH -> CH3O2 + H : JPL 19-5 - 670.0E-09_RealK, & ! CH3OOH -> CH3OH + O(3P) : JPL 19-5 - (0.0_RealK, i=1, npd_products-4), & ! CH3OOH - 338.0E-09_RealK, & ! CH3COCH3 -> CH3CO + CH3 : JPL 19-5 - 299.0E-09_RealK, & ! CH3COCH3 -> 2 CH3 + CO : JPL 19-5 - (0.0_RealK, i=1, npd_products-2), & ! CH3COCH3 - 422.0E-09_RealK, & ! CH3COCHO -> CH3CO + HCO : JPL 19-5 - 1.0_RealK, & ! CH3COCHO -> CH4 + 2 CO : JPL 19-5 - 1.0_RealK, & ! CH3COCHO -> CH3CHO + CO : JPL 19-5 - (0.0_RealK, i=1, npd_products-3), & ! CH3COCHO - 399.0E-09_RealK, & ! CHOCHO -> HCO + HCO : JPL 19-5 - 1.0_RealK, & ! CHOCHO -> H2 + 2 CO : JPL 19-5 - 1.0_RealK, & ! CHOCHO -> HCHO + CO : JPL 19-5 - 329.0E-09_RealK, & ! CHOCHO -> H + CO + HCO : JPL 19-5 - (0.0_RealK, i=1, npd_products-4), & ! CHOCHO - 341.0E-09_RealK, & ! C2H5CHO -> C2H5 + HCO : JPL 19-5 - 1.0_RealK, & ! C2H5CHO -> C2H6 + CO : JPL 19-5 - 926.0E-09_RealK, & ! C2H5CHO -> C2H4 + HCHO : JPL 19-5 - 349.0E-09_RealK, & ! C2H5CHO -> CH3 + CH2CHO : JPL 19-5 - (0.0_RealK, i=1, npd_products-4), & ! C2H5CHO - 347.0E-09_RealK, & ! HOCH2CHO -> CH2OH + HCO - 1910.0E-09_RealK, & ! HOCH2CHO -> CH3OH + CO - 328.0E-09_RealK, & ! HOCH2CHO -> OH + CH2CHO - 314.0E-09_RealK, & ! HOCH2CHO -> HOCH2CO + H - (0.0_RealK, i=1, npd_products-4), & ! HOCH2CHO - 342.0E-09_RealK, & ! C2H5COCH3 -> CH3CO + C2H5 - 339.0E-09_RealK, & ! C2H5COCH3 -> C2H5CO + CH3 - 303.0E-09_RealK, & ! C2H5COCH3 -> C2H5 + CO + CH3 - (0.0_RealK, i=1, npd_products-3), & ! C2H5COCH3 : Zborowska 21 - 1.0_RealK, & ! CH3C(O)CH=CH2 -> CH3-CH=CH2 + CO - 1.0_RealK, & ! CH3C(O)CH=CH2 -> CH=CH2 + CH3C(O) - 1.0_RealK, & ! CH3C(O)CH=CH2 -> CH=CH2C(O) + CH3 - (0.0_RealK, i=1, npd_products-3), & ! CH3C(O)CH=CH2 (MVK) : JPL 19-5 - 1.0_RealK, & ! CH2=C(CH3)CHO -> CH2=CCH3 + CHO - 1.0_RealK, & ! CH2=C(CH3)CHO -> C3H6 + CO - 1.0_RealK, & ! CH2=C(CH3)CHO -> H + CH2=C(CH3)CO - (0.0_RealK, i=1, npd_products-3), & ! CH2=C(CH3)CHO (MACR) : JPL 19-5 - 1004.0E-09_RealK, & ! CH3C(O)OONO2 -> CH3C(O)OO + NO2 - 963.0E-09_RealK, & ! CH3C(O)OONO2 -> CH3C(O)O + NO3 - (0.0_RealK, i=1, npd_products-2), & ! CH3C(O)OONO2 (PAN) : IUPAC P21 - 697.0E-09_RealK, & ! CH3ONO2 -> CH3O + NO2 - 1.0_RealK, & ! CH3ONO2 -> HCHO + HONO - 497.0E-09_RealK, & ! CH3ONO2 -> HCHO + NO + OH - 391.0E-09_RealK, & ! CH3ONO2 -> CH3ONO + O(3P) - 344.0E-09_RealK, & ! CH3ONO2 -> CH3 + NO3 - 294.0E-09_RealK, & ! CH3ONO2 -> CH2ONO2 + H - 250.0E-09_RealK, & ! CH3ONO2 -> CH3O + NO + O(3P) - 241.0E-09_RealK, & ! CH3ONO2 -> CH3ONO + O(1D) - (0.0_RealK, i=1, npd_products-8), & ! CH3ONO2 : JPL 19-5 - 237.0E-09_RealK, & ! C2H3 -> C2H2 + H - (0.0_RealK, i=1, npd_products-1), & ! C2H3 : Venot 2012-highest non zero qy - 720.0E-09_RealK, & ! C2H4 -> C2H2 + H2 - 196.0E-09_RealK, & ! C2H4 -> C2H2 + H + H - (0.0_RealK, i=1, npd_products-2), & ! C2H4 : Huebner 92 - 511.4E-09_RealK, & ! OH -> O(1D) + H - (0.0_RealK, i=1, npd_products-1), & ! OH : Huebner 1992 - 229.0E-09_RealK, & ! HCO -> H + CO - (0.0_RealK, i=1, npd_products-1), & ! HCO : Venot 2012-highest non zero xsc - 453.0E-09_RealK, & ! N2O4 -> NO2 + NO2 - (0.0_RealK, i=1, npd_products-1), & ! N2O4 : Venot 2012-highest non zero xsc - 224.0E-09_RealK, & ! C2N2 -> C2 + N2 - (0.0_RealK, i=1, npd_products-1), & ! C2N2 : Venot 2012-highest non zero xsc - 290.0E-09_RealK, & ! N2H4 -> N2H3 + H - (0.0_RealK, i=1, npd_products-1), & ! N2H4 : Venot 2012-highest non zero xsc - 398.0E-09_RealK, & ! N2O3 -> NO2 + NO - (0.0_RealK, i=1, npd_products-1) & ! N2O3 : Venot 2012-highest non zero xsc + threshold_wavelength_h2o, & ! 1: H2O + threshold_wavelength_co2, & ! 2: CO2 + threshold_wavelength_o3, & ! 3: O3 + threshold_wavelength_n2o, & ! 4: N2O + threshold_wavelength_co, & ! 5: CO + threshold_wavelength_ch4, & ! 6: CH4 + threshold_wavelength_o2, & ! 7: O2 + threshold_wavelength_no, & ! 8: NO + threshold_wavelength_so2, & ! 9: SO2 + threshold_wavelength_no2, & ! 10: NO2 + threshold_wavelength_nh3, & ! 11: NH3 + threshold_wavelength_hno3, & ! 12: HNO3 + threshold_wavelength_n2, & ! 13: N2 + (0.0_RealK, i=1, npd_products), & ! 14: CFC11 + (0.0_RealK, i=1, npd_products), & ! 15: CFC12 + (0.0_RealK, i=1, npd_products), & ! 16: CFC113 + (0.0_RealK, i=1, npd_products), & ! 17: HCFC22 + (0.0_RealK, i=1, npd_products), & ! 18: HFC125 + (0.0_RealK, i=1, npd_products), & ! 19: HFC134a + (0.0_RealK, i=1, npd_products), & ! 20: CFC114 + (0.0_RealK, i=1, npd_products), & ! 21: TiO + (0.0_RealK, i=1, npd_products), & ! 22: VO + threshold_wavelength_h2, & ! 23: H2 + (0.0_RealK, i=1, npd_products), & ! 24: He + threshold_wavelength_ocs, & ! 25: OCS + (0.0_RealK, i=1, npd_products), & ! 26: Na + (0.0_RealK, i=1, npd_products), & ! 27: K + (0.0_RealK, i=1, npd_products), & ! 28: FeH + (0.0_RealK, i=1, npd_products), & ! 29: CrH + (0.0_RealK, i=1, npd_products), & ! 30: Li + (0.0_RealK, i=1, npd_products), & ! 31: Rb + (0.0_RealK, i=1, npd_products), & ! 32: Cs + (0.0_RealK, i=1, npd_products), & ! 33: PH3 + threshold_wavelength_c2h2, & ! 34: C2H2 + threshold_wavelength_hcn, & ! 35: HCN + (0.0_RealK, i=1, npd_products), & ! 36: H2S + (0.0_RealK, i=1, npd_products), & ! 37: Ar + (0.0_RealK, i=1, npd_products), & ! 38: Dry air + threshold_wavelength_o, & ! 39: O + threshold_wavelength_n, & ! 40: N + threshold_wavelength_no3, & ! 41: NO3 + threshold_wavelength_n2o5, & ! 42: N2O5 + threshold_wavelength_hono, & ! 43: HONO + threshold_wavelength_ho2no2, & ! 44: HO2NO2 + threshold_wavelength_h2o2, & ! 45: H2O2 + threshold_wavelength_c2h6, & ! 46: C2H6 + threshold_wavelength_ch3, & ! 47: CH3 + threshold_wavelength_h2co, & ! 48: H2CO + threshold_wavelength_ho2, & ! 49: HO2 + (0.0_RealK, i=1, npd_products), & ! 50: HDO + (0.0_RealK, i=1, npd_products), & ! 51: HCl + (0.0_RealK, i=1, npd_products), & ! 52: HF + (0.0_RealK, i=1, npd_products), & ! 53: cis-OSSO + (0.0_RealK, i=1, npd_products), & ! 54: trans-OSSO + (0.0_RealK, i=1, npd_products), & ! 55: OSO-S + threshold_wavelength_ch3cho, & ! 56: CH3CHO + threshold_wavelength_ch3ooh, & ! 57: CH3OOH + threshold_wavelength_ch3coch3, & ! 58: CH3COCH3 + threshold_wavelength_ch3cocho, & ! 59: CH3COCHO + threshold_wavelength_chocho, & ! 60: CHOCHO + threshold_wavelength_c2h5cho, & ! 61: C2H5CHO + threshold_wavelength_hoch2cho, & ! 62: HOCH2CHO + threshold_wavelength_c2h5coch3, & ! 63: C2H5COCH3 + threshold_wavelength_mvk, & ! 64: CH3C(O)CH=CH2 (MVK) + threshold_wavelength_macr, & ! 65: CH2=C(CH3)CHO (MACR) + threshold_wavelength_pan, & ! 66: CH3C(O)OONO2 (PAN) + threshold_wavelength_ch3ono2, & ! 67: CH3ONO2 + threshold_wavelength_c2h3, & ! 68: C2H3 + threshold_wavelength_c2h4, & ! 69: C2H4 + threshold_wavelength_oh, & ! 70: OH + threshold_wavelength_hco, & ! 71: HCO + threshold_wavelength_n2o4, & ! 72: N2O4 + threshold_wavelength_c2n2, & ! 73: C2N2 + threshold_wavelength_n2h4, & ! 74: N2H4 + threshold_wavelength_n2o3, & ! 75: N2O3 + (0.0_RealK, i=1, npd_products), & ! 76: Si + (0.0_RealK, i=1, npd_products), & ! 77: SiO + (0.0_RealK, i=1, npd_products), & ! 78: SiO2 + (0.0_RealK, i=1, npd_products), & ! 79: Mg + (0.0_RealK, i=1, npd_products), & ! 80: Mg2 + (0.0_RealK, i=1, npd_products), & ! 81: MgO + (0.0_RealK, i=1, npd_products), & ! 82: TiO2 + (0.0_RealK, i=1, npd_products), & ! 83: Fe + (0.0_RealK, i=1, npd_products), & ! 84: FeO + (0.0_RealK, i=1, npd_products), & ! 85: Ca + (0.0_RealK, i=1, npd_products), & ! 86: CaO + (0.0_RealK, i=1, npd_products), & ! 87: AlO + (0.0_RealK, i=1, npd_products), & ! 88: Na2 + (0.0_RealK, i=1, npd_products), & ! 89: NaO + (0.0_RealK, i=1, npd_products), & ! 90: NaOH + (0.0_RealK, i=1, npd_products), & ! 91: KOH + (0.0_RealK, i=1, npd_products), & ! 92: H- + (0.0_RealK, i=1, npd_products), & ! 93: PS + (0.0_RealK, i=1, npd_products), & ! 94: PO + (0.0_RealK, i=1, npd_products), & ! 95: PN + (0.0_RealK, i=1, npd_products), & ! 96: CH3SH + (0.0_RealK, i=1, npd_products), & ! 97: CH3S + (0.0_RealK, i=1, npd_products), & ! 98: C2H6S + (0.0_RealK, i=1, npd_products), & ! 99: C2H6S2 + (0.0_RealK, i=1, npd_products), & ! 100: C3H4 + (0.0_RealK, i=1, npd_products), & ! 101: C4H3 + (0.0_RealK, i=1, npd_products), & ! 102: SiH4 + (0.0_RealK, i=1, npd_products), & ! 103: S2 + (0.0_RealK, i=1, npd_products), & ! 104: SF6 + (0.0_RealK, i=1, npd_products), & ! 105: CS2 + (0.0_RealK, i=1, npd_products), & ! 106: S8 + (0.0_RealK, i=1, npd_products), & ! 107: CN + (0.0_RealK, i=1, npd_products), & ! 108: CH3Cl + (0.0_RealK, i=1, npd_products), & ! 109: CH3F + (0.0_RealK, i=1, npd_products) & ! 110: CH3Br ], shape=[npd_products, npd_gases] ) ! Unless otherwise stated, data comes from JPL publication No. 15-10: @@ -1121,6 +2066,6 @@ MODULE gas_list_pcf ! * PAN: P21: https://iupac-aeris.ipsl.fr/datasheets/pdf/P21.pdf ! * Venot 2012 : Venot et al (2012) DOI: 10.1051/0004-6361/201219310 ! * Lias 70 : Lias et al (1970) DOI: 10.1063/1.1673226 -! * Chang 2020 : Chang et al (2020) DOI: 10.1039/D0SC01746A +! * Chang 2020 : Chang et al (2020) DOI: 10.1039/D0SC01746A END MODULE gas_list_pcf