The PFT code structure

Relevant information

  • In control/stash/um_stashcode_mod.F90,
    • STASHCODE_FRAC_SURF_TYPE = 216
    • stashcode_land_frac = 505 (this might be ratio of land to sea)
  • D1 pointer for stash 00,216 is JFRAC_TYP
  • Array is FRAC_TYP(1:land_field,1:ntype)

Reconfiguration

  • RECONFIGURE
    • RCF_INITIALISE
      • RCF_GRIB_CONTROL
        • RCF_GRIB_SPCL_CTL
          • RCF_GRIB_SPCL_SNOW
    • RCF_CONTROL
      • RCF_ANCIL
        • RCF_ANCIL_ATMOS
          • ANCIL_SORT. Creates the list ANCILS2UPDATE, which includes STASHCODE_FRAC_SURF_TYPE.
          • INANCILA_RCF_INANCILA. Where the headers and lookup tables for all the ancillaries are read in. It checks the fractional surface tile IDs match with namelist.
          • REPLANCA_RCF_REPLANCA. Reads in the ancillary data.
            • Contains the line `field = ancils2update(irec)%stashcode' so we're interested when field == 216
          • COMPRESS_TO_MASK. Puts 2D data onto the 1d land grid.
          • RCF_WRITFLDS. Writes the ancillary fields to dump
      • RCF_CREATE_DUMP
        • RCF_RESET_DATA_SOURCE. This is where the source value for all tile fields is changed to 8, where I've changed the tile IDs in the ancillaries.
          • RCF_COMPARE_TILES. Checks that the tiles in input dump are the same as times in output dump - they're not if I change the tile IDs in ancillary data
        • RCF_PRE_INTERP_TRANSFORM
          • RCF_INIT_TILE_T
        • RCF_POST_PROCESS_ATMOS
          • RCF_LSH_LAND_ICE_CHK
          • RCF_SNOW_AMOUNT_CHK
        • RCF_FIELD_CALCS/RCF_FIELD_DEPENDENT_CALCS. We only get here for tile fields if the fields are not found in ainital file, such as when I've changed the tile IDs.
          • RCF_CALC_TILES. This routine contains an IF statment involving l_rcf_init_flexi, so it is does impact on the calculation of tile data - but I don't know exactly how
            • RCF_INIT_FIELD_ON_TILES. The last argument for routine is FIELD_STASHCODE.
            • RCF_INIT_TILE_T
            • RCF_INIT_TILE_SNOW
            • RCF_INIT_SNOWDEP
            • RCF_INIT_SNOW_BK_DENS
            • RCF_CALC_TILE_MAP. Checks that required tile types are present in input dump
              • If true, set tile_map with index where input and ancillary match
              • otherwise gives the warning 'Consider l_rcf_init_flexi = T or set tile_map: '
            • RCF_SET_DOMINANT_TILE (also called by RCF_ML_SNOWPACK)
        • Only RCF_FIELD_DEPENDENT_CALCS
          • RCF_SNOWSTORES
          • RCF_ML_SNOWPACK. Calculations use the index in tile_map, which I think is just 1 everywhere unless the variable is set

I want to find

  • When the field is compress to land points, COMPRESS_TO_MASK?

Main run

  • U_MODEL_4A
    • ATM_STEP_4A
      • ATMOS_PHYSICS1
        • RAD_CTL
          • SURF_COUPLE_RADIATION (JULES)
            • TILE_ALBEDO
              • ALBPFT
      • ATMOS_PHYSICS2
        • NI_BL_CTL
          • BDY_LAYR
            • SURF_COUPLE_EXPLICIT (JULES)
              • SF_EXPL_L
                • PHYSIOL
      • UKCA_MAIN1
        • UKCA_CHEMISTRY_CTL/UKCA_CHEMISTRY_CTL_BE
          • UKCA_DDEPCTL
            • UKCA_SURFDDR. This checks that surface tiles match a `standard' configuration