Experiment Design with CESM To Investigate Mechanisms Behind Nuclear Nino


Three primary mechanisms contribute to a long, sustained El Nino-like response after soot injections in six of the nuclear war scenarios examined so far. The shutdown of convection over the western warm pool, the slowdown of the Hadley circulation and weakening of the North Pacific subtropical high, and the equatorward shift of the Intertropical Convergence Zone (ITCZ). An additional mechanism, championed by Khodri et al. (2017) as responsible for 80% of the zonal wind anomalies in the western Pacific after a large tropical volcanic eruption (similar to our nuclear winter simulations), involves the eastward progression of atmospheric Kelvin waves which suppress convection along their path across the Indian Ocean, eventually promoting westerly wind anomalies in the western Pacific Ocean. Khodri et al. (2017) isolated this mechanism using IPSL-CM5B (1.8x3.7 deg resolution) by altering the albedo of equatorial Africa and found the wind anomaly in the western Pacific was 80% of the wind anomaly in the model experiment where sulfate aerosols were placed in the stratosphere uniformly across the Earth. This was convincing evidence for the sudden reduction of convection over Africa to influence the El Nino-Southern Oscillation (ENSO).

To disentangle the mechanisms behind the wind perturbation in our nuclear simulations, I propose to perform a similar experiment in CESM-WACCM4, except instead of altering the albedo of the land surface, I propose to directly change the insolation at the top of the atmosphere to emulate the effect of the aerosols. This removes any influence of the heated stratosphere on the circulation, isolating purely the effect of the colder land surface.

I will reduce the incoming solar radiation at the top of the atmosphere only in the land areas bounded by a box between 15W-50E, 10S-30N, based on the anomaly during nw_ur_150_07 (the 150 Tg case). Here is an example of what the forcing would look like:


Start: 0005-05-15
End: 0006-05-15
A link to the maps for each month can be found here → http://people.envsci.rutgers.edu/jlc449/NuclearNino/nino/SWplots/


There are two main things I need to figure out:
1. How to run a new case using initial conditions from nw_cntrl_03 starting at (or around) 0005-05-15 through 0006-05-15.
2. How to reduce TOA shortwave radiation over a select region of Africa for each timestep in the new run based on the surface shortwave radiation anomaly in the 150 Tg case.
I should be able to figure out #1, I just need to know which restart files to use. To accomplish #2, I started looking into the RRTMG code:

ccsm/cesm1_3_beta17/models/atm/cam/src/physics/rrtmg

ccsm/cesm1_3_beta17/models/atm/cam/src/physics/rrtmg/radsw.F90

and found where incident shortwave solar radiation is calculated based on the solar constant in each band, earth-sun distance, and zenith angle,


in radsw.f90, subroutine rad_rrtmg_sw(…), lines 387-390:

  ! Define solar incident radiation
   do i = 1, Nday
      solin(i)  = sum(sfac(:)*solar_band_irrad(:)) * eccf * coszrs(i)
   end do


where Nday is the number of columns where it is daytime after coszrs(i) is passed through CmpDayNite (a function to rearrange input variables so it is only showing where there is daylight). solin(i) appears to be used in subroutine rad_rrtmg_sw to calculate solar heating rates, but I still need to make sure that this calculation isn't being done independently again in between the calculation of solin and the calculation of the heating rates.


So if I create a variable called something like AFR_SW_FACTOR, which has a default value of 1 everywhere except in the region I want to alter radiation (where it would be between ~0.1 and 1 depending on the amount of radiation blocked by the aerosols in the 150 Tg run), the line where solar incident radiation is calculated would become:

solin(i) = sum(sfac(:)*solar_band_irrad(:)) * eccf * coszrs(i) * AFR_SW_FACTOR(i)

Thus, solin would be reduced based on how AFR_SW_FACTOR is constructed. I would just need to read in a file that contains the fraction of radiation blocked by the aerosols at each grid cell throughout the already completed 150 Tg run (likely daily resolution), then interpolate that for each timestep. I also need to make sure that this value isn't being calculated anywhere else.



Best way to modify code: Use SourceMods
/projects/joco6825/ccsm/case/nw_ur_150_07_TA150/SourceMods/src.cam
Make modifications BEFORE compiling

(1) create case

(2) invoke cesm_setup
(3) make modifications
(4) build using ./nw_ur_150_07_TA150.build
(5) submit run using ./nw_ur_150_07_TA150.submit


Notes for Meeting


Exactly what I want to do:
I want run nw_cntrl_03 out to the beginning of May 0001 and get restart files for 0005-05-01 so I don’t have to keep running those 4 months over and over again. Then, I want to run a new case starting from May 1st where I am imposing a shortwave radiative forcing equivalent to the 150 Tg case from 0005-05-15 for one year.


0. Are the restart files I need in /pl/archive/toon_opp_impacts/waccm4/nw_cntrl_03/rest/0005-01-01-00000 ?

1. Where do I need to store restart files to ensure that they are used in the case? If it’s in scratch, is there a way to change that so they don’t get deleted? Or should I just back them up like how they are in the PetaLibrary?


3. PSEUDO CODE FOR PROPOSED CHANGE:

If I want to change the radiation code, I should create a file in SourceMods with that name and edit the subroutine I want to change?

load in AFR_SW_FACTOR and get appropriate data for given model date and time, creating new variable AFR_SW_FACTOR

pass AFR_SW_FACTOR through CmpDayNite which rearranges input variables so it is only showing areas where it is daytime
redefine solar insolation as : solin(i) = sum(sfac(:)*solar_band_irrad(:)) * eccf * coszrs(i) * AFR_SW_FACTOR(i) where i is the number of grid points where it is daytime.


radiation.f90 → subroutine rad_rrtmg_sw


4. How do I load in a netCDF file into CESM?


5. Is there a way to load in nudge CESM to a certain shortwave radiation? Maybe it would be easier to assign an optical depth equivalent to what occurs in the 150 Tg case?

Cd /





ext/rrtmg_sw/rrtmg_sw_rad.f90