Changeset 1375


Ignore:
Timestamp:
01/11/17 16:44:40 (7 years ago)
Author:
sdipsl
Message:
  • Populate the first bunch of modifications in libIGCM_v3.0_beta1 repo
Location:
tags/libIGCM_v3.0_beta1
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • tags/libIGCM_v3.0_beta1/libIGCM_comp/libIGCM_comp.ksh

    r1373 r1375  
    7979    eval IGCM_sys_MkdirArchive \${R_OUT_${comp}_O} 
    8080 
     81    eval R_OUT_${comp}_A=\${R_OUT_${comp}}/Analyse 
     82    eval IGCM_sys_MkdirArchive \${R_OUT_${comp}_A} 
     83 
    8184    eval R_OUT_${comp}_R=\${R_OUT_${comp}}/Restart 
    8285    [ ${config_Post_PackFrequency} = NONE ] && eval IGCM_sys_MkdirArchive \${R_OUT_${comp}_R} 
     
    8588    [ ${config_Post_PackFrequency} = NONE ] && eval IGCM_sys_MkdirArchive \${R_OUT_${comp}_D} 
    8689 
    87     eval R_OUT_${comp}_O_I=\${R_OUT_${comp}_O}/INS 
    8890    eval R_OUT_${comp}_O_H=\${R_OUT_${comp}_O}/HF 
    8991    eval R_OUT_${comp}_O_D=\${R_OUT_${comp}_O}/DA 
     
    9193    eval R_OUT_${comp}_O_Y=\${R_OUT_${comp}_O}/YE 
    9294 
     95    eval R_OUT_${comp}_A_H=\${R_OUT_${comp}_A}/TS_HF 
     96    eval R_OUT_${comp}_A_D=\${R_OUT_${comp}_A}/TS_DA 
     97    eval R_OUT_${comp}_A_M=\${R_OUT_${comp}_A}/TS_MO 
     98    eval R_OUT_${comp}_A_Y=\${R_OUT_${comp}_A}/TS_YE 
     99 
    93100    # Define BUFFERED Dirs 
    94101    if ( [ ! ${config_Post_PackFrequency} = NONE ] || [ X${config_UserChoices_SpaceName} = XTEST ] ) ; then 
     
    99106      eval IGCM_sys_Mkdir \${R_BUF_${comp}_O} 
    100107 
     108      eval R_BUF_${comp}_A=\${R_BUF_${comp}}/Analyse 
     109      eval IGCM_sys_Mkdir \${R_BUF_${comp}_A} 
     110 
    101111      eval R_BUF_${comp}_R=\${R_BUF_${comp}}/Restart 
    102112      eval IGCM_sys_Mkdir \${R_BUF_${comp}_R} 
     
    105115      eval IGCM_sys_Mkdir \${R_BUF_${comp}_D} 
    106116 
    107       eval R_BUF_${comp}_O_I=\${R_BUF_${comp}_O}/INS 
    108117      eval R_BUF_${comp}_O_H=\${R_BUF_${comp}_O}/HF 
    109118      eval R_BUF_${comp}_O_D=\${R_BUF_${comp}_O}/DA 
    110119      eval R_BUF_${comp}_O_M=\${R_BUF_${comp}_O}/MO 
    111120      eval R_BUF_${comp}_O_Y=\${R_BUF_${comp}_O}/YE 
     121 
     122      eval R_BUF_${comp}_A_H=\${R_BUF_${comp}_A}/TS_HF 
     123      eval R_BUF_${comp}_A_D=\${R_BUF_${comp}_A}/TS_DA 
     124      eval R_BUF_${comp}_A_M=\${R_BUF_${comp}_A}/TS_MO 
     125      eval R_BUF_${comp}_A_Y=\${R_BUF_${comp}_A}/TS_YE 
    112126    fi 
    113127 
     
    161175            IGCM_debug_Verif_Exit 
    162176          fi 
    163           # 
    164           # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default 
    165           # 
    166           # variable option allready typeset above 
    167           for option in $( eval echo \${${compname}_${flag_post}[*]} ) ; do 
    168             if [ ${option} = Seasonal ] ; then 
    169               FoundSeasonal=true 
    170               IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal 
    171             fi 
    172           done 
    173           # 
    174           if [ ! X${FoundSeasonal} = Xtrue ] ; then 
    175             eval ${compname}_${flag_post}_Seasonal=ON 
    176           fi 
    177           # 
     177 
     178          # Do have seasonal average enabled 
     179          IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal 
    178180          if [ $( eval echo \${${compname}_${flag_post}_Seasonal} ) = ON ] ; then 
    179181            Seasonal=true 
    180182          fi 
    181183 
    182           # Dimension = vide si vieille card. 
    183           IGCM_card_DefineArrayFromOption ${card} ${flag_post} TimeSeriesVars 
     184          # Read the Patches Option 
    184185          IGCM_card_DefineArrayFromOption ${card} ${flag_post} Patches 
    185           if [ X"$( eval echo \${${compname}_${flag_post}_TimeSeriesVars[*]} )" = X"Option not" ] ; then 
    186             # New TimeSeriesVar description, with 2D, 3D and associate ChunckJob. 
    187             ListDimension[0]=2D 
    188             ListDimension[1]=3D 
    189             TimeSeries=false 
    190             iLoop=${#ListDimension[*]} 
    191             j=0 
    192             until [ $j -ge ${iLoop} ]; do 
    193               Dimension=${ListDimension[${j}]} 
    194               IGCM_card_DefineArrayFromOption ${card} ${flag_post} TimeSeriesVars${Dimension} 
    195               IGCM_card_DefineVariableFromOption ${card} ${flag_post} ChunckJob${Dimension} 
    196               # 
    197               # Time series WITHOUT chunk 
    198               # 
    199               if [ ! $( eval echo \${${compname}_${flag_post}_TimeSeriesVars${Dimension}} ) = ${NULL_STR} ] ; then 
    200                 if [ $( eval echo \${${compname}_${flag_post}_ChunckJob${Dimension}} ) = NONE ] ; then 
    201                   IGCM_debug_Print 3 "${Dimension} time series activated for ${flag_post}" 
    202                   eval TimeSeries${Dimension}=true 
    203                 fi 
    204               fi 
    205               # 
    206               # Time series WITH chunk 
    207               # 
    208               if [ ! $( eval echo \${${compname}_${flag_post}_TimeSeriesVars${Dimension}} ) = ${NULL_STR} ] ; then 
    209                 chunck_size=$( eval echo \${${compname}_${flag_post}_ChunckJob${Dimension}} ) 
    210                 if [ ! ${chunck_size} = NONE ] &&  [ ! ${chunck_size} = OFF ] ; then 
    211                   IGCM_debug_Print 3 "${Dimension} time series activated with chunck for ${flag_post}" 
    212                   eval TimeSeriesChunck${Dimension}=true 
    213                   eval CHUNCK${Dimension}_COMP[\${#CHUNCK${Dimension}_COMP[*]}]=${comp} 
    214                   eval CHUNCK${Dimension}_FLAG[\${#CHUNCK${Dimension}_FLAG[*]}]=${i} 
    215                   eval CHUNCK${Dimension}_NAME[\${#CHUNCK${Dimension}_NAME[*]}]=${flag_post} 
    216                   eval CHUNCK${Dimension}_SIZE[\${#CHUNCK${Dimension}_SIZE[*]}]=${chunck_size} 
    217                 fi 
    218               fi 
    219               (( j=j+1 )) 
    220             done 
    221           else 
    222             ListDimension[0]="" 
    223             TimeSeries=true 
    224             TimeSeries2D=false 
    225             TimeSeries3D=false 
    226             TimeSeriesChunck2D=false 
    227             TimeSeriesChunck3D=false 
    228           fi 
    229186        fi 
    230187        (( i=i+3 )) 
     
    267224  fi 
    268225  if [ $( echo ${file} | grep "^file_def_" | wc -l ) = 1 ] ; then 
     226    eval FileDef[${#FileDef[@]}]=${file} > /dev/null 2>&1 
     227  fi 
     228  if [ $( echo ${file} | grep "^timeseries_def_" | wc -l ) = 1 ] ; then 
    269229    eval FileDef[${#FileDef[@]}]=${file} > /dev/null 2>&1 
    270230  fi 
     
    14001360      # Case to modify the variable itself 
    14011361      IGCM_debug_Print 1 "Now modify ${filein} for id=${keyid} by setting the variable=${value}" 
    1402       sed -e "s/\(<[^\"]*\"${keyid}\".*>\)\([^<]*\)\(<[^>]*\)/\1${value}\3/" ${filein} > ${filein}.tmp 
     1362      sed -e "s:\(<[^\"]*\"${keyid}\".*>\)\([^<]*\)\(<[^>]*\):\1${value}\3:" ${filein} > ${filein}.tmp 
    14031363    else 
    14041364      # Check if keyattrib is set on the same line as keyid 
     
    14061366        # Case to modify the attribute value 
    14071367        IGCM_debug_Print 1 "Now modify ${filein} for id=${keyid} by setting attribute to ${keyattrib}=${value}" 
    1408         sed -e "/id=\"${keyid}\"/s/\(${keyattrib}=\"\)[^\"]*\(\"\)/\1${value}\2/" ${filein} > ${filein}.tmp 
     1368        sed -e "/id=\"${keyid}\"/s:\(${keyattrib}=\"\)[^\"]*\(\"\):\1${value}\2:" ${filein} > ${filein}.tmp 
    14091369      else 
    14101370        # Case to add the attribute and its value 
    14111371        IGCM_debug_Print 1 "Now add in ${filein} for id=${keyid} the attribute ${keyattrib} to the value ${value}" 
    1412         sed -e "/id=\"${keyid}\"/s/\/>/ ${keyattrib}=\"${value}\"\/>/" ${filein} > ${filein}.tmp 
     1372        sed -e "/id=\"${keyid}\"/s:\/>: ${keyattrib}=\"${value}\"\/>:" ${filein} > ${filein}.tmp 
    14131373      fi 
    14141374    fi 
     
    14601420    # UPDATE component 
    14611421    ${comp}_Update 
     1422 
     1423    set -vx 
     1424 
     1425    # Read TimeSeries information from XML files, prepare TS directories and do modifications in timeseries_def_${compname}.xml 
     1426    if [ -f timeseries_def_${compname}.xml ]; then 
     1427      ${libIGCM}/libIGCM_post/xios_parser.py tsquery --file timeseries_def_${compname}.xml > ts.temp.${compname}.txt 
     1428      for line in $( cat ts.temp.${compname}.txt ); do 
     1429        id=$(          echo ${line} | awk -F "," '{print $1}' | awk -F "=" '{print $2}' ) 
     1430        output_freq=$( echo ${line} | awk -F "," '{print $2}' | awk -F "=" '{print $2}' ) 
     1431        case ${output_freq} in 
     1432        *Y|*y) 
     1433          eval IGCM_sys_Mkdir \${R_BUF_${comp}_A_Y} 
     1434          eval IGCM_comp_modifyXmlFile nonblocker timeseries_def_${compname}.xml ${id} ts_prefix \${R_BUF_${comp}_A_Y}/${config_UserChoices_JobName} 
     1435          ;; 
     1436        *MO|*mo) 
     1437          eval IGCM_sys_Mkdir \${R_BUF_${comp}_A_M} 
     1438          eval IGCM_comp_modifyXmlFile nonblocker timeseries_def_${compname}.xml ${id} ts_prefix \${R_BUF_${comp}_A_M}/${config_UserChoices_JobName} 
     1439          ;; 
     1440        *D|*d) 
     1441          eval IGCM_sys_Mkdir \${R_BUF_${comp}_A_D} 
     1442          eval IGCM_comp_modifyXmlFile nonblocker timeseries_def_${compname}.xml ${id} ts_prefix \${R_BUF_${comp}_A_D}/${config_UserChoices_JobName} 
     1443          ;; 
     1444        *S|*s) 
     1445          eval IGCM_sys_Mkdir \${R_BUF_${comp}_A_H} 
     1446          eval IGCM_comp_modifyXmlFile nonblocker timeseries_def_${compname}.xml ${id} ts_prefix \${R_BUF_${comp}_A_H}/${config_UserChoices_JobName} 
     1447          ;; 
     1448        esac 
     1449      done 
     1450    fi 
     1451 
     1452    set +vx 
    14621453 
    14631454  done 
  • tags/libIGCM_v3.0_beta1/libIGCM_config/libIGCM_config.ksh

    r1373 r1375  
    507507  typeset i 
    508508 
    509   # Check RebuildFrequency against key frequencies : PeriodLength ; PackFrequency ; TimeSeriesFrequency ; SeasonalFrequency 
     509  # Check RebuildFrequency against key frequencies : PeriodLength ; PackFrequency ; SeasonalFrequency 
    510510  if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && [ ! X${config_Post_RebuildFrequency} = XNONE ] ) ; then 
    511511    AsynchronousRebuild=true 
    512512    IGCM_debug_Print 1 "Asynchronous rebuild has been activated." 
    513513    echo 
    514     # modulo (RebuildFrequency and PeriodLength/TimeSeriesFrequency/SeasonalFrequency) must be zero 
     514    # modulo (RebuildFrequency and PeriodLength/SeasonalFrequency) must be zero 
    515515    IGCM_debug_Print 1 "Check coherence between RebuildFrequency and PeriodLength" 
    516516    IGCM_post_CheckModuloFrequency config_Post_RebuildFrequency config_UserChoices_PeriodLength 
    517517    IGCM_debug_Print 1 "Check coherence between PackFrequency and RebuildFrequency" 
    518518    IGCM_post_CheckModuloFrequency config_Post_PackFrequency config_Post_RebuildFrequency 
    519     IGCM_debug_Print 1 "Check coherence between TimeSeriesFrequency and RebuildFrequency" 
    520     IGCM_post_CheckModuloFrequency config_Post_TimeSeriesFrequency config_Post_RebuildFrequency 
    521519    IGCM_debug_Print 1 "Check coherence between SeasonalFrequency and RebuildFrequency" 
    522520    IGCM_post_CheckModuloFrequency config_Post_SeasonalFrequency config_Post_RebuildFrequency 
     
    526524    IGCM_debug_Print 1 "Proceed with standard post-treatment pathway" 
    527525    echo 
    528     #modulo (PeriodLength and TimeSeriesFrequency/SeasonalFrequency) must be zero 
    529     IGCM_debug_Print 1 "Check coherence between TimeSeriesFrequency and PeriodLength" 
    530     IGCM_post_CheckModuloFrequency config_Post_TimeSeriesFrequency config_UserChoices_PeriodLength 
     526    #modulo (PeriodLength and SeasonalFrequency) must be zero 
    531527    IGCM_debug_Print 1 "Check coherence between SeasonalFrequency and PeriodLength" 
    532528    IGCM_post_CheckModuloFrequency config_Post_SeasonalFrequency   config_UserChoices_PeriodLength 
     
    534530 
    535531  # Check PackFrequency against other key frequencies 
    536   # Modulo (PackFrequency and TimeSeriesFrequency/SeasonalFrequency and PeriodLenght) must be zero 
     532  # Modulo (PackFrequency and SeasonalFrequency and PeriodLenght) must be zero 
    537533  if ( [ ! X${config_Post_PackFrequency} = X${NULL_STR} ] && [ ! X${config_Post_PackFrequency} = XNONE ] ) ; then 
    538534    Pack=true 
     
    540536    IGCM_debug_Print 1 "Check coherence between PackFrequency and PeriodLength" 
    541537    IGCM_post_CheckModuloFrequency config_Post_PackFrequency config_UserChoices_PeriodLength 
    542     IGCM_debug_Print 1 "Check coherence between TimeSeriesFrequency and PackFrequency" 
    543     IGCM_post_CheckModuloFrequency config_Post_TimeSeriesFrequency config_Post_PackFrequency 
    544538    IGCM_debug_Print 1 "Check coherence between SeasonalFrequency and PackFrequency" 
    545539    IGCM_post_CheckModuloFrequency config_Post_SeasonalFrequency config_Post_PackFrequency 
     
    548542  fi 
    549543 
    550   # modulo (TimeSeriesFrequency and all Chunck2D) must be zero 
    551   NbJob=${#CHUNCK2D_SIZE[@]} 
    552   i=0 
    553   until [ $i -ge $NbJob ]; do 
    554     value=${CHUNCK2D_SIZE[${i}]} 
    555     IGCM_debug_Print 1 "Check coherence between ${CHUNCK2D_NAME[${i}]} Chunck2D frequency and TimeSeriesFrequency" 
    556     IGCM_post_CheckModuloFrequency value config_Post_TimeSeriesFrequency 
    557     case ${value} in 
    558     *Y|*y) ;; 
    559     *) 
    560       IGCM_debug_Print 1 "All ChunckJob2D frequency must be expressed in year *Y|*y in comp.card" 
    561       IGCM_debug_Exit "This will stop the job" ;; 
    562     esac 
    563     (( i=i+1 )) 
    564   done 
    565  
    566   # modulo (TimeSeriesFrequency and all Chunck3D) must be zero 
    567   NbJob=${#CHUNCK3D_SIZE[@]} 
    568   i=0 
    569   until [ $i -ge $NbJob ]; do 
    570     value=${CHUNCK3D_SIZE[${i}]} 
    571     IGCM_debug_Print 1 "Check coherence between ${CHUNCK3D_NAME[${i}]} Chunck3D frequency and TimeSeriesFrequency" 
    572     IGCM_post_CheckModuloFrequency value config_Post_TimeSeriesFrequency 
    573     case ${value} in 
    574     *Y|*y) ;; 
    575     *) 
    576       IGCM_debug_Print 1 "All ChunckJob3D frequency must be expressed in year *Y|*y in comp.card" 
    577       IGCM_debug_Exit "This will stop the job" ;; 
    578     esac 
    579     (( i=i+1 )) 
    580   done 
     544 
     545  # TODO LIST 
     546  # Will check later on time series frequency coming from xml. 
     547  # Need to know how XIOS2 handles this. 
     548 
     549 
     550  # # modulo (TimeSeriesFrequency and all Chunck2D) must be zero 
     551  # NbJob=${#CHUNCK2D_SIZE[@]} 
     552  # i=0 
     553  # until [ $i -ge $NbJob ]; do 
     554  #   value=${CHUNCK2D_SIZE[${i}]} 
     555  #   IGCM_debug_Print 1 "Check coherence between ${CHUNCK2D_NAME[${i}]} Chunck2D frequency and TimeSeriesFrequency" 
     556  #   IGCM_post_CheckModuloFrequency value config_Post_TimeSeriesFrequency 
     557  #   case ${value} in 
     558  #   *Y|*y) ;; 
     559  #   *) 
     560  #     IGCM_debug_Print 1 "All ChunckJob2D frequency must be expressed in year *Y|*y in comp.card" 
     561  #     IGCM_debug_Exit "This will stop the job" ;; 
     562  #   esac 
     563  #   (( i=i+1 )) 
     564  # done 
     565 
     566  # # modulo (TimeSeriesFrequency and all Chunck3D) must be zero 
     567  # NbJob=${#CHUNCK3D_SIZE[@]} 
     568  # i=0 
     569  # until [ $i -ge $NbJob ]; do 
     570  #   value=${CHUNCK3D_SIZE[${i}]} 
     571  #   IGCM_debug_Print 1 "Check coherence between ${CHUNCK3D_NAME[${i}]} Chunck3D frequency and TimeSeriesFrequency" 
     572  #   IGCM_post_CheckModuloFrequency value config_Post_TimeSeriesFrequency 
     573  #   case ${value} in 
     574  #   *Y|*y) ;; 
     575  #   *) 
     576  #     IGCM_debug_Print 1 "All ChunckJob3D frequency must be expressed in year *Y|*y in comp.card" 
     577  #     IGCM_debug_Exit "This will stop the job" ;; 
     578  #   esac 
     579  #   (( i=i+1 )) 
     580  # done 
    581581 
    582582  # check to be sure there is enough space on temporary filesystems to run 
     
    11841184 
    11851185  #=================================================# 
    1186   #         Modification of libIGCM behaviour       # 
    1187   #=================================================# 
    1188  
    1189   # To use this function, one must copy libIGCM.card from ${libIGCM} directory 
    1190   # and put it in ${SUBMIT_DIR} directory. After modifications of ${SUBMIT_DIR}/libIGCM.card, 
    1191   # variables define inside [UserChanges] will be modified for next Period of libIGCM main loop. 
    1192   if [ -f ${SUBMIT_DIR}/libIGCM.card ] ; then 
    1193     echo 
    1194     echo "########################################################################" 
    1195     echo "!!!                 Modification of libIGCM behaviour                !!!" 
    1196     echo 
    1197  
    1198     IGCM_debug_Print 1 "DefineArrayFromOption  : libIGCM_UserChanges in libIGCM.card" 
    1199     IGCM_card_DefineArrayFromSection ${SUBMIT_DIR}/libIGCM.card UserChanges 
    1200     IGCM_debug_Print 2 "libIGCM_UserChanges" ${libIGCM_UserChanges[*]} 
    1201  
    1202     # Special treatments for libIGCM internals 
    1203     for option in ${libIGCM_UserChanges[*]} ; do 
    1204       IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/libIGCM.card UserChanges ${option} 
    1205  
    1206       echo "We will change : ${option}." 
    1207       eval echo "Previous value : " \${${option}} 
    1208       eval echo "Change to : " \${libIGCM_UserChanges_${option}} 
    1209  
    1210       eval ${option}=\${libIGCM_UserChanges_${option}} 
    1211  
    1212       case ${option} in 
    1213       config_UserChoices_DateEnd) 
    1214         IGCM_debug_PrintVariables 1 config_UserChoices_DateEnd 
    1215         DateEnd=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateEnd} ) 
    1216  
    1217         # Period Length In Days between DateBegin and DateEnd 
    1218         (( ExperienceLengthInDays=$( IGCM_date_DaysBetweenGregorianDate ${DateEnd} ${DateBegin} )  + 1 )) 
    1219         if [ ${ExperienceLengthInDays} -lt 0 ] ; then 
    1220           IGCM_debug_Print 1 "Problem with dates in libIGCM.card : ${DateEnd} < ${DateBegin} ! You must check that." 
    1221           IGCM_debug_Exit "IGCM_PeriodEnd have wrong dates." 
    1222           IGCM_debug_Verif_Exit 
    1223         fi 
    1224         ;; 
    1225       config_UserChoices_PeriodLength) 
    1226         IGCM_debug_Print 1  "Change config_UserChoices_PeriodLength=${config_UserChoices_PeriodLength}" 
    1227         ;; 
    1228       PeriodNb) 
    1229         IGCM_debug_Print 1  "Loop in main Job with ${PeriodNb} period(s)" 
    1230         ;; 
    1231       config_Post_RebuildFrequency) 
    1232         IGCM_debug_Print 1  "Change config_Post_RebuildFrequency=${config_Post_RebuildFrequency} : IGCM_post_Configure" 
    1233         IGCM_post_Configure 
    1234         ;; 
    1235       config_Post_TimeSeriesFrequency) 
    1236         IGCM_debug_Print 1  "Change config_Post_TimeSeriesFrequency = ${config_Post_TimeSeriesFrequency} : IGCM_post_Configure" 
    1237         IGCM_post_Configure 
    1238         ;; 
    1239       config_Post_SeasonalFrequency) 
    1240         IGCM_debug_Print 1  "Change config_Post_SeasonalFrequency = ${config_Post_SeasonalFrequency} : IGCM_post_Configure" 
    1241         IGCM_post_Configure 
    1242         ;; 
    1243       esac 
    1244     done 
    1245  
    1246     echo 
    1247     echo "########################################################################" 
    1248     echo 
    1249   fi 
    1250  
    1251   #=================================================# 
    12521186  #         Determine next computed period          # 
    12531187  #=================================================# 
  • tags/libIGCM_v3.0_beta1/libIGCM_post/libIGCM_post.ksh

    r1298 r1375  
    2727  RebuildFrequency=false 
    2828  PackFrequency=false 
    29   TimeSeriesFrequency=false 
    3029  SeasonalFrequency=false 
    3130  unset list_post 
     
    4140  fi 
    4241  # 
    43   if ( [ X${TimeSeries} = Xtrue ] || [ X${TimeSeries2D} = Xtrue ] || [ X${TimeSeries3D} = Xtrue ] || [ X${TimeSeriesChunck2D} = Xtrue ] || [ X${TimeSeriesChunck3D} = Xtrue ] ) ; then 
    44     list_post="${list_post} TimeSeriesFrequency" 
    45   fi 
    46   # 
    4742  if [ X${Seasonal} = Xtrue ] ; then 
    4843    list_post="${list_post} SeasonalFrequency" 
    4944  fi 
    5045 
    51   # Overrule Time Series triggering. Special case 1. 
    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   # Overrule Rebuild triggering. Special case 2. 
     46  # Overrule Rebuild triggering. Special case 1. 
    5947  if ( [ X${AsynchronousRebuild} = Xtrue ] && [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then 
    6048    RebuildFrequency=true 
    6149    POST=true 
    6250  fi 
    63   # Overrule Pack triggering. Special case 3. 
     51  # Overrule Pack triggering. Special case 2. 
    6452  if ( [ X${Pack} = Xtrue ] && [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then 
    6553    PackFrequency=true 
     
    9785  # 
    9886  # Prepare headers for the shell dedicated to post-processing 
    99   if ( [ ${PackFrequency} = true ] && ( [ ${TimeSeriesFrequency} = true ] || [ ${SeasonalFrequency} = true ] ) ) ; then 
     87  if ( [ ${PackFrequency} = true ] && [ ${SeasonalFrequency} = true ] ) ; then 
    10088    if [ $DRYRUN -le 1 ]; then 
    10189      echo "#!/bin/ksh                                     " >  ${R_BUFR}/FlushPost_${PeriodDateEnd}.ksh 
     
    124112    echo 
    125113    IGCM_debug_Print 2 "POST_DIR = ${POST_DIR}" 
    126   fi 
    127  
    128   #============ TIME SERIES POST-PROCESSING ===========# 
    129   if [ ${TimeSeriesFrequency} = true ] ; then 
    130  
    131     IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ACTIVATED" 
    132     echo 
    133  
    134  
    135  
    136     # Get information from last execution 
    137     IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted 
    138     CompletedFlag=${run_PostProcessing_TimeSeriesCompleted} 
    139     # 
    140  
    141  
    142  
    143     listVarEnv="DEBUG_debug,BigBrother,postProcessingStopLevel,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,Script_Post_Output,MASTER,RebuildFrequency,DateBegin,PeriodDateEnd,StandAlone,CompletedFlag,TsTask,CompToRead,FlagToRead,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG" 
    144     # 
    145     jLoop=${#ListDimension[*]} 
    146     j=0 
    147     until [ $j -ge ${jLoop} ]; do 
    148       Dimension=${ListDimension[${j}]} 
    149       # 
    150       if [ X$( eval echo \${TimeSeries${Dimension}} ) = Xtrue ] ; then 
    151       # 
    152         IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} ACTIVATED" 
    153         echo 
    154         # 
    155         if [ X${Dimension} = X ] ; then 
    156           TsTask="empty" 
    157           Script_Post_Output=create_ts.${PeriodDateEnd} 
    158         else 
    159           TsTask=${Dimension} 
    160           Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask} 
    161         fi 
    162         # 
    163         if ( [ ${RebuildFrequency} = true ] || [ ${PackFrequency} = true ] ) ; then 
    164           # 
    165           if [ ${PackFrequency} = true ] ; then 
    166             FunctionPath=${R_BUFR}/FlushPost_${PeriodDateEnd}.ksh 
    167           else 
    168             FunctionPath=${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    169           fi 
    170           # 
    171           if [ -f ${FunctionPath} ] ; then 
    172 #           if [ X${MASTER} = Xtitane ] ; then 
    173 #             echo "IGCM_sys_RshPost <<-EOF"                       >> ${FunctionPath} 
    174 #           fi 
    175             echo "export DEBUG_debug=${DEBUG_debug}                        " >> ${FunctionPath} 
    176             echo "export BigBrother=${BigBrother}                          " >> ${FunctionPath} 
    177             echo "export postProcessingStopLevel=${postProcessingStopLevel}" >> ${FunctionPath} 
    178             echo "export MODIPSL=${MODIPSL}                                " >> ${FunctionPath} 
    179             echo "export libIGCM_SX=${libIGCM}                             " >> ${FunctionPath} 
    180             echo "export libIGCM=${libIGCM_POST}                           " >> ${FunctionPath} 
    181             echo "export SUBMIT_DIR=${SUBMIT_DIR}                          " >> ${FunctionPath} 
    182             echo "export POST_DIR=${POST_DIR}                              " >> ${FunctionPath} 
    183             echo "export MASTER=${MASTER}                                  " >> ${FunctionPath} 
    184             echo "export RebuildFrequency=${RebuildFrequency}              " >> ${FunctionPath} 
    185             echo "export DateBegin=${DateBegin}                            " >> ${FunctionPath} 
    186             echo "export PeriodDateEnd=${PeriodDateEnd}                    " >> ${FunctionPath} 
    187             echo "export StandAlone=false                                  " >> ${FunctionPath} 
    188             echo "export CompletedFlag=${CompletedFlag}                    " >> ${FunctionPath} 
    189             echo "export TsTask=${TsTask}                                  " >> ${FunctionPath} 
    190             echo "unset  CompToRead                                        " >> ${FunctionPath} 
    191             echo "unset  FlagToRead                                        " >> ${FunctionPath} 
    192             echo "export RESOL_ATM=${RESOL_ATM}                            " >> ${FunctionPath} 
    193             echo "export RESOL_OCE=${RESOL_OCE}                            " >> ${FunctionPath} 
    194             echo "export RESOL_ICE=${RESOL_ICE}                            " >> ${FunctionPath} 
    195             echo "export RESOL_MBG=${RESOL_MBG}                            " >> ${FunctionPath} 
    196             echo "export RESOL_SRF=${RESOL_SRF}                            " >> ${FunctionPath} 
    197             echo "export RESOL_SBG=${RESOL_SBG}                            " >> ${FunctionPath} 
    198             echo "export listVarEnv=${listVarEnv}                          " >> ${FunctionPath} 
    199             echo "export Script_Post_Output=${Script_Post_Output}          " >> ${FunctionPath} 
    200 #           if [ X${MASTER} = Xtitane ] ; then 
    201 #             echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${FunctionPath} 
    202 #             echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${FunctionPath} 
    203 #           fi 
    204             echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${FunctionPath} 
    205             echo "IGCM_debug_Verif_Exit                          " >> ${FunctionPath} 
    206             echo "IGCM_sys_QsubPost create_ts                    " >> ${FunctionPath} 
    207 #           if [ X${MASTER} = Xtitane ] ; then 
    208 #             echo "EOF"                                           >> ${FunctionPath} 
    209 #           fi 
    210           fi 
    211         else 
    212           IGCM_sys_RshPost <<-EOF 
    213                     export DEBUG_debug=${DEBUG_debug} 
    214                     export BigBrother=${BigBrother} 
    215                     export postProcessingStopLevel=${postProcessingStopLevel} 
    216                     export MODIPSL=${MODIPSL} 
    217                     export libIGCM_SX=${libIGCM} 
    218                     export libIGCM=${libIGCM_POST} 
    219                     export SUBMIT_DIR=${SUBMIT_DIR} 
    220                     export POST_DIR=${POST_DIR} 
    221                     export MASTER=${MASTER} 
    222                     export RebuildFrequency=${RebuildFrequency} 
    223                     export DateBegin=${DateBegin} 
    224                     export PeriodDateEnd=${PeriodDateEnd} 
    225                     export StandAlone=false 
    226                     export CompletedFlag=${CompletedFlag} 
    227                     export TsTask=${TsTask} 
    228                     unset  CompToRead 
    229                     unset  FlagToRead 
    230                     export RESOL_ATM=${RESOL_ATM} 
    231                     export RESOL_OCE=${RESOL_OCE} 
    232                     export RESOL_ICE=${RESOL_ICE} 
    233                     export RESOL_MBG=${RESOL_MBG} 
    234                     export RESOL_SRF=${RESOL_SRF} 
    235                     export RESOL_SBG=${RESOL_SBG} 
    236                     export listVarEnv=${listVarEnv} 
    237                     export Script_Post_Output=${Script_Post_Output} 
    238                     . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh 
    239                     . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh 
    240                     IGCM_sys_MkdirWork ${POST_DIR} 
    241                     IGCM_debug_Verif_Exit 
    242                     IGCM_sys_QsubPost create_ts 
    243 EOF 
    244         fi 
    245       fi 
    246       # 
    247       if [ X$( eval echo \${TimeSeriesChunck${Dimension}} ) = Xtrue ] ; then 
    248         # 
    249         IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} WITH CHUNCK ACTIVATED" 
    250         echo 
    251         # Need to Remember This One 
    252         SavedDateBegin=${DateBegin} 
    253         # Kind of task create_ts will perform 
    254         TsTask=Chunck${Dimension} 
    255         # Number of chunck jobs to configure and submit 
    256         eval NbJob=\${#CHUNCK${Dimension}_COMP[@]} 
    257         typeset i 
    258         i=0 
    259         until [ $i -ge $NbJob ]; do 
    260           CompToRead=$( eval echo \${CHUNCK${Dimension}_COMP[\${i}]} ) 
    261           FlagToRead=$( eval echo \${CHUNCK${Dimension}_FLAG[\${i}]} ) 
    262           NameToRead=$( eval echo \${CHUNCK${Dimension}_NAME[\${i}]} ) 
    263           ChunckSize=$( eval echo \${CHUNCK${Dimension}_SIZE[\${i}]} ) 
    264           # Chunck Length (mandatory in Year) 
    265           YearsChunckLength=$( echo ${ChunckSize} | sed -e "s/[yY]//" ) 
    266           # 
    267           IGCM_date_GetYearMonth ${DateBegin}     YearBegin MonthBegin 
    268           # 
    269           IGCM_date_GetYearMonth ${PeriodDateEnd} YearEnd   MonthEnd 
    270           # How many chunck in total since simulation began 
    271           NbYearsChunckLoop=$(( ( ${YearEnd} - ${YearBegin} + 1 ) / ${YearsChunckLength} )) 
    272           #  Tweak special case 
    273           [ $(( ( ${YearEnd} - ${YearBegin} + 1 ) % ${YearsChunckLength} )) = 0 ] && NbYearsChunckLoop=$(( ${NbYearsChunckLoop} - 1 )) 
    274           # Starting Year of the current chunck 
    275           ChunckTsYearBegin=$(( ${NbYearsChunckLoop} * ${YearsChunckLength} + ${YearBegin} )) 
    276           # Starting date of the current chunck 
    277           ChunckTsDateBegin=${ChunckTsYearBegin}${MonthBegin}01 
    278           # 
    279           Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask}.${CompToRead}.${NameToRead} 
    280           # 
    281           if ( [ ${RebuildFrequency} = true ] || [ ${PackFrequency} = true ] ) ; then 
    282             # 
    283             if [ ${PackFrequency} = true ] ; then 
    284               FunctionPath=${R_BUFR}/FlushPost_${PeriodDateEnd}.ksh 
    285             else 
    286               FunctionPath=${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    287             fi 
    288             # 
    289             if [ -f ${FunctionPath} ] ; then 
    290 #             if [ X${MASTER} = Xtitane ] ; then 
    291 #               echo "IGCM_sys_RshPost <<-EOF"                       >> ${FunctionPath} 
    292 #             fi 
    293               echo "export DEBUG_debug=${DEBUG_debug}                        " >> ${FunctionPath} 
    294               echo "export BigBrother=${BigBrother}                          " >> ${FunctionPath} 
    295               echo "export postProcessingStopLevel=${postProcessingStopLevel}" >> ${FunctionPath} 
    296               echo "export MODIPSL=${MODIPSL}                                " >> ${FunctionPath} 
    297               echo "export libIGCM_SX=${libIGCM}                             " >> ${FunctionPath} 
    298               echo "export libIGCM=${libIGCM_POST}                           " >> ${FunctionPath} 
    299               echo "export SUBMIT_DIR=${SUBMIT_DIR}                          " >> ${FunctionPath} 
    300               echo "export POST_DIR=${POST_DIR}                              " >> ${FunctionPath} 
    301               echo "export MASTER=${MASTER}                                  " >> ${FunctionPath} 
    302               echo "export RebuildFrequency=${RebuildFrequency}              " >> ${FunctionPath} 
    303               echo "export DateBegin=${ChunckTsDateBegin}                    " >> ${FunctionPath} 
    304               echo "export PeriodDateEnd=${PeriodDateEnd}                    " >> ${FunctionPath} 
    305               echo "export StandAlone=false                                  " >> ${FunctionPath} 
    306               echo "export CompletedFlag=${CompletedFlag}                    " >> ${FunctionPath} 
    307               echo "export TsTask=${TsTask}                                  " >> ${FunctionPath} 
    308               echo "export CompToRead=${CompToRead}                          " >> ${FunctionPath} 
    309               echo "export FlagToRead=${FlagToRead}                          " >> ${FunctionPath} 
    310               echo "export RESOL_ATM=${RESOL_ATM}                            " >> ${FunctionPath} 
    311               echo "export RESOL_OCE=${RESOL_OCE}                            " >> ${FunctionPath} 
    312               echo "export RESOL_ICE=${RESOL_ICE}                            " >> ${FunctionPath} 
    313               echo "export RESOL_MBG=${RESOL_MBG}                            " >> ${FunctionPath} 
    314               echo "export RESOL_SRF=${RESOL_SRF}                            " >> ${FunctionPath} 
    315               echo "export RESOL_SBG=${RESOL_SBG}                            " >> ${FunctionPath} 
    316               echo "export listVarEnv=${listVarEnv}                          " >> ${FunctionPath} 
    317               echo "export Script_Post_Output=${Script_Post_Output}          " >> ${FunctionPath} 
    318 #             if [ X${MASTER} = Xtitane ] ; then 
    319 #               echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${FunctionPath} 
    320 #               echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${FunctionPath} 
    321 #             fi 
    322               echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${FunctionPath} 
    323               echo "IGCM_debug_Verif_Exit                          " >> ${FunctionPath} 
    324               echo "IGCM_sys_QsubPost create_ts                    " >> ${FunctionPath} 
    325 #             if [ X${MASTER} = Xtitane ] ; then 
    326 #               echo "EOF"                                           >> ${FunctionPath} 
    327 #             fi 
    328             fi 
    329           else 
    330             IGCM_sys_RshPost <<-EOF 
    331                         export DEBUG_debug=${DEBUG_debug} 
    332                         export BigBrother=${BigBrother} 
    333                         export postProcessingStopLevel=${postProcessingStopLevel} 
    334                         export MODIPSL=${MODIPSL} 
    335                         export libIGCM_SX=${libIGCM} 
    336                         export libIGCM=${libIGCM_POST} 
    337                         export SUBMIT_DIR=${SUBMIT_DIR} 
    338                         export POST_DIR=${POST_DIR} 
    339                         export MASTER=${MASTER} 
    340                         export RebuildFrequency=${RebuildFrequency} 
    341                         export DateBegin=${ChunckTsDateBegin} 
    342                         export PeriodDateEnd=${PeriodDateEnd} 
    343                         export StandAlone=false 
    344                         export CompletedFlag=${CompletedFlag} 
    345                         export TsTask=${TsTask} 
    346                         export CompToRead=${CompToRead} 
    347                         export FlagToRead=${FlagToRead} 
    348                         export RESOL_ATM=${RESOL_ATM} 
    349                         export RESOL_OCE=${RESOL_OCE} 
    350                         export RESOL_ICE=${RESOL_ICE} 
    351                         export RESOL_MBG=${RESOL_MBG} 
    352                         export RESOL_SRF=${RESOL_SRF} 
    353                         export RESOL_SBG=${RESOL_SBG} 
    354                         export listVarEnv=${listVarEnv} 
    355                         export Script_Post_Output=${Script_Post_Output} 
    356                         . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh 
    357                         . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh 
    358                         IGCM_sys_MkdirWork ${POST_DIR} 
    359                         IGCM_debug_Verif_Exit 
    360                         IGCM_sys_QsubPost create_ts 
    361 EOF 
    362             # 
    363           fi 
    364           # 
    365           export DateBegin=${SavedDateBegin} 
    366           # 
    367           (( i=i+1 )) 
    368           # 
    369         done 
    370       fi 
    371       (( j=j+1 )) 
    372     done 
    373114  fi 
    374115 
     
    463204    # ----------------------------------------------------------------------------------- 
    464205    # Function IGCM_FlushPost called by pack_output.job has not been closed yet. Do it now 
    465     # Will submit Time Series OR Seasonal Average if needed 
     206    # Will submit Seasonal Average if needed 
    466207    # ----------------------------------------------------------------------------------- 
    467208    if [ -f ${R_BUFR}/FlushPost_${PeriodDateEnd}.ksh ] ; then 
     
    513254    Script_Post_Output=${script}.${PeriodDateEnd} 
    514255    # 
    515       IGCM_sys_RshPost <<-EOF 
     256    IGCM_sys_RshPost <<-EOF 
    516257      export DEBUG_debug=${DEBUG_debug} 
    517258      export BigBrother=${BigBrother} 
     
    542283    Script_Post_Output=${script}.${PeriodDateEnd} 
    543284    # 
    544     if ( [ ${RebuildFrequency} = true ] && [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ) ; then 
    545 #       if [ X${MASTER} = Xtitane ] ; then 
    546 #         echo "IGCM_sys_RshPost <<-EOF"                     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    547 #       fi 
    548       echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    549       echo "export BigBrother=${BigBrother}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    550       echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    551       echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    552       echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    553       echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    554       echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    555       echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    556       echo "export DateBegin=${PackDateBegin}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    557       echo "export DateEnd=${PeriodDateEnd}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    558       echo "export PeriodPack=${config_Post_PackFrequency} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    559       echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    560       echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    561       echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    562       echo "export script=${script}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    563       echo "export postProcessingStopLevel=${postProcessingStopLevel}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    564 #       if [ X${MASTER} = Xtitane ] ; then 
    565 #         echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    566 #         echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    567 #       fi 
    568       echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    569       echo "IGCM_debug_Verif_Exit                          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    570       echo "IGCM_sys_QsubPost ${script}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    571 #       if [ X${MASTER} = Xtitane ] ; then 
    572 #         echo "EOF"                                         >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    573 #       fi 
    574       echo "IGCM_debug_Verif_Exit                          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    575     else 
    576       IGCM_sys_RshPost <<-EOF 
     285    IGCM_sys_RshPost <<-EOF 
    577286        export DEBUG_debug=${DEBUG_debug} 
    578287        export BigBrother=${BigBrother} 
     
    598307        IGCM_debug_Verif_Exit 
    599308EOF 
    600       export DateBegin=${SavedDateBegin} 
    601       export DateEnd=${SavedDateEnd} 
    602     fi 
     309    export DateBegin=${SavedDateBegin} 
     310    export DateEnd=${SavedDateEnd} 
    603311  fi 
    604312 
Note: See TracChangeset for help on using the changeset viewer.