From cc82ee9c075fad478bd75f811947c34ee051d321 Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Thu, 16 Jul 2026 08:38:29 -0600 Subject: [PATCH 1/6] Jun's fix cld frac; CLM50 in FMOZ; rm unused module modified: cime_config/config_compsets.xml modified: src/chemistry/mozart/mo_tuvx.F90 deleted: src/chemistry/mozart/mo_setaer.F90 --- cime_config/config_compsets.xml | 4 +- src/chemistry/mozart/mo_setaer.F90 | 1191 ---------------------------- src/chemistry/mozart/mo_tuvx.F90 | 9 +- 3 files changed, 8 insertions(+), 1196 deletions(-) delete mode 100644 src/chemistry/mozart/mo_setaer.F90 diff --git a/cime_config/config_compsets.xml b/cime_config/config_compsets.xml index fc4defda74..162da5d267 100644 --- a/cime_config/config_compsets.xml +++ b/cime_config/config_compsets.xml @@ -14,7 +14,7 @@ Where for the CAM specific compsets below the following is supported TIME = Time period (e.g. 2000, HIST, RCP8...) ATM = [CAM40, CAM50, CAM60, CAM70] - LND = [CLM45, CLM50, CLM60, SLND] + LND = [CLM50, CLM60, SLND] ICE = [CICE, DICE, SICE] OCN = [DOCN, ,AQUAP, SOCN] ROF = [RTM, SROF] @@ -525,7 +525,7 @@ FMOZ - 2000_CAM40%TMOZ_CLM45%SP_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV + 2000_CAM40%TMOZ_CLM50%SP_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV diff --git a/src/chemistry/mozart/mo_setaer.F90 b/src/chemistry/mozart/mo_setaer.F90 deleted file mode 100644 index 34442f5ae5..0000000000 --- a/src/chemistry/mozart/mo_setaer.F90 +++ /dev/null @@ -1,1191 +0,0 @@ - - module mo_setaer - - use shr_kind_mod, only : r8 => shr_kind_r8 - - implicit none - - private - public :: setaer - - save - - real(r8), parameter :: qext_so4(8,17) = reshape( (/ & ! m^2/gram (NH4)_2(SO4) - 7.15_r8, 10.29_r8, 12.86_r8, 15.45_r8, 21.52_r8, 30.97_r8, 50.30_r8, 72.31_r8, & - 7.15_r8, 10.30_r8, 12.87_r8, 15.48_r8, 21.58_r8, 31.07_r8, 50.43_r8, 72.49_r8, & - 7.14_r8, 10.29_r8, 12.88_r8, 15.51_r8, 21.68_r8, 31.23_r8, 50.67_r8, 72.78_r8, & - 7.12_r8, 10.28_r8, 12.89_r8, 15.55_r8, 21.78_r8, 31.41_r8, 50.94_r8, 73.10_r8, & - 7.09_r8, 10.26_r8, 12.89_r8, 15.57_r8, 21.88_r8, 31.61_r8, 51.27_r8, 73.48_r8, & - 7.06_r8, 10.22_r8, 12.87_r8, 15.59_r8, 21.98_r8, 31.81_r8, 51.64_r8, 73.95_r8, & - 7.01_r8, 10.43_r8, 12.96_r8, 15.24_r8, 22.10_r8, 32.23_r8, 52.39_r8, 74.86_r8, & - 6.96_r8, 10.35_r8, 12.93_r8, 15.20_r8, 22.12_r8, 32.39_r8, 52.72_r8, 75.39_r8, & - 6.89_r8, 10.26_r8, 12.87_r8, 15.16_r8, 22.11_r8, 32.49_r8, 53.05_r8, 75.85_r8, & - 6.54_r8, 9.80_r8, 12.36_r8, 14.68_r8, 21.88_r8, 32.74_r8, 54.25_r8, 77.77_r8, & - 6.21_r8, 9.34_r8, 11.86_r8, 14.14_r8, 21.41_r8, 32.55_r8, 55.02_r8, 79.20_r8, & - 6.07_r8, 9.14_r8, 11.62_r8, 13.88_r8, 21.17_r8, 32.33_r8, 55.08_r8, 79.56_r8, & - 5.90_r8, 8.90_r8, 11.32_r8, 13.57_r8, 20.80_r8, 32.03_r8, 55.17_r8, 80.02_r8, & - 5.31_r8, 8.04_r8, 10.31_r8, 12.42_r8, 19.45_r8, 30.76_r8, 54.62_r8, 80.61_r8, & - 4.56_r8, 6.97_r8, 9.00_r8, 10.92_r8, 17.55_r8, 28.69_r8, 53.02_r8, 80.43_r8, & - 3.23_r8, 5.02_r8, 6.59_r8, 8.09_r8, 13.57_r8, 23.64_r8, 47.11_r8, 75.36_r8, & - 2.37_r8, 3.73_r8, 4.95_r8, 6.14_r8, 10.65_r8, 19.54_r8, 41.41_r8, 69.26_r8 & - /),(/8,17/)) - - real(r8), parameter :: qext_dso4(7,17) = qext_so4(2:8,:) - qext_so4(1:7,:) - - real(r8), parameter :: ssa_so4(8,17) = reshape( (/ & - 1.00000_r8,0.99907_r8,0.99855_r8,0.99810_r8,0.99724_r8,0.99623_r8,0.99469_r8,0.99340_r8, & - 1.00000_r8,0.99976_r8,0.99962_r8,0.99950_r8,0.99928_r8,0.99900_r8,0.99857_r8,0.99820_r8, & - 1.00000_r8,0.99996_r8,0.99994_r8,0.99992_r8,0.99989_r8,0.99984_r8,0.99978_r8,0.99971_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,0.99999_r8,0.99999_r8,0.99999_r8,0.99998_r8,0.99998_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,0.99999_r8,0.99999_r8,0.99999_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8 & - /),(/8,17/)) - - real(r8), parameter :: ssa_dso4(7,17) = ssa_so4(2:8,:) - ssa_so4(1:7,:) - - real(r8), parameter :: asm_so4(8,17) = reshape( (/ & - 0.67_r8, 0.68_r8, 0.68_r8, 0.68_r8, 0.69_r8, 0.70_r8, 0.71_r8, 0.73_r8, & - 0.67_r8, 0.68_r8, 0.68_r8, 0.68_r8, 0.69_r8, 0.70_r8, 0.72_r8, 0.73_r8, & - 0.67_r8, 0.68_r8, 0.69_r8, 0.69_r8, 0.70_r8, 0.70_r8, 0.72_r8, 0.73_r8, & - 0.67_r8, 0.69_r8, 0.69_r8, 0.70_r8, 0.70_r8, 0.71_r8, 0.72_r8, 0.74_r8, & - 0.67_r8, 0.69_r8, 0.70_r8, 0.70_r8, 0.71_r8, 0.71_r8, 0.73_r8, 0.74_r8, & - 0.67_r8, 0.69_r8, 0.70_r8, 0.71_r8, 0.71_r8, 0.72_r8, 0.73_r8, 0.74_r8, & - 0.67_r8, 0.70_r8, 0.71_r8, 0.71_r8, 0.72_r8, 0.72_r8, 0.73_r8, 0.74_r8, & - 0.67_r8, 0.70_r8, 0.71_r8, 0.72_r8, 0.73_r8, 0.73_r8, 0.74_r8, 0.75_r8, & - 0.67_r8, 0.70_r8, 0.71_r8, 0.72_r8, 0.73_r8, 0.74_r8, 0.74_r8, 0.75_r8, & - 0.67_r8, 0.71_r8, 0.72_r8, 0.73_r8, 0.75_r8, 0.75_r8, 0.76_r8, 0.76_r8, & - 0.67_r8, 0.71_r8, 0.73_r8, 0.74_r8, 0.76_r8, 0.76_r8, 0.77_r8, 0.77_r8, & - 0.67_r8, 0.71_r8, 0.73_r8, 0.74_r8, 0.76_r8, 0.77_r8, 0.77_r8, 0.77_r8, & - 0.67_r8, 0.71_r8, 0.73_r8, 0.74_r8, 0.76_r8, 0.77_r8, 0.77_r8, 0.77_r8, & - 0.66_r8, 0.71_r8, 0.73_r8, 0.75_r8, 0.77_r8, 0.77_r8, 0.78_r8, 0.78_r8, & - 0.66_r8, 0.71_r8, 0.73_r8, 0.75_r8, 0.77_r8, 0.78_r8, 0.79_r8, 0.79_r8, & - 0.64_r8, 0.69_r8, 0.72_r8, 0.73_r8, 0.76_r8, 0.78_r8, 0.79_r8, 0.80_r8, & - 0.62_r8, 0.67_r8, 0.70_r8, 0.72_r8, 0.75_r8, 0.77_r8, 0.79_r8, 0.80_r8 & - /),(/8,17/)) - - real(r8), parameter :: asm_dso4(7,17) = asm_so4(2:8,:) - asm_so4(1:7,:) - - real(r8), parameter :: qext_ant(8,17) = reshape( (/ & ! m^2/gram (NH4)NO3 - 7.27_r8, 10.47_r8, 13.08_r8, 15.72_r8, 21.90_r8, 31.51_r8, 51.17_r8, 73.57_r8, & - 7.27_r8, 10.48_r8, 13.09_r8, 15.74_r8, 21.96_r8, 31.60_r8, 51.30_r8, 73.75_r8, & - 7.26_r8, 10.47_r8, 13.10_r8, 15.78_r8, 22.05_r8, 31.77_r8, 51.55_r8, 74.04_r8, & - 7.24_r8, 10.46_r8, 13.11_r8, 15.82_r8, 22.16_r8, 31.96_r8, 51.83_r8, 74.37_r8, & - 7.22_r8, 10.43_r8, 13.11_r8, 15.84_r8, 22.26_r8, 32.15_r8, 52.16_r8, 74.76_r8, & - 7.18_r8, 10.40_r8, 13.10_r8, 15.86_r8, 22.36_r8, 32.37_r8, 52.53_r8, 75.24_r8, & - 7.14_r8, 10.35_r8, 13.06_r8, 15.86_r8, 22.44_r8, 32.58_r8, 52.94_r8, 75.75_r8, & - 7.08_r8, 10.53_r8, 13.15_r8, 15.47_r8, 22.50_r8, 32.95_r8, 53.64_r8, 76.69_r8, & - 7.01_r8, 10.44_r8, 13.09_r8, 15.42_r8, 22.49_r8, 33.05_r8, 53.97_r8, 77.17_r8, & - 6.65_r8, 9.96_r8, 12.57_r8, 14.93_r8, 22.26_r8, 33.31_r8, 55.19_r8, 79.12_r8, & - 6.32_r8, 9.50_r8, 12.06_r8, 14.38_r8, 21.78_r8, 33.11_r8, 55.97_r8, 80.57_r8, & - 6.17_r8, 9.30_r8, 11.82_r8, 14.12_r8, 21.53_r8, 32.89_r8, 56.04_r8, 80.94_r8, & - 6.00_r8, 9.05_r8, 11.52_r8, 13.80_r8, 21.16_r8, 32.59_r8, 56.13_r8, 81.41_r8, & - 5.40_r8, 8.18_r8, 10.49_r8, 12.63_r8, 19.79_r8, 31.29_r8, 55.57_r8, 82.01_r8, & - 4.64_r8, 7.09_r8, 9.16_r8, 11.11_r8, 17.86_r8, 29.19_r8, 53.94_r8, 81.83_r8, & - 3.28_r8, 5.11_r8, 6.70_r8, 8.23_r8, 13.80_r8, 24.05_r8, 47.93_r8, 76.67_r8, & - 2.41_r8, 3.79_r8, 5.04_r8, 6.24_r8, 10.83_r8, 19.88_r8, 42.13_r8, 70.46_r8 & - /),(/8,17/)) - - real(r8), parameter :: qext_dant(7,17) = qext_ant(2:8,:) - qext_ant(1:7,:) - - real(r8), parameter :: ssa_ant(8,17) = reshape( (/ & - 1.00000_r8,0.99907_r8,0.99855_r8,0.99810_r8,0.99724_r8,0.99623_r8,0.99469_r8,0.99340_r8, & - 1.00000_r8,0.99976_r8,0.99962_r8,0.99950_r8,0.99928_r8,0.99900_r8,0.99857_r8,0.99820_r8, & - 1.00000_r8,0.99996_r8,0.99994_r8,0.99992_r8,0.99989_r8,0.99984_r8,0.99978_r8,0.99971_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,0.99999_r8,0.99999_r8,0.99999_r8,0.99998_r8,0.99998_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,0.99999_r8,0.99999_r8,0.99999_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8 & - /),(/8,17/)) - - real(r8), parameter :: ssa_dant(7,17) = ssa_ant(2:8,:) - ssa_ant(1:7,:) - - real(r8), parameter :: asm_ant(8,17) = reshape( (/ & - 0.67_r8, 0.68_r8, 0.68_r8, 0.68_r8, 0.69_r8, 0.70_r8, 0.71_r8, 0.73_r8, & - 0.67_r8, 0.68_r8, 0.68_r8, 0.68_r8, 0.69_r8, 0.70_r8, 0.72_r8, 0.73_r8, & - 0.67_r8, 0.68_r8, 0.69_r8, 0.69_r8, 0.70_r8, 0.70_r8, 0.72_r8, 0.73_r8, & - 0.67_r8, 0.69_r8, 0.69_r8, 0.70_r8, 0.70_r8, 0.71_r8, 0.72_r8, 0.74_r8, & - 0.67_r8, 0.69_r8, 0.70_r8, 0.70_r8, 0.71_r8, 0.71_r8, 0.73_r8, 0.74_r8, & - 0.67_r8, 0.69_r8, 0.70_r8, 0.71_r8, 0.71_r8, 0.72_r8, 0.73_r8, 0.74_r8, & - 0.67_r8, 0.70_r8, 0.71_r8, 0.71_r8, 0.72_r8, 0.72_r8, 0.73_r8, 0.74_r8, & - 0.67_r8, 0.70_r8, 0.71_r8, 0.72_r8, 0.73_r8, 0.73_r8, 0.74_r8, 0.75_r8, & - 0.67_r8, 0.70_r8, 0.71_r8, 0.72_r8, 0.73_r8, 0.74_r8, 0.74_r8, 0.75_r8, & - 0.67_r8, 0.71_r8, 0.72_r8, 0.73_r8, 0.75_r8, 0.75_r8, 0.76_r8, 0.76_r8, & - 0.67_r8, 0.71_r8, 0.73_r8, 0.74_r8, 0.76_r8, 0.76_r8, 0.77_r8, 0.77_r8, & - 0.67_r8, 0.71_r8, 0.73_r8, 0.74_r8, 0.76_r8, 0.77_r8, 0.77_r8, 0.77_r8, & - 0.67_r8, 0.71_r8, 0.73_r8, 0.74_r8, 0.76_r8, 0.77_r8, 0.77_r8, 0.77_r8, & - 0.66_r8, 0.71_r8, 0.73_r8, 0.75_r8, 0.77_r8, 0.77_r8, 0.78_r8, 0.78_r8, & - 0.66_r8, 0.71_r8, 0.73_r8, 0.75_r8, 0.77_r8, 0.78_r8, 0.79_r8, 0.79_r8, & - 0.64_r8, 0.69_r8, 0.72_r8, 0.73_r8, 0.76_r8, 0.78_r8, 0.79_r8, 0.80_r8, & - 0.62_r8, 0.67_r8, 0.70_r8, 0.72_r8, 0.75_r8, 0.77_r8, 0.79_r8, 0.80_r8 & - /),(/8,17/)) - - real(r8), parameter :: asm_dant(7,17) = asm_ant(2:8,:) - asm_ant(1:7,:) - -!-------------------------------------------------------------------- -! dust: bin 1 -!-------------------------------------------------------------------- - real(r8), parameter :: qext_ds1(17) = & - (/ 1.99_r8, 1.99_r8, 1.99_r8, 1.99_r8, 2.00_r8, 2.00_r8, 2.00_r8, 2.01_r8, & - 2.03_r8, 2.13_r8, 2.20_r8, 2.20_r8, 2.20_r8, 2.23_r8, 2.45_r8, 2.82_r8, 2.77_r8 /) - - real(r8), parameter :: ssa_ds1(17) = & - (/ 0.71575_r8, 0.71916_r8, 0.72437_r8, 0.73098_r8, 0.73895_r8, 0.74845_r8, 0.75953_r8, & - 0.77247_r8, 0.78667_r8, 0.84334_r8, 0.88486_r8, 0.89887_r8, 0.91254_r8, 0.94728_r8, & - 0.97546_r8, 0.99257_r8, 0.99627_r8 /) - - real(r8), parameter :: asm_ds1(17) = & - (/ 0.81_r8, 0.80_r8, 0.80_r8, 0.79_r8, 0.78_r8, 0.78_r8, 0.77_r8, 0.76_r8, 0.75_r8, 0.71_r8,& - 0.68_r8, 0.67_r8, 0.65_r8, 0.62_r8, 0.62_r8, 0.68_r8, 0.69_r8 /) -!-------------------------------------------------------------------- -! dust: bin 2 -!-------------------------------------------------------------------- - real(r8), parameter :: qext_ds2(17) = & - (/ 0.77_r8, 0.77_r8, 0.77_r8, 0.77_r8, 0.78_r8, 0.78_r8, 0.78_r8, 0.79_r8, 0.79_r8, 0.79_r8, & - 0.79_r8, 0.80_r8, 0.81_r8, 0.84_r8, 0.84_r8, 0.84_r8, 0.92_r8 /) - - real(r8), parameter :: ssa_ds2(17) = & - (/0.59522_r8, 0.59816_r8, 0.60304_r8, 0.60951_r8, 0.61766_r8, 0.62757_r8, 0.63939_r8,& - 0.65308_r8, 0.66760_r8, 0.72707_r8, 0.78134_r8, 0.80412_r8, 0.82832_r8, 0.88852_r8,& - 0.93596_r8, 0.97452_r8, 0.98760_r8 /) - - real(r8), parameter :: asm_ds2(17) = & - (/0.91_r8, 0.90_r8, 0.90_r8, 0.90_r8, 0.89_r8, 0.89_r8, 0.88_r8, 0.87_r8, 0.87_r8, 0.83_r8, & - 0.80_r8, 0.80_r8, 0.79_r8, 0.76_r8, 0.72_r8, 0.64_r8, 0.62_r8 /) -!-------------------------------------------------------------------- -! dust: bin 3 -!-------------------------------------------------------------------- - real(r8), parameter :: qext_ds3(17) = & - (/0.36_r8, 0.36_r8, 0.36_r8, 0.36_r8, 0.36_r8, 0.36_r8, 0.36_r8, 0.36_r8, 0.36_r8, 0.36_r8, 0.37_r8, & - 0.37_r8, 0.37_r8, 0.37_r8, 0.37_r8, 0.38_r8, 0.38_r8 /) - - real(r8), parameter :: ssa_ds3(17) = & - (/0.54872_r8, 0.54937_r8, 0.55055_r8, 0.55244_r8, 0.55533_r8, 0.55919_r8, 0.56387_r8, 0.56968_r8, & - 0.57716_r8, 0.62358_r8, 0.67763_r8, 0.70405_r8, 0.73102_r8, 0.81296_r8, 0.88850_r8, 0.95481_r8, & - 0.97307_r8/) - - real(r8), parameter :: asm_ds3(17) = & - (/ 0.94_r8, 0.94_r8, 0.94_r8, 0.94_r8, 0.94_r8, 0.94_r8, 0.93_r8, 0.93_r8, 0.92_r8, 0.90_r8, 0.88_r8, & - 0.87_r8, 0.85_r8, 0.82_r8, 0.78_r8, 0.75_r8, 0.73_r8 /) - -!-------------------------------------------------------------------- -! dust: bin 4 -!-------------------------------------------------------------------- - real(r8), parameter :: qext_ds4(17) = & - (/0.18_r8, 0.18_r8, 0.18_r8, 0.18_r8, 0.18_r8, 0.18_r8, 0.18_r8, 0.19_r8, 0.19_r8, 0.19_r8, 0.19_r8, 0.19_r8, & - 0.19_r8, 0.19_r8, 0.19_r8, 0.19_r8, 0.20_r8 /) - - real(r8), parameter :: ssa_ds4(17) = & - (/0.55982_r8, 0.56067_r8, 0.56205_r8, 0.56381_r8, 0.56604_r8, 0.56911_r8, 0.57321_r8, 0.57809_r8, 0.58376_r8, & - 0.60863_r8, 0.62981_r8, 0.64251_r8, 0.65974_r8, 0.73256_r8, 0.82372_r8, 0.92454_r8, 0.95662_r8 /) - - real(r8), parameter :: asm_ds4(17) = & - (/ 0.94_r8, 0.94_r8, 0.94_r8, 0.94_r8, 0.94_r8, 0.93_r8, 0.93_r8, 0.93_r8, 0.93_r8, 0.91_r8, 0.91_r8, 0.90_r8, & - 0.89_r8, 0.87_r8, 0.83_r8, 0.79_r8, 0.77_r8 /) - -!-------------------------------------------------------------------- -! black carbon -!-------------------------------------------------------------------- - real(r8), parameter :: qext_cbs(8,17) = reshape( (/ & - 26.47_r8, 26.47_r8, 26.47_r8, 68.55_r8, 54.51_r8, 68.55_r8, 93.69_r8, 128.49_r8, & - 26.35_r8, 26.35_r8, 26.35_r8, 67.19_r8, 53.53_r8, 67.19_r8, 91.62_r8, 125.62_r8, & - 26.15_r8, 26.15_r8, 26.15_r8, 65.24_r8, 52.13_r8, 65.24_r8, 88.62_r8, 121.44_r8, & - 25.89_r8, 25.89_r8, 25.89_r8, 63.07_r8, 50.57_r8, 63.07_r8, 85.27_r8, 116.72_r8, & - 25.59_r8, 25.59_r8, 25.59_r8, 60.75_r8, 48.90_r8, 60.75_r8, 81.69_r8, 111.62_r8, & - 25.23_r8, 25.23_r8, 25.23_r8, 58.35_r8, 47.17_r8, 58.35_r8, 77.96_r8, 106.29_r8, & - 24.82_r8, 24.82_r8, 24.82_r8, 55.92_r8, 45.41_r8, 55.92_r8, 74.20_r8, 100.86_r8, & - 24.36_r8, 24.36_r8, 24.36_r8, 53.51_r8, 43.65_r8, 53.51_r8, 70.46_r8, 95.43_r8, & - 23.89_r8, 23.89_r8, 23.89_r8, 51.24_r8, 41.98_r8, 51.24_r8, 66.95_r8, 90.33_r8, & - 21.92_r8, 21.92_r8, 21.92_r8, 43.84_r8, 36.46_r8, 43.84_r8, 55.67_r8, 73.81_r8, & - 20.35_r8, 20.35_r8, 20.35_r8, 39.12_r8, 32.87_r8, 39.12_r8, 48.65_r8, 63.58_r8, & - 19.59_r8, 19.59_r8, 19.59_r8, 37.26_r8, 31.38_r8, 37.26_r8, 46.12_r8, 60.08_r8, & - 18.52_r8, 18.52_r8, 18.52_r8, 34.78_r8, 29.37_r8, 34.78_r8, 42.83_r8, 55.62_r8, & - 15.51_r8, 15.51_r8, 15.51_r8, 28.14_r8, 23.92_r8, 28.14_r8, 34.14_r8, 43.91_r8, & - 12.45_r8, 12.45_r8, 12.45_r8, 21.75_r8, 18.64_r8, 21.75_r8, 25.93_r8, 32.95_r8, & - 8.38_r8, 8.38_r8, 8.38_r8, 13.90_r8, 12.07_r8, 13.90_r8, 16.12_r8, 20.04_r8, & - 6.13_r8, 6.13_r8, 6.13_r8, 9.74_r8, 8.56_r8, 9.74_r8, 11.00_r8, 13.35_r8 & - /),(/8,17/)) - - real(r8), parameter :: qext_dcbs(7,17) = qext_cbs(2:8,:) - qext_cbs(1:7,:) - - real(r8), parameter :: ssa_cbs(8,17) = reshape( (/ & - 0.30538_r8,0.30538_r8,0.30538_r8,0.58171_r8,0.52858_r8,0.58171_r8,0.66772_r8,0.73300_r8, & - 0.30531_r8,0.30531_r8,0.30531_r8,0.57816_r8,0.52490_r8,0.57816_r8,0.66490_r8,0.73116_r8, & - 0.30524_r8,0.30524_r8,0.30524_r8,0.57281_r8,0.51947_r8,0.57281_r8,0.66041_r8,0.72800_r8, & - 0.30519_r8,0.30519_r8,0.30519_r8,0.56680_r8,0.51346_r8,0.56680_r8,0.65519_r8,0.72418_r8, & - 0.30520_r8,0.30520_r8,0.30520_r8,0.56029_r8,0.50707_r8,0.56029_r8,0.64937_r8,0.71979_r8, & - 0.30530_r8,0.30530_r8,0.30530_r8,0.55345_r8,0.50049_r8,0.55345_r8,0.64304_r8,0.71487_r8, & - 0.30552_r8,0.30552_r8,0.30552_r8,0.54644_r8,0.49387_r8,0.54644_r8,0.63633_r8,0.70948_r8, & - 0.30588_r8,0.30588_r8,0.30588_r8,0.53936_r8,0.48731_r8,0.53936_r8,0.62932_r8,0.70368_r8, & - 0.30637_r8,0.30637_r8,0.30637_r8,0.53261_r8,0.48117_r8,0.53261_r8,0.62241_r8,0.69779_r8, & - 0.30947_r8,0.30947_r8,0.30947_r8,0.50973_r8,0.46122_r8,0.50973_r8,0.59715_r8,0.67476_r8, & - 0.31199_r8,0.31199_r8,0.31199_r8,0.49449_r8,0.44836_r8,0.49449_r8,0.57921_r8,0.65742_r8, & - 0.30839_r8,0.30839_r8,0.30839_r8,0.48822_r8,0.44229_r8,0.48822_r8,0.57287_r8,0.65174_r8, & - 0.30122_r8,0.30122_r8,0.30122_r8,0.47923_r8,0.43325_r8,0.47923_r8,0.56425_r8,0.64429_r8, & - 0.27707_r8,0.27707_r8,0.27707_r8,0.44969_r8,0.40365_r8,0.44969_r8,0.53566_r8,0.61916_r8, & - 0.24673_r8,0.24673_r8,0.24673_r8,0.41274_r8,0.36689_r8,0.41274_r8,0.49934_r8,0.58653_r8, & - 0.19216_r8,0.19216_r8,0.19216_r8,0.34214_r8,0.29839_r8,0.34214_r8,0.42664_r8,0.51768_r8, & - 0.15153_r8,0.15153_r8,0.15153_r8,0.28528_r8,0.24454_r8,0.28528_r8,0.36566_r8,0.45729_r8 & - /),(/8,17/)) - - real(r8), parameter :: ssa_dcbs(7,17) = ssa_cbs(2:8,:) - ssa_cbs(1:7,:) - - real(r8), parameter :: asm_cbs(8,17) = reshape( (/ & - 0.59_r8, 0.59_r8, 0.59_r8, 0.71_r8, 0.70_r8, 0.71_r8, 0.71_r8, 0.72_r8, & - 0.59_r8, 0.59_r8, 0.59_r8, 0.71_r8, 0.70_r8, 0.71_r8, 0.72_r8, 0.72_r8, & - 0.59_r8, 0.59_r8, 0.59_r8, 0.71_r8, 0.69_r8, 0.71_r8, 0.72_r8, 0.72_r8, & - 0.58_r8, 0.58_r8, 0.58_r8, 0.70_r8, 0.69_r8, 0.70_r8, 0.72_r8, 0.72_r8, & - 0.57_r8, 0.57_r8, 0.57_r8, 0.70_r8, 0.69_r8, 0.70_r8, 0.72_r8, 0.72_r8, & - 0.56_r8, 0.56_r8, 0.56_r8, 0.70_r8, 0.68_r8, 0.70_r8, 0.71_r8, 0.72_r8, & - 0.55_r8, 0.55_r8, 0.55_r8, 0.69_r8, 0.68_r8, 0.69_r8, 0.71_r8, 0.72_r8, & - 0.54_r8, 0.54_r8, 0.54_r8, 0.69_r8, 0.67_r8, 0.69_r8, 0.71_r8, 0.72_r8, & - 0.53_r8, 0.53_r8, 0.53_r8, 0.68_r8, 0.66_r8, 0.68_r8, 0.70_r8, 0.72_r8, & - 0.49_r8, 0.49_r8, 0.49_r8, 0.65_r8, 0.63_r8, 0.65_r8, 0.68_r8, 0.70_r8, & - 0.46_r8, 0.46_r8, 0.46_r8, 0.63_r8, 0.60_r8, 0.63_r8, 0.66_r8, 0.68_r8, & - 0.45_r8, 0.45_r8, 0.45_r8, 0.62_r8, 0.59_r8, 0.62_r8, 0.65_r8, 0.68_r8, & - 0.44_r8, 0.44_r8, 0.44_r8, 0.61_r8, 0.58_r8, 0.61_r8, 0.64_r8, 0.67_r8, & - 0.41_r8, 0.41_r8, 0.41_r8, 0.58_r8, 0.55_r8, 0.58_r8, 0.61_r8, 0.64_r8, & - 0.37_r8, 0.37_r8, 0.37_r8, 0.54_r8, 0.51_r8, 0.54_r8, 0.58_r8, 0.61_r8, & - 0.32_r8, 0.32_r8, 0.32_r8, 0.47_r8, 0.45_r8, 0.47_r8, 0.51_r8, 0.55_r8, & - 0.28_r8, 0.28_r8, 0.28_r8, 0.42_r8, 0.40_r8, 0.42_r8, 0.46_r8, 0.50_r8 & - /),(/8,17/)) - - real(r8), parameter :: asm_dcbs(7,17) = asm_cbs(2:8,:) - asm_cbs(1:7,:) - -!-------------------------------------------------------------------- -! organic carbon -!-------------------------------------------------------------------- - real(r8), parameter :: qext_ocs(8,17) = reshape( (/ & - 5.38_r8, 8.22_r8, 11.03_r8, 13.09_r8, 14.66_r8, 18.31_r8, 25.39_r8, 28.27_r8, & - 5.37_r8, 8.20_r8, 11.00_r8, 13.06_r8, 14.63_r8, 18.29_r8, 25.39_r8, 28.28_r8, & - 5.35_r8, 8.16_r8, 10.95_r8, 13.02_r8, 14.59_r8, 18.26_r8, 25.39_r8, 28.29_r8, & - 5.33_r8, 8.12_r8, 10.90_r8, 12.96_r8, 14.53_r8, 18.21_r8, 25.38_r8, 28.30_r8, & - 5.30_r8, 8.06_r8, 10.83_r8, 12.89_r8, 14.46_r8, 18.15_r8, 25.34_r8, 28.27_r8, & - 5.26_r8, 8.00_r8, 10.74_r8, 12.80_r8, 14.37_r8, 18.07_r8, 25.29_r8, 28.24_r8, & - 5.22_r8, 7.92_r8, 10.65_r8, 12.71_r8, 14.28_r8, 17.98_r8, 25.22_r8, 28.19_r8, & - 5.17_r8, 7.84_r8, 10.54_r8, 12.59_r8, 14.15_r8, 17.85_r8, 25.13_r8, 28.12_r8, & - 5.12_r8, 7.75_r8, 10.42_r8, 12.47_r8, 14.02_r8, 17.71_r8, 25.01_r8, 28.00_r8, & - 4.86_r8, 7.35_r8, 9.90_r8, 11.89_r8, 13.41_r8, 17.05_r8, 24.35_r8, 27.38_r8, & - 4.65_r8, 7.01_r8, 9.46_r8, 11.39_r8, 12.87_r8, 16.45_r8, 23.70_r8, 26.73_r8, & - 4.56_r8, 6.88_r8, 9.29_r8, 11.20_r8, 12.67_r8, 16.21_r8, 23.44_r8, 26.46_r8, & - 4.44_r8, 6.70_r8, 9.06_r8, 10.95_r8, 12.38_r8, 15.89_r8, 23.06_r8, 26.07_r8, & - 4.06_r8, 6.14_r8, 8.32_r8, 10.10_r8, 11.46_r8, 14.81_r8, 21.77_r8, 24.72_r8, & - 3.61_r8, 5.47_r8, 7.44_r8, 9.08_r8, 10.34_r8, 13.47_r8, 20.09_r8, 22.94_r8, & - 2.81_r8, 4.27_r8, 5.86_r8, 7.22_r8, 8.26_r8, 10.91_r8, 16.70_r8, 19.24_r8, & - 2.25_r8, 3.44_r8, 4.74_r8, 5.89_r8, 6.77_r8, 9.04_r8, 14.12_r8, 16.39_r8 & - /),(/8,17/)) - - real(r8), parameter :: qext_docs(7,17) = qext_ocs(2:8,:) - qext_ocs(1:7,:) - - real(r8), parameter :: ssa_ocs(8,17) = reshape( (/ & - 0.67508_r8,0.73829_r8,0.78690_r8,0.80446_r8,0.82190_r8,0.84991_r8,0.87960_r8,0.88715_r8, & - 0.67840_r8,0.74179_r8,0.79056_r8,0.80819_r8,0.82564_r8,0.85366_r8,0.88338_r8,0.89096_r8, & - 0.68373_r8,0.74715_r8,0.79586_r8,0.81346_r8,0.83078_r8,0.85852_r8,0.88777_r8,0.89520_r8, & - 0.69072_r8,0.75403_r8,0.80249_r8,0.81995_r8,0.83703_r8,0.86424_r8,0.89272_r8,0.89991_r8, & - 0.69947_r8,0.76249_r8,0.81046_r8,0.82767_r8,0.84441_r8,0.87098_r8,0.89863_r8,0.90556_r8, & - 0.71012_r8,0.77261_r8,0.81984_r8,0.83676_r8,0.85311_r8,0.87886_r8,0.90536_r8,0.91195_r8, & - 0.72284_r8,0.78447_r8,0.83062_r8,0.84703_r8,0.86276_r8,0.88742_r8,0.91264_r8,0.91888_r8, & - 0.73788_r8,0.79817_r8,0.84282_r8,0.85864_r8,0.87367_r8,0.89703_r8,0.92063_r8,0.92642_r8, & - 0.75456_r8,0.81304_r8,0.85573_r8,0.87075_r8,0.88494_r8,0.90689_r8,0.92883_r8,0.93416_r8, & - 0.83969_r8,0.88348_r8,0.91349_r8,0.92370_r8,0.93306_r8,0.94713_r8,0.96070_r8,0.96392_r8, & - 0.92455_r8,0.94805_r8,0.96298_r8,0.96787_r8,0.97222_r8,0.97858_r8,0.98451_r8,0.98588_r8, & - 0.93919_r8,0.95861_r8,0.97073_r8,0.97469_r8,0.97818_r8,0.98326_r8,0.98796_r8,0.98905_r8, & - 0.94732_r8,0.96439_r8,0.97494_r8,0.97838_r8,0.98140_r8,0.98578_r8,0.98983_r8,0.99076_r8, & - 0.96028_r8,0.97347_r8,0.98153_r8,0.98416_r8,0.98643_r8,0.98973_r8,0.99275_r8,0.99344_r8, & - 0.96294_r8,0.97536_r8,0.98295_r8,0.98546_r8,0.98760_r8,0.99068_r8,0.99351_r8,0.99416_r8, & - 0.95723_r8,0.97159_r8,0.98043_r8,0.98344_r8,0.98593_r8,0.98957_r8,0.99290_r8,0.99366_r8, & - 0.94701_r8,0.96465_r8,0.97566_r8,0.97951_r8,0.98263_r8,0.98721_r8,0.99143_r8,0.99239_r8 & - /),(/8,17/)) - - real(r8), parameter :: ssa_docs(7,17) = ssa_ocs(2:8,:) - ssa_ocs(1:7,:) - - real(r8), parameter :: asm_ocs(8,17) = reshape( (/ & - 0.77_r8, 0.76_r8, 0.75_r8, 0.74_r8, 0.74_r8, 0.73_r8, 0.73_r8, 0.73_r8, & - 0.77_r8, 0.76_r8, 0.75_r8, 0.74_r8, 0.74_r8, 0.74_r8, 0.73_r8, 0.73_r8, & - 0.77_r8, 0.76_r8, 0.75_r8, 0.75_r8, 0.74_r8, 0.74_r8, 0.74_r8, 0.74_r8, & - 0.76_r8, 0.76_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.74_r8, 0.74_r8, 0.74_r8, & - 0.76_r8, 0.76_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, & - 0.75_r8, 0.76_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, & - 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, & - 0.74_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.76_r8, & - 0.74_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.76_r8, 0.76_r8, 0.76_r8, 0.76_r8, & - 0.71_r8, 0.73_r8, 0.75_r8, 0.75_r8, 0.75_r8, 0.76_r8, 0.76_r8, 0.76_r8, & - 0.68_r8, 0.72_r8, 0.74_r8, 0.74_r8, 0.75_r8, 0.76_r8, 0.76_r8, 0.77_r8, & - 0.68_r8, 0.72_r8, 0.74_r8, 0.74_r8, 0.75_r8, 0.76_r8, 0.76_r8, 0.77_r8, & - 0.68_r8, 0.71_r8, 0.74_r8, 0.74_r8, 0.75_r8, 0.76_r8, 0.77_r8, 0.77_r8, & - 0.67_r8, 0.71_r8, 0.74_r8, 0.74_r8, 0.75_r8, 0.76_r8, 0.77_r8, 0.77_r8, & - 0.66_r8, 0.71_r8, 0.73_r8, 0.74_r8, 0.75_r8, 0.76_r8, 0.77_r8, 0.77_r8, & - 0.65_r8, 0.70_r8, 0.73_r8, 0.74_r8, 0.75_r8, 0.76_r8, 0.77_r8, 0.78_r8, & - 0.64_r8, 0.69_r8, 0.72_r8, 0.73_r8, 0.74_r8, 0.76_r8, 0.77_r8, 0.77_r8 & - /),(/8,17/)) - - real(r8), parameter :: asm_docs(7,17) = asm_ocs(2:8,:) - asm_ocs(1:7,:) - -!-------------------------------------------------------------------- -! sea-salt bin 1 -!-------------------------------------------------------------------- - real(r8), parameter :: qext_sal01(8,17) = reshape( (/ & - 2.18_r8, 3.87_r8, 5.09_r8, 6.46_r8, 0.00_r8, 15.67_r8, 29.00_r8, 40.81_r8, & - 2.19_r8, 3.89_r8, 5.13_r8, 6.49_r8, 0.00_r8, 15.67_r8, 29.03_r8, 40.76_r8, & - 2.18_r8, 3.83_r8, 5.16_r8, 6.45_r8, 0.00_r8, 15.62_r8, 29.02_r8, 40.81_r8, & - 2.17_r8, 3.82_r8, 5.23_r8, 6.39_r8, 0.00_r8, 15.72_r8, 29.06_r8, 40.86_r8, & - 2.15_r8, 3.85_r8, 5.24_r8, 6.45_r8, 0.00_r8, 15.71_r8, 29.13_r8, 40.89_r8, & - 2.14_r8, 3.93_r8, 5.18_r8, 6.56_r8, 0.00_r8, 15.71_r8, 29.13_r8, 40.90_r8, & - 2.15_r8, 4.01_r8, 5.18_r8, 6.57_r8, 0.00_r8, 15.85_r8, 29.34_r8, 41.03_r8, & - 2.18_r8, 4.02_r8, 5.27_r8, 6.48_r8, 0.00_r8, 15.72_r8, 29.21_r8, 41.15_r8, & - 2.23_r8, 3.96_r8, 5.38_r8, 6.50_r8, 0.00_r8, 15.88_r8, 29.50_r8, 41.17_r8, & - 2.39_r8, 4.09_r8, 5.34_r8, 6.71_r8, 0.00_r8, 16.08_r8, 29.66_r8, 41.58_r8, & - 2.34_r8, 4.34_r8, 5.61_r8, 6.69_r8, 0.00_r8, 16.05_r8, 29.95_r8, 41.93_r8, & - 2.31_r8, 4.35_r8, 5.75_r8, 6.84_r8, 0.00_r8, 16.07_r8, 29.72_r8, 41.59_r8, & - 2.26_r8, 4.28_r8, 5.85_r8, 7.10_r8, 0.00_r8, 16.45_r8, 29.96_r8, 42.10_r8, & - 2.36_r8, 4.10_r8, 5.62_r8, 7.20_r8, 0.00_r8, 16.62_r8, 30.41_r8, 42.58_r8, & - 2.78_r8, 4.50_r8, 5.61_r8, 6.85_r8, 0.00_r8, 17.18_r8, 31.51_r8, 42.82_r8, & - 3.20_r8, 5.65_r8, 7.29_r8, 8.64_r8, 0.00_r8, 17.51_r8, 32.64_r8, 44.52_r8, & - 3.02_r8, 5.74_r8, 7.96_r8, 9.96_r8, 0.00_r8, 18.03_r8, 33.24_r8, 47.22_r8 & - /),(/8,17/)) - - real(r8), parameter :: qext_dsal01(7,17) = qext_sal01(2:8,:) - qext_sal01(1:7,:) - - real(r8), parameter :: ssa_sal01(8,17) = reshape( (/ & - 0.99971_r8,0.99603_r8,0.99413_r8,0.99292_r8,0.00000_r8,0.98870_r8,0.98441_r8,0.98456_r8, & - 0.99972_r8,0.99886_r8,0.99844_r8,0.99822_r8,0.00000_r8,0.99688_r8,0.99566_r8,0.99559_r8, & - 0.99972_r8,0.99970_r8,0.99965_r8,0.99965_r8,0.00000_r8,0.99948_r8,0.99928_r8,0.99927_r8, & - 0.99974_r8,0.99983_r8,0.99989_r8,0.99990_r8,0.00000_r8,0.99992_r8,0.99993_r8,0.99993_r8, & - 0.99975_r8,0.99987_r8,0.99990_r8,0.99992_r8,0.00000_r8,0.99994_r8,0.99996_r8,0.99996_r8, & - 0.99977_r8,0.99988_r8,0.99991_r8,0.99993_r8,0.00000_r8,0.99997_r8,0.99998_r8,0.99998_r8, & - 0.99979_r8,0.99990_r8,0.99992_r8,0.99993_r8,0.00000_r8,0.99997_r8,0.99998_r8,0.99999_r8, & - 0.99982_r8,0.99991_r8,0.99993_r8,0.99994_r8,0.00000_r8,0.99997_r8,0.99999_r8,0.99999_r8, & - 0.99984_r8,0.99992_r8,0.99994_r8,0.99995_r8,0.00000_r8,0.99998_r8,0.99999_r8,0.99999_r8, & - 0.99992_r8,0.99996_r8,0.99997_r8,0.99998_r8,0.00000_r8,0.99999_r8,0.99999_r8,1.00000_r8, & - 0.99996_r8,0.99998_r8,0.99999_r8,0.99999_r8,0.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 0.99997_r8,0.99999_r8,0.99999_r8,0.99999_r8,0.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 0.99998_r8,0.99999_r8,0.99999_r8,0.99999_r8,0.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,0.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,0.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,0.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,0.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8 & - /),(/8,17/)) - - real(r8), parameter :: ssa_dsal01(7,17) = ssa_sal01(2:8,:) - ssa_sal01(1:7,:) - - real(r8), parameter :: asm_sal01(8,17) = reshape( (/ & - 0.73_r8, 0.75_r8, 0.75_r8, 0.76_r8, 0.00_r8, 0.78_r8, 0.79_r8, 0.80_r8, & - 0.72_r8, 0.74_r8, 0.75_r8, 0.76_r8, 0.00_r8, 0.78_r8, 0.79_r8, 0.80_r8, & - 0.72_r8, 0.74_r8, 0.76_r8, 0.76_r8, 0.00_r8, 0.78_r8, 0.79_r8, 0.80_r8, & - 0.72_r8, 0.74_r8, 0.76_r8, 0.76_r8, 0.00_r8, 0.79_r8, 0.80_r8, 0.80_r8, & - 0.71_r8, 0.74_r8, 0.76_r8, 0.76_r8, 0.00_r8, 0.79_r8, 0.80_r8, 0.81_r8, & - 0.71_r8, 0.75_r8, 0.76_r8, 0.77_r8, 0.00_r8, 0.79_r8, 0.80_r8, 0.81_r8, & - 0.70_r8, 0.75_r8, 0.75_r8, 0.77_r8, 0.00_r8, 0.79_r8, 0.81_r8, 0.81_r8, & - 0.70_r8, 0.75_r8, 0.76_r8, 0.76_r8, 0.00_r8, 0.79_r8, 0.81_r8, 0.82_r8, & - 0.70_r8, 0.74_r8, 0.76_r8, 0.76_r8, 0.00_r8, 0.80_r8, 0.81_r8, 0.82_r8, & - 0.69_r8, 0.73_r8, 0.75_r8, 0.77_r8, 0.00_r8, 0.80_r8, 0.81_r8, 0.82_r8, & - 0.66_r8, 0.73_r8, 0.75_r8, 0.75_r8, 0.00_r8, 0.79_r8, 0.81_r8, 0.82_r8, & - 0.64_r8, 0.72_r8, 0.75_r8, 0.75_r8, 0.00_r8, 0.79_r8, 0.81_r8, 0.82_r8, & - 0.62_r8, 0.71_r8, 0.75_r8, 0.76_r8, 0.00_r8, 0.79_r8, 0.81_r8, 0.82_r8, & - 0.61_r8, 0.68_r8, 0.71_r8, 0.74_r8, 0.00_r8, 0.79_r8, 0.81_r8, 0.82_r8, & - 0.66_r8, 0.70_r8, 0.70_r8, 0.71_r8, 0.00_r8, 0.78_r8, 0.80_r8, 0.81_r8, & - 0.73_r8, 0.78_r8, 0.78_r8, 0.77_r8, 0.00_r8, 0.75_r8, 0.78_r8, 0.80_r8, & - 0.74_r8, 0.80_r8, 0.82_r8, 0.82_r8, 0.00_r8, 0.75_r8, 0.77_r8, 0.79_r8 & - /),(/8,17/)) - - real(r8), parameter :: asm_dsal01(7,17) = asm_sal01(2:8,:) - asm_sal01(1:7,:) - -!-------------------------------------------------------------------- -! sea-salt bin 2 -!-------------------------------------------------------------------- - real(r8), parameter :: qext_sal02(8,17) = reshape( (/ & - 0.63_r8, 1.15_r8, 1.56_r8, 1.95_r8, 3.07_r8, 4.83_r8, 8.83_r8, 14.00_r8, & - 0.63_r8, 1.15_r8, 1.56_r8, 1.95_r8, 3.07_r8, 4.82_r8, 8.83_r8, 14.00_r8, & - 0.63_r8, 1.15_r8, 1.56_r8, 1.96_r8, 3.07_r8, 4.83_r8, 8.83_r8, 14.01_r8, & - 0.64_r8, 1.16_r8, 1.56_r8, 1.96_r8, 3.07_r8, 4.83_r8, 8.84_r8, 14.02_r8, & - 0.64_r8, 1.16_r8, 1.56_r8, 1.96_r8, 3.08_r8, 4.84_r8, 8.84_r8, 14.01_r8, & - 0.64_r8, 1.16_r8, 1.57_r8, 1.96_r8, 3.08_r8, 4.84_r8, 8.86_r8, 14.04_r8, & - 0.64_r8, 1.16_r8, 1.57_r8, 1.96_r8, 3.09_r8, 4.85_r8, 8.86_r8, 14.05_r8, & - 0.64_r8, 1.16_r8, 1.57_r8, 1.97_r8, 3.09_r8, 4.85_r8, 8.86_r8, 14.04_r8, & - 0.64_r8, 1.17_r8, 1.57_r8, 1.97_r8, 3.09_r8, 4.86_r8, 8.88_r8, 14.08_r8, & - 0.65_r8, 1.18_r8, 1.59_r8, 1.99_r8, 3.11_r8, 4.88_r8, 8.92_r8, 14.12_r8, & - 0.66_r8, 1.19_r8, 1.59_r8, 2.00_r8, 3.13_r8, 4.91_r8, 8.95_r8, 14.17_r8, & - 0.66_r8, 1.18_r8, 1.60_r8, 2.01_r8, 3.13_r8, 4.91_r8, 8.96_r8, 14.17_r8, & - 0.66_r8, 1.19_r8, 1.61_r8, 2.00_r8, 3.15_r8, 4.92_r8, 8.98_r8, 14.20_r8, & - 0.67_r8, 1.21_r8, 1.62_r8, 2.03_r8, 3.17_r8, 4.96_r8, 9.03_r8, 14.27_r8, & - 0.67_r8, 1.22_r8, 1.65_r8, 2.04_r8, 3.19_r8, 5.00_r8, 9.08_r8, 14.36_r8, & - 0.70_r8, 1.24_r8, 1.67_r8, 2.10_r8, 3.26_r8, 5.10_r8, 9.21_r8, 14.53_r8, & - 0.75_r8, 1.30_r8, 1.67_r8, 2.09_r8, 3.32_r8, 5.21_r8, 9.32_r8, 14.58_r8 & - /),(/8,17/)) - - real(r8), parameter :: qext_dsal02(7,17) = qext_sal02(2:8,:) - qext_sal02(1:7,:) - - real(r8), parameter :: ssa_sal02(8,17) = reshape( (/ & - 0.99919_r8,0.98950_r8,0.98773_r8,0.98690_r8,0.98636_r8,0.98579_r8,0.98479_r8,0.98335_r8, & - 0.99919_r8,0.99678_r8,0.99634_r8,0.99621_r8,0.99608_r8,0.99603_r8,0.99579_r8,0.99540_r8, & - 0.99923_r8,0.99911_r8,0.99916_r8,0.99924_r8,0.99925_r8,0.99933_r8,0.99930_r8,0.99925_r8, & - 0.99927_r8,0.99958_r8,0.99968_r8,0.99975_r8,0.99986_r8,0.99990_r8,0.99992_r8,0.99993_r8, & - 0.99931_r8,0.99961_r8,0.99973_r8,0.99980_r8,0.99989_r8,0.99993_r8,0.99996_r8,0.99997_r8, & - 0.99935_r8,0.99965_r8,0.99975_r8,0.99979_r8,0.99990_r8,0.99995_r8,0.99997_r8,0.99998_r8, & - 0.99942_r8,0.99970_r8,0.99976_r8,0.99983_r8,0.99991_r8,0.99995_r8,0.99998_r8,0.99999_r8, & - 0.99947_r8,0.99973_r8,0.99979_r8,0.99983_r8,0.99991_r8,0.99996_r8,0.99998_r8,0.99999_r8, & - 0.99951_r8,0.99976_r8,0.99982_r8,0.99986_r8,0.99992_r8,0.99995_r8,0.99998_r8,0.99999_r8, & - 0.99973_r8,0.99987_r8,0.99990_r8,0.99992_r8,0.99995_r8,0.99997_r8,0.99999_r8,0.99999_r8, & - 0.99986_r8,0.99992_r8,0.99996_r8,0.99997_r8,0.99998_r8,0.99998_r8,0.99999_r8,1.00000_r8, & - 0.99991_r8,0.99995_r8,0.99996_r8,0.99997_r8,0.99998_r8,0.99999_r8,0.99999_r8,1.00000_r8, & - 0.99994_r8,0.99997_r8,0.99998_r8,0.99998_r8,0.99999_r8,0.99999_r8,1.00000_r8,1.00000_r8, & - 0.99999_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 0.99998_r8,0.99999_r8,0.99999_r8,0.99999_r8,0.99999_r8,0.99999_r8,0.99999_r8,0.99999_r8 & - /),(/8,17/)) - - real(r8), parameter :: ssa_dsal02(7,17) = ssa_sal02(2:8,:) - ssa_sal02(1:7,:) - - real(r8), parameter :: asm_sal02(8,17) = reshape( (/ & - 0.78_r8, 0.80_r8, 0.80_r8, 0.80_r8, 0.81_r8, 0.81_r8, 0.82_r8, 0.82_r8, & - 0.78_r8, 0.80_r8, 0.80_r8, 0.80_r8, 0.81_r8, 0.81_r8, 0.82_r8, 0.82_r8, & - 0.78_r8, 0.80_r8, 0.80_r8, 0.80_r8, 0.81_r8, 0.81_r8, 0.82_r8, 0.82_r8, & - 0.78_r8, 0.80_r8, 0.80_r8, 0.81_r8, 0.81_r8, 0.82_r8, 0.82_r8, 0.82_r8, & - 0.78_r8, 0.80_r8, 0.81_r8, 0.81_r8, 0.82_r8, 0.82_r8, 0.83_r8, 0.83_r8, & - 0.78_r8, 0.80_r8, 0.81_r8, 0.81_r8, 0.82_r8, 0.82_r8, 0.83_r8, 0.83_r8, & - 0.78_r8, 0.80_r8, 0.81_r8, 0.81_r8, 0.82_r8, 0.83_r8, 0.83_r8, 0.84_r8, & - 0.78_r8, 0.80_r8, 0.81_r8, 0.82_r8, 0.82_r8, 0.83_r8, 0.84_r8, 0.84_r8, & - 0.78_r8, 0.80_r8, 0.81_r8, 0.82_r8, 0.83_r8, 0.83_r8, 0.84_r8, 0.84_r8, & - 0.77_r8, 0.80_r8, 0.81_r8, 0.82_r8, 0.83_r8, 0.84_r8, 0.84_r8, 0.85_r8, & - 0.76_r8, 0.80_r8, 0.81_r8, 0.82_r8, 0.83_r8, 0.84_r8, 0.85_r8, 0.85_r8, & - 0.76_r8, 0.80_r8, 0.81_r8, 0.82_r8, 0.83_r8, 0.84_r8, 0.85_r8, 0.85_r8, & - 0.76_r8, 0.80_r8, 0.81_r8, 0.82_r8, 0.83_r8, 0.84_r8, 0.85_r8, 0.85_r8, & - 0.75_r8, 0.80_r8, 0.81_r8, 0.82_r8, 0.83_r8, 0.84_r8, 0.85_r8, 0.85_r8, & - 0.74_r8, 0.79_r8, 0.81_r8, 0.81_r8, 0.83_r8, 0.84_r8, 0.85_r8, 0.85_r8, & - 0.72_r8, 0.77_r8, 0.79_r8, 0.80_r8, 0.82_r8, 0.83_r8, 0.84_r8, 0.85_r8, & - 0.71_r8, 0.75_r8, 0.77_r8, 0.78_r8, 0.81_r8, 0.83_r8, 0.84_r8, 0.85_r8 & - /),(/8,17/)) - - real(r8), parameter :: asm_dsal02(7,17) = asm_sal02(2:8,:) - asm_sal02(1:7,:) - -!-------------------------------------------------------------------- -! sea-salt bin 3 -!-------------------------------------------------------------------- - real(r8), parameter :: qext_sal03(8,17) = reshape( (/ & - 0.19_r8, 0.34_r8, 0.46_r8, 0.58_r8, 0.91_r8, 1.44_r8, 2.66_r8, 4.20_r8, & - 0.19_r8, 0.34_r8, 0.46_r8, 0.58_r8, 0.91_r8, 1.44_r8, 2.66_r8, 4.20_r8, & - 0.19_r8, 0.34_r8, 0.46_r8, 0.58_r8, 0.91_r8, 1.44_r8, 2.66_r8, 4.20_r8, & - 0.19_r8, 0.34_r8, 0.46_r8, 0.58_r8, 0.91_r8, 1.44_r8, 2.66_r8, 4.20_r8, & - 0.19_r8, 0.34_r8, 0.46_r8, 0.58_r8, 0.92_r8, 1.44_r8, 2.66_r8, 4.20_r8, & - 0.19_r8, 0.34_r8, 0.46_r8, 0.58_r8, 0.92_r8, 1.45_r8, 2.66_r8, 4.20_r8, & - 0.19_r8, 0.34_r8, 0.46_r8, 0.58_r8, 0.92_r8, 1.45_r8, 2.66_r8, 4.21_r8, & - 0.19_r8, 0.34_r8, 0.46_r8, 0.58_r8, 0.92_r8, 1.45_r8, 2.66_r8, 4.20_r8, & - 0.19_r8, 0.34_r8, 0.46_r8, 0.58_r8, 0.92_r8, 1.45_r8, 2.66_r8, 4.21_r8, & - 0.19_r8, 0.34_r8, 0.46_r8, 0.58_r8, 0.92_r8, 1.45_r8, 2.67_r8, 4.21_r8, & - 0.19_r8, 0.34_r8, 0.47_r8, 0.58_r8, 0.92_r8, 1.45_r8, 2.68_r8, 4.22_r8, & - 0.19_r8, 0.34_r8, 0.47_r8, 0.58_r8, 0.92_r8, 1.46_r8, 2.67_r8, 4.22_r8, & - 0.19_r8, 0.35_r8, 0.47_r8, 0.59_r8, 0.92_r8, 1.46_r8, 2.68_r8, 4.23_r8, & - 0.19_r8, 0.35_r8, 0.47_r8, 0.59_r8, 0.93_r8, 1.46_r8, 2.68_r8, 4.23_r8, & - 0.19_r8, 0.35_r8, 0.47_r8, 0.59_r8, 0.93_r8, 1.47_r8, 2.69_r8, 4.25_r8, & - 0.19_r8, 0.35_r8, 0.48_r8, 0.60_r8, 0.94_r8, 1.48_r8, 2.71_r8, 4.27_r8, & - 0.20_r8, 0.36_r8, 0.48_r8, 0.60_r8, 0.94_r8, 1.49_r8, 2.72_r8, 4.29_r8 & - /),(/8,17/)) - - real(r8), parameter :: qext_dsal03(7,17) = qext_sal03(2:8,:) - qext_sal03(1:7,:) - - real(r8), parameter :: ssa_sal03(8,17) = reshape( (/ & - 0.99903_r8,0.98942_r8,0.98658_r8,0.98454_r8,0.98105_r8,0.97736_r8,0.97161_r8,0.96631_r8, & - 0.99907_r8,0.99687_r8,0.99611_r8,0.99559_r8,0.99470_r8,0.99369_r8,0.99208_r8,0.99059_r8, & - 0.99910_r8,0.99917_r8,0.99917_r8,0.99913_r8,0.99905_r8,0.99893_r8,0.99870_r8,0.99847_r8, & - 0.99911_r8,0.99958_r8,0.99970_r8,0.99976_r8,0.99982_r8,0.99985_r8,0.99987_r8,0.99986_r8, & - 0.99915_r8,0.99961_r8,0.99973_r8,0.99980_r8,0.99987_r8,0.99990_r8,0.99993_r8,0.99993_r8, & - 0.99919_r8,0.99963_r8,0.99974_r8,0.99981_r8,0.99988_r8,0.99992_r8,0.99995_r8,0.99996_r8, & - 0.99923_r8,0.99965_r8,0.99976_r8,0.99983_r8,0.99990_r8,0.99994_r8,0.99996_r8,0.99997_r8, & - 0.99929_r8,0.99968_r8,0.99978_r8,0.99984_r8,0.99991_r8,0.99994_r8,0.99997_r8,0.99998_r8, & - 0.99935_r8,0.99970_r8,0.99979_r8,0.99985_r8,0.99991_r8,0.99995_r8,0.99997_r8,0.99998_r8, & - 0.99958_r8,0.99980_r8,0.99987_r8,0.99990_r8,0.99994_r8,0.99997_r8,0.99998_r8,0.99999_r8, & - 0.99976_r8,0.99989_r8,0.99992_r8,0.99995_r8,0.99997_r8,0.99998_r8,0.99999_r8,1.00000_r8, & - 0.99982_r8,0.99991_r8,0.99994_r8,0.99996_r8,0.99998_r8,0.99999_r8,0.99999_r8,1.00000_r8, & - 0.99987_r8,0.99994_r8,0.99996_r8,0.99997_r8,0.99998_r8,0.99999_r8,1.00000_r8,1.00000_r8, & - 0.99998_r8,0.99999_r8,0.99999_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 0.99999_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 0.99994_r8,0.99996_r8,0.99997_r8,0.99997_r8,0.99997_r8,0.99997_r8,0.99997_r8,0.99997_r8 & - /),(/8,17/)) - - real(r8), parameter :: ssa_dsal03(7,17) = ssa_sal03(2:8,:) - ssa_sal03(1:7,:) - - real(r8), parameter :: asm_sal03(8,17) = reshape( (/ & - 0.81_r8, 0.82_r8, 0.82_r8, 0.82_r8, 0.82_r8, 0.82_r8, 0.83_r8, 0.83_r8, & - 0.81_r8, 0.82_r8, 0.82_r8, 0.82_r8, 0.82_r8, 0.82_r8, 0.82_r8, 0.83_r8, & - 0.81_r8, 0.82_r8, 0.82_r8, 0.82_r8, 0.82_r8, 0.83_r8, 0.83_r8, 0.83_r8, & - 0.81_r8, 0.82_r8, 0.82_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.83_r8, & - 0.81_r8, 0.82_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.84_r8, 0.84_r8, & - 0.81_r8, 0.82_r8, 0.83_r8, 0.83_r8, 0.84_r8, 0.84_r8, 0.84_r8, 0.84_r8, & - 0.81_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.84_r8, 0.84_r8, 0.84_r8, 0.85_r8, & - 0.81_r8, 0.83_r8, 0.83_r8, 0.84_r8, 0.84_r8, 0.84_r8, 0.85_r8, 0.85_r8, & - 0.81_r8, 0.83_r8, 0.84_r8, 0.84_r8, 0.84_r8, 0.85_r8, 0.85_r8, 0.85_r8, & - 0.81_r8, 0.83_r8, 0.84_r8, 0.84_r8, 0.85_r8, 0.85_r8, 0.86_r8, 0.86_r8, & - 0.80_r8, 0.83_r8, 0.84_r8, 0.85_r8, 0.85_r8, 0.86_r8, 0.86_r8, 0.87_r8, & - 0.80_r8, 0.83_r8, 0.84_r8, 0.85_r8, 0.85_r8, 0.86_r8, 0.86_r8, 0.86_r8, & - 0.80_r8, 0.83_r8, 0.84_r8, 0.85_r8, 0.86_r8, 0.86_r8, 0.86_r8, 0.87_r8, & - 0.80_r8, 0.83_r8, 0.84_r8, 0.85_r8, 0.86_r8, 0.86_r8, 0.87_r8, 0.87_r8, & - 0.80_r8, 0.83_r8, 0.84_r8, 0.85_r8, 0.86_r8, 0.86_r8, 0.87_r8, 0.87_r8, & - 0.79_r8, 0.83_r8, 0.84_r8, 0.85_r8, 0.86_r8, 0.86_r8, 0.87_r8, 0.87_r8, & - 0.78_r8, 0.82_r8, 0.84_r8, 0.84_r8, 0.85_r8, 0.86_r8, 0.87_r8, 0.87_r8 & - /),(/8,17/)) - - real(r8), parameter :: asm_dsal03(7,17) = asm_sal03(2:8,:) - asm_sal03(1:7,:) - - real(r8), parameter :: qext_sal04(8,17) = reshape( (/ & - 0.09_r8, 0.16_r8, 0.22_r8, 0.27_r8, 0.43_r8, 0.68_r8, 1.26_r8, 1.99_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.27_r8, 0.43_r8, 0.68_r8, 1.26_r8, 1.99_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.27_r8, 0.43_r8, 0.68_r8, 1.26_r8, 1.99_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.27_r8, 0.43_r8, 0.68_r8, 1.26_r8, 1.99_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.27_r8, 0.43_r8, 0.68_r8, 1.26_r8, 1.99_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.27_r8, 0.43_r8, 0.68_r8, 1.26_r8, 1.99_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.27_r8, 0.43_r8, 0.68_r8, 1.26_r8, 2.00_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.27_r8, 0.43_r8, 0.69_r8, 1.26_r8, 1.99_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.27_r8, 0.43_r8, 0.68_r8, 1.26_r8, 2.00_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.27_r8, 0.43_r8, 0.69_r8, 1.26_r8, 2.00_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.28_r8, 0.43_r8, 0.69_r8, 1.26_r8, 2.00_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.27_r8, 0.43_r8, 0.69_r8, 1.27_r8, 2.00_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.28_r8, 0.44_r8, 0.69_r8, 1.27_r8, 2.00_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.28_r8, 0.44_r8, 0.69_r8, 1.27_r8, 2.00_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.28_r8, 0.44_r8, 0.69_r8, 1.27_r8, 2.01_r8, & - 0.09_r8, 0.16_r8, 0.22_r8, 0.28_r8, 0.44_r8, 0.69_r8, 1.27_r8, 2.01_r8, & - 0.09_r8, 0.17_r8, 0.22_r8, 0.28_r8, 0.44_r8, 0.70_r8, 1.28_r8, 2.02_r8 & - /),(/8,17/)) - - real(r8), parameter :: qext_dsal04(7,17) = qext_sal04(2:8,:) - qext_sal04(1:7,:) - - real(r8), parameter :: ssa_sal04(8,17) = reshape( (/ & - 0.99874_r8,0.98463_r8,0.97956_r8,0.97596_r8,0.96927_r8,0.96213_r8,0.95108_r8,0.94110_r8, & - 0.99879_r8,0.99541_r8,0.99411_r8,0.99316_r8,0.99134_r8,0.98932_r8,0.98605_r8,0.98300_r8, & - 0.99881_r8,0.99880_r8,0.99873_r8,0.99866_r8,0.99846_r8,0.99820_r8,0.99771_r8,0.99723_r8, & - 0.99887_r8,0.99940_r8,0.99954_r8,0.99963_r8,0.99971_r8,0.99975_r8,0.99976_r8,0.99975_r8, & - 0.99893_r8,0.99946_r8,0.99960_r8,0.99969_r8,0.99978_r8,0.99984_r8,0.99988_r8,0.99988_r8, & - 0.99899_r8,0.99949_r8,0.99963_r8,0.99972_r8,0.99982_r8,0.99987_r8,0.99991_r8,0.99993_r8, & - 0.99907_r8,0.99952_r8,0.99966_r8,0.99974_r8,0.99984_r8,0.99989_r8,0.99994_r8,0.99995_r8, & - 0.99915_r8,0.99957_r8,0.99969_r8,0.99977_r8,0.99985_r8,0.99991_r8,0.99995_r8,0.99997_r8, & - 0.99923_r8,0.99960_r8,0.99971_r8,0.99979_r8,0.99987_r8,0.99992_r8,0.99996_r8,0.99997_r8, & - 0.99954_r8,0.99976_r8,0.99983_r8,0.99987_r8,0.99992_r8,0.99995_r8,0.99997_r8,0.99998_r8, & - 0.99976_r8,0.99988_r8,0.99991_r8,0.99993_r8,0.99996_r8,0.99998_r8,0.99999_r8,0.99999_r8, & - 0.99982_r8,0.99991_r8,0.99993_r8,0.99995_r8,0.99997_r8,0.99998_r8,0.99999_r8,0.99999_r8, & - 0.99988_r8,0.99994_r8,0.99995_r8,0.99997_r8,0.99998_r8,0.99999_r8,0.99999_r8,1.00000_r8, & - 0.99998_r8,0.99999_r8,0.99999_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 0.99999_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8,1.00000_r8, & - 0.99990_r8,0.99993_r8,0.99995_r8,0.99996_r8,0.99997_r8,0.99997_r8,0.99997_r8,0.99997_r8 & - /),(/8,17/)) - - real(r8), parameter :: ssa_dsal04(7,17) = ssa_sal04(2:8,:) - ssa_sal03(1:7,:) - - real(r8), parameter :: asm_sal04(8,17) = reshape( (/ & - 0.82_r8, 0.82_r8, 0.82_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.83_r8, & - 0.82_r8, 0.82_r8, 0.82_r8, 0.82_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.83_r8, & - 0.82_r8, 0.82_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.83_r8, & - 0.82_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.84_r8, & - 0.82_r8, 0.83_r8, 0.83_r8, 0.83_r8, 0.84_r8, 0.84_r8, 0.84_r8, 0.84_r8, & - 0.82_r8, 0.83_r8, 0.84_r8, 0.84_r8, 0.84_r8, 0.84_r8, 0.84_r8, 0.84_r8, & - 0.82_r8, 0.83_r8, 0.84_r8, 0.84_r8, 0.84_r8, 0.85_r8, 0.85_r8, 0.85_r8, & - 0.82_r8, 0.84_r8, 0.84_r8, 0.84_r8, 0.85_r8, 0.85_r8, 0.85_r8, 0.85_r8, & - 0.82_r8, 0.84_r8, 0.84_r8, 0.85_r8, 0.85_r8, 0.85_r8, 0.85_r8, 0.85_r8, & - 0.82_r8, 0.84_r8, 0.85_r8, 0.85_r8, 0.86_r8, 0.86_r8, 0.86_r8, 0.86_r8, & - 0.81_r8, 0.84_r8, 0.85_r8, 0.85_r8, 0.86_r8, 0.86_r8, 0.86_r8, 0.87_r8, & - 0.81_r8, 0.84_r8, 0.85_r8, 0.85_r8, 0.86_r8, 0.86_r8, 0.87_r8, 0.87_r8, & - 0.81_r8, 0.84_r8, 0.85_r8, 0.86_r8, 0.86_r8, 0.87_r8, 0.87_r8, 0.87_r8, & - 0.81_r8, 0.84_r8, 0.85_r8, 0.86_r8, 0.86_r8, 0.87_r8, 0.87_r8, 0.87_r8, & - 0.81_r8, 0.85_r8, 0.85_r8, 0.86_r8, 0.87_r8, 0.87_r8, 0.87_r8, 0.88_r8, & - 0.81_r8, 0.84_r8, 0.85_r8, 0.86_r8, 0.87_r8, 0.87_r8, 0.88_r8, 0.88_r8, & - 0.81_r8, 0.84_r8, 0.85_r8, 0.86_r8, 0.87_r8, 0.87_r8, 0.88_r8, 0.88_r8 & - /),(/8,17/)) - - real(r8), parameter :: asm_dsal04(7,17) = asm_sal04(2:8,:) - asm_sal03(1:7,:) - - contains - - subroutine setaer( z, airden, rh, aocs1, aocs2, acbs1, acbs2,& - aant, aso4, asal, ads, asoa, & - dtcbs1, dtcbs2, omcbs1, omcbs2, gcbs1, gcbs2, & - dtocs1, dtocs2, omocs1, omocs2, gocs1, gocs2, & - dtant, omant, gant, & - dtso4, omso4, gso4, & - dtsal, omsal, gsal, & - dtds1, dtds2, dtds3, dtds4, & - omds1, omds2, omds3, omds4, & - gds1, gds2, gds3, gds4, dtsoa, nw ) -!----------------------------------------------------------------------------- -! ... calculate aerosol optical depth -!----------------------------------------------------------------------------- -! AEROSOL TYPES: -! ocs1, ocs2, cbs1, cbs2, ant, so4, ds1-ds4,soa, sal -! where 1=hydrophobic, 2=hydrophilic; -! -! PARAMETERS: -! NZ - INTEGER, number of specified altitude levels in the working -! grid -! Z - REAL, specified altitude working grid (km) -! axxx aerosoling mix ratio (where xxx is aerosol type) -! -! dtxxx REAL, optical depth (absorption) -! omxxx REAL, single albedo -! gxxx asysmetry factor -! -!----------------------------------------------------------------------------- -! VERTICAL DOMAIN is from bottom(1) to TOP (TOP=plevp) -! CCM from top(1) to bottom(plevp) -! -! Converted to MIE Look-up Table by P. Hess, April 2005 -!----------------------------------------------------------------------------- - - use mo_constants, only : pi - use ppgrid, only : pver, pverp - use chem_mods, only : adv_mass - use mo_constants, only : avogadro - use mo_chem_utls, only : get_spc_ndx - use dust_model, only : dust_names - use seasalt_model, only : sslt_names=>seasalt_names - - implicit none - -!----------------------------------------------------------------------------- -! ... dummy arguments -!----------------------------------------------------------------------------- - integer, intent(in) :: nw - real(r8), intent(in) :: z(pverp) - real(r8), intent(in) :: aocs1(pverp) - real(r8), intent(in) :: aocs2(pverp) - real(r8), intent(in) :: acbs1(pverp) - real(r8), intent(in) :: acbs2(pverp) - real(r8), intent(in) :: aant(pverp) - real(r8), intent(in) :: aso4(pverp) - real(r8), intent(in) :: asal(pverp,4) - real(r8), intent(in) :: ads(4,pverp) - real(r8), intent(in) :: asoa(pverp) - real(r8), intent(in) :: rh(pverp) - real(r8), intent(in) :: airden(pverp) ! molecules air / cm^3 - - real(r8), intent(out) :: dtcbs1(pver,nw) - real(r8), intent(out) :: dtcbs2(pver,nw) - real(r8), intent(out) :: omcbs1(pver,nw) - real(r8), intent(out) :: omcbs2(pver,nw) - real(r8), intent(out) :: gcbs1(pver,nw) - real(r8), intent(out) :: gcbs2(pver,nw) - - real(r8), intent(out) :: dtocs1(pver,nw) - real(r8), intent(out) :: dtocs2(pver,nw) - real(r8), intent(out) :: dtsoa(pver,nw) - real(r8), intent(out) :: omocs1(pver,nw) - real(r8), intent(out) :: omocs2(pver,nw) - real(r8), intent(out) :: gocs1(pver,nw) - real(r8), intent(out) :: gocs2(pver,nw) - - real(r8), intent(out) :: dtant(pver,nw) - real(r8), intent(out) :: omant(pver,nw) - real(r8), intent(out) :: gant(pver,nw) - - real(r8), intent(out) :: dtso4(pver,nw) - real(r8), intent(out) :: omso4(pver,nw) - real(r8), intent(out) :: gso4(pver,nw) - - real(r8), intent(out) :: dtsal(pver,nw,4) - real(r8), intent(out) :: omsal(pver,nw,4) - real(r8), intent(out) :: gsal(pver,nw,4) - - - real(r8), intent(out) :: dtds1(pver,nw) - real(r8), intent(out) :: dtds2(pver,nw) - real(r8), intent(out) :: dtds3(pver,nw) - real(r8), intent(out) :: dtds4(pver,nw) - real(r8), intent(out) :: omds1(pver,nw) - real(r8), intent(out) :: omds2(pver,nw) - real(r8), intent(out) :: omds3(pver,nw) - real(r8), intent(out) :: omds4(pver,nw) - real(r8), intent(out) :: gds1(pver,nw) - real(r8), intent(out) :: gds2(pver,nw) - real(r8), intent(out) :: gds3(pver,nw) - real(r8), intent(out) :: gds4(pver,nw) - -!----------------------------------------------------------------------------- -! ... local variables -!----------------------------------------------------------------------------- - real(r8), parameter :: km2m = 1.e3_r8 - real(r8), parameter :: cm3_2_m3 = 1.e6_r8 - real(r8), parameter :: s2as = 1.37557_r8 ! conversion factor from mass SO4 to mass (NH4)2(SO4) (assumed in mie calculation). - real(r8), parameter :: rhmax = .98_r8 ! maximum relative humidity allowed - real(r8), parameter :: con_fac = km2m*cm3_2_m3/avogadro - - integer :: k, n, ndx, wn - integer :: rh_l - integer :: rh_u - integer :: rh_ndx(pver) - real(r8) :: mw - real(r8) :: delrh - real(r8) :: rhtest - real(r8) :: dz(pver) - real(r8) :: del_rh(pver) - real(r8) :: gpm2(pver) - real(r8) :: table_rh(8) = (/ 0._r8, .5_r8, .7_r8, .8_r8, .9_r8, .95_r8, .98_r8, .99_r8 /) - -!----------------------------------------------------------------------------- -! Tables are based on the following wavelength bins from ftuv -! 178.60- 180.00 -! 180.00- 183.00 -! 183.00- 187.00 -! 187.00- 192.00 -! 192.00- 198.00 -! 198.00- 205.00 -! 205.00- 213.00 -! 213.00- 222.00 -! 222.00- 231.00 -! 241.00- 289.90 -! 289.90- 305.50 -! 305.50- 313.50 -! 313.50- 337.50 -! 337.50- 420.00 -! 420.00- 475.00 -! 475.00- 729.00 -! 729.00- 743.60 -! -! For aerosol types so4 and ant data tabulated for CAM is used in wavelength bins for which it exists -! This data has been created by D. Fillmore in the file aerOptics.nc -! Data is weighted by wavelength bin -! -! Otherwise, tables have been recreated by P. Hess -! -! Refractive indices and other DATA is mostly from OPAC dataset Hess et al., ..... -! -! SULFATE -! -! r_m = 0.05 ; from Grant 1999 ! median radius of number distribution (microns) -! sigma = alog10(2.00) ! standard deviation of distribution -! rmin = 0.005 ! minimum radius microns -! rmax = 20.0 ! maximum radius microns -! rho = 1.76 ! grams / cm^3 -! PARAMETERS NEEDED FOR CALCULATING KOHLER CURVES for calculating growth with relative humidity -! nu_s = 3.0 -! rho_u = rho -! rho_s = rho -! gamma = 1.0 -! phi = 0.717 ; optimal fit to water activity curves of Tang 1994 -! eps = 1.0 -! -! REFRACTIVE INDEXES FOR SULFATE (for wavelength um) -! 0.300, 0.405, 0.535, 0.656, 0.706, 0.800, 1.00, 1.07, -! 1.15, 1.20, 1.30, 1.40, 1.50, 1.58, 1.60, 1.70, 1.80, -! 1.90, 2.00, 2.05, 2.14, 2.20, 2.30, 2.40, 2.50, 2.63, -! 2.78, 2.94, 3.08, 3.13, 3.18, 3.23, 3.30, 3.33, 3.39, -! 3.45, 3.51, 3.57, 3.85, 4.17, 4.55, 4.76, 5.26] -! -! REAL -! 1.53, 1.53, 1.52, 1.52, 1.52, 1.52, 1.51, 1.51, $ -! 1.51, 1.50, 1.50, 1.50, 1.49, 1.49, 1.49, 1.49, 1.48, $ -! 1.48, 1.47, 1.47, 1.47, 1.46, 1.46, 1.45, 1.44, 1.42, $ -! 1.40, 1.33, 1.27, 1.39, 1.49, 1.48, 1.56, 1.61, 1.61, $ -! 1.60, 1.62, 1.63, 1.56, 1.53, 1.49, 1.48, 1.44] -! -! IMAGINARY -! 1.0e-7, 1.0e-7, 1.0e-7, 1.0e-7, 1.0e-7, 1.0e-7, 3.5e-7, 2.4e-6, -! 9.5e-7, 3.4e-6, 1.7e-5, 1.1e-5, 3.4e-5, 2.1e-4, 1.9e-4, 9.0e-5, 7.6e-5, $ -! 1.5e-4, 1.0e-3, 1.5e-3, 3.4e-3, 1.7e-3, 7.7e-4, 4.5e-4, 3.5e-4, 9.0e-4, $ -! 5.0e-3, 5.0e-2, 2.3e-1, 3.3e-1, 2.7e-1, 2.4e-1, 2.7e-1, 2.4e-1, 1.7e-1, $ -! 1.5e-1, 1.4e-1, 1.0e-1, 2.0e-2, 1.0e-2, 7.0e-3, 6.0e-3, 7.0e-3] -! -! -! NH4NO3 -! -! treated the same as sulphate except -! rho=1.73 (Lowenthal, 1999, Atmospheric Environment). -! -! DUST -! -! dust is treated as 4 size distributions -! 0.05 - 0.5; 0.5 - 1.25; 1.25 - 2.5; 2.5 - 5.0 microns -! each bin is part of a distribution with median number r_m = 2.524 * exp(- 3.0 * log(2.00)^2) / 2 [number median radius] -! r_m = 0.298, sigma = 2.00, rho = 2.650 -! -! note this treatment of dust is somewhat different than that made in CAM, where each size bin -! has a different number median radius -! -! dust is not assumed to take up water. -! -! refractive indexes are as in CAM (Fillmore...) -! -! ORGANIC CARBON -! -! In absence of data for organic aerosol -! refractive indexes are taken as for WASO: based on Fillmore (and OPAC). This is similar to -! the formulation used in Liao and Seinfeld, 2004, JGR. -! The growth of organic carbon with relative humidity is assumed constant at all radii following -! hygrscopic growth given in Chen et al. : rel. hum: 0, 50, 70, 80, 90, 95, 98, 99 -! multiplier for radius: 1, 1.2, 1.4, 1.5, 1.6, 1.8, 2.1 , 2.2 -! -! SOA -! -! Treated the same as organic aerosol. -! -! SOOT -! -! Refractive index are taken from Fillmore based on OPAC. -! In a different formulation than that followed in CAM we let hydrophillic soot grow. -! The growth of organic carbon with relative humidity is assumed constant at all radii following -! hygrscopic growth given in Chen et al. : rel. hum: 0, 50, 70, 80, 90, 95, 98, 99 -! multiplier for radius: (1, 1, 1, 1.2, 1.4, 1.5, 1.7, 1.9] -! -! -! SEA SALT -! -! Assumes 4 bins: 0.1 - 0.5, 0.5-1.5, 1.5-5, 5-10 um assuming a step distribution -! additional parameters used calculation -! phi = 0.8 -! mol_s = 35.453 + 22.98977 -! nu_s = 2.0 -! rmin = 0.005, rmax = 500, nr = 300 -! -! refractive indices are from fillmore -!----------------------------------------------------------------------------- - -!----------------------------------------------------------------------------- -! ... vertical interval dz -!----------------------------------------------------------------------------- - do k = 1,pver - dz(k) = abs( z(k+1) - z(k) ) * airden(k) * con_fac - end do - -!---------------------------------------------------------------------------- -! ... calculate interpolatant for relative humidity -!---------------------------------------------------------------------------- - do k = 1,pver - rhtest = min( rh(k),rhmax ) - do rh_u = 2,8 - if( rhtest <= table_rh(rh_u) ) then - exit - end if - end do - rh_l = rh_u - 1 - rh_ndx(k) = rh_l - del_rh(k) = (rhtest - table_rh(rh_l))/(table_rh(rh_u) - table_rh(rh_l)) - end do - -!----------------------------------------------------------------------------- -! ... so4 -!----------------------------------------------------------------------------- - ndx = get_spc_ndx('SO4') - if( ndx > 0 ) then - mw = adv_mass( ndx ) - gpm2(:) = s2as * dz(:) * aso4(:pver) * mw - do wn = 1,nw - do k = 1,pver - rh_l = rh_ndx(k) - delrh = del_rh(k) - dtso4(k,wn) = gpm2(k)*(qext_so4(rh_l,wn) + delrh*qext_dso4(rh_l,wn)) - omso4(k,wn) = ssa_so4(rh_l,wn) + delrh*ssa_dso4(rh_l,wn) - gso4(k,wn) = asm_so4(rh_l,wn) + delrh*asm_dso4(rh_l,wn) - end do - end do - else - do wn = 1,nw - dtso4(:,wn) = 0._r8 - omso4(:,wn) = 0._r8 - gso4(:,wn) = 0._r8 - end do - end if - -!----------------------------------------------------------------------------- -! ... ant: nh4no3 -!----------------------------------------------------------------------------- - ndx = get_spc_ndx('NH4NO3') - if( ndx > 0 ) then - mw = adv_mass( ndx ) - gpm2(:) = dz(:) * aant(:pver) * mw - do wn = 1,nw - do k = 1,pver - rh_l = rh_ndx(k) - delrh = del_rh(k) - dtant(k,wn) = gpm2(k)*(qext_ant(rh_l,wn) + delrh*qext_dant(rh_l,wn)) - omant(k,wn) = ssa_ant(rh_l,wn) + delrh*ssa_dant(rh_l,wn) - gant(k,wn) = asm_ant(rh_l,wn) + delrh*asm_dant(rh_l,wn) - end do - end do - else - do wn = 1,nw - dtant(:,wn) = 0._r8 - omant(:,wn) = 0._r8 - gant(:,wn) = 0._r8 - end do - end if - -!----------------------------------------------------------------------------- -! ... cbs : blackcarbons -!----------------------------------------------------------------------------- - ndx = get_spc_ndx('CB1') - if( ndx > 0 ) then - mw = adv_mass( ndx ) - gpm2(:) = dz(:) * acbs1(:pver) * mw - do wn = 1,nw - dtcbs1(:,wn) = gpm2(:)*qext_cbs(1,wn) - omcbs1(:,wn) = ssa_cbs(1,wn) - gcbs1(:,wn) = asm_cbs(1,wn) - end do - else - do wn = 1,nw - dtcbs1(:,wn) = 0._r8 - omcbs1(:,wn) = 0._r8 - gcbs1(:,wn) = 0._r8 - end do - end if - - ndx = get_spc_ndx('CB2') - if( ndx > 0 ) then - gpm2(:) = dz(:) * acbs2(:pver) * mw - do wn = 1,nw - do k = 1,pver - rh_l = rh_ndx(k) - delrh = del_rh(k) - dtcbs2(k,wn) = gpm2(k)*(qext_cbs(rh_l,wn) + delrh*qext_dcbs(rh_l,wn)) - omcbs2(k,wn) = ssa_cbs(rh_l,wn) + delrh*ssa_dcbs(rh_l,wn) - gcbs2(k,wn) = asm_cbs(rh_l,wn) + delrh*asm_dcbs(rh_l,wn) - end do - end do - else - do wn = 1,nw - dtcbs2(:,wn) = 0._r8 - omcbs2(:,wn) = 0._r8 - gcbs2(:,wn) = 0._r8 - end do - end if - -!----------------------------------------------------------------------------- -! ... ocs : organic carbons -!----------------------------------------------------------------------------- - ndx = get_spc_ndx('OC1') - if( ndx > 0 ) then - mw = adv_mass( ndx ) - gpm2(:) = dz(:) * aocs1(:pver) * mw - do wn = 1,nw - dtocs1(:,wn) = gpm2(:)*qext_ocs(1,wn) - omocs1(:,wn) = ssa_ocs(1,wn) - gocs1(:,wn) = asm_ocs(1,wn) - end do - else - do wn = 1,nw - dtocs1(:,wn) = 0._r8 - omocs1(:,wn) = 0._r8 - gocs1(:,wn) = 0._r8 - end do - end if - - ndx = get_spc_ndx('OC2') - if( ndx > 0 ) then - gpm2(:) = dz(:) * aocs2(:pver) * mw - do wn = 1,nw - do k = 1,pver - rh_l = rh_ndx(k) - delrh = del_rh(k) - dtocs2(k,wn) = gpm2(k)*(qext_ocs(rh_l,wn) + delrh*qext_docs(rh_l,wn)) - omocs2(k,wn) = ssa_ocs(rh_l,wn) + delrh*ssa_docs(rh_l,wn) - gocs2(k,wn) = asm_ocs(rh_l,wn) + delrh*asm_docs(rh_l,wn) - end do - end do - else - do wn = 1,nw - dtocs2(:,wn) = 0._r8 - omocs2(:,wn) = 0._r8 - gocs2(:,wn) = 0._r8 - end do - end if - -!----------------------------------------------------------------------------- -! ... soa : secondary organic -!----------------------------------------------------------------------------- - ndx = get_spc_ndx('SOA') - if( ndx > 0 ) then - ndx = get_spc_ndx('OC2') - if( ndx > 0 ) then - mw = adv_mass( ndx ) - gpm2(:) = dz(:) * asoa(:pver) * mw - do wn = 1,nw - do k = 1,pver - rh_l = rh_ndx(k) - dtsoa(k,wn) = gpm2(k)*(qext_ocs(rh_l,wn) + del_rh(k)*qext_docs(rh_l,wn)) - dtocs2(k,wn) = dtocs2(k,wn) + dtsoa(k,wn) - end do - end do - end if - else - do wn = 1,nw - dtsoa(:,wn) = 0._r8 - end do - end if - -!----------------------------------------------------------------------------- -! ... dust -!----------------------------------------------------------------------------- - ndx = get_spc_ndx(dust_names(1)) - if (ndx >0) then - mw = adv_mass( ndx ) - gpm2(:) = dz(:) * ads(1,:pver) * mw - do wn = 1,nw - dtds1(:,wn) = gpm2(:)*qext_ds1(wn) - omds1(:,wn) = ssa_ds1(wn) - gds1(:,wn) = asm_ds1(wn) - end do - else - do wn = 1,nw - dtds1(:,wn) = 0._r8 - omds1(:,wn) = 0._r8 - gds1(:,wn) = 0._r8 - end do - endif - ndx = get_spc_ndx(dust_names(2)) - if (ndx >0) then - mw = adv_mass( ndx ) - gpm2(:) = dz(:) * ads(2,:pver) * mw - do wn = 1,nw - dtds2(:,wn) = gpm2(:)*qext_ds2(wn) - omds2(:,wn) = ssa_ds2(wn) - gds2(:,wn) = asm_ds2(wn) - end do - else - do wn = 1,nw - dtds2(:,wn) = 0._r8 - omds2(:,wn) = 0._r8 - gds2(:,wn) = 0._r8 - end do - endif - ndx = get_spc_ndx(dust_names(3)) - if (ndx >0) then - mw = adv_mass( ndx ) - gpm2(:) = dz(:) * ads(3,:pver) * mw - do wn = 1,nw - dtds3(:,wn) = gpm2(:)*qext_ds3(wn) - omds3(:,wn) = ssa_ds3(wn) - gds3(:,wn) = asm_ds3(wn) - end do - else - do wn = 1,nw - dtds3(:,wn) = 0._r8 - omds3(:,wn) = 0._r8 - gds3(:,wn) = 0._r8 - end do - endif - ndx = get_spc_ndx(dust_names(4)) - if (ndx >0) then - mw = adv_mass( ndx ) - gpm2(:) = dz(:) * ads(4,:pver) * mw - do wn = 1,nw - dtds4(:,wn) = gpm2(:)*qext_ds4(wn) - omds4(:,wn) = ssa_ds4(wn) - gds4(:,wn) = asm_ds4(wn) - end do - else - do wn = 1,nw - dtds4(:,wn) = 0._r8 - omds4(:,wn) = 0._r8 - gds4(:,wn) = 0._r8 - end do - endif - -!----------------------------------------------------------------------------- -! ... sea salts -!----------------------------------------------------------------------------- - ndx = get_spc_ndx(sslt_names(1)) - - if( ndx > 0 ) then - mw = adv_mass( ndx ) - gpm2(:) = dz(:) * asal(:pver,1) * mw - do wn = 1,nw - do k = 1,pver - rh_l = rh_ndx(k) - delrh = del_rh(k) - dtsal(k,wn,1) = gpm2(k)*(qext_sal01(rh_l,wn) + delrh*qext_dsal01(rh_l,wn)) - omsal(k,wn,1) = ssa_sal01(rh_l,wn) + delrh*ssa_dsal01(rh_l,wn) - gsal(k,wn,1) = asm_sal01(rh_l,wn) + delrh*asm_dsal01(rh_l,wn) - end do - end do - else - do wn = 1,nw - dtsal(:,wn,1) = 0._r8 - omsal(:,wn,1) = 0._r8 - gsal(:,wn,1) = 0._r8 - end do - end if - - ndx = get_spc_ndx(sslt_names(2)) - if( ndx > 0 ) then - mw = adv_mass( ndx ) - gpm2(:) = dz(:) * asal(:pver,2) * mw - do wn = 1,nw - do k = 1,pver - rh_l = rh_ndx(k) - delrh = del_rh(k) - dtsal(k,wn,2) = gpm2(k)*(qext_sal02(rh_l,wn) + delrh*qext_dsal02(rh_l,wn)) - omsal(k,wn,2) = ssa_sal02(rh_l,wn) + delrh*ssa_dsal02(rh_l,wn) - gsal(k,wn,2) = asm_sal02(rh_l,wn) + delrh*asm_dsal02(rh_l,wn) - end do - end do - else - do wn = 1,nw - dtsal(:,wn,2) = 0._r8 - omsal(:,wn,2) = 0._r8 - gsal(:,wn,2) = 0._r8 - end do - end if - - ndx = get_spc_ndx(sslt_names(3)) - if( ndx > 0 ) then - mw = adv_mass( ndx ) - gpm2(:) = dz(:) * asal(:pver,3) * mw - do wn = 1,nw - do k = 1,pver - rh_l = rh_ndx(k) - delrh = del_rh(k) - dtsal(k,wn,3) = gpm2(k)*(qext_sal03(rh_l,wn) + delrh*qext_dsal03(rh_l,wn)) - omsal(k,wn,3) = ssa_sal03(rh_l,wn) + delrh*ssa_dsal03(rh_l,wn) - gsal(k,wn,3) = asm_sal03(rh_l,wn) + delrh*asm_dsal03(rh_l,wn) - end do - end do - else - do wn = 1,nw - dtsal(:,wn,3) = 0._r8 - omsal(:,wn,3) = 0._r8 - gsal(:,wn,3) = 0._r8 - end do - end if - - ndx = get_spc_ndx(sslt_names(4)) - if( ndx > 0 ) then - mw = adv_mass( ndx ) - gpm2(:) = dz(:) * asal(:pver,4) * mw - do wn = 1,nw - do k = 1,pver - rh_l = rh_ndx(k) - delrh = del_rh(k) - dtsal(k,wn,4) = gpm2(k)*(qext_sal04(rh_l,wn) + delrh*qext_dsal04(rh_l,wn)) - omsal(k,wn,4) = ssa_sal04(rh_l,wn) + delrh*ssa_dsal04(rh_l,wn) - gsal(k,wn,4) = asm_sal04(rh_l,wn) + delrh*asm_dsal04(rh_l,wn) - end do - end do - else - do wn = 1,nw - dtsal(:,wn,4) = 0._r8 - omsal(:,wn,4) = 0._r8 - gsal(:,wn,4) = 0._r8 - end do - end if - - end subroutine setaer - - end module mo_setaer diff --git a/src/chemistry/mozart/mo_tuvx.F90 b/src/chemistry/mozart/mo_tuvx.F90 index 29c7d800eb..64a47898c5 100644 --- a/src/chemistry/mozart/mo_tuvx.F90 +++ b/src/chemistry/mozart/mo_tuvx.F90 @@ -678,7 +678,7 @@ subroutine tuvx_get_photo_rates( pbuf, ncol, lchnk, height_mid, & ! ============================================== - call get_aerosol_optical_properties( tuvx, pbuf, ncol, & + call get_aerosol_optical_properties( tuvx, pbuf, ncol, cloud_fraction, & optical_depth, single_scattering_albedo, asymmetry_factor, & optical_depth_cld, single_scattering_albedo_cld, asymmetry_factor_cld ) @@ -1769,13 +1769,14 @@ end subroutine set_radiator_profiles ! columns from the aerosol package !----------------------------------------------------------------------- - subroutine get_aerosol_optical_properties(this, pbuf, ncol, & + subroutine get_aerosol_optical_properties(this, pbuf, ncol, cloud_fraction, & optical_depth, single_scattering_albedo, asymmetry_factor, & optical_depth_cld, single_scattering_albedo_cld, asymmetry_factor_cld) class(tuvx_ptr), intent(in) :: this ! TUV-x calculator type(physics_buffer_desc), pointer :: pbuf(:) integer, intent(in) :: ncol + real(r8), intent(in) :: cloud_fraction(ncol,pver) ! cloud fraction (unitless) real(r8), intent(out) :: optical_depth(pcols,pver+1,this%n_wavelength_bins_) ! aerosol optical depth [unitless] real(r8), intent(out) :: single_scattering_albedo(pcols,pver+1,this%n_wavelength_bins_) ! aerosol single scattering albedo [unitless] @@ -1872,7 +1873,9 @@ subroutine get_aerosol_optical_properties(this, pbuf, ncol, & single_scattering_albedo(i,kk,:) = waer(i,k,:) asymmetry_factor(i,kk,:) = gaer(i,k,:) - optical_depth_cld(i,kk,:) = taucld(i,k,:) + ! swcldtau (and hence taucld) is the in-cloud optical depth; dilute + ! by the layer cloud fraction to get the grid-box mean optical depth + optical_depth_cld(i,kk,:) = taucld(i,k,:) * cloud_fraction(i,k) single_scattering_albedo_cld(i,kk,:) = wcld(i,k,:) asymmetry_factor_cld(i,kk,:) = gcld(i,k,:) end do From c8e15a2baa078331916166cfebcdac04c806f8d0 Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Thu, 16 Jul 2026 11:10:51 -0600 Subject: [PATCH 2/6] adjust test list --- cime_config/testdefs/testlist_cam.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cime_config/testdefs/testlist_cam.xml b/cime_config/testdefs/testlist_cam.xml index d5227f0612..3edb34a01b 100644 --- a/cime_config/testdefs/testlist_cam.xml +++ b/cime_config/testdefs/testlist_cam.xml @@ -1062,14 +1062,13 @@ - - + - + From 5ffc7afd5090e9537388914482c21d206a886c5c Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Tue, 21 Jul 2026 08:15:46 -0600 Subject: [PATCH 3/6] ChangeLog --- doc/ChangeLog | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index 636f859d57..d58199e45c 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,5 +1,79 @@ =============================================================== +Tag name: cam6_4_189 +Originator(s): fvitt +Date: 7 Jul 2026 +One-line Summary: Fix TUVx bug; Use CLM50 in FMOZ compset +Github PR URL: https://github.com/ESCOMP/CAM/pull/1621 + +Purpose of changes (include the issue number and title text for each relevant GitHub issue): + + Fix TUVx cloud optical depth bug (issue #1619) + Update the FMOZ compset to use CLM50 rather than CLM45 (issue #1613) + Remove unused mo_setaer module (issue #1582) + +Describe any changes made to build system: N/A + +Describe any changes made to the namelist: N/A + +List any changes to the defaults for the boundary datasets: N/A + +Describe any substantial timing or memory changes: N/A + +Code reviewed by: jimmielin ekluzek + +List all files eliminated: +D src/chemistry/mozart/mo_setaer.F90 + - remove dead code + +List all files added and what they do: N/A + +List all existing files that have been modified, and describe the changes: +M cime_config/config_compsets.xml +M cime_config/testdefs/testlist_cam.xml +M doc/ChangeLog +M src/chemistry/mozart/mo_tuvx.F90 + +If there were any failures reported from running test_driver.sh on any test +platform, and checkin with these failures has been OK'd by the gatekeeper, +then copy the lines from the td.*.status files for the failed tests to the +appropriate machine below. All failed tests must be justified. + +derecho/intel/aux_cam: + +derecho/nvhpc/aux_cam: + +izumi/nag/aux_cam: + +izumi/gnu/aux_cam: + +CAM tag used for the baseline comparison tests if different than previous +tag: + +Summarize any changes to answers, i.e., +- what code configurations: +- what platforms/compilers: +- nature of change (roundoff; larger than roundoff but same climate; new + climate): + +If bitwise differences were observed, how did you show they were no worse +than roundoff? + +If this tag changes climate describe the run(s) done to evaluate the new +climate in enough detail that it(they) could be reproduced, i.e., +- source tag (all code used must be in the repository): +- platform/compilers: +- configure commandline: +- build-namelist command (or complete namelist): +- MSS location of output: + +MSS location of control simulations used to validate new climate: + +URL for AMWG diagnostics output used to validate new climate: + +=============================================================== +=============================================================== + Tag name: cam6_4_188 Originator(s): jimmielin Date: July 20, 2026 From 8f7212d5aa68e8253b42c4215dfb8976daab2c58 Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Tue, 21 Jul 2026 08:25:54 -0600 Subject: [PATCH 4/6] ChangeLog update --- doc/ChangeLog | 33 +++++++++------------------------ 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index d58199e45c..66c9da17a0 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -40,36 +40,21 @@ then copy the lines from the td.*.status files for the failed tests to the appropriate machine below. All failed tests must be justified. derecho/intel/aux_cam: + DIFF SMS_D_Ln9.f19_f19_mg17.FWma2000climo.derecho_intel.cam-outfrq9s_waccm_ma_mam4 + - expected baseline failure due to TUVx bug fix -derecho/nvhpc/aux_cam: +derecho/nvhpc/aux_cam: All PASS izumi/nag/aux_cam: + DIFF ERC_D_Ln9.f10_f10_mg37.QPWmaC6.izumi_nag.cam-outfrq9s_tuvx_waccm_ma_mam5 + - new TUVx test -- no baseline to compare against -izumi/gnu/aux_cam: - -CAM tag used for the baseline comparison tests if different than previous -tag: - -Summarize any changes to answers, i.e., -- what code configurations: -- what platforms/compilers: -- nature of change (roundoff; larger than roundoff but same climate; new - climate): - -If bitwise differences were observed, how did you show they were no worse -than roundoff? - -If this tag changes climate describe the run(s) done to evaluate the new -climate in enough detail that it(they) could be reproduced, i.e., -- source tag (all code used must be in the repository): -- platform/compilers: -- configure commandline: -- build-namelist command (or complete namelist): -- MSS location of output: + FAIL ERC_D_Ln9.f10_f10_mt232.FHIST_C5.izumi_nag.cam-outfrq3s_subcol COMPARE_base_rest + - pre-existing failure -- see https://github.com/ESCOMP/CAM/issues/1514 -MSS location of control simulations used to validate new climate: +izumi/gnu/aux_cam: All PASS -URL for AMWG diagnostics output used to validate new climate: +Summarize any changes to answers: bit-for-bit unchanged =============================================================== =============================================================== From d8280730183fdcb2756d64944eafea03ffab6ccb Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Tue, 21 Jul 2026 08:31:19 -0600 Subject: [PATCH 5/6] ChangeLog update --- doc/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index 66c9da17a0..3c320f4cc4 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -30,9 +30,14 @@ List all files added and what they do: N/A List all existing files that have been modified, and describe the changes: M cime_config/config_compsets.xml + - use CLM50 in FMOZ compset + M cime_config/testdefs/testlist_cam.xml + - change QPWmaC6 NAG test to include TUVx photolysis + M doc/ChangeLog M src/chemistry/mozart/mo_tuvx.F90 + - scale cloud optical depth by cloud fraction If there were any failures reported from running test_driver.sh on any test platform, and checkin with these failures has been OK'd by the gatekeeper, From 89abc34cb5297d53d982796e510ef15725b58f1f Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Tue, 21 Jul 2026 08:33:13 -0600 Subject: [PATCH 6/6] ChangeLog update --- doc/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 3c320f4cc4..4379529a11 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -2,7 +2,7 @@ Tag name: cam6_4_189 Originator(s): fvitt -Date: 7 Jul 2026 +Date: 21 Jul 2026 One-line Summary: Fix TUVx bug; Use CLM50 in FMOZ compset Github PR URL: https://github.com/ESCOMP/CAM/pull/1621