source: branches/libIGCM_MPI_OpenMP/AA_create_se

Last change on this file was 605, checked in by mafoipsl, 12 years ago

Tttttt use elapstim_req instead of cpu_time on mercure front-end.

  • 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 Revision Author Date
File size: 29.7 KB
Line 
1#-Q- cesium #!/bin/ksh
2#-Q- cesium ######################
3#-Q- cesium ## CESIUM   CEA ##
4#-Q- cesium ######################
5#-Q- cesium #MSUB -r SE             # Nom du job               
6#-Q- cesium #MSUB -N 1              # Reservation du noeud
7#-Q- cesium #MSUB -n 1              # Reservation du processus
8#-Q- cesium #MSUB -T 86400          # Limite de temps elapsed du job
9#-Q- cesium #MSUB -E "-j o"
10#-Q- cesium #MSUB -E "-S /bin/ksh"
11#-Q- curie ######################
12#-Q- curie ## CURIE   TGCC/CEA ##
13#-Q- curie ######################
14#-Q- curie #MSUB -r TS             # Nom du job               
15#-Q- curie #MSUB -eo
16#-Q- curie #MSUB -n 1              # Reservation du processus
17#-Q- curie #MSUB -T 86400          # Limite de temps elapsed du job
18#-Q- platine #!/usr/bin/ksh
19#-Q- platine ###################
20#-Q- platine ## PLATINE   CEA ##
21#-Q- platine ###################
22#-Q- platine #BSUB -J SE                     # Nom du job
23#-Q- platine #BSUB -N                        # message a la fin du job
24#-Q- platine #BSUB -n 1                      # reservation des processeurs pour le job
25#-Q- platine #BSUB -W 1:00                   # Limite temps
26#-Q- platine #BSUB -q post              # Passage en queue post
27#-Q- platine #BSUB -L /bin/ksh
28#-Q- sx8brodie #!/bin/ksh
29#-Q- sx8brodie #######################
30#-Q- sx8brodie ## SX8BRODIE   IDRIS ##
31#-Q- sx8brodie #######################
32#-Q- sx8brodie # Temps Elapsed max. d'une requete hh:mm:ss
33#-Q- sx8brodie # @ wall_clock_limit = 10:00:00
34#-Q- sx8brodie # Nom du travail LoadLeveler
35#-Q- sx8brodie # @ job_name   = SE
36#-Q- sx8brodie # Fichier de sortie standard du travail       
37#-Q- sx8brodie # @ output     = $(job_name).$(jobid)
38#-Q- sx8brodie # Fichier de sortie d'erreur du travail
39#-Q- sx8brodie # @ error      =  $(job_name).$(jobid)
40#-Q- sx8brodie # pour recevoir un mail en cas de depassement du temps Elapsed (ou autre pb.)
41#-Q- sx8brodie # @ notification = error
42#-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
43#-Q- sx8brodie # @ queue
44#-Q- aix6 #!/bin/ksh
45#-Q- aix6 #######################
46#-Q- aix6 ##   VARGAS   IDRIS  ##
47#-Q- aix6 #######################
48#-Q- aix6 # Temps Elapsed max. d'une requete hh:mm:ss
49#-Q- aix6 # @ wall_clock_limit = 10:00:00
50#-Q- aix6 # Nom du travail LoadLeveler
51#-Q- aix6 # @ job_name   = SE
52#-Q- aix6 # Fichier de sortie standard du travail       
53#-Q- aix6 # @ output     = $(job_name).$(jobid)
54#-Q- aix6 # Fichier de sortie d'erreur du travail
55#-Q- aix6 # @ error      =  $(job_name).$(jobid)
56#-Q- aix6 # pour recevoir un mail en cas de depassement du temps Elapsed (ou autre pb.)
57#-Q- aix6 # @ notification = error
58#-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
59#-Q- aix6 # @ queue
60#-Q- ulam #!/bin/ksh
61#-Q- ulam #######################
62#-Q- ulam ##   ULAM   IDRIS  ##
63#-Q- ulam #######################
64#-Q- ulam # Temps Elapsed max. d'une requete hh:mm:ss
65#-Q- ulam # @ wall_clock_limit = 10:00:00
66#-Q- ulam # Nom du travail LoadLeveler
67#-Q- ulam # @ job_name   = SE
68#-Q- ulam # Fichier de sortie standard du travail       
69#-Q- ulam # @ output     = $(job_name).$(jobid)
70#-Q- ulam # Fichier de sortie d'erreur du travail
71#-Q- ulam # @ error      =  $(job_name).$(jobid)
72#-Q- ulam # pour recevoir un mail en cas de depassement du temps Elapsed (ou autre pb.)
73#-Q- ulam # @ notification = error
74#-Q- ulam # @ 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
75#-Q- ulam # @ queue
76#-Q- sx8mercure #!/bin/ksh
77#-Q- sx8mercure ######################
78#-Q- sx8mercure ## SX8MERCURE   CEA ##
79#-Q- sx8mercure ######################
80#-Q- sx8mercure #PBS -N SE                   # Nom du job
81#-Q- sx8mercure #PBS -j o                    # regroupement des stdout et stderr
82#-Q- sx8mercure #PBS -S /usr/bin/ksh         # shell de soumission
83#-Q- sx8mercure #PBS -l memsz_job=1gb        # Limite memoire a 1 Go
84#-Q- sx8mercure #PBS -l cputim_job=1:00:00   # Limite temps a 1 heures
85#-Q- sx8mercure #PBS -q scalaire
86#-Q- sx9mercure #!/bin/ksh
87#-Q- sx9mercure ######################
88#-Q- sx9mercure ## SX9MERCURE  CCRT ##
89#-Q- sx9mercure ######################
90#-Q- sx9mercure #PBS -N SE                   # Nom du job
91#-Q- sx9mercure #PBS -j o                    # regroupement des stdout et stderr
92#-Q- sx9mercure #PBS -S /usr/bin/ksh         # shell de soumission
93#-Q- sx9mercure #PBS -l memsz_job=1gb        # Limite memoire a 1 Go
94#-Q- sx9mercure #PBS -l elapstim_req=1:00:00   # Limite temps a 1 heures
95#-Q- sx9mercure #PBS -q scalaire
96#-Q- titane #!/bin/ksh
97#-Q- titane ######################
98#-Q- titane ## TITANE   CEA ##
99#-Q- titane ######################
100#-Q- titane #MSUB -r SE             # Nom du job               
101#-Q- titane #MSUB -eo
102#-Q- titane #MSUB -n 1              # Reservation du processus
103#-Q- titane #MSUB -T 86400          # Limite de temps elapsed du job
104#-Q- titane #MSUB -q mono
105#-Q- lxiv8 ######################
106#-Q- lxiv8 ## OBELIX      LSCE ##
107#-Q- lxiv8 ######################
108#-Q- lxiv8 #PBS -N SE
109#-Q- lxiv8 #PBS -m a
110#-Q- lxiv8 #PBS -j oe
111#-Q- lxiv8 #PBS -q medium
112#-Q- lxiv8 #PBS -o SE.$$
113#-Q- lxiv8 #PBS -S /bin/ksh
114#-Q- default #!/bin/ksh
115#-Q- default ##################
116#-Q- default ## DEFAULT HOST ##
117#-Q- default ##################
118
119#**************************************************************
120# Author: Sebastien Denvil
121# Contact: Sebastien.Denvil__at__ipsl.jussieu.fr
122# $Revision::                                          $ Revision of last commit
123# $Author::                                            $ Author of last commit
124# $Date::                                              $ Date of last commit
125# IPSL (2006)
126#  This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC
127#
128#**************************************************************
129
130#set -eu
131#set -vx
132
133date
134
135#-Q- sx8brodie export OMP_NUM_THREADS=1
136#-Q- aix6 export OMP_NUM_THREADS=1
137#-Q- ulam export OMP_NUM_THREADS=1
138
139########################################################################
140
141#D- Flag to determine if this job in a standalone mode
142#D- Default : value from AA_job if any
143StandAlone=${StandAlone:=true}
144
145#D- Path to libIGCM
146#D- Default : value from AA_job if any
147# WARNING For StandAlone use : To run this script on some machine (ulam and cesium)
148# WARNING you must check MirrorlibIGCM variable in sys library.
149# WARNING If this variable is true, you must use libIGCM_POST path instead
150# WARNING of your running libIGCM directory.
151libIGCM=${libIGCM:=::modipsl::/libIGCM}
152
153#D- Flag to determine if rebuild process has been performed asynchronously
154#D- Possible value true or false.
155#D- If true raw files has allready been patched by rebuild job
156#D- If false create_ts will patch the raw files
157#D- Default : Value from AA_job if any. Usefull in StandAlone case.
158RebuildFrequency=${RebuildFrequency:=true}
159
160#D- Flag to determine atlas job's output directory
161#D- Default : value from libIGCM_post.ksh if any
162POST_DIR=${POST_DIR:=${PBS_O_WORKDIR:=$(pwd)}}
163
164#D- Increased verbosity (1, 2, 3)
165#D- Default : value from AA_job if any
166Verbosity=${Verbosity:=3}
167
168#D- Low level debug : to bypass lib test checks and stack construction
169#D- Default : value from AA_job if any
170DEBUG_debug=${DEBUG_debug:=false}
171
172#D- TEMPORARY Flag to determine atmospheric resolution
173#D- Default : value from atmospheric driver if any
174RESOL_ATM=${RESOL_ATM:=ALL}
175
176#D- Flag to determine surface resolution
177#D- Default : value from surface driver if any
178RESOL_SRF=ALL
179
180#D- Flag to determine surface resolution
181#D- Default : value from surface driver if any
182RESOL_SBG=ALL
183
184#D- TEMPORARY Flag to determine ocean resolution
185#D- Default : value from ocean driver if any
186RESOL_OCE=${RESOL_OCE:=ORCA2}
187
188#D- TEMPORARY Flag to determine ice resolution
189#D- Default : value from ice driver if any
190RESOL_ICE=${RESOL_ICE:=ORCA2}
191
192#D- TEMPORARY Flag to determine marine biogeochemistry resolution
193#D- Default : value from ice driver if any
194RESOL_MBG=${RESOL_MBG:=ORCA2}
195
196########################################################################
197
198. ${libIGCM}/libIGCM_debug/libIGCM_debug.ksh
199      ( ${DEBUG_debug} ) && IGCM_debug_Check
200. ${libIGCM}/libIGCM_card/libIGCM_card.ksh
201     ( ${DEBUG_debug} ) && IGCM_card_Check
202. ${libIGCM}/libIGCM_date/libIGCM_date.ksh
203     ( ${DEBUG_debug} ) && IGCM_date_Check
204#-------
205. ${libIGCM}/libIGCM_sys/libIGCM_sys.ksh
206
207########################################################################
208
209#set -vx
210
211IGCM_sys_MkdirWork ${RUN_DIR_PATH}
212IGCM_sys_Cd ${RUN_DIR_PATH}
213
214# ------------------------------------------------------------------
215# Test if all was right before proceeding further
216# ------------------------------------------------------------------
217IGCM_debug_Verif_Exit_Post
218
219if [ ${StandAlone} = true ] ; then
220    CARD_DIR=${SUBMIT_DIR}
221else
222    CARD_DIR=${RUN_DIR_PATH}/$( basename ${SUBMIT_DIR} )
223    IGCM_sys_Get_Master ${SUBMIT_DIR} ${RUN_DIR_PATH}
224fi
225
226#==================================
227# First of all
228#
229typeset option
230
231#==================================
232# Read UserChoices section:
233IGCM_card_DefineArrayFromSection       ${CARD_DIR}/config.card UserChoices
234echo
235IGCM_debug_Print 1 "DefineArrayFromOption  : config_UserChoices"
236for option in ${config_UserChoices[*]} ; do
237    IGCM_card_DefineVariableFromOption ${CARD_DIR}/config.card UserChoices ${option}
238    eval auxprint=\${config_UserChoices_${option}}
239    IGCM_debug_Print 3 "${option} : ${auxprint}"
240done
241#
242echo
243
244#==================================
245# Read Post section:
246IGCM_card_DefineArrayFromSection ${CARD_DIR}/config.card Post
247echo
248IGCM_debug_Print 1 "DefineArrayFromOption : config_Post"
249for option in ${config_Post[*]} ; do
250  IGCM_card_DefineVariableFromOption ${CARD_DIR}/config.card Post ${option}
251  eval auxprint=\${config_Post_${option}}
252  IGCM_debug_Print 3 "${option} : ${auxprint}"
253done
254#
255echo
256
257#==================================
258# Define default value to keep compatibility with previous card: means before changes due to TGCC
259[ X${config_Post_PackFrequency} = X ] && config_Post_PackFrequency=${config_Post_RebuildFrequency}
260
261#==================================
262# If pack is active then PackFrequency overule the config_UserChoices_PeriodLength
263if ( [ ! X${config_Post_PackFrequency} = X${NULL_STR} ] && [ ! X${config_Post_PackFrequency} = XNONE ] ) ; then
264  config_UserChoices_PeriodLength=${config_Post_PackFrequency}
265fi
266
267#==================================
268#R_SAVE : Job output directory
269#R_BUFR : Job output buffered directory
270if ( [ ! X${config_UserChoices_SpaceName} = X ] && [ ! X${config_UserChoices_ExperimentName} = X ] ) ; then
271    FreeName=$( echo ${config_UserChoices_JobName} | sed 's/.*_//' )
272    R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName}
273    R_BUFR=${R_BUF}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName}
274    R_DODS=${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName}
275else
276    R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_UserChoices_JobName}
277    R_BUFR=${R_BUF}/${config_UserChoices_TagName}/${config_UserChoices_JobName}
278    R_DODS=${config_UserChoices_TagName}/${config_UserChoices_JobName}
279fi
280#
281IGCM_card_DefineArrayFromSection   ${CARD_DIR}/config.card ListOfComponents
282#
283IGCM_card_DefineVariableFromOption ${CARD_DIR}/config.card Post SeasonalFrequency
284#
285# Determine period for seasonnal average. Default : value from AA_job if any
286#
287DateBegin=${DateBegin:=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateBegin} )}
288#
289PeriodDateEnd=${PeriodDateEnd:=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateEnd} )}
290#
291freq=$( echo ${config_Post_SeasonalFrequency} |  sed -e "s/[yY]//" )
292#
293an_fin=$(( $( IGCM_date_ConvertGregorianDateToJulian ${PeriodDateEnd} ) / 1000 ))
294an_deb=$( IGCM_date_YearDigit $(( an_fin - freq + 1 )) )
295an_fin=$( IGCM_date_YearDigit ${an_fin} )
296#
297# For each component selected determine which files need post-processing
298#
299for comp in ${config_ListOfComponents[*]} ; do
300    #
301    IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp}
302    eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1
303    #
304    card=${CARD_DIR}/COMP/${compname}.card
305    IGCM_card_DefineArrayFromOption ${card} OutputFiles List
306    #
307    ListFilesName=${compname}_OutputFiles_List
308    eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1
309    #
310    if [ X${FileName0} != X${NULL_STR} ] ; then
311        #
312        # INITIALISATION
313        #
314        eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1
315        typeset i=2
316        #
317        until [ $i -gt $NbFiles ]; do
318            #
319            eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1
320            #
321            if [ X${flag_post} != XNONE ] ; then
322                #
323                # Check if seasonal is required for this file
324                #
325                IGCM_card_DefineArrayFromSection ${card} ${flag_post}
326                #
327                # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default
328                #
329                # variable option allready typeset above
330                for option in $( eval echo \${${compname}_${flag_post}[*]} ) ; do
331                    if [ ${option} = Seasonal ] ; then
332                        FoundSeasonal=true
333                        IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal
334                    fi
335                done
336                #
337                if [ ! X${FoundSeasonal} = Xtrue ] ; then
338                    eval ${compname}_${flag_post}_Seasonal=ON
339                fi
340                #
341                if [ ! X$( eval echo \${${compname}_${flag_post}_Seasonal} ) = XON ] ; then
342                    (( i=i+3 ))
343                    continue
344                fi
345                #
346                # CREATE LIST
347                #
348                FILE=$( echo ${flag_post} | awk "-FPost_" '{print $2}' )
349                #
350                DIRECTORY=${R_SAVE}/${comp}/Analyse/SE
351                #
352                TestedFile=${config_UserChoices_JobName}_SE_${an_deb}_${an_fin}_${FILE}.nc
353                #
354                IGCM_sys_TestFileArchive ${DIRECTORY}/${TestedFile}
355                if [ ! $? = 0 ] ; then
356                    eval set +A LISTE_FILE_${comp} \$\{LISTE_FILE_${comp}[*]} ${FILE}
357                    if [ ! ${RebuildFrequency} = true ] ; then
358                        IGCM_card_DefineArrayFromOption ${card} Post_${FILE} Patches
359                        eval set +A LISTE_PATCHES_${FILE} \$\{${compname}_Post_${FILE}_Patches[*]}
360                        if [ X$( eval echo \${LISTE_PATCHES_${FILE}[0]} ) !=  X${NULL_STR} ]; then
361                            for Patch in $( eval echo \${LISTE_PATCHES_${FILE}[*]} ); do
362                                if [ Xload${Patch} != X ] ; then
363                                    . ${libIGCM}/libIGCM_post/IGCM_${Patch}.ksh
364                                    eval load${Patch}=loaded
365                                fi
366                            done
367                        fi
368                    fi
369                fi
370            fi
371            (( i=i+3 ))
372        done # until [ $i -eq $NbFiles ]
373    fi
374done         # for comp
375
376for comp in ${config_ListOfComponents[*]} ; do
377    #
378    eval R_OUT_${comp}=${R_SAVE}/${comp}
379    #
380    i=0
381    for file in $( eval echo \${LISTE_FILE_${comp}[*]} ); do
382        #
383        # Determine in which output can we find file
384        # IE : Output/MO or Output/DA or ...
385        #
386        FlagDir=$( echo ${file} | awk -F "_" '{print $1}' )
387        case ${FlagDir} in
388            1Y)    FreqDir=YE  ;;
389            1M)    FreqDir=MO  ;;
390            5D|1D) FreqDir=DA  ;;
391            HF)    FreqDir=HF  ;;
392            3H)    FreqDir=HF  ;;
393            INS)   FreqDir=INS ;;
394        esac
395        #
396        RESULT_SE=${config_UserChoices_JobName}_SE_${an_deb}_${an_fin}_${file}.nc
397        # Do not redoo an existing SE
398        IGCM_sys_TestFileArchive ${R_SAVE}/${comp}/Analyse/SE/${RESULT_SE}
399        if [ $? = 0 ] ; then
400            continue
401        fi
402        #
403        eval file_path=\${R_OUT_${comp}}/Output/${FreqDir}/
404        #
405        case ${config_UserChoices_PeriodLength} in
406        # For Yearly simulation :
407        1Y|1y)
408          (( an = an_deb ))
409          # Initialize array
410          #set -A liste_file_se
411          #set -A liste_file_se_tmp
412          unset liste_file_se
413          unset liste_file_se_tmp
414          while [ ${an} -le ${an_fin} ] ; do
415              moisL=$( IGCM_date_DaysInMonth ${an} ${mois} )
416              #
417              an4=$(printf "%04i\n" ${an} )
418              #
419              diy=$( IGCM_date_DaysInYear $an4 )
420              afin=$( IGCM_date_AddDaysToGregorianDate ${an4}0101 $(( diy - 1 )) )
421              date=${an4}0101_${afin}
422              #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc
423              #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc
424              liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_${date}_${file}.nc
425              liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_${date}_${file}.nc
426              (( an = an + 1 ))
427          done
428          #
429          IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH}
430          IGCM_debug_Verif_Exit_Post
431         
432          # Apply IGCM_Patch if needed
433          if [ ! ${RebuildFrequency} = true ] ; then
434              if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then
435                  for file_t in $( eval echo ${liste_file_se_tmp[*]} ); do
436                      for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do
437                          IGCM_${Patch} ${file_t}
438                      done
439                  done
440              fi
441          fi
442                     
443          # Search of common list of variables to be treated
444          nbfile=0
445          for file_common_var in ${liste_file_se_tmp[*]} ; do
446              ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra
447              (( nbfile = nbfile + 1 ))
448          done
449          list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','`
450          IGCM_sys_Rm tmpfile_ncra
451
452          # detect time counter : time or time_counter ie unlimited variable
453          var_unlim=$(ncdump -h ${liste_file_se_tmp[1]}|grep UNLIMITED| cut -d ' ' -f 1)
454
455          for mois in  01 02 03 04 05 06 07 08 09 10 11 12 ; do
456          #
457              (( nb = ${mois} - 1 ))
458          #
459              OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc
460              IGCM_sys_ncra -O -v ${list_var_final_ncra} -d ${var_unlim},${nb},,12 ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]}
461          done
462          IGCM_sys_Rm ${liste_file_se_tmp[*]}
463          ;;
464        # For Monthly simulation :
465        1M|1m)
466          for mois in  01 02 03 04 05 06 07 08 09 10 11 12 ; do
467              #
468              (( nb = ${mois} - 1 ))
469              #
470              OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc
471              #
472              (( an = an_deb ))
473              # Initialize array
474              #set -A liste_file_se
475              #set -A liste_file_se_tmp
476              unset liste_file_se
477              unset liste_file_se_tmp
478              while [ ${an} -le ${an_fin} ] ; do
479                  moisL=$( IGCM_date_DaysInMonth ${an} ${mois} )
480                  #
481                  an4=$(printf "%04i\n" ${an} )
482                  #
483                  date=${an4}${mois}01_${an4}${mois}${moisL}
484                  #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc
485                  #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc
486                  liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_${date}_${file}.nc
487                  liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_${date}_${file}.nc
488
489                  (( an = an + 1 ))
490              done
491              #
492              IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH}
493              IGCM_debug_Verif_Exit_Post
494             
495              # Apply IGCM_Patch if needed
496              if [ ! ${RebuildFrequency} = true ] ; then
497                  if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then
498                      for file_t in $( eval echo ${liste_file_se_tmp[*]} ); do
499                          for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do
500                              IGCM_${Patch} ${file_t}
501                          done
502                      done
503                  fi
504              fi
505             
506              # Search of common list of variables to be treated
507              nbfile=0
508              for file_common_var in ${liste_file_se_tmp[*]} ; do
509                  ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra
510                  (( nbfile = nbfile + 1 ))
511              done
512              list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','`
513              IGCM_sys_Rm tmpfile_ncra
514
515              IGCM_sys_ncra -O -v ${list_var_final_ncra} ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]}
516
517              IGCM_sys_Rm ${liste_file_se_tmp[*]}
518          done
519          ;;
520        *D|*d)
521          for mois in  01 02 03 04 05 06 07 08 09 10 11 12 ; do
522              #
523              (( nb = ${mois} - 1 ))
524              #
525              OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc
526              #
527              (( an = an_deb ))
528              # Initialize array
529              #set -A liste_file_se
530              #set -A liste_file_se_tmp
531              unset liste_file_se
532              unset liste_file_se_tmp
533              while [ ${an} -le ${an_fin} ] ; do
534                  moisL=$( IGCM_date_DaysInMonth ${an} ${mois} )
535                  #
536                  an4=$(printf "%04i\n" ${an} )
537                  #
538                  length_d=$(( ${config_UserChoices_PeriodLength} - 1 ))
539                  # for one day
540                  if [ ${length_d} -eq 1 ] ; then
541                      (( length_d = 0 ))
542                  fi
543                  (( day  = 1 ))
544                  while [ ${day} -le ${moisL} ] ; do
545                      day2=$(printf "%02i\n" ${day} )
546                      day_beg=${an4}${mois}${day2}
547                      day_end=$( IGCM_date_AddDaysToGregorianDate ${day_beg} ${length_d} )
548                      date=${an4}${mois}${day_beg}_${an4}${mois}${day_end}
549                      #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc
550                      #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc
551                      liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_${date}_${file}.nc
552                      liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_${date}_${file}.nc
553                      (( day = day + 1 ))
554                  done
555                  (( an = an + 1 ))
556              done
557              #
558              IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH}
559              IGCM_debug_Verif_Exit_Post
560             
561              # Apply IGCM_Patch if needed
562              if [ ! ${RebuildFrequency} = true ] ; then
563                  if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then
564                      for file_t in $( eval echo ${liste_file_se_tmp[*]} ); do
565                          for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do
566                              IGCM_${Patch} ${file_t}
567                          done
568                      done
569                  fi
570              fi
571
572              # Search of common list of variables to be treated
573              nbfile=0
574              for file_common_var in ${liste_file_se_tmp[*]} ; do
575                  ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra
576                  (( nbfile = nbfile + 1 ))
577              done
578              list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','`
579              IGCM_sys_Rm tmpfile_ncra
580
581              IGCM_sys_ncra -O -v ${list_var_final_ncra} ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]}
582              IGCM_sys_Rm ${liste_file_se_tmp[*]}
583          done
584          ;;
585        esac
586        #
587
588        # Search of common list of variables to be treated
589        nbfile=0
590        for file_common_var in ${OUT_SE[*]} ; do
591           ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncrcat
592           (( nbfile = nbfile + 1 ))
593        done
594        list_var_final_ncrcat=`cat tmpfile_ncrcat | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','`
595        IGCM_sys_Rm tmpfile_ncrcat
596
597        IGCM_sys_ncrcat -O -v ${list_var_final_ncrcat} ${OUT_SE[*]} ${RESULT_SE}
598        #
599        IGCM_sys_Rm ${OUT_SE[*]}
600        #
601        # detect time counter : time or time_counter ie unlimited variable
602        var_unlim=$(ncdump -h ${RESULT_SE}|grep UNLIMITED| cut -d ' ' -f 1)
603
604        # Put correct climatological axis following calendar
605        case ${config_UserChoices_CalendarType} in
606                360d|360_day)
607                        # 360 days
608                        ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15, 45, 75, 105, 135, 165, 195, 225, 255, 285, 315, 345.} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 30, 30, 60, 60, 90, 90, 120, 120, 150, 150, 180, 180, 210, 210, 240, 240, 270, 270, 300, 300, 330, 330, 360.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"360_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'"
609                        ;;
610                noleap|365_day)
611                        # 365 days
612                        ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45, 74.5, 105, 135.5, 166, 196.5, 227.5, 258, 288.5, 319, 349.5} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 59, 59, 90, 90, 120, 120, 151, 151, 181, 181, 212, 212, 243, 243, 273, 273, 304, 304, 334, 334, 365.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"365_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'"
613                        ;;
614                all_leap|366_day)
615                        # 366 days
616                        ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45.5, 75.5, 106, 136.5, 167, 197.5, 228.5, 259, 289.5, 320, 350.5} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 60, 60, 91, 91, 121, 121, 152, 152, 182, 182, 213, 213, 244, 244, 274, 274, 305, 305, 335, 335, 366.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"366_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'"
617                        ;;
618                leap|gregorian|standard)
619                        # 365.2425 days
620                        ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45.12125, 74.7425, 105.2425, 135.7425, 166.2425, 196.7425, 227.7425, 258.2425, 288.7425, 319.2425, 349.7425} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 59.2425, 59.2425, 90.2425, 90.2425, 120.2425, 120.2425, 151.2425, 151.2425, 181.2425, 181.2425, 212.2425, 212.2425, 243.2425, 243.2425, 273.2425, 273.2425, 304.2425, 304.2425, 334.2425, 334.2425, 365.2425} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"gregorian\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'"
621                        ;;
622        esac
623        eval IGCM_sys_ncap2 -Oh -s $ncap2cmd ${RESULT_SE} tmp.nc
624        IGCM_sys_Rm ${RESULT_SE}
625        IGCM_sys_Mv tmp.nc ${RESULT_SE}
626        #
627        eval IGCM_sys_Put_Out ${RESULT_SE} \${R_OUT_${comp}}/Analyse/SE/${RESULT_SE}
628        IGCM_sys_Rm ${RESULT_SE}
629        #
630    done
631done
632
633# DODS copy
634for comp in ${config_ListOfComponents[*]} ; do
635    IGCM_sys_TestDirArchive ${R_SAVE}/${comp}/Analyse/SE
636    [ $? = 0 ] && IGCM_sys_Put_Dods ${comp}/Analyse/SE
637done
638
639YEARS=${an_deb}_${an_fin}
640DIR_OUT=SE
641
642export POST_DIR; export SUBMIT_DIR; export libIGCM; export R_INIT; export R_BC; export StandAlone
643export RESOL_ATM; export RESOL_OCE ; export RESOL_ICE ; export RESOL_MBG ; export RESOL_SRF ; export RESOL_SBG
644export R_SAVE; export config_UserChoices_JobName; export config_UserChoices_TagName; export YEARS; export DIR_OUT
645listVarEnv="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,DIR_OUT"
646export listVarEnv;
647
648#D-
649# --------------------------------------------------------------------
650#D- Test if all was right before ATLAS
651# --------------------------------------------------------------------
652IGCM_debug_Verif_Exit_Post
653
654if [ ${config_UserChoices_TagName} = "IPSLCM4_v1_OASIS3" ] || \
655   [ ${config_UserChoices_TagName} = "IPSLCM4_v2" ]        || \
656   [ ${config_UserChoices_TagName} = "IPSL_ESM_V1" ] ; then
657    #
658    Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ;
659    IGCM_sys_QsubPost atlas_ORCHIDEE                   ;
660    Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ;
661    IGCM_sys_QsubPost atlas_LMDZ                       ;
662    Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ;
663    IGCM_sys_QsubPost atlas_ORCA_LIM                   ;
664    Script_Post_Output=additionnal.${PeriodDateEnd}    ;
665    IGCM_sys_QsubPost additionnal                      ;
666    #
667elif [ ${config_UserChoices_TagName} = "IPSLCM5" ]  || \
668     [ ${config_UserChoices_TagName} = "IPSLCM5A" ] || \
669     [ ${config_UserChoices_TagName} = "IPSLCM5B" ] || \
670     [ ${config_UserChoices_TagName} = "IPSLCM5A-MR" ] ; then
671    Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ;
672    IGCM_sys_QsubPost atlas_ORCHIDEE                   ;
673    Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ;
674    IGCM_sys_QsubPost atlas_LMDZ                       ;
675    Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ;
676    IGCM_sys_QsubPost atlas_ORCA_LIM                   ;
677    Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ;
678    IGCM_sys_QsubPost atlas_PISCES                     ;
679    #
680elif [ ${config_UserChoices_TagName} = "LMDZ4OR" ]  || \
681     [ ${config_UserChoices_TagName} = "LMDZOR" ]   || \
682     [ ${config_UserChoices_TagName} = "LMDZ4OR_v2" ] ; then
683    #
684    Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ;
685    IGCM_sys_QsubPost atlas_LMDZ                       ;
686    Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ;
687    IGCM_sys_QsubPost atlas_ORCHIDEE                   ;
688    #
689elif [ ${config_UserChoices_TagName} = "LMDZ" ] ; then
690    #
691    Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ;
692    IGCM_sys_QsubPost atlas_LMDZ                       ;
693    #
694elif [ ${config_UserChoices_TagName} = "OL" ]      || \
695     [ ${config_UserChoices_TagName} = "OL2" ] ; then
696    #
697    Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ;
698    IGCM_sys_QsubPost atlas_ORCHIDEE                   ;
699    #
700elif [ ${config_UserChoices_TagName} = "ORCA2_LIM" ]       ||
701     [ ${config_UserChoices_TagName} = "ORCA2_LIM2" ] ; then
702    #
703    Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ;
704    IGCM_sys_QsubPost atlas_ORCA_LIM                   ;
705elif [ ${config_UserChoices_TagName} = "ORCA2_LIM2_PISCES" ]  ; then
706    #
707    Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ;
708    IGCM_sys_QsubPost atlas_ORCA_LIM                   ;
709    Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ;
710    IGCM_sys_QsubPost atlas_PISCES                     ;
711elif [ ${config_UserChoices_TagName} = "ORCA2_OFF_PISCES" ]  ; then
712    #
713    Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ;
714    IGCM_sys_QsubPost atlas_PISCES                     ;
715    #
716fi
717
718# Clean RUN_DIR_PATH (necessary for cesium and titane only)
719IGCM_sys_RmRunDir -Rf ${RUN_DIR_PATH}
Note: See TracBrowser for help on using the repository browser.