UKESM0.4

Introduction

This page started out at showing the additions needed to add nitrogen and crop/pasture forcing - see section below. However, it's evolved into general developments for UKESM0.4.

Adding nitrogen and crop/pasture forcing

Spencer has created a job with nitrogen limitation and crop/pasture forcing, u-af508. And we want to introduce most of this job into our prototype UKESM0.4, although we probably don't want to turn on either the nitrogen or crop/pasture forcing yet.

These additions are turned off by changing

  • ->um
    • ->namelist
      • ->Reconfiguration and Ancillary Control
        • ->Configurare ancils and initialise dump fields
          • ->Ignore stash_req=448, 458, and 449,459.
      • ->JULES Science Settings
        • ->JULES TRIFFID parameters
          • ->crop_io: need to change the 2s for 1s (because I think a 2 means the field is pasture rather than grass) (Flag indicating whether the PFT is a crop, pasture or grass)
        • ->JULES vegetation options
          • ->l_nitrogren (Use the TRIFFID Nitrogren limitation scheme for interactive carbon cycle)
          • ->l_trif_crop (Use agricultral PFTs)

History of Spencer's job

u-ac283@9443    GA7 at UM10.4
u-ac972@10066    Spencer's job, turning on TRIFFID, phenology and land use
u-ad340@11526    Eddy's job, the move to 13 PFTs
u-ad657@12776    Andy's job, move to UM10.4.1
u-af508 (current latest is @18831)    Spencer's job, move to UM10.5, most of the changes

Adding the u-ac283 to u-ac972 changes

In creating u-ag107 from Yongming's u-ag050 (our latest prototype UKESM0.4), I'm roughly taking the changes from u-ac283 to u-ac972.

  • I've merged in Spencer's STASHmaster_A from his branch to our current version (we need to keep Steph's additional field)
  • I've added in Spencer's branch
  • I'm adding branches/dev/janemulcahy/vn10.5_Liu2008_mixratio_fix@25479 (NOTHING TO DO WITH SPENCER'S ADDITION, BUT THIS GA7.1 ADDITION NEEDS ADDING IN SOMETIME).
  • Adding STASH items
    • 219: DISTURBED FRACTION OF VEGETATION (not in u-af508, I'm going to try leaving out)
    • 286: PREVIOUS DIST FRAC OF VEGETATION (not in u-af508, I'm going to try leaving out)
    • 287, 288, 289: FAST TURNOVER WOOD PRODUCT KGC/M2; MEDIUM TURNOVER WOOD PRODUCT KGC/M2; SLOW TURNOVER WOOD PRODUCT KGC/M2
    • 470, 471, 472, 473: ACCUMULATED DPM SOIL RESP, ACCUMULATED RPM SOIL RESP, ACCUMULATED BIO SOIL RESP, ACCUMULATED HUM SOIL RESP
  • ->um (all the parameter changes look to be already in the job I've inherited)
    • ->namelist
      • ->JULES Science Settings
        • ->JULES vegetation options
          • ->l_triffid: already true
          • ->l_trif_eq: already false
          • ->l_nrun_mid_trif: already false
          • ->triffid_period: already 10
          • ->l_phenol: already true
          • ->phenol_period: already 1 (Phenology is the study of periodic plant and animal life cycle events)
          • ->l_landuse: already true (Switch for using landuse change in conjuction with TRIFFID)
  • Spencer has added in a lot of STASH requests for fields with: tim_name='TTRIFdyn'. (They look to be already in my current job)
  • Also [namelist:time(...)] entries for tim_name='TTRIFphen' and tim_name='TTRIFdyn'. (Both already in.)

Adding the u-ac972 to u-ad340 changes

I've copied u-ag107 to u-ag115, and I'm looking to add in the changes from this stage.

  • This includes the changes to fraction of surface (216), leaf area index (217) and canopy height (218), which should already know about and should be in u-ag115.
  • CHANGING 5 PFTs TO 13 PFTs (which we should already have).
  • Eddy has turned off TRIFFID, phenology and land use (but I know we want these, so I'll keep these)
  • He has also change l_vegcan_soilfix to .false., but we also want this to be true
  • ->um
    • ->namelist
      • ->Reconfiguration and Ancillary Control
        • ->General technical options
          • ->l_rcf_init_flexi: true (we now know that this should be false - use tile_map instead)

I haven't applied any changes here, so I can take this job to the next change.

Adding the u-ad340 to u-ad657 changes

No changes in the last section, so I'm sticking with u-ag115.

  • There are changes to fraction of surface type, leaf area index and canopy height again, and we should have the final changes
  • ->um
    • ->namelist
      • ->JULES Science Settings
        • ->JULES vegetation options
          • ->l_triffid, l_trif_eq, l_nrun_mid_trif, triffid_period, l_phenol phenol_period, l_landuse and l_vegcan_soilfix: returned to the pre-Eddy values
          • ->can_rad_model: 4->6 (improvements to treatment of canopy radiation, including sunfleck penetration though the canopy, division of sunlit and shaded leaves within each canopy level, a modified version of inhibition of leaf respiration and the exponential decay of N through the canopy depends on the leaf area index. (already 6)
          • ->l_ht_compete: already true (using height based competition with TRIFFID)
          • ->l_soil_resp_lev2: already true (soil respiration calculated using deep carbon pool)
          • ->l_trait_phys: already true (using the trait-based physiology)
      • ->UM Science Settings
        • ->Section 09 - Large Scale Cloud
          • ->i_cld_vn: already 2 (probably a new setting at UM10.4.1. ->l_pc2 has been removed at the same time)

Again no changes, so this is probably very close to the job I started to use to build our prototype UKESM0.4.

Adding the final changes: u-ad657 to u-af508

No changes in the last section either, so I'm still working with u-ag115. Spencer changes are

  • They may be some domain changes, but the fcm differences are extensive and not clearly actual differences. My domain setup looks similar to what Spencer has, so I wont change now.
  • Some further changes to the ancillaries we've already changed, but I should have the latest changes for these anyway.
  • Adding new (to me at least) STASH items:
    • 442,443,444,445: SOIL NITROGEN POOL (DPM, RPM, BIO & HUM) KG N / M2
    • 446: INORGANIC SOIL NITROGEN KG N / M2
    • 447: NITROGEN DEPOSITION (kgN/m2/s)
    • 448: CROP FRACTION
    • 449, 459: CROP FRAC. AT PREV. TRIFFID CALL, PASTURE FRAC. AT PREV. TRIFFID CALL
    • 458: PASTURE FRACTION
    • 466, 467, 468, 469: DPM, RPM, BIO & HUM SOIL CARBON POOL KG C / M2
  • Ignoring STASH items:
    • 244,245: OBS/CLIM SNOW-FREE SURF VIS ALBEDO, OBS/CLIM SNOW-FREE SURF NIR ALBEDO
  • ->um
    • ->namelist
      • ->Reconfiguration and Ancillary Control
        • LOOKS LIKE UM10.5 HAS SPLIT NAMELIST recon INTO recon_technical AND recon_science AND THE SETTINGS LOOK TO BE THE SAME - EXCEPT l_rcf_init_flex WHICH WE NOW KNOW SHOULD BE false
        • ->Output dump grid sizes and levels
          • ->land_field already set to -99
      • ->JULES Science Settings
        • ->JULES hydrology options
          • ->l_var_rainfrac: true -> false (don't use variable rain fractions in JULES hydrology)
          • ->l_wetland_ch4_npp: false -> true (use NPP as substrate for methane wetland emissions). (I think Nucleotide pyrophosphatase/phosphodiesterase (NPP) is a class of dimeric enzymes that catalyze the hydrolysis of phosphate diester bonds.
          • ->l_wetland_unfrozen: false -> true (Use unfrozen wetland TOPMODEL scheme)
          • ->ti_wetl: needs to be manually added and set to 1.0 (Calibration parameter used in calculation of the wetland fraction)
        • ->JULES PFT parameters
          • LOOKS LIKE THESE 13 ELEMENT ARRAYS HAVE BEEN UPDATED, SO COPY THE WHOLE NAMELIST FROM u-af508. For crop_io, the 2s need replacing by 1s, because we don't want the crop/pasture forcing yet
        • ->JULES radiation options
          • ->l_albedo_obs: true -> false (don't scale albedos of land-surface tiles to agree with obs)
          • ->l_cosz: manually set to true (this doesn't have have a definition is rose-meta file)
          • ->i_sea_alb_method, l_dolr_land_black, l_sea_alb_var_chl & l_spec_sea_alb: not defined in u-af508, but rose-meta appears to think they should be - I've left them as they are for now (Choice of model for the Ocean Surface Albedo, if true - do use the surface emissivity in adjusting the OLR at land points, use spatially varying chlorophyll content to calculate the open sea albedos & use spectrally varying open sea albedos)
        • ->JULES sea and sea-ice options
          • ->l_iceformdrag_lupkes: already false (probably a UM10.5 upgrade)
        • ->JULES snow options
          • ->cansnowpft: Spencer has removed and this seems OK
          • ->aicemax & ->rho_firn_albedo: not defined in u-af508, but rose-meta appears to think they should be - I've left them as they are for now (Constant in Parametrization of equitemperature metamorphism & threshold albedo for using firn albedo calculation)
        • ->JULES soil options, manually adding in
          • ->confrac: 0.3 (fraction of the gridbox assumed to be covered by convective precipitation)
          • ->l_bedrock = .false. (not in rose-meta)
          • ->sm_levels = 4 (not in rose-meta)
          • ->zsmc = 1.0 (depth of layer over which soil moisture diagnostic is averaged (m))
          • ->zst = 1.0 (depth of layer over which soil temperature diagnostic is averaged (m))
        • ->JULES surface options
          • ->l_elev_land_ice: already false (probably a UM10.5 update)
          • ->n_inorg_turnover: manually set to 1.0 (Inorganic Nitrogen Turnover rate (360 days-1))
        • ->JULES TRIFFID options
          • LOOKS LIKE THESE 13 ELEMENT ARRAYS HAVE BEEN UPDATED, SO COPY THE WHOLE NAMELIST FROM u-af508
        • ->JULES vegetation options
          • ->ignition_method: manually set to 1 (not in rose-meta)
          • ->l_bvoc_emis: already true, I think Yongming has already set to true for Gerd's addition (Calculate BVOC emissions)
          • ->l_gleaf_fix: manually set to true (not in rose-meta)
          • ->l_inferno: manually set to true (not in rose-meta)
          • ->l_irrig_dmd: manually set to false (not in rose-meta)
          • ->l_nitrogen: u-af508 is true, but we want the nitrogen scheme off for now - so keep at false
          • ->l_nrun_mid_trif: Spencer has removed this, but rose-meta thinks it should be defined, so I've kept it as false.
          • ->l_o3_damage: manually set to false (not in rose-meta)
          • ->l_recon: manually set to false (not in rose-meta)
          • ->l_scale_resp_pm: false -> true (Scale whole plant maintenance respiration by the soil moisture)
          • ->l_stem_resp_fix: false -> true (Step respiration calculation using balanced LAI)
          • ->l_trip_crop: u-af508 is true, but we want the crop/pasture forcing for now - so keep at false
          • ->l_veg_compete: manually set to true (not in rose-meta)
      • THERE ARE OTHER NAMELIST CHANGES, WHICH I THINK ARE JUST BECAUSE OF UPGRADES TO UM10.5, BECAUSE THEY DON'T DIFFER TO WHAT WE ALREADY HAVE. WE SEEM TO HAVE ALL THE SECTION 19 (VEGETATION) STASH REQUESTS AT LEAST.
  • There is a lot of changes to the STASH requests, probably mostly due to the upgrading.

Add GC3.1

It should really be here, but it's a small change which requires following the instructions at the bottom of GMED ticket 275.

I've already added to Jane's branch, branches/dev/janemulcahy/vn10.5_Liu2008_mixratio_fix@25479, to most of the suites above, so now I'm copying u-ag115 to u-ag246 and adding the other changes.

One of Jane's changes is setting l_albedo_obs to false and Spencer has already done this for his job. All the other changes needing making.

Further changes for UKESM0.4

There have been some discussions about what UKESM0.4 should be, and we concluded that

  • l_land_use should stay at true (we did consider changing it to false, but this avoids a branch to change `agric' hard-wired logical)
  • crop_io should only contains 0 (0 is savannah, 1 is crop and 2 is pasture)
  • Set 219 (DISTURBED FRACTION OF VEGETATION) to zero (is was already zero).
  • (The report warning in rose gui for u-ag246 is that albsnf_max_io should be commented out - so I'm going to do that as well)

I've copied u-ag246 to u-ag430 and made these changes.

Two problems with current UKESM0.4

The jobs above have shown two problems

  1. the mean fields for chemistry and other fields are junk
  2. profiling has shown that the chemistry solver increases it's runtime four fold - and still fails to converge in some cases.

The two problems are tackled in the sections below.

Fix for TCOUPMN

Comparing the jobs which bridge the move from ORCA025 (u-af760) to ORCA1 (u-ag303) revealed that the moved to ORCA1 caused

  • The mean fields for chemistry and other fields to become junk.
  • An extra 13 fields were all added into the header. A common feature of these 13 fields is that at least one STASH request for each field including tim_name='TCOUPMN' (see p68-73 of my UKCA V for more detail)

I suspect that what happened was the 13 extra fields have been added to the header, but not added to the D1 array or dump, so there's a mismatch between the header and dump in the meaning section of D1.

Till's recommendations suggest that intv for TCOUPMN be changed from 1 to 3, because the coupling at ORCA1 is three hours instead of the one hour used for ORCA025, and this worked fine at UM10.3. The namelist for TCOUPMN was then called namelist:time(26c8b8f3), which became namelist:time(tcoupmn_26c8b8f3) at UM10.5 (and after the changes below it becomes namelist:time(tcoupmn_039ecafe)).

The additions of a debugging branch in control/top_level/prelim.F90 suggests that we also need to move istr from 1 to 3. This removed a warning which was appearing for these 13 extra fields, but didn't solve the problem. However, this did suggest that ifre might also need moving from 1 to 3 and this seems to solve the problem.

In summary, I think the full list of changes for TCOUPMN time profile when going from ORCA025 to ORCA1 are

  • ->um
    • ->namelist
      • ->Model Input and Output
        • ->STASH Request and Profiles
          • ->Time Profiles
            • ->tcoupmn_*
              • ->intv: CHANGE 1->3 (Specify the Time interval for processing)
              • ->istr: CHANGE 1->3 (Start time of diag output)
              • ->ifre: CHANGE 1->3 (Frequency of diag output)

CO2 mismatch?

When interactive CO2 isn't used, i.e. i_co2_opt is not 3, the variables co2_mmr is used as a measure of CO2 in the atmosphere. It is possible to include both stash items 250 (CO2 OCEAN FLUX KG/M**2/S) and 252 (CO2 3D TRACER MASS MIXING) when i_co2_opt = 2, but this probably shouldn't be the case.

What is clear from runs - comparing u-ag399 with u-ag443 or comparing u-ag879 with u-ag449 - that adding interactive CO2 with passing CO2 flux (stash 250) from MEDUSA to I'm not sure what happens if STASH 252: CO2 3D TRACER MASS MIXING RATIO is turned, which is surprisingly possible when i_co2_opt is not 3 and this is probably the route of our problem.