wiki:GroupActivities/Meetings/Retreat20151119/GuidelinesXIOS

Version 3 (modified by jgipsl, 9 years ago) (diff)

--

XIOS Guidelines

Guideline 1 (to be discussed)

Example1:

CALL xios_orchidee_send_field("Qg",soilflx)

Qg: field id
soilflx: the local variable in the FORTRAN code

and in field_def:

<field id="Qg" name="Qg" long_name="Ground heat flux" unit="W/m^2"/>

Name in output: Qg (because name="Qg")

The name of the "field id" should be the same as the name of the variable. Here is example1 modified according to this method:
Example 2:

CALL xios_orchidee_send_field ("soilflx" soilflx)

soilflx: field id
soilflx: the local variable in the FORTRAN code

and in field_def:

<field id="soilflx" name="Qg" LONG_NAME="Ground heat flux" unit="W/m^2"/>

Name in output: Qg

The results are the same. We see the advantage when, for another project for example, the variable is to be called differently in the outputs. For the first example, if we want to change the name of the variable in the output, this gives (without recompiling):
Example3:

CALL xios_orchidee_send_field ("Qg" soilflx)

and in field_def:

<field id="Qg" name="GroundHeatF" LONG_NAME="Ground heat flux" unit="W/m^2"/>

Name in output: GroundHeatF

=> soilflx becomes Qg, which becomes GroundHeatF.

Example 3 is quite feasible and there are probably cases like that in ORCHIDEE. But the following example makes more sense: Example4:

CALL xios_orchidee_send_field ("soilflx" soilflx)

and in fiels_def:

<field id="soilflx" name="GroundHeatF" LONG_NAME="Ground heat flux" unit="W/m^2"/>

=> In this case, soilflx becomes GroundHeatF directly.

Guideline 2

We do the "CALL xios_orchidee_send_field" in the module where the variable is calculated. If the variable is changed in several places, we do the call in the last XIOS module where it is changed or in sechiba_main, this has to be decided case by case.

Guideline 3

If the variable is only calculated for a specific run case, then we deactivate the output from xios_orchidee.f90 with xios_set_field_attr as for the case not calculated. This leaves us the possibility of having the same file_def_orchidee.xml for different setups. If we forgot, it will work but we will have declared variables in the .nc files without values, which is is troubling. As an exception, the stomate variables are not deactivated in this way, that would be too many exception cases. But since we traditionally separated variables between sechiba_history.nc and stomate_history.nc, we have no problem because we deactivate the whole stomate_history.nc file if stomate is not active.

For example, for the routing variables, we deactivate them if we have no routing. In this case, even if they are in file_def_orchidee.xml, they will not be written. In xios_orchidee:

IF (.NOT. River_routing) THEN
   CALL xios_set_field_attr ("basinmap" enabled = .FALSE.)
...