source: TOOLS/PACK_IPSL/create_config_card.sh @ 1906

Last change on this file since 1906 was 1900, checked in by aclsce, 12 years ago

Modified to write log files in TMP_MIGR_DATA directory (instead of current directory)

File size: 11.2 KB
Line 
1#!/bin/bash
2##
3## Job permettant de recreer une partie du config.card d'une simulation
4## Champs vises : JobName / DateBegin / DateEnd / Calendar
5##
6
7# Prend en argument un fichier contenant une liste de simulations
8# cree pour chacune son config.card
9# Ex : ./create_config_card.job liste_simul_fichier_param_test1.txt liste_fichier_dmnfs
10# Ex : ./create_config_card.job liste_simul_param_SL.txt /cscratch/cont003/labetoul/FROM_CCRT_INFORMATIONS_DMNFS/information_dmnfs_2012-03-21
11
12
13LISTE_SIMUL=${1}
14LISTE_DMNFS=${2}
15
16# ----
17export JOB_DIR=${JOB_DIR:-${TMP_MIGR_DATA}}
18export IGCM_DEM=${IGCM_DEM:-${SCRATCHDIR}/IGCM_DEM}
19export IGCM_TMP=${IGCM_TMP:-${IGCM_DEM}/tmp}
20mkdir -p ${IGCM_DEM}
21mkdir -p ${IGCM_TMP}
22clean_tmp=${clean_tmp:-yes}
23EXE_DIR=$(dirname ${0})
24SCRIPT_NAME=$(basename ${0} )
25source ${EXE_DIR}/DEM_utilities.sh
26
27# gpdebug : verif si le present script a ete execute jusqu'au bout #########
28MonitoringInfo="${SCRIPT_NAME}-->OK"
29generalMonitoring "$MonitoringInfo"
30
31DEM_log -0 "Demarrage de ${SCRIPT_NAME}"
32
33# gpdebug : on augmente la liste des proc à détruire en cas d'erreur bloquante du présent proc
34export listPID="$$ ${listPID}" #########
35
36cd ${JOB_DIR}
37# ----
38
39DEM_log -0 "LISTE_SIMUL : ${LISTE_SIMUL}"
40DEM_log -0 "LISTE_DMNFS : ${LISTE_DMNFS}"
41
42[[ -f ${IGCM_DEM}/config_card.liste ]] && rm ${IGCM_DEM}/config_card.liste
43
44#ROOT_DIR=/dmnfs05/cont003/labetoul # soit DMFDIR, soit le tampon. a ameliorer ...
45
46
47cd ${JOB_DIR}
48
49for PATH_SIMUL_FULL in `awk  '{print $0}' ${LISTE_SIMUL}` ; do
50
51    DEM_log -3 PATH_SIMUL_FULL : ${PATH_SIMUL_FULL}
52    #PATH_SIMUL_SHORT=${PATH_SIMUL_FULL##${ROOT_DIR}} # Enleve le debut du path
53#    PATH_SIMUL_SHORT=$(echo ${PATH_SIMUL_FULL} | sed 's%/[^/]*/[^/]*/[^/]*/%%' )
54#    PATH_SIMUL_SHORT=$(echo ${PATH_SIMUL_FULL} | sed 's%/ccc/dmfbuf/import_data.2/ccrt/dmnfs12/cont003/bacasable/%%' )
55    echo "gpdebug : PATH_SIMUL_FULL :" # gpdebug : a virer
56    echo "$PATH_SIMUL_FULL :" # gpdebug : a virer
57    PATH_SIMUL_SHORT=$(echo ${PATH_SIMUL_FULL} | sed "s%${INPUT_DMF_DATA}/%%" ) # gpdebug : added
58    echo "gpdebug : PATH_SIMUL_SHORT :" # gpdebug : a virer
59    echo "$PATH_SIMUL_SHORT :" # gpdebug : a virer 
60    DEM_log -3 PATH_SIMUL_SHORT : ${PATH_SIMUL_SHORT}
61   
62    IGCM_DEM_SIMU=${IGCM_DEM}/${PATH_SIMUL_SHORT}
63    mkdir -p ${IGCM_DEM_SIMU}
64    rm -rf ${IGCM_DEM_SIMU}/*
65
66    #creation du repertoire permettant de stocker
67    #les listes de fichiers qui ne sont pas au format output ou restart
68    #les listes de fichiers d'analyse, les monitos et les atlas
69    OTHER_TAR=${IGCM_DEM_SIMU}/other_tar
70    STORE_CP=${IGCM_DEM_SIMU}/store_cp
71    WORK_CP=${IGCM_DEM_SIMU}/work_cp
72
73    DEM_log -2 "creation des repertoires : $OTHER_TAR  - $STORE_CP - $WORK_CP"
74
75    mkdir -p ${OTHER_TAR}
76    mkdir -p ${STORE_CP}
77    mkdir -p ${WORK_CP}
78
79    # on recherche le nom du job
80    JobName=""
81   
82    # Etablir la liste des fichiers d'Analyse
83    grep ${PATH_SIMUL_FULL}/ ${LISTE_DMNFS} | grep Analyse  | awk '{print $3}' |  sort >> ${IGCM_TMP}/${$}.cp_analyse_files.list
84    awk -F/ '{if ($(NF)=="Analyse") print $0} ' ${IGCM_TMP}/${$}.cp_analyse_files.list > ${STORE_CP}/cp_files.list
85    rm -f ${IGCM_TMP}/${$}.cp_analyse_files.list
86
87    #On recupere egalement le fichier mesh_mask si il existe
88    grep ${PATH_SIMUL_FULL}/ ${LISTE_DMNFS} | grep mesh_mask | awk '{print $3}' >> ${STORE_CP}/cp_files.list
89    mesh_mask_path=$( grep ${PATH_SIMUL_FULL}/ ${LISTE_DMNFS} | grep mesh_mask | awk '{print $3}' )
90    if [ "x$mesh_mask_path" != "x" ]
91    then
92        grep -v $mesh_mask_path ${LISTE_DMNFS} > ${IGCM_TMP}/${$}.Listing_tmp.txt; mv ${IGCM_TMP}/${$}.Listing_tmp.txt ${LISTE_DMNFS} 
93    fi
94
95    #On copie aussi le contenu du repertoire Exe/
96    grep ${PATH_SIMUL_FULL}/ ${LISTE_DMNFS} | grep -w Exe | awk '{print $3}' >> ${IGCM_TMP}/${$}.cp_analyse_files.list
97    awk -F/ '{if ($(NF)=="Exe") print $0} ' ${IGCM_TMP}/${$}.cp_analyse_files.list >> ${STORE_CP}/cp_files.list
98    rm -f ${IGCM_TMP}/${$}.cp_analyse_files.list
99   
100
101    # Etablir la liste des fichiers Monito et Atlas
102    grep ${PATH_SIMUL_FULL}/ ${LISTE_DMNFS} | grep  MONITORING | awk '{print $3}' | sort >> ${IGCM_TMP}/${$}.cp_monito_files.list
103    awk -F/ '{if ($(NF)=="MONITORING") print $0} ' ${IGCM_TMP}/${$}.cp_monito_files.list > ${WORK_CP}/cp_files.list
104    rm -f ${IGCM_TMP}/${$}.cp_monito_files.list
105
106    grep ${PATH_SIMUL_FULL}/ ${LISTE_DMNFS} | grep  ATLAS | awk '{print $3}' | sort >> ${IGCM_TMP}/${$}.cp_atlas_files.list
107    awk -F/ '{if ($(NF)=="ATLAS") print $0} ' ${IGCM_TMP}/${$}.cp_atlas_files.list >> ${WORK_CP}/cp_files.list
108    rm -f ${IGCM_TMP}/${$}.cp_atlas_files.list
109
110    # Etablir la liste des fichiers de restart
111    grep ${PATH_SIMUL_FULL}/ ${LISTE_DMNFS} | grep Restart | awk '{print $2 " " $3}' | grep -e '.*/Restart/.*\..*' |grep -v "jnl" | sort  >> ${IGCM_TMP}/${$}.liste_restart_files_config.txt
112
113    # Retirons de la liste les fichiers que l'on n'attends pas, en particulier si il  y a des sous-repertoires au repetoire restart/
114    for file in `awk  '{print $2}'  ${IGCM_TMP}/${$}.liste_restart_files_config.txt ` ; do
115        dir=$( echo $file | sed -e "s%.*Restart/%%") 
116        testdir=$(dirname ${dir}) 
117        if [ $testdir != "." ]; then
118            echo $( grep ${file} ${IGCM_TMP}/${$}.liste_restart_files_config.txt)  >> ${IGCM_TMP}/${$}.liste_no_restart_files_config.txt
119        fi
120    done
121    if [ -f ${IGCM_TMP}/${$}.liste_no_restart_files_config.txt ]; then
122        join -t % -v 1 ${IGCM_TMP}/${$}.liste_restart_files_config.txt ${IGCM_TMP}/${$}.liste_no_restart_files_config.txt > ${IGCM_TMP}/${$}.info_tmp.txt
123        mv ${IGCM_TMP}/${$}.info_tmp.txt ${IGCM_TMP}/${$}.liste_restart_files_config.txt
124    fi
125   
126    # Etablir la liste des fichiers output
127    grep ${PATH_SIMUL_FULL}/ ${LISTE_DMNFS} | grep Output  | awk '{print $2 " "  $3}' | grep -e '.*/Output/.*\.nc$'  | sort >> ${IGCM_TMP}/${$}.liste_output_files_config.txt
128    # Retirons de la liste les fichiers que l'on n'attends pas, en particulier si il  y a des sous-repertoires aux repetoires Output/*/
129    for file in `awk  '{print $2}'  ${IGCM_TMP}/${$}.liste_output_files_config.txt ` ; do
130        dir=$( echo $file | sed -e "s%.*Output/[^/]*/%%") 
131        testdir=$(dirname ${dir}) 
132        if [ $testdir != "." ]; then
133            echo $( grep ${file} ${IGCM_TMP}/${$}.liste_output_files_config.txt ) >> ${IGCM_TMP}/${$}.liste_no_output_files_config.txt
134        fi
135    done
136    if [ -f ${IGCM_TMP}/${$}.liste_no_output_files_config.txt ]; then
137        join -t % -v 1 ${IGCM_TMP}/${$}.liste_output_files_config.txt ${IGCM_TMP}/${$}.liste_no_output_files_config.txt > ${IGCM_TMP}/${$}.info_tmp.txt
138        mv ${IGCM_TMP}/${$}.info_tmp.txt ${IGCM_TMP}/${$}.liste_output_files_config.txt
139    fi
140
141
142
143
144    # Lecture du nom du job
145    JobName=`awk -F/ '{if (NR==1) print $(NF-3)}'  ${IGCM_TMP}/${$}.liste_restart_files_config.txt`
146
147    if [ $JobName = "ATM" ]; then
148        JobName=`awk -F/ '{if (NR==1) print $(NF-4)}'  ${IGCM_TMP}/${$}.liste_restart_files_config.txt`
149    fi
150    DEM_log -2 JobName ${JobName}
151
152
153# Maintenant que nous avons JobName verifions que tous les fichiers de restart/Output sont bien du type JobName_date_*
154    sed -e "s%.*${JobName}_\([0-9]\{8\}\)_%%" ${IGCM_TMP}/${$}.liste_restart_files_config.txt  >  ${IGCM_TMP}/${$}.info_tmp.txt
155    cat ${IGCM_TMP}/${$}.info_tmp.txt |grep "/" >  ${IGCM_TMP}/${$}.info_tmp_bis.txt
156    join -t % -v 1 ${IGCM_TMP}/${$}.liste_restart_files_config.txt ${IGCM_TMP}/${$}.info_tmp_bis.txt > ${IGCM_TMP}/${$}.restart.tmp
157    sort -k 2 ${IGCM_TMP}/${$}.restart.tmp > ${IGCM_TMP}/${$}.restart_bis.tmp
158    mv ${IGCM_TMP}/${$}.restart_bis.tmp ${IGCM_DEM_SIMU}/liste_restart_files_config.txt
159# Sauvegarde des fichiers qui ne sont pas dans la norme
160    cat ${IGCM_TMP}/${$}.info_tmp_bis.txt >> ${IGCM_TMP}/${$}.liste_no_restart_files_config.txt
161    mv ${IGCM_TMP}/${$}.liste_no_restart_files_config.txt ${OTHER_TAR}/tar_no_restart_files.list
162
163
164    sed -e "s%.*${JobName}_\([0-9]\{8\}\)_%%" ${IGCM_TMP}/${$}.liste_output_files_config.txt  >  ${IGCM_TMP}/${$}.info_tmp.txt
165    cat ${IGCM_TMP}/${$}.info_tmp.txt |grep "/" >  ${IGCM_TMP}/${$}.info_tmp_bis.txt
166    join -t % -v 1 ${IGCM_TMP}/${$}.liste_output_files_config.txt ${IGCM_TMP}/${$}.info_tmp_bis.txt > ${IGCM_TMP}/${$}.output.tmp
167    sort -k 2 ${IGCM_TMP}/${$}.output.tmp > ${IGCM_TMP}/${$}.output_bis.tmp
168    mv ${IGCM_TMP}/${$}.output_bis.tmp ${IGCM_DEM_SIMU}/liste_output_files_config.txt
169# Sauvegarde des fichiers qui ne sont pas dans la norme
170    cat ${IGCM_TMP}/${$}.info_tmp_bis.txt >> ${IGCM_TMP}/${$}.liste_no_output_files_config.txt
171    mv ${IGCM_TMP}/${$}.liste_no_output_files_config.txt ${OTHER_TAR}/tar_no_output_files.list
172
173
174# Recherche de DateBegin et DateEnd pour les Restarts
175    first_file=$(        head -n 1 ${IGCM_DEM_SIMU}/liste_restart_files_config.txt )
176    extract_date_file=$( echo ${first_file}  | sed -e "s/.*${JobName}_//" )
177    DateBegin_Restart=$( echo ${extract_date_file}| sed 's/\([0-9]\{8\}\)_.*$/\1/g' )
178   
179    last_file=$(         tail -n 1 ${IGCM_DEM_SIMU}/liste_restart_files_config.txt )
180    extract_date_file=$( echo ${last_file}  | sed -e "s/.*${JobName}_//" )
181    DateEnd_Restart=$(   echo ${extract_date_file}| sed 's/\([0-9]\{8\}\)_.*$/\1/g' )
182   
183# Recherche de DateBegin et DateEnd pour les Output
184    first_file=$( head -n 1 ${IGCM_DEM_SIMU}/liste_output_files_config.txt )
185    extract_date_file=$( echo ${first_file}  | sed -e "s/.*${JobName}_//" )
186    DateBegin_Output=$(  echo ${extract_date_file}| sed 's/\([0-9]\{8\}\)_.*$/\1/g' )
187   
188    last_file=$(         tail -n 1 ${IGCM_DEM_SIMU}/liste_output_files_config.txt )
189    extract_date_file=$( echo ${last_file}  | sed -e "s/.*${JobName}_//" )
190    DateEnd_Output=$(    echo ${extract_date_file}| sed 's/\([0-9]\{8\}\)_.*$/\1/g' )
191   
192    DateBegin=${DateBegin_Restart}
193    DateEnd=${DateEnd_Restart}
194
195    DEM_log -2 "DateBegin DateEnd : ${DateBegin} ${DateEnd}"
196    DEM_log -2 "DateBegin_Output DateEnd_Output : ${DateBegin_Output} ${DateEnd_Output}"
197    DEM_log -2 "DateBegin_Restart DateEnd_Restart : ${DateBegin_Restart} ${DateEnd_Restart}"
198
199    DateBegin=$( DEM_min ${DateBegin_Output} ${DateBegin} ) 
200    DateEnd=$(   DEM_max ${DateEnd_Output}   ${DateEnd}   )
201   
202    DEM_log -2  "DateBegin DateEnd : ${DateBegin} ${DateEnd}"
203   
204    [[ "${clean_tmp}" = "yes" ]] && rm -f ${IGCM_TMP}/${$}.config_name ${IGCM_TMP}/${$}.liste_output_files_config.txt ${IGCM_TMP}/${$}.liste_restart_files_config.txt
205   
206    rm -f ${IGCM_DEM_SIMU}/config_card_${JobName}
207    cat<<EOD>${IGCM_DEM_SIMU}/config_card_${JobName}
208JobName=${JobName}
209DateBegin=${DateBegin}
210DateEnd=${DateEnd}
211PATH_SIMUL_FULL=${PATH_SIMUL_FULL}
212IGCM_DEM_SIMU=${IGCM_DEM_SIMU}
213EOD
214   
215    echo "${IGCM_DEM_SIMU}/config_card_${JobName} ListToBeDone" >> ${IGCM_DEM}/config_card.liste
216
217    DEM_log -1 "${IGCM_DEM_SIMU}/config_card_${JobName} ListToBeDone >> ${IGCM_DEM}/config_card.liste"
218
219
220#si la liste des fichiers d'output est vide on tar la simul
221if [[ !  -s ${IGCM_DEM_SIMU}/liste_output_files_config.txt ]]; then
222DEM_log -2 "liste output vide"
223    ./write_liste_tar.sh ${IGCM_DEM_SIMU}/config_card_${JobName}
224fi
225
226# si les listes no_output et no_restart sont vides on les efface
227if [[ !  -s ${OTHER_TAR}/tar_no_output_files.list ]]; then
228    rm -f ${OTHER_TAR}/tar_no_output_files.list
229fi
230
231if [[ !  -s ${OTHER_TAR}/tar_no_restart_files.list ]]; then
232    rm -f ${OTHER_TAR}/tar_no_restart_files.list
233fi
234
235
236done
237
238# gpdebug : le script n'a pas rencontre d'erreur. On l'inscrit dans le fichier de suivi
239echo $MonitoringInfo >> $generalMonitorFile
240
241DEM_log -0 "Fin de ${SCRIPT_NAME}"
242
Note: See TracBrowser for help on using the repository browser.