source: branches/libIGCM_MPI_OpenMP/AA_create_se @ 1435

Last change on this file since 1435 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
RevLine 
[314]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"
[563]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
[2]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
[18]26#-Q- platine #BSUB -q post              # Passage en queue post
[426]27#-Q- platine #BSUB -L /bin/ksh
[59]28#-Q- sx8brodie #!/bin/ksh
[2]29#-Q- sx8brodie #######################
30#-Q- sx8brodie ## SX8BRODIE   IDRIS ##
31#-Q- sx8brodie #######################
[58]32#-Q- sx8brodie # Temps Elapsed max. d'une requete hh:mm:ss
[519]33#-Q- sx8brodie # @ wall_clock_limit = 10:00:00
[58]34#-Q- sx8brodie # Nom du travail LoadLeveler
[66]35#-Q- sx8brodie # @ job_name   = SE
[58]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
[213]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
[58]43#-Q- sx8brodie # @ queue
[68]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
[519]49#-Q- aix6 # @ wall_clock_limit = 10:00:00
[68]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
[213]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
[68]59#-Q- aix6 # @ queue
[386]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
[519]65#-Q- ulam # @ wall_clock_limit = 10:00:00
[386]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
[2]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
[299]85#-Q- sx8mercure #PBS -q scalaire
[316]86#-Q- sx9mercure #!/bin/ksh
[597]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
[605]94#-Q- sx9mercure #PBS -l elapstim_req=1:00:00   # Limite temps a 1 heures
[597]95#-Q- sx9mercure #PBS -q scalaire
[222]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               
[571]101#-Q- titane #MSUB -eo
[222]102#-Q- titane #MSUB -n 1              # Reservation du processus
103#-Q- titane #MSUB -T 86400          # Limite de temps elapsed du job
[571]104#-Q- titane #MSUB -q mono
[281]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
[2]114#-Q- default #!/bin/ksh
115#-Q- default ##################
116#-Q- default ## DEFAULT HOST ##
117#-Q- default ##################
118
[373]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
[108]125# IPSL (2006)
126#  This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC
[373]127#
128#**************************************************************
[108]129
130#set -eu
[2]131#set -vx
132
133date
134
135#-Q- sx8brodie export OMP_NUM_THREADS=1
[108]136#-Q- aix6 export OMP_NUM_THREADS=1
[386]137#-Q- ulam export OMP_NUM_THREADS=1
[2]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
[571]145#D- Path to libIGCM
[206]146#D- Default : value from AA_job if any
[571]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.
[229]151libIGCM=${libIGCM:=::modipsl::/libIGCM}
[206]152
[213]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
[2]160#D- Flag to determine atlas job's output directory
161#D- Default : value from libIGCM_post.ksh if any
[370]162POST_DIR=${POST_DIR:=${PBS_O_WORKDIR:=$(pwd)}}
[2]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
[135]174RESOL_ATM=${RESOL_ATM:=ALL}
[2]175
[257]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
[2]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
[178]192#D- TEMPORARY Flag to determine marine biogeochemistry resolution
193#D- Default : value from ice driver if any
194RESOL_MBG=${RESOL_MBG:=ORCA2}
195
[2]196########################################################################
197
[108]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
[2]206
207########################################################################
208
209#set -vx
210
[202]211IGCM_sys_MkdirWork ${RUN_DIR_PATH}
[2]212IGCM_sys_Cd ${RUN_DIR_PATH}
213
[436]214# ------------------------------------------------------------------
215# Test if all was right before proceeding further
216# ------------------------------------------------------------------
217IGCM_debug_Verif_Exit_Post
218
[2]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
[601]226#==================================
[2]227# First of all
228#
229typeset option
[601]230
231#==================================
232# Read UserChoices section:
233IGCM_card_DefineArrayFromSection       ${CARD_DIR}/config.card UserChoices
234echo
235IGCM_debug_Print 1 "DefineArrayFromOption  : config_UserChoices"
[2]236for option in ${config_UserChoices[*]} ; do
237    IGCM_card_DefineVariableFromOption ${CARD_DIR}/config.card UserChoices ${option}
[601]238    eval auxprint=\${config_UserChoices_${option}}
239    IGCM_debug_Print 3 "${option} : ${auxprint}"
[2]240done
241#
242echo
[601]243
244#==================================
245# Read Post section:
246IGCM_card_DefineArrayFromSection ${CARD_DIR}/config.card Post
[2]247echo
[601]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
[2]256
257#==================================
[601]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#==================================
[263]268#R_SAVE : Job output directory
[571]269#R_BUFR : Job output buffered directory
[263]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}
[571]273    R_BUFR=${R_BUF}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName}
[263]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}
[571]277    R_BUFR=${R_BUF}/${config_UserChoices_TagName}/${config_UserChoices_JobName}
[263]278    R_DODS=${config_UserChoices_TagName}/${config_UserChoices_JobName}
279fi
[2]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#
[149]293an_fin=$(( $( IGCM_date_ConvertGregorianDateToJulian ${PeriodDateEnd} ) / 1000 ))
[2]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
[236]315        typeset i=2
[2]316        #
[240]317        until [ $i -gt $NbFiles ]; do
[2]318            #
[243]319            eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1
[2]320            #
321            if [ X${flag_post} != XNONE ] ; then
322                #
[236]323                # Check if seasonal is required for this file
[2]324                #
[239]325                IGCM_card_DefineArrayFromSection ${card} ${flag_post}
[236]326                #
[239]327                # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default
[237]328                #
[239]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
[237]338                    eval ${compname}_${flag_post}_Seasonal=ON
339                fi
340                #
[236]341                if [ ! X$( eval echo \${${compname}_${flag_post}_Seasonal} ) = XON ] ; then
[243]342                    (( i=i+3 ))
[236]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
[2]370            fi
[243]371            (( i=i+3 ))
[236]372        done # until [ $i -eq $NbFiles ]
[2]373    fi
[150]374done         # for comp
[2]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  ;;
[265]392            3H)    FreqDir=HF  ;;
[2]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
[66]398        IGCM_sys_TestFileArchive ${R_SAVE}/${comp}/Analyse/SE/${RESULT_SE}
399        if [ $? = 0 ] ; then
[2]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
[66]410          #set -A liste_file_se
411          #set -A liste_file_se_tmp
412          unset liste_file_se
413          unset liste_file_se_tmp
[2]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}
[66]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
[2]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
[150]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
[2]439                  done
[150]440              fi
[2]441          fi
[231]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
[410]446              ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra
[243]447              (( nbfile = nbfile + 1 ))
[231]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
[2]451
[370]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
[2]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
[370]460              IGCM_sys_ncra -O -v ${list_var_final_ncra} -d ${var_unlim},${nb},,12 ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]}
[2]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
[66]474              #set -A liste_file_se
475              #set -A liste_file_se_tmp
476              unset liste_file_se
477              unset liste_file_se_tmp
[2]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}
[66]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
[2]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
[150]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
[2]502                      done
[150]503                  fi
[2]504              fi
505             
[231]506              # Search of common list of variables to be treated
507              nbfile=0
508              for file_common_var in ${liste_file_se_tmp[*]} ; do
[410]509                  ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra
[243]510                  (( nbfile = nbfile + 1 ))
[231]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
[370]514
[231]515              IGCM_sys_ncra -O -v ${list_var_final_ncra} ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]}
516
[2]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
[66]529              #set -A liste_file_se
530              #set -A liste_file_se_tmp
531              unset liste_file_se
532              unset liste_file_se_tmp
[2]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}
[66]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
[2]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
[150]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
[2]568                      done
[150]569                  fi
[2]570              fi
571
[231]572              # Search of common list of variables to be treated
573              nbfile=0
574              for file_common_var in ${liste_file_se_tmp[*]} ; do
[410]575                  ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra
[243]576                  (( nbfile = nbfile + 1 ))
[231]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}]}
[2]582              IGCM_sys_Rm ${liste_file_se_tmp[*]}
583          done
584          ;;
585        esac
586        #
[231]587
588        # Search of common list of variables to be treated
589        nbfile=0
590        for file_common_var in ${OUT_SE[*]} ; do
[416]591           ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncrcat
[243]592           (( nbfile = nbfile + 1 ))
[231]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}
[2]598        #
599        IGCM_sys_Rm ${OUT_SE[*]}
600        #
[370]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
[377]604        # Put correct climatological axis following calendar
[379]605        case ${config_UserChoices_CalendarType} in
[430]606                360d|360_day)
[379]607                        # 360 days
[430]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\"'"
[379]609                        ;;
[430]610                noleap|365_day)
[379]611                        # 365 days
[430]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\"'"
[379]613                        ;;
[430]614                all_leap|366_day)
[379]615                        # 366 days
[430]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\"'"
[379]617                        ;;
[430]618                leap|gregorian|standard)
[379]619                        # 365.2425 days
[430]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\"'"
[379]621                        ;;
622        esac
[383]623        eval IGCM_sys_ncap2 -Oh -s $ncap2cmd ${RESULT_SE} tmp.nc
[379]624        IGCM_sys_Rm ${RESULT_SE}
625        IGCM_sys_Mv tmp.nc ${RESULT_SE}
[2]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
[67]635    IGCM_sys_TestDirArchive ${R_SAVE}/${comp}/Analyse/SE
636    [ $? = 0 ] && IGCM_sys_Put_Dods ${comp}/Analyse/SE
[2]637done
638
639YEARS=${an_deb}_${an_fin}
[370]640DIR_OUT=SE
[2]641
642export POST_DIR; export SUBMIT_DIR; export libIGCM; export R_INIT; export R_BC; export StandAlone
[213]643export RESOL_ATM; export RESOL_OCE ; export RESOL_ICE ; export RESOL_MBG ; export RESOL_SRF ; export RESOL_SBG
[370]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"
[2]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" ] || \
[15]655   [ ${config_UserChoices_TagName} = "IPSLCM4_v2" ]        || \
[2]656   [ ${config_UserChoices_TagName} = "IPSL_ESM_V1" ] ; then
657    #
[387]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                      ;
[2]666    #
[263]667elif [ ${config_UserChoices_TagName} = "IPSLCM5" ]  || \
[367]668     [ ${config_UserChoices_TagName} = "IPSLCM5A" ] || \
[461]669     [ ${config_UserChoices_TagName} = "IPSLCM5B" ] || \
[367]670     [ ${config_UserChoices_TagName} = "IPSLCM5A-MR" ] ; then
[387]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                     ;
[74]679    #
[15]680elif [ ${config_UserChoices_TagName} = "LMDZ4OR" ]  || \
[43]681     [ ${config_UserChoices_TagName} = "LMDZOR" ]   || \
[25]682     [ ${config_UserChoices_TagName} = "LMDZ4OR_v2" ] ; then
[2]683    #
[387]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                   ;
[2]688    #
[45]689elif [ ${config_UserChoices_TagName} = "LMDZ" ] ; then
[34]690    #
[387]691    Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ;
692    IGCM_sys_QsubPost atlas_LMDZ                       ;
[34]693    #
[15]694elif [ ${config_UserChoices_TagName} = "OL" ]      || \
[2]695     [ ${config_UserChoices_TagName} = "OL2" ] ; then
696    #
[387]697    Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ;
698    IGCM_sys_QsubPost atlas_ORCHIDEE                   ;
[2]699    #
[87]700elif [ ${config_UserChoices_TagName} = "ORCA2_LIM" ]       ||
[242]701     [ ${config_UserChoices_TagName} = "ORCA2_LIM2" ] ; then
[2]702    #
[387]703    Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ;
704    IGCM_sys_QsubPost atlas_ORCA_LIM                   ;
[242]705elif [ ${config_UserChoices_TagName} = "ORCA2_LIM2_PISCES" ]  ; then
[2]706    #
[387]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                     ;
[242]711elif [ ${config_UserChoices_TagName} = "ORCA2_OFF_PISCES" ]  ; then
712    #
[387]713    Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ;
714    IGCM_sys_QsubPost atlas_PISCES                     ;
[242]715    #
[2]716fi
[203]717
[592]718# Clean RUN_DIR_PATH (necessary for cesium and titane only)
[203]719IGCM_sys_RmRunDir -Rf ${RUN_DIR_PATH}
Note: See TracBrowser for help on using the repository browser.