Hi everyone,

I'm new to OpenIFS and I'm trying to get to grips with it. I just started a project using EC-Earth (for which IFS is the atmospheric component), in particular the coupled single-column model (which uses OpenIFS as the atmosphere instead). I want to understand a bit better what the available "knobs to turn" are, and it looks like I'll have to add in some knobs for my project. Those knobs are the namelist parameters, those things that don't require re-compiling the model to change.

Is there a list of the namelist parameters for OpenIFS out there? NEMO, the ocean component of EC-Earth, has some documentation on the named parameters, what they represent, and what module or subroutine reads and uses them. I haven't seen anything similar in the IFS documentation. (Most chapters of the IFS docs vol 4 have a code section, but they tend to focus on how the code works internally, not its "interface" so to speak.)

Cheers! -Jareth

5 Comments

  1. Hi Jareth,

    When you are new to OpenIFS then a good starting point might perhaps be this page: How to control OpenIFS output

    It's not a comprehensive list by far but it will start you off with finding out about key namelist parameters that will help you to control the model without recompiling.

    Best,

    Marcus

    1. Unknown User (jareth.holt@misu.su.se)

      That is an incredibly useful page. It doesn't cover quite what I was thinking of, but I had not come across it yet. Thanks!

  2. Unknown User (nagc)

    Hi Jareth,

    Welcome!  I guess you referring to the coupled version of the single column model in developed at Stockholm?

    I think the coupled SCM uses the OpenIFS 40r1 single column model. There are sometimes differences in the model namelists between versions.

    To see what namelist options are available, it's useful to look in the source code of the model. The layout is logical once you get used to it.  Each namelist you find listed in the fort.4 file typically as (i) a setup routine, the name of which starts with 'su', (ii) a module defining the varables; (iii) the namelist file itself. 

    Taking the physics namelist 'NAMPHY' as an example, the declaration of the namelist is then in ifs/namelist/namphy.nam.h, the fortran module that declares the model variables for this namelist will be found in ifs/module/yoephys.F90, and the 'setup' routine that reads the namelist and sets the variable in the module, can be found in ifs/setup/su0phy.F90.  The '0' in su0phy.F90 refers to the 'level' of the setup; in the model's control structure subroutines there are various levels at which initialisation occur.

    Just as an aside, normally fortran modules are named starting with 'yom*' rather than 'yoe'. The physics routines use a different name because there are two physics packages in the full IFS model, one from Meteo-France (in ifs/phys_dmn) and one from ECMWF. OpenIFS only retains the ECMWF version.

    For a description of what these variables do, look in the module source file, ifs/module/yoephys.F90 and you'll see a list with a description of what each variable does. Most, but not all, of the variables listed in the module are provided in the namelist.  Note that there are some variables in the namelist that affect others. For example, LEPHYS is a 'master' switch that completely disables all the physics parametrizations, regardless of what you set for specific parameterization schemes.  Also note, some switches have dependencies between them. The model contains a fair amount of logic that will check if variables are not consistent. However, just a note of caution, not all combinations are tested.

    The documentation for IFS might mention some switches but the best source of documentation is the code itself. I guess there might also be some documentation from Kerstin's work on the model?

    Hope that helps,    Glenn

    1. Unknown User (jareth.holt@misu.su.se)

      Hi Glenn,

      Yes, this is the SCM that Kerstin worked on. It uses 40r1, but works with 43r3 as well (though we're still testing that). Part of why I'm looking into this is that we want to verify that roughness length over patchy sea ice is working as intended (41r2+ only), and see how changing the skin conductivity parameter over sea ice affects the system (currently not an input or output variable).

      Your insight into the code architecture helps a lot. The IFS docs point to where certain variables might be used, but so many modules are included in the dynamics codes that tracing backwards to the inputs seemed impossible. This helps me narrow the search down to 3 classes - namelist/nam*.nam.h, setup/su*, module/yo* - that I can search in that order.

      Cheers! -Jareth

  3. Hi Jareth,

    The skin conductivity over tile 2 (sea ice) will be set based on a couple of namelist settings, skin parameters are set in /surf/module/vlamsk_mod.f90

    If you are coupling LNEMOLIMTHK (snow and ice thickness from NEMO/LIM) - then if there is snow present then it will be ZLARGESN/ZSNOW (depending on surface conditions) and uses the look up value over an ice surface if no snow RVLAMSKS(12)/RVLAMSK(12)

    If you are not coupling snow thickness it always uses the look up value over an ice surface RVLAMSKS(12)/RVLAMSK(12)

    Hope that helps you.