source: trunk/MESOSCALE/PLOT/SPEC/SERIES/windmeso.pro @ 205

Last change on this file since 205 was 85, checked in by aslmd, 14 years ago

LMD_MM_MARS et LMD_LES_MARS: ajout des routines IDL pour tracer les sorties --> voir mesoscale/PLOT

File size: 8.5 KB
Line 
1pro windmeso
2
3;;Procedure de trace de valeurs issues du Mesoscale en temps-altitude
4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
7;;Choix des champs a tracer, 3 cas :
8;;Un champ de deux variables, dont on trace le module, entrer [X,Y]
9;;Une variable X seule, dont on trace la valeur entrer  [X,X]
10;;tk, entrer [T,PTOT]
11
12;champ1='U' & champ2='V' & champlat = 'XLAT' & champlon = 'XLONG' & champhgt = 'HGT' & file='/home/aymeric/Science/INTERCOMP/LMD_MMM/LMD_MMM_d04_2024-05-57_06:00:00' & nomfich='nest4_MSL' & charphtot = 'PHTOT'
13
14champ1='u_avg' & champ2='v_avg' & champlat = 'glat' & champlon = 'glon' & champhgt = 'topo' & file='/home/aymeric/Science/INTERCOMP/MRAMS/MRAMS_d04_2024-05-57_06:00:00' & nomfich='nest4_MSL_mrams' & charphtot = 'z_lyrmid_agl'
15
16;nomfich=nomfich+'proch'
17
18;champ1='T' & champ2='PTOT' & champlat = 'XLAT' & champlon = 'XLONG' & champhgt = 'HGT' & file='/home/aymeric/Science/INTERCOMP/LMD_MMM/LMD_MMM_d04_2024-05-57_06:00:00' & nomfich='nest4_MSLtemp' & charphtot = 'PHTOT'
19
20;champ1='tempk' & champ2='tempk' & champlat = 'glat' & champlon = 'glon' & champhgt = 'topo' & file='/home/aymeric/Science/INTERCOMP/MRAMS/MRAMS_d04_2024-05-57_06:00:00' & nomfich='nest4_MSL_mramstemp' & charphtot = 'z_lyrmid_agl'
21
22
23;;Decommenter pour un fichier d'API
24;api='on'       ;;a tester, voir REF si ca ne marche pas
25
26;;Choix du fichier de simulation
27;file='/d6/vblmd/MERIDIANI_EXOMARS/saves_simu_LS_68.5/jour20/wrfout_d01_2024-03-20_06:00:00'
28;file='/d6/vblmd/MERIDIANI_EXOMARS/saves_simu_LS_244_tau2/wrfout_d01_2024-09-08_00:00:00'
29;file='/d6/vblmd/MERIDIANI_EXOMARS/saves_simu_LS_244_tau05/wrfout_d01_2024-09-08_00:00:00'
30;file='/d6/vblmd/MERIDIANI_EXOMARS/saves_simu_LS_244_tau5/wrfout_d01_2024-09-08_00:00:00'
31;file='/d6/vblmd/MERIDIANI_EXOMARS/saves_simu_LS_244_tau1/wrfout_d01_2024-09-08_00:00:00'
32;file='/tmp7/aslmd/wrfout_d01_2024-09-10_06:00:00'
33;file='/tmp7/aslmd/MERIDIANI_FLUSH/wrfout_d01_2024-09-07_06:00:00'
34;file='/tmp7/aslmd/MERIDIANI_FLUSH/wrfout_d01_2024-09-13_06:00:00'
35;file='/tmp7/aslmd/MERIDIANI_FLUSH2/wrfout_d01_2024-09-07_06:00:00'
36;file='/tmp7/aslmd/MERIDIANI_FLUSH2/wrfout_d01_2024-09-13_06:00:00'
37;file='/tmp7/aslmd/MERIDIANI_BOMB/wrfout_d01_2024-09-07_06:00:00'
38;file='/home/aymeric/Science/INTERCOMP/LMD_MMM/LMD_MMM_d04_2024-05-57_06:00:00'
39
40;;Nom du fichier de sortie
41        ;nomfich='flush'
42        ;nomfich='nest4_MSL'
43        ;nomfich='flush_late'
44        ;nomfich='flush2'
45        ;nomfich='flush2_late'
46        ;nomfich='bomb'
47        nomfich= nomfich+'_vert'
48        ;nomfich='LS244_tau1_vent_bas'
49        ;nomfich='test'
50       
51;; Choix des options :
52;;Heure de depart du trace sur les abscisses (ne fait que decaler le trace : le mettre a l'heure de debut de la simu)
53        start_time=0. ;6. ;0.
54;;Intervalle horaire (ne fait qu'elargir le trace, en placant une heure de simu tous les interv)
55        interv=1.
56       
57;;Gestion des sites
58n = 1 ;;nombre de sites
59sites = make_array(n,/STRING)
60coord = make_array(2,n,/FLOAT)
61        sites[0] ='landing_site'
62        ;sites[0] = 'landing_site'
63        ;sites[1] = 'crater'
64        ;sites[2] = 'crater_rim'
65        ;sites[3] = 'high_area'
66        ;sites[4] = 'low_area'
67        ;sites[5] = 'plain'
68        ;sites[] = ''
69        ;; si on ne veut pas de nom avec les coordonnes rajouter une case avec rien dedans
70        coord[0,0] =325.149-360.        & coord[1,0] =-26.372
71        ;coord[0,0] =353.87-360.        & coord[1,0] =-1.88
72        ;coord[0,1] =-9.93              & coord[1,1] =5.45
73        ;coord[0,2] =-9.78              & coord[1,2] =6.63
74        ;coord[0,3] =5.77               & coord[1,3] =-6.84
75        ;coord[0,4] =-11.78             & coord[1,4] =7.80
76        ;coord[0,5] =-2.67              & coord[1,5] =-1.8
77        ;coord[0,] =-2.67               & coord[1,] =-1.8
78       
79;;sites de reference:
80;'landing_site' coord[0,] =353.87-360.          & coord[1,] =-1.88
81;'crater'               coord[0,] =-9.93                & coord[1,] =5.45
82;'crater_rim'           coord[0,] =-9.78                & coord[1,] =6.63
83;'high_area'            coord[0,] =5.77                 & coord[1,] =-6.84
84;'low_area'             coord[0,] =-11.78               & coord[1,] =7.80
85;'plain'                coord[0,] =-2.67                & coord[1,] =-1.8
86;'crater_slope' coord[0,] =-9.59                & coord[1,] =5.96
87;'crater_LS'            coord[0,] =-3.68                & coord[1,] =-3.65
88;'crater_LS_rim'        coord[0,] =-4.70                & coord[1,] =-3.65
89;'holden'               coord[0,] =-34.851              & coord[1,] =-26.372
90
91       
92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;     
94
95;;Pour regler les parametres de trace dans autre chose que param_plot qui risaue de mal finir un jour
96SPAWN, '\rm param_plot.idl ; cp -f windautom.idl param_plot.idl'       
97       
98       
99;;Recuperation de la latitude, longitude, topographie et pression (pour le calcul de la heuteur)
100
101        getcdf, file=file, charvar=champlat, invar=lat
102        getcdf, file=file, charvar=champlon, invar=lon
103        getcdf, file=file, charvar=champhgt, invar=elevation   
104
105
106        ;;Recuperation des variables
107        if champ1 eq champ2 then begin
108                getcdf, file=file, charvar=champ1, invar=c
109        endif  else begin
110                getcdf, file=file, charvar=champ1, invar=c1
111                getcdf, file=file, charvar=champ2, invar=c2
112        endelse
113       
114       
115for i = 0,n-1 do begin
116
117;;Site du trace
118        name_site = sites[i]
119        landing_site=[ coord[0,i] , coord[1,i] ]
120       
121;;Recuperation de [i,j] a partir de [lon,lat]
122        findxy, $
123                x=lon, $
124                y=lat, $
125                point=landing_site, $
126                ind=indp, $
127                flag=2
128
129       
130if (n_elements(api) eq 0) then begin
131        print,'----------- Standard output'
132               
133;;Recuperation de la hauteur
134        getcdf, file=file, charvar=charphtot, invar=ph
135        height=reform(ph(indp[0],indp[1],*,*))
136                ;;on se debarasse de la position
137        height=total(height,2)/n_elements(height(0,*))
138                ;;on somme sur le temps et on moyenne: on obtient un tableau de valeurs d'altitudes moyennes
139if (charphtot eq 'z_lyrmid_agl') then begin
140        heightp=height/1000.
141        print, heightp
142endif else begin
143        height=height/1000./3.72
144        heightp=height(0:n_elements(height(*))-2)-elevation(indp[0],indp[1])/1000.
145                ;;on soustrait la topographie et on obtient une colonne des hauteurs finales
146        print, heightp
147endelse
148;if (champ1 eq 'W') then heightp=height(0:n_elements(height(*))-1)-elevation(indp[0],indp[1])/1000.
149
150               
151        ;;Utiliser la boucle ci dessous pour imprimer les hauteurs à entrer dans la création d'un API
152        ;print='on'
153        if (n_elements(print) ne 0) then begin
154                for i=0,n_elements(heightp)-1 do begin
155                        print, STRTRIM(heightp(i),2)+','
156                endfor
157        endif
158       
159endif else begin
160        print,'----------- API output'
161       
162        ;;créer avec API un fichier contenant Um, Vm (ou autres) et vert, dans namelist.api mettre les interp_levels voulus (par ex avec la boucle print ci dessus)
163        getcdf, file=file, charvar='vert', invar=height
164        heightp=height/1000.           
165endelse
166               
167               
168;;Creation du champ a tracer
169
170if champ1 eq champ2 then begin
171        print,'Vous tracez les valeurs de '+champ1
172        champi = reform(c(indp[0],indp[1],*,*))
173        what_I_plot = champi
174
175if (champ1 eq 'W') then what_I_plot =  what_I_plot[0:n_elements(what_I_plot(*,0))-2,*]
176       
177endif  else begin
178
179if (champ1 eq 'T') and (champ2 eq 'PTOT') then begin
180        print,'Vous tracez la temperature normale'
181        T = reform( c1(indp[0],indp[1],*,*) ) 
182        PTOT = reform( c2(indp[0],indp[1],*,*) )
183        what_I_plot =(T+220.)*(PTOT/610.)^(192./844.)
184         
185endif else begin
186        print,'Vous tracez le module de '+champ1+' et '+champ2
187        champi1 = reform(c1(indp[0],indp[1],*,*))
188        champi2 = reform(c2(indp[0],indp[1],*,*))
189        what_I_plot = sqrt(champi1^2 + champi2^2)
190
191endelse
192endelse
193
194
195;print, 'mean(what_I_plot) ', mean(what_I_plot)
196;print, what_I_plot
197
198;;Gestion du temps
199;;definition des abscisses : il va tracer toutes les valeurs du fichier de simu, mais en les decalant a start time
200        localtime = float(start_time) + float(interv)*findgen(n_elements(what_I_plot(0,*)))     
201       
202;;Nom du fichier de sortie
203
204PS_Start,filename=nomfich+'_'+name_site+'_lon'+string(coord[0,i],'(I0)')+'_lat'+string(coord[1,i],'(I0)')+'.ps'
205!P.Charsize = 1.2
206
207help, transpose(what_I_plot), localtime, heightp
208       
209map_latlon, $
210        transpose(what_I_plot), $      ; 2D field
211        localtime, $                   ; 1D latitude
212        heightp, $                      ; 1D longitude
213        overcontour=0           
214       
215
216;;Conversion en .png
217PS_End, /PNG
218
219endfor
220
221
222end     
223       
224       
225
226;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
227;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
228;yeah=where(localtime lt 0) & if (yeah(0) ne -1) then localtime[yeah]=24+localtime[yeah]
229;;; 24h issue
230;localtime=localtime MOD 24 & yeah=where(localtime eq 0) & if (yeah(0) ne -1) then localtime[yeah]=24
231;localtime=24.+localtime
232
233;!p.charthick = 2.0
234;!p.thick = 3.0
235;!x.thick = 1.0
236;!y.thick = 2.0
237
238;overcontour=transpose(what_I_plot)     ; another 2D field to overplot with contour lines (=0: no)
239
240;;ATTENTION : a ne JAMAIS, JAMAIS, JAMAIS faire
241        ;field=sqrt(c1^2+c2^2) & c1=0. & c2=0.
242        ;what_I_plot=reform(field(indp[0],indp[1],*,*))
243        ;what_I_plot = field
Note: See TracBrowser for help on using the repository browser.