source: trunk/libIGCM/AA_SE_Checker @ 409

Last change on this file since 409 was 409, checked in by sdipsl, 13 years ago
  • correct bug with TS 3D without chunck see ticket #52
  • catch return code from all nco operator except ncrcat and exit if SpaceName? is PROD. clean error code handling. Special case for cdo command. see ticket #51
    • it means that if SpaceName?=PROD all must run absolutely perfectly ; otherwise libIGCM will stop.
  • For Smooth file, first access is always true for Period=1. Get Files when SmoothMin?<CumulPeriod?<SmoothMax? and modulo [min]:[modulo:][max] is true. see ticket #44
  • Under testing : do not use unless you are willing to help testing.
  • Property svn:keywords set to Revision Author Date
File size: 7.8 KB
Line 
1#!/bin/ksh
2
3#**************************************************************
4# Author: Sebastien Denvil
5# Contact: Sebastien.Denvil__at__ipsl.jussieu.fr
6# $Revision::                                          $ Revision of last commit
7# $Author::                                            $ Author of last commit
8# $Date::                                              $ Date of last commit
9# IPSL (2006)
10#  This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC
11#
12#**************************************************************
13
14# Check that everything went well during seasonal average production
15# Display a short report
16# Launch what's missing
17# For use during a run (not on the end : PeriodState=Completed), it will complete
18# all TS to last PeriodDateEnd value, give by run.card->Configuration->OldPrefix string.
19
20# Chemin vers libIGCM
21libIGCM=${libIGCM:=::modipsl::/libIGCM}
22# Attention : à changer si la machine de post-traitement n'est pas la frontale du serveur de calcul !
23#             voir précence de la variable MirrorlibIGCM dans votre couche systÚme.
24
25# Expericence class of the run
26ExperimentName=${ExperimentName:=historical}
27
28# Name of this job
29JobName=${JobName:=v2.historical1}
30
31# répertoire courrant
32CURRENT_DIR=$( pwd )
33
34# Emplacement des cartes
35CARD_DIR=${CARD_DIR:=${CURRENT_DIR}/${ExperimentName}/${JobName}}
36
37# répertoire de stockage des sorties des create_ts
38POST_DIR=${POST_DIR:=${CARD_DIR}/OutScript}
39
40if [ ! -d ${CARD_DIR} ]; then
41    echo "No ${CARD_DIR}, we stop here"
42    exit
43fi
44
45########################################################################
46
47. ${libIGCM}/libIGCM_debug/libIGCM_debug.ksh ;
48. ${libIGCM}/libIGCM_sys/libIGCM_sys.ksh     #; IGCM_debug_Check
49. ${libIGCM}/libIGCM_card/libIGCM_card.ksh   #; IGCM_card_Check
50. ${libIGCM}/libIGCM_date/libIGCM_date.ksh   #; IGCM_date_Check
51
52########################################################################
53
54#set -vx
55
56# First of all
57IGCM_card_DefineArrayFromSection       ${CARD_DIR}/config.card UserChoices
58typeset option
59for option in ${config_UserChoices[*]} ; do
60    IGCM_card_DefineVariableFromOption ${CARD_DIR}/config.card UserChoices ${option}
61done
62
63echo
64IGCM_debug_Print 1 "DefineVariableFromOption  : config_UserChoices"
65IGCM_debug_PrintVariables 3 config_UserChoices_JobName
66#IGCM_debug_PrintVariables 3 config_UserChoices_SpaceName
67#IGCM_debug_PrintVariables 3 config_UserChoices_ExperimentName
68IGCM_debug_PrintVariables 3 config_UserChoices_CalendarType
69IGCM_debug_PrintVariables 3 config_UserChoices_DateBegin
70IGCM_debug_PrintVariables 3 config_UserChoices_DateEnd
71
72DateEnd=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateEnd} )
73DateBegin=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateBegin} )
74
75IGCM_date_GetYearMonth ${DateBegin} YearBegin MonthBegin
76IGCM_date_GetYearMonth ${DateEnd}   YearEnd   MonthEnd
77
78echo
79IGCM_debug_Print 1 "DateBegin for SE_Checker : "${DateBegin}
80IGCM_debug_Print 1 "DateEnd   for SE_Checker : "${DateEnd}
81echo
82
83#====================================================
84#R_SAVE : Job output directory
85if ( [ ! X${config_UserChoices_SpaceName} = X ] && [ ! X${config_UserChoices_ExperimentName} = X ] ) ; then
86    FreeName=$( echo ${config_UserChoices_JobName} | sed 's/.*_//' )
87    R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName}
88    R_DODS=${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName}
89else
90    R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_UserChoices_JobName}
91    R_DODS=${config_UserChoices_TagName}/${config_UserChoices_JobName}
92fi
93
94IGCM_card_DefineArrayFromSection ${CARD_DIR}/config.card ListOfComponents
95
96IGCM_card_DefineVariableFromOption ${CARD_DIR}/config.card Post SeasonalFrequency
97#
98[ X${config_Post_SeasonalFrequency} = X"NONE" ] && exit
99
100freq=$( echo ${config_Post_SeasonalFrequency} |  sed -e "s/[yY]//" )
101
102an_deb=$( IGCM_date_YearDigit $(( DateBegin / 10000 )) )
103an_fin_all=$( IGCM_date_YearDigit $(( DateEnd / 10000 )) )
104an_fin=$( IGCM_date_YearDigit $(( an_deb + freq - 1 )) )
105
106#
107while [ ${an_fin} -le ${an_fin_all} ] ; do
108
109    countTotal=0
110    countGood=0
111    countBad=0
112   
113    IGCM_debug_Print 1 " DateBegin/End for SE :  ${an_deb}_${an_fin} "
114   
115    for comp in ${config_ListOfComponents[*]} ; do
116        localcountBad=0
117        # Debug Print
118        IGCM_debug_Print 1 ${comp}
119        # Define component
120        IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp}
121        eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1
122       
123        # Read libIGCM compatibility version in ${compname}.card
124        card=${CARD_DIR}/COMP/${compname}.card
125       
126        # Read and Build Output File stuff
127        #IGCM_debug_Print 1 "DefineArrayFromOption  : ${compname}_OutputFiles ${card}"
128        IGCM_card_DefineArrayFromOption ${card} OutputFiles List
129        ListFilesName=${compname}_OutputFiles_List
130        eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1
131        #
132        if [ X${FileName0} != X${NULL_STR} ] ; then
133            #
134            # INITIALISATION
135            #
136            eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1
137            typeset i=2
138            #
139            until [ $i -gt $NbFiles ]; do
140                #
141                eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1
142                #
143                if [ X${flag_post} != XNONE ] ; then
144                    #
145                    # Check if seasonal is required for this file
146                    #
147                    IGCM_card_DefineArrayFromSection ${card} ${flag_post}
148                    #
149                    # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default
150                    #
151                    # variable option allready typeset above
152                    for option in $( eval echo \${${compname}_${flag_post}[*]} ) ; do
153                        if [ ${option} = Seasonal ] ; then
154                            FoundSeasonal=true
155                            IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal
156                        fi
157                    done
158                    #
159                    if [ ! X${FoundSeasonal} = Xtrue ] ; then
160                        eval ${compname}_${flag_post}_Seasonal=ON
161                    fi
162                    #
163                    if [ ! X$( eval echo \${${compname}_${flag_post}_Seasonal} ) = XON ] ; then
164                        (( i=i+3 ))
165                        continue
166                    fi
167                    #
168                    # CREATE LIST
169                    #
170                    FILE=$( echo ${flag_post} | awk "-FPost_" '{print $2}' )
171                    #
172                    DIRECTORY=${R_SAVE}/${comp}/Analyse/SE
173                    #
174                    TestedFile=${config_UserChoices_JobName}_SE_${an_deb}_${an_fin}_${FILE}.nc
175                    #
176                    (( countTotal = countTotal + 1 ))
177                    IGCM_sys_TestFileArchive ${DIRECTORY}/${TestedFile} >/dev/null 2>&1
178                    if [ ! $? = 0 ] ; then
179                        eval set +A LISTE_FILE_${comp}_${an_deb} \$\{LISTE_FILE_${comp}_${an_deb}[*]} ${TestedFile}
180                        (( countBad = countBad + 1 ))
181                        (( localcountBad = localcountBad + 1 ))
182                    else
183                        (( countGood = countGood + 1 ))
184                    fi
185                fi
186                (( i=i+3 )) # to explore file list
187            done            # until [ $i -eq $NbFiles ]
188        fi                  # [ X${FileName0} != X${NULL_STR} ]
189       
190        [ $localcountBad = 0 ] || IGCM_debug_Print 1 "$localcountBad file(s) missing for ${comp} : " $( eval echo \${LISTE_FILE_${comp}_${an_deb}[*]} )
191    done
192   
193    # create_se submit if files don't exist
194    if [ $countGood != $countTotal ] ; then
195        IGCM_debug_Print 2 -e "\033[1;31mSubmit create_se \033[m for period ${an_deb}-${an_fin}"
196       
197        listVarEnv="libIGCM,SUBMIT_DIR,POST_DIR,DateBegin,PeriodDateEnd,RebuildFrequency,RESOL_ATM,RESOL_SRF,RESOL_SBG,RESOL_OCE,RESOL_ICE,RESOL_MBG"
198        export libIGCM=${libIGCM}
199        export SUBMIT_DIR=${SUBMIT_DIR}
200        export POST_DIR=${POST_DIR}
201        export DateBegin=${an_deb}
202        export PeriodDateEnd=${an_fin}1231
203        export RebuildFrequency=${RebuildFrequency}
204        export RESOL_ATM=${RESOL_ATM}
205        export RESOL_SRF=${RESOL_SRF}
206        export RESOL_SBG=${RESOL_SBG}
207        export RESOL_OCE=${RESOL_OCE}
208        export RESOL_ICE=${RESOL_ICE}
209        export RESOL_MBG=${RESOL_MBG}
210        export listVarEnv=${listVarEnv}
211        IGCM_sys_MkdirWork ${POST_DIR}
212        IGCM_debug_Verif_Exit
213        Script_Post_Output=create_se.${PeriodDateEnd}
214        IGCM_sys_QsubPost create_se
215
216        echo
217    fi
218
219    (( an_deb = an_deb + freq ))
220    (( an_fin = an_fin + freq ))
221   
222done # while
Note: See TracBrowser for help on using the repository browser.