EMAC-CLaMS

Alright, so you wanna run EMAC-CLaMS, good for you! It's fun. At the present date (2024.04.24) there is a namelist (nml/EMAC/CLaMS) which you can use as a baseline. I (Ed Charlesworth) wrote some notes in the namelists that should clarify most things for you already, but this page provides an overview of the whole tomato.

With EMAC-CLaMS, generally you'll want to have tracers which are transported in CLaMS within the stratosphere but transported in EMAC within the troposphere. That way, the major differences between EMAC and CLaMS in those tracers are only in the stratosphere. Some of these tracers might be fed back into Eulerian processes (presently only radiation has been used, but maybe other examples will come up in the future).

So there are several namelists you should be interested in here:

  1. ptrac.nml: Here you can define arbitrary tracers for both CLaMS and EMAC.
  2. tnudge.nml: With TNUDGE you can define
  3. lggp.nml
  4. rad.nml
  5. channel.nml

PTRAC

Here you define arbitrary tracers for both CLaMS and EMAC. So say you want to add some tracer to CLaMS. Say... an E90 tracer. How do you do that? You add a line to the end of the TRAC list in PTRAC.nml:

TRAC(n) = 'cl;', 'E90;', 'mol/mol', 1, 1, 0, , , , , ,

where n is some number in the TRAC list which is not already defined. Here, you just want to change the name of the tracer (CFC12), and nothing else. At least, I see no reason to change anything else. Then you'll need to define the tracer's molar mass (sometimes MESSy might detect this automatically, sometimes not. Just run the model without defining the molar mass, and it'll give you an error if it really needs it. You define the molar mass with:

TPROP(m) = 'cl;', 'E90', 'molarmass ', '146.07',

where m is some number in the TPROP list which is not already defined. 146.07 is the molar mass of SF6, which is typically used for age of air (AOA) as well. I think it doesn't matter what you pick, really, it just has to be something.

TNUDGE

Now, you have a tracer defined in PTRAC. You have to nudge it. Why do you have to nudge it? First, you need to populate the tracer with some values. In the old clams way, this is typically done by BMIX, which puts parcels in the lower boundary and gives them some tracer values. TNUDGE takes over this job in EMAC-CLaMS. It's more flexible anyway. How about an example for our E90 tracer?

TNUDGE(n) = 'cl','E90','gp_trac_v0', 'E90', -1.0, -90.0,90.0, 0,-2, -360.0,360.0,T,,,,,0,

(p.s. there should be two ' in the empty spaces between commas on the end of near-end of the line, but I haven't figured out what the escape character is.)

here, gp_trac_v0 refers to tracer_gp, the tracer set for gridpoint (EMAC) data. That means there must be some E90 tracer within EMAC which you can use for nudging, i.e., MESSy populates that tracer somehow (probably elsewhere in TNUDGE). You can also probably replace gp_trac_v0 with import_grid and some import object, but I've never done that. That would let you use import.nml to pull in some data and directly apply that to CLaMS. The only other part you might care about is the "0,-2" - this defines the boundaries in which the tracer should be nudged. In this case from the surface (0) to the tropopause (-2). You can define the tropopause with "inp_tropopause" inside of tnudge.nml, and for that you can use a custom tropopause defined in tropop.nml.

LGGP

LGGP grids lagrangian tracers. This is necessary if the tracers should be used in Eulerian physics, e.g. radiation. To grid a clams tracer, you add

LG2GP(n) = 'H2O_clgp', 'tracer_cl', 'H2O', 2, F, 2, -1.E+34, 'clams', 'E5_H2O', T

where H2O_clgp is the name of your tracer, tracer_cl points to the clams tracer set, and H2O is the name of the object in that set. The only other arguments that really interest you should probably be the third and second to last - those define the channel list and the channel object used to "fill" the resulting gridded field. So generally you want to use the same channel object that you use for this tracer in TNUDGE.nml.

RAD

RAD controls radiation, and what fields are used as radiation inputs. So most importantly:

inp_r(1,1) = 'lggp_gp', 'H2O_clgp' ! H2O [mol/mol] or [kg/kg]

this line defines which water is used. You pick the channel and the object, and you're ready. You can also define radiation for the other relevant species.

CHANNEL

CHANNEL isn't really necessary, but you'll probably want to use it to collect all the interesting variables in one place. Use ADD_CHANNEL to make a new output channel, and ADD_REF to add variables to that channel. For example:

ADD_CHANNEL(1) = 'output',

and

ADD_REF(n) = 'lggp_gp', 'H2O_clgp', 'output', ,

then the gridded clams water will be added to the *_output.nc files, and you won't have to go digging through other files to find it. Channels which might have variables you care about are:

  1. tracer_gp: has EMAC tracer data.
  2. ECHAM5: has dynamical variables like winds and so on.
  3. tracer_cl: has the Lagrangian CLaMS tracers.
  4. lggp_gp: has the gridded CLaMS tracers.

messy/EMAC-CLaMS (last edited 2024-04-24 13:47:27 by EdwardCharlesworth)