source: trunk/libIGCM/libIGCM_post/libIGCM_post.ksh @ 455

Last change on this file since 455 was 455, checked in by sdipsl, 13 years ago
  • Continuation of [451]. Submit post-treatment from titane's mono class to cesium. Nasty hack waiting for a better solution
  • Cosmetic and verbosity
  • Property licence set to
    The following licence information concerns ONLY the libIGCM tools
    ==================================================================

    Copyright © Centre National de la Recherche Scientifique CNRS
    Commissariat à l'Énergie Atomique CEA

    libIGCM : Library for Portable Models Computation of IGCM Group.

    IGCM Group is the french IPSL Global Climate Model Group.

    This library is a set of shell scripts and functions whose purpose is
    the management of the initialization, the launch, the transfer of
    output files, the post-processing and the monitoring of datas produce
    by any numerical program on any plateforme.

    This software is governed by the CeCILL license under French law and
    abiding by the rules of distribution of free software. You can use,
    modify and/ or redistribute the software under the terms of the CeCILL
    license as circulated by CEA, CNRS and INRIA at the following URL
    "http://www.cecill.info".

    As a counterpart to the access to the source code and rights to copy,
    modify and redistribute granted by the license, users are provided only
    with a limited warranty and the software's author, the holder of the
    economic rights, and the successive licensors have only limited
    liability.

    In this respect, the user's attention is drawn to the risks associated
    with loading, using, modifying and/or developing or reproducing the
    software by the user in light of its specific status of free software,
    that may mean that it is complicated to manipulate, and that also
    therefore means that it is reserved for developers and experienced
    professionals having in-depth computer knowledge. Users are therefore
    encouraged to load and test the software's suitability as regards their
    requirements in conditions enabling the security of their systems and/or
    data to be ensured and, more generally, to use and operate it in the
    same conditions as regards security.

    The fact that you are presently reading this means that you have had
    knowledge of the CeCILL license and that you accept its terms.
  • Property svn:keywords set to Revision Author Date
File size: 34.7 KB
Line 
1#!/bin/ksh
2
3#**************************************************************
4# Author: Sebastien Denvil
5# Contact: Sebastien.Denvil__at__ipsl.jussieu.fr
6# $Revision::                                          $ Revision of last commit
7# $Author::                                            $ Author of last commit
8# $Date::                                              $ Date of last commit
9# IPSL (2006)
10#  This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC
11#
12#**************************************************************
13
14#=======================================================================
15
16function IGCM_post_Configure
17{
18    IGCM_debug_PushStack "IGCM_post_Configure"
19
20    # Debug Print :
21    echo
22    IGCM_debug_Print 1 "IGCM_post_Configure :"
23    echo
24    #
25    # Initialize
26    #
27    POST=false
28    RebuildFrequency=false
29    TimeSeriesFrequency=false
30    SeasonalFrequency=false
31    #
32    # ONLY IF SOMETHING NEEDS TO BE DONE (EATHER TIME SERIES OR SEASONAL) COMPUTE THE MODULOS
33    #
34    if [ X${AsynchronousRebuild} = Xtrue ] ; then
35        list_post="RebuildFrequency"
36    fi
37    #
38    if ( [ X${TimeSeries} = Xtrue ] || [ X${TimeSeries2D} = Xtrue ] || [ X${TimeSeries3D} = Xtrue ] ) ; then
39        list_post="${list_post} TimeSeriesFrequency"
40    fi
41    #
42    if [ X${Seasonal} = Xtrue ] ; then
43        list_post="${list_post} SeasonalFrequency"
44    fi
45
46    # Overrule special cases
47    if ( [ ! X${config_Post_TimeSeriesFrequency} = X${NULL_STR} ] && \
48         [ ! X${config_Post_TimeSeriesFrequency} = XNONE ]        && \
49         [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then
50        TimeSeriesFrequency=true
51        POST=true
52    fi
53    #
54    if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && \
55         [ ! X${config_Post_RebuildFrequency} = XNONE ]        && \
56         [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then
57        RebuildFrequency=true
58        POST=true
59    fi
60
61    # READ REBUILD OR TIME SERIES OR SEASONAL FREQUENCY
62    # AND TURN ON THE SUBMISSION FLAG WHEN MODULO IS ZERO
63    for post_freq in ${list_post} ; do
64        # Extract frequency from previously defined variable
65        config_Post_post_freq=$( eval echo \${config_Post_${post_freq}} )
66        # Offset for Seasonal Average starting period
67        if [ ${post_freq} = SeasonalFrequency ] ; then
68            if ( [ X${config_Post_SeasonalFrequencyOffset} = X${NULL_STR} ] || [ X${config_Post_SeasonalFrequencyOffset} = XNONE ] || [ X${config_Post_SeasonalFrequencyOffset} = X ] ) ; then
69                PeriodOffset=0
70            else
71                PeriodOffset=${config_Post_SeasonalFrequencyOffset}
72            fi
73        else
74            PeriodOffset=0
75        fi
76        # Compute Modulo between frequencys (/!\second argument will be multiplied by CumuPeriod/!\)
77        # RebuildFrequency needs additionnal information
78        if [ ${post_freq} = RebuildFrequency ] ; then
79            IGCM_post_ModuloRuntimeFrequency config_Post_post_freq config_UserChoices_PeriodLength NbRebuildDir
80        else
81            IGCM_post_ModuloRuntimeFrequency config_Post_post_freq config_UserChoices_PeriodLength
82        fi
83        #
84        IGCM_debug_Print 1 "${post_freq} flag value : ${RebuildFrequency}"
85    done
86    #
87    echo
88    IGCM_debug_Print 1 "POST-TREATEMENT flag value : ${POST}"
89    #
90    IGCM_debug_PopStack "IGCM_post_Configure"
91}
92
93function IGCM_post_Submit
94{
95    IGCM_debug_PushStack "IGCM_post_Submit"
96
97    typeset listVarEnv
98
99    POST_DIR=${R_OUT_POST}/${config_UserChoices_TagName}/${config_UserChoices_JobName}
100
101    if [ ${POST} = true ]; then
102        echo
103        IGCM_debug_Print 1 "IGCM_post_Submit :"
104        echo
105        IGCM_debug_Print 1 "POST_DIR = ${POST_DIR}"
106    fi
107
108    #============ TIME SERIES POST-TREATMENT ===========#
109    if [ ${TimeSeriesFrequency} = true ] ; then
110
111        IGCM_debug_Print 2 "TIME SERIES POST-PROCESSING ACTIVATED :"
112        echo
113
114
115
116        # Get information from last execution
117        IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted
118        CompletedFlag=${run_PostProcessing_TimeSeriesCompleted}
119        #
120
121
122
123        listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,MASTER,RebuildFrequency,DateBegin,PeriodDateEnd,StandAlone,CompletedFlag,TsTask,CompToRead,FlagToRead,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG"
124        #
125        jLoop=${#ListDimension[*]}
126        j=0
127        until [ $j -ge ${jLoop} ]; do
128            Dimension=${ListDimension[${j}]}
129            #
130            if [ X$( eval echo \${TimeSeries${Dimension}} ) = Xtrue ] ; then
131                #
132                IGCM_debug_Print 2 "TIME SERIES POST-PROCESSING ${Dimension} ACTIVATED :"
133                echo
134                #
135                if [ X${Dimension} = X ] ; then
136                    TsTask="empty"
137                    Script_Post_Output=create_ts.${PeriodDateEnd}
138                else
139                    TsTask=${Dimension}
140                    Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask}
141                fi
142                #
143                if [ ${RebuildFrequency} = true ] ; then
144                    #
145                    if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then
146                        if [ X${MASTER} = Xtitane ] ; then
147                            echo "IGCM_sys_RshPost <<-EOF"                     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
148                        fi
149                        echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
150                        echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
151                        echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
152                        echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
153                        echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
154                        echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
155                        echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
156                        echo "export RebuildFrequency=${RebuildFrequency}    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
157                        echo "export DateBegin=${DateBegin}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
158                        echo "export PeriodDateEnd=${PeriodDateEnd}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
159                        echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
160                        echo "export CompletedFlag=${CompletedFlag}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
161                        echo "export TsTask=${TsTask}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
162                        echo "unset  CompToRead                              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
163                        echo "unset  FlagToRead                              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
164                        echo "export RESOL_ATM=${RESOL_ATM}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
165                        echo "export RESOL_OCE=${RESOL_OCE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
166                        echo "export RESOL_ICE=${RESOL_ICE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
167                        echo "export RESOL_MBG=${RESOL_MBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
168                        echo "export RESOL_SRF=${RESOL_SRF}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
169                        echo "export RESOL_SBG=${RESOL_SBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
170                        echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
171                        echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
172                        if [ X${MASTER} = Xtitane ] ; then
173                            echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
174                            echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
175                        fi
176                        echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
177                        echo "IGCM_debug_Verif_Exit_Post                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
178                        echo "IGCM_sys_QsubPost create_ts                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
179                        if [ X${MASTER} = Xtitane ] ; then
180                            echo "EOF"                                         >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
181                        fi
182                    fi
183                    #
184                else
185                    #
186                    IGCM_sys_RshPost <<-EOF
187                    export DEBUG_debug=${DEBUG_debug}
188                    export MODIPSL=${MODIPSL}
189                    export libIGCM_SX=${libIGCM}
190                    export libIGCM=${libIGCM_POST}
191                    export SUBMIT_DIR=${SUBMIT_DIR}
192                    export POST_DIR=${POST_DIR}
193                    export MASTER=${MASTER}
194                    export RebuildFrequency=${RebuildFrequency}
195                    export DateBegin=${DateBegin}
196                    export PeriodDateEnd=${PeriodDateEnd}
197                    export StandAlone=false
198                    export CompletedFlag=${CompletedFlag}
199                    export TsTask=${TsTask}
200                    unset  CompToRead
201                    unset  FlagToRead
202                    export RESOL_ATM=${RESOL_ATM}
203                    export RESOL_OCE=${RESOL_OCE}
204                    export RESOL_ICE=${RESOL_ICE}
205                    export RESOL_MBG=${RESOL_MBG}
206                    export RESOL_SRF=${RESOL_SRF}
207                    export RESOL_SBG=${RESOL_SBG}
208                    export listVarEnv=${listVarEnv}
209                    export Script_Post_Output=${Script_Post_Output}
210                    . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh
211                    . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh
212                    IGCM_sys_MkdirWork ${POST_DIR}
213                    IGCM_debug_Verif_Exit_Post
214                    IGCM_sys_QsubPost create_ts
215EOF
216                fi
217            fi
218            #
219            if [ X$( eval echo \${TimeSeriesChunck${Dimension}} ) = Xtrue ] ; then
220                #
221                IGCM_debug_Print 2 "TIME SERIES POST-PROCESSING ${Dimension} WITH CHUNCK ACTIVATED :"
222                echo
223                # Need to Remember This One
224                SavedDateBegin=${DateBegin}
225                # Kind of task create_ts will perform
226                TsTask=Chunck${Dimension}
227                # Number of chunck jobs to configure and submit
228                eval NbJob=\${#CHUNCK${Dimension}_COMP[@]}
229                typeset i
230                i=0
231                until [ $i -ge $NbJob ]; do
232                    CompToRead=$( eval echo \${CHUNCK${Dimension}_COMP[\${i}]} )
233                    FlagToRead=$( eval echo \${CHUNCK${Dimension}_FLAG[\${i}]} )
234                    NameToRead=$( eval echo \${CHUNCK${Dimension}_NAME[\${i}]} )
235                    ChunckSize=$( eval echo \${CHUNCK${Dimension}_SIZE[\${i}]} )
236                    # Chunck Length (mandatory in Year)
237                    YearsChunckLength=$( echo ${ChunckSize} | sed -e "s/[yY]//" )
238                    #
239                    IGCM_date_GetYearMonth ${DateBegin}     YearBegin MonthBegin
240                    #
241                    IGCM_date_GetYearMonth ${PeriodDateEnd} YearEnd   MonthEnd
242                    # How many chunck in total since simulation began
243                    NbYearsChunckLoop=$(( ( ${YearEnd} - ${YearBegin} + 1 ) / ${YearsChunckLength} ))
244                    #  Tweak special case
245                    [ $(( ( ${YearEnd} - ${YearBegin} + 1 ) % ${YearsChunckLength} )) = 0 ] && NbYearsChunckLoop=$(( ${NbYearsChunckLoop} - 1 ))
246                    # Starting Year of the current chunck
247                    ChunckTsYearBegin=$(( ${NbYearsChunckLoop} *  ${YearsChunckLength} + ${YearBegin} ))
248                    # Starting date of the current chunck
249                    ChunckTsDateBegin=${ChunckTsYearBegin}${MonthBegin}01
250                    #
251                    Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask}.${CompToRead}.${NameToRead}
252                    #
253                    if [ ${RebuildFrequency} = true ] ; then
254                        #
255                        if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then
256                            if [ X${MASTER} = Xtitane ] ; then
257                                echo "IGCM_sys_RshPost <<-EOF"                     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
258                            fi
259                            echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
260                            echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
261                            echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
262                            echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
263                            echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
264                            echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
265                            echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
266                            echo "export RebuildFrequency=${RebuildFrequency}    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
267                            echo "export DateBegin=${ChunckTsDateBegin}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
268                            echo "export PeriodDateEnd=${PeriodDateEnd}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
269                            echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
270                            echo "export CompletedFlag=${CompletedFlag}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
271                            echo "export TsTask=${TsTask}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
272                            echo "export CompToRead=${CompToRead}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
273                            echo "export FlagToRead=${FlagToRead}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
274                            echo "export RESOL_ATM=${RESOL_ATM}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
275                            echo "export RESOL_OCE=${RESOL_OCE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
276                            echo "export RESOL_ICE=${RESOL_ICE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
277                            echo "export RESOL_MBG=${RESOL_MBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
278                            echo "export RESOL_SRF=${RESOL_SRF}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
279                            echo "export RESOL_SBG=${RESOL_SBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
280                            echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
281                            echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
282                            if [ X${MASTER} = Xtitane ] ; then
283                                echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
284                                echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
285                            fi
286                            echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
287                            echo "IGCM_debug_Verif_Exit_Post                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
288                            echo "IGCM_sys_QsubPost create_ts                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
289                            if [ X${MASTER} = Xtitane ] ; then
290                                echo "EOF"                                         >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
291                            fi
292                        fi
293                        #
294                    else
295                        #
296                        IGCM_sys_RshPost <<-EOF
297                        export DEBUG_debug=${DEBUG_debug}
298                        export MODIPSL=${MODIPSL}
299                        export libIGCM_SX=${libIGCM}
300                        export libIGCM=${libIGCM_POST}
301                        export SUBMIT_DIR=${SUBMIT_DIR}
302                        export POST_DIR=${POST_DIR}
303                        export MASTER=${MASTER}
304                        export RebuildFrequency=${RebuildFrequency}
305                        export DateBegin=${ChunckTsDateBegin}
306                        export PeriodDateEnd=${PeriodDateEnd}
307                        export StandAlone=false
308                        export CompletedFlag=${CompletedFlag}
309                        export TsTask=${TsTask}
310                        export CompToRead=${CompToRead}
311                        export FlagToRead=${FlagToRead}
312                        export RESOL_ATM=${RESOL_ATM}
313                        export RESOL_OCE=${RESOL_OCE}
314                        export RESOL_ICE=${RESOL_ICE}
315                        export RESOL_MBG=${RESOL_MBG}
316                        export RESOL_SRF=${RESOL_SRF}
317                        export RESOL_SBG=${RESOL_SBG}
318                        export listVarEnv=${listVarEnv}
319                        export Script_Post_Output=${Script_Post_Output}
320                        . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh
321                        . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh
322                        IGCM_sys_MkdirWork ${POST_DIR}
323                        IGCM_debug_Verif_Exit_Post
324                        IGCM_sys_QsubPost create_ts
325EOF
326                        #
327                    fi
328                    #
329                    export DateBegin=${SavedDateBegin}
330                    #
331                    (( i=i+1 ))
332                    #
333                done
334            fi
335            (( j=j+1 ))
336        done
337    fi
338
339    #=============  SEASONAL POST-TREATMENT ============#
340    if [ ${SeasonalFrequency} = true ] ; then
341        #
342        IGCM_debug_Print 2 "SEASONNAL POST-TREATMENT :"
343        echo
344        #
345        Script_Post_Output=create_se.${PeriodDateEnd}
346        #
347        listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,MASTER,RebuildFrequency,DateBegin,PeriodDateEnd,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG"
348
349        if [ ${RebuildFrequency} = true ] ; then
350            #
351            if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then
352                #
353                if [ X${MASTER} = Xtitane ] ; then
354                    echo "IGCM_sys_RshPost <<-EOF"                     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
355                fi
356                echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
357                echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
358                echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
359                echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
360                echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
361                echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
362                echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
363                echo "export RebuildFrequency=${RebuildFrequency}    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
364                echo "export DateBegin=${DateBegin}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
365                echo "export PeriodDateEnd=${PeriodDateEnd}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
366                echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
367                echo "export RESOL_ATM=${RESOL_ATM}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
368                echo "export RESOL_OCE=${RESOL_OCE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
369                echo "export RESOL_ICE=${RESOL_ICE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
370                echo "export RESOL_MBG=${RESOL_MBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
371                echo "export RESOL_SRF=${RESOL_SRF}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
372                echo "export RESOL_SBG=${RESOL_SBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
373                echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
374                echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
375                if [ X${MASTER} = Xtitane ] ; then
376                    echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
377                    echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
378                fi
379                echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
380                echo "IGCM_debug_Verif_Exit_Post                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
381                echo "IGCM_sys_QsubPost create_se                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
382                if [ X${MASTER} = Xtitane ] ; then
383                    echo "EOF"                                         >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
384                fi
385                #
386            fi
387        else
388            #
389            IGCM_sys_RshPost <<-EOF
390            export DEBUG_debug=${DEBUG_debug}
391            export MODIPSL=${MODIPSL}
392            export libIGCM_SX=${libIGCM}
393            export libIGCM=${libIGCM_POST}
394            export SUBMIT_DIR=${SUBMIT_DIR}
395            export POST_DIR=${POST_DIR}
396            export MASTER=${MASTER}
397            export RebuildFrequency=${RebuildFrequency}
398            export DateBegin=${DateBegin}
399            export PeriodDateEnd=${PeriodDateEnd}
400            export StandAlone=false
401            export RESOL_ATM=${RESOL_ATM}
402            export RESOL_OCE=${RESOL_OCE}
403            export RESOL_ICE=${RESOL_ICE}
404            export RESOL_MBG=${RESOL_MBG}
405            export RESOL_SRF=${RESOL_SRF}
406            export RESOL_SBG=${RESOL_SBG}
407            export listVarEnv=${listVarEnv}
408            export Script_Post_Output=${Script_Post_Output}
409            . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh
410            . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh
411            IGCM_sys_MkdirWork ${POST_DIR}
412            IGCM_debug_Verif_Exit_Post
413            IGCM_sys_QsubPost create_se
414EOF
415        #
416        fi
417    fi
418
419    #============== REBUILD POST-TREATMENT =============#
420    if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && [ ! X${config_Post_RebuildFrequency} = XNONE ] ) ; then
421        # -----------------------------------------------------------------------------------
422        # Function IGCM_FlushRebuild define in rebuild.ksh has not been closed yet. Do it now
423        # -----------------------------------------------------------------------------------
424        if [ ${DRYRUN} -le 1 ] ; then
425            echo "IGCM_debug_PopStack \"IGCM_FlushRebuild\" " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
426            echo "}                                         " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
427        fi
428        if [ ${config_Post_RebuildFromArchive} = true ] ; then
429            IGCM_sys_Put_Dir REBUILD_${PeriodDateBegin} ${REBUILD_DIR}
430        else
431            IGCM_sys_Mv      REBUILD_${PeriodDateBegin} ${REBUILD_DIR}
432        fi
433    fi
434    #
435    if [ ${RebuildFrequency} = true ] ; then
436        if ( [ ${config_Post_RebuildFromArchive} = true ] ) ; then
437            IGCM_debug_Print 2 "REBUILD POST-TREATMENT FROM ARCHIVE:"
438            echo
439            #
440            script=rebuild_fromArchive
441        else
442            IGCM_debug_Print 2 "REBUILD POST-TREATMENT FROM WORKDIR:"
443            echo
444            #
445            script=rebuild_fromWorkdir
446        fi
447        #
448        Script_Post_Output=${script}.${PeriodDateEnd}
449        #
450        listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,REBUILD_DIR,POST_DIR,MASTER,RebuildFromArchive,DateBegin,PeriodDateBegin,PeriodDateEnd,NbRebuildDir,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG"
451        IGCM_sys_RshPost <<-EOF
452        export DEBUG_debug=${DEBUG_debug}
453        export MODIPSL=${MODIPSL}
454        export libIGCM_SX=${libIGCM}
455        export libIGCM=${libIGCM_POST}
456        export SUBMIT_DIR=${SUBMIT_DIR}
457        export REBUILD_DIR=${REBUILD_DIR}
458        export POST_DIR=${POST_DIR}
459        export MASTER=${MASTER}
460        export RebuildFromArchive=${config_Post_RebuildFromArchive}
461        export DateBegin=${DateBegin}
462        export PeriodDateBegin=${PeriodDateBegin}
463        export PeriodDateEnd=${PeriodDateEnd}
464        export NbRebuildDir=${NbRebuildDir}
465        export StandAlone=false
466        export RESOL_ATM=${RESOL_ATM}
467        export RESOL_OCE=${RESOL_OCE}
468        export RESOL_ICE=${RESOL_ICE}
469        export RESOL_MBG=${RESOL_MBG}
470        export RESOL_SRF=${RESOL_SRF}
471        export RESOL_SBG=${RESOL_SBG}
472        export listVarEnv=${listVarEnv}
473        export Script_Post_Output=${Script_Post_Output}
474        . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh
475        . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh
476        IGCM_sys_MkdirWork ${POST_DIR}
477        IGCM_debug_Verif_Exit_Post
478        IGCM_sys_QsubPost ${script}
479EOF
480
481    fi
482
483    IGCM_debug_PopStack "IGCM_post_Submit"
484}
485
486#===================================
487function IGCM_post_CheckModuloFrequency
488{
489    IGCM_debug_PushStack "IGCM_post_CheckModuloFrequency" $*
490
491    # Used by IGCM_config_Check
492    # from 2 libIGCM compatible frequency (*Y, *M, *D, *y, *m, *d)
493    # Issue an exit instruction IGCM_debug_Exit if there modulo is not zero
494    # Input parameter are the name of the variable, not the frequency value itself
495    # example
496    # IGCM_post_ModuloFrequency config_Post_RebuildFrequency config_UserChoices_PeriodLength
497
498    typeset MasterName SlaveName MasterFrequency SlaveFrequency PeriodMasterYear PeriodMasterMonth PeriodMasterDay PeriodSlaveYear PeriodSlaveMonth PeriodSlaveDay
499
500    # Get the name of the variable
501    MasterName=$1
502    SlaveName=$2
503    # Get the value the above name points to
504    MasterFrequency=$( eval echo \${${1}} )
505    SlaveFrequency=$( eval echo \${${2}} )
506
507    IGCM_debug_Print 1 "IGCM_post_CheckModuloFrequency : Master=${MasterFrequency} Slave=${SlaveFrequency}"
508
509    case ${MasterFrequency} in
510        *y|*Y)
511            PeriodMasterYear=$( echo ${MasterFrequency} | sed -e "s/[yY]//" )
512            case ${SlaveFrequency} in
513                *Y|*y)
514                    PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" )
515                    if ( [ ${PeriodSlaveYear} -gt ${PeriodMasterYear} ] || \
516                        [ $(( ${PeriodMasterYear} % ${PeriodSlaveYear} )) -ne 0 ] )then
517                        IGCM_debug_Print 3 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
518                        IGCM_debug_Print 3 "${MasterName} frequency : ${MasterFrequency}"
519                        IGCM_debug_Exit "Check your frequency"
520                    fi ;;
521                *M|*m)
522                    PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" )
523                    if ( [ ${PeriodSlaveMonth} -gt $(( ${PeriodMasterYear} * 12 )) ] || \
524                        [ $(( ( ${PeriodMasterYear} * 12 ) % ${PeriodSlaveMonth} )) -ne 0 ] ) ; then
525                        IGCM_debug_Print 3 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
526                        IGCM_debug_Print 3 "${MasterName} frequency : ${MasterFrequency}"
527                        IGCM_debug_Exit "Check your frequency"
528                    fi ;;
529                *D|*d)
530                    PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" )
531                    NbDays=$( IGCM_date_DaysInYear ${year} )
532                    if [ ${config_UserChoices_CalendarType} = 360d ] || [ ${config_UserChoices_CalendarType} = noleap ] ; then
533                        if ( [ ${PeriodSlaveDay} -gt $(( ${PeriodMasterYear} * ${NbDays} )) ] || \
534                            [ $(( ( ${PeriodMasterYear} * ${NbDays} ) % ${PeriodSlaveDay} )) -ne 0 ] ; ) then
535                            IGCM_debug_Print 3 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
536                            IGCM_debug_Print 3 "${MasterName} frequency : ${MasterFrequency}"
537                            IGCM_debug_Exit "Check your frequency"
538                        fi
539                    else
540                        IGCM_debug_Print 3 "For ${MasterName} with leap calendar:"
541                        IGCM_debug_Print 3 "We have a daily ${SlaveName} frequency and ${MasterName}=${MasterFrequency}"
542                        IGCM_debug_Print 3 "No post-treatment. Case not properly handle at this moment by libIGCM. Sorry"
543                        IGCM_debug_Exit    "Check your frequency ${MasterName} and choose a daily frequency for this one too."
544                    fi ;;
545            esac ;;
546        *M|*m)
547            PeriodMasterMonth=$( echo ${MasterFrequency} | sed -e "s/[mM]//" )
548            case ${SlaveFrequency} in               
549                *Y|*y)
550                    PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" )
551                    if ( [ ${PeriodMasterMonth} -gt $(( ${PeriodSlaveYear} * 12 )) ] || \
552                        [ $(( ${PeriodMasterMonth} % ( ${PeriodSlaveYear} * 12 ) )) -ne 0 ] ) ; then
553                        IGCM_debug_Print 3 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
554                        IGCM_debug_Print 3 "${MasterName} frequency : ${MasterFrequency}"
555                        IGCM_debug_Exit "Check your frequency"
556                    fi ;;
557                *M|*m)
558                    PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" )
559                    if ( [ ${PeriodSlaveMonth} -gt ${PeriodMasterMonth} ] || \
560                        [ $(( ${PeriodMasterMonth} % ${PeriodSlaveMonth} )) -ne 0 ] ) ;  then           
561                        IGCM_debug_Print 3 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
562                        IGCM_debug_Print 3 "${MasterName} frequency : ${MasterFrequency}"
563                        IGCM_debug_Exit "Check your frequency"
564                    fi ;;
565                *D|*d)
566                    IGCM_debug_Print 3 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
567                    IGCM_debug_Print 3 "${MasterName} frequency : ${MasterFrequency}"
568                    IGCM_debug_Exit "Check your frequency" ;;
569            esac ;;
570        *D|*d)
571            PeriodMasterDay=$( echo ${MasterFrequency} | sed -e "s/[dD]//" )
572            case ${SlaveFrequency} in
573                *Y|*y)
574                    IGCM_debug_Print 3 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
575                    IGCM_debug_Print 3 "${MasterName} frequency ${MasterFrequency}"
576                    IGCM_debug_Exit "Check your frequency" ;;
577                *M|*m)
578                    IGCM_debug_Print 3 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
579                    IGCM_debug_Print 3 "${MasterName} frequency ${MasterFrequency}"
580                    IGCM_debug_Exit "Check your frequency" ;;
581                *D|*d)
582                    PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" )
583                    if ( [ ${PeriodSlaveDay} -gt ${PeriodMasterDay} ] || \
584                        [ $(( ${PeriodMasterDay} % ${PeriodSlaveDay} )) -ne 0 ] ) ;  then
585                        IGCM_debug_Print 3 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
586                        IGCM_debug_Print 3 "${MasterName} frequency : ${MasterFrequency}"
587                        IGCM_debug_Exit "Check your frequency"
588                    fi ;;
589            esac ;;
590        NONE|none) 
591            ;;
592        *)
593            IGCM_debug_Print 3 "KeyWord ${MasterFrequency} not allowed for ${MasterName} in config.card"
594            IGCM_debug_Exit "Check your ${MasterName} in config.card" ;;
595    esac
596
597    IGCM_debug_PopStack "IGCM_post_CheckModuloFrequency"
598}
599
600#===================================
601function IGCM_post_ModuloRuntimeFrequency
602{
603    IGCM_debug_PushStack "IGCM_post_ModuloRuntimeFrequency" $*
604
605    # Used by IGCM_post_Configure
606    # - from libIGCM (config_UserChoices_PeriodLength frequency * CumulPeriod) and
607    # - post-processing compatible frequency (*Y, *M, *D, *y, *m, *d)
608    # --> turn on post-processing submission when their modulo is zero
609    # Input parameter are the name of the variable, not the frequency value itself
610    # example
611    # IGCM_post_ModuloRuntimeFrequency config_Post_SeasonalFrequency config_UserChoices_PeriodLength
612
613    typeset MasterName SlaveName MasterFrequency SlaveFrequency PeriodMasterYear PeriodMasterMonth PeriodMasterDay PeriodSlaveYear PeriodSlaveMonth PeriodSlaveDay
614
615    # Get the name of the variable
616    MasterName=$1
617    SlaveName=$2
618 
619    # Get the value the above name points to
620    eval MasterFrequency=\${${1}}
621    eval SlaveFrequency=\${${2}}
622
623    echo
624    IGCM_debug_Print 1 "IGCM_post_ModuloRuntimeFrequency : Master=${MasterFrequency} Slave=${SlaveFrequency} CumulPeriod=${CumulPeriod}"
625    echo
626
627    case ${MasterFrequency} in
628        *y|*Y)
629            PeriodMasterYear=$( echo ${MasterFrequency} | sed -e "s/[yY]//" )
630            case ${SlaveFrequency} in
631                *Y|*y)
632                    PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" )
633                    if [ $(( ( ${CumulPeriod} * ${PeriodSlaveYear} - ${PeriodOffset} ) % ${PeriodMasterYear} )) -eq 0 ] ;  then
634                        if [ $(( ${CumulPeriod} * ${PeriodSlaveYear} - ${PeriodOffset} )) -ne 0 ] ; then
635                            eval ${post_freq}=true ; POST=true
636                            [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterYear} / ${PeriodSlaveYear} ))
637                        fi
638                    fi;;
639                *M|*m)
640                    PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" )
641                    if [ $(( ( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} * 12 ) % ( ${PeriodMasterYear} * 12 ) )) -eq 0 ] ; then
642                        if [ $(( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} * 12 )) -ne 0 ] ; then
643                            eval ${post_freq}=true ; POST=true
644                            [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ( 12 * ${PeriodMasterYear} ) / ${PeriodSlaveMonth} ))
645                        fi
646                    fi;;
647                *D|*d)
648                    PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" )
649                    NbDays=$( IGCM_date_DaysInYear ${year} )
650                    if [ $(( ( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodSlaveDay} ) ) % ( ${NbDays} * ${PeriodMasterYear} / ${PeriodSlaveDay} ) )) -eq 0 ] ; then
651                        if [ $(( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodSlaveDay} ) )) -ne 0 ] ; then
652                            eval ${post_freq}=true ; POST=true
653                            [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ( ${NbDays} * ${PeriodMasterYear} ) / ${PeriodSlaveDay} ))
654                        fi
655                    fi;;
656            esac ;;
657        *M|*m)
658            PeriodMasterMonth=$( echo ${MasterFrequency} | sed -e "s/[mM]//" )
659            case ${SlaveFrequency} in
660                *Y|*y)
661                    PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" )
662                    if [ $(( ( ${CumulPeriod} * ${PeriodSlaveYear} * 12 - ${PeriodOffset} ) % ( ${PeriodMasterMonth} ) )) -eq 0 ] ; then
663                        if [ $(( ${CumulPeriod} * ${PeriodSlaveYear} * 12 - ${PeriodOffset} )) -ne 0 ] ; then
664                            eval ${post_freq}=true ; POST=true
665                            [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterMonth} / ( 12 * ${PeriodSlaveYear} ) ))
666                        fi
667                    fi;;
668                *M|*m)
669                    PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" )
670                    if [ $(( ( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} ) % ${PeriodMasterMonth} )) -eq 0 ] ;  then
671                        if [ $(( ${CumulPeriod} * ${PeriodSlaveMonth} -  ${PeriodOffset} )) -ne 0 ] ; then
672                            eval ${post_freq}=true ; POST=true
673                            [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterMonth} / ${PeriodSlaveMonth} ))
674                        fi
675                    fi;;
676                *D|*d)
677                    IGCM_debug_Print 3 "PeriodLength frequency ${SlaveFrequency} not compatbile with"
678                    IGCM_debug_Print 3 "${flag_post} frequency : ${MasterFrequency} " ;;
679            esac ;;
680        *D|*d)
681            PeriodMasterDay=$( echo ${MasterFrequency} | sed -e "s/[dD]//" )
682            case ${SlaveFrequency} in
683                *Y|*y)
684                    IGCM_debug_Print 3 "PeriodLength frequency ${SlaveFrequency} not compatbile with"
685                    IGCM_debug_Print 3 "${flag_post} frequency : ${MasterFrequency} " ;;
686                *M|*m)
687                    IGCM_debug_Print 3 "PeriodLength frequency ${SlaveFrequency} not compatbile with"
688                    IGCM_debug_Print 3 "${flag_post} frequency : ${MasterFrequency} " ;;
689                *D|*d)
690                    PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" )
691                    if [ $(( ( ${CumulPeriod} * ${PeriodSlaveDay} - ${PeriodOffset} ) % ${PeriodMasterDay} )) -eq 0 ] ;  then
692                        if [ $(( ${CumulPeriod} * ${PeriodSlaveDay} - ${PeriodOffset} )) -ne 0 ] ; then
693                            eval ${post_freq}=true ; POST=true
694                            [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterDay} / ${PeriodSlaveDay} ))
695                        fi
696                    fi;;
697            esac ;;
698        NONE|none)
699            ;;
700        *)
701            IGCM_debug_Print 3 "KeyWord not allowed for ${post_freq} in config.card"
702            ;;
703    esac
704
705    IGCM_debug_PopStack "IGCM_post_ModuloRuntimeFrequency"
706}
Note: See TracBrowser for help on using the repository browser.