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
File:
1 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 
Note: See TracChangeset for help on using the changeset viewer.