Changeset 1375 for tags/libIGCM_v3.0_beta1
- Timestamp:
- 01/11/17 16:44:40 (7 years ago)
- 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 79 79 eval IGCM_sys_MkdirArchive \${R_OUT_${comp}_O} 80 80 81 eval R_OUT_${comp}_A=\${R_OUT_${comp}}/Analyse 82 eval IGCM_sys_MkdirArchive \${R_OUT_${comp}_A} 83 81 84 eval R_OUT_${comp}_R=\${R_OUT_${comp}}/Restart 82 85 [ ${config_Post_PackFrequency} = NONE ] && eval IGCM_sys_MkdirArchive \${R_OUT_${comp}_R} … … 85 88 [ ${config_Post_PackFrequency} = NONE ] && eval IGCM_sys_MkdirArchive \${R_OUT_${comp}_D} 86 89 87 eval R_OUT_${comp}_O_I=\${R_OUT_${comp}_O}/INS88 90 eval R_OUT_${comp}_O_H=\${R_OUT_${comp}_O}/HF 89 91 eval R_OUT_${comp}_O_D=\${R_OUT_${comp}_O}/DA … … 91 93 eval R_OUT_${comp}_O_Y=\${R_OUT_${comp}_O}/YE 92 94 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 93 100 # Define BUFFERED Dirs 94 101 if ( [ ! ${config_Post_PackFrequency} = NONE ] || [ X${config_UserChoices_SpaceName} = XTEST ] ) ; then … … 99 106 eval IGCM_sys_Mkdir \${R_BUF_${comp}_O} 100 107 108 eval R_BUF_${comp}_A=\${R_BUF_${comp}}/Analyse 109 eval IGCM_sys_Mkdir \${R_BUF_${comp}_A} 110 101 111 eval R_BUF_${comp}_R=\${R_BUF_${comp}}/Restart 102 112 eval IGCM_sys_Mkdir \${R_BUF_${comp}_R} … … 105 115 eval IGCM_sys_Mkdir \${R_BUF_${comp}_D} 106 116 107 eval R_BUF_${comp}_O_I=\${R_BUF_${comp}_O}/INS108 117 eval R_BUF_${comp}_O_H=\${R_BUF_${comp}_O}/HF 109 118 eval R_BUF_${comp}_O_D=\${R_BUF_${comp}_O}/DA 110 119 eval R_BUF_${comp}_O_M=\${R_BUF_${comp}_O}/MO 111 120 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 112 126 fi 113 127 … … 161 175 IGCM_debug_Verif_Exit 162 176 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 178 180 if [ $( eval echo \${${compname}_${flag_post}_Seasonal} ) = ON ] ; then 179 181 Seasonal=true 180 182 fi 181 183 182 # Dimension = vide si vieille card. 183 IGCM_card_DefineArrayFromOption ${card} ${flag_post} TimeSeriesVars 184 # Read the Patches Option 184 185 IGCM_card_DefineArrayFromOption ${card} ${flag_post} Patches 185 if [ X"$( eval echo \${${compname}_${flag_post}_TimeSeriesVars[*]} )" = X"Option not" ] ; then186 # New TimeSeriesVar description, with 2D, 3D and associate ChunckJob.187 ListDimension[0]=2D188 ListDimension[1]=3D189 TimeSeries=false190 iLoop=${#ListDimension[*]}191 j=0192 until [ $j -ge ${iLoop} ]; do193 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 chunk198 #199 if [ ! $( eval echo \${${compname}_${flag_post}_TimeSeriesVars${Dimension}} ) = ${NULL_STR} ] ; then200 if [ $( eval echo \${${compname}_${flag_post}_ChunckJob${Dimension}} ) = NONE ] ; then201 IGCM_debug_Print 3 "${Dimension} time series activated for ${flag_post}"202 eval TimeSeries${Dimension}=true203 fi204 fi205 #206 # Time series WITH chunk207 #208 if [ ! $( eval echo \${${compname}_${flag_post}_TimeSeriesVars${Dimension}} ) = ${NULL_STR} ] ; then209 chunck_size=$( eval echo \${${compname}_${flag_post}_ChunckJob${Dimension}} )210 if [ ! ${chunck_size} = NONE ] && [ ! ${chunck_size} = OFF ] ; then211 IGCM_debug_Print 3 "${Dimension} time series activated with chunck for ${flag_post}"212 eval TimeSeriesChunck${Dimension}=true213 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 fi218 fi219 (( j=j+1 ))220 done221 else222 ListDimension[0]=""223 TimeSeries=true224 TimeSeries2D=false225 TimeSeries3D=false226 TimeSeriesChunck2D=false227 TimeSeriesChunck3D=false228 fi229 186 fi 230 187 (( i=i+3 )) … … 267 224 fi 268 225 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 269 229 eval FileDef[${#FileDef[@]}]=${file} > /dev/null 2>&1 270 230 fi … … 1400 1360 # Case to modify the variable itself 1401 1361 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}.tmp1362 sed -e "s:\(<[^\"]*\"${keyid}\".*>\)\([^<]*\)\(<[^>]*\):\1${value}\3:" ${filein} > ${filein}.tmp 1403 1363 else 1404 1364 # Check if keyattrib is set on the same line as keyid … … 1406 1366 # Case to modify the attribute value 1407 1367 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}.tmp1368 sed -e "/id=\"${keyid}\"/s:\(${keyattrib}=\"\)[^\"]*\(\"\):\1${value}\2:" ${filein} > ${filein}.tmp 1409 1369 else 1410 1370 # Case to add the attribute and its value 1411 1371 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}.tmp1372 sed -e "/id=\"${keyid}\"/s:\/>: ${keyattrib}=\"${value}\"\/>:" ${filein} > ${filein}.tmp 1413 1373 fi 1414 1374 fi … … 1460 1420 # UPDATE component 1461 1421 ${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 1462 1453 1463 1454 done -
tags/libIGCM_v3.0_beta1/libIGCM_config/libIGCM_config.ksh
r1373 r1375 507 507 typeset i 508 508 509 # Check RebuildFrequency against key frequencies : PeriodLength ; PackFrequency ; TimeSeriesFrequency ;SeasonalFrequency509 # Check RebuildFrequency against key frequencies : PeriodLength ; PackFrequency ; SeasonalFrequency 510 510 if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && [ ! X${config_Post_RebuildFrequency} = XNONE ] ) ; then 511 511 AsynchronousRebuild=true 512 512 IGCM_debug_Print 1 "Asynchronous rebuild has been activated." 513 513 echo 514 # modulo (RebuildFrequency and PeriodLength/ TimeSeriesFrequency/SeasonalFrequency) must be zero514 # modulo (RebuildFrequency and PeriodLength/SeasonalFrequency) must be zero 515 515 IGCM_debug_Print 1 "Check coherence between RebuildFrequency and PeriodLength" 516 516 IGCM_post_CheckModuloFrequency config_Post_RebuildFrequency config_UserChoices_PeriodLength 517 517 IGCM_debug_Print 1 "Check coherence between PackFrequency and RebuildFrequency" 518 518 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_RebuildFrequency521 519 IGCM_debug_Print 1 "Check coherence between SeasonalFrequency and RebuildFrequency" 522 520 IGCM_post_CheckModuloFrequency config_Post_SeasonalFrequency config_Post_RebuildFrequency … … 526 524 IGCM_debug_Print 1 "Proceed with standard post-treatment pathway" 527 525 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 531 527 IGCM_debug_Print 1 "Check coherence between SeasonalFrequency and PeriodLength" 532 528 IGCM_post_CheckModuloFrequency config_Post_SeasonalFrequency config_UserChoices_PeriodLength … … 534 530 535 531 # Check PackFrequency against other key frequencies 536 # Modulo (PackFrequency and TimeSeriesFrequency/SeasonalFrequency and PeriodLenght) must be zero532 # Modulo (PackFrequency and SeasonalFrequency and PeriodLenght) must be zero 537 533 if ( [ ! X${config_Post_PackFrequency} = X${NULL_STR} ] && [ ! X${config_Post_PackFrequency} = XNONE ] ) ; then 538 534 Pack=true … … 540 536 IGCM_debug_Print 1 "Check coherence between PackFrequency and PeriodLength" 541 537 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_PackFrequency544 538 IGCM_debug_Print 1 "Check coherence between SeasonalFrequency and PackFrequency" 545 539 IGCM_post_CheckModuloFrequency config_Post_SeasonalFrequency config_Post_PackFrequency … … 548 542 fi 549 543 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 581 581 582 582 # check to be sure there is enough space on temporary filesystems to run … … 1184 1184 1185 1185 #=================================================# 1186 # Modification of libIGCM behaviour #1187 #=================================================#1188 1189 # To use this function, one must copy libIGCM.card from ${libIGCM} directory1190 # 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 ] ; then1193 echo1194 echo "########################################################################"1195 echo "!!! Modification of libIGCM behaviour !!!"1196 echo1197 1198 IGCM_debug_Print 1 "DefineArrayFromOption : libIGCM_UserChanges in libIGCM.card"1199 IGCM_card_DefineArrayFromSection ${SUBMIT_DIR}/libIGCM.card UserChanges1200 IGCM_debug_Print 2 "libIGCM_UserChanges" ${libIGCM_UserChanges[*]}1201 1202 # Special treatments for libIGCM internals1203 for option in ${libIGCM_UserChanges[*]} ; do1204 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} in1213 config_UserChoices_DateEnd)1214 IGCM_debug_PrintVariables 1 config_UserChoices_DateEnd1215 DateEnd=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateEnd} )1216 1217 # Period Length In Days between DateBegin and DateEnd1218 (( ExperienceLengthInDays=$( IGCM_date_DaysBetweenGregorianDate ${DateEnd} ${DateBegin} ) + 1 ))1219 if [ ${ExperienceLengthInDays} -lt 0 ] ; then1220 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_Exit1223 fi1224 ;;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_Configure1234 ;;1235 config_Post_TimeSeriesFrequency)1236 IGCM_debug_Print 1 "Change config_Post_TimeSeriesFrequency = ${config_Post_TimeSeriesFrequency} : IGCM_post_Configure"1237 IGCM_post_Configure1238 ;;1239 config_Post_SeasonalFrequency)1240 IGCM_debug_Print 1 "Change config_Post_SeasonalFrequency = ${config_Post_SeasonalFrequency} : IGCM_post_Configure"1241 IGCM_post_Configure1242 ;;1243 esac1244 done1245 1246 echo1247 echo "########################################################################"1248 echo1249 fi1250 1251 #=================================================#1252 1186 # Determine next computed period # 1253 1187 #=================================================# -
tags/libIGCM_v3.0_beta1/libIGCM_post/libIGCM_post.ksh
r1298 r1375 27 27 RebuildFrequency=false 28 28 PackFrequency=false 29 TimeSeriesFrequency=false30 29 SeasonalFrequency=false 31 30 unset list_post … … 41 40 fi 42 41 # 43 if ( [ X${TimeSeries} = Xtrue ] || [ X${TimeSeries2D} = Xtrue ] || [ X${TimeSeries3D} = Xtrue ] || [ X${TimeSeriesChunck2D} = Xtrue ] || [ X${TimeSeriesChunck3D} = Xtrue ] ) ; then44 list_post="${list_post} TimeSeriesFrequency"45 fi46 #47 42 if [ X${Seasonal} = Xtrue ] ; then 48 43 list_post="${list_post} SeasonalFrequency" 49 44 fi 50 45 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. 59 47 if ( [ X${AsynchronousRebuild} = Xtrue ] && [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then 60 48 RebuildFrequency=true 61 49 POST=true 62 50 fi 63 # Overrule Pack triggering. Special case 3.51 # Overrule Pack triggering. Special case 2. 64 52 if ( [ X${Pack} = Xtrue ] && [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then 65 53 PackFrequency=true … … 97 85 # 98 86 # Prepare headers for the shell dedicated to post-processing 99 if ( [ ${PackFrequency} = true ] && ( [ ${TimeSeriesFrequency} = true ] || [ ${SeasonalFrequency} = true ] )) ; then87 if ( [ ${PackFrequency} = true ] && [ ${SeasonalFrequency} = true ] ) ; then 100 88 if [ $DRYRUN -le 1 ]; then 101 89 echo "#!/bin/ksh " > ${R_BUFR}/FlushPost_${PeriodDateEnd}.ksh … … 124 112 echo 125 113 IGCM_debug_Print 2 "POST_DIR = ${POST_DIR}" 126 fi127 128 #============ TIME SERIES POST-PROCESSING ===========#129 if [ ${TimeSeriesFrequency} = true ] ; then130 131 IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ACTIVATED"132 echo133 134 135 136 # Get information from last execution137 IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted138 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=0147 until [ $j -ge ${jLoop} ]; do148 Dimension=${ListDimension[${j}]}149 #150 if [ X$( eval echo \${TimeSeries${Dimension}} ) = Xtrue ] ; then151 #152 IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} ACTIVATED"153 echo154 #155 if [ X${Dimension} = X ] ; then156 TsTask="empty"157 Script_Post_Output=create_ts.${PeriodDateEnd}158 else159 TsTask=${Dimension}160 Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask}161 fi162 #163 if ( [ ${RebuildFrequency} = true ] || [ ${PackFrequency} = true ] ) ; then164 #165 if [ ${PackFrequency} = true ] ; then166 FunctionPath=${R_BUFR}/FlushPost_${PeriodDateEnd}.ksh167 else168 FunctionPath=${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh169 fi170 #171 if [ -f ${FunctionPath} ] ; then172 # if [ X${MASTER} = Xtitane ] ; then173 # echo "IGCM_sys_RshPost <<-EOF" >> ${FunctionPath}174 # fi175 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 ] ; then201 # echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${FunctionPath}202 # echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh" >> ${FunctionPath}203 # fi204 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 ] ; then208 # echo "EOF" >> ${FunctionPath}209 # fi210 fi211 else212 IGCM_sys_RshPost <<-EOF213 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=false226 export CompletedFlag=${CompletedFlag}227 export TsTask=${TsTask}228 unset CompToRead229 unset FlagToRead230 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.ksh239 . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh240 IGCM_sys_MkdirWork ${POST_DIR}241 IGCM_debug_Verif_Exit242 IGCM_sys_QsubPost create_ts243 EOF244 fi245 fi246 #247 if [ X$( eval echo \${TimeSeriesChunck${Dimension}} ) = Xtrue ] ; then248 #249 IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} WITH CHUNCK ACTIVATED"250 echo251 # Need to Remember This One252 SavedDateBegin=${DateBegin}253 # Kind of task create_ts will perform254 TsTask=Chunck${Dimension}255 # Number of chunck jobs to configure and submit256 eval NbJob=\${#CHUNCK${Dimension}_COMP[@]}257 typeset i258 i=0259 until [ $i -ge $NbJob ]; do260 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 MonthBegin268 #269 IGCM_date_GetYearMonth ${PeriodDateEnd} YearEnd MonthEnd270 # How many chunck in total since simulation began271 NbYearsChunckLoop=$(( ( ${YearEnd} - ${YearBegin} + 1 ) / ${YearsChunckLength} ))272 # Tweak special case273 [ $(( ( ${YearEnd} - ${YearBegin} + 1 ) % ${YearsChunckLength} )) = 0 ] && NbYearsChunckLoop=$(( ${NbYearsChunckLoop} - 1 ))274 # Starting Year of the current chunck275 ChunckTsYearBegin=$(( ${NbYearsChunckLoop} * ${YearsChunckLength} + ${YearBegin} ))276 # Starting date of the current chunck277 ChunckTsDateBegin=${ChunckTsYearBegin}${MonthBegin}01278 #279 Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask}.${CompToRead}.${NameToRead}280 #281 if ( [ ${RebuildFrequency} = true ] || [ ${PackFrequency} = true ] ) ; then282 #283 if [ ${PackFrequency} = true ] ; then284 FunctionPath=${R_BUFR}/FlushPost_${PeriodDateEnd}.ksh285 else286 FunctionPath=${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh287 fi288 #289 if [ -f ${FunctionPath} ] ; then290 # if [ X${MASTER} = Xtitane ] ; then291 # echo "IGCM_sys_RshPost <<-EOF" >> ${FunctionPath}292 # fi293 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 ] ; then319 # echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${FunctionPath}320 # echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh" >> ${FunctionPath}321 # fi322 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 ] ; then326 # echo "EOF" >> ${FunctionPath}327 # fi328 fi329 else330 IGCM_sys_RshPost <<-EOF331 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=false344 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.ksh357 . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh358 IGCM_sys_MkdirWork ${POST_DIR}359 IGCM_debug_Verif_Exit360 IGCM_sys_QsubPost create_ts361 EOF362 #363 fi364 #365 export DateBegin=${SavedDateBegin}366 #367 (( i=i+1 ))368 #369 done370 fi371 (( j=j+1 ))372 done373 114 fi 374 115 … … 463 204 # ----------------------------------------------------------------------------------- 464 205 # Function IGCM_FlushPost called by pack_output.job has not been closed yet. Do it now 465 # Will submit Time Series ORSeasonal Average if needed206 # Will submit Seasonal Average if needed 466 207 # ----------------------------------------------------------------------------------- 467 208 if [ -f ${R_BUFR}/FlushPost_${PeriodDateEnd}.ksh ] ; then … … 513 254 Script_Post_Output=${script}.${PeriodDateEnd} 514 255 # 515 256 IGCM_sys_RshPost <<-EOF 516 257 export DEBUG_debug=${DEBUG_debug} 517 258 export BigBrother=${BigBrother} … … 542 283 Script_Post_Output=${script}.${PeriodDateEnd} 543 284 # 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 577 286 export DEBUG_debug=${DEBUG_debug} 578 287 export BigBrother=${BigBrother} … … 598 307 IGCM_debug_Verif_Exit 599 308 EOF 600 export DateBegin=${SavedDateBegin} 601 export DateEnd=${SavedDateEnd} 602 fi 309 export DateBegin=${SavedDateBegin} 310 export DateEnd=${SavedDateEnd} 603 311 fi 604 312
Note: See TracChangeset
for help on using the changeset viewer.