wiki:Documentation/UserGuide/ImposeVegetation

How to prescribe the land cover

Author: S.Luyssaert
Last revision: 2020/02/28, V. Bastrikov

Objective: There are several ways to prescribe the vegetation land cover in ORCHIDEE. For a site simulation quite often it is needed to manually impose the preferred vegetation for a single pixel. This has the advantage that simulation go faster, output files are smaller, data-model comparison is more straightforward and it is easier to understand the effect of specific settings and parameters. For a regional or global simulation it is more appropriate to use currently available vegetation maps. The vegetation then can be read from a land cover map either once at the beginning of a simulation, or changed each year to take into account the land cover change, and possibly the land cover use. This page describes different settings in use for prescribing the land cover with libIGCM.

Impose land cover for a pixel

To manually impose the vegetation you need to make changes to COMP/sechiba.card and PARAM/run.def.

First, in COMP/sechiba.card set that you don't want to update the land cover map (because you're not using one):

# VEGET_UPDATE=0Y : no change in vegetation map. PFTmap.nc should be set only in InitialStateFiles/List.
# VEGET_UPDATE=1Y : change vegetation map every year. PFTmap.nc should be set only in BoundaryFiles/List.
# Note that the model changed behaviour:
# - since rev 2717 in the trunk, the map is read in January. In BoundaryFiles/List, copy the map for current year, use the variable ${year}.
# - for older version, the map is read in December. In BoundaryFiles/List, copy the map for next coming year using the variable ${year_p1}.
VEGET_UPDATE=0Y

The land cover map should not be specified in either "initial state files" or "boundary files" blocks:

[InitialStateFiles]
List=       (${R_IN}/SRF/ROUTING/routing.nc, .),     \
            (${R_IN}/SRF/SOIL/soils_param4.nc, soils_param.nc), \
            (${R_IN}/SRF/SOIL/soil_bulk_and_ph.nc, .), \
            (${R_IN}/SRF/cartepente2d_15min4.nc, cartepente2d_15min.nc), \
            (${R_IN}/SRF/ROUTING/floodplains4.nc, floodplains.nc), \
            (${R_IN}/SRF/reftemp4.nc, reftemp.nc), \
            (${R_IN}/SRF/albedo/alb_bg_modisopt_2D_ESA_v3.nc, alb_bg.nc)

[BoundaryFiles]
List=   ()
ListNonDel= ()

Second, in PARAM/run.def state that you want to impose the vegetation:

# Prescribed vegetation (default n)
IMPOSE_VEG = y

And specify the vegetation distribution between PFTs using the keywords SECHIBA_VEGMAX:

SECHIBA_VEGMAX__01 = x1
...
SECHIBA_VEGMAX__nvm = xnvm

Note that:

  • the number of keywords (from 01 to nvm) should match the number of PFTs used in the ORCHIDEE simulation
  • the sum of x1 to xnvm should equal 1

Read land cover from a map

To read the vegetation cover from a map, state that you no longer want to impose the vegetation in PARAM/run.def:

# Prescribed vegetation (default n)
IMPOSE_VEG = n

Using same vegetation for whole simulation: VEGET_UPDAET=0Y

Set that you want to use a single map for the whole simulation (VEGET_UPDATE=0Y) in COMP/sechiba.card:

# VEGET_UPDATE=0Y : no change in vegetation map. PFTmap.nc should be set only in InitialStateFiles/List.
# VEGET_UPDATE=1Y : change vegetation map every year. PFTmap.nc should be set only in BoundaryFiles/List.
# Note that the model changed behaviour:
# - since rev 2717 in the trunk, the map is read in January. In BoundaryFiles/List, copy the map for current year, use the variable ${year}.
# - for older version, the map is read in December. In BoundaryFiles/List, copy the map for next coming year using the variable ${year_p1}.
VEGET_UPDATE=0Y

And add the path to the land cover map in the initial state files list:

[InitialStateFiles]
List=       (${R_IN}/SRF/ROUTING/routing.nc, .),     \
            (${R_IN}/SRF/SOIL/soils_param4.nc, soils_param.nc), \
            (${R_IN}/SRF/SOIL/soil_bulk_and_ph.nc, .), \
            (${R_IN}/SRF/cartepente2d_15min4.nc, cartepente2d_15min.nc), \
            (${R_IN}/SRF/ROUTING/floodplains4.nc, floodplains.nc), \
            (${R_IN}/SRF/reftemp4.nc, reftemp.nc), \
            (${R_IN}/SRF/albedo/alb_bg_modisopt_2D_ESA_v3.nc, alb_bg.nc), \
            (${R_IN}/SRF/PFTMAPS/CMIP6/ESA-LUH2v2/historical/15PFT.v2/PFTmap_1860.nc, PFTmap.nc)

[BoundaryFiles]
List=   ()
ListNonDel= ()

Note that:

  • if you start from existing restart files, the vegetation will not be updated, the settings from restart file will be kept
  • run.def has priority over the parameters set in sechiba.card, therefore make sure the run.def does NOT contain IMPOSE_VEG = y

Activate land cover change: VEGET_UPDATE=1Y

To read different land cover maps at the beginning of each simulation year, set VEGET_UPDATE=1Y in COMP/sechiba.card:

# VEGET_UPDATE=0Y : no change in vegetation map. PFTmap.nc should be set only in InitialStateFiles/List.
# VEGET_UPDATE=1Y : change vegetation map every year. PFTmap.nc should be set only in BoundaryFiles/List.
# Note that the model changed behaviour:
# - since rev 2717 in the trunk, the map is read in January. In BoundaryFiles/List, copy the map for current year, use the variable ${year}.
# - for older version, the map is read in December. In BoundaryFiles/List, copy the map for next coming year using the variable ${year_p1}.
VEGET_UPDATE=1Y

Move the path to the land cover map to the boundary files list, putting also the special field "${year}" in the path to be replaced with the actual year number during each simulation year. Depending on your needs, additional land use maps can be provided (like the wood harvest map in the example below):

[InitialStateFiles]
List=       (${R_IN}/SRF/ROUTING/routing.nc, .),     \
            (${R_IN}/SRF/SOIL/soils_param4.nc, soils_param.nc), \
            (${R_IN}/SRF/SOIL/soil_bulk_and_ph.nc, .), \
            (${R_IN}/SRF/cartepente2d_15min4.nc, cartepente2d_15min.nc), \
            (${R_IN}/SRF/ROUTING/floodplains4.nc, floodplains.nc), \
            (${R_IN}/SRF/reftemp4.nc, reftemp.nc), \
            (${R_IN}/SRF/albedo/alb_bg_modisopt_2D_ESA_v3.nc, alb_bg.nc)

[BoundaryFiles]
List=   (${R_IN}/SRF/PFTMAPS/CMIP6/ESA-LUH2v2/historical/15PFT.v2/PFTmap_${year}.nc, PFTmap.nc), \
        (${R_IN}/SRF/WOODHARVEST/LUH2v2/historical4/woodharvest_${year}.nc, woodharvest.nc)
ListNonDel= ()

Note that:

  • VEGET_UPDATE can only be 0Y or 1Y
Last modified 4 years ago Last modified on 2020-03-03T12:36:44+01:00