Question about BITCOMP_NRUN

Hi,

Sorry to bother you, but I have a (possibly) quick question concerning BITCOMP_NRUN. The below is taken from the official MO instructions on running climate type suites, at https://code.metoffice.gov.uk/trac/moci/wiki/tips_CRgeneral#BitcomparisonbetweenNRUNandCRUN

I quote:

Note that when starting as an NRUN, standard GA/GC suites by default do not bit-compare with the original CRUN, because additional calculations are performed on the first timestep to ensure that the model is stable and internally consistent (to cater for cases when the UM restart comes from a reanalysis, data assimilation or a different UM resolution, and for cases when the atmosphere and ocean restarts are not consistent, which is important for the iceberg calving scheme). In order to switch off these additional calculations, set BITCOMP_NRUN=true in the suite conf top-level options. For the very latest GC3.x suites this will give identical results to the original CRUN. In earlier versions there were bugs in NEMO and CICE which broke bit-comparison, but even for these it is still best to enable this option to minimise the differences introduced by the NRUN.

My problem here is the word “off”. Is it possible this is a misprint, and should be “on”? Because otherwise, the above text makes no sense. In every other switch, TRUE means something is switched on. But here, it says to switch off the initial calculations, set this to TRUE. That’s rather counterintuitive!

The paragraph begins by saying that by default the suites do not bit-compare when doing an NRUN. This is because “additional calculations are performed…” in order to improve stability. Then it says to switch these additional calculations off, set this switch to TRUE. But at the bottom it says even with earlier versions, which had bugs that broke the bit comparison, it is still better to enable this option. I would read this as setting the switch to TRUE, but this is the opposite to what it says i.e. doing this switches off the additional calculations.

Either way, should I be setting this switch to TRUE or FALSE? In all of my simulations, I am starting from a resting/climatological ocean but taking my restart dump from a previous simulation, the official preindustrial run. Does that mean I am officially doing a CRUN? Or would this count as an NRUN?

Thank you very much,

Charlie

Hi Charlie,

After reading the docs in the link you sent, and comparing it with the rose-meta help text (screenshot below), I think the wording is correct.

An NRUN is a ‘normal’ run and a CRUN is a ‘continuation’ run. The ‘continuation’ here means the extension of a simulation from its own, previous restarts, rather than from another source.

The point is that when the extra ‘timestep 1 processing’ occurs (see screenshot), bit-comparability is lost.

In order to switch off these additional calculations, set BITCOMP_NRUN=true

My problem here is the word “off”. Is it possible this is a misprint, and should be “on”?

‘Off’ is correct here. To paraphrase, set BITCOMP_NRUN=true to turn off the additional calculations which break bit-comparability.

I agree this is somewhat counterintuitive, that is, set the flag to true to turn something off! That said, it’s a tricky thing to get one’s head around in the first place!

In short, ultimately it’s up to you whether or not you leave this on or off. Indeed, if you’re not running any rose_ana tasks which actually check for bit-comparability, then it’s a moot point anyway.

As an aside, the terms NRUN and CRUN aren’t used much these days in my experience anyway, perhaps because strictly speaking they refer to the UM alone, not the ocean etc.

All the best.

Jonny

Thank you very much Jonny.

So, just to be clear about 2 things:

  1. Given that I am starting a simulation from another source (i.e. using a restart dump from a previous simulation), it is officially an NRUN. It would only be a CRUN if I were restarting from one of my own, previous restarts?
  2. The text says that choosing one of these options may increase stability, but does that mean turning off the extra initial calculations (i.e. BITCOMP_NRUN=true) or turning them on (i.e. BITCOMP_NRUN=false)? Or does it not make any difference? Given that my simulation is inherently unstable at the moment anyway, I want to do everything possible to maintain stability, so if one of the above options would help that, then that’s the one I want to use.

Charlie

Hi Charlie.

  1. My understanding (given that I haven’t used the term much recently) is that whenever you start a simulation – that is from the start date given in the rose suite, usually called something like BASIS – then by definition that is an NRUN. A CRUN is essentially a cycle point later in the same simulation, e.g. u-ab123. If you’re interested in the terminology etc of Cylc 8 then there’s loads of info here on the Cylc docs.
  2. I’m not an expert in what the BITCOMP_NRUN switch does scientifically (i.e. the 4 bullets points mentioned in the link you pointed to earlier) but yes I’d go for the one that mentions stability improvements! :smiley:

Cheers

Jonny

PS - In case it’s of any use to aid understanding, in Cylc 7 starting from a simulation’s BASIS time was called a cold start, and starting from any later time was a warm start.

PPS - There isn’t a single mention of NRUN or CRUN in the current Cylc docs, which points to the terms’ decline in usage. Also bear in mind that what were previously separate rose and cylc repositories are now exclusively developed in the Cylc universe, e.g. in cylc-rose.

Thank you very much indeed Jonny, that’s all really helpful.

Charlie

No problem Charlie. All the best with your simulations! :world_map: