Changeset 544 for trunk/libIGCM/libIGCM_post
- Timestamp:
- 12/22/11 16:04:47 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libIGCM/libIGCM_post/libIGCM_post.ksh
r457 r544 16 16 function IGCM_post_Configure 17 17 { 18 IGCM_debug_PushStack "IGCM_post_Configure" 19 20 # Debug Print : 21 echo 22 IGCM_debug_Print 1 "IGCM_post_Configure" 23 # 24 # Initialize 25 # 26 POST=false 27 RebuildFrequency=false 28 TimeSeriesFrequency=false 29 SeasonalFrequency=false 30 # 31 # ONLY IF SOMETHING NEEDS TO BE DONE (EATHER TIME SERIES OR SEASONAL) COMPUTE THE MODULOS 32 # 33 if [ X${AsynchronousRebuild} = Xtrue ] ; then 34 list_post="RebuildFrequency" 18 IGCM_debug_PushStack "IGCM_post_Configure" 19 20 # Debug Print : 21 echo 22 IGCM_debug_Print 1 "IGCM_post_Configure" 23 # 24 # Initialize 25 # 26 POST=false 27 RebuildFrequency=false 28 TimeSeriesFrequency=false 29 SeasonalFrequency=false 30 # 31 # ONLY IF SOMETHING NEEDS TO BE DONE (EATHER TIME SERIES OR SEASONAL) COMPUTE THE MODULOS 32 # 33 if [ X${AsynchronousRebuild} = Xtrue ] ; then 34 list_post="RebuildFrequency" 35 fi 36 # 37 if ( [ X${TimeSeries} = Xtrue ] || [ X${TimeSeries2D} = Xtrue ] || [ X${TimeSeries3D} = Xtrue ] ) ; then 38 list_post="${list_post} TimeSeriesFrequency" 39 fi 40 # 41 if [ X${Seasonal} = Xtrue ] ; then 42 list_post="${list_post} SeasonalFrequency" 43 fi 44 45 # Overrule special cases 46 if ( [ ! X${config_Post_TimeSeriesFrequency} = X${NULL_STR} ] && \ 47 [ ! X${config_Post_TimeSeriesFrequency} = XNONE ] && \ 48 [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then 49 TimeSeriesFrequency=true 50 POST=true 51 fi 52 # 53 if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && \ 54 [ ! X${config_Post_RebuildFrequency} = XNONE ] && \ 55 [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then 56 RebuildFrequency=true 57 POST=true 58 fi 59 60 # READ REBUILD OR TIME SERIES OR SEASONAL FREQUENCY 61 # AND TURN ON THE SUBMISSION FLAG WHEN MODULO IS ZERO 62 for post_freq in ${list_post} ; do 63 # Extract frequency from previously defined variable 64 config_Post_post_freq=$( eval echo \${config_Post_${post_freq}} ) 65 # Offset for Seasonal Average starting period 66 if [ ${post_freq} = SeasonalFrequency ] ; then 67 if ( [ X${config_Post_SeasonalFrequencyOffset} = X${NULL_STR} ] || [ X${config_Post_SeasonalFrequencyOffset} = XNONE ] || [ X${config_Post_SeasonalFrequencyOffset} = X ] ) ; then 68 PeriodOffset=0 69 else 70 PeriodOffset=${config_Post_SeasonalFrequencyOffset} 71 fi 72 else 73 PeriodOffset=0 35 74 fi 36 # 37 if ( [ X${TimeSeries} = Xtrue ] || [ X${TimeSeries2D} = Xtrue ] || [ X${TimeSeries3D} = Xtrue ] ) ; then 38 list_post="${list_post} TimeSeriesFrequency" 75 # Compute Modulo between frequencys (/!\second argument will be multiplied by CumuPeriod/!\) 76 # RebuildFrequency needs additionnal information 77 if [ ${post_freq} = RebuildFrequency ] ; then 78 IGCM_post_ModuloRuntimeFrequency config_Post_post_freq config_UserChoices_PeriodLength NbRebuildDir 79 else 80 IGCM_post_ModuloRuntimeFrequency config_Post_post_freq config_UserChoices_PeriodLength 39 81 fi 40 82 # 41 if [ X${Seasonal} = Xtrue ] ; then 42 list_post="${list_post} SeasonalFrequency" 43 fi 44 45 # Overrule special cases 46 if ( [ ! X${config_Post_TimeSeriesFrequency} = X${NULL_STR} ] && \ 47 [ ! X${config_Post_TimeSeriesFrequency} = XNONE ] && \ 48 [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then 49 TimeSeriesFrequency=true 50 POST=true 51 fi 52 # 53 if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && \ 54 [ ! X${config_Post_RebuildFrequency} = XNONE ] && \ 55 [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then 56 RebuildFrequency=true 57 POST=true 58 fi 59 60 # READ REBUILD OR TIME SERIES OR SEASONAL FREQUENCY 61 # AND TURN ON THE SUBMISSION FLAG WHEN MODULO IS ZERO 62 for post_freq in ${list_post} ; do 63 # Extract frequency from previously defined variable 64 config_Post_post_freq=$( eval echo \${config_Post_${post_freq}} ) 65 # Offset for Seasonal Average starting period 66 if [ ${post_freq} = SeasonalFrequency ] ; then 67 if ( [ X${config_Post_SeasonalFrequencyOffset} = X${NULL_STR} ] || [ X${config_Post_SeasonalFrequencyOffset} = XNONE ] || [ X${config_Post_SeasonalFrequencyOffset} = X ] ) ; then 68 PeriodOffset=0 69 else 70 PeriodOffset=${config_Post_SeasonalFrequencyOffset} 71 fi 72 else 73 PeriodOffset=0 74 fi 75 # Compute Modulo between frequencys (/!\second argument will be multiplied by CumuPeriod/!\) 76 # RebuildFrequency needs additionnal information 77 if [ ${post_freq} = RebuildFrequency ] ; then 78 IGCM_post_ModuloRuntimeFrequency config_Post_post_freq config_UserChoices_PeriodLength NbRebuildDir 79 else 80 IGCM_post_ModuloRuntimeFrequency config_Post_post_freq config_UserChoices_PeriodLength 81 fi 82 # 83 IGCM_debug_Print 1 "${post_freq} flag value : ${RebuildFrequency}" 84 done 85 # 86 IGCM_debug_Print 2 "POST-TREATEMENT flag value : ${POST}" 87 # 88 IGCM_debug_PopStack "IGCM_post_Configure" 83 IGCM_debug_Print 1 "${post_freq} flag value : ${RebuildFrequency}" 84 done 85 # 86 IGCM_debug_Print 2 "POST-TREATEMENT flag value : ${POST}" 87 # 88 IGCM_debug_PopStack "IGCM_post_Configure" 89 89 } 90 90 91 91 function IGCM_post_Submit 92 92 { 93 IGCM_debug_PushStack "IGCM_post_Submit" 94 95 typeset listVarEnv 96 97 POST_DIR=${R_OUT_POST}/${config_UserChoices_TagName}/${config_UserChoices_JobName} 98 99 if [ ${POST} = true ]; then 93 IGCM_debug_PushStack "IGCM_post_Submit" 94 95 typeset listVarEnv 96 97 POST_DIR=${R_OUT_POST}/${config_UserChoices_TagName}/${config_UserChoices_JobName} 98 99 if [ ${POST} = true ]; then 100 echo 101 IGCM_debug_Print 1 "IGCM_post_Submit" 102 echo 103 IGCM_debug_Print 2 "POST_DIR = ${POST_DIR}" 104 fi 105 106 #============ TIME SERIES POST-TREATMENT ===========# 107 if [ ${TimeSeriesFrequency} = true ] ; then 108 109 IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ACTIVATED" 110 echo 111 112 113 114 # Get information from last execution 115 IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted 116 CompletedFlag=${run_PostProcessing_TimeSeriesCompleted} 117 # 118 119 120 121 listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,MASTER,RebuildFrequency,DateBegin,PeriodDateEnd,StandAlone,CompletedFlag,TsTask,CompToRead,FlagToRead,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG" 122 # 123 jLoop=${#ListDimension[*]} 124 j=0 125 until [ $j -ge ${jLoop} ]; do 126 Dimension=${ListDimension[${j}]} 127 # 128 if [ X$( eval echo \${TimeSeries${Dimension}} ) = Xtrue ] ; then 129 # 130 IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} ACTIVATED" 100 131 echo 101 IGCM_debug_Print 1 "IGCM_post_Submit"102 echo103 IGCM_debug_Print 2 "POST_DIR = ${POST_DIR}"104 fi105 106 #============ TIME SERIES POST-TREATMENT ===========#107 if [ ${TimeSeriesFrequency} = true ] ; then108 109 IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ACTIVATED"110 echo111 112 113 114 # Get information from last execution115 IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted116 CompletedFlag=${run_PostProcessing_TimeSeriesCompleted}117 132 # 118 119 120 121 listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,MASTER,RebuildFrequency,DateBegin,PeriodDateEnd,StandAlone,CompletedFlag,TsTask,CompToRead,FlagToRead,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG" 133 if [ X${Dimension} = X ] ; then 134 TsTask="empty" 135 Script_Post_Output=create_ts.${PeriodDateEnd} 136 else 137 TsTask=${Dimension} 138 Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask} 139 fi 122 140 # 123 jLoop=${#ListDimension[*]} 124 j=0 125 until [ $j -ge ${jLoop} ]; do 126 Dimension=${ListDimension[${j}]} 127 # 128 if [ X$( eval echo \${TimeSeries${Dimension}} ) = Xtrue ] ; then 129 # 130 IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} ACTIVATED" 131 echo 132 # 133 if [ X${Dimension} = X ] ; then 134 TsTask="empty" 135 Script_Post_Output=create_ts.${PeriodDateEnd} 136 else 137 TsTask=${Dimension} 138 Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask} 139 fi 140 # 141 if [ ${RebuildFrequency} = true ] ; then 142 # 143 if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 144 if [ X${MASTER} = Xtitane ] ; then 145 echo "IGCM_sys_RshPost <<-EOF" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 146 fi 147 echo "export DEBUG_debug=${DEBUG_debug} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 148 echo "export MODIPSL=${MODIPSL} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 149 echo "export libIGCM_SX=${libIGCM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 150 echo "export libIGCM=${libIGCM_POST} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 151 echo "export SUBMIT_DIR=${SUBMIT_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 152 echo "export POST_DIR=${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 153 echo "export MASTER=${MASTER} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 154 echo "export RebuildFrequency=${RebuildFrequency} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 155 echo "export DateBegin=${DateBegin} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 156 echo "export PeriodDateEnd=${PeriodDateEnd} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 157 echo "export StandAlone=false " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 158 echo "export CompletedFlag=${CompletedFlag} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 159 echo "export TsTask=${TsTask} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 160 echo "unset CompToRead " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 161 echo "unset FlagToRead " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 162 echo "export RESOL_ATM=${RESOL_ATM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 163 echo "export RESOL_OCE=${RESOL_OCE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 164 echo "export RESOL_ICE=${RESOL_ICE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 165 echo "export RESOL_MBG=${RESOL_MBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 166 echo "export RESOL_SRF=${RESOL_SRF} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 167 echo "export RESOL_SBG=${RESOL_SBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 168 echo "export listVarEnv=${listVarEnv} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 169 echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 170 if [ X${MASTER} = Xtitane ] ; then 171 echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 172 echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 173 fi 174 echo "IGCM_sys_MkdirWork ${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 175 echo "IGCM_debug_Verif_Exit_Post " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 176 echo "IGCM_sys_QsubPost create_ts " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 177 if [ X${MASTER} = Xtitane ] ; then 178 echo "EOF" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 179 fi 180 fi 181 # 182 else 183 # 184 IGCM_sys_RshPost <<-EOF 141 if [ ${RebuildFrequency} = true ] ; then 142 # 143 if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 144 # if [ X${MASTER} = Xtitane ] ; then 145 # echo "IGCM_sys_RshPost <<-EOF" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 146 # fi 147 echo "export DEBUG_debug=${DEBUG_debug} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 148 echo "export MODIPSL=${MODIPSL} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 149 echo "export libIGCM_SX=${libIGCM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 150 echo "export libIGCM=${libIGCM_POST} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 151 echo "export SUBMIT_DIR=${SUBMIT_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 152 echo "export POST_DIR=${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 153 echo "export MASTER=${MASTER} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 154 echo "export RebuildFrequency=${RebuildFrequency} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 155 echo "export DateBegin=${DateBegin} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 156 echo "export PeriodDateEnd=${PeriodDateEnd} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 157 echo "export StandAlone=false " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 158 echo "export CompletedFlag=${CompletedFlag} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 159 echo "export TsTask=${TsTask} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 160 echo "unset CompToRead " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 161 echo "unset FlagToRead " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 162 echo "export RESOL_ATM=${RESOL_ATM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 163 echo "export RESOL_OCE=${RESOL_OCE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 164 echo "export RESOL_ICE=${RESOL_ICE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 165 echo "export RESOL_MBG=${RESOL_MBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 166 echo "export RESOL_SRF=${RESOL_SRF} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 167 echo "export RESOL_SBG=${RESOL_SBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 168 echo "export listVarEnv=${listVarEnv} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 169 echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 170 # if [ X${MASTER} = Xtitane ] ; then 171 # echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 172 # echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 173 # fi 174 echo "IGCM_sys_MkdirWork ${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 175 echo "IGCM_debug_Verif_Exit_Post " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 176 echo "IGCM_sys_QsubPost create_ts " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 177 # if [ X${MASTER} = Xtitane ] ; then 178 # echo "EOF" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 179 # fi 180 fi 181 else 182 IGCM_sys_RshPost <<-EOF 185 183 export DEBUG_debug=${DEBUG_debug} 186 184 export MODIPSL=${MODIPSL} … … 212 210 IGCM_sys_QsubPost create_ts 213 211 EOF 214 fi 212 fi 213 fi 214 # 215 if [ X$( eval echo \${TimeSeriesChunck${Dimension}} ) = Xtrue ] ; then 216 # 217 IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} WITH CHUNCK ACTIVATED" 218 echo 219 # Need to Remember This One 220 SavedDateBegin=${DateBegin} 221 # Kind of task create_ts will perform 222 TsTask=Chunck${Dimension} 223 # Number of chunck jobs to configure and submit 224 eval NbJob=\${#CHUNCK${Dimension}_COMP[@]} 225 typeset i 226 i=0 227 until [ $i -ge $NbJob ]; do 228 CompToRead=$( eval echo \${CHUNCK${Dimension}_COMP[\${i}]} ) 229 FlagToRead=$( eval echo \${CHUNCK${Dimension}_FLAG[\${i}]} ) 230 NameToRead=$( eval echo \${CHUNCK${Dimension}_NAME[\${i}]} ) 231 ChunckSize=$( eval echo \${CHUNCK${Dimension}_SIZE[\${i}]} ) 232 # Chunck Length (mandatory in Year) 233 YearsChunckLength=$( echo ${ChunckSize} | sed -e "s/[yY]//" ) 234 # 235 IGCM_date_GetYearMonth ${DateBegin} YearBegin MonthBegin 236 # 237 IGCM_date_GetYearMonth ${PeriodDateEnd} YearEnd MonthEnd 238 # How many chunck in total since simulation began 239 NbYearsChunckLoop=$(( ( ${YearEnd} - ${YearBegin} + 1 ) / ${YearsChunckLength} )) 240 # Tweak special case 241 [ $(( ( ${YearEnd} - ${YearBegin} + 1 ) % ${YearsChunckLength} )) = 0 ] && NbYearsChunckLoop=$(( ${NbYearsChunckLoop} - 1 )) 242 # Starting Year of the current chunck 243 ChunckTsYearBegin=$(( ${NbYearsChunckLoop} * ${YearsChunckLength} + ${YearBegin} )) 244 # Starting date of the current chunck 245 ChunckTsDateBegin=${ChunckTsYearBegin}${MonthBegin}01 246 # 247 Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask}.${CompToRead}.${NameToRead} 248 # 249 if [ ${RebuildFrequency} = true ] ; then 250 # 251 if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 252 # if [ X${MASTER} = Xtitane ] ; then 253 # echo "IGCM_sys_RshPost <<-EOF" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 254 # fi 255 echo "export DEBUG_debug=${DEBUG_debug} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 256 echo "export MODIPSL=${MODIPSL} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 257 echo "export libIGCM_SX=${libIGCM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 258 echo "export libIGCM=${libIGCM_POST} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 259 echo "export SUBMIT_DIR=${SUBMIT_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 260 echo "export POST_DIR=${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 261 echo "export MASTER=${MASTER} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 262 echo "export RebuildFrequency=${RebuildFrequency} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 263 echo "export DateBegin=${ChunckTsDateBegin} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 264 echo "export PeriodDateEnd=${PeriodDateEnd} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 265 echo "export StandAlone=false " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 266 echo "export CompletedFlag=${CompletedFlag} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 267 echo "export TsTask=${TsTask} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 268 echo "export CompToRead=${CompToRead} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 269 echo "export FlagToRead=${FlagToRead} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 270 echo "export RESOL_ATM=${RESOL_ATM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 271 echo "export RESOL_OCE=${RESOL_OCE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 272 echo "export RESOL_ICE=${RESOL_ICE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 273 echo "export RESOL_MBG=${RESOL_MBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 274 echo "export RESOL_SRF=${RESOL_SRF} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 275 echo "export RESOL_SBG=${RESOL_SBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 276 echo "export listVarEnv=${listVarEnv} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 277 echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 278 # if [ X${MASTER} = Xtitane ] ; then 279 # echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 280 # echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 281 # fi 282 echo "IGCM_sys_MkdirWork ${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 283 echo "IGCM_debug_Verif_Exit_Post " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 284 echo "IGCM_sys_QsubPost create_ts " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 285 # if [ X${MASTER} = Xtitane ] ; then 286 # echo "EOF" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 287 # fi 215 288 fi 216 # 217 if [ X$( eval echo \${TimeSeriesChunck${Dimension}} ) = Xtrue ] ; then 218 # 219 IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} WITH CHUNCK ACTIVATED" 220 echo 221 # Need to Remember This One 222 SavedDateBegin=${DateBegin} 223 # Kind of task create_ts will perform 224 TsTask=Chunck${Dimension} 225 # Number of chunck jobs to configure and submit 226 eval NbJob=\${#CHUNCK${Dimension}_COMP[@]} 227 typeset i 228 i=0 229 until [ $i -ge $NbJob ]; do 230 CompToRead=$( eval echo \${CHUNCK${Dimension}_COMP[\${i}]} ) 231 FlagToRead=$( eval echo \${CHUNCK${Dimension}_FLAG[\${i}]} ) 232 NameToRead=$( eval echo \${CHUNCK${Dimension}_NAME[\${i}]} ) 233 ChunckSize=$( eval echo \${CHUNCK${Dimension}_SIZE[\${i}]} ) 234 # Chunck Length (mandatory in Year) 235 YearsChunckLength=$( echo ${ChunckSize} | sed -e "s/[yY]//" ) 236 # 237 IGCM_date_GetYearMonth ${DateBegin} YearBegin MonthBegin 238 # 239 IGCM_date_GetYearMonth ${PeriodDateEnd} YearEnd MonthEnd 240 # How many chunck in total since simulation began 241 NbYearsChunckLoop=$(( ( ${YearEnd} - ${YearBegin} + 1 ) / ${YearsChunckLength} )) 242 # Tweak special case 243 [ $(( ( ${YearEnd} - ${YearBegin} + 1 ) % ${YearsChunckLength} )) = 0 ] && NbYearsChunckLoop=$(( ${NbYearsChunckLoop} - 1 )) 244 # Starting Year of the current chunck 245 ChunckTsYearBegin=$(( ${NbYearsChunckLoop} * ${YearsChunckLength} + ${YearBegin} )) 246 # Starting date of the current chunck 247 ChunckTsDateBegin=${ChunckTsYearBegin}${MonthBegin}01 248 # 249 Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask}.${CompToRead}.${NameToRead} 250 # 251 if [ ${RebuildFrequency} = true ] ; then 252 # 253 if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 254 if [ X${MASTER} = Xtitane ] ; then 255 echo "IGCM_sys_RshPost <<-EOF" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 256 fi 257 echo "export DEBUG_debug=${DEBUG_debug} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 258 echo "export MODIPSL=${MODIPSL} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 259 echo "export libIGCM_SX=${libIGCM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 260 echo "export libIGCM=${libIGCM_POST} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 261 echo "export SUBMIT_DIR=${SUBMIT_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 262 echo "export POST_DIR=${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 263 echo "export MASTER=${MASTER} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 264 echo "export RebuildFrequency=${RebuildFrequency} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 265 echo "export DateBegin=${ChunckTsDateBegin} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 266 echo "export PeriodDateEnd=${PeriodDateEnd} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 267 echo "export StandAlone=false " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 268 echo "export CompletedFlag=${CompletedFlag} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 269 echo "export TsTask=${TsTask} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 270 echo "export CompToRead=${CompToRead} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 271 echo "export FlagToRead=${FlagToRead} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 272 echo "export RESOL_ATM=${RESOL_ATM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 273 echo "export RESOL_OCE=${RESOL_OCE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 274 echo "export RESOL_ICE=${RESOL_ICE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 275 echo "export RESOL_MBG=${RESOL_MBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 276 echo "export RESOL_SRF=${RESOL_SRF} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 277 echo "export RESOL_SBG=${RESOL_SBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 278 echo "export listVarEnv=${listVarEnv} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 279 echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 280 if [ X${MASTER} = Xtitane ] ; then 281 echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 282 echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 283 fi 284 echo "IGCM_sys_MkdirWork ${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 285 echo "IGCM_debug_Verif_Exit_Post " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 286 echo "IGCM_sys_QsubPost create_ts " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 287 if [ X${MASTER} = Xtitane ] ; then 288 echo "EOF" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 289 fi 290 fi 291 # 292 else 293 # 294 IGCM_sys_RshPost <<-EOF 289 else 290 IGCM_sys_RshPost <<-EOF 295 291 export DEBUG_debug=${DEBUG_debug} 296 292 export MODIPSL=${MODIPSL} … … 322 318 IGCM_sys_QsubPost create_ts 323 319 EOF 324 # 325 fi 326 # 327 export DateBegin=${SavedDateBegin} 328 # 329 (( i=i+1 )) 330 # 331 done 332 fi 333 (( j=j+1 )) 320 # 321 fi 322 # 323 export DateBegin=${SavedDateBegin} 324 # 325 (( i=i+1 )) 326 # 334 327 done 335 fi 336 337 #============= SEASONAL POST-TREATMENT ============# 338 if [ ${SeasonalFrequency} = true ] ; then 339 # 340 IGCM_debug_Print 1 "SEASONNAL POST-TREATMENT" 341 echo 328 fi 329 (( j=j+1 )) 330 done 331 fi 332 333 #============= SEASONAL POST-TREATMENT ============# 334 if [ ${SeasonalFrequency} = true ] ; then 335 # 336 IGCM_debug_Print 1 "SEASONNAL POST-TREATMENT" 337 echo 338 # 339 Script_Post_Output=create_se.${PeriodDateEnd} 340 # 341 listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,MASTER,RebuildFrequency,DateBegin,PeriodDateEnd,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG" 342 343 if [ ${RebuildFrequency} = true ] ; then 344 # 345 if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 342 346 # 343 Script_Post_Output=create_se.${PeriodDateEnd} 344 # 345 listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,MASTER,RebuildFrequency,DateBegin,PeriodDateEnd,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG" 346 347 if [ ${RebuildFrequency} = true ] ; then 348 # 349 if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 350 # 351 if [ X${MASTER} = Xtitane ] ; then 352 echo "IGCM_sys_RshPost <<-EOF" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 353 fi 354 echo "export DEBUG_debug=${DEBUG_debug} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 355 echo "export MODIPSL=${MODIPSL} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 356 echo "export libIGCM_SX=${libIGCM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 357 echo "export libIGCM=${libIGCM_POST} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 358 echo "export SUBMIT_DIR=${SUBMIT_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 359 echo "export POST_DIR=${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 360 echo "export MASTER=${MASTER} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 361 echo "export RebuildFrequency=${RebuildFrequency} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 362 echo "export DateBegin=${DateBegin} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 363 echo "export PeriodDateEnd=${PeriodDateEnd} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 364 echo "export StandAlone=false " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 365 echo "export RESOL_ATM=${RESOL_ATM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 366 echo "export RESOL_OCE=${RESOL_OCE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 367 echo "export RESOL_ICE=${RESOL_ICE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 368 echo "export RESOL_MBG=${RESOL_MBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 369 echo "export RESOL_SRF=${RESOL_SRF} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 370 echo "export RESOL_SBG=${RESOL_SBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 371 echo "export listVarEnv=${listVarEnv} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 372 echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 373 if [ X${MASTER} = Xtitane ] ; then 374 echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 375 echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 376 fi 377 echo "IGCM_sys_MkdirWork ${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 378 echo "IGCM_debug_Verif_Exit_Post " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 379 echo "IGCM_sys_QsubPost create_se " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 380 if [ X${MASTER} = Xtitane ] ; then 381 echo "EOF" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 382 fi 383 # 384 fi 385 else 386 # 387 IGCM_sys_RshPost <<-EOF 347 # if [ X${MASTER} = Xtitane ] ; then 348 # echo "IGCM_sys_RshPost <<-EOF" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 349 # fi 350 echo "export DEBUG_debug=${DEBUG_debug} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 351 echo "export MODIPSL=${MODIPSL} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 352 echo "export libIGCM_SX=${libIGCM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 353 echo "export libIGCM=${libIGCM_POST} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 354 echo "export SUBMIT_DIR=${SUBMIT_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 355 echo "export POST_DIR=${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 356 echo "export MASTER=${MASTER} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 357 echo "export RebuildFrequency=${RebuildFrequency} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 358 echo "export DateBegin=${DateBegin} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 359 echo "export PeriodDateEnd=${PeriodDateEnd} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 360 echo "export StandAlone=false " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 361 echo "export RESOL_ATM=${RESOL_ATM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 362 echo "export RESOL_OCE=${RESOL_OCE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 363 echo "export RESOL_ICE=${RESOL_ICE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 364 echo "export RESOL_MBG=${RESOL_MBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 365 echo "export RESOL_SRF=${RESOL_SRF} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 366 echo "export RESOL_SBG=${RESOL_SBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 367 echo "export listVarEnv=${listVarEnv} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 368 echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 369 # if [ X${MASTER} = Xtitane ] ; then 370 # echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 371 # echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 372 # fi 373 echo "IGCM_sys_MkdirWork ${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 374 echo "IGCM_debug_Verif_Exit_Post " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 375 echo "IGCM_sys_QsubPost create_se " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 376 # if [ X${MASTER} = Xtitane ] ; then 377 # echo "EOF" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 378 # fi 379 fi 380 else 381 IGCM_sys_RshPost <<-EOF 388 382 export DEBUG_debug=${DEBUG_debug} 389 383 export MODIPSL=${MODIPSL} … … 411 405 IGCM_sys_QsubPost create_se 412 406 EOF 413 #414 fi415 407 fi 416 417 #============== REBUILD POST-TREATMENT =============# 418 if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && [ ! X${config_Post_RebuildFrequency} = XNONE ] ) ; then 419 # ----------------------------------------------------------------------------------- 420 # Function IGCM_FlushRebuild define in rebuild.ksh has not been closed yet. Do it now 421 # ----------------------------------------------------------------------------------- 422 if [ ${DRYRUN} -le 1 ] ; then 423 echo "IGCM_debug_PopStack \"IGCM_FlushRebuild\" " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 424 echo "} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 425 fi 426 if [ ${config_Post_RebuildFromArchive} = true ] ; then 427 IGCM_sys_Put_Dir REBUILD_${PeriodDateBegin} ${REBUILD_DIR} 428 else 429 IGCM_sys_Mv REBUILD_${PeriodDateBegin} ${REBUILD_DIR} 430 fi 408 fi 409 410 #============== REBUILD POST-TREATMENT =============# 411 if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && [ ! X${config_Post_RebuildFrequency} = XNONE ] ) ; then 412 # ----------------------------------------------------------------------------------- 413 # Function IGCM_FlushRebuild define in rebuild.ksh has not been closed yet. Do it now 414 # ----------------------------------------------------------------------------------- 415 if [ ${DRYRUN} -le 1 ] ; then 416 echo "IGCM_debug_PopStack \"IGCM_FlushRebuild\" " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 417 echo "} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 431 418 fi 432 # 433 if [ ${RebuildFrequency} = true ] ; then 434 if ( [ ${config_Post_RebuildFromArchive} = true ] ) ; then 435 IGCM_debug_Print 1 "REBUILD POST-TREATMENT FROM ARCHIVE" 436 echo 437 # 438 script=rebuild_fromArchive 439 else 440 IGCM_debug_Print 1 "REBUILD POST-TREATMENT FROM WORKDIR" 441 echo 442 # 443 script=rebuild_fromWorkdir 444 fi 445 # 446 Script_Post_Output=${script}.${PeriodDateEnd} 447 # 448 listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,REBUILD_DIR,POST_DIR,MASTER,RebuildFromArchive,DateBegin,PeriodDateBegin,PeriodDateEnd,NbRebuildDir,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG" 449 IGCM_sys_RshPost <<-EOF 450 export DEBUG_debug=${DEBUG_debug} 451 export MODIPSL=${MODIPSL} 452 export libIGCM_SX=${libIGCM} 453 export libIGCM=${libIGCM_POST} 454 export SUBMIT_DIR=${SUBMIT_DIR} 455 export REBUILD_DIR=${REBUILD_DIR} 456 export POST_DIR=${POST_DIR} 457 export MASTER=${MASTER} 458 export RebuildFromArchive=${config_Post_RebuildFromArchive} 459 export DateBegin=${DateBegin} 460 export PeriodDateBegin=${PeriodDateBegin} 461 export PeriodDateEnd=${PeriodDateEnd} 462 export NbRebuildDir=${NbRebuildDir} 463 export StandAlone=false 464 export RESOL_ATM=${RESOL_ATM} 465 export RESOL_OCE=${RESOL_OCE} 466 export RESOL_ICE=${RESOL_ICE} 467 export RESOL_MBG=${RESOL_MBG} 468 export RESOL_SRF=${RESOL_SRF} 469 export RESOL_SBG=${RESOL_SBG} 470 export listVarEnv=${listVarEnv} 471 export Script_Post_Output=${Script_Post_Output} 472 . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh 473 . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh 474 IGCM_sys_MkdirWork ${POST_DIR} 475 IGCM_debug_Verif_Exit_Post 476 IGCM_sys_QsubPost ${script} 419 if [ ${config_Post_RebuildFromArchive} = true ] ; then 420 IGCM_sys_Put_Dir REBUILD_${PeriodDateBegin} ${REBUILD_DIR} 421 else 422 IGCM_sys_Mv REBUILD_${PeriodDateBegin} ${REBUILD_DIR} 423 fi 424 fi 425 # 426 if [ ${RebuildFrequency} = true ] ; then 427 if ( [ ${config_Post_RebuildFromArchive} = true ] ) ; then 428 IGCM_debug_Print 1 "REBUILD POST-TREATMENT FROM ARCHIVE" 429 echo 430 # 431 script=rebuild_fromArchive 432 else 433 IGCM_debug_Print 1 "REBUILD POST-TREATMENT FROM WORKDIR" 434 echo 435 # 436 script=rebuild_fromWorkdir 437 fi 438 # 439 Script_Post_Output=${script}.${PeriodDateEnd} 440 # 441 listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,REBUILD_DIR,POST_DIR,MASTER,RebuildFromArchive,DateBegin,PeriodDateBegin,PeriodDateEnd,NbRebuildDir,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG" 442 IGCM_sys_RshPost <<-EOF 443 export DEBUG_debug=${DEBUG_debug} 444 export MODIPSL=${MODIPSL} 445 export libIGCM_SX=${libIGCM} 446 export libIGCM=${libIGCM_POST} 447 export SUBMIT_DIR=${SUBMIT_DIR} 448 export REBUILD_DIR=${REBUILD_DIR} 449 export POST_DIR=${POST_DIR} 450 export MASTER=${MASTER} 451 export RebuildFromArchive=${config_Post_RebuildFromArchive} 452 export DateBegin=${DateBegin} 453 export PeriodDateBegin=${PeriodDateBegin} 454 export PeriodDateEnd=${PeriodDateEnd} 455 export NbRebuildDir=${NbRebuildDir} 456 export StandAlone=false 457 export RESOL_ATM=${RESOL_ATM} 458 export RESOL_OCE=${RESOL_OCE} 459 export RESOL_ICE=${RESOL_ICE} 460 export RESOL_MBG=${RESOL_MBG} 461 export RESOL_SRF=${RESOL_SRF} 462 export RESOL_SBG=${RESOL_SBG} 463 export listVarEnv=${listVarEnv} 464 export Script_Post_Output=${Script_Post_Output} 465 . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh 466 . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh 467 IGCM_sys_MkdirWork ${POST_DIR} 468 IGCM_debug_Verif_Exit_Post 469 IGCM_sys_QsubPost ${script} 477 470 EOF 478 479 fi 480 481 IGCM_debug_PopStack "IGCM_post_Submit" 471 fi 472 473 IGCM_debug_PopStack "IGCM_post_Submit" 482 474 } 483 475 … … 485 477 function IGCM_post_CheckModuloFrequency 486 478 { 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 479 IGCM_debug_PushStack "IGCM_post_CheckModuloFrequency" $* 480 481 # Used by IGCM_config_Check 482 # from 2 libIGCM compatible frequency (*Y, *M, *D, *y, *m, *d) 483 # Issue an exit instruction IGCM_debug_Exit if there modulo is not zero 484 # Input parameter are the name of the variable, not the frequency value itself 485 # example 486 # IGCM_post_ModuloFrequency config_Post_RebuildFrequency config_UserChoices_PeriodLength 487 488 typeset MasterName SlaveName MasterFrequency SlaveFrequency PeriodMasterYear PeriodMasterMonth PeriodMasterDay PeriodSlaveYear PeriodSlaveMonth PeriodSlaveDay 489 490 # Get the name of the variable 491 MasterName=$1 492 SlaveName=$2 493 # Get the value the above name points to 494 MasterFrequency=$( eval echo \${${1}} ) 495 SlaveFrequency=$( eval echo \${${2}} ) 496 497 IGCM_debug_Print 2 "IGCM_post_CheckModuloFrequency : Master=${MasterFrequency} Slave=${SlaveFrequency}" 498 499 case ${MasterFrequency} in 500 *y|*Y) 501 PeriodMasterYear=$( echo ${MasterFrequency} | sed -e "s/[yY]//" ) 502 case ${SlaveFrequency} in 503 *Y|*y) 504 PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" ) 505 if ( [ ${PeriodSlaveYear} -gt ${PeriodMasterYear} ] || \ 506 [ $(( ${PeriodMasterYear} % ${PeriodSlaveYear} )) -ne 0 ] ); then 507 IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 508 IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 509 IGCM_debug_Exit "Check your frequency" 510 fi ;; 511 *M|*m) 512 PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" ) 513 if ( [ ${PeriodSlaveMonth} -gt $(( ${PeriodMasterYear} * 12 )) ] || \ 514 [ $(( ( ${PeriodMasterYear} * 12 ) % ${PeriodSlaveMonth} )) -ne 0 ] ) ; then 515 IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 516 IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 517 IGCM_debug_Exit "Check your frequency" 518 fi ;; 519 *D|*d) 520 PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" ) 521 NbDays=$( IGCM_date_DaysInYear ${year} ) 522 if [ ${config_UserChoices_CalendarType} = 360d ] || [ ${config_UserChoices_CalendarType} = noleap ] ; then 523 if ( [ ${PeriodSlaveDay} -gt $(( ${PeriodMasterYear} * ${NbDays} )) ] || \ 524 [ $(( ( ${PeriodMasterYear} * ${NbDays} ) % ${PeriodSlaveDay} )) -ne 0 ] ; ) then 525 IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 526 IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 527 IGCM_debug_Exit "Check your frequency" 528 fi 529 else 530 IGCM_debug_Print 1 "For ${MasterName} with leap calendar:" 531 IGCM_debug_Print 1 "We have a daily ${SlaveName} frequency and ${MasterName}=${MasterFrequency}" 532 IGCM_debug_Print 1 "No post-treatment. Case not properly handle at this moment by libIGCM. Sorry" 533 IGCM_debug_Exit "Check your frequency ${MasterName} and choose a daily frequency for this one too." 534 fi ;; 535 esac ;; 536 *M|*m) 537 PeriodMasterMonth=$( echo ${MasterFrequency} | sed -e "s/[mM]//" ) 538 case ${SlaveFrequency} in 539 *Y|*y) 540 PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" ) 541 if ( [ ${PeriodMasterMonth} -gt $(( ${PeriodSlaveYear} * 12 )) ] || \ 542 [ $(( ${PeriodMasterMonth} % ( ${PeriodSlaveYear} * 12 ) )) -ne 0 ] ) ; then 543 IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 544 IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 545 IGCM_debug_Exit "Check your frequency" 546 fi ;; 547 *M|*m) 548 PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" ) 549 if ( [ ${PeriodSlaveMonth} -gt ${PeriodMasterMonth} ] || \ 550 [ $(( ${PeriodMasterMonth} % ${PeriodSlaveMonth} )) -ne 0 ] ) ; then 551 IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 552 IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 553 IGCM_debug_Exit "Check your frequency" 554 fi ;; 555 *D|*d) 556 IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 557 IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 558 IGCM_debug_Exit "Check your frequency" ;; 559 esac ;; 560 *D|*d) 561 PeriodMasterDay=$( echo ${MasterFrequency} | sed -e "s/[dD]//" ) 562 case ${SlaveFrequency} in 563 *Y|*y) 564 IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 565 IGCM_debug_Print 1 "${MasterName} frequency ${MasterFrequency}" 566 IGCM_debug_Exit "Check your frequency" ;; 567 *M|*m) 568 IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 569 IGCM_debug_Print 1 "${MasterName} frequency ${MasterFrequency}" 570 IGCM_debug_Exit "Check your frequency" ;; 571 *D|*d) 572 PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" ) 573 if ( [ ${PeriodSlaveDay} -gt ${PeriodMasterDay} ] || \ 574 [ $(( ${PeriodMasterDay} % ${PeriodSlaveDay} )) -ne 0 ] ) ; then 575 IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with" 576 IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}" 577 IGCM_debug_Exit "Check your frequency" 578 fi ;; 579 esac ;; 580 NONE|none) 581 ;; 582 *) 583 IGCM_debug_Print 1 "KeyWord ${MasterFrequency} not allowed for ${MasterName} in config.card" 584 IGCM_debug_Exit "Check your ${MasterName} in config.card" ;; 585 esac 586 587 IGCM_debug_PopStack "IGCM_post_CheckModuloFrequency" 596 588 } 597 589 … … 599 591 function IGCM_post_ModuloRuntimeFrequency 600 592 { 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 593 IGCM_debug_PushStack "IGCM_post_ModuloRuntimeFrequency" $* 594 595 # Used by IGCM_post_Configure 596 # - from libIGCM (config_UserChoices_PeriodLength frequency * CumulPeriod) and 597 # - post-processing compatible frequency (*Y, *M, *D, *y, *m, *d) 598 # --> turn on post-processing submission when their modulo is zero 599 # Input parameter are the name of the variable, not the frequency value itself 600 # example 601 # IGCM_post_ModuloRuntimeFrequency config_Post_SeasonalFrequency config_UserChoices_PeriodLength 602 603 typeset MasterName SlaveName MasterFrequency SlaveFrequency PeriodMasterYear PeriodMasterMonth PeriodMasterDay PeriodSlaveYear PeriodSlaveMonth PeriodSlaveDay 604 605 # Get the name of the variable 606 MasterName=$1 607 SlaveName=$2 608 609 # Get the value the above name points to 610 eval MasterFrequency=\${${1}} 611 eval SlaveFrequency=\${${2}} 612 613 echo 614 IGCM_debug_Print 2 "IGCM_post_ModuloRuntimeFrequency : Master=${MasterFrequency} Slave=${SlaveFrequency} CumulPeriod=${CumulPeriod}" 615 616 case ${MasterFrequency} in 617 *y|*Y) 618 PeriodMasterYear=$( echo ${MasterFrequency} | sed -e "s/[yY]//" ) 619 case ${SlaveFrequency} in 620 *Y|*y) 621 PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" ) 622 if [ $(( ( ${CumulPeriod} * ${PeriodSlaveYear} - ${PeriodOffset} ) % ${PeriodMasterYear} )) -eq 0 ] ; then 623 if [ $(( ${CumulPeriod} * ${PeriodSlaveYear} - ${PeriodOffset} )) -ne 0 ] ; then 624 eval ${post_freq}=true ; POST=true 625 [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterYear} / ${PeriodSlaveYear} )) 626 fi 627 fi;; 628 *M|*m) 629 PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" ) 630 if [ $(( ( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} * 12 ) % ( ${PeriodMasterYear} * 12 ) )) -eq 0 ] ; then 631 if [ $(( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} * 12 )) -ne 0 ] ; then 632 eval ${post_freq}=true ; POST=true 633 [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ( 12 * ${PeriodMasterYear} ) / ${PeriodSlaveMonth} )) 634 fi 635 fi;; 636 *D|*d) 637 PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" ) 638 NbDays=$( IGCM_date_DaysInYear ${year} ) 639 if [ $(( ( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodSlaveDay} ) ) % ( ${NbDays} * ${PeriodMasterYear} / ${PeriodSlaveDay} ) )) -eq 0 ] ; then 640 if [ $(( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodSlaveDay} ) )) -ne 0 ] ; then 641 eval ${post_freq}=true ; POST=true 642 [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ( ${NbDays} * ${PeriodMasterYear} ) / ${PeriodSlaveDay} )) 643 fi 644 fi;; 645 esac ;; 646 *M|*m) 647 PeriodMasterMonth=$( echo ${MasterFrequency} | sed -e "s/[mM]//" ) 648 case ${SlaveFrequency} in 649 *Y|*y) 650 PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" ) 651 if [ $(( ( ${CumulPeriod} * ${PeriodSlaveYear} * 12 - ${PeriodOffset} ) % ( ${PeriodMasterMonth} ) )) -eq 0 ] ; then 652 if [ $(( ${CumulPeriod} * ${PeriodSlaveYear} * 12 - ${PeriodOffset} )) -ne 0 ] ; then 653 eval ${post_freq}=true ; POST=true 654 [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterMonth} / ( 12 * ${PeriodSlaveYear} ) )) 655 fi 656 fi;; 657 *M|*m) 658 PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" ) 659 if [ $(( ( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} ) % ${PeriodMasterMonth} )) -eq 0 ] ; then 660 if [ $(( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} )) -ne 0 ] ; then 661 eval ${post_freq}=true ; POST=true 662 [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterMonth} / ${PeriodSlaveMonth} )) 663 fi 664 fi;; 665 *D|*d) 666 IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with" 667 IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;; 668 esac ;; 669 *D|*d) 670 PeriodMasterDay=$( echo ${MasterFrequency} | sed -e "s/[dD]//" ) 671 case ${SlaveFrequency} in 672 *Y|*y) 673 IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with" 674 IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;; 675 *M|*m) 676 IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with" 677 IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;; 678 *D|*d) 679 PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" ) 680 if [ $(( ( ${CumulPeriod} * ${PeriodSlaveDay} - ${PeriodOffset} ) % ${PeriodMasterDay} )) -eq 0 ] ; then 681 if [ $(( ${CumulPeriod} * ${PeriodSlaveDay} - ${PeriodOffset} )) -ne 0 ] ; then 682 eval ${post_freq}=true ; POST=true 683 [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterDay} / ${PeriodSlaveDay} )) 684 fi 685 fi;; 686 esac ;; 687 NONE|none) 688 ;; 689 *) 690 IGCM_debug_Print 1 "KeyWord not allowed for ${post_freq} in config.card" 691 ;; 692 esac 693 694 IGCM_debug_PopStack "IGCM_post_ModuloRuntimeFrequency" 703 695 }
Note: See TracChangeset
for help on using the changeset viewer.