source: trunk/libIGCM/AA_create_se @ 239

Last change on this file since 239 was 239, checked in by sdipsl, 14 years ago
  • Hopefully the last step towards backward compatibilty
  • Property licence set to
    The following licence information concerns ONLY the libIGCM tools
    ==================================================================

    Copyright © Centre National de la Recherche Scientifique CNRS
    Commissariat à l'Énergie Atomique CEA

    libIGCM : Library for Portable Models Computation of IGCM Group.

    IGCM Group is the french IPSL Global Climate Model Group.

    This library is a set of shell scripts and functions whose purpose is
    the management of the initialization, the launch, the transfer of
    output files, the post-processing and the monitoring of datas produce
    by any numerical program on any plateforme.

    This software is governed by the CeCILL license under French law and
    abiding by the rules of distribution of free software. You can use,
    modify and/ or redistribute the software under the terms of the CeCILL
    license as circulated by CEA, CNRS and INRIA at the following URL
    "http://www.cecill.info".

    As a counterpart to the access to the source code and rights to copy,
    modify and redistribute granted by the license, users are provided only
    with a limited warranty and the software's author, the holder of the
    economic rights, and the successive licensors have only limited
    liability.

    In this respect, the user's attention is drawn to the risks associated
    with loading, using, modifying and/or developing or reproducing the
    software by the user in light of its specific status of free software,
    that may mean that it is complicated to manipulate, and that also
    therefore means that it is reserved for developers and experienced
    professionals having in-depth computer knowledge. Users are therefore
    encouraged to load and test the software's suitability as regards their
    requirements in conditions enabling the security of their systems and/or
    data to be ensured and, more generally, to use and operate it in the
    same conditions as regards security.

    The fact that you are presently reading this means that you have had
    knowledge of the CeCILL license and that you accept its terms.
  • Property svn:keywords set to Date Author Revision
File size: 21.9 KB
Line 
1#-Q- platine #!/usr/bin/ksh
2#-Q- platine ###################
3#-Q- platine ## PLATINE   CEA ##
4#-Q- platine ###################
5#-Q- platine #BSUB -J SE                     # Nom du job
6#-Q- platine #BSUB -N                        # message a la fin du job
7#-Q- platine #BSUB -n 1                      # reservation des processeurs pour le job
8#-Q- platine #BSUB -W 1:00                   # Limite temps
9#-Q- platine #BSUB -q post              # Passage en queue post
10#-Q- sx8brodie #!/bin/ksh
11#-Q- sx8brodie #######################
12#-Q- sx8brodie ## SX8BRODIE   IDRIS ##
13#-Q- sx8brodie #######################
14#-Q- sx8brodie # Temps Elapsed max. d'une requete hh:mm:ss
15#-Q- sx8brodie # @ wall_clock_limit = 20:00:00
16#-Q- sx8brodie # Nom du travail LoadLeveler
17#-Q- sx8brodie # @ job_name   = SE
18#-Q- sx8brodie # Fichier de sortie standard du travail       
19#-Q- sx8brodie # @ output     = $(job_name).$(jobid)
20#-Q- sx8brodie # Fichier de sortie d'erreur du travail
21#-Q- sx8brodie # @ error      =  $(job_name).$(jobid)
22#-Q- sx8brodie # pour recevoir un mail en cas de depassement du temps Elapsed (ou autre pb.)
23#-Q- sx8brodie # @ notification = error
24#-Q- sx8brodie # @ environment  = $DEBUG_debug ; $MODIPSL ; $libIGCM ; $libIGCM_SX ; $SUBMIT_DIR ; $REBUILD_DIR ; $RebuildFromArchive ; $POST_DIR ; $MASTER ; $DateBegin ; $PeriodDateBegin ; $PeriodDateEnd ; $NbRebuildDir ; $StandAlone ; $RESOL_ATM ; $RESOL_OCE ; $RESOL_ICE ; $RESOL_MBG ; $RESOL_SRF ; $RESOL_SBG ; $MASTER
25#-Q- sx8brodie # @ queue
26#-Q- aix6 #!/bin/ksh
27#-Q- aix6 #######################
28#-Q- aix6 ##   VARGAS   IDRIS  ##
29#-Q- aix6 #######################
30#-Q- aix6 # Temps Elapsed max. d'une requete hh:mm:ss
31#-Q- aix6 # @ wall_clock_limit = 20:00:00
32#-Q- aix6 # Nom du travail LoadLeveler
33#-Q- aix6 # @ job_name   = SE
34#-Q- aix6 # Fichier de sortie standard du travail       
35#-Q- aix6 # @ output     = $(job_name).$(jobid)
36#-Q- aix6 # Fichier de sortie d'erreur du travail
37#-Q- aix6 # @ error      =  $(job_name).$(jobid)
38#-Q- aix6 # pour recevoir un mail en cas de depassement du temps Elapsed (ou autre pb.)
39#-Q- aix6 # @ notification = error
40#-Q- aix6 # @ environment  = $DEBUG_debug ; $MODIPSL ; $libIGCM ; $libIGCM_SX ; $SUBMIT_DIR ; $REBUILD_DIR ; $RebuildFromArchive ; $POST_DIR ; $MASTER ; $DateBegin ; $PeriodDateBegin ; $PeriodDateEnd ; $NbRebuildDir ; $StandAlone ; $RESOL_ATM ; $RESOL_OCE ; $RESOL_ICE ; $RESOL_MBG ; $RESOL_SRF ; $RESOL_SBG ; $MASTER
41#-Q- aix6 # @ queue
42#-Q- sx8mercure #!/bin/ksh
43#-Q- sx8mercure ######################
44#-Q- sx8mercure ## SX8MERCURE   CEA ##
45#-Q- sx8mercure ######################
46#-Q- sx8mercure #PBS -N SE                   # Nom du job
47#-Q- sx8mercure #PBS -j o                    # regroupement des stdout et stderr
48#-Q- sx8mercure #PBS -S /usr/bin/ksh         # shell de soumission
49#-Q- sx8mercure #PBS -l memsz_job=1gb        # Limite memoire a 1 Go
50#-Q- sx8mercure #PBS -l cputim_job=1:00:00   # Limite temps a 1 heures
51#-Q- sx8mercure #PBS -q scalaire
52#-Q- sx9mercure #!/bin/ksh
53#-Q- sx9mercure ######################
54#-Q- sx9mercure ## SX9MERCURE   CEA ##
55#-Q- sx9mercure ######################
56#-Q- sx9mercure #MSUB -r SE             # Nom du job               
57#-Q- sx9mercure #MSUB -N 1              # Reservation du noeud
58#-Q- sx9mercure #MSUB -n 1              # Reservation du processus
59#-Q- sx9mercure #MSUB -T 86400          # Limite de temps elapsed du job
60#-Q- sx9mercure #MSUB -E "-j o"
61#-Q- sx9mercure #MSUB -E "-S /bin/ksh"
62#-Q- sx9mercure ##MSUB -e nco.out        # Sortie standard
63#-Q- sx9mercure ##MSUB -o nco.out        # Sortie standard
64#-Q- titane #!/bin/ksh
65#-Q- titane ######################
66#-Q- titane ## TITANE   CEA ##
67#-Q- titane ######################
68#-Q- titane #MSUB -r SE             # Nom du job               
69#-Q- titane #MSUB -N 1              # Reservation du noeud
70#-Q- titane #MSUB -n 1              # Reservation du processus
71#-Q- titane #MSUB -T 86400          # Limite de temps elapsed du job
72#-Q- titane #MSUB -E "-j o"
73#-Q- titane #MSUB -E "-S /bin/ksh"
74#-Q- titane ##MSUB -e nco.out        # Sortie standard
75#-Q- titane ##MSUB -o nco.out        # Sortie standard
76#-Q- default #!/bin/ksh
77#-Q- default ##################
78#-Q- default ## DEFAULT HOST ##
79#-Q- default ##################
80
81# $Date$
82# $Author$
83# $Revision$
84# IPSL (2006)
85#  This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC
86
87#set -eu
88#set -vx
89
90date
91
92#-Q- sx8brodie export OMP_NUM_THREADS=1
93#-Q- aix6 export OMP_NUM_THREADS=1
94
95########################################################################
96
97#D- Flag to determine if this job in a standalone mode
98#D- Default : value from AA_job if any
99StandAlone=${StandAlone:=true}
100
101#D- Low level debug : to bypass lib test checks and stack construction
102#D- Default : value from AA_job if any
103libIGCM=${libIGCM:=::modipsl::/libIGCM}
104# WARNING for StandAlone used : To run this script on some machine,
105# you must check MirrorlibIGCM variable in sys library.
106# If this variable is true, you must use libIGCM_POST path instead
107# of your running libIGCM directory.
108
109#D- Flag to determine if rebuild process has been performed asynchronously
110#D- Possible value true or false.
111#D- If true raw files has allready been patched by rebuild job
112#D- If false create_ts will patch the raw files
113#D- Default : Value from AA_job if any. Usefull in StandAlone case.
114RebuildFrequency=${RebuildFrequency:=true}
115
116#D- Flag to determine atlas job's output directory
117#D- Default : value from libIGCM_post.ksh if any
118POST_DIR=${POST_DIR:=${PBS_O_WORKDIR}}
119
120#D- Increased verbosity (1, 2, 3)
121#D- Default : value from AA_job if any
122Verbosity=${Verbosity:=3}
123
124#D- Low level debug : to bypass lib test checks and stack construction
125#D- Default : value from AA_job if any
126DEBUG_debug=${DEBUG_debug:=false}
127
128#D- TEMPORARY Flag to determine atmospheric resolution
129#D- Default : value from atmospheric driver if any
130RESOL_ATM=${RESOL_ATM:=ALL}
131
132#D- TEMPORARY Flag to determine ocean resolution
133#D- Default : value from ocean driver if any
134RESOL_OCE=${RESOL_OCE:=ORCA2}
135
136#D- TEMPORARY Flag to determine ice resolution
137#D- Default : value from ice driver if any
138RESOL_ICE=${RESOL_ICE:=ORCA2}
139
140#D- TEMPORARY Flag to determine marine biogeochemistry resolution
141#D- Default : value from ice driver if any
142RESOL_MBG=${RESOL_MBG:=ORCA2}
143
144#D- Flag to determine surface resolution
145#D- Default : value from surface driver if any
146RESOL_SRF=ALL
147
148#D- Flag to determine surface resolution
149#D- Default : value from surface driver if any
150RESOL_SBG=ALL
151
152########################################################################
153
154. ${libIGCM}/libIGCM_debug/libIGCM_debug.ksh
155      ( ${DEBUG_debug} ) && IGCM_debug_Check
156. ${libIGCM}/libIGCM_card/libIGCM_card.ksh
157     ( ${DEBUG_debug} ) && IGCM_card_Check
158. ${libIGCM}/libIGCM_date/libIGCM_date.ksh
159     ( ${DEBUG_debug} ) && IGCM_date_Check
160#-------
161. ${libIGCM}/libIGCM_sys/libIGCM_sys.ksh
162
163########################################################################
164
165#set -vx
166
167IGCM_sys_MkdirWork ${RUN_DIR_PATH}
168IGCM_sys_Cd ${RUN_DIR_PATH}
169
170if [ ${StandAlone} = true ] ; then
171    CARD_DIR=${SUBMIT_DIR}
172else
173    CARD_DIR=${RUN_DIR_PATH}/$( basename ${SUBMIT_DIR} )
174    IGCM_sys_Get_Master ${SUBMIT_DIR} ${RUN_DIR_PATH}
175fi
176
177#
178# First of all
179#
180IGCM_card_DefineArrayFromSection   ${CARD_DIR}/config.card UserChoices
181typeset option
182for option in ${config_UserChoices[*]} ; do
183    IGCM_card_DefineVariableFromOption ${CARD_DIR}/config.card UserChoices ${option}
184done
185#
186echo
187IGCM_debug_Print 1 "DefineArrayFromOption  : config_UserChoices"
188IGCM_debug_PrintVariables 3 config_UserChoices_JobName
189IGCM_debug_PrintVariables 3 config_UserChoices_LongName
190IGCM_debug_PrintVariables 3 config_UserChoices_TagName
191IGCM_debug_PrintVariables 3 config_UserChoices_CalendarType
192IGCM_debug_PrintVariables 3 config_UserChoices_DateBegin
193IGCM_debug_PrintVariables 3 config_UserChoices_DateEnd
194IGCM_debug_PrintVariables 3 config_UserChoices_PeriodLength
195echo
196
197#==================================
198
199R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_UserChoices_JobName}
200#
201IGCM_card_DefineArrayFromSection   ${CARD_DIR}/config.card ListOfComponents
202#
203IGCM_card_DefineVariableFromOption ${CARD_DIR}/config.card Post SeasonalFrequency
204#
205# Determine period for seasonnal average. Default : value from AA_job if any
206#
207DateBegin=${DateBegin:=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateBegin} )}
208#
209PeriodDateEnd=${PeriodDateEnd:=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateEnd} )}
210#
211freq=$( echo ${config_Post_SeasonalFrequency} |  sed -e "s/[yY]//" )
212#
213an_fin=$(( $( IGCM_date_ConvertGregorianDateToJulian ${PeriodDateEnd} ) / 1000 ))
214an_deb=$( IGCM_date_YearDigit $(( an_fin - freq + 1 )) )
215an_fin=$( IGCM_date_YearDigit ${an_fin} )
216#
217# For each component selected determine which files need post-processing
218#
219for comp in ${config_ListOfComponents[*]} ; do
220    #
221    IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp}
222    eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1
223    #
224    card=${CARD_DIR}/COMP/${compname}.card
225    IGCM_card_DefineArrayFromOption ${card} OutputFiles List
226    #
227    ListFilesName=${compname}_OutputFiles_List
228    eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1
229    #
230    if [ X${FileName0} != X${NULL_STR} ] ; then
231        #
232        # INITIALISATION
233        #
234        eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1
235        typeset i=2
236        #
237        until [ $i -eq $NbFiles ]; do
238            #
239            eval flag_post_=\${${ListFilesName}[$i]} > /dev/null 2>&1
240            eval flag_post=${flag_post_}
241            #
242            if [ X${flag_post} != XNONE ] ; then
243                #
244                # Check if seasonal is required for this file
245                #
246                IGCM_card_DefineArrayFromSection ${card} ${flag_post}
247                #
248                # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default
249                #
250                # variable option allready typeset above
251                for option in $( eval echo \${${compname}_${flag_post}[*]} ) ; do
252                    if [ ${option} = Seasonal ] ; then
253                        FoundSeasonal=true
254                        IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal
255                    fi
256                done
257                #
258                if [ ! X${FoundSeasonal} = Xtrue ] ; then
259                    eval ${compname}_${flag_post}_Seasonal=ON
260                fi
261                #
262                if [ ! X$( eval echo \${${compname}_${flag_post}_Seasonal} ) = XON ] ; then
263                    continue
264                fi
265                #
266                # CREATE LIST
267                #
268                FILE=$( echo ${flag_post} | awk "-FPost_" '{print $2}' )
269                #
270                DIRECTORY=${R_SAVE}/${comp}/Analyse/SE
271                #
272                TestedFile=${config_UserChoices_JobName}_SE_${an_deb}_${an_fin}_${FILE}.nc
273                #
274                IGCM_sys_TestFileArchive ${DIRECTORY}/${TestedFile}
275                if [ ! $? = 0 ] ; then
276                    eval set +A LISTE_FILE_${comp} \$\{LISTE_FILE_${comp}[*]} ${FILE}
277                    if [ ! ${RebuildFrequency} = true ] ; then
278                        IGCM_card_DefineArrayFromOption ${card} Post_${FILE} Patches
279                        eval set +A LISTE_PATCHES_${FILE} \$\{${compname}_Post_${FILE}_Patches[*]}
280                        if [ X$( eval echo \${LISTE_PATCHES_${FILE}[0]} ) !=  X${NULL_STR} ]; then
281                            for Patch in $( eval echo \${LISTE_PATCHES_${FILE}[*]} ); do
282                                if [ Xload${Patch} != X ] ; then
283                                    . ${libIGCM}/libIGCM_post/IGCM_${Patch}.ksh
284                                    eval load${Patch}=loaded
285                                fi
286                            done
287                        fi
288                    fi
289                fi
290            fi
291            let $(( i=i+3 ))
292        done # until [ $i -eq $NbFiles ]
293    fi
294done         # for comp
295
296for comp in ${config_ListOfComponents[*]} ; do
297    #
298    eval R_OUT_${comp}=${R_SAVE}/${comp}
299    #
300    i=0
301    for file in $( eval echo \${LISTE_FILE_${comp}[*]} ); do
302        #
303        # Determine in which output can we find file
304        # IE : Output/MO or Output/DA or ...
305        #
306        FlagDir=$( echo ${file} | awk -F "_" '{print $1}' )
307        case ${FlagDir} in
308            1Y)    FreqDir=YE  ;;
309            1M)    FreqDir=MO  ;;
310            5D|1D) FreqDir=DA  ;;
311            HF)    FreqDir=HF  ;;
312            INS)   FreqDir=INS ;;
313        esac
314        #
315        RESULT_SE=${config_UserChoices_JobName}_SE_${an_deb}_${an_fin}_${file}.nc
316        # Do not redoo an existing SE
317        IGCM_sys_TestFileArchive ${R_SAVE}/${comp}/Analyse/SE/${RESULT_SE}
318        if [ $? = 0 ] ; then
319            continue
320        fi
321        #
322        eval file_path=\${R_OUT_${comp}}/Output/${FreqDir}/
323        #
324        case ${config_UserChoices_PeriodLength} in
325        # For Yearly simulation :
326        1Y|1y)
327          (( an = an_deb ))
328          # Initialize array
329          #set -A liste_file_se
330          #set -A liste_file_se_tmp
331          unset liste_file_se
332          unset liste_file_se_tmp
333          while [ ${an} -le ${an_fin} ] ; do
334              moisL=$( IGCM_date_DaysInMonth ${an} ${mois} )
335              #
336              an4=$(printf "%04i\n" ${an} )
337              #
338              diy=$( IGCM_date_DaysInYear $an4 )
339              afin=$( IGCM_date_AddDaysToGregorianDate ${an4}0101 $(( diy - 1 )) )
340              date=${an4}0101_${afin}
341              #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc
342              #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc
343              liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_${date}_${file}.nc
344              liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_${date}_${file}.nc
345              (( an = an + 1 ))
346          done
347          #
348          IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH}
349          eval ExitFlag=false
350          IGCM_debug_Verif_Exit_Post
351         
352          # Apply IGCM_Patch if needed
353          if [ ! ${RebuildFrequency} = true ] ; then
354              if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then
355                  for file_t in $( eval echo ${liste_file_se_tmp[*]} ); do
356                      for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do
357                          IGCM_${Patch} ${file_t}
358                      done
359                  done
360              fi
361          fi
362                     
363          # Search of common list of variables to be treated
364          nbfile=0
365          for file_common_var in ${liste_file_se_tmp[*]} ; do
366              ncks -m ${file_common_var} | grep '# dim. =' | cut -d ':' -f 1 >> tmpfile_ncra
367              let nbfile=nbfile+1
368          done
369          list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','`
370          IGCM_sys_Rm tmpfile_ncra
371
372          for mois in  01 02 03 04 05 06 07 08 09 10 11 12 ; do
373          #
374              (( nb = ${mois} - 1 ))
375          #
376              OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc
377              IGCM_sys_ncra -O -v ${list_var_final_ncra} -d time_counter,${nb},,12 ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]}
378          done
379          IGCM_sys_Rm ${liste_file_se_tmp[*]}
380          eval ExitFlag=false
381          IGCM_debug_Verif_Exit_Post
382          ;;
383        # For Monthly simulation :
384        1M|1m)
385          for mois in  01 02 03 04 05 06 07 08 09 10 11 12 ; do
386              #
387              (( nb = ${mois} - 1 ))
388              #
389              OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc
390              #
391              (( an = an_deb ))
392              # Initialize array
393              #set -A liste_file_se
394              #set -A liste_file_se_tmp
395              unset liste_file_se
396              unset liste_file_se_tmp
397              while [ ${an} -le ${an_fin} ] ; do
398                  moisL=$( IGCM_date_DaysInMonth ${an} ${mois} )
399                  #
400                  an4=$(printf "%04i\n" ${an} )
401                  #
402                  date=${an4}${mois}01_${an4}${mois}${moisL}
403                  #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc
404                  #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc
405                  liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_${date}_${file}.nc
406                  liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_${date}_${file}.nc
407
408                  (( an = an + 1 ))
409              done
410              #
411              IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH}
412              eval ExitFlag=false
413              IGCM_debug_Verif_Exit_Post
414             
415              # Apply IGCM_Patch if needed
416              if [ ! ${RebuildFrequency} = true ] ; then
417                  if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then
418                      for file_t in $( eval echo ${liste_file_se_tmp[*]} ); do
419                          for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do
420                              IGCM_${Patch} ${file_t}
421                          done
422                      done
423                  fi
424              fi
425             
426              # Search of common list of variables to be treated
427              nbfile=0
428              for file_common_var in ${liste_file_se_tmp[*]} ; do
429                  ncks -m ${file_common_var} | grep '# dim. =' | cut -d ':' -f 1 >> tmpfile_ncra
430                  let nbfile=nbfile+1
431              done
432              list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','`
433              IGCM_sys_Rm tmpfile_ncra
434              IGCM_sys_ncra -O -v ${list_var_final_ncra} ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]}
435
436              IGCM_sys_Rm ${liste_file_se_tmp[*]}
437              eval ExitFlag=false
438              IGCM_debug_Verif_Exit_Post
439          done
440          ;;
441        *D|*d)
442          for mois in  01 02 03 04 05 06 07 08 09 10 11 12 ; do
443              #
444              (( nb = ${mois} - 1 ))
445              #
446              OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc
447              #
448              (( an = an_deb ))
449              # Initialize array
450              #set -A liste_file_se
451              #set -A liste_file_se_tmp
452              unset liste_file_se
453              unset liste_file_se_tmp
454              while [ ${an} -le ${an_fin} ] ; do
455                  moisL=$( IGCM_date_DaysInMonth ${an} ${mois} )
456                  #
457                  an4=$(printf "%04i\n" ${an} )
458                  #
459                  length_d=$(( ${config_UserChoices_PeriodLength} - 1 ))
460                  # for one day
461                  if [ ${length_d} -eq 1 ] ; then
462                      (( length_d = 0 ))
463                  fi
464                  (( day  = 1 ))
465                  while [ ${day} -le ${moisL} ] ; do
466                      day2=$(printf "%02i\n" ${day} )
467                      day_beg=${an4}${mois}${day2}
468                      day_end=$( IGCM_date_AddDaysToGregorianDate ${day_beg} ${length_d} )
469                      date=${an4}${mois}${day_beg}_${an4}${mois}${day_end}
470                      #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc
471                      #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc
472                      liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_${date}_${file}.nc
473                      liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_${date}_${file}.nc
474                      (( day = day + 1 ))
475                  done
476                  (( an = an + 1 ))
477              done
478              #
479              IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH}
480              eval ExitFlag=false
481              IGCM_debug_Verif_Exit_Post
482             
483              # Apply IGCM_Patch if needed
484              if [ ! ${RebuildFrequency} = true ] ; then
485                  if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then
486                      for file_t in $( eval echo ${liste_file_se_tmp[*]} ); do
487                          for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do
488                              IGCM_${Patch} ${file_t}
489                          done
490                      done
491                  fi
492              fi
493
494              # Search of common list of variables to be treated
495              nbfile=0
496              for file_common_var in ${liste_file_se_tmp[*]} ; do
497                  ncks -m ${file_common_var} | grep '# dim. =' | cut -d ':' -f 1 >> tmpfile_ncra
498                  let nbfile=nbfile+1
499              done
500              list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','`
501              IGCM_sys_Rm tmpfile_ncra
502
503              IGCM_sys_ncra -O -v ${list_var_final_ncra} ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]}
504              IGCM_sys_Rm ${liste_file_se_tmp[*]}
505              eval ExitFlag=false
506              IGCM_debug_Verif_Exit_Post
507          done
508          ;;
509        esac
510        #
511
512        # Search of common list of variables to be treated
513        nbfile=0
514        for file_common_var in ${OUT_SE[*]} ; do
515           ncks -m ${file_common_var} | grep '# dim. =' | cut -d ':' -f 1 >> tmpfile_ncrcat
516           let nbfile=nbfile+1
517        done
518        list_var_final_ncrcat=`cat tmpfile_ncrcat | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','`
519        IGCM_sys_Rm tmpfile_ncrcat
520
521        IGCM_sys_ncrcat -O -v ${list_var_final_ncrcat} ${OUT_SE[*]} ${RESULT_SE}
522        #
523        IGCM_sys_Rm ${OUT_SE[*]}
524        #
525        ${ncatted} -a modulo,time_counter,c,c," " ${RESULT_SE}
526        #
527        eval IGCM_sys_Put_Out ${RESULT_SE} \${R_OUT_${comp}}/Analyse/SE/${RESULT_SE}
528        IGCM_sys_Rm ${RESULT_SE}
529        #
530        eval ExitFlag=false
531        IGCM_debug_Verif_Exit_Post
532    done
533done
534
535# DODS copy
536for comp in ${config_ListOfComponents[*]} ; do
537    IGCM_sys_TestDirArchive ${R_SAVE}/${comp}/Analyse/SE
538    [ $? = 0 ] && IGCM_sys_Put_Dods ${comp}/Analyse/SE
539done
540
541YEARS=${an_deb}_${an_fin}
542
543export POST_DIR; export SUBMIT_DIR; export libIGCM; export R_INIT; export R_BC; export StandAlone
544export RESOL_ATM; export RESOL_OCE ; export RESOL_ICE ; export RESOL_MBG ; export RESOL_SRF ; export RESOL_SBG
545export R_SAVE; export config_UserChoices_JobName; export config_UserChoices_TagName; export YEARS;
546listVarEnv="POST_DIR,SUBMIT_DIR,libIGCM,R_INIT,R_BC,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG,R_SAVE,config_UserChoices_JobName,config_UserChoices_TagName,YEARS"
547export listVarEnv;
548
549#D-
550# --------------------------------------------------------------------
551#D- Test if all was right before ATLAS
552# --------------------------------------------------------------------
553IGCM_debug_Verif_Exit_Post
554
555if [ ${config_UserChoices_TagName} = "IPSLCM4_v1_OASIS3" ] || \
556   [ ${config_UserChoices_TagName} = "IPSLCM4_v2" ]        || \
557   [ ${config_UserChoices_TagName} = "IPSL_ESM_V1" ] ; then
558    #
559    IGCM_sys_QsubPost atlas_ORCHIDEE     ;
560    IGCM_sys_QsubPost atlas_LMDZ         ;
561    IGCM_sys_QsubPost atlas_ORCA_LIM     ;
562    IGCM_sys_QsubPost additionnal        ;
563    #
564elif [ ${config_UserChoices_TagName} = "IPSLCM5" ] ; then
565    IGCM_sys_QsubPost atlas_ORCHIDEE     ;
566    IGCM_sys_QsubPost atlas_LMDZ         ;
567    IGCM_sys_QsubPost atlas_ORCA_LIM     ;
568    #
569elif [ ${config_UserChoices_TagName} = "LMDZ4OR" ]  || \
570     [ ${config_UserChoices_TagName} = "LMDZOR" ]   || \
571     [ ${config_UserChoices_TagName} = "LMDZ4OR_v2" ] ; then
572    #
573    IGCM_sys_QsubPost atlas_LMDZ         ;
574    IGCM_sys_QsubPost atlas_ORCHIDEE     ;
575    #
576elif [ ${config_UserChoices_TagName} = "LMDZ" ] ; then
577    #
578    IGCM_sys_QsubPost atlas_LMDZ         ;
579    #
580elif [ ${config_UserChoices_TagName} = "OL" ]      || \
581     [ ${config_UserChoices_TagName} = "OL2" ] ; then
582    #
583    IGCM_sys_QsubPost atlas_ORCHIDEE     ;
584    #
585elif [ ${config_UserChoices_TagName} = "ORCA2_LIM" ]       ||
586     [ ${config_UserChoices_TagName} = "ORCA2_LIM2" ]      ||
587     [ ${config_UserChoices_TagName} = "ORCA2_LIM2_PISCES" ] ; then
588    #
589    IGCM_sys_QsubPost atlas_ORCA_LIM     ;
590#    IGCM_sys_QsubPost additionnal        ;
591    #
592fi
593
594# Clean RUN_DIR_PATH (necessary for cesium)
595IGCM_sys_RmRunDir -Rf ${RUN_DIR_PATH}
Note: See TracBrowser for help on using the repository browser.