PORT validation with CAM5 fixed-SST: SW flux diagnostics not roundoff despite matching QRS/QRL

chunyuy

Chunyu
New Member
I am using CESM 1.3.1 on Derecho.
I am trying to validate a CAM5 PORT offline radiation case against a fixed-SST CAM5 base case.

Base case:
case: f.e10.B1850.ne30_ne30.PI.CO2.002_N
CAM_CONFIG_OPTS: -phys cam5
CAM_NML_USE_CASE: 1850_cam5
RUN_STARTDATE: 0001-01-01
START_TOD: 0
CALENDAR: NO_LEAP
STOP_OPTION: ndays
STOP_N: 6

Base user_nl_cam:
co2vmr = 284.7e-6
rad_data_output = .true.
rad_data_histfile_num = 2
rad_data_avgflag = 'I'
avgflag_pertape = 'A','I'
nhtfrq = 0,-3
mfilt = 1,8
fincl2 = 'FSNT','FSNTC','FLNT','FLNTC','FSNS','FSNSC','FSDS','FSDSC','SOLIN','FSNTOA','FSNTOAC','FSUTOA','FLNR','FLNS','FSNR'

PORT case:
case: f.e10.B1850.ne30_ne30.PI_PISST.1xCO2.001_P
CAM_CONFIG_OPTS: -phys cam5 -offline_drv rad
CAM_NML_USE_CASE: 1850_cam5
RUN_STARTDATE: 0001-01-01
START_TOD: 0
CALENDAR: NO_LEAP
STOP_OPTION: ndays
STOP_N: 6

PORT user_nl_cam:
co2vmr = 284.7e-6

offline_driver_fileslist = '/glade/derecho/scratch/chunyuy/archive/f.e10.B1850.ne30_ne30.PI.CO2.002_N/atm/hist/f.e10.B1850.ne30_ne30.PI.CO2.002_N.cam.h1.fileslist'

avgflag_pertape = 'A','I'
nhtfrq = 0,-3
mfilt = 1,8
fincl2 = 'FLNT','FLNR','FLNS','FSNT','FSNR','FSNS','FSNTC','FLNTC','FSNSC','FSDS','FSDSC','SOLIN','FSNTOA','FSNTOAC','FSUTOA'

iradlw = 1
iradsw = 1

The base offline-driver fileslist contains six files:
f.e10.B1850.ne30_ne30.PI.CO2.002_N.cam.h1.0001-01-01-00000.nc
...
f.e10.B1850.ne30_ne30.PI.CO2.002_N.cam.h1.0001-01-06-00000.nc

The PORT run produces matching six output files:
f.e10.B1850.ne30_ne30.PI_PISST.1xCO2.001_P.cam.h1.0001-01-01-00000.nc
...
f.e10.B1850.ne30_ne30.PI_PISST.1xCO2.001_P.cam.h1.0001-01-06-00000.nc

The time coordinates match exactly:
N time: 0001-01-01 00:00:00 to 0001-01-06 21:00:00
P time: 0001-01-01 00:00:00 to 0001-01-06 21:00:00
area max abs diff: 0.0

I expected the PORT validation diagnostics to agree with the sampling base run to roundoff, following the guidance that FLNT, FLNR, FLNS, FSNT, FSNR, FSNS should be zero or roundoff-level different.

However, comparing base cam.h1 against PORT cam.h1, I get:
FLNT global mean diff mean: -0.0023 W/m2, spatial RMS mean: 6.56 W/m2
FLNR global mean diff mean: -0.0017 W/m2, spatial RMS mean: 6.83 W/m2
FLNS global mean diff mean: -0.0088 W/m2, spatial RMS mean: 8.68 W/m2

FSNT global mean diff mean: -0.4236 W/m2, spatial RMS mean: 58.54 W/m2
FSNR global mean diff mean: -0.4267 W/m2, spatial RMS mean: 57.56 W/m2
FSNS global mean diff mean: -0.4524 W/m2, spatial RMS mean: 49.79 W/m2

The shortwave diagnostics are clearly not roundoff. SOLIN also differs spatially, although the global mean difference is small.

Interestingly, the heating rates are much closer when I compare PORT QRS/QRL against the base offline-driver variables rad_qrs/rad_qrl after converting by cpair:
QRS P vs N rad_qrs / cpair RMS: ~3.8e-6 K/s
QRL P vs N rad_qrl / cpair RMS: ~8.2e-6 K/s

So it seems that PORT is reading much of the offline radiation state correctly, but the flux diagnostics, especially SW, are not reproducing the base run to roundoff.

My questions are:
  1. Is the validation supposed to compare base cam.h1 flux diagnostics directly with PORT cam.h1 flux diagnostics?
  2. Are there additional namelist settings needed so that SOLIN / solar geometry and SW flux diagnostics match exactly?
  3. Should iradlw=1 and iradsw=1 also be set in the base case, or should they be removed from the PORT case to better match the base run?
  4. Is this mismatch expected for CAM5 fixed-SST PORT, or does it indicate that my PORT configuration is still inconsistent with the base case?
Thanks!
 

hplin

Haipeng Lin
Moderator
Staff member
Thanks for writing, Chunyu. I would agree that your PORT configuration is inconsistent. I do not think iradlw=1 and iradsw=1 are defaults in CAM5 so if that is set in PORT the radiation sampling would be inconsistent with the two cases. I would set iradlw=1 and iradsw=1 (to call radiation every time step) in the base case for a short run to validate PORT is running correctly and compare fluxes with that run. The Wiki page on PORT (PORT - PORT - Parallel Offline Radiative Transfer Tool for CAM - wiki.ucar.edu) does mention:

  • Do I have to run with iradsw,iradlw,iradae = 1?
    • No, but to validate that PORT is operating, it is necessary
  • Do I need to run with ndens = 1?
    • No, but to validate that PORT is operating, it is necessary. And for RRTMG, validation is all but impossible without ndens=1
 
Vote Upvote 0 Downvote

chunyuy

Chunyu
New Member
Thanks for writing, Chunyu. I would agree that your PORT configuration is inconsistent. I do not think iradlw=1 and iradsw=1 are defaults in CAM5 so if that is set in PORT the radiation sampling would be inconsistent with the two cases. I would set iradlw=1 and iradsw=1 (to call radiation every time step) in the base case for a short run to validate PORT is running correctly and compare fluxes with that run. The Wiki page on PORT (PORT - PORT - Parallel Offline Radiative Transfer Tool for CAM - wiki.ucar.edu) does mention:

  • Do I have to run with iradsw,iradlw,iradae = 1?
    • No, but to validate that PORT is operating, it is necessary
  • Do I need to run with ndens = 1?
    • No, but to validate that PORT is operating, it is necessary. And for RRTMG, validation is all but impossible without ndens=1
Hi, thank you so much for your response!

I still cannot pass the PORT validation because SW is not close to zero. I suspect this is due to a solar-geometry mismatch between the base case and PORT.
Would it be acceptable to run PORT 1xCO2 and PORT 3xCO2, and calculate IRF as PORT_3xCO2 - PORT_1xCO2? My thought is that the solar-geometry issue should largely cancel in this paired difference. Ignore validation...
 
Vote Upvote 0 Downvote
Back
Top