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

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

Update to use IGCM_comp_modifyDefFile instead of local functions LMDZ_sed/LMDZ_sed_default/ORCHIDEE_sed.

Now this configuration must be used with libIGCM trunk rev 1073 or more recent.

File size: 8.4 KB
RevLine 
[396]1#!/bin/ksh
2
[763]3#D- Driver du script pour ORCHIDEE
[396]4
[763]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
[2332]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}"
[2333]27        IGCM_debug_PopStack "ORCHIDEE_sed_xml"
[2332]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
[396]38#-----------------------------------------------------------------
39function SRF_Initialize
40{
41    IGCM_debug_PushStack "SRF_Initialize"
42
[763]43    RESOL_SRF=ALL
[396]44
[1047]45    for frequency in ${config_SRF_WriteFrequency} ; do
46        case ${frequency} in
[1050]47            HF|hf) SRF_ok_hf=y ;;
[1047]48        esac
49    done
50
[2018]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
[396]60    IGCM_debug_PopStack "SRF_Initialize"
61}
62
63#-----------------------------------------------------------------
64function SRF_Update
65{
66    IGCM_debug_PushStack "SRF_Update"
67
[2333]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
[763]75    typeset SECHIBA_WRITE_STEP
[396]76
[2332]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        ORCHIDEE_sed XIOS_ORCHIDEE_OK y
81    fi   
82
[1038]83    SRF_WriteFrequency=$( echo ${config_SRF_WriteFrequency} | sed -e 's/\([0-9]*[yYmMdDs]\).*/\1/' ) 
84    case ${SRF_WriteFrequency} in
[763]85        *Y|*y) 
[1038]86            WriteInYears=$( echo ${SRF_WriteFrequency} | awk -F '[yY]' '{print $1}' )
87            PeriodLengthInYears=$( echo ${config_UserChoices_PeriodLength} | awk -F '[yY]' '{print $1}' )
[2332]88            (( SECHIBA_WRITE_STEP = PeriodLengthInDays * WriteInYears / PeriodLengthInYears * 86400 )) 
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 ${WriteInYears}y
92                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
93            fi
94            ;;
[1038]95        1M)
[2332]96            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
97                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
98                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq 1mo
99                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
100            fi
[1038]101            case ${config_UserChoices_PeriodLength} in
102            *Y|*y)
103                SECHIBA_WRITE_STEP=-1.
104                ;;
105            *M|*m)
106                SECHIBA_WRITE_STEP=-1.
107                ;;
108            *)
109                (( SECHIBA_WRITE_STEP = $( IGCM_date_DaysInMonth $year $month ) * 86400 ))
110                ;;
111            esac
112            ;;
[763]113        *M|*m) 
[1038]114            WriteInMonths=$( echo ${SRF_WriteFrequency} | awk -F '[mM]' '{print $1}' )
[2332]115            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
116                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
117                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq ${WriteInMonths}mo
118                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
119            fi
[763]120            case ${config_UserChoices_PeriodLength} in
121            *Y|*y)
[1038]122                PeriodLengthInYears=$( echo ${config_UserChoices_PeriodLength} | awk -F '[yY]' '{print $1}' )
[763]123                (( SECHIBA_WRITE_STEP = PeriodLengthInDays * 86400 / PeriodLengthInYears / 12  ))
124                ;;
125            *M|*m)
[1038]126                PeriodLengthInMonths=$( echo ${config_UserChoices_PeriodLength} | awk -F '[mM]' '{print $1}' )
[763]127                (( SECHIBA_WRITE_STEP = PeriodLengthInDays * WriteInMonths  * 86400 / PeriodLengthInMonths  ))
128                ;;
129            *)
130                (( SECHIBA_WRITE_STEP = $( IGCM_date_DaysInMonth $year $month ) * 86400 ))
[2332]131                if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
132                    ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
133                    ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq ${SECHIBA_WRITE_STEP}s
134                    ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
135                fi
[763]136                ;;
137            esac
138            ;;
139        5D|5d) 
[2332]140            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
141                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
142                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq 5d
143                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
144            fi
145            (( SECHIBA_WRITE_STEP = 5 * 86400 )) 
146            ;;
[763]147        1D|1d) 
[2332]148            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
149                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
150                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq 1d
151                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
152            fi
153            (( SECHIBA_WRITE_STEP = 86400 )) 
154            ;;
[763]155        *s)
[1038]156            WriteInSeconds=$( echo ${SRF_WriteFrequency} | awk -F '[s]' '{print $1}' )
[2332]157            if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
158                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 enabled .TRUE.
159                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 output_freq ${WriteInSeconds}s
160                ORCHIDEE_sed_xml file_def_orchidee.xml sechiba1 name sechiba_history
161            fi
[763]162            (( SECHIBA_WRITE_STEP = WriteInSeconds )) ;;
163        *) 
[1038]164            IGCM_debug_Exit "SRF_Update " ${SRF_WriteFrequency} " invalid WriteFrequency : choose in 1Y, 1M, 5D, 1D." 
[763]165            IGCM_debug_Verif_Exit ;;
166    esac
167
[2332]168#Use of XIOS ouputs only
169
170    if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
171        (( SECHIBA_WRITE_STEP = 0 ))
172    fi
[2333]173    IGCM_comp_modifyDefFile nonblocker orchidee.def WRITE_STEP ${SECHIBA_WRITE_STEP}
174    IGCM_comp_modifyDefFile nonblocker orchidee.def SECHIBA_HISTLEVEL ${orchidee_UserChoices_sechiba_LEVEL}
[2332]175
[1047]176    # Outputs HF in HISTFILE2 if required
[1692]177    if [ X${SRF_ok_hf} = Xy ] ; then
[2333]178        IGCM_comp_modifyDefFile nonblocker orchidee.def SECHIBA_HISTFILE2 y
[2332]179        if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
180            ORCHIDEE_sed_xml file_def_orchidee.xml sechiba2 enabled .TRUE.
181            ORCHIDEE_sed_xml file_def_orchidee.xml sechiba2 output_freq 10800s
182            ORCHIDEE_sed_xml file_def_orchidee.xml sechiba2 name sechiba_out_2
183        fi
[1692]184    else
[2333]185        IGCM_comp_modifyDefFile nonblocker orchidee.def SECHIBA_HISTFILE2 n
[1692]186    fi
[2333]187    IGCM_comp_modifyDefFile nonblocker orchidee.def SECHIBA_HISTLEVEL2 1
188    IGCM_comp_modifyDefFile nonblocker orchidee.def WRITE_STEP2 10800.0
[763]189
[793]190    if ( [ ${CumulPeriod} -ne 1 ] || [ "${config_SRF_Restart}" != "n" ] ) ; then
[2333]191        IGCM_comp_modifyDefFile blocker orchidee.def SECHIBA_restart_in sechiba_rest_in.nc
[1692]192    else
[2333]193        IGCM_comp_modifyDefFile blocker orchidee.def SECHIBA_restart_in NONE
[396]194    fi
195
[1536]196# Modify in orchidee.def VEGET_UPDATE and LAND_COVER_CHANGE if they are set in orchidee.card section UserChoices
197    if [ ! X${orchidee_UserChoices_VEGET_UPDATE} = X ] ; then
[2333]198        IGCM_comp_modifyDefFile blocker orchidee.def VEGET_UPDATE   ${orchidee_UserChoices_VEGET_UPDATE}
[1692]199    else
[2333]200        IGCM_comp_modifyDefFile blocker orchidee.def VEGET_UPDATE 0Y
[1536]201    fi
202    if [ ! X${orchidee_UserChoices_LAND_COVER_CHANGE} = X ] ; then
[2333]203        IGCM_comp_modifyDefFile blocker orchidee.def LAND_COVER_CHANGE ${orchidee_UserChoices_LAND_COVER_CHANGE}
[1692]204    else
[2333]205        IGCM_comp_modifyDefFile blocker orchidee.def LAND_COVER_CHANGE n
[1536]206    fi
207
[653]208    #IGCM_sys_Cp ${RUN_DIR}/orchidee.def ${RUN_DIR}/run.def
209    #IGCM_sys_Put_Out ${RUN_DIR}/run.def ${R_SAVE}/${PREFIX}_run.def
[396]210
[1622]211
[2332]212    if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
[2238]213    # Add include of orchidee context in iodef.xml
214    # In iodef.xml add on next line after "COMPONENT CONTEXT"
215    #  <context id="orchidee" src="./context_orchidee.xml"/>
[2332]216        echo '<context id="orchidee" src="./context_orchidee.xml"/>' > add.tmp
217        cp iodef.xml iodef.xml.tmp
218        sed -e "/COMPONENT CONTEXT/r add.tmp" \
219            iodef.xml.tmp > iodef.xml
220        rm iodef.xml.tmp add.tmp
221    fi
[2238]222
[396]223    IGCM_debug_PopStack "SRF_Update"
224}
225
226#-----------------------------------------------------------------
227function SRF_Finalize
228{
229    IGCM_debug_PushStack "SRF_Finalize"
230
[653]231    #IGCM_sys_Put_Out ${RUN_DIR}/used_run.def ${R_SAVE}/${PREFIX}_used_run.def
[396]232
233    echo FINALIZE SRF !!!
234
235    IGCM_debug_PopStack "SRF_Finalize"
236}
Note: See TracBrowser for help on using the repository browser.