CESM: Aqua-Planet Mode with Prescribed SST

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:

-compset F_2000_CAM5_AQUAPLANET

Or you can use the -user_compset flag to specify a custom component set on the fly:

-user_compset 2000_CAM5_SLND_SICE_AQUAP_SROF_SGLC_SWAV

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).

Zonally Symmetric SST

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).

models/atm/cam/src/utils/cam_dom/sst_data.F90
models/atm/cam/src/utils/cam_aqua/ocn_comp.F90

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”.

Zonally Asymmetric SST

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:

-user_compset 2000_CAM5_DLND%NULL_DICE%NULL_DOCN%DOM_SROF_SGLC_SWAV

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:

inputdata/share/domains/

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:

inputdata/atm/cam/topo/USGS-gtopo30_1.9x2.5_remap_c050602.nc

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!

13 thoughts on “CESM: Aqua-Planet Mode with Prescribed SST

    1. Walter Post author

      I’m not sure there is a way to subscribe to individual posts. I’m more likely to create new posts than update old ones, so if you subscribe to the blog then you’ll be notified of those.

      Reply
  1. Ray

    Hi Walter,

    I’ve run the exact same aqua planet model here and I checked my output file in the “run” directory, which in my case is the $case.cam.rh0.0001-01-06-00000.nc.

    Then I plotted the TS (surface temperature) and it does have a correct pattern like you showed here. However, the values are not right. They are about 65000K to 70000K. Do you have an idea why is that? Thank you very much!

    Reply
    1. Walter Post author

      That’s strange. My first thought is that you made a units error (the SST should be in Celsius), but that wouldn’t explain those values. Another issue might be that you saved the values in the wrong format, like integer or short, when the model is expecting a float. If this happened then the model might be “casting” the values as floats and giving you ridiculous numbers. Either way I would first double check you input SST file to make sure the values are in Celsius and are of type “float”.

      Reply
      1. Ray

        Sorry newbie here.

        I am afraid I did not prescribe any SST to the run. I just ported the model to the server and create a new aqua planet case. I thought the input files were downloaded automatically?

        Reply
        1. Walter Post author

          Ah, I see. So, the default aqua-planet compsets, like “F_2000_CAM5_AQUAPLANET”, don’t use any data to determine the SST distribution. There’s an analytic specification of the SST pattern by default. Using a custom compset like I describe above is how I got around this. However, this is not your problem. I think the issue is that you are looking at one of the restart files (i.e. …cam.rh0…) instead of the actual monthly history files that have “.h0.” in the filename. I just looked at one of my “rh0” files and the surface temperature was similar to what you describe. This is probably because these values are sums instead of averages. However, you might not see any “.h0” files until you run the model enough, I think they don’t show up until 15 days (i.e. half of a month). I hope this helps!

          Reply
  2. Nick

    Hi Walter, thanks very much for posting this, I’m in the process of setting up my own aqua planet runs and this helped – not sure why they don’t allow an input .nc file for SSTs… Anyway, you might also want to add that changes to orbital parameters might be desirable. I guess it depends on what simulation you’re doing but if you want to eliminate the seasonal cycle and have no solar variation throughout the year then as I understand it one needs to set the following in user_nl_cpl:
    orb_eccen = 0.
    orb_obliq = 0.
    orb_mvelp = 0.
    orb_mode = ‘fixed_parameters’

    Other changes to aerosols might be needed but I’m not sure how big an effect they would have.

    Reply
    1. Walter Post author

      Thanks Nick. I didn’t mention the orbital stuff just to simplify the article, but you’re right that most people probably want to wipe out seasonal variability since the idealized SST pattern won’t reflect any sort of seasonal variation.

      The only alternative way around this, if you really want seasons, is to first run a fully coupled or a slab ocean simulation and create the SST input data from that. I’ve messed around with a slab ocean configuration, which I wrote another post on, but I’ve always wanted to try a fully coupled simulation. The issue with a fully coupled ocean is that I’m not sure how to get a “warm pool”, which is pretty important for the things I’m interested in. I think some sort of ocean floor topography coudl do this, but this would take a long time to get the ocean circulation into equilibrium, so I haven’t experimented with it yet. It’s on my list though!

      Reply
  3. Nick

    Hi Walter, a coupled run would definitely be interesting. Just spit balling, I believe there’s an input file for geothermal flux at the seafloor (though I could be imagining this), maybe a shallow global bathymetry with an insanely high flux heating the bottom of the ocean there would do it. But this opens a whole other can of worms re how ocean dynamics would be affected and what a globally shallow ocean would do to circulation as well. I guess the best way would be somehow to fix SSTs just in your warm pool somehow, I’m sure some folk at NCAR have done this before. In any case, I’ve worked on paleo stuff and modifying the model to this extent is a bit of a task and you’re right you’d need to aim for about a couple of thousand years for equilibrium (based on Earth like bathymetries anyway!).

    Reply
    1. Walter Post author

      Wow, I never thought of adding a heat source… That’s an interesting idea. I was trying to approach it from the perspective of forcing the warm water to pool up like it does naturally. I’ll have to think about this possibility more.
      As for reaching equilibrium, I think we could do it faster than 1000 years. Im mostly interested in shorter term variability (daily/intraseasonal/interannual), so I don’t need a deep ocean circulation. I think the ocean would only need to be as deep as the deepest mixed layer (200 m?). I’m not sure what the ocean circulation would look like though. Without continents, you might not get any western boundary currents, which could alter the balance of poleward heat transport and really affect the general circulation of the atmosphere.
      I also wonder if the mid latitude ocean would look more like the mid latitude atmosphere, with a jet stream and Rossby waves…?

      Reply
      1. Nick

        Yeah that does sound interesting. No gyres, just meridional cells? And it does sound like a neat sensitivity test re a deep vs shallow ocean. Please make sure to post some diagnostics if you ever get around to this!

        Reply

Leave a Reply to Ray Cancel reply

Your email address will not be published. Required fields are marked *