Ignore:
Timestamp:
12/22/11 16:04:47 (13 years ago)
Author:
sdipsl
Message:
  • Prepare libIGCM for TGCC migration. For now work for CCRT machines ONLY
  • SX8, SX9 and Titane are independant from DMNFS
    • 30 seconds between execution instead of at least 3 minutes ; sometimes hours
  • SX8, SX9 and Titane use their SCRATCHDIR as a BUFFER (for restart and text)
  • Titane simulations are entirely post-processed on titane mono
    • Working except create_se and atlas (missing software : ncap2, openpbm, ImageMagick?)
  • Cards are the same up to now
  • New indentation to ease readability ("svn diff -x -b" to ignore space when differencing)
  • Project (gen2211) is inherited from AA_job by post-processing jobs
    • will stop during config_check if Project is empty
  • Prepare easy switching (submitting post-processing here or there)
  • Homogenize CCRTs libIGCM_sys
  • Bugfixes
  • Cosmetics

First steps and still a long way to go.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libIGCM/libIGCM_post/libIGCM_post.ksh

    r457 r544  
    1616function IGCM_post_Configure 
    1717{ 
    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" 
     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 
    3574    fi 
    36     # 
    37     if ( [ X${TimeSeries} = Xtrue ] || [ X${TimeSeries2D} = Xtrue ] || [ X${TimeSeries3D} = Xtrue ] ) ; then 
    38         list_post="${list_post} TimeSeriesFrequency" 
     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 
    3981    fi 
    4082    # 
    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" 
     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" 
    8989} 
    9090 
    9191function IGCM_post_Submit 
    9292{ 
    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 
     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" 
    100131        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} 
    117132        # 
    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" 
     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 
    122140        # 
    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 
     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        else 
     182          IGCM_sys_RshPost <<-EOF 
    185183                    export DEBUG_debug=${DEBUG_debug} 
    186184                    export MODIPSL=${MODIPSL} 
     
    212210                    IGCM_sys_QsubPost create_ts 
    213211EOF 
    214                 fi 
     212        fi 
     213      fi 
     214      # 
     215      if [ X$( eval echo \${TimeSeriesChunck${Dimension}} ) = Xtrue ] ; then 
     216        # 
     217        IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} WITH CHUNCK ACTIVATED" 
     218        echo 
     219        # Need to Remember This One 
     220        SavedDateBegin=${DateBegin} 
     221        # Kind of task create_ts will perform 
     222        TsTask=Chunck${Dimension} 
     223        # Number of chunck jobs to configure and submit 
     224        eval NbJob=\${#CHUNCK${Dimension}_COMP[@]} 
     225        typeset i 
     226        i=0 
     227        until [ $i -ge $NbJob ]; do 
     228          CompToRead=$( eval echo \${CHUNCK${Dimension}_COMP[\${i}]} ) 
     229          FlagToRead=$( eval echo \${CHUNCK${Dimension}_FLAG[\${i}]} ) 
     230          NameToRead=$( eval echo \${CHUNCK${Dimension}_NAME[\${i}]} ) 
     231          ChunckSize=$( eval echo \${CHUNCK${Dimension}_SIZE[\${i}]} ) 
     232          # Chunck Length (mandatory in Year) 
     233          YearsChunckLength=$( echo ${ChunckSize} | sed -e "s/[yY]//" ) 
     234          # 
     235          IGCM_date_GetYearMonth ${DateBegin}     YearBegin MonthBegin 
     236          # 
     237          IGCM_date_GetYearMonth ${PeriodDateEnd} YearEnd   MonthEnd 
     238          # How many chunck in total since simulation began 
     239          NbYearsChunckLoop=$(( ( ${YearEnd} - ${YearBegin} + 1 ) / ${YearsChunckLength} )) 
     240          #  Tweak special case 
     241          [ $(( ( ${YearEnd} - ${YearBegin} + 1 ) % ${YearsChunckLength} )) = 0 ] && NbYearsChunckLoop=$(( ${NbYearsChunckLoop} - 1 )) 
     242          # Starting Year of the current chunck 
     243          ChunckTsYearBegin=$(( ${NbYearsChunckLoop} *  ${YearsChunckLength} + ${YearBegin} )) 
     244          # Starting date of the current chunck 
     245          ChunckTsDateBegin=${ChunckTsYearBegin}${MonthBegin}01 
     246          # 
     247          Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask}.${CompToRead}.${NameToRead} 
     248          # 
     249          if [ ${RebuildFrequency} = true ] ; then 
     250            # 
     251            if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 
     252#             if [ X${MASTER} = Xtitane ] ; then 
     253#               echo "IGCM_sys_RshPost <<-EOF"                       >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     254#             fi 
     255              echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     256              echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     257              echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     258              echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     259              echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     260              echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     261              echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     262              echo "export RebuildFrequency=${RebuildFrequency}    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     263              echo "export DateBegin=${ChunckTsDateBegin}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     264              echo "export PeriodDateEnd=${PeriodDateEnd}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     265              echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     266              echo "export CompletedFlag=${CompletedFlag}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     267              echo "export TsTask=${TsTask}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     268              echo "export CompToRead=${CompToRead}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     269              echo "export FlagToRead=${FlagToRead}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     270              echo "export RESOL_ATM=${RESOL_ATM}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     271              echo "export RESOL_OCE=${RESOL_OCE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     272              echo "export RESOL_ICE=${RESOL_ICE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     273              echo "export RESOL_MBG=${RESOL_MBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     274              echo "export RESOL_SRF=${RESOL_SRF}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     275              echo "export RESOL_SBG=${RESOL_SBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     276              echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     277              echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     278#             if [ X${MASTER} = Xtitane ] ; then 
     279#               echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     280#               echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     281#             fi 
     282              echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     283              echo "IGCM_debug_Verif_Exit_Post                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     284              echo "IGCM_sys_QsubPost create_ts                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     285#             if [ X${MASTER} = Xtitane ] ; then 
     286#               echo "EOF"                                           >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     287#             fi 
    215288            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 
     289          else 
     290            IGCM_sys_RshPost <<-EOF 
    295291                        export DEBUG_debug=${DEBUG_debug} 
    296292                        export MODIPSL=${MODIPSL} 
     
    322318                        IGCM_sys_QsubPost create_ts 
    323319EOF 
    324                         # 
    325                     fi 
    326                     # 
    327                     export DateBegin=${SavedDateBegin} 
    328                     # 
    329                     (( i=i+1 )) 
    330                     # 
    331                 done 
    332             fi 
    333             (( j=j+1 )) 
     320          # 
     321          fi 
     322          # 
     323          export DateBegin=${SavedDateBegin} 
     324          # 
     325          (( i=i+1 )) 
     326          # 
    334327        done 
    335     fi 
    336  
    337     #=============  SEASONAL POST-TREATMENT ============# 
    338     if [ ${SeasonalFrequency} = true ] ; then 
    339         # 
    340         IGCM_debug_Print 1 "SEASONNAL POST-TREATMENT" 
    341         echo 
     328      fi 
     329      (( j=j+1 )) 
     330    done 
     331  fi 
     332 
     333  #=============  SEASONAL POST-TREATMENT ============# 
     334  if [ ${SeasonalFrequency} = true ] ; then 
     335    # 
     336    IGCM_debug_Print 1 "SEASONNAL POST-TREATMENT" 
     337    echo 
     338    # 
     339    Script_Post_Output=create_se.${PeriodDateEnd} 
     340    # 
     341    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" 
     342 
     343    if [ ${RebuildFrequency} = true ] ; then 
     344      # 
     345      if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 
    342346        # 
    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 
     347#       if [ X${MASTER} = Xtitane ] ; then 
     348#         echo "IGCM_sys_RshPost <<-EOF"                     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     349#       fi 
     350        echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     351        echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     352        echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     353        echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     354        echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     355        echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     356        echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     357        echo "export RebuildFrequency=${RebuildFrequency}    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     358        echo "export DateBegin=${DateBegin}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     359        echo "export PeriodDateEnd=${PeriodDateEnd}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     360        echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     361        echo "export RESOL_ATM=${RESOL_ATM}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     362        echo "export RESOL_OCE=${RESOL_OCE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     363        echo "export RESOL_ICE=${RESOL_ICE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     364        echo "export RESOL_MBG=${RESOL_MBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     365        echo "export RESOL_SRF=${RESOL_SRF}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     366        echo "export RESOL_SBG=${RESOL_SBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     367        echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     368        echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     369#       if [ X${MASTER} = Xtitane ] ; then 
     370#         echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     371#         echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     372#       fi 
     373        echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     374        echo "IGCM_debug_Verif_Exit_Post                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     375        echo "IGCM_sys_QsubPost create_se                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     376#       if [ X${MASTER} = Xtitane ] ; then 
     377#         echo "EOF"                                         >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     378#       fi 
     379      fi 
     380    else 
     381      IGCM_sys_RshPost <<-EOF 
    388382            export DEBUG_debug=${DEBUG_debug} 
    389383            export MODIPSL=${MODIPSL} 
     
    411405            IGCM_sys_QsubPost create_se 
    412406EOF 
    413         # 
    414         fi 
    415407    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 
     408  fi 
     409 
     410  #============== REBUILD POST-TREATMENT =============# 
     411  if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && [ ! X${config_Post_RebuildFrequency} = XNONE ] ) ; then 
     412    # ----------------------------------------------------------------------------------- 
     413    # Function IGCM_FlushRebuild define in rebuild.ksh has not been closed yet. Do it now 
     414    # ----------------------------------------------------------------------------------- 
     415    if [ ${DRYRUN} -le 1 ] ; then 
     416      echo "IGCM_debug_PopStack \"IGCM_FlushRebuild\" " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     417      echo "}                                         " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    431418    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} 
     419    if [ ${config_Post_RebuildFromArchive} = true ] ; then 
     420      IGCM_sys_Put_Dir REBUILD_${PeriodDateBegin} ${REBUILD_DIR} 
     421    else 
     422      IGCM_sys_Mv      REBUILD_${PeriodDateBegin} ${REBUILD_DIR} 
     423    fi 
     424  fi 
     425  # 
     426  if [ ${RebuildFrequency} = true ] ; then 
     427    if ( [ ${config_Post_RebuildFromArchive} = true ] ) ; then 
     428      IGCM_debug_Print 1 "REBUILD POST-TREATMENT FROM ARCHIVE" 
     429      echo 
     430      # 
     431      script=rebuild_fromArchive 
     432    else 
     433      IGCM_debug_Print 1 "REBUILD POST-TREATMENT FROM WORKDIR" 
     434      echo 
     435      # 
     436      script=rebuild_fromWorkdir 
     437    fi 
     438    # 
     439    Script_Post_Output=${script}.${PeriodDateEnd} 
     440    # 
     441    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" 
     442    IGCM_sys_RshPost <<-EOF 
     443    export DEBUG_debug=${DEBUG_debug} 
     444    export MODIPSL=${MODIPSL} 
     445    export libIGCM_SX=${libIGCM} 
     446    export libIGCM=${libIGCM_POST} 
     447    export SUBMIT_DIR=${SUBMIT_DIR} 
     448    export REBUILD_DIR=${REBUILD_DIR} 
     449    export POST_DIR=${POST_DIR} 
     450    export MASTER=${MASTER} 
     451    export RebuildFromArchive=${config_Post_RebuildFromArchive} 
     452    export DateBegin=${DateBegin} 
     453    export PeriodDateBegin=${PeriodDateBegin} 
     454    export PeriodDateEnd=${PeriodDateEnd} 
     455    export NbRebuildDir=${NbRebuildDir} 
     456    export StandAlone=false 
     457    export RESOL_ATM=${RESOL_ATM} 
     458    export RESOL_OCE=${RESOL_OCE} 
     459    export RESOL_ICE=${RESOL_ICE} 
     460    export RESOL_MBG=${RESOL_MBG} 
     461    export RESOL_SRF=${RESOL_SRF} 
     462    export RESOL_SBG=${RESOL_SBG} 
     463    export listVarEnv=${listVarEnv} 
     464    export Script_Post_Output=${Script_Post_Output} 
     465    . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh 
     466    . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh 
     467    IGCM_sys_MkdirWork ${POST_DIR} 
     468    IGCM_debug_Verif_Exit_Post 
     469    IGCM_sys_QsubPost ${script} 
    477470EOF 
    478  
    479     fi 
    480  
    481     IGCM_debug_PopStack "IGCM_post_Submit" 
     471  fi 
     472 
     473  IGCM_debug_PopStack "IGCM_post_Submit" 
    482474} 
    483475 
     
    485477function IGCM_post_CheckModuloFrequency 
    486478{ 
    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" 
     479  IGCM_debug_PushStack "IGCM_post_CheckModuloFrequency" $* 
     480 
     481  # Used by IGCM_config_Check 
     482  # from 2 libIGCM compatible frequency (*Y, *M, *D, *y, *m, *d) 
     483  # Issue an exit instruction IGCM_debug_Exit if there modulo is not zero 
     484  # Input parameter are the name of the variable, not the frequency value itself 
     485  # example 
     486  # IGCM_post_ModuloFrequency config_Post_RebuildFrequency config_UserChoices_PeriodLength 
     487 
     488  typeset MasterName SlaveName MasterFrequency SlaveFrequency PeriodMasterYear PeriodMasterMonth PeriodMasterDay PeriodSlaveYear PeriodSlaveMonth PeriodSlaveDay 
     489 
     490  # Get the name of the variable 
     491  MasterName=$1 
     492  SlaveName=$2 
     493  # Get the value the above name points to 
     494  MasterFrequency=$( eval echo \${${1}} ) 
     495  SlaveFrequency=$( eval echo \${${2}} ) 
     496 
     497  IGCM_debug_Print 2 "IGCM_post_CheckModuloFrequency : Master=${MasterFrequency} Slave=${SlaveFrequency}" 
     498 
     499  case ${MasterFrequency} in 
     500  *y|*Y) 
     501    PeriodMasterYear=$( echo ${MasterFrequency} | sed -e "s/[yY]//" ) 
     502    case ${SlaveFrequency} in 
     503    *Y|*y) 
     504      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" ) 
     505      if ( [ ${PeriodSlaveYear} -gt ${PeriodMasterYear} ] || \ 
     506        [ $(( ${PeriodMasterYear} % ${PeriodSlaveYear} )) -ne 0 ] );  then 
     507        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     508        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 
     509        IGCM_debug_Exit "Check your frequency" 
     510      fi ;; 
     511    *M|*m) 
     512      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" ) 
     513      if ( [ ${PeriodSlaveMonth} -gt $(( ${PeriodMasterYear} * 12 )) ] || \ 
     514        [ $(( ( ${PeriodMasterYear} * 12 ) % ${PeriodSlaveMonth} )) -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    *D|*d) 
     520      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" ) 
     521      NbDays=$( IGCM_date_DaysInYear ${year} ) 
     522      if [ ${config_UserChoices_CalendarType} = 360d ] || [ ${config_UserChoices_CalendarType} = noleap ] ; then 
     523        if ( [ ${PeriodSlaveDay} -gt $(( ${PeriodMasterYear} * ${NbDays} )) ] || \ 
     524          [ $(( ( ${PeriodMasterYear} * ${NbDays} ) % ${PeriodSlaveDay} )) -ne 0 ] ; ) then 
     525          IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     526          IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 
     527          IGCM_debug_Exit "Check your frequency" 
     528        fi 
     529      else 
     530        IGCM_debug_Print 1 "For ${MasterName} with leap calendar:" 
     531        IGCM_debug_Print 1 "We have a daily ${SlaveName} frequency and ${MasterName}=${MasterFrequency}" 
     532        IGCM_debug_Print 1 "No post-treatment. Case not properly handle at this moment by libIGCM. Sorry" 
     533        IGCM_debug_Exit    "Check your frequency ${MasterName} and choose a daily frequency for this one too." 
     534      fi ;; 
     535    esac ;; 
     536  *M|*m) 
     537    PeriodMasterMonth=$( echo ${MasterFrequency} | sed -e "s/[mM]//" ) 
     538    case ${SlaveFrequency} in                
     539    *Y|*y) 
     540      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" ) 
     541      if ( [ ${PeriodMasterMonth} -gt $(( ${PeriodSlaveYear} * 12 )) ] || \ 
     542        [ $(( ${PeriodMasterMonth} % ( ${PeriodSlaveYear} * 12 ) )) -ne 0 ] ) ; then 
     543        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     544        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 
     545        IGCM_debug_Exit "Check your frequency" 
     546      fi ;; 
     547    *M|*m) 
     548      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" ) 
     549      if ( [ ${PeriodSlaveMonth} -gt ${PeriodMasterMonth} ] || \ 
     550        [ $(( ${PeriodMasterMonth} % ${PeriodSlaveMonth} )) -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    *D|*d) 
     556      IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     557      IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 
     558      IGCM_debug_Exit "Check your frequency" ;; 
     559    esac ;; 
     560  *D|*d) 
     561    PeriodMasterDay=$( echo ${MasterFrequency} | sed -e "s/[dD]//" ) 
     562    case ${SlaveFrequency} in 
     563    *Y|*y) 
     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    *M|*m) 
     568      IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     569      IGCM_debug_Print 1 "${MasterName} frequency ${MasterFrequency}" 
     570      IGCM_debug_Exit "Check your frequency" ;; 
     571    *D|*d) 
     572      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" ) 
     573      if ( [ ${PeriodSlaveDay} -gt ${PeriodMasterDay} ] || \ 
     574        [ $(( ${PeriodMasterDay} % ${PeriodSlaveDay} )) -ne 0 ] ) ;  then 
     575        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     576        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 
     577        IGCM_debug_Exit "Check your frequency" 
     578      fi ;; 
     579    esac ;; 
     580  NONE|none)  
     581    ;; 
     582  *) 
     583    IGCM_debug_Print 1 "KeyWord ${MasterFrequency} not allowed for ${MasterName} in config.card" 
     584    IGCM_debug_Exit "Check your ${MasterName} in config.card" ;; 
     585  esac 
     586 
     587  IGCM_debug_PopStack "IGCM_post_CheckModuloFrequency" 
    596588} 
    597589 
     
    599591function IGCM_post_ModuloRuntimeFrequency 
    600592{ 
    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" 
     593  IGCM_debug_PushStack "IGCM_post_ModuloRuntimeFrequency" $* 
     594 
     595  # Used by IGCM_post_Configure 
     596  # - from libIGCM (config_UserChoices_PeriodLength frequency * CumulPeriod) and  
     597  # - post-processing compatible frequency (*Y, *M, *D, *y, *m, *d) 
     598  # --> turn on post-processing submission when their modulo is zero 
     599  # Input parameter are the name of the variable, not the frequency value itself 
     600  # example 
     601  # IGCM_post_ModuloRuntimeFrequency config_Post_SeasonalFrequency config_UserChoices_PeriodLength 
     602 
     603  typeset MasterName SlaveName MasterFrequency SlaveFrequency PeriodMasterYear PeriodMasterMonth PeriodMasterDay PeriodSlaveYear PeriodSlaveMonth PeriodSlaveDay 
     604 
     605  # Get the name of the variable 
     606  MasterName=$1 
     607  SlaveName=$2 
     608   
     609  # Get the value the above name points to 
     610  eval MasterFrequency=\${${1}} 
     611  eval SlaveFrequency=\${${2}} 
     612 
     613  echo 
     614  IGCM_debug_Print 2 "IGCM_post_ModuloRuntimeFrequency : Master=${MasterFrequency} Slave=${SlaveFrequency} CumulPeriod=${CumulPeriod}" 
     615 
     616  case ${MasterFrequency} in 
     617  *y|*Y) 
     618    PeriodMasterYear=$( echo ${MasterFrequency} | sed -e "s/[yY]//" ) 
     619    case ${SlaveFrequency} in 
     620    *Y|*y) 
     621      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" ) 
     622      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveYear} - ${PeriodOffset} ) % ${PeriodMasterYear} )) -eq 0 ] ;  then 
     623        if [ $(( ${CumulPeriod} * ${PeriodSlaveYear} - ${PeriodOffset} )) -ne 0 ] ; then 
     624          eval ${post_freq}=true ; POST=true 
     625          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterYear} / ${PeriodSlaveYear} )) 
     626        fi 
     627      fi;; 
     628    *M|*m) 
     629      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" ) 
     630      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} * 12 ) % ( ${PeriodMasterYear} * 12 ) )) -eq 0 ] ; then 
     631        if [ $(( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} * 12 )) -ne 0 ] ; then 
     632          eval ${post_freq}=true ; POST=true 
     633          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ( 12 * ${PeriodMasterYear} ) / ${PeriodSlaveMonth} )) 
     634        fi 
     635      fi;; 
     636    *D|*d) 
     637      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" ) 
     638      NbDays=$( IGCM_date_DaysInYear ${year} ) 
     639      if [ $(( ( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodSlaveDay} ) ) % ( ${NbDays} * ${PeriodMasterYear} / ${PeriodSlaveDay} ) )) -eq 0 ] ; then 
     640        if [ $(( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodSlaveDay} ) )) -ne 0 ] ; then 
     641          eval ${post_freq}=true ; POST=true 
     642          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ( ${NbDays} * ${PeriodMasterYear} ) / ${PeriodSlaveDay} )) 
     643        fi 
     644      fi;; 
     645    esac ;; 
     646  *M|*m) 
     647    PeriodMasterMonth=$( echo ${MasterFrequency} | sed -e "s/[mM]//" ) 
     648    case ${SlaveFrequency} in 
     649    *Y|*y) 
     650      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" ) 
     651      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveYear} * 12 - ${PeriodOffset} ) % ( ${PeriodMasterMonth} ) )) -eq 0 ] ; then 
     652        if [ $(( ${CumulPeriod} * ${PeriodSlaveYear} * 12 - ${PeriodOffset} )) -ne 0 ] ; then 
     653          eval ${post_freq}=true ; POST=true 
     654          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterMonth} / ( 12 * ${PeriodSlaveYear} ) )) 
     655        fi 
     656      fi;; 
     657    *M|*m) 
     658      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" ) 
     659      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} ) % ${PeriodMasterMonth} )) -eq 0 ] ;  then 
     660        if [ $(( ${CumulPeriod} * ${PeriodSlaveMonth} -  ${PeriodOffset} )) -ne 0 ] ; then  
     661          eval ${post_freq}=true ; POST=true 
     662          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterMonth} / ${PeriodSlaveMonth} )) 
     663        fi 
     664      fi;; 
     665    *D|*d) 
     666      IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with" 
     667      IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;; 
     668    esac ;; 
     669  *D|*d) 
     670    PeriodMasterDay=$( echo ${MasterFrequency} | sed -e "s/[dD]//" ) 
     671    case ${SlaveFrequency} in 
     672    *Y|*y) 
     673      IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with" 
     674      IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;; 
     675    *M|*m) 
     676      IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with" 
     677      IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;; 
     678    *D|*d) 
     679      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" ) 
     680      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveDay} - ${PeriodOffset} ) % ${PeriodMasterDay} )) -eq 0 ] ;  then 
     681        if [ $(( ${CumulPeriod} * ${PeriodSlaveDay} - ${PeriodOffset} )) -ne 0 ] ; then 
     682          eval ${post_freq}=true ; POST=true 
     683          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterDay} / ${PeriodSlaveDay} )) 
     684        fi 
     685      fi;; 
     686    esac ;; 
     687  NONE|none) 
     688    ;; 
     689  *) 
     690    IGCM_debug_Print 1 "KeyWord not allowed for ${post_freq} in config.card" 
     691    ;; 
     692  esac 
     693 
     694  IGCM_debug_PopStack "IGCM_post_ModuloRuntimeFrequency" 
    703695} 
Note: See TracChangeset for help on using the changeset viewer.