Ignore:
Timestamp:
03/07/12 10:39:55 (12 years ago)
Author:
mafoipsl
Message:

First try to merge libIGCM_MPI_OpenMP branch with libIGCM trunk revision 569. Tested on vargas with PackFrequency?=NONE included into config.card.

Location:
branches/libIGCM_MPI_OpenMP
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/libIGCM_MPI_OpenMP

  • branches/libIGCM_MPI_OpenMP/libIGCM_post/libIGCM_post.ksh

    r457 r571  
    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  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 
    3578    fi 
    36     # 
    37     if ( [ X${TimeSeries} = Xtrue ] || [ X${TimeSeries2D} = Xtrue ] || [ X${TimeSeries3D} = Xtrue ] ) ; then 
    38         list_post="${list_post} TimeSeriesFrequency" 
     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 
    3985    fi 
    4086    # 
    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" 
     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" 
    8993} 
    9094 
    9195function IGCM_post_Submit 
    9296{ 
    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 
     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  # trick for IDRIS 
     104  POST_DIR=$( echo ${R_BUF_KSH} | sed -e "s/workgpfs/workdir/" ) 
     105 
     106  if [ ${POST} = true ]; then 
     107    echo 
     108    IGCM_debug_Print 1 "IGCM_post_Submit" 
     109    echo 
     110    IGCM_debug_Print 2 "POST_DIR = ${POST_DIR}" 
     111  fi 
     112 
     113  #============ TIME SERIES POST-PROCESSING ===========# 
     114  if [ ${TimeSeriesFrequency} = true ] ; then 
     115 
     116    IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ACTIVATED" 
     117    echo 
     118 
     119 
     120 
     121    # Get information from last execution 
     122    IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted 
     123    CompletedFlag=${run_PostProcessing_TimeSeriesCompleted} 
     124    # 
     125 
     126 
     127 
     128    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" 
     129    # 
     130    jLoop=${#ListDimension[*]} 
     131    j=0 
     132    until [ $j -ge ${jLoop} ]; do 
     133      Dimension=${ListDimension[${j}]} 
     134      # 
     135      if [ X$( eval echo \${TimeSeries${Dimension}} ) = Xtrue ] ; then 
     136        # 
     137        IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} ACTIVATED" 
    100138        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} 
    117139        # 
    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" 
     140        if [ X${Dimension} = X ] ; then 
     141          TsTask="empty" 
     142          Script_Post_Output=create_ts.${PeriodDateEnd} 
     143        else 
     144          TsTask=${Dimension} 
     145          Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask} 
     146        fi 
    122147        # 
    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 
     148        if [ ${RebuildFrequency} = true ] ; then 
     149          # 
     150          if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 
     151#           if [ X${MASTER} = Xtitane ] ; then 
     152#             echo "IGCM_sys_RshPost <<-EOF"                       >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     153#           fi 
     154            echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     155            echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     156            echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     157            echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     158            echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     159            echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     160            echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     161            echo "export RebuildFrequency=${RebuildFrequency}    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     162            echo "export DateBegin=${DateBegin}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     163            echo "export PeriodDateEnd=${PeriodDateEnd}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     164            echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     165            echo "export CompletedFlag=${CompletedFlag}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     166            echo "export TsTask=${TsTask}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     167            echo "unset  CompToRead                              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     168            echo "unset  FlagToRead                              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     169            echo "export RESOL_ATM=${RESOL_ATM}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     170            echo "export RESOL_OCE=${RESOL_OCE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     171            echo "export RESOL_ICE=${RESOL_ICE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     172            echo "export RESOL_MBG=${RESOL_MBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     173            echo "export RESOL_SRF=${RESOL_SRF}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     174            echo "export RESOL_SBG=${RESOL_SBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     175            echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     176            echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     177#           if [ X${MASTER} = Xtitane ] ; then 
     178#             echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     179#             echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     180#           fi 
     181            echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     182            echo "IGCM_debug_Verif_Exit_Post                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     183            echo "IGCM_sys_QsubPost create_ts                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     184#           if [ X${MASTER} = Xtitane ] ; then 
     185#             echo "EOF"                                           >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     186#           fi 
     187          fi 
     188        else 
     189          IGCM_sys_RshPost <<-EOF 
    185190                    export DEBUG_debug=${DEBUG_debug} 
    186191                    export MODIPSL=${MODIPSL} 
     
    212217                    IGCM_sys_QsubPost create_ts 
    213218EOF 
    214                 fi 
     219        fi 
     220      fi 
     221      # 
     222      if [ X$( eval echo \${TimeSeriesChunck${Dimension}} ) = Xtrue ] ; then 
     223        # 
     224        IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} WITH CHUNCK ACTIVATED" 
     225        echo 
     226        # Need to Remember This One 
     227        SavedDateBegin=${DateBegin} 
     228        # Kind of task create_ts will perform 
     229        TsTask=Chunck${Dimension} 
     230        # Number of chunck jobs to configure and submit 
     231        eval NbJob=\${#CHUNCK${Dimension}_COMP[@]} 
     232        typeset i 
     233        i=0 
     234        until [ $i -ge $NbJob ]; do 
     235          CompToRead=$( eval echo \${CHUNCK${Dimension}_COMP[\${i}]} ) 
     236          FlagToRead=$( eval echo \${CHUNCK${Dimension}_FLAG[\${i}]} ) 
     237          NameToRead=$( eval echo \${CHUNCK${Dimension}_NAME[\${i}]} ) 
     238          ChunckSize=$( eval echo \${CHUNCK${Dimension}_SIZE[\${i}]} ) 
     239          # Chunck Length (mandatory in Year) 
     240          YearsChunckLength=$( echo ${ChunckSize} | sed -e "s/[yY]//" ) 
     241          # 
     242          IGCM_date_GetYearMonth ${DateBegin}     YearBegin MonthBegin 
     243          # 
     244          IGCM_date_GetYearMonth ${PeriodDateEnd} YearEnd   MonthEnd 
     245          # How many chunck in total since simulation began 
     246          NbYearsChunckLoop=$(( ( ${YearEnd} - ${YearBegin} + 1 ) / ${YearsChunckLength} )) 
     247          #  Tweak special case 
     248          [ $(( ( ${YearEnd} - ${YearBegin} + 1 ) % ${YearsChunckLength} )) = 0 ] && NbYearsChunckLoop=$(( ${NbYearsChunckLoop} - 1 )) 
     249          # Starting Year of the current chunck 
     250          ChunckTsYearBegin=$(( ${NbYearsChunckLoop} *  ${YearsChunckLength} + ${YearBegin} )) 
     251          # Starting date of the current chunck 
     252          ChunckTsDateBegin=${ChunckTsYearBegin}${MonthBegin}01 
     253          # 
     254          Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask}.${CompToRead}.${NameToRead} 
     255          # 
     256          if [ ${RebuildFrequency} = true ] ; then 
     257            # 
     258            if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 
     259#             if [ X${MASTER} = Xtitane ] ; then 
     260#               echo "IGCM_sys_RshPost <<-EOF"                       >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     261#             fi 
     262              echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     263              echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     264              echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     265              echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     266              echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     267              echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     268              echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     269              echo "export RebuildFrequency=${RebuildFrequency}    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     270              echo "export DateBegin=${ChunckTsDateBegin}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     271              echo "export PeriodDateEnd=${PeriodDateEnd}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     272              echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     273              echo "export CompletedFlag=${CompletedFlag}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     274              echo "export TsTask=${TsTask}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     275              echo "export CompToRead=${CompToRead}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     276              echo "export FlagToRead=${FlagToRead}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     277              echo "export RESOL_ATM=${RESOL_ATM}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     278              echo "export RESOL_OCE=${RESOL_OCE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     279              echo "export RESOL_ICE=${RESOL_ICE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     280              echo "export RESOL_MBG=${RESOL_MBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     281              echo "export RESOL_SRF=${RESOL_SRF}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     282              echo "export RESOL_SBG=${RESOL_SBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     283              echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     284              echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     285#             if [ X${MASTER} = Xtitane ] ; then 
     286#               echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     287#               echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     288#             fi 
     289              echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     290              echo "IGCM_debug_Verif_Exit_Post                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     291              echo "IGCM_sys_QsubPost create_ts                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     292#             if [ X${MASTER} = Xtitane ] ; then 
     293#               echo "EOF"                                           >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     294#             fi 
    215295            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 
     296          else 
     297            IGCM_sys_RshPost <<-EOF 
    295298                        export DEBUG_debug=${DEBUG_debug} 
    296299                        export MODIPSL=${MODIPSL} 
     
    322325                        IGCM_sys_QsubPost create_ts 
    323326EOF 
    324                         # 
    325                     fi 
    326                     # 
    327                     export DateBegin=${SavedDateBegin} 
    328                     # 
    329                     (( i=i+1 )) 
    330                     # 
    331                 done 
    332             fi 
    333             (( j=j+1 )) 
     327          # 
     328          fi 
     329          # 
     330          export DateBegin=${SavedDateBegin} 
     331          # 
     332          (( i=i+1 )) 
     333          # 
    334334        done 
    335     fi 
    336  
    337     #=============  SEASONAL POST-TREATMENT ============# 
    338     if [ ${SeasonalFrequency} = true ] ; then 
    339         # 
    340         IGCM_debug_Print 1 "SEASONNAL POST-TREATMENT" 
    341         echo 
     335      fi 
     336      (( j=j+1 )) 
     337    done 
     338  fi 
     339 
     340  #=============  SEASONAL POST-PROCESSING ============# 
     341  if [ ${SeasonalFrequency} = true ] ; then 
     342    # 
     343    IGCM_debug_Print 1 "SEASONNAL POST-PROCESSING" 
     344    echo 
     345    # 
     346    Script_Post_Output=create_se.${PeriodDateEnd} 
     347    # 
     348    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" 
     349 
     350    if [ ${RebuildFrequency} = true ] ; then 
     351      # 
     352      if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 
    342353        # 
    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 
     354#       if [ X${MASTER} = Xtitane ] ; then 
     355#         echo "IGCM_sys_RshPost <<-EOF"                     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     356#       fi 
     357        echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     358        echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     359        echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     360        echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     361        echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     362        echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     363        echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     364        echo "export RebuildFrequency=${RebuildFrequency}    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     365        echo "export DateBegin=${DateBegin}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     366        echo "export PeriodDateEnd=${PeriodDateEnd}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     367        echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     368        echo "export RESOL_ATM=${RESOL_ATM}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     369        echo "export RESOL_OCE=${RESOL_OCE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     370        echo "export RESOL_ICE=${RESOL_ICE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     371        echo "export RESOL_MBG=${RESOL_MBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     372        echo "export RESOL_SRF=${RESOL_SRF}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     373        echo "export RESOL_SBG=${RESOL_SBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     374        echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     375        echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     376#       if [ X${MASTER} = Xtitane ] ; then 
     377#         echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     378#         echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     379#       fi 
     380        echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     381        echo "IGCM_debug_Verif_Exit_Post                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     382        echo "IGCM_sys_QsubPost create_se                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     383#       if [ X${MASTER} = Xtitane ] ; then 
     384#         echo "EOF"                                         >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     385#       fi 
     386      fi 
     387    else 
     388      IGCM_sys_RshPost <<-EOF 
    388389            export DEBUG_debug=${DEBUG_debug} 
    389390            export MODIPSL=${MODIPSL} 
     
    411412            IGCM_sys_QsubPost create_se 
    412413EOF 
    413         # 
    414         fi 
    415414    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 
     415  fi 
     416 
     417  #============== REBUILD POST-PROCESSING =============# 
     418  if [ X${AsynchronousRebuild} = Xtrue ] ; 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 
    431425    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} 
     426    if [ ${config_Post_RebuildFromArchive} = true ] ; then 
     427      IGCM_sys_Put_Dir REBUILD_${PeriodDateBegin} ${REBUILD_DIR} 
     428    else 
     429      IGCM_sys_Mv      REBUILD_${PeriodDateBegin} ${REBUILD_DIR} 
     430    fi 
     431  fi 
     432  # 
     433  if [ ${RebuildFrequency} = true ] ; then 
     434    if ( [ ${config_Post_RebuildFromArchive} = true ] ) ; then 
     435      IGCM_debug_Print 1 "REBUILD POST-PROCESSING FROM ARCHIVE" 
     436      echo 
     437      # 
     438      script=rebuild_fromArchive 
     439    else 
     440      IGCM_debug_Print 1 "REBUILD POST-PROCESSING 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} 
    477477EOF 
    478  
    479     fi 
    480  
    481     IGCM_debug_PopStack "IGCM_post_Submit" 
     478  fi 
     479 
     480  #============== PACK PROCESSING FOR RESTART AND DEBUG FILES =============# 
     481  if [ ${PackFrequency} = true ] ; then 
     482    IGCM_debug_Print 1 "PACK POST-PROCESSING" 
     483    echo 
     484    ## Need to Remember This One 
     485    SavedDateBegin=${DateBegin} 
     486    ## Need to Remember This One 
     487    SavedDateEnd=${DateEnd} 
     488    # 
     489    DaysTemp=$(( $( IGCM_date_DaysInPreviousPeriod ${PeriodDateEnd} ${config_Post_PackFrequency} end ) - 1 )) 
     490    # 
     491    PackDateBegin=$( IGCM_date_AddDaysToGregorianDate ${PeriodDateEnd} -${DaysTemp} ) 
     492    # 
     493    script=pack_debug 
     494    # 
     495    Script_Post_Output=${script}.${PeriodDateEnd} 
     496    # 
     497    listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,MASTER,DateBegin,DateEnd,PeriodPack,StandAlone" 
     498    IGCM_sys_RshPost <<-EOF 
     499    export DEBUG_debug=${DEBUG_debug} 
     500    export MODIPSL=${MODIPSL} 
     501    export libIGCM_SX=${libIGCM} 
     502    export libIGCM=${libIGCM_POST} 
     503    export SUBMIT_DIR=${SUBMIT_DIR} 
     504    export POST_DIR=${POST_DIR} 
     505    export MASTER=${MASTER} 
     506    export DateBegin=${PackDateBegin} 
     507    export DateEnd=${PeriodDateEnd} 
     508    export PeriodPack=${config_Post_PackFrequency} 
     509    export StandAlone=false 
     510    export listVarEnv=${listVarEnv} 
     511    export Script_Post_Output=${Script_Post_Output} 
     512    . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh 
     513    . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh 
     514    IGCM_sys_MkdirWork ${POST_DIR} 
     515    IGCM_debug_Verif_Exit_Post 
     516    IGCM_sys_QsubPost ${script} 
     517EOF 
     518    # 
     519    script=pack_restart 
     520    # 
     521    Script_Post_Output=${script}.${PeriodDateEnd} 
     522    # 
     523    IGCM_sys_RshPost <<-EOF 
     524    export DEBUG_debug=${DEBUG_debug} 
     525    export MODIPSL=${MODIPSL} 
     526    export libIGCM_SX=${libIGCM} 
     527    export libIGCM=${libIGCM_POST} 
     528    export SUBMIT_DIR=${SUBMIT_DIR} 
     529    export POST_DIR=${POST_DIR} 
     530    export MASTER=${MASTER} 
     531    export DateBegin=${PackDateBegin} 
     532    export DateEnd=${PeriodDateEnd} 
     533    export PeriodPack=${config_Post_PackFrequency} 
     534    export StandAlone=false 
     535    export listVarEnv=${listVarEnv} 
     536    export Script_Post_Output=${Script_Post_Output} 
     537    . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh 
     538    . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh 
     539    IGCM_sys_MkdirWork ${POST_DIR} 
     540    IGCM_debug_Verif_Exit_Post 
     541    IGCM_sys_QsubPost ${script} 
     542EOF 
     543 
     544    export DateBegin=${SavedDateBegin} 
     545    export DateEnd=${SavedDateEnd} 
     546  fi 
     547  IGCM_debug_PopStack "IGCM_post_Submit" 
    482548} 
    483549 
     
    485551function IGCM_post_CheckModuloFrequency 
    486552{ 
    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" 
     553  IGCM_debug_PushStack "IGCM_post_CheckModuloFrequency" $* 
     554 
     555  # Used by IGCM_config_Check 
     556  # from 2 libIGCM compatible frequency (*Y, *M, *D, *y, *m, *d) 
     557  # Issue an exit instruction IGCM_debug_Exit if there modulo is not zero 
     558  # Input parameter are the name of the variable, not the frequency value itself 
     559  # example 
     560  # IGCM_post_ModuloFrequency config_Post_RebuildFrequency config_UserChoices_PeriodLength 
     561 
     562  typeset MasterName SlaveName MasterFrequency SlaveFrequency PeriodMasterYear PeriodMasterMonth PeriodMasterDay PeriodSlaveYear PeriodSlaveMonth PeriodSlaveDay 
     563 
     564  # Get the name of the variable 
     565  MasterName=$1 
     566  SlaveName=$2 
     567  # Get the value the above name points to 
     568  MasterFrequency=$( eval echo \${${1}} ) 
     569  SlaveFrequency=$( eval echo \${${2}} ) 
     570 
     571  IGCM_debug_Print 2 "IGCM_post_CheckModuloFrequency : Master=${MasterFrequency} Slave=${SlaveFrequency}" 
     572 
     573  case ${MasterFrequency} in 
     574  *y|*Y) 
     575    PeriodMasterYear=$( echo ${MasterFrequency} | sed -e "s/[yY]//" ) 
     576    case ${SlaveFrequency} in 
     577    *Y|*y) 
     578      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" ) 
     579      if ( [ ${PeriodSlaveYear} -gt ${PeriodMasterYear} ] || \ 
     580        [ $(( ${PeriodMasterYear} % ${PeriodSlaveYear} )) -ne 0 ] );  then 
     581        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     582        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 
     583        IGCM_debug_Exit "Check your frequency" 
     584      fi ;; 
     585    *M|*m) 
     586      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" ) 
     587      if ( [ ${PeriodSlaveMonth} -gt $(( ${PeriodMasterYear} * 12 )) ] || \ 
     588        [ $(( ( ${PeriodMasterYear} * 12 ) % ${PeriodSlaveMonth} )) -ne 0 ] ) ; then 
     589        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     590        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 
     591        IGCM_debug_Exit "Check your frequency" 
     592      fi ;; 
     593    *D|*d) 
     594      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" ) 
     595      NbDays=$( IGCM_date_DaysInYear ${year} ) 
     596      if [ ${config_UserChoices_CalendarType} = 360d ] || [ ${config_UserChoices_CalendarType} = noleap ] ; then 
     597        if ( [ ${PeriodSlaveDay} -gt $(( ${PeriodMasterYear} * ${NbDays} )) ] || \ 
     598          [ $(( ( ${PeriodMasterYear} * ${NbDays} ) % ${PeriodSlaveDay} )) -ne 0 ] ; ) then 
     599          IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     600          IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 
     601          IGCM_debug_Exit "Check your frequency" 
     602        fi 
     603      else 
     604        IGCM_debug_Print 1 "For ${MasterName} with leap calendar:" 
     605        IGCM_debug_Print 1 "We have a daily ${SlaveName} frequency and ${MasterName}=${MasterFrequency}" 
     606        IGCM_debug_Print 1 "No post-treatment. Case not properly handle at this moment by libIGCM. Sorry" 
     607        IGCM_debug_Exit    "Check your frequency ${MasterName} and choose a daily frequency for this one too." 
     608      fi ;; 
     609    esac ;; 
     610  *M|*m) 
     611    PeriodMasterMonth=$( echo ${MasterFrequency} | sed -e "s/[mM]//" ) 
     612    case ${SlaveFrequency} in                
     613    *Y|*y) 
     614      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" ) 
     615      if ( [ ${PeriodMasterMonth} -gt $(( ${PeriodSlaveYear} * 12 )) ] || \ 
     616        [ $(( ${PeriodMasterMonth} % ( ${PeriodSlaveYear} * 12 ) )) -ne 0 ] ) ; then 
     617        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     618        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 
     619        IGCM_debug_Exit "Check your frequency" 
     620      fi ;; 
     621    *M|*m) 
     622      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" ) 
     623      if ( [ ${PeriodSlaveMonth} -gt ${PeriodMasterMonth} ] || \ 
     624        [ $(( ${PeriodMasterMonth} % ${PeriodSlaveMonth} )) -ne 0 ] ) ;  then            
     625        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     626        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 
     627        IGCM_debug_Exit "Check your frequency" 
     628      fi ;; 
     629    *D|*d) 
     630      IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     631      IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 
     632      IGCM_debug_Exit "Check your frequency" ;; 
     633    esac ;; 
     634  *D|*d) 
     635    PeriodMasterDay=$( echo ${MasterFrequency} | sed -e "s/[dD]//" ) 
     636    case ${SlaveFrequency} in 
     637    *Y|*y) 
     638      IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     639      IGCM_debug_Print 1 "${MasterName} frequency ${MasterFrequency}" 
     640      IGCM_debug_Exit "Check your frequency" ;; 
     641    *M|*m) 
     642      IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     643      IGCM_debug_Print 1 "${MasterName} frequency ${MasterFrequency}" 
     644      IGCM_debug_Exit "Check your frequency" ;; 
     645    *D|*d) 
     646      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" ) 
     647      if ( [ ${PeriodSlaveDay} -gt ${PeriodMasterDay} ] || \ 
     648        [ $(( ${PeriodMasterDay} % ${PeriodSlaveDay} )) -ne 0 ] ) ;  then 
     649        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 
     650        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 
     651        IGCM_debug_Exit "Check your frequency" 
     652      fi ;; 
     653    esac ;; 
     654  NONE|none) 
     655    ;; 
     656  *) 
     657    IGCM_debug_Print 1 "KeyWord ${MasterFrequency} not allowed for ${MasterName} in config.card" 
     658    IGCM_debug_Exit "Check your ${MasterName} in config.card" ;; 
     659  esac 
     660 
     661  IGCM_debug_PopStack "IGCM_post_CheckModuloFrequency" 
    596662} 
    597663 
     
    599665function IGCM_post_ModuloRuntimeFrequency 
    600666{ 
    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" 
     667  IGCM_debug_PushStack "IGCM_post_ModuloRuntimeFrequency" $* 
     668 
     669  # Used by IGCM_post_Configure 
     670  # - from libIGCM (config_UserChoices_PeriodLength frequency * CumulPeriod) and  
     671  # - post-processing compatible frequency (*Y, *M, *D, *y, *m, *d) 
     672  # --> turn on post-processing submission when their modulo is zero 
     673  # Input parameter are the name of the variable, not the frequency value itself 
     674  # example 
     675  # IGCM_post_ModuloRuntimeFrequency config_Post_SeasonalFrequency config_UserChoices_PeriodLength 
     676 
     677  typeset MasterName SlaveName MasterFrequency SlaveFrequency PeriodMasterYear PeriodMasterMonth PeriodMasterDay PeriodSlaveYear PeriodSlaveMonth PeriodSlaveDay 
     678 
     679  # Get the name of the variable 
     680  MasterName=$1 
     681  SlaveName=$2 
     682   
     683  # Get the value the above name points to 
     684  eval MasterFrequency=\${${1}} 
     685  eval SlaveFrequency=\${${2}} 
     686 
     687  echo 
     688  IGCM_debug_Print 2 "IGCM_post_ModuloRuntimeFrequency : Master=${MasterFrequency} Slave=${SlaveFrequency} CumulPeriod=${CumulPeriod}" 
     689 
     690  case ${MasterFrequency} in 
     691  *y|*Y) 
     692    PeriodMasterYear=$( echo ${MasterFrequency} | sed -e "s/[yY]//" ) 
     693    case ${SlaveFrequency} in 
     694    *Y|*y) 
     695      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" ) 
     696      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveYear} - ${PeriodOffset} ) % ${PeriodMasterYear} )) -eq 0 ] ;  then 
     697        if [ $(( ${CumulPeriod} * ${PeriodSlaveYear} - ${PeriodOffset} )) -ne 0 ] ; then 
     698          eval ${post_freq}=true ; POST=true 
     699          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterYear} / ${PeriodSlaveYear} )) 
     700        fi 
     701      fi;; 
     702    *M|*m) 
     703      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" ) 
     704      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} * 12 ) % ( ${PeriodMasterYear} * 12 ) )) -eq 0 ] ; then 
     705        if [ $(( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} * 12 )) -ne 0 ] ; then 
     706          eval ${post_freq}=true ; POST=true 
     707          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ( 12 * ${PeriodMasterYear} ) / ${PeriodSlaveMonth} )) 
     708        fi 
     709      fi;; 
     710    *D|*d) 
     711      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" ) 
     712      NbDays=$( IGCM_date_DaysInYear ${year} ) 
     713      if [ $(( ( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodSlaveDay} ) ) % ( ${NbDays} * ${PeriodMasterYear} / ${PeriodSlaveDay} ) )) -eq 0 ] ; then 
     714        if [ $(( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodSlaveDay} ) )) -ne 0 ] ; then 
     715          eval ${post_freq}=true ; POST=true 
     716          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ( ${NbDays} * ${PeriodMasterYear} ) / ${PeriodSlaveDay} )) 
     717        fi 
     718      fi;; 
     719    esac ;; 
     720  *M|*m) 
     721    PeriodMasterMonth=$( echo ${MasterFrequency} | sed -e "s/[mM]//" ) 
     722    case ${SlaveFrequency} in 
     723    *Y|*y) 
     724      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" ) 
     725      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveYear} * 12 - ${PeriodOffset} ) % ( ${PeriodMasterMonth} ) )) -eq 0 ] ; then 
     726        if [ $(( ${CumulPeriod} * ${PeriodSlaveYear} * 12 - ${PeriodOffset} )) -ne 0 ] ; then 
     727          eval ${post_freq}=true ; POST=true 
     728          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterMonth} / ( 12 * ${PeriodSlaveYear} ) )) 
     729        fi 
     730      fi;; 
     731    *M|*m) 
     732      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" ) 
     733      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} ) % ${PeriodMasterMonth} )) -eq 0 ] ;  then 
     734        if [ $(( ${CumulPeriod} * ${PeriodSlaveMonth} -  ${PeriodOffset} )) -ne 0 ] ; then  
     735          eval ${post_freq}=true ; POST=true 
     736          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterMonth} / ${PeriodSlaveMonth} )) 
     737        fi 
     738      fi;; 
     739    *D|*d) 
     740      IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with" 
     741      IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;; 
     742    esac ;; 
     743  *D|*d) 
     744    PeriodMasterDay=$( echo ${MasterFrequency} | sed -e "s/[dD]//" ) 
     745    case ${SlaveFrequency} in 
     746    *Y|*y) 
     747      IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with" 
     748      IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;; 
     749    *M|*m) 
     750      IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with" 
     751      IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;; 
     752    *D|*d) 
     753      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" ) 
     754      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveDay} - ${PeriodOffset} ) % ${PeriodMasterDay} )) -eq 0 ] ;  then 
     755        if [ $(( ${CumulPeriod} * ${PeriodSlaveDay} - ${PeriodOffset} )) -ne 0 ] ; then 
     756          eval ${post_freq}=true ; POST=true 
     757          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterDay} / ${PeriodSlaveDay} )) 
     758        fi 
     759      fi;; 
     760    esac ;; 
     761  NONE|none) 
     762    ;; 
     763  *) 
     764    IGCM_debug_Print 1 "KeyWord not allowed for ${post_freq} in config.card" 
     765    ;; 
     766  esac 
     767 
     768  IGCM_debug_PopStack "IGCM_post_ModuloRuntimeFrequency" 
    703769} 
Note: See TracChangeset for help on using the changeset viewer.