DocUtilisateur/UtilisationAvancée: script_transformation

File script_transformation, 11.3 KB (added by mmaipsl, 15 years ago)

Script for transformation of OLD IPSL structure to new libIGCM one. Difference between OASIS 2 and OASIS 3 runs.

Line 
1#!/bin/ksh
2
3# Transforme une arborescence pour l'ancien script du couplé
4# vers la nouvelle structure de libIGCM :
5
6# usage :
7# script_transformation /u/rech/ces/rces333 SORTIES_CPL_IPSL LA1B450 /u/rech/ces/rces533 IPSLCM4_v2 LA1B450 [ ln | cp | ]
8
9INDMNFS=$1
10REP1=$2
11JobNameIn=$3
12OUTDMNFS=$4
13TagName=$5
14JobNameOut=$6
15# Optional argument : Action of transformation ( ln || cp || mv).
16# Nothing mean "do nothing".
17Action=$7
18
19echo "Script de Transformation Ancienne/Nouvelle arborescence."
20echo "Appel : script_transformation ${INDMNFS} ${REP1} ${JobNameIn} ${OUTDMNFS} ${TagName} ${JobNameOut} ${Action}"
21
22IGCM_OUT=IGCM_OUT
23
24verbose=false
25
26#transform=$Action
27function transform
28{
29    FILE1=$1
30    FILE2=$2
31    if ( ${verbose} ) ; then
32      echo "transform " ${FILE1} ${FILE2}
33    fi
34    case ${Action} in
35        ln)
36            ln -s $1 $2 ;;
37        cp)
38            cp $1 $2 ;;
39        *)
40            if ( ${verbose} ) ; then
41              echo "do nothing"
42            fi
43    esac
44}
45
46function MkDir
47{
48    DIR=$1
49    if ( ${verbose} ) ; then
50      echo "Make dir " ${DIR}
51    fi
52   
53    case ${Action} in
54        ln)
55            mkdir -p ${DIR} ;;
56        cp)
57            mkdir -p ${DIR} ;;
58        *)
59    esac
60}
61
62MkDir ${OUTDMNFS}/${IGCM_OUT}/${TagName}/${JobNameOut}
63
64
65set +A Liste_OLD_comp -- Atm  Cpl  Lim  Oce  Srf  Trc
66set +A Liste_NEW_comp -- ATM  CPL  ICE  OCE  SRF  TRC
67
68set +A Liste_Analyses -- MO2SN  MO2YE  MO4YE  SE TS TS_C4MIP
69#(DA2YE) ?
70#TS :
71# TS_HF => recherche .*hf.nc
72# TS_MO => recherche Job_1m_.*.nc
73# TS_DA => recherche Job_1d_.*.nc
74set +A Liste_Outputs -- DA HF MO
75
76NbComp=${#Liste_NEW_comp[*]}
77icomp=0
78while [ icomp -lt ${NbComp} ] ; do
79    compo=${Liste_OLD_comp[icomp]}
80    comp=${Liste_NEW_comp[icomp]}
81
82    if ( ${verbose} ) ; then
83      echo 'Transform ' ${compo} ' in ' ${comp}
84    fi
85    OLDCOMP=${INDMNFS}/${REP1}/${JobNameIn}/${compo}
86    NEWCOMP=${OUTDMNFS}/${IGCM_OUT}/${TagName}/${JobNameOut}/${comp}
87    if ( ${verbose} ) ; then
88      echo 'OLDREP ' ${OLDCOMP} 
89    fi
90    if ( ${verbose} ) ; then
91      echo ' in NEWREP ' ${NEWCOMP}
92    fi
93    MkDir ${NEWCOMP}/
94    MkDir ${NEWCOMP}/Analyse
95    MkDir ${NEWCOMP}/Output
96    MkDir ${NEWCOMP}/Restart
97
98    for Output in ${Liste_Outputs[*]} ; do
99        if [ -d ${OLDCOMP}/Output/${Output} ] ; then
100            if ( ${verbose} ) ; then
101              echo "Output exist : " ${Output}
102            fi
103
104            DIRIN=${OLDCOMP}/Output/${Output}
105            DIROUT=${NEWCOMP}/Output/${Output}
106
107            NbFiles=$( ls -1 ${DIRIN} | wc -l )
108            if ( ${verbose} ) ; then
109              echo "NbFiles = " ${NbFiles}
110            fi
111
112#           set -A LISTE -- $( find "${DIRIN}" -type f  -exec basename '{}' \; )
113#           if ( ${verbose} ) ; then
114#             echo "NbFilesListe = " ${#LISTE[*]}
115#           fi
116           
117#           if [ ${NbFiles} -ne ${#LISTE[*]} ] ; then
118#               echo "Number of file in LISTE not equal to real directory."
119#           fi
120
121            MkDir ${DIROUT}
122            case ${Output} in
123                DA)
124#                   for file in ${LISTE[*]} ; do
125                    for file in $( find "${DIRIN}" -type f  -exec basename '{}' \; ) ; do
126                        file_o=$( echo ${file} | sed -e \
127                            "s/${JobNameIn}_1d_\([0-9]*\)_\([0-9]*\)_\(.*.nc\)/${JobNameOut}_\1_\2_1D_\3/" )
128                        if ( ${verbose} ) ; then
129                            echo "file in " ${file} " file out " ${file_o}
130                        fi
131
132                        transform ${DIRIN}/${file} ${DIROUT}/${file_o}
133#                       ${transform} ${DIRIN}/${file} ${DIROUT}/${file_o}
134                    done
135                    ;;
136                HF)
137#                   for file in ${LISTE[*]} ; do
138                    for file in $( find "${DIRIN}" -type f  -exec basename '{}' \; ) ; do
139                        file_o=$( echo ${file} | sed -e \
140                            "s/${JobNameIn}_1[md]_\([0-9]*\)_\([0-9]*\)_\(.*.nc\)/${JobNameOut}_\1_\2_HF_\3/" )
141                        if ( ${verbose} ) ; then
142                            echo "file in " ${file} " file out " ${file_o}
143                        fi
144
145                        transform ${DIRIN}/${file} ${DIROUT}/${file_o}
146#                       ${transform} ${DIRIN}/${file} ${DIROUT}/${file_o}
147                    done
148                    ;;
149                MO)
150#                   for file in ${LISTE[*]} ; do
151                    for file in $( find "${DIRIN}" -type f  -exec basename '{}' \; ) ; do
152                        file_o=$( echo ${file} | sed -e \
153                            "s/${JobNameIn}_1m_\([0-9]*\)_\([0-9]*\)_\(.*.nc\)/${JobNameOut}_\1_\2_1M_\3/" )
154                        if ( ${verbose} ) ; then
155                            echo "file in " ${file} " file out " ${file_o}
156                        fi
157
158                        transform ${DIRIN}/${file} ${DIROUT}/${file_o}
159#                       ${transform} ${DIRIN}/${file} ${DIROUT}/${file_o}
160                    done
161                    ;;
162            esac
163        fi
164    done
165
166   
167    for Analyse in ${Liste_Analyses[*]} ; do
168        if [ -d ${OLDCOMP}/Analyse/${Analyse} ] ; then
169            if ( ${verbose} ) ; then
170              echo "Analyse exist : " ${Analyse}
171            fi
172
173            DIRIN=${OLDCOMP}/Analyse/${Analyse}
174            DIROUT=${NEWCOMP}/Analyse/${Analyse}
175
176            NbFiles=$( ls -1 ${DIRIN} | wc -l )
177            if ( ${verbose} ) ; then
178              echo "NbFiles = " ${NbFiles}
179            fi
180
181#           set -A LISTE -- $( find "${DIRIN}" -type f  -exec basename '{}' \; )
182#           if ( ${verbose} ) ; then
183#             echo "NbFilesListe = " ${#LISTE[*]}
184#           fi
185           
186#           if [ ${NbFiles} -ne ${#LISTE[*]} ] ; then
187#               echo "Number of file in LISTE not equal to real directory."
188#           fi
189
190            case ${Analyse} in
191                MO2SN)
192                    MkDir ${DIROUT}
193#                   for file in ${LISTE[*]} ; do
194                    for file in $( find "${DIRIN}" -type f  -exec basename '{}' \; ) ; do
195                        file_o=$( echo ${file} | sed -e \
196                            "s/${JobNameIn}_\([A-Z]*\)_\([0-9]*\)_\([0-9]*\)_\(.*.nc\)/${JobNameOut}_\2_\3_\1_\4/" )
197                        if ( ${verbose} ) ; then
198                            echo "file in " ${file} " file out " ${file_o}
199                        fi
200
201                        transform ${DIRIN}/${file} ${DIROUT}/${file_o}
202#                       ${transform} ${DIRIN}/${file} ${DIROUT}/${file_o}
203                    done
204                    ;;
205                MO2YE)
206                    MkDir ${DIROUT}
207#                   for file in ${LISTE[*]} ; do
208                    for file in $( find "${DIRIN}" -type f  -exec basename '{}' \; ) ; do
209                        file_o=$( echo ${file} | sed -e \
210                            "s/${JobNameIn}_m2y_1y_\([0-9]*\)_\([0-9]*\)_\(.*.nc\)/${JobNameOut}_\1_\2_MO1Y_\3/" )
211                        if ( ${verbose} ) ; then
212                            echo "file in " ${file} " file out " ${file_o}
213                        fi
214
215                        transform ${DIRIN}/${file} ${DIROUT}/${file_o}
216#                       ${transform} ${DIRIN}/${file} ${DIROUT}/${file_o}
217                    done
218                    ;;
219                MO4YE)
220                    MkDir ${DIROUT}
221#                   for file in ${LISTE[*]} ; do
222                    for file in $( find "${DIRIN}" -type f  -exec basename '{}' \; ) ; do
223                        file_o=$( echo ${file} | sed -e \
224                            "s/${JobNameIn}_m4y_1y_\([0-9]*\)_\([0-9]*\)_\(.*.nc\)/${JobNameOut}_\1_\2_1Y_\3/" )
225                        if ( ${verbose} ) ; then
226                            echo "file in " ${file} " file out " ${file_o}
227                        fi
228
229                        transform ${DIRIN}/${file} ${DIROUT}/${file_o}
230#                       ${transform} ${DIRIN}/${file} ${DIROUT}/${file_o}
231                    done
232                    ;;
233                SE)
234                    MkDir ${DIROUT}
235#                   for file in ${LISTE[*]} ; do
236                    for file in $( find "${DIRIN}" -type f  -exec basename '{}' \; ) ; do
237                        file_o=$( echo ${file} | sed -e \
238                                "s/${JobNameIn}_SE_\([0-9]*\)_\([0-9]*\)_\(.*.nc\)/${JobNameOut}_SE_\1_\2_1M_\3/" )
239                        if ( ${verbose} ) ; then
240                            echo "file in " ${file} " file out " ${file_o}
241                        fi
242
243                        transform ${DIRIN}/${file} ${DIROUT}/${file_o}
244#                       ${transform} ${DIRIN}/${file} ${DIROUT}/${file_o}
245                    done
246                    ;;
247                TS)
248#                   for file in ${LISTE[*]} ; do
249                    for file in $( find "${DIRIN}" -type f  -exec basename '{}' \; ) ; do
250                        if [ X$( echo ${file} | grep "${JobNameIn}_1m_\([0-9]*\)_\([0-9]*\)_\(.*\)hf\.nc" ) != X ] ; then
251                            MkDir ${NEWCOMP}/Analyse/TS_HF
252
253                            file_o=$( echo ${file} | sed -e \
254                                "s/${JobNameIn}_1m_\([0-9]*\)_\([0-9]*\)_\(.*\)hf\.nc/${JobNameOut}_\1_\2_HF_\3.nc/" )
255
256                            transform ${DIRIN}/${file} ${NEWCOMP}/Analyse/TS_HF/${file_o}
257#                            ${transform} ${DIRIN}/${file} ${NEWCOMP}/Analyse/TS_HF/${file_o}
258                        elif [ X$( echo ${file} | grep "${JobNameIn}_1m_\([0-9]*\)_\([0-9]*\)_\(.*.nc\)" ) != X ] ; then
259                            MkDir ${NEWCOMP}/Analyse/TS_MO
260
261                            file_o=$( echo ${file} | sed -e \
262                                "s/${JobNameIn}_1m_\([0-9]*\)_\([0-9]*\)_\(.*.nc\)/${JobNameOut}_\1_\2_1M_\3/" )
263
264                            transform ${DIRIN}/${file} ${NEWCOMP}/Analyse/TS_MO/${file_o}
265#                            ${transform} ${DIRIN}/${file} ${NEWCOMP}/Analyse/TS_MO/${file_o}
266                        elif [ X$( echo ${file} | grep "${JobNameIn}_1d_\([0-9]*\)_\([0-9]*\)_\(.*.nc\)" ) != X ] ; then
267                            MkDir ${NEWCOMP}/Analyse/TS_DA
268
269                            file_o=$( echo ${file} | sed -e \
270                                "s/${JobNameIn}_1d_\([0-9]*\)_\([0-9]*\)_\(.*.nc\)/${JobNameOut}_\1_\2_1D_\3/" )
271
272                            transform ${DIRIN}/${file} ${NEWCOMP}/Analyse/TS_DA/${file_o}
273#                            ${transform} ${DIRIN}/${file} ${NEWCOMP}/Analyse/TS_DA/${file_o}
274                        fi
275                        if ( ${verbose} ) ; then
276                            echo "file in " ${file} " file out " ${file_o}
277                        fi
278
279                    done
280                    ;;
281                TS_C4MIP)
282                    MkDir ${NEWCOMP}/Analyse/TS_MO
283#                   for file in ${LISTE[*]} ; do
284                    for file in $( find "${DIRIN}" -type f  -exec basename '{}' \; ) ; do
285                        file_o=$( echo ${file} | sed -e \
286                            "s/${JobNameIn}_m2y_1m_\([0-9]*\)_\([0-9]*\)_\(.*.nc\)/${JobNameOut}_\1_\2_M2Y_\3/" )
287                        if ( ${verbose} ) ; then
288                            echo "file in " ${file} " file out " ${file_o}
289                        fi
290
291                        transform ${DIRIN}/${file} ${DRIOUT}/${file_o}
292#                       ${transform} ${DIRIN}/${file} ${DRIOUT}/${file_o}
293                    done
294                    ;;
295                *)
296                    ;;
297            esac
298        fi
299    done
300
301    if ( ${verbose} ) ; then
302        echo "Restarts"
303    fi
304
305    DIRIN=${OLDCOMP}/Restart
306    DIROUT=${NEWCOMP}/Restart
307
308    NbFiles=$( ls -1 ${DIRIN} | wc -l )
309    if ( ${verbose} ) ; then
310        echo "NbFiles = " ${NbFiles}
311    fi
312   
313#     set -A LISTE -- $( find "${DIRIN}" -type f  -exec basename '{}' \; )
314#     if ( ${verbose} ) ; then
315#       echo "NbFilesListe = " ${#LISTE[*]}
316#     fi
317           
318#     if [ ${NbFiles} -ne ${#LISTE[*]} ] ; then
319#       echo "Number of file in LISTE not equal to real directory."
320#     fi
321
322    case ${comp} in
323        CPL)
324            #               for file in ${LISTE[*]} ; do
325            for file in $( find "${DIRIN}" -type f  -exec basename '{}' \; ) ; do
326                if [ X$( echo ${file} | grep "${JobNameIn}_flxatmos.*_\([0-9]*\).nc" ) != X ] ; then
327#OASIS V3
328                    file_o=$( echo ${file} | sed -e \
329                        "s/${JobNameIn}_flxatmos\(.*\)_\([0-9]*\).nc/${JobNameOut}_\2_flxat\1.nc/" )
330                elif [ X$( echo ${file} | grep "${JobNameIn}_flxatmos.*_\([0-9]*\)" ) != X ] ; then
331#OASIS V2
332                    file_o=$( echo ${file} | sed -e \
333                        "s/${JobNameIn}_flxatmos\(.*\)_\([0-9]*\)/${JobNameOut}_\2_flxat\1.nc/" )
334                elif [ X$( echo ${file} | grep "${JobNameIn}_sstocean.*_\([0-9]*\).nc" ) != X ] ; then
335#OASIS V3
336                    file_o=$( echo ${file} | sed -e \
337                        "s/${JobNameIn}_sstocean\(.*\)_\([0-9]*\).nc/${JobNameOut}_\2_sstoc\1.nc/" )
338                elif [ X$( echo ${file} | grep "${JobNameIn}_sstocean.*_\([0-9]*\)" ) != X ] ; then
339#OASIS V2
340                    file_o=$( echo ${file} | sed -e \
341                        "s/${JobNameIn}_sstocean\(.*\)_\([0-9]*\)/${JobNameOut}_\2_sstoc\1.nc/" )
342                fi
343                if ( ${verbose} ) ; then
344                    echo "file in " ${file} " file out " ${file_o}
345                fi
346
347                transform ${DIRIN}/${file} ${DIROUT}/${file_o}
348#               ${transform} ${DIRIN}/${file} ${DIROUT}/${file_o}
349            done
350            ;;
351        SRF)
352            #               for file in ${LISTE[*]} ; do
353            for file in $( find "${DIRIN}" -type f  -exec basename '{}' \; ) ; do
354                file_o=${file}
355                if [ X$( echo ${file} | grep "${JobNameIn}_\([0-9]*\)_stomate_restart.nc" ) != X ] ; then
356                    file_o=$( echo ${file} | sed -e \
357                        "s/${JobNameIn}_\([0-9]*\)_stomate_restart.nc/${JobNameOut}_\1_stomate_rest.nc/" )
358                fi
359                if ( ${verbose} ) ; then
360                    echo "file in " ${file} " file out " ${file_o}
361                fi
362
363                transform ${DIRIN}/${file} ${DIROUT}/${file_o}
364#               ${transform} ${DIRIN}/${file} ${DIROUT}/${file_o}
365            done
366            ;;
367        *)
368            #               for file in ${LISTE[*]} ; do
369            for file in $( find "${DIRIN}" -type f  -exec basename '{}' \; ) ; do
370                file_o=$( echo ${file} | sed -e \
371                    "s/${JobNameIn}_\([0-9]*\)_\(.*\).nc/${JobNameOut}_\2_\1.nc/" )
372                if ( ${verbose} ) ; then
373                    echo "file in " ${file} " file out " ${file_o}
374                fi
375
376                transform ${DIRIN}/${file} ${DIROUT}/${file_o}
377#               ${transform} ${DIRIN}/${file} ${DIROUT}/${file_o}
378            done
379            ;;
380    esac
381
382    (( icomp = icomp + 1 ))
383done