landuse_variable Module

Overview of landuse_variable module (landuse3.F90)

This MODULE applies land-use changes for CABLE.

This includes:

  • plant functional type transitions
  • wood harvest
  • land management

Method

All variables in the CABLE restart file and the state variables will be calculated.

There are three groups of landuse_mland member variables. For example, let's say we have a variable named var, then:

  • luc%var_x(mland,mvmax) contains data before land-use change, indexed on the number of land points (mland) and the maximum number of plant functional types (mvmax).
  • luc%var_y(mland,mvmax) contains data after land-use change, indexed on the number of land points (mland) and the maximum number of plant functional types (mvmax).
  • lucmp%var(mp) contains the variable data, indexed on the number of vegetation patches (mp).

The land-use change for each variable is applied in the form of a transformation matrix T, such that:

The procedure for applying a land-use transition is:

  1. Map a CABLE variable var from CABLE into a landuse_mland member variable luc%var_x.
  2. Apply land-use change (either a plant functional type transition, wood harvest or other land management).
  3. Write the value of luc%var_x into luc%var_y
  4. Update the value of mp and write luc%var_y to lucmp%var

WARNING:

  • There are external procedures in this file that should be moved to the CONTAINS clause of this module.
  • Any variables added to CABLE/CASA restart files must be reproduced here in both "landuse_mland" and "landuse_mp".

Uses

  • module~~landuse_variable~~UsesGraph module~landuse_variable landuse_variable module~landuse_constant landuse_constant module~landuse_variable->module~landuse_constant module~cable_def_types_mod cable_def_types_mod module~landuse_constant->module~cable_def_types_mod module~casadimension casadimension module~landuse_constant->module~casadimension module~cable_climate_type_mod cable_climate_type_mod module~cable_def_types_mod->module~cable_climate_type_mod module~casadimension->module~cable_def_types_mod

Used by

  • module~~landuse_variable~~UsedByGraph module~landuse_variable landuse_variable module~cable_serial cable_serial module~cable_serial->module~landuse_variable proc~create_landuse_cable_restart create_landuse_cable_restart proc~create_landuse_cable_restart->module~landuse_variable proc~landuse_checks landuse_checks proc~landuse_checks->module~landuse_variable proc~landuse_driver landuse_driver proc~landuse_driver->module~landuse_variable proc~landuse_land2mpx landuse_land2mpx proc~landuse_land2mpx->module~landuse_variable proc~landuse_mp2land landuse_mp2land proc~landuse_mp2land->module~landuse_variable proc~landuse_transitx landuse_transitx proc~landuse_transitx->module~landuse_variable proc~landuse_update_mland landuse_update_mland proc~landuse_update_mland->module~landuse_variable proc~mpidrv_master~2 mpidrv_master proc~mpidrv_master~2->module~landuse_variable proc~write_landuse_casa_restart_nc WRITE_LANDUSE_CASA_RESTART_NC proc~write_landuse_casa_restart_nc->module~landuse_variable program~cable_offline_driver cable_offline_driver program~cable_offline_driver->module~cable_serial

Derived Types

type, public ::  landuse_mland

Variables indexed along land points and vegetation type

Components

Type Visibility Attributes Name Initial
integer, public, DIMENSION(:,:), ALLOCATABLE :: iveg_x
integer, public, DIMENSION(:,:), ALLOCATABLE :: isoil_x
integer, public, DIMENSION(:,:), ALLOCATABLE :: soilorder_x
integer, public, DIMENSION(:,:), ALLOCATABLE :: phase_x
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: phen_x
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: aphen_x
integer, public, DIMENSION(:,:), ALLOCATABLE :: doyphase3_x
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: frac_sapwood_x
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: sapwood_area_x
integer, public, DIMENSION(:,:), ALLOCATABLE :: isflag_x
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: patchfrac_x
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: lai_x
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: sla_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: albsoilsn_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: albedo_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: albsoil_x
real(kind=r_2), public, dimension(:,:), allocatable :: dgdtg_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: gammzz_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: tgg_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: wb_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: wbice_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: tggsn_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: ssdn_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: smass_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: sdepth_x
real(kind=r_2), public, dimension(:,:), allocatable :: tss_x
real(kind=r_2), public, dimension(:,:), allocatable :: rtsoil_x
real(kind=r_2), public, dimension(:,:), allocatable :: runoff_x
real(kind=r_2), public, dimension(:,:), allocatable :: rnof1_x
real(kind=r_2), public, dimension(:,:), allocatable :: rnof2_x
real(kind=r_2), public, dimension(:,:), allocatable :: ssdnn_x
real(kind=r_2), public, dimension(:,:), allocatable :: snowd_x
real(kind=r_2), public, dimension(:,:), allocatable :: snage_x
real(kind=r_2), public, dimension(:,:), allocatable :: osnowd_x
real(kind=r_2), public, dimension(:,:), allocatable :: cansto_x
real(kind=r_2), public, dimension(:,:), allocatable :: ghflux_x
real(kind=r_2), public, dimension(:,:), allocatable :: sghflux_x
real(kind=r_2), public, dimension(:,:), allocatable :: ga_x
real(kind=r_2), public, dimension(:,:), allocatable :: fev_x
real(kind=r_2), public, dimension(:,:), allocatable :: fes_x
real(kind=r_2), public, dimension(:,:), allocatable :: fhs_x
real(kind=r_2), public, dimension(:,:), allocatable :: wbtot0_x
real(kind=r_2), public, dimension(:,:), allocatable :: osnowd0_x
real(kind=r_2), public, dimension(:,:), allocatable :: trad_x
real(kind=r_2), public, dimension(:,:), allocatable :: GWwb_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: cplantx_x
real(kind=r_2), public, dimension(:,:,:), allocatable :: csoilx_x
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: clabile_x
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: cplant_x
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: clitter_x
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: csoil_x
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: cwoodprod_x
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: nplant_x
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: nlitter_x
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: nsoil_x
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: nsoilmin_x
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: nwoodprod_x
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: pplant_x
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: plitter_x
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: psoil_x
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: psoillab_x
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: psoilsorb_x
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: psoilocc_x
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: pwoodprod_x
integer, public, DIMENSION(:,:), ALLOCATABLE :: iveg_y
integer, public, DIMENSION(:,:), ALLOCATABLE :: isoil_y
integer, public, DIMENSION(:,:), ALLOCATABLE :: soilorder_y
integer, public, DIMENSION(:,:), ALLOCATABLE :: phase_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: phen_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: aphen_y
integer, public, DIMENSION(:,:), ALLOCATABLE :: doyphase3_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: frac_sapwood_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: sapwood_area_y
integer, public, DIMENSION(:,:), ALLOCATABLE :: isflag_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: patchfrac_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: lai_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: sla_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: albsoilsn_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: albedo_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: albsoil_y
real(kind=r_2), public, dimension(:,:), allocatable :: dgdtg_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: gammzz_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: tgg_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: wb_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: wbice_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: tggsn_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: ssdn_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: smass_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: sdepth_y
real(kind=r_2), public, dimension(:,:), allocatable :: tss_y
real(kind=r_2), public, dimension(:,:), allocatable :: rtsoil_y
real(kind=r_2), public, dimension(:,:), allocatable :: runoff_y
real(kind=r_2), public, dimension(:,:), allocatable :: rnof1_y
real(kind=r_2), public, dimension(:,:), allocatable :: rnof2_y
real(kind=r_2), public, dimension(:,:), allocatable :: ssdnn_y
real(kind=r_2), public, dimension(:,:), allocatable :: snowd_y
real(kind=r_2), public, dimension(:,:), allocatable :: snage_y
real(kind=r_2), public, dimension(:,:), allocatable :: osnowd_y
real(kind=r_2), public, dimension(:,:), allocatable :: cansto_y
real(kind=r_2), public, dimension(:,:), allocatable :: ghflux_y
real(kind=r_2), public, dimension(:,:), allocatable :: sghflux_y
real(kind=r_2), public, dimension(:,:), allocatable :: ga_y
real(kind=r_2), public, dimension(:,:), allocatable :: fev_y
real(kind=r_2), public, dimension(:,:), allocatable :: fes_y
real(kind=r_2), public, dimension(:,:), allocatable :: fhs_y
real(kind=r_2), public, dimension(:,:), allocatable :: wbtot0_y
real(kind=r_2), public, dimension(:,:), allocatable :: osnowd0_y
real(kind=r_2), public, dimension(:,:), allocatable :: trad_y
real(kind=r_2), public, dimension(:,:), allocatable :: GWwb_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: cplantx_y
real(kind=r_2), public, dimension(:,:,:), allocatable :: csoilx_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: clabile_y
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: cplant_y
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: clitter_y
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: csoil_y
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: cwoodprod_y
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: nplant_y
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: nlitter_y
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: nsoil_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: nsoilmin_y
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: nwoodprod_y
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: pplant_y
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: plitter_y
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: psoil_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: psoillab_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: psoilsorb_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: psoilocc_y
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: pwoodprod_y
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: pftfrac
real(kind=r_2), public, DIMENSION(:,:), ALLOCATABLE :: fharvw
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: xluh2cable
real(kind=r_2), public, DIMENSION(:,:,:), ALLOCATABLE :: atransit

type, public ::  landuse_mp

Variables indexed along the vegetation patches.

Components

Type Visibility Attributes Name Initial
integer, public, dimension(:), allocatable :: iveg
integer, public, dimension(:), allocatable :: isoil
integer, public, dimension(:), allocatable :: soilorder
integer, public, dimension(:), allocatable :: phase
integer, public, dimension(:), allocatable :: isflag
integer, public, dimension(:), allocatable :: doyphase3
real(kind=r_2), public, dimension(:), allocatable :: lat
real(kind=r_2), public, dimension(:), allocatable :: lon
real(kind=r_2), public, dimension(:), allocatable :: phen
real(kind=r_2), public, dimension(:), allocatable :: aphen
real(kind=r_2), public, dimension(:), allocatable :: frac_sapwood
real(kind=r_2), public, dimension(:), allocatable :: sapwood_area
real(kind=r_2), public, dimension(:), allocatable :: patchfrac
real(kind=r_2), public, dimension(:), allocatable :: areacell
real(kind=r_2), public, dimension(:), allocatable :: lai
real(kind=r_2), public, dimension(:), allocatable :: sla
real(kind=r_2), public, dimension(:,:), allocatable :: albsoilsn
real(kind=r_2), public, dimension(:,:), allocatable :: albedo
real(kind=r_2), public, dimension(:,:), allocatable :: albsoil
real(kind=r_2), public, dimension(:), allocatable :: dgdtg
real(kind=r_2), public, dimension(:,:), allocatable :: gammzz
real(kind=r_2), public, dimension(:,:), allocatable :: tgg
real(kind=r_2), public, dimension(:,:), allocatable :: wb
real(kind=r_2), public, dimension(:,:), allocatable :: wbice
real(kind=r_2), public, dimension(:,:), allocatable :: tggsn
real(kind=r_2), public, dimension(:,:), allocatable :: ssdn
real(kind=r_2), public, dimension(:,:), allocatable :: smass
real(kind=r_2), public, dimension(:,:), allocatable :: sdepth
real(kind=r_2), public, dimension(:), allocatable :: tss
real(kind=r_2), public, dimension(:), allocatable :: rtsoil
real(kind=r_2), public, dimension(:), allocatable :: runoff
real(kind=r_2), public, dimension(:), allocatable :: rnof1
real(kind=r_2), public, dimension(:), allocatable :: rnof2
real(kind=r_2), public, dimension(:), allocatable :: ssdnn
real(kind=r_2), public, dimension(:), allocatable :: snowd
real(kind=r_2), public, dimension(:), allocatable :: snage
real(kind=r_2), public, dimension(:), allocatable :: osnowd
real(kind=r_2), public, dimension(:), allocatable :: cansto
real(kind=r_2), public, dimension(:), allocatable :: ghflux
real(kind=r_2), public, dimension(:), allocatable :: sghflux
real(kind=r_2), public, dimension(:), allocatable :: ga
real(kind=r_2), public, dimension(:), allocatable :: fev
real(kind=r_2), public, dimension(:), allocatable :: fes
real(kind=r_2), public, dimension(:), allocatable :: fhs
real(kind=r_2), public, dimension(:), allocatable :: wbtot0
real(kind=r_2), public, dimension(:), allocatable :: osnowd0
real(kind=r_2), public, dimension(:), allocatable :: trad
real(kind=r_2), public, dimension(:), allocatable :: GWwb
real(kind=r_2), public, dimension(:,:), allocatable :: cplantx
real(kind=r_2), public, dimension(:,:), allocatable :: csoilx
real(kind=r_2), public, dimension(:), allocatable :: sumcbal
real(kind=r_2), public, dimension(:), allocatable :: sumnbal
real(kind=r_2), public, dimension(:), allocatable :: sumpbal
real(kind=r_2), public, dimension(:), allocatable :: clabile
real(kind=r_2), public, dimension(:), allocatable :: nsoilmin
real(kind=r_2), public, dimension(:), allocatable :: psoillab
real(kind=r_2), public, dimension(:), allocatable :: psoilsorb
real(kind=r_2), public, dimension(:), allocatable :: psoilocc
real(kind=r_2), public, dimension(:,:), allocatable :: cplant
real(kind=r_2), public, dimension(:,:), allocatable :: nplant
real(kind=r_2), public, dimension(:,:), allocatable :: pplant
real(kind=r_2), public, dimension(:,:), allocatable :: clitter
real(kind=r_2), public, dimension(:,:), allocatable :: nlitter
real(kind=r_2), public, dimension(:,:), allocatable :: plitter
real(kind=r_2), public, dimension(:,:), allocatable :: csoil
real(kind=r_2), public, dimension(:,:), allocatable :: nsoil
real(kind=r_2), public, dimension(:,:), allocatable :: psoil
real(kind=r_2), public, dimension(:,:), allocatable :: cwoodprod
real(kind=r_2), public, dimension(:,:), allocatable :: nwoodprod
real(kind=r_2), public, dimension(:,:), allocatable :: pwoodprod

Subroutines

public subroutine landuse_allocate_mland(imland, luc)

Allocates the luc%%var(imland,mvmax) variables

Read more…

Arguments

Type IntentOptional Attributes Name
integer :: imland
type(landuse_mland), intent(inout) :: luc

public subroutine landuse_deallocate_mland(luc)

Deallocates the luc%var(mland,mvmax) variables

Read more…

Arguments

Type IntentOptional Attributes Name
type(landuse_mland), intent(inout) :: luc

public subroutine landuse_allocate_mp(mpx, ms, msn, nrb, mplant, mlitter, msoil, mwood, ncp, ncs, lucmp)

Allocates the luc%var(mp) variables.

Read more…

Arguments

Type IntentOptional Attributes Name
integer :: mpx
integer :: ms
integer :: msn
integer :: nrb
integer :: mplant
integer :: mlitter
integer :: msoil
integer :: mwood
integer :: ncp
integer :: ncs
type(landuse_mp), intent(inout) :: lucmp

public subroutine landuse_deallocate_mp(mpx, ms, msn, nrb, mplant, mlitter, msoil, mwood, lucmp)

Deallocates the luc%var(mp) variables

Read more…

Arguments

Type IntentOptional Attributes Name
integer :: mpx
integer :: ms
integer :: msn
integer :: nrb
integer :: mplant
integer :: mlitter
integer :: msoil
integer :: mwood
type(landuse_mp), intent(inout) :: lucmp