Setting this up turned out to be harder than I expected. When I got stuck I asked the CESM forum about this, and Jerry Olson offered some enlightening suggestions. For future reference, I was using CESM 1.2.2 at the time.
CESM has an aqua-planet component set, so this seemed like a good place to start. There’s two ways to specify that you want this, both occur when you run the create_newcase script. There’s the shorthand flag:
Or you can use the -user_compset flag to specify a custom component set on the fly:
The two options above give an identical result, but in this case the latter became what I used so that I could have more control. I got this to run, and it produced output with zonally symmetric SST, like the figure below (continent outlines are just drawn for scale).
So, now I wanted to change the SST pattern, but I had a terrible time figuring out how to do this. Jerry helped me figure out that the SST is specified analytically in one of two files, depending on the setup. You can change the pattern by changing the sst_option variable (default is 1).
This might be fine for most aqua-planet experiments, but I wanted to mess around with the SST pattern with more freedom. So I built an NCL script to produce an SST pattern with a warm-pool, whose shape was very “tweak-able”.
To make the model use this SST pattern I fed this into the “data ocean model”, or DOCN. I also ended up using the data land and ice models to effectively disable them. The compset specification ended up looking like this:
Even though the DLND and DICE models are set to “null”, we still need to modify the “domain” files, because otherwise the model will have a black hole where the land used the be, and the surface temperature will be zero degrees Kelvin there. The standard domain files can be found in the input data directory here:
I modified the domain files such that the ocean fraction and mask was 1 everywhere, and the land fraction and mask was 0 everywhere. After you do this, the model needs to know where these new modified files are. You can specify this with the domainfile namelist variable in the user namelist files. These files are automatically created in the case directory, but are initially empty. Note that the DICE domainfile is the same as DOCN.
user_nl_docn user_nl_dice user_nl_dlnd
Finally, I needed to flatten the topography, otherwise we would have mountains of water! In my case the default topography file was:
So I made a copy of this and modified all the relevant variables to be zero.
After all that I confirmed that the surface temperature of the model output matched the input! This took me about a week to figure out. Hopefully these notes will help someone out there not repeat my mistakes!