source: CONFIG/UNIFORM/v6/LMDZOR_v6/GENERAL/DRIVER/orchidee.driver @ 2338

Last change on this file since 2338 was 2338, checked in by jgipsl, 10 years ago

Set variable to AUTO and correcte to use new funtion for its modifcation.

File size: 8.6 KB
Line 
1#!/bin/ksh
2
3#D- Driver du script pour ORCHIDEE
4
5function ORCHIDEE_sed
6{
7    IGCM_debug_PushStack "ORCHIDEE_sed"
8   
9    sed -e "s/^${1}\ *=.*/${1}= ${2}/" \
10        orchidee.def > orchidee.def.tmp
11    RET=$?
12    echo "ORCHIDEE_sed : ${1} ${2}"
13    \mv orchidee.def.tmp orchidee.def
14   
15    IGCM_debug_PopStack "ORCHIDEE_sed"
16    return $RET
17}
18
19function ORCHIDEE_sed_xml
20{
21# Usage : ORCHIDEE_sed_xml xml_file output_file attribute value
22#         In file xml_file modify at the line containing id="output_file" the attribute "attribute=xxx" into "attribute=value"
23   
24    # Test if the fichier exist
25    if [ ! -f ${1} ] ; then
26        echo "WARNING : ${1} file does not exist. Following will not be done : ORCHIDEE_sed : ${1} ${2} ${3} ${4}"
27        IGCM_debug_PopStack "ORCHIDEE_sed_xml"
28        return
29    fi
30    sed -e "/id=\"${2}\"/s/\(${3}=\"\)[^\"]*\(\"\)/\1${4}\2/" ${1} > ${1}.tmp
31    RET=$?
32    echo "ORCHIDEE_sed : ${1} ${2} ${3} ${4}"
33    \mv ${1}.tmp ${1}
34
35    return $RET
36}
37
38#-----------------------------------------------------------------
39function SRF_Initialize
40{
41    IGCM_debug_PushStack "SRF_Initialize"
42
43    RESOL_SRF=ALL
44
45    for frequency in ${config_SRF_WriteFrequency} ; do
46        case ${frequency} in
47            HF|hf) SRF_ok_hf=y ;;
48        esac
49    done
50
51    ##- Define variable DefSuffix set in orchidee.card
52    ##  This variable is used in orchidee.card to choose
53    ##  parameter file(orchidee.def_DefSuffix).
54    if [ ! X${orchidee_UserChoices_DefSuffix} = X ] ; then
55        DefSuffix=${orchidee_UserChoices_DefSuffix}
56    else
57        DefSuffix=Choi
58    fi
59
60    IGCM_debug_PopStack "SRF_Initialize"
61}
62
63#-----------------------------------------------------------------
64function SRF_Update
65{
66    IGCM_debug_PushStack "SRF_Update"
67
68    # Activate STOMATE if the compontent SBG=stomate is set in config.card
69    if [ X${config_ListOfComponents_SBG} = Xstomate ] ; then
70        IGCM_comp_modifyDefFile blocker orchidee.def STOMATE_OK_STOMATE y
71    else
72        IGCM_comp_modifyDefFile blocker orchidee.def STOMATE_OK_STOMATE n
73    fi
74
75    typeset SECHIBA_WRITE_STEP
76
77    if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
78        ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .FALSE.
79        ORCHIDEE_sed_xml file_def_orchidee.xml sechiba2 enabled .FALSE.
80        IGCM_comp_modifyDefFile nonblocker orchidee.def XIOS_ORCHIDEE_OK y
81    else
82        IGCM_comp_modifyDefFile nonblocker orchidee.def XIOS_ORCHIDEE_OK n
83    fi   
84
85    SRF_WriteFrequency=$( echo ${config_SRF_WriteFrequency} | sed -e 's/\([0-9]*[yYmMdDs]\).*/\1/' ) 
86    case ${SRF_WriteFrequency} in
87        *Y|*y) 
88            WriteInYears=$( echo ${SRF_WriteFrequency} | awk -F '[yY]' '{print $1}' )
89            PeriodLengthInYears=$( echo ${config_UserChoices_PeriodLength} | awk -F '[yY]' '{print $1}' )
90            (( SECHIBA_WRITE_STEP = PeriodLengthInDays * WriteInYears / PeriodLengthInYears * 86400 )) 
91            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
92                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
93                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq ${WriteInYears}y
94                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
95            fi
96            ;;
97        1M)
98            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
99                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
100                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq 1mo
101                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
102            fi
103            case ${config_UserChoices_PeriodLength} in
104            *Y|*y)
105                SECHIBA_WRITE_STEP=-1.
106                ;;
107            *M|*m)
108                SECHIBA_WRITE_STEP=-1.
109                ;;
110            *)
111                (( SECHIBA_WRITE_STEP = $( IGCM_date_DaysInMonth $year $month ) * 86400 ))
112                ;;
113            esac
114            ;;
115        *M|*m) 
116            WriteInMonths=$( echo ${SRF_WriteFrequency} | awk -F '[mM]' '{print $1}' )
117            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
118                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
119                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq ${WriteInMonths}mo
120                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
121            fi
122            case ${config_UserChoices_PeriodLength} in
123            *Y|*y)
124                PeriodLengthInYears=$( echo ${config_UserChoices_PeriodLength} | awk -F '[yY]' '{print $1}' )
125                (( SECHIBA_WRITE_STEP = PeriodLengthInDays * 86400 / PeriodLengthInYears / 12  ))
126                ;;
127            *M|*m)
128                PeriodLengthInMonths=$( echo ${config_UserChoices_PeriodLength} | awk -F '[mM]' '{print $1}' )
129                (( SECHIBA_WRITE_STEP = PeriodLengthInDays * WriteInMonths  * 86400 / PeriodLengthInMonths  ))
130                ;;
131            *)
132                (( SECHIBA_WRITE_STEP = $( IGCM_date_DaysInMonth $year $month ) * 86400 ))
133                if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
134                    ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
135                    ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq ${SECHIBA_WRITE_STEP}s
136                    ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
137                fi
138                ;;
139            esac
140            ;;
141        5D|5d) 
142            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
143                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
144                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq 5d
145                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
146            fi
147            (( SECHIBA_WRITE_STEP = 5 * 86400 )) 
148            ;;
149        1D|1d) 
150            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
151                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
152                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq 1d
153                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
154            fi
155            (( SECHIBA_WRITE_STEP = 86400 )) 
156            ;;
157        *s)
158            WriteInSeconds=$( echo ${SRF_WriteFrequency} | awk -F '[s]' '{print $1}' )
159            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
160                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
161                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq ${WriteInSeconds}s
162                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
163            fi
164            (( SECHIBA_WRITE_STEP = WriteInSeconds )) ;;
165        *) 
166            IGCM_debug_Exit "SRF_Update " ${SRF_WriteFrequency} " invalid WriteFrequency : choose in 1Y, 1M, 5D, 1D." 
167            IGCM_debug_Verif_Exit ;;
168    esac
169
170#Use of XIOS ouputs only
171
172    if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
173        (( SECHIBA_WRITE_STEP = 0 ))
174    fi
175    IGCM_comp_modifyDefFile nonblocker orchidee.def WRITE_STEP ${SECHIBA_WRITE_STEP}
176    IGCM_comp_modifyDefFile nonblocker orchidee.def SECHIBA_HISTLEVEL ${orchidee_UserChoices_sechiba_LEVEL}
177
178    # Outputs HF in HISTFILE2 if required
179    if [ X${SRF_ok_hf} = Xy ] ; then
180        IGCM_comp_modifyDefFile nonblocker orchidee.def SECHIBA_HISTFILE2 y
181        if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
182            ORCHIDEE_sed_xml file_def_orchidee.xml sechiba2 enabled .TRUE.
183            ORCHIDEE_sed_xml file_def_orchidee.xml sechiba2 output_freq 10800s
184            ORCHIDEE_sed_xml file_def_orchidee.xml sechiba2 name sechiba_out_2
185        fi
186    else
187        IGCM_comp_modifyDefFile nonblocker orchidee.def SECHIBA_HISTFILE2 n
188    fi
189    IGCM_comp_modifyDefFile nonblocker orchidee.def SECHIBA_HISTLEVEL2 1
190    IGCM_comp_modifyDefFile nonblocker orchidee.def WRITE_STEP2 10800.0
191
192    if ( [ ${CumulPeriod} -ne 1 ] || [ "${config_SRF_Restart}" != "n" ] ) ; then
193        IGCM_comp_modifyDefFile blocker orchidee.def SECHIBA_restart_in sechiba_rest_in.nc
194    else
195        IGCM_comp_modifyDefFile blocker orchidee.def SECHIBA_restart_in NONE
196    fi
197
198# Modify in orchidee.def VEGET_UPDATE and LAND_COVER_CHANGE if they are set in orchidee.card section UserChoices
199    if [ ! X${orchidee_UserChoices_VEGET_UPDATE} = X ] ; then
200        IGCM_comp_modifyDefFile blocker orchidee.def VEGET_UPDATE   ${orchidee_UserChoices_VEGET_UPDATE}
201    else
202        IGCM_comp_modifyDefFile blocker orchidee.def VEGET_UPDATE 0Y
203    fi
204    if [ ! X${orchidee_UserChoices_LAND_COVER_CHANGE} = X ] ; then
205        IGCM_comp_modifyDefFile blocker orchidee.def LAND_COVER_CHANGE ${orchidee_UserChoices_LAND_COVER_CHANGE}
206    else
207        IGCM_comp_modifyDefFile blocker orchidee.def LAND_COVER_CHANGE n
208    fi
209
210    #IGCM_sys_Cp ${RUN_DIR}/orchidee.def ${RUN_DIR}/run.def
211    #IGCM_sys_Put_Out ${RUN_DIR}/run.def ${R_SAVE}/${PREFIX}_run.def
212
213
214    if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
215    # Add include of orchidee context in iodef.xml
216    # In iodef.xml add on next line after "COMPONENT CONTEXT"
217    #  <context id="orchidee" src="./context_orchidee.xml"/>
218        echo '<context id="orchidee" src="./context_orchidee.xml"/>' > add.tmp
219        cp iodef.xml iodef.xml.tmp
220        sed -e "/COMPONENT CONTEXT/r add.tmp" \
221            iodef.xml.tmp > iodef.xml
222        rm iodef.xml.tmp add.tmp
223    fi
224
225    IGCM_debug_PopStack "SRF_Update"
226}
227
228#-----------------------------------------------------------------
229function SRF_Finalize
230{
231    IGCM_debug_PushStack "SRF_Finalize"
232
233    #IGCM_sys_Put_Out ${RUN_DIR}/used_run.def ${R_SAVE}/${PREFIX}_used_run.def
234
235    echo FINALIZE SRF !!!
236
237    IGCM_debug_PopStack "SRF_Finalize"
238}
Note: See TracBrowser for help on using the repository browser.