limit_HGT_LAI Subroutine

public subroutine limit_HGT_LAI(HGT_pft_temp, LAI_pft_cbl, HGT_pft_cbl, mp, land_pts, ntiles, tile_pts, tile_index, tile_frac, L_tile_pts, LAI_pft, HGT_pft, Clai_thresh)

Purpose

This SUBROUTINE checks that input values of leaf area and canopy height lie between set values (defined by PFT) and overwrites if necessary. These limits are needed to ensure that the canopy roughness properties of the land point are well behaved (see ruff_resist).

The mapping from grid cells (land_pts,ntiles) to the (mp) structure is also undertaken.

This SUBROUTINE is active when CABLE is run within a coupled model (i.e. ACCESS)

Method

The cell-level input (land_pts,ntile) variables for leaf area LAI_pft and canopy height HGT_pft are checked for

  • whether the land_pt has a non-zero fraction of that tile (if zero fraction then LAI and canopy height are set to zero)
  • whether the LAI lies above a minimum value CLAI_thresh
  • whether the canopy height lies above a minimum value (which is PFT dependent)
  • whether non-vegetated tiles have a non-zero canopy height.

Outputs are LAI_pft_cbl and HGT_pft_cbl

WARNINGS

  • INTENT statements need to be added to the argument lists
  • hardwired indexing is used throughout. This SUBROUTINE assumes that
    1. non-vegetated tiles take indexes 14 and onwards
    2. tall vegetation occupies tile indexes 1-4
    3. other vegetation (shrubs/grasses/crops/wetlands) occupy tile indexes 5-13
  • the limits on canopy height are hardwired
    1. canopy height for tall vegetation is limited to be greater than 1m
    2. canopy height for other vegetation is limited to be greater than 0.1m

Arguments

Type IntentOptional Attributes Name
real :: HGT_pft_temp(land_pts,ntiles)

OUT adjusted canopy height in (land_pts,ntile) form (m)

real :: LAI_pft_cbl(mp)

OUT adjusted leaf area in (mp) form (mm)

real :: HGT_pft_cbl(mp)

OUT adjusted canopy height in (mp) form (m)

integer :: mp

total number of tiles carried by land vector (-)

integer :: land_pts

number of land points, max number of tiles that can be carried in any land point (-)

integer :: ntiles

number of land points, max number of tiles that can be carried in any land point (-)

integer :: tile_pts(ntiles)

number of land_pts in the array that include an active tile of a particular tile type (-)

integer :: tile_index(land_pts,ntiles)

specifies the tile types within each land point (-)

real :: tile_frac(land_pts,ntiles)

fraction of cell assigned to each tile (-)

logical :: L_tile_pts(land_pts,ntiles)

switch to denote whether a tile is active (-)

real :: LAI_pft(land_pts,ntiles)

IN leaf area (mm)

real :: HGT_pft(land_pts,ntiles)

IN canopy height (m)

real :: Clai_thresh

The minimum LAI below which a tile is considered to be NOT vegetated (mm)