#!/bin/ksh #************************************************************** # Author: Sebastien Denvil # Contact: Sebastien.Denvil@ipsl.jussieu.fr # $Date$ # $Author$ # $Revision$ # IPSL (2006) # This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC # History: # Modification: # #************************************************************** #======================================================================= function IGCM_post_Configure { IGCM_debug_PushStack "IGCM_post_Configure" # Debug Print : echo IGCM_debug_Print 1 "IGCM_post_Configure :" echo typeset NbDays PeriodEndJul PostEndJul PeriodPost RebuildFrequency=false if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && [ ! X${config_Post_RebuildFrequency} = XNONE ] ) ; then IGCM_debug_Print 1 "Asynchronous rebuild has been activated." echo case ${config_Post_RebuildFrequency} in *y|*Y) PeriodYear=$( echo ${config_Post_RebuildFrequency} | sed -e "s/[yY]//" ) case ${config_UserChoices_PeriodLength} in *Y|*y) PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[yY]//" ) if [ ${PeriodPost} -le ${PeriodYear} ] ; then if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} )) % ${PeriodYear} ) -eq 0 ] ; then RebuildFrequency=true NbRebuildDir=$( expr ${PeriodYear} / ${PeriodPost} ) fi else IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "RebuildFrequency frequency : ${config_Post_RebuildFrequency}" fi ;; *M|*m) PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[mM]//" ) if [ ${PeriodPost} -le $(( ${PeriodYear} * 12 )) ] ; then if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} )) % $(( ${PeriodYear} * 12 )) ) -eq 0 ] ; then RebuildFrequency=true NbRebuildDir=$( expr $(( 12 * ${PeriodYear} )) / ${PeriodPost} ) fi else IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "RebuildFrequency frequency : ${config_Post_RebuildFrequency}" fi ;; *D|*d) PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[dD]//" ) NbDays=$( IGCM_date_DaysInYear ${year} ) if [ ${config_UserChoices_CalendarType} = 360d ] || [ ${config_UserChoices_CalendarType} = noleap ] ; then if [ ${PeriodPost} -le $(( ${PeriodYear} * ${NbDays} )) ] ; then if [ $( expr ${CumulPeriod} % $( expr \( ${NbDays} \* ${PeriodYear} \/ ${PeriodPost} \) ) ) -eq 0 ] ; then RebuildFrequency=true NbRebuildDir=$( expr $(( ${NbDays} * ${PeriodYear} )) / ${PeriodPost} ) fi else IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "RebuildFrequency frequency : ${config_Post_RebuildFrequency}" fi else # if [ ${PeriodYear} -eq 1 ] ; then # PeriodEndJul=$( IGCM_date_ConvertGregorianDateToJulian ${PeriodDateEnd} ) # PostEndJul=${year}${NbDays} # #echo "PeriodYear=${PeriodYear} NbDays=${NbDays}" # #echo "PeriodEndJul=${PeriodEndJul} PostEndJul=${PostEndJul}" # if [ ${PostEndJul} -eq ${PeriodEndJul} ] ; then # RebuildFrequency=true # NbRebuildDir=$( expr ${NbDays} / ${PeriodPost} ) # fi # else IGCM_debug_Print 3 "For RebuildFrequency with leap calendar:" IGCM_debug_Print 3 "We have a daily PeriodLength frequency and RebuildFrequency=${PeriodYear}Y." IGCM_debug_Print 3 "No post-treatment. Case not properly handle at this moment." # fi fi;; esac ;; *M|*m) PeriodMonth=$( echo ${config_Post_RebuildFrequency} | sed -e "s/[mM]//" ) case ${config_UserChoices_PeriodLength} in *Y|*y) IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "RebuildFrequency frequency ${config_Post_RebuildFrequency}" ;; *M|*m) PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[mM]//" ) if [ ${PeriodPost} -le ${PeriodMonth} ] ; then if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} )) % ${PeriodMonth} ) -eq 0 ] ; then RebuildFrequency=true NbRebuildDir=$( expr ${PeriodMonth} / ${PeriodPost} ) fi else IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "RebuildFrequency frequency : ${config_Post_RebuildFrequency}" fi ;; *D|*d) IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "RebuildFrequency frequency : ${config_Post_RebuildFrequency}" ;; esac ;; *D|*d) PeriodDay=$( echo ${config_Post_RebuildFrequency} | sed -e "s/[dD]//" ) case ${config_UserChoices_PeriodLength} in *Y|*y) IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "RebuildFrequency frequency ${config_Post_RebuildFrequency}" ;; *M|*m) IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "RebuildFrequency frequency ${config_Post_RebuildFrequency}" ;; *D|*d) PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[dD]//" ) if [ ${PeriodPost} -le ${PeriodDay} ] ; then if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} )) % ${PeriodDay} ) -eq 0 ] ; then RebuildFrequency=true NbRebuildDir=$( expr ${PeriodDay} / ${PeriodPost} ) fi else IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "RebuildFrequency frequency : ${config_Post_RebuildFrequency}" fi ;; esac ;; NONE|none) ;; *) IGCM_debug_Print 3 "KeyWord not allowed for RebuildFrequency in config.card" ;; esac else # IGCM_debug_Print 1 "Asynchronous rebuild has not been activated" IGCM_debug_Print 1 "Proceed with standard post-treatment pathway" echo # fi IGCM_debug_Print 1 "RebuildFrequency flag value : ${RebuildFrequency}" IGCM_post_Initialize IGCM_debug_PopStack "IGCM_post_Configure" } function IGCM_post_Initialize { IGCM_debug_PushStack "IGCM_post_Initialize" # Debug Print : echo IGCM_debug_Print 1 "IGCM_post_Initialize :" echo typeset NbDays PeriodEndJul PostEndJul # # Initialize # POST=false TimeSeriesFrequency=false SeasonalFrequency=false # # ONLY IF SOMETHING NEEDS TO BE DONE (EATHER TIME SERIES OR SEASONAL) COMPUTE THE MODULOS # if ( [ X${TimeSeries} = Xtrue ] || [ X${TimeSeries2D} = Xtrue ] || [ X${TimeSeries3D} = Xtrue ] ) ; then list_post=TimeSeriesFrequency fi # if [ X${Seasonal} = Xtrue ] ; then list_post="${list_post} SeasonalFrequency" fi # # READ TIME SERIES OR SEASONAL FREQUENCY # AND TURN ON THE SUBMISSION FLAG WHEN MODULO IS ZERO # for post_freq in ${list_post} ; do # # Extract frequency from previously defined variable # config_Post_post_freq=$( eval echo \${config_Post_${post_freq}} ) # # Offset for Seasonal Average starting period # if [ ${post_freq} = SeasonalFrequency ] ; then if ( [ X${config_Post_SeasonalFrequencyOffset} = X${NULL_STR} ] || [ X${config_Post_SeasonalFrequencyOffset} = XNONE ] || [ X${config_Post_SeasonalFrequencyOffset} = X ] ) ; then PeriodOffset=0 else PeriodOffset=${config_Post_SeasonalFrequencyOffset} fi else PeriodOffset=0 fi # if ( [ X${config_Post_post_freq} = X${NULL_STR} ] || [ X${config_Post_post_freq} = XNONE ] ) ; then # continue # fi # case ${config_Post_post_freq} in *y|*Y) PeriodYear=$( echo ${config_Post_post_freq} | sed -e "s/[yY]//" ) # case ${config_UserChoices_PeriodLength} in *Y|*y) PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[yY]//" ) if [ ${PeriodPost} -le ${PeriodYear} ] ; then if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) % ${PeriodYear} ) -eq 0 ] ; then [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) -ne 0 ] && eval ${post_freq}=true [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) -ne 0 ] && POST=true fi else IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " fi ;; *M|*m) PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[mM]//" ) if [ ${PeriodPost} -le $(( ${PeriodYear} * 12 )) ] ; then if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} * 12 )) % $(( ${PeriodYear} * 12 )) ) -eq 0 ] ; then [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} * 12 )) -ne 0 ] && eval ${post_freq}=true [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} * 12 )) -ne 0 ] && POST=true fi else IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " fi ;; *D|*d) PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[dD]//" ) NbDays=$( IGCM_date_DaysInYear ${year} ) if [ ${config_UserChoices_CalendarType} = 360d ] | [ ${config_UserChoices_CalendarType} = noleap ] ; then if [ ${PeriodPost} -le $(( ${PeriodYear} * ${NbDays} )) ] ; then if [ $( expr $(( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodPost} ) )) % \ $(( ${NbDays} * ${PeriodYear} / ${PeriodPost} )) ) -eq 0 ] ; then [ $(( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodPost} ) )) -ne 0 ] && eval ${post_freq}=true [ $(( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodPost} ) )) -ne 0 ] POST=true fi else IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " fi else # if [ ${PeriodYear} -eq 1 ] ; then # PeriodEndJul=$( IGCM_date_ConvertGregorianDateToJulian ${PeriodDateEnd} ) # PostEndJul=${year}${NbDays} # #echo "PeriodYear=${PeriodYear} NbDays=${NbDays}" # #echo PeriodEndJul=${PeriodEndJul} PostEndJul=${PostEndJul}" # if [ ${PostEndJul} -le ${PeriodEndJul} ] ; then # eval ${post_freq}=true # POST=true # fi # else IGCM_debug_Print 3 "For ${post_freq} with leap calendar, for ${comp} and ${file_in} :" IGCM_debug_Print 3 "We have a daily PeriodLength frequency and RebuildFrequency=${PeriodYear}Y." IGCM_debug_Print 3 "No post-treatment. Case not properly handle at this moment." # fi fi;; esac ;; *M|*m) PeriodMonth=$( echo ${config_Post_post_freq} | sed -e "s/[mM]//" ) case ${config_UserChoices_PeriodLength} in *Y|*y) IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " ;; *M|*m) PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[mM]//" ) if [ ${PeriodPost} -le ${PeriodMonth} ] ; then if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) % ${PeriodMonth} ) -eq 0 ] ; then [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) -ne 0 ] && eval ${post_freq}=true [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) -ne 0 ] && POST=true fi else IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " fi;; *D|*d) IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " ;; esac ;; *D|*d) PeriodDay=$( echo ${config_Post_post_freq} | sed -e "s/[dD]//" ) case ${config_UserChoices_PeriodLength} in *Y|*y) IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " ;; *M|*m) IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " ;; *D|*d) PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[dD]//" ) if [ ${PeriodPost} -le ${PeriodDay} ] ; then if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) % ${PeriodDay} ) -eq 0 ] ; then [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) -ne 0 ] && eval ${post_freq}=true [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) -ne 0 ] && POST=true fi else IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " fi;; esac ;; NONE|none) ;; *) IGCM_debug_Print 3 "KeyWord not allowed for ${post_freq} in config.card" ;; esac done # if ( [ ! X${config_Post_TimeSeriesFrequency} = X${NULL_STR} ] && \ [ ! X${config_Post_TimeSeriesFrequency} = XNONE ] && \ [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then TimeSeriesFrequency=true POST=true fi if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && \ [ ! X${config_Post_RebuildFrequency} = XNONE ] && \ [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then RebuildFrequency=true POST=true fi # IGCM_debug_Print 1 "POST-TREATEMENT flag value : ${POST}" # IGCM_post_Submit IGCM_debug_PopStack "IGCM_post_Initialize" } function IGCM_post_Submit { IGCM_debug_PushStack "IGCM_post_Submit" POST_DIR=${R_OUT_POST}/${config_UserChoices_TagName}/${config_UserChoices_JobName} if [ ${POST} = true ]; then echo IGCM_debug_Print 1 "IGCM_post_Submit :" echo IGCM_debug_Print 1 "POST_DIR = ${POST_DIR}" fi #============ TIME SERIES POST-TREATMENT ===========# if [ ${TimeSeriesFrequency} = true ] ; then IGCM_debug_Print 2 "TIME SERIES POST-PROCESSING ACTIVATED :" echo # Get information from last execution IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted CompletedFlag=${run_PostProcessing_TimeSeriesCompleted} # typeset listVarEnv 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_BIOS,config_UserChoices_JobName,R_SAVE" # jLoop=${#ListDimension[*]} j=0 until [ $j -ge ${jLoop} ]; do Dimension=${ListDimension[${j}]} # if [ X$( eval echo \${TimeSeries${Dimension}} ) = Xtrue ] ; then # IGCM_debug_Print 2 "TIME SERIES POST-PROCESSING ${Dimension} ACTIVATED :" echo # if [ X${Dimension} = X ] ; then TsTask="empty" else TsTask=${Dimension} fi # if [ ${RebuildFrequency} = true ] && [ ${DRYRUN} -le 1 ] ; then # if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then echo "export DEBUG_debug=${DEBUG_debug} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export MODIPSL=${MODIPSL} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export libIGCM_SX=${libIGCM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export libIGCM=${libIGCM_POST} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export SUBMIT_DIR=${SUBMIT_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export POST_DIR=${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export MASTER=${MASTER} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RebuildFrequency=${RebuildFrequency} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export DateBegin=${DateBegin} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export PeriodDateEnd=${PeriodDateEnd} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export StandAlone=false " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export CompletedFlag=${CompletedFlag} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export TsTask=${TsTask} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_ATM=${RESOL_ATM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_OCE=${RESOL_OCE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_ICE=${RESOL_ICE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_MBG=${RESOL_MBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_SRF=${RESOL_SRF} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_BIOS=${RESOL_BIOS} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export config_UserChoices_JobName=${config_UserChoices_JobName} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export R_SAVE=${R_SAVE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export listVarEnv=${listVarEnv} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "IGCM_sys_MkdirWork ${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "IGCM_debug_Verif_Exit " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "IGCM_sys_QsubPost create_ts " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh fi # else # IGCM_sys_RshPost <<-EOF export DEBUG_debug=${DEBUG_debug} export MODIPSL=${MODIPSL} export libIGCM_SX=${libIGCM} export libIGCM=${libIGCM_POST} export SUBMIT_DIR=${SUBMIT_DIR} export POST_DIR=${POST_DIR} export MASTER=${MASTER} export RebuildFrequency=${RebuildFrequency} export DateBegin=${DateBegin} export PeriodDateEnd=${PeriodDateEnd} export StandAlone=false export CompletedFlag=${CompletedFlag} export TsTask=${TsTask} export RESOL_ATM=${RESOL_ATM} export RESOL_OCE=${RESOL_OCE} export RESOL_ICE=${RESOL_ICE} export RESOL_MBG=${RESOL_MBG} export RESOL_SRF=${RESOL_SRF} export RESOL_BIOS=${RESOL_BIOS} export config_UserChoices_JobName=${config_UserChoices_JobName} export R_SAVE=${R_SAVE} export listVarEnv=${listVarEnv} . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh IGCM_sys_MkdirWork ${POST_DIR} IGCM_debug_Verif_Exit IGCM_sys_QsubPost create_ts EOF fi fi # if [ X$( eval echo \${TimeSeriesChunck${Dimension}} ) = Xtrue ] ; then # IGCM_debug_Print 2 "TIME SERIES POST-PROCESSING ${Dimension} WITH CHUNCK ACTIVATED :" echo # Need to Remember This One SavedDateBegin=${DateBegin} # Kind of task create_ts will perform TsTask=Chunck${Dimension} # Number of chunck jobs to configure and submit eval NbJob=\${#CHUNCK${Dimension}_COMP[@]} export i=0 until [ $i -ge $NbJob ]; do CompToRead=$( eval echo \${CHUNCK${Dimension}_COMP[\${i}]} ) FlagToRead=$( eval echo \${CHUNCK${Dimension}_FLAG[\${i}]} ) ChunckSize=$( eval echo \${CHUNCK${Dimension}_SIZE[\${i}]} ) # Chunck Length (mandatory in Year) YearsChunckLength=$( echo ${ChunckSize} | sed -e "s/[yY]//" ) # IGCM_date_GetYearMonth ${DateBegin} YearBegin MonthBegin # IGCM_date_GetYearMonth ${PeriodDateEnd} YearEnd MonthEnd # How many chunck in total since simulation began NbYearsChunckLoop=$(( ( ${YearEnd} - ${YearBegin} + 1 ) / ${YearsChunckLength} )) # Tweak special case [ $(( ( ${YearEnd} - ${YearBegin} + 1 ) % ${YearsChunckLength} )) = 0 ] && NbYearsChunckLoop=$(( ${NbYearsChunckLoop} - 1 )) # Starting Year of the current chunck ChunckTsYearBegin=$(( ${NbYearsChunckLoop} * ${YearsChunckLength} + ${YearBegin} )) # Starting date of the current chunck ChunckTsDateBegin=${ChunckTsYearBegin}${MonthBegin}01 # if [ ${RebuildFrequency} = true ] && [ ${DRYRUN} -le 1 ] ; then # if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then echo "export DEBUG_debug=${DEBUG_debug} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export MODIPSL=${MODIPSL} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export libIGCM_SX=${libIGCM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export libIGCM=${libIGCM_POST} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export SUBMIT_DIR=${SUBMIT_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export POST_DIR=${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export MASTER=${MASTER} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RebuildFrequency=${RebuildFrequency} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export DateBegin=${ChunckTsDateBegin} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export PeriodDateEnd=${PeriodDateEnd} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export StandAlone=false " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export CompletedFlag=${CompletedFlag} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export TsTask=${TsTask} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export CompToRead=${CompToRead} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export FlagToRead=${FlagToRead} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_ATM=${RESOL_ATM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_OCE=${RESOL_OCE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_ICE=${RESOL_ICE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_MBG=${RESOL_MBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_SRF=${RESOL_SRF} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_BIOS=${RESOL_BIOS} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export config_UserChoices_JobName=${config_UserChoices_JobName} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export R_SAVE=${R_SAVE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export listVarEnv=${listVarEnv} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "IGCM_sys_MkdirWork ${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "IGCM_debug_Verif_Exit " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "IGCM_sys_QsubPost create_ts " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh fi # else # IGCM_sys_RshPost <<-EOF export DEBUG_debug=${DEBUG_debug} export MODIPSL=${MODIPSL} export libIGCM_SX=${libIGCM} export libIGCM=${libIGCM_POST} export SUBMIT_DIR=${SUBMIT_DIR} export POST_DIR=${POST_DIR} export MASTER=${MASTER} export RebuildFrequency=${RebuildFrequency} export DateBegin=${ChunckTsDateBegin} export PeriodDateEnd=${PeriodDateEnd} export StandAlone=false export CompletedFlag=${CompletedFlag} export TsTask=${TsTask} export CompToRead=${CompToRead} export FlagToRead=${FlagToRead} export RESOL_ATM=${RESOL_ATM} export RESOL_OCE=${RESOL_OCE} export RESOL_ICE=${RESOL_ICE} export RESOL_MBG=${RESOL_MBG} export RESOL_SRF=${RESOL_SRF} export RESOL_BIOS=${RESOL_BIOS} export config_UserChoices_JobName=${config_UserChoices_JobName} export R_SAVE=${R_SAVE} export listVarEnv=${listVarEnv} . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh IGCM_sys_MkdirWork ${POST_DIR} IGCM_debug_Verif_Exit IGCM_sys_QsubPost create_ts EOF # fi # export DateBegin=${SavedDateBegin} # (( i=i+1 )) # done fi (( j=j+1 )) done fi #============= SEASONAL POST-TREATMENT ============# if [ ${SeasonalFrequency} = true ] ; then # IGCM_debug_Print 2 "SEASONNAL POST-TREATMENT :" echo # typeset listVarEnv 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_BIOS,config_UserChoices_JobName,R_SAVE" if [ ${RebuildFrequency} = true ] && [ ${DRYRUN} -le 1 ] ; then # echo "export DEBUG_debug=${DEBUG_debug} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export MODIPSL=${MODIPSL} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export libIGCM_SX=${libIGCM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export libIGCM=${libIGCM_POST} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export SUBMIT_DIR=${SUBMIT_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export POST_DIR=${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export MASTER=${MASTER} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RebuildFrequency=${RebuildFrequency} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export DateBegin=${DateBegin} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export PeriodDateEnd=${PeriodDateEnd} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export StandAlone=false " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_ATM=${RESOL_ATM} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_OCE=${RESOL_OCE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_ICE=${RESOL_ICE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_MBG=${RESOL_MBG} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_SRF=${RESOL_SRF} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export RESOL_BIOS=${RESOL_BIOS} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export config_UserChoices_JobName=${config_UserChoices_JobName} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export R_SAVE=${R_SAVE} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "export listVarEnv=${listVarEnv} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "IGCM_sys_MkdirWork ${POST_DIR} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "IGCM_debug_Verif_Exit " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "IGCM_sys_QsubPost create_se " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh # else # IGCM_sys_RshPost <<-EOF export DEBUG_debug=${DEBUG_debug} export MODIPSL=${MODIPSL} export libIGCM_SX=${libIGCM} export libIGCM=${libIGCM_POST} export SUBMIT_DIR=${SUBMIT_DIR} export POST_DIR=${POST_DIR} export MASTER=${MASTER} export RebuildFrequency=${RebuildFrequency} export DateBegin=${DateBegin} export PeriodDateEnd=${PeriodDateEnd} export StandAlone=false export RESOL_ATM=${RESOL_ATM} export RESOL_OCE=${RESOL_OCE} export RESOL_ICE=${RESOL_ICE} export RESOL_MBG=${RESOL_MBG} export RESOL_SRF=${RESOL_SRF} export RESOL_BIOS=${RESOL_BIOS} export config_UserChoices_JobName=${config_UserChoices_JobName} export R_SAVE=${R_SAVE} export listVarEnv=${listVarEnv} . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh IGCM_sys_MkdirWork ${POST_DIR} IGCM_debug_Verif_Exit IGCM_sys_QsubPost create_se EOF # fi fi #============== REBUILD POST-TREATMENT =============# if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && [ ! X${config_Post_RebuildFrequency} = XNONE ] ) ; then # ----------------------------------------------------------------------------------- # Function IGCM_FlushRebuild define in rebuild.ksh has not been closed yet. Do it now # ----------------------------------------------------------------------------------- if [ ${DRYRUN} -le 1 ] ; then echo "IGCM_debug_PopStack \"IGCM_FlushRebuild\" " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh echo "} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh fi if [ ${config_Post_RebuildFromArchive} = true ] ; then IGCM_sys_Put_Dir REBUILD_${PeriodDateBegin} ${REBUILD_DIR} else IGCM_sys_Mv REBUILD_${PeriodDateBegin} ${REBUILD_DIR} fi fi # if [ ${RebuildFrequency} = true ] ; then # if ( [ ${config_Post_RebuildFromArchive} = true ] ) ; then # IGCM_debug_Print 2 "REBUILD POST-TREATMENT FROM ARCHIVE:" echo # typeset listVarEnv 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_BIOS,config_UserChoices_JobName,R_SAVE" IGCM_sys_RshPost <<-EOF export DEBUG_debug=${DEBUG_debug} export MODIPSL=${MODIPSL} export libIGCM_SX=${libIGCM} export libIGCM=${libIGCM_POST} export SUBMIT_DIR=${SUBMIT_DIR} export REBUILD_DIR=${REBUILD_DIR} export POST_DIR=${POST_DIR} export MASTER=${MASTER} export RebuildFromArchive=${config_Post_RebuildFromArchive} export DateBegin=${DateBegin} export PeriodDateBegin=${PeriodDateBegin} export PeriodDateEnd=${PeriodDateEnd} export NbRebuildDir=${NbRebuildDir} export StandAlone=false export RESOL_ATM=${RESOL_ATM} export RESOL_OCE=${RESOL_OCE} export RESOL_ICE=${RESOL_ICE} export RESOL_MBG=${RESOL_MBG} export RESOL_SRF=${RESOL_SRF} export RESOL_BIOS=${RESOL_BIOS} export config_UserChoices_JobName=${config_UserChoices_JobName} export R_SAVE=${R_SAVE} export listVarEnv=${listVarEnv} . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh IGCM_sys_MkdirWork ${POST_DIR} IGCM_debug_Verif_Exit IGCM_sys_QsubPost rebuild_fromArchive EOF else # IGCM_debug_Print 2 "REBUILD POST-TREATMENT FROM WORKDIR:" echo # typeset listVarEnv 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_BIOS,config_UserChoices_JobName,R_SAVE" IGCM_sys_RshPost <<-EOF export DEBUG_debug=${DEBUG_debug} export MODIPSL=${MODIPSL} export libIGCM_SX=${libIGCM} export libIGCM=${libIGCM_POST} export SUBMIT_DIR=${SUBMIT_DIR} export REBUILD_DIR=${REBUILD_DIR} export POST_DIR=${POST_DIR} export MASTER=${MASTER} export RebuildFromArchive=${config_Post_RebuildFromArchive} export DateBegin=${DateBegin} export PeriodDateBegin=${PeriodDateBegin} export PeriodDateEnd=${PeriodDateEnd} export NbRebuildDir=${NbRebuildDir} export StandAlone=false export RESOL_ATM=${RESOL_ATM} export RESOL_OCE=${RESOL_OCE} export RESOL_ICE=${RESOL_ICE} export RESOL_MBG=${RESOL_MBG} export RESOL_SRF=${RESOL_SRF} export RESOL_BIOS=${RESOL_BIOS} export config_UserChoices_JobName=${config_UserChoices_JobName} export R_SAVE=${R_SAVE} export listVarEnv=${listVarEnv} . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh IGCM_sys_MkdirWork ${POST_DIR} IGCM_debug_Verif_Exit IGCM_sys_QsubPost rebuild_fromWorkdir EOF fi fi IGCM_debug_PopStack "IGCM_post_Submit" }