#!/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 POST NbDays PeriodEndJul PostEndJul LengthDays POST=false #================================== # Define variable ${config_Post_${post_freq}} # who contains frequency for specific post-treatment IGCM_card_DefineArrayFromSection ${SUBMIT_DIR}/config.card Post for option in ${config_Post[*]} ; do IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card Post ${option} done # READ TIME SERIES OR SEASONAL FREQUENCY # AND TURN ON THE FLAG WHEN MODULO IS ZERO for post_freq in TimeSeriesFrequency SeasonalFrequency ; do # # Initialize # eval ${post_freq}=false # # 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 # # For each componant select determine which files need post-processing # for comp in ${config_ListOfComponents[*]} ; do # #echo "-----" eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1 ListFilesName=${compname}_OutputFiles_List eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 # if [ X${FileName0} != X${NULL_STR} ] ; then # #IGCM_debug_Print 1 "Component : ${compname}" # # INITIALISATION # eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 typeset i=0 # until [ $i -eq $NbFiles ]; do # eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 eval file_in=${file_in_} let $(( i_ = i+2 )) eval flag_post_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 eval flag_post=${flag_post_} # if [ X${flag_post} != XNONE ] ; then # 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 fi let $(( i=i+3 )) done fi done 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 set -vx 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_SRF" # 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 # TsTask=${Dimension} # if [ ${RebuildFrequency} = true ] ; 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_SRF=${RESOL_SRF} >> ${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 # 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_SRF=${RESOL_SRF} 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[@]} 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 ] ; 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_SRF=${RESOL_SRF} >> ${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 # 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_SRF=${RESOL_SRF} 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 set +vx #============= 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_SRF" if [ ${RebuildFrequency} = true ] ; 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_SRF=${RESOL_SRF} >> ${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_SRF=${RESOL_SRF} 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 ( [ ${config_Post_RebuildFromArchive} = true ] && [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && [ ! X${config_Post_RebuildFrequency} = XNONE ] ) ; then IGCM_sys_Put_Dir REBUILD_${PeriodDateBegin} ${REBUILD_DIR} 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,RebuildFromArchive,POST_DIR,DateBegin,PeriodDateBegin,PeriodDateEnd,NbRebuildDir,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_SRF" 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 RebuildFromArchive=${config_Post_RebuildFromArchive} export REBUILD_DIR=${REBUILD_DIR} export POST_DIR=${POST_DIR} 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_SRF=${RESOL_SRF} 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 IGCM_debug_Print 2 "NOT FULLY SUPPORTED" IGCM_debug_Print 2 "EXIT NOW TO AVOID BIG PROBLEM" IGCM_debug_Print 2 "Contact libIGCM developpers" # IGCM_debug_Exit "FATAL ERROR IN REBUILD CONFIGURATION" IGCM_debug_Verif_Exit # # typeset listVarEnv # listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,REBUILD_DIR,RebuildFromArchive,POST_DIR,DateBegin,PeriodDateBegin,PeriodDateEnd,NbRebuildDir,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_SRF" # export DEBUG_debug=${DEBUG_debug} # export MODIPSL=${MODIPSL} # export libIGCM_SX=${libIGCM} # export libIGCM=${libIGCM} # export SUBMIT_DIR=${SUBMIT_DIR} # export RebuildFromArchive=${config_Post_RebuildFromArchive} # export REBUILD_DIR=${REBUILD_DIR} # export POST_DIR=${libIGCM} # 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_SRF=${RESOL_SRF} # export listVarEnv=${listVarEnv} # IGCM_sys_Qsub rebuild_fromWorkdir ${libIGCM} fi fi IGCM_debug_PopStack "IGCM_post_Submit" }