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

Last change on this file since 582 was 569, checked in by mafoipsl, 12 years ago

PackFrequency? is defined under Post Section.

  • 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: 35.8 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  PackFrequency=false
29  TimeSeriesFrequency=false
30  SeasonalFrequency=false
31  unset list_post
32  #
33  # ONLY IF SOMETHING NEEDS TO BE DONE (EATHER TIME SERIES OR SEASONAL) COMPUTE THE MODULOS
34  #
35  if [ X${AsynchronousRebuild} = Xtrue ] ; then
36    list_post="RebuildFrequency"
37  fi
38  #
39  if [ X${Pack} = Xtrue ] ; then
40    list_post="${list_post} PackFrequency"
41  fi
42  #
43  if ( [ X${TimeSeries} = Xtrue ] || [ X${TimeSeries2D} = Xtrue ] || [ X${TimeSeries3D} = Xtrue ] ) ; then
44    list_post="${list_post} TimeSeriesFrequency"
45  fi
46  #
47  if [ X${Seasonal} = Xtrue ] ; then
48    list_post="${list_post} SeasonalFrequency"
49  fi
50
51  # Overrule special cases
52  if ( [ ! X${config_Post_TimeSeriesFrequency} = X${NULL_STR} ] && \
53    [ ! X${config_Post_TimeSeriesFrequency} = XNONE ]           && \
54    [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then
55    TimeSeriesFrequency=true
56    POST=true
57  fi
58  #
59  if ( [ X${AsynchronousRebuild} = Xtrue ] && [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then
60    RebuildFrequency=true
61    POST=true
62  fi
63
64  # READ REBUILD OR TIME SERIES OR SEASONAL FREQUENCY
65  # AND TURN ON THE SUBMISSION FLAG WHEN MODULO IS ZERO
66  for post_freq in ${list_post} ; do
67    # Extract frequency from previously defined variable
68    config_Post_post_freq=$( eval echo \${config_Post_${post_freq}} )
69    # Offset for Seasonal Average starting period
70    if [ ${post_freq} = SeasonalFrequency ] ; then
71      if ( [ X${config_Post_SeasonalFrequencyOffset} = X${NULL_STR} ] || [ X${config_Post_SeasonalFrequencyOffset} = XNONE ] || [ X${config_Post_SeasonalFrequencyOffset} = X ] ) ; then
72        PeriodOffset=0
73      else
74        PeriodOffset=${config_Post_SeasonalFrequencyOffset}
75      fi
76    else
77      PeriodOffset=0
78    fi
79    # Compute Modulo between frequencys (/!\second argument will be multiplied by CumuPeriod/!\)
80    # RebuildFrequency needs additionnal information
81    if [ ${post_freq} = RebuildFrequency ] ; then
82      IGCM_post_ModuloRuntimeFrequency config_Post_post_freq config_UserChoices_PeriodLength NbRebuildDir
83    else
84      IGCM_post_ModuloRuntimeFrequency config_Post_post_freq config_UserChoices_PeriodLength
85    fi
86    #
87    IGCM_debug_Print 1 "${post_freq} flag value : ${RebuildFrequency}"
88  done
89  #
90  IGCM_debug_Print 2 "POST-TREATEMENT flag value : ${POST}"
91  #
92  IGCM_debug_PopStack "IGCM_post_Configure"
93}
94
95function IGCM_post_Submit
96{
97  IGCM_debug_PushStack "IGCM_post_Submit"
98
99  typeset listVarEnv DaysTemp
100
101  #POST_DIR=${R_OUT_POST}/${config_UserChoices_TagName}/${config_UserChoices_JobName}
102  POST_DIR=${R_BUF_KSH}
103  if [ ${POST} = true ]; then
104    echo
105    IGCM_debug_Print 1 "IGCM_post_Submit"
106    echo
107    IGCM_debug_Print 2 "POST_DIR = ${POST_DIR}"
108  fi
109
110  #============ TIME SERIES POST-PROCESSING ===========#
111  if [ ${TimeSeriesFrequency} = true ] ; then
112
113    IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ACTIVATED"
114    echo
115
116
117
118    # Get information from last execution
119    IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted
120    CompletedFlag=${run_PostProcessing_TimeSeriesCompleted}
121    #
122
123
124
125    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"
126    #
127    jLoop=${#ListDimension[*]}
128    j=0
129    until [ $j -ge ${jLoop} ]; do
130      Dimension=${ListDimension[${j}]}
131      #
132      if [ X$( eval echo \${TimeSeries${Dimension}} ) = Xtrue ] ; then
133        #
134        IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} ACTIVATED"
135        echo
136        #
137        if [ X${Dimension} = X ] ; then
138          TsTask="empty"
139          Script_Post_Output=create_ts.${PeriodDateEnd}
140        else
141          TsTask=${Dimension}
142          Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask}
143        fi
144        #
145        if [ ${RebuildFrequency} = true ] ; then
146          #
147          if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then
148#           if [ X${MASTER} = Xtitane ] ; then
149#             echo "IGCM_sys_RshPost <<-EOF"                       >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
150#           fi
151            echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
152            echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
153            echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
154            echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
155            echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
156            echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
157            echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
158            echo "export RebuildFrequency=${RebuildFrequency}    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
159            echo "export DateBegin=${DateBegin}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
160            echo "export PeriodDateEnd=${PeriodDateEnd}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
161            echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
162            echo "export CompletedFlag=${CompletedFlag}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
163            echo "export TsTask=${TsTask}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
164            echo "unset  CompToRead                              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
165            echo "unset  FlagToRead                              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
166            echo "export RESOL_ATM=${RESOL_ATM}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
167            echo "export RESOL_OCE=${RESOL_OCE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
168            echo "export RESOL_ICE=${RESOL_ICE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
169            echo "export RESOL_MBG=${RESOL_MBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
170            echo "export RESOL_SRF=${RESOL_SRF}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
171            echo "export RESOL_SBG=${RESOL_SBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
172            echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
173            echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
174#           if [ X${MASTER} = Xtitane ] ; then
175#             echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
176#             echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
177#           fi
178            echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
179            echo "IGCM_debug_Verif_Exit_Post                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
180            echo "IGCM_sys_QsubPost create_ts                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
181#           if [ X${MASTER} = Xtitane ] ; then
182#             echo "EOF"                                           >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
183#           fi
184          fi
185        else
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 1 "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          else
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-PROCESSING ============#
338  if [ ${SeasonalFrequency} = true ] ; then
339    #
340    IGCM_debug_Print 1 "SEASONNAL POST-PROCESSING"
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      fi
384    else
385      IGCM_sys_RshPost <<-EOF
386            export DEBUG_debug=${DEBUG_debug}
387            export MODIPSL=${MODIPSL}
388            export libIGCM_SX=${libIGCM}
389            export libIGCM=${libIGCM_POST}
390            export SUBMIT_DIR=${SUBMIT_DIR}
391            export POST_DIR=${POST_DIR}
392            export MASTER=${MASTER}
393            export RebuildFrequency=${RebuildFrequency}
394            export DateBegin=${DateBegin}
395            export PeriodDateEnd=${PeriodDateEnd}
396            export StandAlone=false
397            export RESOL_ATM=${RESOL_ATM}
398            export RESOL_OCE=${RESOL_OCE}
399            export RESOL_ICE=${RESOL_ICE}
400            export RESOL_MBG=${RESOL_MBG}
401            export RESOL_SRF=${RESOL_SRF}
402            export RESOL_SBG=${RESOL_SBG}
403            export listVarEnv=${listVarEnv}
404            export Script_Post_Output=${Script_Post_Output}
405            . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh
406            . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh
407            IGCM_sys_MkdirWork ${POST_DIR}
408            IGCM_debug_Verif_Exit_Post
409            IGCM_sys_QsubPost create_se
410EOF
411    fi
412  fi
413
414  #============== REBUILD POST-PROCESSING =============#
415  if [ X${AsynchronousRebuild} = Xtrue ] ; then
416    # -----------------------------------------------------------------------------------
417    # Function IGCM_FlushRebuild define in rebuild.ksh has not been closed yet. Do it now
418    # -----------------------------------------------------------------------------------
419    if [ ${DRYRUN} -le 1 ] ; then
420      echo "IGCM_debug_PopStack \"IGCM_FlushRebuild\" " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
421      echo "}                                         " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
422    fi
423    if [ ${config_Post_RebuildFromArchive} = true ] ; then
424      IGCM_sys_Put_Dir REBUILD_${PeriodDateBegin} ${REBUILD_DIR}
425    else
426      IGCM_sys_Mv      REBUILD_${PeriodDateBegin} ${REBUILD_DIR}
427    fi
428  fi
429  #
430  if [ ${RebuildFrequency} = true ] ; then
431    if ( [ ${config_Post_RebuildFromArchive} = true ] ) ; then
432      IGCM_debug_Print 1 "REBUILD POST-PROCESSING FROM ARCHIVE"
433      echo
434      #
435      script=rebuild_fromArchive
436    else
437      IGCM_debug_Print 1 "REBUILD POST-PROCESSING FROM WORKDIR"
438      echo
439      #
440      script=rebuild_fromWorkdir
441    fi
442    #
443    Script_Post_Output=${script}.${PeriodDateEnd}
444    #
445    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"
446    IGCM_sys_RshPost <<-EOF
447    export DEBUG_debug=${DEBUG_debug}
448    export MODIPSL=${MODIPSL}
449    export libIGCM_SX=${libIGCM}
450    export libIGCM=${libIGCM_POST}
451    export SUBMIT_DIR=${SUBMIT_DIR}
452    export REBUILD_DIR=${REBUILD_DIR}
453    export POST_DIR=${POST_DIR}
454    export MASTER=${MASTER}
455    export RebuildFromArchive=${config_Post_RebuildFromArchive}
456    export DateBegin=${DateBegin}
457    export PeriodDateBegin=${PeriodDateBegin}
458    export PeriodDateEnd=${PeriodDateEnd}
459    export NbRebuildDir=${NbRebuildDir}
460    export StandAlone=false
461    export RESOL_ATM=${RESOL_ATM}
462    export RESOL_OCE=${RESOL_OCE}
463    export RESOL_ICE=${RESOL_ICE}
464    export RESOL_MBG=${RESOL_MBG}
465    export RESOL_SRF=${RESOL_SRF}
466    export RESOL_SBG=${RESOL_SBG}
467    export listVarEnv=${listVarEnv}
468    export Script_Post_Output=${Script_Post_Output}
469    . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh
470    . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh
471    IGCM_sys_MkdirWork ${POST_DIR}
472    IGCM_debug_Verif_Exit_Post
473    IGCM_sys_QsubPost ${script}
474EOF
475  fi
476
477  #============== PACK PROCESSING FOR RESTART AND DEBUG FILES =============#
478  if [ ${PackFrequency} = true ] ; then
479    IGCM_debug_Print 1 "PACK POST-PROCESSING"
480    echo
481    ## Need to Remember This One
482    SavedDateBegin=${DateBegin}
483    ## Need to Remember This One
484    SavedDateEnd=${DateEnd}
485    #
486    DaysTemp=$(( $( IGCM_date_DaysInPreviousPeriod ${PeriodDateEnd} ${config_Post_PackFrequency} end ) - 1 ))
487    #
488    PackDateBegin=$( IGCM_date_AddDaysToGregorianDate ${PeriodDateEnd} -${DaysTemp} )
489    #
490    script=pack_debug
491    #
492    Script_Post_Output=${script}.${PeriodDateEnd}
493    #
494    listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,MASTER,DateBegin,DateEnd,PeriodPack,StandAlone"
495    IGCM_sys_RshPost <<-EOF
496    export DEBUG_debug=${DEBUG_debug}
497    export MODIPSL=${MODIPSL}
498    export libIGCM_SX=${libIGCM}
499    export libIGCM=${libIGCM_POST}
500    export SUBMIT_DIR=${SUBMIT_DIR}
501    export POST_DIR=${POST_DIR}
502    export MASTER=${MASTER}
503    export DateBegin=${PackDateBegin}
504    export DateEnd=${PeriodDateEnd}
505    export PeriodPack=${config_Post_PackFrequency}
506    export StandAlone=false
507    export listVarEnv=${listVarEnv}
508    export Script_Post_Output=${Script_Post_Output}
509    . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh
510    . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh
511    IGCM_sys_MkdirWork ${POST_DIR}
512    IGCM_debug_Verif_Exit_Post
513    IGCM_sys_QsubPost ${script}
514EOF
515    #
516    script=pack_restart
517    #
518    Script_Post_Output=${script}.${PeriodDateEnd}
519    #
520    IGCM_sys_RshPost <<-EOF
521    export DEBUG_debug=${DEBUG_debug}
522    export MODIPSL=${MODIPSL}
523    export libIGCM_SX=${libIGCM}
524    export libIGCM=${libIGCM_POST}
525    export SUBMIT_DIR=${SUBMIT_DIR}
526    export POST_DIR=${POST_DIR}
527    export MASTER=${MASTER}
528    export DateBegin=${PackDateBegin}
529    export DateEnd=${PeriodDateEnd}
530    export PeriodPack=${config_Post_PackFrequency}
531    export StandAlone=false
532    export listVarEnv=${listVarEnv}
533    export Script_Post_Output=${Script_Post_Output}
534    . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh
535    . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh
536    IGCM_sys_MkdirWork ${POST_DIR}
537    IGCM_debug_Verif_Exit_Post
538    IGCM_sys_QsubPost ${script}
539EOF
540
541    export DateBegin=${SavedDateBegin}
542    export DateEnd=${SavedDateEnd}
543  fi
544  IGCM_debug_PopStack "IGCM_post_Submit"
545}
546
547#===================================
548function IGCM_post_CheckModuloFrequency
549{
550  IGCM_debug_PushStack "IGCM_post_CheckModuloFrequency" $*
551
552  # Used by IGCM_config_Check
553  # from 2 libIGCM compatible frequency (*Y, *M, *D, *y, *m, *d)
554  # Issue an exit instruction IGCM_debug_Exit if there modulo is not zero
555  # Input parameter are the name of the variable, not the frequency value itself
556  # example
557  # IGCM_post_ModuloFrequency config_Post_RebuildFrequency config_UserChoices_PeriodLength
558
559  typeset MasterName SlaveName MasterFrequency SlaveFrequency PeriodMasterYear PeriodMasterMonth PeriodMasterDay PeriodSlaveYear PeriodSlaveMonth PeriodSlaveDay
560
561  # Get the name of the variable
562  MasterName=$1
563  SlaveName=$2
564  # Get the value the above name points to
565  MasterFrequency=$( eval echo \${${1}} )
566  SlaveFrequency=$( eval echo \${${2}} )
567
568  IGCM_debug_Print 2 "IGCM_post_CheckModuloFrequency : Master=${MasterFrequency} Slave=${SlaveFrequency}"
569
570  case ${MasterFrequency} in
571  *y|*Y)
572    PeriodMasterYear=$( echo ${MasterFrequency} | sed -e "s/[yY]//" )
573    case ${SlaveFrequency} in
574    *Y|*y)
575      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" )
576      if ( [ ${PeriodSlaveYear} -gt ${PeriodMasterYear} ] || \
577        [ $(( ${PeriodMasterYear} % ${PeriodSlaveYear} )) -ne 0 ] )then
578        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
579        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
580        IGCM_debug_Exit "Check your frequency"
581      fi ;;
582    *M|*m)
583      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" )
584      if ( [ ${PeriodSlaveMonth} -gt $(( ${PeriodMasterYear} * 12 )) ] || \
585        [ $(( ( ${PeriodMasterYear} * 12 ) % ${PeriodSlaveMonth} )) -ne 0 ] ) ; then
586        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
587        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
588        IGCM_debug_Exit "Check your frequency"
589      fi ;;
590    *D|*d)
591      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" )
592      NbDays=$( IGCM_date_DaysInYear ${year} )
593      if [ ${config_UserChoices_CalendarType} = 360d ] || [ ${config_UserChoices_CalendarType} = noleap ] ; then
594        if ( [ ${PeriodSlaveDay} -gt $(( ${PeriodMasterYear} * ${NbDays} )) ] || \
595          [ $(( ( ${PeriodMasterYear} * ${NbDays} ) % ${PeriodSlaveDay} )) -ne 0 ] ; ) then
596          IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
597          IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
598          IGCM_debug_Exit "Check your frequency"
599        fi
600      else
601        IGCM_debug_Print 1 "For ${MasterName} with leap calendar:"
602        IGCM_debug_Print 1 "We have a daily ${SlaveName} frequency and ${MasterName}=${MasterFrequency}"
603        IGCM_debug_Print 1 "No post-treatment. Case not properly handle at this moment by libIGCM. Sorry"
604        IGCM_debug_Exit    "Check your frequency ${MasterName} and choose a daily frequency for this one too."
605      fi ;;
606    esac ;;
607  *M|*m)
608    PeriodMasterMonth=$( echo ${MasterFrequency} | sed -e "s/[mM]//" )
609    case ${SlaveFrequency} in               
610    *Y|*y)
611      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" )
612      if ( [ ${PeriodMasterMonth} -gt $(( ${PeriodSlaveYear} * 12 )) ] || \
613        [ $(( ${PeriodMasterMonth} % ( ${PeriodSlaveYear} * 12 ) )) -ne 0 ] ) ; then
614        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
615        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
616        IGCM_debug_Exit "Check your frequency"
617      fi ;;
618    *M|*m)
619      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" )
620      if ( [ ${PeriodSlaveMonth} -gt ${PeriodMasterMonth} ] || \
621        [ $(( ${PeriodMasterMonth} % ${PeriodSlaveMonth} )) -ne 0 ] ) ;  then           
622        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
623        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
624        IGCM_debug_Exit "Check your frequency"
625      fi ;;
626    *D|*d)
627      IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
628      IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
629      IGCM_debug_Exit "Check your frequency" ;;
630    esac ;;
631  *D|*d)
632    PeriodMasterDay=$( echo ${MasterFrequency} | sed -e "s/[dD]//" )
633    case ${SlaveFrequency} in
634    *Y|*y)
635      IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
636      IGCM_debug_Print 1 "${MasterName} frequency ${MasterFrequency}"
637      IGCM_debug_Exit "Check your frequency" ;;
638    *M|*m)
639      IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
640      IGCM_debug_Print 1 "${MasterName} frequency ${MasterFrequency}"
641      IGCM_debug_Exit "Check your frequency" ;;
642    *D|*d)
643      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" )
644      if ( [ ${PeriodSlaveDay} -gt ${PeriodMasterDay} ] || \
645        [ $(( ${PeriodMasterDay} % ${PeriodSlaveDay} )) -ne 0 ] ) ;  then
646        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
647        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
648        IGCM_debug_Exit "Check your frequency"
649      fi ;;
650    esac ;;
651  NONE|none)
652    ;;
653  *)
654    IGCM_debug_Print 1 "KeyWord ${MasterFrequency} not allowed for ${MasterName} in config.card"
655    IGCM_debug_Exit "Check your ${MasterName} in config.card" ;;
656  esac
657
658  IGCM_debug_PopStack "IGCM_post_CheckModuloFrequency"
659}
660
661#===================================
662function IGCM_post_ModuloRuntimeFrequency
663{
664  IGCM_debug_PushStack "IGCM_post_ModuloRuntimeFrequency" $*
665
666  # Used by IGCM_post_Configure
667  # - from libIGCM (config_UserChoices_PeriodLength frequency * CumulPeriod) and
668  # - post-processing compatible frequency (*Y, *M, *D, *y, *m, *d)
669  # --> turn on post-processing submission when their modulo is zero
670  # Input parameter are the name of the variable, not the frequency value itself
671  # example
672  # IGCM_post_ModuloRuntimeFrequency config_Post_SeasonalFrequency config_UserChoices_PeriodLength
673
674  typeset MasterName SlaveName MasterFrequency SlaveFrequency PeriodMasterYear PeriodMasterMonth PeriodMasterDay PeriodSlaveYear PeriodSlaveMonth PeriodSlaveDay
675
676  # Get the name of the variable
677  MasterName=$1
678  SlaveName=$2
679 
680  # Get the value the above name points to
681  eval MasterFrequency=\${${1}}
682  eval SlaveFrequency=\${${2}}
683
684  echo
685  IGCM_debug_Print 2 "IGCM_post_ModuloRuntimeFrequency : Master=${MasterFrequency} Slave=${SlaveFrequency} CumulPeriod=${CumulPeriod}"
686
687  case ${MasterFrequency} in
688  *y|*Y)
689    PeriodMasterYear=$( echo ${MasterFrequency} | sed -e "s/[yY]//" )
690    case ${SlaveFrequency} in
691    *Y|*y)
692      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" )
693      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveYear} - ${PeriodOffset} ) % ${PeriodMasterYear} )) -eq 0 ] ;  then
694        if [ $(( ${CumulPeriod} * ${PeriodSlaveYear} - ${PeriodOffset} )) -ne 0 ] ; then
695          eval ${post_freq}=true ; POST=true
696          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterYear} / ${PeriodSlaveYear} ))
697        fi
698      fi;;
699    *M|*m)
700      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" )
701      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} * 12 ) % ( ${PeriodMasterYear} * 12 ) )) -eq 0 ] ; then
702        if [ $(( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} * 12 )) -ne 0 ] ; then
703          eval ${post_freq}=true ; POST=true
704          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ( 12 * ${PeriodMasterYear} ) / ${PeriodSlaveMonth} ))
705        fi
706      fi;;
707    *D|*d)
708      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" )
709      NbDays=$( IGCM_date_DaysInYear ${year} )
710      if [ $(( ( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodSlaveDay} ) ) % ( ${NbDays} * ${PeriodMasterYear} / ${PeriodSlaveDay} ) )) -eq 0 ] ; then
711        if [ $(( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodSlaveDay} ) )) -ne 0 ] ; then
712          eval ${post_freq}=true ; POST=true
713          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ( ${NbDays} * ${PeriodMasterYear} ) / ${PeriodSlaveDay} ))
714        fi
715      fi;;
716    esac ;;
717  *M|*m)
718    PeriodMasterMonth=$( echo ${MasterFrequency} | sed -e "s/[mM]//" )
719    case ${SlaveFrequency} in
720    *Y|*y)
721      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" )
722      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveYear} * 12 - ${PeriodOffset} ) % ( ${PeriodMasterMonth} ) )) -eq 0 ] ; then
723        if [ $(( ${CumulPeriod} * ${PeriodSlaveYear} * 12 - ${PeriodOffset} )) -ne 0 ] ; then
724          eval ${post_freq}=true ; POST=true
725          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterMonth} / ( 12 * ${PeriodSlaveYear} ) ))
726        fi
727      fi;;
728    *M|*m)
729      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" )
730      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} ) % ${PeriodMasterMonth} )) -eq 0 ] ;  then
731        if [ $(( ${CumulPeriod} * ${PeriodSlaveMonth} -  ${PeriodOffset} )) -ne 0 ] ; then
732          eval ${post_freq}=true ; POST=true
733          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterMonth} / ${PeriodSlaveMonth} ))
734        fi
735      fi;;
736    *D|*d)
737      IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with"
738      IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;;
739    esac ;;
740  *D|*d)
741    PeriodMasterDay=$( echo ${MasterFrequency} | sed -e "s/[dD]//" )
742    case ${SlaveFrequency} in
743    *Y|*y)
744      IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with"
745      IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;;
746    *M|*m)
747      IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with"
748      IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;;
749    *D|*d)
750      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" )
751      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveDay} - ${PeriodOffset} ) % ${PeriodMasterDay} )) -eq 0 ] ;  then
752        if [ $(( ${CumulPeriod} * ${PeriodSlaveDay} - ${PeriodOffset} )) -ne 0 ] ; then
753          eval ${post_freq}=true ; POST=true
754          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterDay} / ${PeriodSlaveDay} ))
755        fi
756      fi;;
757    esac ;;
758  NONE|none)
759    ;;
760  *)
761    IGCM_debug_Print 1 "KeyWord not allowed for ${post_freq} in config.card"
762    ;;
763  esac
764
765  IGCM_debug_PopStack "IGCM_post_ModuloRuntimeFrequency"
766}
Note: See TracBrowser for help on using the repository browser.