Hi all

I'm wondering about the mass fixers in OpenIFS. From reading Table 6 in https://www.ecmwf.int/sites/default/files/elibrary/2013/9055-global-mass-fixer-algorithms-conservative-tracer-transport-ecmwf-model.pdf it seems mass fixers are turned off by default in OpenIFS (LTRCMFIX=false in the source code). The report says: 

For “standard” advection options of moist quantities in IFS (quasi-cubic, quasi-monotone interpolation for specific humidity, linear for cloud fields), the cheapest fixer JMG is sufficient. It is the only one that can be applied for advection with linear interpolation.

I've got a "water leak" in my coupled OpenIFS+NEMO model so I'd like to see if a mass fixer might solve the problem. Has anyone used them before in OpenIFS and could perhaps recommend some settings? Should I stick with the JMG scheme? How often should it be applied, and how do I control this? Do I need to set "LMASSFIX=true" for each variable I wish to conserve, i.e. "YQ_NL%LMASSFIX=true", and which variables are the most important? 

Any help here is much appreciated! 

Many thanks. 
/Joakim

21 Comments

  1. Unknown User (de3j)

    I realise that I had missed the page https://confluence.ecmwf.int/display/OIFS/How+to+control+mass+conservation+in+OpenIFS which explains what to do quite well. Should really make sure to trawl the support pages before posting here... (wink) 

    Cheers
    Joakim 

  2. Unknown User (nagc)

    We obviously need one of the fancy systems that displays suggested links when you start typing, though personally I tend to ignore them! :)

  3. Hello, I would like to know what are the supported mass fixers in openifsr43r3 ?  This page mentions those available in Cycle 38r1 How to control mass conservation in OpenIFS

  4. Hi Etienne Tourigny, I have now spoken to Michail Diamantakis who has expertise on the mass fixers in IFS. 

    You can find more information on this Confluence page: Options for mass fixers in IFS which describes total air mass fixers and tracer mass fixers. If you are interested in mass fixers for tracers you can also read EMCWF Tech Memo 819. This was however written for CY45R1 and there is a difference to 43r3. There is also a GMD paper which describes the Priestley algorithm used in qmfixer.F90 in OpenIFS 43r3 https://gmd.copernicus.org/articles/7/965/2014/

    I hope this helps.  

    Best regards,  Marcus

    1. Hi Marcus, Etienne,

      a small correction, I miss-typed the subroutine name earlier in my message to Marcus : qmfixer.F90 contains: (info) a variant of the Bermejo & Conde mass fixer which is described in TM819 and (ii) the simple proportional mass fixer. It also allows to use one or the other for different tracers. We use Bermejo Conde type fixer for greenhouse gases and this is highly optimized for these but contains  tunable parameters for other tracers (details of tuning parameters in the TM). Priestley algorithm is contained in qmfixer2.F90 but haven't tested it for some time.

      The mass fixer described in TM819 (qmfixer.F90)  has some improvements (described in the TM) with respect to its 43r3 predecessor:

      • uses improved vertical scaling factor for the stratospheric correction computed by the limiter
      • embeds limiter to the fixer to stay always positive definite and quasi-monotone


      Best regards,

      Michail

      1. Thanks Michail! So our best bet is the BC fixer, but taking into consideration it might not be ideal for high resolution as described in TM819. But for GHG like CO2 this might not be a problem.

      2. Unknown User (nagc)

        Michail, thanks. I will update the confluence page for OpenIFS with this information.

  5. Thanks again Markus, this is really useful! Unfortunately I do not have access to the first link you posted (Options for mass fixers in IFS cy41r2 and beyond) - it probably requires a dev account?

  6. Etienne, I will email you separately.

  7. Unknown User (nagc)

    I can add that Michail has given me some updates to the mass fixers for OpenIFS 43r3. I did not have time to add them to the first release, but they will be added to the second version.

  8. Just to note that the first 2 pages of TM819 give a description of the 43r3 code. Later pages describe improvements that entered in CY45R1.

    1. Unknown User (nagc)

      The changes coming in 43r3v2 are: Add embedded limiter to be always positive definite and quasi-monotone. Use alternative vertical scaling factor proportional to gribox mass.

      1. Thanks Glenn. Then with these changes you will have the version available in latest IFS cycle which is described by TM819

  9. Hello everyone, following the discussion above and TM 819 I try to apply standard qm BC MF. I set:

    For the pressure mass fixer

    &NAMDYN
       LMASCOR=true,
       LMASDRY=true,
    &NAMCT0
       NFRMASSCON=1,

    For the tracer mass fixer:

    &NAMGFL
       YS_NL%LMASSFIX = TRUE,
       YR_NL%LMASSFIX = TRUE,
       YI_NL%LMASSFIX = TRUE,
       YL_NL%LMASSFIX = TRUE,
       YQ_NL%LMASSFIX = TRUE,
       LTRCMFBC = TRUE,


    I get the message:

    148: SUGFL3: QM FIXER CANNOT BE APPLIED ON FIELD: LIQUID WATER
    148: ABORT! 5 SUGFL3: HIGH ORDER INTERPOLATION MUST BE USED FOR ADVECTION


    Using Mac Gregor's scheme (LTRCMFGM = TRUE,) on the other hand works. Is Bermejo and Conde is specifically for gaseous tracers? I think I'm ok with just JMG for now, but I would still like to know.

    Cheers, Jan


  10. No worries Jan, it is fine - it is a question of set up details. BCMF can be used for any tracer provided that it is advected with cubic Lagrange or higher order method. By default in IFS only q and cloud fraction are advected with cubic SL. Linear interpolation is used for the cloud fields (liquid, ice, rain, snow). With linear interpolation it is not possible to estimate the local error and BCMF can't work -it is suited for high order schemes. MGregor can work with linear interpolation as well. If you want to make BCMF to work you may use the flag

       YS_NL%LINTLIN = FALSE,
       YR_NL%LINTLIN = FALSE,
       YI_NL%LINTLIN = FALSE,
       YL_NL%LINTLIN = FALSE,

    but be aware that this will switch to cubic SL advection these species. This will have another impact (note that it is planned to switch to cubic from cy47r3 that is coming soon). So if you want to keep consistency with current default (operational) set up please use McGregor. For GHG (CO2, CH4) I would strongly recommend BCMF.
    Good luck!

    Michail

  11. oh and another thing: I would prefer LMASDRY=F

    Although in nature dry air rather than moist mass is conserved the IFS continuity is formulated to conserve the latter (total mass). So when you force dry mass conservation you get an anti-correlated fluctuation of total mass with moisture mass. The impact is very small and don't worry much about it but for consistency I would rather use the above. If you want to dive further into these details please have a look here:

    https://www.ecmwf.int/en/elibrary/19114-dry-mass-versus-total-mass-conservation-ifs

  12. Thank you for the swift feedback, Michail!

    For our AOGCM we will then use:

    &NAMDYN
       LMASCOR        = TRUE,
       LMASDRY        = FALSE,
    &NAMCT0
       NFRMASSCON     = 1,
    &NAMGFL
       YS_NL%LMASSFIX = TRUE,
       YR_NL%LMASSFIX = TRUE,
       YI_NL%LMASSFIX = TRUE,
       YL_NL%LMASSFIX = TRUE,
       YQ_NL%LMASSFIX = TRUE,
       LTRCMFMG = TRUE,

    Chemistry coupling is some time still some time away, but it's good to have the information already available.

    Cheers, Jan

  13. Hi Michail Diamantakis Marcus Koehler are there any changes in cycle 48R1 (compared to OpenIFS 43R3) regarding mass fixers ?

  14. Hi Etienne,


    The main change is that in CY48R1 we activate by default the Bermejo and Conde type of mass fixer LTRCMFBC=true for all moist tracers (specific humidity and cloud fields). The pressure advection mass fixer is also activated LTRCMFIX_PS=true. Looking at your setup above, the biggest impact for you is that you use the 'McGregor' fixer. If you are only interested in moist species mass conservation you can remove the above mass fixer options from the namelist because the mass fixer is activated by default in CY48R1 and so the appropriate options will be applied.

    We have done plenty of evaluation in nextGEMS project, DestinE forecasts and the options I mention above solve the water leakage problem and reduce energy leakage by a factor of ~ 10 (at 4.4km resolution). If you have a special interest maintaining your old options then you can do so by setting
    LTRCMFBC=false,
    LTRCMFMG = TRUE,

    PLUS the remaining options which are now true by default.

    The mass fixer option we use also works well for GHG tracers but if you are interested in preserving inter-hemispheric gradients you will get better results adding flag (for GFH tracers only):
    YGHG_NL(1)%BETAMFBC=1.5,

    YGHG_NL(2)%BETAMFBC=1.5,

    It puts more weight than normal in mass correction in areas where tracer gradients are stronger (this happens by default but with this flag the effect stronger, you can use up to 2).

    Hope this helps,

    Michail

    1. Thanks Michail Diamantakis this is very useful! The LTRCMFMG option was suggested by Jan, we have been using LTRCMFBC without any problems using the recommendations in the linked "Options for mass fixers in IFS" CONFLUENCE page (which is not available to the general public, unfortunately).

      I am mainly interested in GHG (specifically CO2), we have been using so far following the same page and using YGHG_NL(1)%BETAMFBC=2 . This same page contains the following: "For example, we may use 2 for CO2, CH4 and 1 for humidity. For most cases 1 is the recommended value". 

      Is there any updated information on why using YGHG_NL(1)%BETAMFBC=1.5 would be better than 2?

  15. Hi Etienne, if you already use betamfbc=2 then keep using that, it gives good results for the interhemispheric gradients, I thought you were using 1 and so I suggested 1.5 to introduce a softer change. We did some testing with 1.5 for CO2 in CY48R1 and it also looked good, if you have time and computing capacity you can test it yourself but if not there is no need to change it. The larger values act more on features such as plumes, if you are interested in these. There is no perfect value, with 1.5 plumes maybe represented slightly better (less weakened by the Mfixer) but the difference is not great. We currently do work on that and something better may come in time ..