source: CONFIG/UNIFORM/v6/IPSLCM6.5.1/GENERAL/DRIVER/orchidee.driver @ 6263

Last change on this file since 6263 was 6263, checked in by jgipsl, 21 months ago

If stomate is not activate, change AUTO for new file in stomate from orchidee.driver. Related to [6262].

File size: 9.7 KB
Line 
1#!/bin/ksh
2## Driver for the component SRF corresponding to the sechiba part of ORCHIDEE
3#-----------------------------------------------------------------
4function SRF_Initialize
5{
6    IGCM_debug_PushStack "SRF_Initialize"
7
8    ##- Define variable DefSuffix set in orchidee.card
9    ##  This variable is used in orchidee.card to choose
10    ##  parameter file(orchidee.def_DefSuffix).
11    if [ ! X${orchidee_UserChoices_DefSuffix} = X ] ; then
12        DefSuffix=${orchidee_UserChoices_DefSuffix}
13    else
14        DefSuffix=CWRR
15    fi
16
17    IGCM_debug_PopStack "SRF_Initialize"
18}
19
20#-----------------------------------------------------------------
21function SRF_Update
22{
23    IGCM_debug_PushStack "SRF_Update"
24
25    ## 1. Modifications in orchidee.def parameter file
26
27    # Activate STOMATE if the compontent SBG=stomate is set in config.card
28    if [ X${config_ListOfComponents_SBG} = Xstomate ] ; then
29        # Activate stomate in orchidee.def
30        IGCM_comp_modifyDefFile blocker orchidee.def STOMATE_OK_STOMATE y
31    else
32        # Deactivate stomate in orchidee.def
33        IGCM_comp_modifyDefFile blocker orchidee.def STOMATE_OK_STOMATE n
34        # Deactivate output files for stomate
35        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate1 enabled .FALSE.
36        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate1 output_level 0
37        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate1 output_freq 1mo
38        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate2 enabled .FALSE.
39        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate2 output_level 0
40        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate2 output_freq 1mo
41        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate3 enabled .FALSE.
42        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate3 output_level 0
43        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate3 output_freq 1mo
44        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate4 enabled .FALSE.
45        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate4 output_level 0
46        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate4 output_freq 1mo
47    fi
48
49    # Define in orchidee.def if restart file should be used
50    if ( [ ${CumulPeriod} -ne 1 ] || [ "${config_SRF_Restart}" != "n" ] ) ; then
51        IGCM_comp_modifyDefFile blocker orchidee.def SECHIBA_restart_in sechiba_rest_in.nc
52    else
53        IGCM_comp_modifyDefFile blocker orchidee.def SECHIBA_restart_in NONE
54    fi
55
56    # Set VEGET_UPDATE=1Y in orchidee.def if VEGET_UPDATE_at_start=y in orchidee.card and if it is the first cumul periond (start of new simulation)
57    if [ X${orchidee_UserChoices_VEGET_UPDATE_at_start} = Xy ] && [ ${CumulPeriod} -eq 1 ] ; then
58        IGCM_comp_modifyDefFile nonblocker orchidee.def VEGET_UPDATE   1Y
59    fi
60
61    # Modify in orchidee.def VEGET_UPDATE if it is set in orchidee.card section UserChoices
62    # Note: if the variable has been set by VEGET_UPDATE_at_start, this section will not overwrite it.
63    if [ ! X${orchidee_UserChoices_VEGET_UPDATE} = X ] ; then
64        IGCM_comp_modifyDefFile nonblocker orchidee.def VEGET_UPDATE   ${orchidee_UserChoices_VEGET_UPDATE}
65    else
66        IGCM_comp_modifyDefFile nonblocker orchidee.def VEGET_UPDATE 0Y
67    fi
68
69    # Set LAI_MAP in orchidee.def acording to value set in orchidee.card section UserChoices
70    # If LAI_MAP is not definded in orchidee.card, set default value n
71    # Note: this option is only read by ORCHIDEE if starting without restart files
72    if [ ! X${orchidee_UserChoices_LAI_MAP} = X ] ; then
73        IGCM_comp_modifyDefFile nonblocker orchidee.def LAI_MAP   ${orchidee_UserChoices_LAI_MAP}
74    else
75        IGCM_comp_modifyDefFile nonblocker orchidee.def LAI_MAP   DEFAULT
76    fi
77
78    # Set DO_WOOD_HARVEST in orchidee.def acording to value set in orchidee.card section UserChoices
79    # If DO_WOOD_HARVEST is not definded in orchidee.card, set default value y
80    if [ ! X${orchidee_UserChoices_DO_WOOD_HARVEST} = X ] ; then
81        IGCM_comp_modifyDefFile nonblocker orchidee.def DO_WOOD_HARVEST   ${orchidee_UserChoices_DO_WOOD_HARVEST}
82    else
83        IGCM_comp_modifyDefFile nonblocker orchidee.def DO_WOOD_HARVEST   DEFAULT
84    fi
85
86    # Activate creation of river description file only for the first period
87    if [ ${CumulPeriod} -eq 1 ] ; then
88        IGCM_comp_modifyDefFile nonblocker orchidee.def RIVER_DESC y
89    else
90        IGCM_comp_modifyDefFile nonblocker orchidee.def RIVER_DESC n
91    fi
92
93    # Activate calcul of chemistry BVOC
94    if [ ! X${orchidee_UserChoices_CHEMISTRY_BVOC} = X ] ; then
95        IGCM_comp_modifyDefFile nonblocker orchidee.def CHEMISTRY_BVOC ${orchidee_UserChoices_CHEMISTRY_BVOC}
96    else
97        IGCM_comp_modifyDefFile nonblocker orchidee.def CHEMISTRY_BVOC n
98    fi
99
100    ## 2. Mangement of output and modifications of related xml files
101    # Modify file_def_orchidee.xml file using settings from orchidee.card
102    # We here suppose that for each file, in orchidee.card UserChoices section, if the parameter
103    # output_level_filename is set, then also output_freq_filename must be set. The existance of output_freq_filename will not be checked.
104    # If output_level_filename=NONE or if it is not set, the corresponding file will be deactivated.
105    # Settings in config.card WriteFrequency are not used any more.
106   
107    if [ X${orchidee_UserChoices_output_level_sechiba_history} = X ] || [ X${orchidee_UserChoices_output_level_sechiba_history} = XNONE ] ; then
108        # output_level_sechiba_history is not set in orchidee.card or it is set to NONE.
109        # Deactivate the file.
110        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba1 enabled .FALSE.
111        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba1 output_level 0
112        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba1 output_freq 1mo
113    else
114        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba1 enabled      .TRUE.
115        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba1 output_level ${orchidee_UserChoices_output_level_sechiba_history}
116        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba1 output_freq  ${orchidee_UserChoices_output_freq_sechiba_history}
117    fi
118   
119    if [ X${orchidee_UserChoices_output_level_sechiba_out_2} = X ] || [ X${orchidee_UserChoices_output_level_sechiba_out_2} = XNONE ] ; then
120        # output_level_sechiba_out_2 is not set in orchidee.card or it is set to NONE.
121        # Deactivate the file.
122        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba2 enabled .FALSE.
123        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba2 output_level 0
124        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba2 output_freq 1mo
125    else
126        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba2 enabled      .TRUE.
127        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba2 output_level ${orchidee_UserChoices_output_level_sechiba_out_2}
128        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba2 output_freq  ${orchidee_UserChoices_output_freq_sechiba_out_2}
129    fi
130   
131    if [ X${orchidee_UserChoices_output_level_sechiba_history_4dim} = X ] || [ X${orchidee_UserChoices_output_level_sechiba_history_4dim} = XNONE ] ; then
132        # output_level_sechiba_history_4dim is not set in orchidee.card or it is set to NONE.
133        # Deactivate the file.
134        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba3 enabled .FALSE.
135        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba3 output_level 0
136        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba3 output_freq 1mo
137    else
138        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba3 enabled      .TRUE.
139        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba3 output_level ${orchidee_UserChoices_output_level_sechiba_history_4dim}
140        IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml sechiba3 output_freq  ${orchidee_UserChoices_output_freq_sechiba_history_4dim}
141    fi
142       
143
144    # Add include of orchidee context in iodef.xml
145    # In iodef.xml add on the next line after "COMPONENT CONTEXT"
146    echo '<context id="orchidee" src="./context_orchidee.xml"/>' > add.tmp
147    # Add inclusion of file context_input_orchidee.xml if this file exists
148    if [ -f context_input_orchidee.xml ] ; then
149        echo '<context id="orchidee" src="./context_input_orchidee.xml"/>' >> add.tmp
150    fi
151    # Include xml files for output configuration if running with workflow CMIP6
152    if [ X"$( echo ${config_UserChoices_ExpType} | grep CMIP6 )" != "X" ] ; then
153        echo '<context id="orchidee" src="./ping_orchidee.xml"/>' >> add.tmp
154        echo '<context id="orchidee" src="./dr2xml_orchidee.xml"/>' >> add.tmp
155    fi
156    cp iodef.xml iodef.xml.tmp
157    sed -e "/COMPONENT CONTEXT/r add.tmp" iodef.xml.tmp > iodef.xml
158    rm iodef.xml.tmp add.tmp
159
160    # Add LongName as global attribute in XIOS output files (if LongName is not empty)
161    if [ ! "X${config_UserChoices_LongName}" = "X" ] ; then
162        listfile=$(ls file_def*orchidee.xml)
163        echo "<variable id=\"LongName\" type=\"string\">${config_UserChoices_LongName}</variable>" > add.tmp
164        for file in ${listfile}
165        do
166            cp ${file} ${file}.tmp
167            sed -e "/<file id/r add.tmp" \
168                ${file}.tmp > ${file}
169            rm ${file}.tmp
170        done
171        rm add.tmp
172    fi
173
174    # Compression level (if CompressionLevel is not empty)
175    if [ ! "X${config_UserChoices_CompressionLevel}" = "X" ] ; then
176        echo "NetCDF output files compression level is " ${config_UserChoices_CompressionLevel}
177        listfile=$(ls file_def*orchidee.xml)
178        for file in ${listfile} ; do
179            sed -i -e "s/\(compression_level=\"\)[^\"]*\(\"\)/\1${config_UserChoices_CompressionLevel}\2/" ${file}
180        done
181    fi
182
183
184
185    IGCM_debug_PopStack "SRF_Update"
186}
187
188#-----------------------------------------------------------------
189function SRF_Finalize
190{
191    IGCM_debug_PushStack "SRF_Finalize"
192
193    IGCM_debug_PopStack "SRF_Finalize"
194}
Note: See TracBrowser for help on using the repository browser.