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

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