Externalisation of parameters

Page on Work of Didier Solyga on externalisation of parameters in ORCHIDEE.

This page will only summarize and give an overview of my work. You will find others links related to my work at the end of this page.

Why a new version of ORCHIDEE ?

In ORCHIDEE, the vegetation is currently represented by 13 Plants Functional Types or PFTs. As these PFTs follow the same processes, they share the same set of parameters. (PS: that explained why the parameters in ORCHIDEE are under the shape of an array of 13 values.)

The values of the parameters are different according to the PFTs. Moreover, many of these values are empirical and may differ according the papers. What happens if you want to change a value of a parameters and want to see the changing involved by the modification? You have to find the parameter in the code, then change the value and to finish, you have to recompile ORCHIDEE.

Moreover, 13 is a too restricted number for representing the PFTs. At the global scale, it is sufficient but at the regional scale, you are unable to represent the variability of the vegetation.

The "externalisation" of the parameters of ORCHIDEE will allow us to solve these two problems.

Technical characteristics

The externalized version of ORCHIDEE is build on the AR5 version of ORCHIDEE (tag 1.9.5, CVS version 1.11.22).

With this version, the user has the possibility to choose a number of PFTs between 2 and X (X is any number, but a max value could be 94, corresponding to the Olson classification) and to change the values of less or more 300 new parameters in the run.def file (plus the already externalized ones in the AR5).

The concept of Metaclass

How did we solve the problems outlined in the section "What a new version of ORCHIDEE?" ?
We use an formal concept called Metaclass(MTC in the following) based on an idea of N.Viovy.
Before to detail the concept, let's take a problem we can solve with the MTCs .

A small problem

Let's suppose you want to represent two types of tree. These trees are the same PFT (PFT 6 for example).

These two species differ from the parameter VCMAX_OPT (15 and 25 for example). We will that this kind of problem can be easily solved by the MTCs.

What is a Metaclass?

It consists of an overlayer of the current PFTs. Here is the list of the MTCs implemented in the ORCHIDEE "externalized" version :

  1. bare ground
  1. tropical broad-leaved evergreen

  1. tropical broad-leaved raingreen
  1. temperate needleleaf evergreen
  1. temperate broad-leaved evergreen
  1. temperate broad-leaved summergreen
  1. boreal needleleaf evergreen
  1. boreal broad-leaved summergreen
  1. boreal needleleaf summergreen
  1. C3 grass
  1. C4 grass
  1. C3 agriculture
  1. C4 agriculture

Actually, the MTCs match exactly to the usual PFTs. We only decided to put a new name for them.
Now the number of PFTs is still represented by the parameter 'nvm' (chosen by the user) and the number of MTCs is parametrized by 'nvmc' with a fixed value nvmc = 13. We want to distinguish the floating number of PFTs from the fixed PFTs alias the MTCs.

How does it work?

Basically, it will initialize all the pft-parameters by default values by linking a PFT to a MTC.
When you associate a PFT to a MTC, the parameters from this PFT will be initialized automatically by pre-defined values. After that, you can impose any value you want for the parameters.

Why using the MTC?

We tried to make ORCHIDEE more user-friendly with this version. In the current version of the externalized version, there is approximatively 86 pfts-parameters of size 'nvm'. If the MTC didn't exist, the user has to fill the run.def file with 86*nvm values! Moreover, with this option, we still respect the structure of the code.

Going back to our small problem

Now, we can solve our problem with the externalized version. The first step is to declare nvm, the number of PFTs you will consider for your job.

NVM = 14

Here we consider 14 PFTs for solving our problem.
The second step is to fill an array called PFT_TO_MTC. PFT_TO_MTC is the correspondance table between PFT and MTC.

PFT_TO_MTC__01 = 1
PFT_TO_MTC__02 = 2
PFT_TO_MTC__03 = 3
PFT_TO_MTC__04 = 4
PFT_TO_MTC__05 = 5
PFT_TO_MTC__06 = 6
PFT_TO_MTC__07 = 7
PFT_TO_MTC__08 = 8
PFT_TO_MTC__09 = 9
PFT_TO_MTC__10 = 10
PFT_TO_MTC__11 = 11
PFT_TO_MTC__12 = 12
PFT_TO_MTC__13 = 13
PFT_TO_MTC__14 = 6

Our first specie of tree is the PFT 6 and the second one, the PFT 14.

They both belong to the MTC 6. The standard value for VCMAX for the MTC 6 is 15.

Concerning the values of VCMAX_OPT for the PFTs 6 and 14, we simply have :

VCMAX_OPT__06 = 15
VCMAX_OPT__14 = 15

But you would like to set 25 for the 14th PFT. For that, write in run.def :

VCMAX_OPT__14 = 25

To finish, launch your job. It's done.
This example is only an overview of the possibilities of this version. You will more explanations in the following user's guide :


For downloading and installing the externalized version, please have a look at this page :


To have a look at the technical modifications done, see this page :


Others pages

To see how we validate the externalized version, please have a look at :



JULY 2011

The script for generate a map is available to download ! It could be found in the folder TOOLS/GENERATE_VEGET_MAPS of the trunk.

For downloading the whole TOOLS folder, set in a shell :

prompt > svn co svn://

If you want only to download the script for the veget map, set :

prompt > svn co svn://

The script is written in python and will use the new cdat library. Please read the text file README carefully before using it.

If you got problems, send a email.

APRIL 2012

The externalized version has been merged in the trunk for nearly 6 months. The branch ORCHIDEE_EXT should not be used anymore (obsolete). During that time, technical tests have been done.

Compilers tests - the trunk (rev 837) has been successfully compiled by the following ones :

gfortran personal laptop (ubuntu)
sxmpif90 mercure (vectorial machine)
ifort obelix (lsce), titane (with check-bounds option)
Lahai Fujitsu lf95 compiler (strict one) obelix(lsce)
mpif90 (parallel) titane

Parallel performances with Vampirtrace : Some tests were done in order to diagnostic the parallelization problems of the code (tag BilanDepartMartial).
Similar tests were done for the trunk (rev 837) but with monthly outputs( 1Y, restart files). The code has problems in off-line mode in the Antarctic Ocean.
1) ORCHIDEE, global scale, 1Y, monthly outputs, restart file presents :

2) ORCHIDEE, global scale, 1Y, no outputs, restart file presents :

3) ORCHIDEE, Reduce grid(LIMIT_NORTH = 80., LIMIT_SOUTH = -60, 1Y, all outputs, restart file presents :

Last modified 6 years ago Last modified on 07/06/12 14:12:19

Attachments (9)

Download all attachments as: .zip