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

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

Added modifications done in IPSLCM6.

File size: 7.8 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 "LMDZ_sed"
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    typeset SECHIBA_WRITE_STEP
69
70    if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
71        ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .FALSE.
72        ORCHIDEE_sed_xml file_def_orchidee.xml sechiba2 enabled .FALSE.
73        ORCHIDEE_sed XIOS_ORCHIDEE_OK y
74    fi   
75
76    SRF_WriteFrequency=$( echo ${config_SRF_WriteFrequency} | sed -e 's/\([0-9]*[yYmMdDs]\).*/\1/' ) 
77    case ${SRF_WriteFrequency} in
78        *Y|*y) 
79            WriteInYears=$( echo ${SRF_WriteFrequency} | awk -F '[yY]' '{print $1}' )
80            PeriodLengthInYears=$( echo ${config_UserChoices_PeriodLength} | awk -F '[yY]' '{print $1}' )
81            (( SECHIBA_WRITE_STEP = PeriodLengthInDays * WriteInYears / PeriodLengthInYears * 86400 )) 
82            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
83                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
84                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq ${WriteInYears}y
85                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
86            fi
87            ;;
88        1M)
89            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
90                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
91                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq 1mo
92                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
93            fi
94            case ${config_UserChoices_PeriodLength} in
95            *Y|*y)
96                SECHIBA_WRITE_STEP=-1.
97                ;;
98            *M|*m)
99                SECHIBA_WRITE_STEP=-1.
100                ;;
101            *)
102                (( SECHIBA_WRITE_STEP = $( IGCM_date_DaysInMonth $year $month ) * 86400 ))
103                ;;
104            esac
105            ;;
106        *M|*m) 
107            WriteInMonths=$( echo ${SRF_WriteFrequency} | awk -F '[mM]' '{print $1}' )
108            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
109                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
110                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq ${WriteInMonths}mo
111                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
112            fi
113            case ${config_UserChoices_PeriodLength} in
114            *Y|*y)
115                PeriodLengthInYears=$( echo ${config_UserChoices_PeriodLength} | awk -F '[yY]' '{print $1}' )
116                (( SECHIBA_WRITE_STEP = PeriodLengthInDays * 86400 / PeriodLengthInYears / 12  ))
117                ;;
118            *M|*m)
119                PeriodLengthInMonths=$( echo ${config_UserChoices_PeriodLength} | awk -F '[mM]' '{print $1}' )
120                (( SECHIBA_WRITE_STEP = PeriodLengthInDays * WriteInMonths  * 86400 / PeriodLengthInMonths  ))
121                ;;
122            *)
123                (( SECHIBA_WRITE_STEP = $( IGCM_date_DaysInMonth $year $month ) * 86400 ))
124                if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
125                    ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
126                    ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq ${SECHIBA_WRITE_STEP}s
127                    ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
128                fi
129                ;;
130            esac
131            ;;
132        5D|5d) 
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 5d
136                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
137            fi
138            (( SECHIBA_WRITE_STEP = 5 * 86400 )) 
139            ;;
140        1D|1d) 
141            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
142                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
143                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq 1d
144                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
145            fi
146            (( SECHIBA_WRITE_STEP = 86400 )) 
147            ;;
148        *s)
149            WriteInSeconds=$( echo ${SRF_WriteFrequency} | awk -F '[s]' '{print $1}' )
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 ${WriteInSeconds}s
153                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
154            fi
155            (( SECHIBA_WRITE_STEP = WriteInSeconds )) ;;
156        *) 
157            IGCM_debug_Exit "SRF_Update " ${SRF_WriteFrequency} " invalid WriteFrequency : choose in 1Y, 1M, 5D, 1D." 
158            IGCM_debug_Verif_Exit ;;
159    esac
160
161#Use of XIOS ouputs only
162
163    if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
164        (( SECHIBA_WRITE_STEP = 0 ))
165    fi
166
167    ORCHIDEE_sed WRITE_STEP ${SECHIBA_WRITE_STEP}
168    ORCHIDEE_sed SECHIBA_HISTLEVEL ${orchidee_UserChoices_sechiba_LEVEL}
169
170    # Outputs HF in HISTFILE2 if required
171    if [ X${SRF_ok_hf} = Xy ] ; then
172        ORCHIDEE_sed SECHIBA_HISTFILE2 y
173        if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
174            ORCHIDEE_sed_xml file_def_orchidee.xml sechiba2 enabled .TRUE.
175            ORCHIDEE_sed_xml file_def_orchidee.xml sechiba2 output_freq 10800s
176            ORCHIDEE_sed_xml file_def_orchidee.xml sechiba2 name sechiba_out_2
177        fi
178    else
179        ORCHIDEE_sed SECHIBA_HISTFILE2 n
180    fi
181    ORCHIDEE_sed SECHIBA_HISTLEVEL2 1
182    ORCHIDEE_sed WRITE_STEP2 10800.0
183
184    if ( [ ${CumulPeriod} -ne 1 ] || [ "${config_SRF_Restart}" != "n" ] ) ; then
185        ORCHIDEE_sed SECHIBA_restart_in sechiba_rest_in.nc
186    else
187        ORCHIDEE_sed SECHIBA_restart_in NONE
188    fi
189
190# Modify in orchidee.def VEGET_UPDATE and LAND_COVER_CHANGE if they are set in orchidee.card section UserChoices
191    if [ ! X${orchidee_UserChoices_VEGET_UPDATE} = X ] ; then
192        ORCHIDEE_sed VEGET_UPDATE   ${orchidee_UserChoices_VEGET_UPDATE}
193    else
194        ORCHIDEE_sed VEGET_UPDATE 0Y
195    fi
196    if [ ! X${orchidee_UserChoices_LAND_COVER_CHANGE} = X ] ; then
197        ORCHIDEE_sed LAND_COVER_CHANGE ${orchidee_UserChoices_LAND_COVER_CHANGE}
198    else
199        ORCHIDEE_sed LAND_COVER_CHANGE n
200    fi
201
202    #IGCM_sys_Cp ${RUN_DIR}/orchidee.def ${RUN_DIR}/run.def
203    #IGCM_sys_Put_Out ${RUN_DIR}/run.def ${R_SAVE}/${PREFIX}_run.def
204
205
206    if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
207    # Add include of orchidee context in iodef.xml
208    # In iodef.xml add on next line after "COMPONENT CONTEXT"
209    #  <context id="orchidee" src="./context_orchidee.xml"/>
210        echo '<context id="orchidee" src="./context_orchidee.xml"/>' > add.tmp
211        cp iodef.xml iodef.xml.tmp
212        sed -e "/COMPONENT CONTEXT/r add.tmp" \
213            iodef.xml.tmp > iodef.xml
214        rm iodef.xml.tmp add.tmp
215    fi
216
217    IGCM_debug_PopStack "SRF_Update"
218}
219
220#-----------------------------------------------------------------
221function SRF_Finalize
222{
223    IGCM_debug_PushStack "SRF_Finalize"
224
225    #IGCM_sys_Put_Out ${RUN_DIR}/used_run.def ${R_SAVE}/${PREFIX}_used_run.def
226
227    echo FINALIZE SRF !!!
228
229    IGCM_debug_PopStack "SRF_Finalize"
230}
Note: See TracBrowser for help on using the repository browser.