From 35cc72d848e64bebdb7cc1eeedefedb06c5f683c Mon Sep 17 00:00:00 2001 From: Steve Goldhaber Date: Tue, 7 Jul 2026 15:39:55 +0200 Subject: [PATCH 1/6] - Remove rad_climate from use cases. - Allow build_namelist to compute this - Update sim_year to 2022 for cases with extended forcing files - Update Oslo Aero tag with some additions and bug fixes --- .gitmodules | 2 +- bld/namelist_files/use_cases/1850_camnor_lt_ghgosloaero.xml | 2 -- bld/namelist_files/use_cases/1850_camnor_lt_osloaero.xml | 2 -- bld/namelist_files/use_cases/1979-2021_camnor_lt_osloaero.xml | 4 +--- bld/namelist_files/use_cases/2000_camnor_osloaero.xml | 2 -- bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml | 4 +--- src/chemistry/oslo_aero | 2 +- 7 files changed, 4 insertions(+), 14 deletions(-) diff --git a/.gitmodules b/.gitmodules index cd3c552577..173d8fccdb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -85,7 +85,7 @@ [submodule "oslo_aero"] path = src/chemistry/oslo_aero url = https://github.com/NorESMhub/OSLO_AERO - fxtag = oslo_aero_3_0a012 + fxtag = oslo_aero_3_0a013 fxrequired = AlwaysRequired fxDONOTUSEurl = https://github.com/NorESMhub/OSLO_AERO.git diff --git a/bld/namelist_files/use_cases/1850_camnor_lt_ghgosloaero.xml b/bld/namelist_files/use_cases/1850_camnor_lt_ghgosloaero.xml index 1ede99a567..f5a6e1da1b 100644 --- a/bld/namelist_files/use_cases/1850_camnor_lt_ghgosloaero.xml +++ b/bld/namelist_files/use_cases/1850_camnor_lt_ghgosloaero.xml @@ -93,8 +93,6 @@ 'SO4_PR -> 0.025*$INPUTDATA_ROOT/atm/cam/chem/emis/cmip7_emissions_version20260209/ne30pg3/emissions_cmip7_noresm3_S_anthrosurfALL_surface_1850_ne30pg3_CEDS-CMIP-2025-04-18_version20260209.nc' -'A:Q:H2O','N:O2:O2','A:CO2:CO2','N:ozone:O3','A:N2O:N2O','A:CH4:CH4','N:CFC11STAR:CFC11','A:CFC12:CFC12' - 'isoprene = isoprene','monoterp = myrcene + sabinene + limonene+ carene_3 + ocimene_t_b + pinene_b + pinene_a' diff --git a/bld/namelist_files/use_cases/1850_camnor_lt_osloaero.xml b/bld/namelist_files/use_cases/1850_camnor_lt_osloaero.xml index f3b8f4ad7b..4d53344105 100644 --- a/bld/namelist_files/use_cases/1850_camnor_lt_osloaero.xml +++ b/bld/namelist_files/use_cases/1850_camnor_lt_osloaero.xml @@ -96,8 +96,6 @@ 'SO4_PR -> 0.025*$INPUTDATA_ROOT/atm/cam/chem/emis/cmip7_emissions_version20260209/ne30pg3/emissions_cmip7_noresm3_S_anthrosurfALL_surface_1850_ne30pg3_CEDS-CMIP-2025-04-18_version20260209.nc' -'A:Q:H2O','N:O2:O2','N:CO2:CO2','N:ozone:O3','N:N2O:N2O','N:CH4:CH4','N:CFC11:CFC11','N:CFC12:CFC12' - 'isoprene = isoprene','monoterp = myrcene + sabinene + limonene+ carene_3 + ocimene_t_b + pinene_b + pinene_a' diff --git a/bld/namelist_files/use_cases/1979-2021_camnor_lt_osloaero.xml b/bld/namelist_files/use_cases/1979-2021_camnor_lt_osloaero.xml index 485447bbe2..3ab33092bb 100644 --- a/bld/namelist_files/use_cases/1979-2021_camnor_lt_osloaero.xml +++ b/bld/namelist_files/use_cases/1979-2021_camnor_lt_osloaero.xml @@ -91,8 +91,6 @@ SERIAL -'A:Q:H2O','N:O2:O2','N:CO2:CO2','N:ozone:O3','N:N2O:N2O','N:CH4:CH4','N:CFC11:CFC11','N:CFC12:CFC12' - 'isoprene = isoprene','monoterp = myrcene + sabinene + limonene+ carene_3 + ocimene_t_b + pinene_b + pinene_a' @@ -100,6 +98,6 @@ UOEXETER-CMIP-2-2-1_175001-202312_intpwghtavg_v20260105.nc -1979-2021 +1979-2022 diff --git a/bld/namelist_files/use_cases/2000_camnor_osloaero.xml b/bld/namelist_files/use_cases/2000_camnor_osloaero.xml index 3c7fc7f07f..428ec79fff 100644 --- a/bld/namelist_files/use_cases/2000_camnor_osloaero.xml +++ b/bld/namelist_files/use_cases/2000_camnor_osloaero.xml @@ -62,8 +62,6 @@ 'CYCLICAL' 2000 -'A:Q:H2O','N:O2:O2','N:CO2:CO2','N:ozone:O3','N:N2O:N2O','N:CH4:CH4','N:CFC11:CFC11','N:CFC12:CFC12' - atm/cam/volc CMIP_CAM6_radiation_average_v3_reformatted.nc 1850 diff --git a/bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml b/bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml index 11822abecb..4cf0473493 100644 --- a/bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml +++ b/bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml @@ -91,8 +91,6 @@ SERIAL -'A:Q:H2O','N:O2:O2','N:CO2:CO2','N:ozone:O3','N:N2O:N2O','N:CH4:CH4','N:CFC11:CFC11','N:CFC12:CFC12' - 'isoprene = isoprene','monoterp = myrcene + sabinene + limonene+ carene_3 + ocimene_t_b + pinene_b + pinene_a' @@ -100,6 +98,6 @@ UOEXETER-CMIP-2-2-1_175001-202312_intpwghtavg_v20260105.nc -1850-2015 +1850-2022 diff --git a/src/chemistry/oslo_aero b/src/chemistry/oslo_aero index 34d7fab916..7a1553626b 160000 --- a/src/chemistry/oslo_aero +++ b/src/chemistry/oslo_aero @@ -1 +1 @@ -Subproject commit 34d7fab9160bc0da74d28cbfd60d699426f29ee7 +Subproject commit 7a1553626b395128aa83b94c591f9ecab666836c From 70274a77c95e436e919a6bb0ab7e47d190d45c2d Mon Sep 17 00:00:00 2001 From: Steve Goldhaber Date: Mon, 13 Jul 2026 10:50:00 +0200 Subject: [PATCH 2/6] Correct units on wat_a_xxx --- src/chemistry/oslo_aero | 2 +- .../utils/modal_aero_wateruptake.F90 | 152 +++++++++--------- 2 files changed, 76 insertions(+), 78 deletions(-) diff --git a/src/chemistry/oslo_aero b/src/chemistry/oslo_aero index 7a1553626b..cad2a0763c 160000 --- a/src/chemistry/oslo_aero +++ b/src/chemistry/oslo_aero @@ -1 +1 @@ -Subproject commit 7a1553626b395128aa83b94c591f9ecab666836c +Subproject commit cad2a0763c3334145bd452fe8d5854fe1c1abbb9 diff --git a/src/chemistry/utils/modal_aero_wateruptake.F90 b/src/chemistry/utils/modal_aero_wateruptake.F90 index a102aad7c4..7f2ad1d61e 100644 --- a/src/chemistry/utils/modal_aero_wateruptake.F90 +++ b/src/chemistry/utils/modal_aero_wateruptake.F90 @@ -60,13 +60,13 @@ subroutine modal_aero_wateruptake_reg() use rad_constituents, only: rad_cnst_get_info integer :: nmodes - + call rad_cnst_get_info(0, nmodes=nmodes) call pbuf_add_field('DGNUMWET', 'global', dtype_r8, (/pcols, pver, nmodes/), dgnumwet_idx) call pbuf_add_field('WETDENS_AP', 'physpkg', dtype_r8, (/pcols, pver, nmodes/), wetdens_ap_idx) ! 1st order rate for direct conversion of strat. cloud water to precip (1/s) - call pbuf_add_field('QAERWAT', 'physpkg', dtype_r8, (/pcols, pver, nmodes/), qaerwat_idx) + call pbuf_add_field('QAERWAT', 'physpkg', dtype_r8, (/pcols, pver, nmodes/), qaerwat_idx) if (modal_strat_sulfate) then call pbuf_add_field('MAMH2SO4EQ', 'global', dtype_r8, (/pcols, pver, nmodes/), sulfeq_idx) @@ -93,16 +93,16 @@ subroutine modal_aero_wateruptake_init(pbuf2d) !---------------------------------------------------------------------------- real_nan = nan - - cld_idx = pbuf_get_index('CLD') - dgnum_idx = pbuf_get_index('DGNUM') - hygro_idx = pbuf_get_index('HYGRO') - dryvol_idx = pbuf_get_index('DRYVOL') - dryrad_idx = pbuf_get_index('DRYRAD') - drymass_idx = pbuf_get_index('DRYMASS') - so4dryvol_idx = pbuf_get_index('SO4DRYVOL') - naer_idx = pbuf_get_index('NAER') + cld_idx = pbuf_get_index('CLD') + dgnum_idx = pbuf_get_index('DGNUM') + + hygro_idx = pbuf_get_index('HYGRO') + dryvol_idx = pbuf_get_index('DRYVOL') + dryrad_idx = pbuf_get_index('DRYRAD') + drymass_idx = pbuf_get_index('DRYMASS') + so4dryvol_idx = pbuf_get_index('SO4DRYVOL') + naer_idx = pbuf_get_index('NAER') ! assume for now that will compute wateruptake for climate list modes only @@ -110,24 +110,24 @@ subroutine modal_aero_wateruptake_init(pbuf2d) do m = 1, nmodes write(trnum, '(i3.3)') m - call addfld('dgnd_a'//trnum(2:3), (/ 'lev' /), 'A', 'm', & + call addfld('dgnd_a'//trnum(2:3), (/ 'lev' /), 'A', 'm', & 'dry dgnum, interstitial, mode '//trnum(2:3)) - call addfld('dgnw_a'//trnum(2:3), (/ 'lev' /), 'A', 'm', & + call addfld('dgnw_a'//trnum(2:3), (/ 'lev' /), 'A', 'm', & 'wet dgnum, interstitial, mode '//trnum(2:3)) - call addfld('wat_a'//trnum(3:3), (/ 'lev' /), 'A', 'm', & + call addfld('wat_a'//trnum(3:3), (/ 'lev' /), 'A', 'kg/kg', & 'aerosol water, interstitial, mode '//trnum(2:3)) - + ! determine default variables call phys_getopts(history_aerosol_out = history_aerosol) - if (history_aerosol) then + if (history_aerosol) then call add_default('dgnd_a'//trnum(2:3), 1, ' ') call add_default('dgnw_a'//trnum(2:3), 1, ' ') call add_default('wat_a'//trnum(3:3), 1, ' ') endif end do - + call addfld('PM25', (/ 'lev' /), 'A', 'kg/m3', 'PM2.5 concentration') call addfld('PM25_SRF', horiz_only, 'A', 'kg/m3', 'surface PM2.5 concentration') @@ -135,7 +135,7 @@ subroutine modal_aero_wateruptake_init(pbuf2d) ! initialize fields in physics buffer call pbuf_set_field(pbuf2d, dgnumwet_idx, 0.0_r8) if (modal_strat_sulfate) then - ! initialize fields in physics buffer to NaN (not a number) + ! initialize fields in physics buffer to NaN (not a number) ! so model will crash if used before initialization call pbuf_set_field(pbuf2d, sulfeq_idx, real_nan) endif @@ -223,7 +223,7 @@ subroutine modal_aero_wateruptake_dr(state, pbuf, list_idx_in, dgnumdry_m, dgnum real(r8), pointer :: sulfeq(:,:,:) ! H2SO4 equilibrium mixing ratios over particles (mol/mol) real(r8), allocatable :: wtpct(:,:,:) ! sulfate aerosol composition, weight % H2SO4 real(r8), allocatable :: sulden(:,:,:) ! sulfate aerosol mass density (g/cm3) - + real(r8) :: specdens, so4specdens real(r8) :: sigmag real(r8), allocatable :: alnsg(:) @@ -233,8 +233,8 @@ subroutine modal_aero_wateruptake_dr(state, pbuf, list_idx_in, dgnumdry_m, dgnum real(r8) :: es(pcols) ! saturation vapor pressure real(r8) :: qs(pcols) ! saturation specific humidity - real(r8) :: pm25(pcols,pver) ! PM2.5 diagnostics - real(r8) :: rhoair(pcols,pver) + real(r8) :: pm25(pcols,pver) ! PM2.5 diagnostics + real(r8) :: rhoair(pcols,pver) character(len=3) :: trnum ! used to hold mode number (as characters) character(len=32) :: spectype @@ -271,7 +271,7 @@ subroutine modal_aero_wateruptake_dr(state, pbuf, list_idx_in, dgnumdry_m, dgnum call rad_cnst_get_info(list_idx, nmodes=nmodes) if (modal_strat_sulfate) then - call pbuf_get_field(pbuf, sulfeq_idx, sulfeq ) + call pbuf_get_field(pbuf, sulfeq_idx, sulfeq ) endif allocate( & @@ -344,7 +344,7 @@ subroutine modal_aero_wateruptake_dr(state, pbuf, list_idx_in, dgnumdry_m, dgnum ! accumulate the aerosol masses of each mode call rad_cnst_get_aer_mmr(0, m, l, 'a', state, pbuf, raer) maer(:ncol,:,m)= maer(:ncol,:,m) + raer(:ncol,:) - + ! get species interstitial mixing ratio ('a') call rad_cnst_get_aer_props(list_idx, m, l, density_aer=specdens, & spectype=spectype) @@ -370,24 +370,24 @@ subroutine modal_aero_wateruptake_dr(state, pbuf, list_idx_in, dgnumdry_m, dgnum qh2so4_equilib, wtpct_mode, sulden_mode ) sulfeq(i,k,m) = qh2so4_equilib wtpct(i,k,m) = wtpct_mode - sulden(i,k,m) = sulden_mode + sulden(i,k,m) = sulden_mode end do ! i = 1, ncol end do ! k = top_lev, pver - + fieldname = ' ' write(fieldname,fmt='(a,i1)') 'wtpct_a',m call outfld(fieldname,wtpct(1:ncol,1:pver,m), ncol, lchnk ) - + fieldname = ' ' write(fieldname,fmt='(a,i1)') 'sulfeq_a',m call outfld(fieldname,sulfeq(1:ncol,1:pver,m), ncol, lchnk ) - + fieldname = ' ' write(fieldname,fmt='(a,i1)') 'sulden_a',m call outfld(fieldname,sulden(1:ncol,1:pver,m), ncol, lchnk ) - + end if - + end do ! m = 1, nmodes ! relative humidity calc @@ -486,7 +486,7 @@ subroutine modal_aero_wateruptake_sub( & ! !----------------------------------------------------------------------- - + ! Arguments integer, intent(in) :: ncol ! number of columns integer, intent(in) :: nmodes @@ -653,13 +653,13 @@ subroutine modal_aero_kohler( & do n=1,4 xr=real(cx4(n,i)) xi=aimag(cx4(n,i)) - if(abs(xi).gt.abs(xr)*eps) cycle - if(xr.gt.r(i)) cycle - if(xr.lt.rdry(i)*(1._r8-eps)) cycle - if(xr.ne.xr) cycle + if(abs(xi).gt.abs(xr)*eps) cycle + if(xr.gt.r(i)) cycle + if(xr.lt.rdry(i)*(1._r8-eps)) cycle + if(xr.ne.xr) cycle r(i)=xr nsol=n - end do + end do if(nsol.eq.0)then write(iulog,*) & 'ccm kohlerc - no real(r8) solution found (quartic)' @@ -687,13 +687,13 @@ subroutine modal_aero_kohler( & do n=1,3 xr=real(cx3(n,i)) xi=aimag(cx3(n,i)) - if(abs(xi).gt.abs(xr)*eps) cycle - if(xr.gt.r(i)) cycle - if(xr.lt.rdry(i)*(1._r8-eps)) cycle - if(xr.ne.xr) cycle + if(abs(xi).gt.abs(xr)*eps) cycle + if(xr.gt.r(i)) cycle + if(xr.lt.rdry(i)*(1._r8-eps)) cycle + if(xr.ne.xr) cycle r(i)=xr nsol=n - end do + end do if(nsol.eq.0)then write(iulog,*) & 'ccm kohlerc - no real(r8) solution found (cubic)' @@ -847,11 +847,11 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & real(r8), intent(out) :: qh2so4_equilib ! h2so4 saturation mixing ratios over the particles (mol/mol) real(r8), intent(out) :: wtpct ! sulfate composition, weight % H2SO4 real(r8), intent(out) :: sulden ! sulfate aerosol mass density (g/cm3) - + ! Local declarations real(r8) :: qh2o_kelvin ! water vapor specific humidity adjusted for Kelvin effect (kg/kg) real(r8) :: wtpct_flat ! sulfate composition over a flat surface, weight % H2SO4 - real(r8) :: fk1, fk4, fk4_1, fk4_2 + real(r8) :: fk1, fk4, fk4_1, fk4_2 real(r8) :: factor_kulm ! Kulmala correction terms real(r8) :: en, t, sig1, sig2, frac, surf_tens, surf_tens_mode, dsigma_dwt real(r8) :: den1, den2, sulfate_density, drho_dwt @@ -861,7 +861,7 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & real(r8), parameter :: t_crit_kulm = 905._r8 ! Critical temperature = 1.5 * Boiling point real(r8), parameter :: fk0 = -10156._r8 / t0_kulm + 16.259_r8 ! Log(Kulmala correction factor) real(r8), parameter :: fk2 = 1._r8 / t0_kulm - real(r8), parameter :: fk3 = 0.38_r8 / (t_crit_kulm - t0_kulm) + real(r8), parameter :: fk3 = 0.38_r8 / (t_crit_kulm - t0_kulm) real(r8), parameter :: RGAS = 8.31430e+07_r8 ! ideal gas constant (erg/mol/K) real(r8), parameter :: wtmol_h2so4 = 98.078479_r8 ! molecular weight of sulphuric acid real(r8), parameter :: wtmol_h2o = 18.015280_r8 ! molecular weight of water vapor @@ -871,7 +871,7 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & real(r8) :: stwtp(15), stc0(15), stc1(15) integer :: i, k - + data stwtp/0._r8, 23.8141_r8, 38.0279_r8, 40.6856_r8, 45.335_r8, 52.9305_r8, & 56.2735_r8, 59.8557_r8, 66.2364_r8, 73.103_r8, 79.432_r8, 85.9195_r8, & 91.7444_r8, 97.6687_r8, 100._r8/ @@ -884,14 +884,14 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & -0.0746702_r8, -0.0522399_r8, -0.0407773_r8, -0.0357946_r8, -0.0317062_r8, & -0.025825_r8, -0.0267212_r8, -0.0269204_r8, -0.0276187_r8, -0.0302094_r8, & -0.0303081_r8 / - - + + data dnwtp / 0._r8, 1._r8, 5._r8, 10._r8, 20._r8, 25._r8, 30._r8, 35._r8, 40._r8, & 41._r8, 45._r8, 50._r8, 53._r8, 55._r8, 56._r8, 60._r8, 65._r8, 66._r8, 70._r8, & 72._r8, 73._r8, 74._r8, 75._r8, 76._r8, 78._r8, 79._r8, 80._r8, 81._r8, 82._r8, & 83._r8, 84._r8, 85._r8, 86._r8, 87._r8, 88._r8, 89._r8, 90._r8, 91._r8, 92._r8, & 93._r8, 94._r8, 95._r8, 96._r8, 97._r8, 98._r8, 100._r8 / - + data dnc0 / 1._r8, 1.13185_r8, 1.17171_r8, 1.22164_r8, 1.3219_r8, 1.37209_r8, & 1.42185_r8, 1.4705_r8, 1.51767_r8, 1.52731_r8, 1.56584_r8, 1.61834_r8, 1.65191_r8, & 1.6752_r8, 1.68708_r8, 1.7356_r8, 1.7997_r8, 1.81271_r8, 1.86696_r8, 1.89491_r8, & @@ -899,7 +899,7 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & 2.03234_r8, 2.04716_r8, 2.06082_r8, 2.07363_r8, 2.08461_r8, 2.09386_r8, 2.10143_r8,& 2.10764_r8, 2.11283_r8, 2.11671_r8, 2.11938_r8, 2.12125_r8, 2.1219_r8, 2.12723_r8, & 2.12654_r8, 2.12621_r8, 2.12561_r8, 2.12494_r8, 2.12093_r8 / - + data dnc1 / 0._r8, -0.000435022_r8, -0.000479481_r8, -0.000531558_r8, -0.000622448_r8, & -0.000660866_r8, -0.000693492_r8, -0.000718251_r8, -0.000732869_r8, -0.000735755_r8, & -0.000744294_r8, -0.000761493_r8, -0.000774238_r8, -0.00078392_r8, -0.000788939_r8, & @@ -909,17 +909,17 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & -0.00103757_r8, -0.00104337_r8, -0.00104563_r8, -0.00104458_r8, -0.00104144_r8, & -0.00103719_r8, -0.00103089_r8, -0.00102262_r8, -0.00101355_r8, -0.00100249_r8, & -0.00100934_r8, -0.000998299_r8, -0.000990961_r8, -0.000985845_r8, -0.000984529_r8, & - -0.000989315_r8 / + -0.000989315_r8 / ! Saturation vapor pressure of sulfuric acid - ! + ! ! Limit extrapolation at extreme temperatures t=min(max(temp,140._r8),450._r8) - + !! Calculate the weight % H2SO4 composition of sulfate call calc_h2so4_wtpct(t, pres, qh2o, wtpct_flat) - - !! Calculate surface tension (erg/cm2) of sulfate of + + !! Calculate surface tension (erg/cm2) of sulfate of !! different compositions as a linear function of temperature. i = 2 ! minimum wt% is 29.517 do while (wtpct_flat.gt.stwtp(i)) @@ -927,11 +927,11 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & end do sig1 = stc0(i-1) + stc1(i-1) * t sig2 = stc0(i) + stc1(i) * t - ! calculate derivative needed later for kelvin factor for h2o + ! calculate derivative needed later for kelvin factor for h2o dsigma_dwt = (sig2-sig1) / (stwtp(i)-stwtp(i-1)) - surf_tens = sig1 + dsigma_dwt*(wtpct_flat-stwtp(i)) - - !! Calculate density (g/cm3) of sulfate of + surf_tens = sig1 + dsigma_dwt*(wtpct_flat-stwtp(i)) + + !! Calculate density (g/cm3) of sulfate of !! different compositions as a linear function of temperature. i = 6 ! minimum wt% is 29.517 do while (wtpct_flat .gt. dnwtp(i)) @@ -939,7 +939,7 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & end do den1 = dnc0(i-1) + dnc1(i-1) * t den2 = dnc0(i) + dnc1(i) * t - ! Calculate derivative needed later for Kelvin factor for H2O + ! Calculate derivative needed later for Kelvin factor for H2O drho_dwt = (den2-den1) / (dnwtp(i)-dnwtp(i-1)) sulfate_density = den1 + drho_dwt * (wtpct_flat-dnwtp(i-1)) @@ -950,7 +950,7 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & sulfate_density - 3._r8 * wtpct_flat * dsigma_dwt / (2._r8*surf_tens) rkelvinH2O_a = 2._r8 * wtmol_h2so4 * surf_tens / & - (sulfate_density * RGAS * t * r) + (sulfate_density * RGAS * t * r) rkelvinH2O = exp (rkelvinH2O_a*rkelvinH2O_b) @@ -964,7 +964,7 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & en = 4.184_r8 * (23624.8_r8 - 1.14208e8_r8 / ((wtpct - 105.318_r8)**2 + 4798.69_r8)) en = max(en, 0.0_r8) - !! Calculate surface tension (erg/cm2) of sulfate of + !! Calculate surface tension (erg/cm2) of sulfate of !! different compositions as a linear function of temperature. i = 2 ! minimum wt% is 29.517 do while (wtpct.gt.stwtp(i)) @@ -973,9 +973,9 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & sig1=stc0(i-1)+stc1(i-1)*t sig2=stc0(i)+stc1(i)*t frac=(stwtp(i)-wtpct)/(stwtp(i)-stwtp(i-1)) - surf_tens_mode=sig1*frac+sig2*(1.0_r8-frac) + surf_tens_mode=sig1*frac+sig2*(1.0_r8-frac) - !! Calculate density (g/cm3) of sulfate of + !! Calculate density (g/cm3) of sulfate of !! different compositions as a linear function of temperature. i = 6 ! minimum wt% is 29.517 do while (wtpct .gt. dnwtp(i)) @@ -1007,7 +1007,7 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & sulfequil = exp(sulfequil) ! Convert atmospheres ==> Pa - sulfequil = sulfequil * 1.01325e5_r8 + sulfequil = sulfequil * 1.01325e5_r8 ! Convert Pa ==> mol/mol sulfequil = sulfequil / pres @@ -1016,7 +1016,7 @@ subroutine calc_h2so4_equilib_mixrat( temp, pres, qh2o, dmean, & ! (g/mol)*(erg/cm2)/(K * g/cm3 * erg/mol/K) = cm akelvin = 2._r8 * wtmol_h2so4 * surf_tens_mode / (t * sulden * RGAS) - expon = akelvin / r ! divide by mode radius (cm) + expon = akelvin / r ! divide by mode radius (cm) expon = max(-100._r8, expon) expon = min(100._r8, expon) akas = exp( expon ) @@ -1028,12 +1028,12 @@ end subroutine calc_h2so4_equilib_mixrat !---------------------------------------------------------------------- subroutine calc_h2so4_wtpct( temp, pres, qh2o, wtpct ) - - !! This function calculates the weight % H2SO4 composition of + + !! This function calculates the weight % H2SO4 composition of !! sulfate aerosol, using Tabazadeh et. al. (GRL, 1931, 1997). !! Rated for T=185-260K, activity=0.01-1.0 !! - !! Argument list input: + !! Argument list input: !! temp = temperature (K) !! pres = atmospheric pressure (Pa) !! qh2o = water specific humidity (kg/kg) @@ -1045,14 +1045,14 @@ subroutine calc_h2so4_wtpct( temp, pres, qh2o, wtpct ) !! @ version October 2013 use wv_saturation, only: qsat_water - + implicit none real(r8), intent(in) :: temp ! temperature (K) real(r8), intent(in) :: pres ! pressure (Pa) real(r8), intent(in) :: qh2o ! water vapor specific humidity (kg/kg) real(r8), intent(out) :: wtpct ! sulfate weight % H2SO4 composition - + ! Local declarations real(r8) :: atab1,btab1,ctab1,dtab1,atab2,btab2,ctab2,dtab2 real(r8) :: contl, conth, contt, conwtp @@ -1062,17 +1062,17 @@ subroutine calc_h2so4_wtpct( temp, pres, qh2o, wtpct ) ! calculate saturation specific humidity over pure water, qs (kg/kg) call qsat_water(temp, pres, es, qs) - + ! Activity = water specific humidity (kg/kg) / equilibrium water (kg/kg) activ = qh2o/qs - + if (activ.lt.0.05_r8) then activ = max(activ,1.e-6_r8) ! restrict minimum activity - atab1 = 12.37208932_r8 + atab1 = 12.37208932_r8 btab1 = -0.16125516114_r8 ctab1 = -30.490657554_r8 dtab1 = -2.1133114241_r8 - atab2 = 13.455394705_r8 + atab2 = 13.455394705_r8 btab2 = -0.1921312255_r8 ctab2 = -34.285174607_r8 dtab2 = -1.7620073078_r8 @@ -1081,7 +1081,7 @@ subroutine calc_h2so4_wtpct( temp, pres, qh2o, wtpct ) btab1 = -0.20786404244_r8 ctab1 = -4.807306373_r8 dtab1 = -5.1727540348_r8 - atab2 = 12.891938068_r8 + atab2 = 12.891938068_r8 btab2 = -0.23233847708_r8 ctab2 = -6.4261237757_r8 dtab2 = -4.9005471319_r8 @@ -1109,7 +1109,7 @@ subroutine calc_h2so4_wtpct( temp, pres, qh2o, wtpct ) wtpct = (100._r8*contt*98._r8)/conwtp wtpct = min(max(wtpct,25._r8),100._r8) ! restrict between 1 and 100 % - + return end subroutine calc_h2so4_wtpct @@ -1117,5 +1117,3 @@ end subroutine calc_h2so4_wtpct !---------------------------------------------------------------------- end module modal_aero_wateruptake - - From bf31ed2018b5c6832f7240ff9ea168fc5af88036 Mon Sep 17 00:00:00 2001 From: Steve Goldhaber Date: Mon, 13 Jul 2026 13:43:10 +0200 Subject: [PATCH 3/6] Remove invalid use cases --- bld/namelist_files/namelist_defaults_cam.xml | 2 - .../use_cases/sd_waccm_sulfur.xml | 142 ------------------ .../use_cases/waccm_carma_bc_2013_cam4.xml | 141 ----------------- 3 files changed, 285 deletions(-) delete mode 100644 bld/namelist_files/use_cases/sd_waccm_sulfur.xml delete mode 100644 bld/namelist_files/use_cases/waccm_carma_bc_2013_cam4.xml diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml index 097128e591..235e165114 100644 --- a/bld/namelist_files/namelist_defaults_cam.xml +++ b/bld/namelist_files/namelist_defaults_cam.xml @@ -922,8 +922,6 @@ atm/cam/chem/trop_mozart/emis/emissions.aircraft.T42LR.nc -atm/cam/chem/1850-2000_emis/IPCC_emissions_aircraft_NO2_1850-2000_1.9x2.5_c090729.nc -atm/cam/chem/1850-2000_emis/IPCC_emissions_aircraft_BC_1850-2000_1.9x2.5.c090729.nc atm/cam/chem/trop_mozart/emis/extfrc.CO.1.9x2.5_c101206.nc atm/cam/chem/trop_mozart/emis/extfrc.NO.1.9x2.5_c101206.nc diff --git a/bld/namelist_files/use_cases/sd_waccm_sulfur.xml b/bld/namelist_files/use_cases/sd_waccm_sulfur.xml deleted file mode 100644 index d035ea8b79..0000000000 --- a/bld/namelist_files/use_cases/sd_waccm_sulfur.xml +++ /dev/null @@ -1,142 +0,0 @@ - - - - - -atm/cam/solar/spectral_irradiance_Lean_1950-2012_daily_Leap_c130227.nc - - -atm/cam/chem/trop_mozart_aero/aero -aero_rcp45_v1_1.9x2.5_L26_1995-2105_c100316.nc -INTERP_MISSING_MONTHS - - -atm/cam/chem/trop_mozart_aero/aero -aerosoldep_rcp4.5_monthly_1849-2104_1.9x2.5_c100402.nc -'INTERP_MISSING_MONTHS' -0 - -20100101 - yearly - - -atm/waccm/ic/f40.2008-2011.2deg.wcm.sd.carma.sulf.002.cam2.i.2010-01-01-00000.nc - - - - -atm/waccm/lb/LBC_1765-2500_1.9x2.5_CMIP5_RCP45_za_c120204.nc -'SERIAL' - -atm/waccm/ub/tgcm_ubc_1850-2100_c100204.nc -INTERP_MISSING_MONTHS - - -CYCLICAL -2000 - - -.false. - - - - -.true. -'SERIAL' -atm/cam/chem/2000-2100_RCP45/IPCC_emissions_RCP45_aircraft_NO2_2000-2100_1.9x2.5.nc - -atm/cam/chem/2000-2100_RCP45/IPCC_emissions_houw_CH2O_2000-2100_1.9x2.5.nc -atm/cam/chem/2000-2100_RCP45/IPCC_emissions_houw_CO_2000-2100_1.9x2.5.nc -atm/cam/chem/2000-2100_RCP45/IPCC_emissions_houw_NOx_2000-2100_1.9x2.5.nc -atm/cam/chem/2000-2100_RCP45/IPCC_emissions_houw_SO2_2000-2100_1.9x2.5.nc -'SERIAL' - - - -atm/waccm/solar/wasolar_1947-2012_daily_c130227.nc - - -atm/waccm/solar/spes_1963-2012_c130307.nc -'Prod' - - - -1,10,20,73,365 -0,-240,-240,-24,-24 -'A','I','I','A','A' - - - - 'BR', 'BRCL', 'BRO', 'BRONO2', 'CCL4', 'CF2CLBR', 'CF3BR', - 'CFC11', 'CFC113', 'CFC12', 'CH2O', 'CH3BR', 'CH3CCL3', 'CH3CL', 'CH3O2', 'CH3OOH', - 'CH4', 'CL', 'CL2', 'CL2O2', 'CLDHGH', 'CLDLOW', 'CLDMED', 'CLDTOT', 'CLO', 'CLONO2', - 'CLOUD', 'CO', 'CO2', 'DTCOND', 'DTV', 'DUV', 'DVV', 'EKGW', 'FLNS', 'FLNSC', 'FLNT', - 'FLNTC', 'FSDS', 'FSNS', 'FSNSC', 'FSNT', 'FSNTC', 'H', 'H2', 'H2O', 'H2O2', 'HBR', - 'HCFC22', 'HCL', 'HNO3', 'HO2', 'HO2NO2', 'HOBR', 'HOCL', 'HORZ', 'LANDFRAC', 'LHFLX', - 'N', 'N2O', 'N2O5', 'NO', 'NO2', 'NO3', 'O', 'O1D', 'O2', 'O3', - 'OCLO', 'OCNFRAC', 'OH', 'OMEGA', 'PHIS', 'PRECC', 'PRECL', 'PS', 'Q', 'QFLX', - 'QPERT', 'QRL', 'QRLNLTE', 'QRS', 'RELHUM', 'SHFLX', 'SOLIN', 'SWCF', 'QCP', - 'QTHERMAL', 'QRL_TOT', 'QRS_TOT', 'QJOULE', 'PSL', 'HNO3_STS', 'HNO3_NAT', - 'HNO3_GAS', 'NO_Aircraft', 'NO_Lightning', 'QNO', 'QRS_AUR', 'QRS_CO2NIR', 'QRS_EUV', - 'SAD_ICE', 'SAD_LNAT', 'SAD_SULFC', 'T', 'TREFHT', - 'TTGW', 'U', 'UTGWORO', 'UTGWSPEC', 'V', 'VERT', 'VTGWORO', 'VTGWSPEC', 'Z3', 'O2_1S', - 'O2_1D', 'NOX', 'NOY', 'CLOX', 'CLOY', 'BROX', 'BROY', 'TCLY', 'TOTH', 'QJOULE', 'UI', - 'VI', 'UIONTEND', 'VIONTEND', 'DTCORE', 'T_24_COS', 'T_24_SIN', 'T_12_COS', 'T_12_SIN', - 'OMEGA_24_COS', 'OMEGA_24_SIN', 'OMEGA_12_COS', 'OMEGA_12_SIN', - 'U_24_COS', 'U_24_SIN', 'U_12_COS', 'U_12_SIN', 'V_24_COS', 'V_24_SIN', 'V_12_COS', - 'V_12_SIN', 'PS_24_COS', 'PS_24_SIN', 'PS_12_COS', 'PS_12_SIN', 'CLDLIQ','CLDICE','CONCLD', - 'FRONTGF:I', 'BUTGWSPEC', 'BTAUE', 'BTAUW', 'BTAUN', 'BTAUS','TAUE','TAUW','TAUN','TAUS', - 'TAUGWX', 'TAUGWY', 'TAUX','TAUY','SNOWHLND','SNOWHICE','ICEFRAC','FSDSC','SFNO', 'SFCO', - 'SFCH2O','CFC11STAR' - - - - - 'PS', 'Z3', 'T', 'U', 'V', 'FLNT','PSL', - 'OMEGA','FSDS','FSDSC','CLOUD','CONCLD','SNOWHLND','SNOWHICE', - 'CH3CL', 'CFC11', 'CFC12', 'CFC113', 'HCFC22', 'CCL4', 'CH3CCL3', - 'CH3BR', 'CF3BR', 'CF2CLBR', - 'CO', 'CO2', 'CH2O', 'CH3OOH', 'CH4', - 'O3', 'O', 'O1D', - 'N', 'NO', 'NO2', 'NO3', 'N2O5', 'HNO3', 'HO2NO2', 'NOX', 'NOY', 'N2O', - 'H', 'H2', 'OH', 'HO2', 'H2O2', 'H2O', - 'CL','CL2', 'CLO', 'OCLO', 'CL2O2', 'CLONO2', 'HOCL', 'HCL', 'CLOX', 'CLOY', - 'BR', 'BRO', 'HOBR', 'HBR', 'BRCL', 'BRONO2', 'BROX', 'BROY', 'TCLY', - 'jo2_a', 'jo2_b', 'jo3_a', 'jo3_b', 'jhocl', 'jno3_b', 'jcl2o2', - 'SAD_SULFC', 'SAD_LNAT', 'SAD_ICE', - 'O2', 'CLDLIQ', 'CLDICE', 'ASDIR', - 'VTHzm', 'WTHzm', 'UVzm', 'UWzm', 'TH', 'MSKtem' - - - - - 'PS:B', 'T:B', 'Z3:B', 'U:B', 'V:B', 'CO:B', 'CO2:B', - 'H2:B', 'O:B', 'O2:B', 'O3:B', 'H:B', 'OH:B', 'HO2:B', 'H2O:B', - 'N:B', 'NO:B', 'NO2:B', 'O1D:B', 'O2_1S:B', 'O2_1D:B', 'N2D:B', - 'Np:B', 'N2p:B', 'Op:B', 'O2p:B', 'NOp:B', 'e:B', 'QRL_TOT:B', - 'QRS_TOT:B', 'QJOULE:B', 'jno3_a:B', 'jno3_b:B', 'jcl2o2:B', 'CL2O2:B', 'CLO:B', - 'BRO:B', 'NO3:B', 'DTCORE:B', 'DTV:B', 'TTGW:B','OMEGA:B' - - - 'PS', 'PSL', 'U', 'V', 'T', 'Z3', 'PHIS','FRONTGF:I', 'OMEGA' - - - - 'MSKtem', 'PS', 'PSL', 'VTHzm', 'UVzm', 'UWzm', 'Uzm', 'Vzm', 'THzm','Wzm', 'PHIS' - - -50. -60. -0.1 -.true. -'2010/GEOS5.2_19x2_20100101.nc' -atm/cam/met/GEOS5 -atm/cam/met/GEOS5_filenames_list_c120516.txt - - -atm/cam/met/USGS-gtopo30_1.9x2.5_phys_geos5_c100929.nc - - -1850-2000 - - diff --git a/bld/namelist_files/use_cases/waccm_carma_bc_2013_cam4.xml b/bld/namelist_files/use_cases/waccm_carma_bc_2013_cam4.xml deleted file mode 100644 index 1429770e8e..0000000000 --- a/bld/namelist_files/use_cases/waccm_carma_bc_2013_cam4.xml +++ /dev/null @@ -1,141 +0,0 @@ - - - - -'aerosoldep_rcp4.5_monthly_1849-2104_1.9x2.5_c100402.nc' -'SERIAL' - - -atm/cam/solar/spectral_irradiance_Lean_1950-2140_daily_c100804.nc - - -atm/waccm/solar/spe_data_1963-2140_c100823.nc -'Prod' - - -atm/cam/chem/trop_mozart_aero/aero -aero_rcp45_v1_1.9x2.5_L26_1995-2105_c100316.nc -INTERP_MISSING_MONTHS - - -atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_1849-2006_1.9x2.5_c090803.nc -INTERP_MISSING_MONTHS - -20130101 - yearly - - -0.90D0 - - -atm/waccm/ic/b40.rcp4_5.2deg.wcm.carma.bc5tg.IndPak.002.cam2.i.2013-01-01-00000.nc - - - - - - -atm/waccm/lb/LBC_1765-2500_1.9x2.5_CMIP5_RCP45_za_c120204.nc -'SERIAL' - -atm/waccm/ub/tgcm_ubc_1850-2100_c100204.nc -INTERP_MISSING_MONTHS - - -atm/waccm/sulf/SAD_SULF_1849-2100_1.9x2.5_c090817.nc -'SERIAL' - - -.false. -atm/waccm/qbo/qbocoefficients_c091230.nc' - - -.true. - - - - -.true. -'SERIAL' -atm/cam/chem/2000-2100_RCP45/IPCC_emissions_RCP45_aircraft_NO2_2000-2100_1.9x2.5.nc -atm/waccm/emis/emis.air.1870.nc - -atm/cam/chem/2000-2100_RCP45/IPCC_emissions_houw_CH2O_2000-2100_1.9x2.5.nc -atm/cam/chem/2000-2100_RCP45/IPCC_emissions_houw_CO_2000-2100_1.9x2.5.nc -atm/cam/chem/2000-2100_RCP45/IPCC_emissions_houw_NOx_2000-2100_1.9x2.5.nc -'SERIAL' - - -atm/waccm/solar/wasolar_1948-2140_daily_c120306.nc - - - - 1, 10, 20, 7, 365 - 0, -240, -240, -24, -24 - 'A', 'I', 'I', 'A', 'A' - - - - 'BR', 'BRCL', 'BRO', 'BRONO2', 'CCL4', 'CF2CLBR', 'CF3BR', - 'CFC11', 'CFC113', 'CFC12', 'CH2O', 'CH3BR', 'CH3CCL3', 'CH3CL', 'CH3O2', 'CH3OOH', - 'CH4', 'CL', 'CL2', 'CL2O2', 'CLDHGH', 'CLDLOW', 'CLDMED', 'CLDTOT', 'CLO', 'CLONO2', - 'CLOUD', 'CO', 'CO2', 'DTCOND', 'DTV', 'DUV', 'DVV', 'EKGW', 'FLNS', 'FLNSC', 'FLNT', - 'FLNTC', 'FSDS', 'FSNS', 'FSNSC', 'FSNT', 'FSNTC', 'H', 'H2', 'H2O', 'H2O2', 'HBR', - 'HCFC22', 'HCL', 'HNO3', 'HO2', 'HO2NO2', 'HOBR', 'HOCL', 'HORZ', 'LANDFRAC', 'LHFLX', - 'N', 'N2O', 'N2O5', 'NO', 'NO2', 'NO3', 'O', 'O1D', 'O2', 'O3', - 'OCLO', 'OCNFRAC', 'OH', 'OMEGA', 'PHIS', 'PRECC', 'PRECL', 'PS', 'Q', 'QFLX', - 'QPERT', 'QRL', 'QRLNLTE', 'QRS', 'RELHUM', 'SHFLX', 'SOLIN', 'SWCF', 'QCP', - 'QTHERMAL', 'QRL_TOT', 'QRS_TOT', 'QJOULE', 'PSL', 'HNO3_STS', 'HNO3_NAT', - 'HNO3_GAS', 'NO_Aircraft', 'NO_Lightning', 'QNO', 'QRS_AUR', 'QRS_CO2NIR', 'QRS_EUV', - 'SAD_ICE', 'SAD_LNAT', 'SAD_SULFC', 'T', 'TREFHT', - 'TTGW', 'U', 'UTGWORO', 'UTGWSPEC', 'V', 'VERT', 'VTGWORO', 'VTGWSPEC', 'Z3', 'O2_1S', - 'O2_1D', 'NOX', 'NOY', 'CLOX', 'CLOY', 'BROX', 'BROY', 'TCLY', 'TOTH', 'QJOULE', 'UI', - 'VI', 'UIONTEND', 'VIONTEND', 'DTCORE', 'T_24_COS', 'T_24_SIN', 'T_12_COS', 'T_12_SIN', - 'OMEGA_24_COS', 'OMEGA_24_SIN', 'OMEGA_12_COS', 'OMEGA_12_SIN', - 'U_24_COS', 'U_24_SIN', 'U_12_COS', 'U_12_SIN', 'V_24_COS', 'V_24_SIN', 'V_12_COS', - 'V_12_SIN', 'PS_24_COS', 'PS_24_SIN', 'PS_12_COS', 'PS_12_SIN', 'CLDLIQ','CLDICE','CONCLD', - 'FRONTGF:I', 'BUTGWSPEC', 'BTAUE', 'BTAUW', 'BTAUN', 'BTAUS','TAUE','TAUW','TAUN','TAUS', - 'TAUGWX', 'TAUGWY', 'TAUX','TAUY','SNOWHLND','SNOWHICE','ICEFRAC','FSDSC','SFNO', 'SFCO', - 'SFCH2O','CFC11STAR','TROPP_FD' - - - - - 'PS', 'Z3', 'T', 'U', 'V', 'FLNT','PSL', - 'OMEGA','FSDS','FSDSC','CLOUD','CONCLD','SNOWHLND','SNOWHICE', - 'CH3CL', 'CFC11', 'CFC12', 'CFC113', 'HCFC22', 'CCL4', 'CH3CCL3', - 'CH3BR', 'CF3BR', 'CF2CLBR', - 'CO', 'CO2', 'CH2O', 'CH3OOH', 'CH4', - 'O3', 'O', 'O1D', - 'N', 'NO', 'NO2', 'NO3', 'N2O5', 'HNO3', 'HO2NO2', 'NOX', 'NOY', 'N2O', - 'H', 'H2', 'OH', 'HO2', 'H2O2', 'H2O', - 'CL','CL2', 'CLO', 'OCLO', 'CL2O2', 'CLONO2', 'HOCL', 'HCL', 'CLOX', 'CLOY', - 'BR', 'BRO', 'HOBR', 'HBR', 'BRCL', 'BRONO2', 'BROX', 'BROY', 'TCLY', - 'jo2_a', 'jo2_b', 'jo3_a', 'jo3_b', 'jhocl', 'jno3_b', 'jcl2o2', - 'SAD_SULFC', 'SAD_LNAT', 'SAD_ICE', - 'O2', 'CLDLIQ', 'CLDICE', 'ASDIR', - 'VTHzm', 'WTHzm', 'UVzm', 'UWzm', 'TH', 'MSKtem' - - - - - 'PS:B', 'T:B', 'Z3:B', 'U:B', 'V:B', 'CO:B', 'CO2:B', - 'H2:B', 'O:B', 'O2:B', 'O3:B', 'H:B', 'OH:B', 'HO2:B', 'H2O:B', - 'N:B', 'NO:B', 'NO2:B', 'O1D:B', 'O2_1S:B', 'O2_1D:B', 'N2D:B', - 'Np:B', 'N2p:B', 'Op:B', 'O2p:B', 'NOp:B', 'e:B', 'QRL_TOT:B', - 'QRS_TOT:B', 'QJOULE:B', 'jno3_a:B', 'jno3_b:B', 'jcl2o2:B', 'CL2O2:B', 'CLO:B', - 'BRO:B', 'NO3:B', 'DTCORE:B', 'DTV:B', 'TTGW:B','OMEGA:B' - - - 'PS', 'PSL', 'U', 'V', 'T', 'Z3', 'PHIS','FRONTGF:I', 'OMEGA' - - - - 'MSKtem', 'PS', 'PSL', 'VTHzm', 'UVzm', 'UWzm', 'Uzm', 'Vzm', 'THzm','Wzm', 'PHIS' - - - -1850-2000 - - From e64c9a3140d78b1679ae015a18024cb01f9e7bb4 Mon Sep 17 00:00:00 2001 From: Steve Goldhaber Date: Tue, 14 Jul 2026 17:57:15 +0200 Subject: [PATCH 4/6] Update CO2, fuel, and ozone forcing files Remove obsolete but potentially dangerous code --- bld/namelist_files/namelist_defaults_cam.xml | 28 ++++++++----------- bld/namelist_files/namelist_definition.xml | 8 +----- .../use_cases/hist_camnor_lt_osloaero.xml | 18 ++++++------ src/chemistry/utils/tracer_data.F90 | 16 +---------- src/dynamics/fv/metdata.F90 | 15 ---------- 5 files changed, 23 insertions(+), 62 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml index 235e165114..0978e20a28 100644 --- a/bld/namelist_files/namelist_defaults_cam.xml +++ b/bld/namelist_files/namelist_defaults_cam.xml @@ -656,8 +656,8 @@ .true. -atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_0.9x1.25_c20181011.nc -share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc +atm/cam/ggas/emissions-cmip7_CO2_anthro_surface_CMIP_CEDS-CMIP-2025-04-18_185001-202312_0.5x0.5_c20250119.nc +share/meshes/0.5x0.5_ESMFmesh_c20260714.nc nearest 2000 2000 @@ -665,13 +665,13 @@ 1850 1850 1 -1850 -2015 -1850 +1850 +2023 +1850 -atm/cam/ggas/emissions-cmip6_CO2_anthro_ac_175001-201512_fv_0.9x1.25_c20181011.nc -share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc +atm/cam/ggas/emissions-cmip7_CO2_anthro_ac_CMIP_CEDS-CMIP-2025-04-18_185001-202312_0.5x0.5_c20250119.nc +share/meshes/0.5x0.5_ESMFmesh_c20260714.nc nearest 2000 2000 @@ -679,9 +679,9 @@ 1850 1850 1 -1850 -2015 -1850 +1850 +2023 +1850 atm/cam/ggas/noaamisc.r8.nc @@ -923,10 +923,6 @@ atm/cam/chem/trop_mozart/emis/emissions.aircraft.T42LR.nc -atm/cam/chem/trop_mozart/emis/extfrc.CO.1.9x2.5_c101206.nc -atm/cam/chem/trop_mozart/emis/extfrc.NO.1.9x2.5_c101206.nc -atm/cam/chem/trop_mozart/emis/extfrc.SO2.1.9x2.5_c101206.nc - atm/cam/chem/emis/1992-2010/emissions.BIGALK.surface.1.9x2.5_c110426.nc atm/cam/chem/emis/1992-2010/emissions.BIGENE.surface.1.9x2.5_c110426.nc @@ -2028,12 +2024,12 @@ 2000 1850 -1850 +1850 2010 2000 1850 -2015 +2022 2010 1 diff --git a/bld/namelist_files/namelist_definition.xml b/bld/namelist_files/namelist_definition.xml index 6924c798e3..09471b0ec4 100644 --- a/bld/namelist_files/namelist_definition.xml +++ b/bld/namelist_files/namelist_definition.xml @@ -1106,12 +1106,6 @@ Name of file that contains names of the offline meteorology data files. Default: none - -TRUE => the offline meteorology file will be removed from local disk when no longer needed. -Default: FALSE - - (km) top of relaxation region of winds for offline waccm @@ -10163,7 +10157,7 @@ Default: false - Scales the relative humidity in the optical calculations - within OSLO_AERO for modes 1-5 + within OSLO_AERO for modes 1-5 - RH not scaled for dust (modes 6-7) or seasalt (modes 8-10) Default: 1.0 diff --git a/bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml b/bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml index 4cf0473493..0deba42616 100644 --- a/bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml +++ b/bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml @@ -15,17 +15,17 @@ 'SERIAL' - 'atm/cam/ozone_strataero' - 'ozone_strataero_WACCM_L70_zm5day_18500101-21010201_CMIP6histEnsAvg_SSP245_c190403.nc' - 'O3' - SERIAL + 'atm/cam/ozone_strataero' + 'ozone_strataero_b.e30_alpha08o.BHISTC_MTt4s.ne30_t232_wgx3.330_branch_1850_1850_2021_transient_zm_5day_c20260625.nc' + 'O3' + SERIAL - 'atm/cam/tracer_cnst' - 'tracer_cnst_halons_3D_L70_1849-2101_CMIP6ensAvg_SSP2-4.5_c190403.nc' - 'O3','OH','NO3','HO2' - INTERP_MISSING_MONTHS - '' + 'atm/cam/tracer_cnst' + 'tracer_cnst_halons_3D_L70_1849-2101_CMIP6ensAvg_SSP2-4.5_c190403.nc' + 'O3','OH','NO3','HO2' + INTERP_MISSING_MONTHS + '' INTERP_MISSING_MONTHS diff --git a/src/chemistry/utils/tracer_data.F90 b/src/chemistry/utils/tracer_data.F90 index 578e3b0951..fcb8c6fe26 100644 --- a/src/chemistry/utils/tracer_data.F90 +++ b/src/chemistry/utils/tracer_data.F90 @@ -84,7 +84,6 @@ module tracer_data integer :: interp_recs real(r8), pointer, dimension(:) :: curr_data_times => null() real(r8), pointer, dimension(:) :: next_data_times => null() - logical :: remove_trc_file = .false. ! delete file when finished with it real(r8) :: offset_time integer :: cyc_ndx_beg integer :: cyc_ndx_end @@ -176,7 +175,7 @@ subroutine trcdata_init( specifier, filename, filelist, datapath, flds, file, & character(len=*), intent(in) :: datapath type(trfld), dimension(:), pointer :: flds type(trfile), intent(inout) :: file - logical, intent(in) :: rmv_file + logical, intent(in) :: rmv_file ! Note, no longer used integer, intent(in) :: data_cycle_yr integer, intent(in) :: data_fixed_ymd integer, intent(in) :: data_fixed_tod @@ -214,7 +213,6 @@ subroutine trcdata_init( specifier, filename, filelist, datapath, flds, file, & if (mxnflds < 1) return - file%remove_trc_file = rmv_file file%pathname = trim(datapath) file%filenames_list = trim(filelist) @@ -2706,18 +2704,6 @@ subroutine advance_file(file) !----------------------------------------------------------------------- call pio_closefile( file%curr_fileid ) - !----------------------------------------------------------------------- - ! remove if requested - !----------------------------------------------------------------------- - if( file%remove_trc_file ) then - call getfil( file%curr_filename, loc_fname, 0 ) - write(iulog,'(2a)') 'advance_file: removing file = ',trim(loc_fname) - ctmp = 'rm -f ' // trim(loc_fname) - write(iulog,'(a)') 'advance_file: fsystem issuing command - ' - write(iulog,'(a)') trim(ctmp) - call shr_sys_system( ctmp, istat ) - end if - !----------------------------------------------------------------------- ! Advance the filename and file id !----------------------------------------------------------------------- diff --git a/src/dynamics/fv/metdata.F90 b/src/dynamics/fv/metdata.F90 index 06957af5ef..478f27f1e8 100644 --- a/src/dynamics/fv/metdata.F90 +++ b/src/dynamics/fv/metdata.F90 @@ -82,7 +82,6 @@ module metdata real(r8), allocatable :: met_ps_curr(:,:) ! PS interpolated to next timestep logical :: met_cell_wall_winds = .false. ! true => met data winds are defined on model grid cell walls - logical :: met_remove_file = .false. ! delete metdata file when finished with it character(len=16) :: met_shflx_name = 'SHFLX' character(len=16) :: met_qflx_name = 'QFLX' @@ -263,7 +262,6 @@ subroutine metdata_readnl(nlfile) namelist /metdata_nl/ & met_data_file, & met_data_path, & - met_remove_file, & met_cell_wall_winds, & met_filenames_list, & met_rlx_top, & @@ -308,7 +306,6 @@ subroutine metdata_readnl(nlfile) call mpibcast (met_data_file ,len(met_data_file) ,mpichar,0,mpicom) call mpibcast (met_data_path ,len(met_data_path) ,mpichar,0,mpicom) - call mpibcast (met_remove_file ,1 ,mpilog, 0, mpicom ) call mpibcast (met_cell_wall_winds,1 ,mpilog, 0, mpicom ) call mpibcast (met_filenames_list ,len(met_filenames_list),mpichar,0,mpicom) call mpibcast (met_rlx_top, 1 ,mpir8, 0, mpicom ) @@ -335,7 +332,6 @@ subroutine metdata_readnl(nlfile) if (masterproc) then write(iulog,*)'Time-variant meteorological dataset (met_data_file) is: ', trim(met_data_file) - write(iulog,*)'Meteorological data file will be removed (met_remove_file): ', met_remove_file write(iulog,*)'Meteorological winds are on cell walls (met_cell_wall_winds): ', met_cell_wall_winds write(iulog,*)'Meteorological file names list file: ', trim(met_filenames_list) write(iulog,*)'Meteorological relax ramp region top at top is (km): ', met_rlx_top @@ -1315,17 +1311,6 @@ subroutine check_files() ! close current file ... call pio_closefile( curr_fileid ) - if (masterproc) then - ! remove if requested - if( met_remove_file ) then - call getfil( curr_filename, loc_fname, 0 ) - write(iulog,*) 'check_files: removing file = ',trim(loc_fname) - ctmp = 'rm -f ' // trim(loc_fname) - write(iulog,*) 'check_files: fsystem issuing command - ' - write(iulog,*) trim(ctmp) - call shr_sys_system( ctmp, istat ) - end if - endif curr_filename = next_filename curr_fileid = next_fileid From cc77ee2835cec33e67813591f1b7ae3e9ea1948b Mon Sep 17 00:00:00 2001 From: Steve Goldhaber Date: Tue, 14 Jul 2026 23:10:44 +0200 Subject: [PATCH 5/6] Try to restore working rad_climate --- bld/namelist_files/use_cases/1850_camnor_lt_ghgosloaero.xml | 2 ++ bld/namelist_files/use_cases/1850_camnor_lt_osloaero.xml | 4 ++++ ...amnor_lt_osloaero.xml => 1979-2022_camnor_lt_osloaero.xml} | 3 +++ bld/namelist_files/use_cases/2000_camnor_osloaero.xml | 3 +++ bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml | 3 +++ cime_config/config_component.xml | 2 +- 6 files changed, 16 insertions(+), 1 deletion(-) rename bld/namelist_files/use_cases/{1979-2021_camnor_lt_osloaero.xml => 1979-2022_camnor_lt_osloaero.xml} (97%) diff --git a/bld/namelist_files/use_cases/1850_camnor_lt_ghgosloaero.xml b/bld/namelist_files/use_cases/1850_camnor_lt_ghgosloaero.xml index f5a6e1da1b..1ede99a567 100644 --- a/bld/namelist_files/use_cases/1850_camnor_lt_ghgosloaero.xml +++ b/bld/namelist_files/use_cases/1850_camnor_lt_ghgosloaero.xml @@ -93,6 +93,8 @@ 'SO4_PR -> 0.025*$INPUTDATA_ROOT/atm/cam/chem/emis/cmip7_emissions_version20260209/ne30pg3/emissions_cmip7_noresm3_S_anthrosurfALL_surface_1850_ne30pg3_CEDS-CMIP-2025-04-18_version20260209.nc' +'A:Q:H2O','N:O2:O2','A:CO2:CO2','N:ozone:O3','A:N2O:N2O','A:CH4:CH4','N:CFC11STAR:CFC11','A:CFC12:CFC12' + 'isoprene = isoprene','monoterp = myrcene + sabinene + limonene+ carene_3 + ocimene_t_b + pinene_b + pinene_a' diff --git a/bld/namelist_files/use_cases/1850_camnor_lt_osloaero.xml b/bld/namelist_files/use_cases/1850_camnor_lt_osloaero.xml index 4d53344105..03b7d0a46f 100644 --- a/bld/namelist_files/use_cases/1850_camnor_lt_osloaero.xml +++ b/bld/namelist_files/use_cases/1850_camnor_lt_osloaero.xml @@ -96,6 +96,10 @@ 'SO4_PR -> 0.025*$INPUTDATA_ROOT/atm/cam/chem/emis/cmip7_emissions_version20260209/ne30pg3/emissions_cmip7_noresm3_S_anthrosurfALL_surface_1850_ne30pg3_CEDS-CMIP-2025-04-18_version20260209.nc' +'A:Q:H2O','N:O2:O2','N:CO2:CO2','N:ozone:O3','N:N2O:N2O','N:CH4:CH4','N:CFC11:CFC11','N:CFC12:CFC12' +'A:Q:H2O','N:O2:O2','A:CO2:CO2','N:ozone:O3','N:N2O:N2O','N:CH4:CH4','N:CFC11:CFC11','N:CFC12:CFC12' + + 'isoprene = isoprene','monoterp = myrcene + sabinene + limonene+ carene_3 + ocimene_t_b + pinene_b + pinene_a' diff --git a/bld/namelist_files/use_cases/1979-2021_camnor_lt_osloaero.xml b/bld/namelist_files/use_cases/1979-2022_camnor_lt_osloaero.xml similarity index 97% rename from bld/namelist_files/use_cases/1979-2021_camnor_lt_osloaero.xml rename to bld/namelist_files/use_cases/1979-2022_camnor_lt_osloaero.xml index 3ab33092bb..5adfc57ca7 100644 --- a/bld/namelist_files/use_cases/1979-2021_camnor_lt_osloaero.xml +++ b/bld/namelist_files/use_cases/1979-2022_camnor_lt_osloaero.xml @@ -97,6 +97,9 @@ atm/cam/volc/cmip7_volcaod_v20260105 UOEXETER-CMIP-2-2-1_175001-202312_intpwghtavg_v20260105.nc +'A:Q:H2O','N:O2:O2','N:CO2:CO2','N:ozone:O3','N:N2O:N2O','N:CH4:CH4','N:CFC11:CFC11','N:CFC12:CFC12' +'A:Q:H2O','N:O2:O2','A:CO2:CO2','N:ozone:O3','N:N2O:N2O','N:CH4:CH4','N:CFC11:CFC11','N:CFC12:CFC12' + 1979-2022 diff --git a/bld/namelist_files/use_cases/2000_camnor_osloaero.xml b/bld/namelist_files/use_cases/2000_camnor_osloaero.xml index 428ec79fff..970cf25edf 100644 --- a/bld/namelist_files/use_cases/2000_camnor_osloaero.xml +++ b/bld/namelist_files/use_cases/2000_camnor_osloaero.xml @@ -85,6 +85,9 @@ 4 .true. +'A:Q:H2O','N:O2:O2','N:CO2:CO2','N:ozone:O3','N:N2O:N2O','N:CH4:CH4','N:CFC11:CFC11','N:CFC12:CFC12' +'A:Q:H2O','N:O2:O2','A:CO2:CO2','N:ozone:O3','N:N2O:N2O','N:CH4:CH4','N:CFC11:CFC11','N:CFC12:CFC12' + 2000 diff --git a/bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml b/bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml index 0deba42616..8c6d02085e 100644 --- a/bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml +++ b/bld/namelist_files/use_cases/hist_camnor_lt_osloaero.xml @@ -91,6 +91,9 @@ SERIAL +'A:Q:H2O','N:O2:O2','N:CO2:CO2','N:ozone:O3','N:N2O:N2O','N:CH4:CH4','N:CFC11:CFC11','N:CFC12:CFC12' +'A:Q:H2O','N:O2:O2','A:CO2:CO2','N:ozone:O3','N:N2O:N2O','N:CH4:CH4','N:CFC11:CFC11','N:CFC12:CFC12' + 'isoprene = isoprene','monoterp = myrcene + sabinene + limonene+ carene_3 + ocimene_t_b + pinene_b + pinene_a' diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index 86d1b55a16..a7761c4c78 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -358,7 +358,7 @@ hist_camnor_lt_osloaero 2000_camnor_tropmam4 2000_camnor_osloaero - 1979-2021_camnor_lt_osloaero + 1979-2022_camnor_lt_osloaero From 1f582bcff00411098cd15ae5d718b5646bc0e49e Mon Sep 17 00:00:00 2001 From: Steve Goldhaber Date: Fri, 17 Jul 2026 15:43:05 +0200 Subject: [PATCH 6/6] Update Oslo Aero tag --- .gitmodules | 2 +- src/chemistry/oslo_aero | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 173d8fccdb..cca583970f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -85,7 +85,7 @@ [submodule "oslo_aero"] path = src/chemistry/oslo_aero url = https://github.com/NorESMhub/OSLO_AERO - fxtag = oslo_aero_3_0a013 + fxtag = oslo_aero_3_0a014 fxrequired = AlwaysRequired fxDONOTUSEurl = https://github.com/NorESMhub/OSLO_AERO.git diff --git a/src/chemistry/oslo_aero b/src/chemistry/oslo_aero index cad2a0763c..e9d3574bc0 160000 --- a/src/chemistry/oslo_aero +++ b/src/chemistry/oslo_aero @@ -1 +1 @@ -Subproject commit cad2a0763c3334145bd452fe8d5854fe1c1abbb9 +Subproject commit e9d3574bc007fd3e552ab7aef5270cc65a564113