Changeset 116 for trunk


Ignore:
Timestamp:
05/05/09 11:06:24 (15 years ago)
Author:
sdipsl
Message:

New option that goes together with SeasonalFrequency? : SeasonalFrequencyOffset?.
Let you compute seasonal average with an offset. So you can skip spinup period
and average only when stabilization is good

SeasonalFrequencyOffset? must be a scalar (no letter), same unit as SeasonalFrequency?
Need documentation ...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libIGCM/libIGCM_post/libIGCM_post.ksh

    r108 r116  
    166166    POST=false 
    167167 
     168    #================================== 
     169    # Define variable ${config_Post_${post_freq}} 
     170    # who contains frequency for specific post-treatment 
     171    IGCM_card_DefineArrayFromSection ${SUBMIT_DIR}/config.card Post 
     172 
     173    for option in ${config_Post[*]} ; do 
     174        IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card Post ${option} 
     175    done 
     176 
    168177    # READ TIME SERIES OR SEASONAL FREQUENCY 
    169178    # AND TURN ON THE FLAG WHEN MODULO IS ZERO 
     
    174183        eval ${post_freq}=false 
    175184        # 
    176         # Define the variable ${config_Post_${post_freq}} 
    177         # who contains frequency for specific post-treatment 
    178         # 
    179         IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card Post ${post_freq} 
    180         # 
    181         # Extract frequency from above variable 
     185        # Extract frequency from previously defined variable 
    182186        # 
    183187        config_Post_post_freq=$( eval echo \${config_Post_${post_freq}} ) 
     188        # 
     189        # Offset for Seasonal Average starting period 
     190        # 
     191        if [ ${post_freq} = SeasonalFrequency ] ; then 
     192            if ( [ X${config_Post_SeasonalFrequencyOffset} = X${NULL_STR} ] || [ X${config_Post_SeasonalFrequencyOffset} = XNONE ] || X${config_Post_SeasonalFrequencyOffset} = X ) ; then 
     193                PeriodOffset=0 
     194            else 
     195                PeriodOffset=$( echo ${config_Post_SeasonalFrequencyOffset} | sed -e "s/[yY]//" ) 
     196            fi 
     197        else 
     198            PeriodOffset=0 
     199        fi 
    184200        # 
    185201        if ( [ X${config_Post_post_freq} = X${NULL_STR} ] || [ X${config_Post_post_freq} = XNONE ] ) ; then 
     
    220236                            *y|*Y) 
    221237                                PeriodYear=$( echo ${config_Post_post_freq} | sed -e "s/[yY]//" ) 
     238                                # 
    222239                                case ${config_UserChoices_PeriodLength} in 
    223240                                    *Y|*y) 
    224241                                        PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[yY]//" ) 
    225242                                        if [ ${PeriodPost} -le ${PeriodYear} ] ; then 
    226                                             if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} )) % ${PeriodYear} ) -eq 0 ] ;  then 
    227                                                 eval ${post_freq}=true 
    228                                                 POST=true 
     243                                            if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) % ${PeriodYear} ) -eq 0 ] ;  then 
     244                                                [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) -ne 0 ] && eval ${post_freq}=true 
     245                                                [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) -ne 0 ] && POST=true 
    229246                                            fi 
    230247                                        else 
     
    235252                                        PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[mM]//" ) 
    236253                                        if [ ${PeriodPost} -le $(( ${PeriodYear} * 12 )) ] ; then 
    237                                             if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} )) % $(( ${PeriodYear} * 12 )) ) -eq 0 ] ; then 
    238                                                 eval ${post_freq}=true 
    239                                                 POST=true 
     254                                            if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} * 12 )) % $(( ${PeriodYear} * 12 )) ) -eq 0 ] ; then 
     255                                                [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} * 12 )) -ne 0 ] && eval ${post_freq}=true 
     256                                                [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} * 12 )) -ne 0 ] && POST=true 
    240257                                            fi 
    241258                                        else 
     
    248265                                        if [ ${config_UserChoices_CalendarType} = 360d ] | [ ${config_UserChoices_CalendarType} = noleap ] ; then 
    249266                                            if [ ${PeriodPost} -le $(( ${PeriodYear} * ${NbDays} )) ] ; then 
    250                                                 if [ $( expr ${CumulPeriod} % $( expr \( ${NbDays} \* ${PeriodYear} \/ ${PeriodPost} \) ) ) -eq 0 ] ; then 
    251                                                     eval ${post_freq}=true 
    252                                                     POST=true 
     267                                                if [ $( expr $(( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodPost} ) )) % \ 
     268                                                     $(( ${NbDays} * ${PeriodYear} / ${PeriodPost} )) ) -eq 0 ] ; then 
     269                                                    [ $(( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodPost} ) )) -ne 0 ] && eval ${post_freq}=true 
     270                                                    [ $(( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodPost} ) )) -ne 0 ] POST=true 
    253271                                                fi 
    254272                                            else 
     
    274292                                esac ;; 
    275293                            *M|*m) 
    276                                 PeriodMonth=$( echo ${config_Post_RebuildFrequency} | sed -e "s/[mM]//" ) 
     294                                PeriodMonth=$( echo ${config_Post_post_freq} | sed -e "s/[mM]//" ) 
    277295                                case ${config_UserChoices_PeriodLength} in 
    278296                                    *Y|*y) 
     
    282300                                        PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[mM]//" ) 
    283301                                        if [ ${PeriodPost} -le ${PeriodMonth} ] ; then 
    284                                             if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} )) % ${PeriodMonth}  ) -eq 0 ] ;  then 
    285                                                 eval ${post_freq}=true 
    286                                                 POST=true 
     302                                            if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} -  ${PeriodOffset} )) % ${PeriodMonth}  ) -eq 0 ] ;  then 
     303                                                [ $(( ${CumulPeriod} * ${PeriodPost} -  ${PeriodOffset} )) -ne 0 ] && eval ${post_freq}=true 
     304                                                [ $(( ${CumulPeriod} * ${PeriodPost} -  ${PeriodOffset} )) -ne 0 ] && POST=true 
    287305                                            fi 
    288306                                        else 
     
    295313                                esac ;; 
    296314                            *D|*d) 
    297                                 PeriodDay=$( echo ${config_Post_RebuildFrequency} | sed -e "s/[dD]//" ) 
     315                                PeriodDay=$( echo ${config_Post_post_freq} | sed -e "s/[dD]//" ) 
    298316                                case ${config_UserChoices_PeriodLength} in 
    299317                                    *Y|*y) 
     
    306324                                        PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[dD]//" ) 
    307325                                        if [ ${PeriodPost} -le ${PeriodDay} ] ; then 
    308                                             if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} )) % ${PeriodDay}  ) -eq 0 ] ;  then 
    309                                                 eval ${post_freq}=true 
    310                                                 POST=true 
     326                                            if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) % ${PeriodDay}  ) -eq 0 ] ;  then 
     327                                                [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) -ne 0 ] && eval ${post_freq}=true 
     328                                                [ $(( ${CumulPeriod} * ${PeriodPost} - ${PeriodOffset} )) -ne 0 ] && POST=true 
    311329                                            fi 
    312330                                        else 
Note: See TracChangeset for help on using the changeset viewer.