source: trunk/src/fig_mld.pro @ 5

Last change on this file since 5 was 5, checked in by pinsard, 14 years ago

draft of output files

  • Property svn:keywords set to Id
File size: 5.6 KB
Line 
1;+
2;
3;
4; .. program:: fig_mld
5;
6; ===========
7; fig_mld.pro
8; ===========
9;
10; main POMME project program
11;
12; - read the 2 mld models :file:`${POMME_ID}/noeddy_mld.nc` and :file:`${POMME_ID}/eddy_mld.nc`
13; - read mld insitu data and metadata
14; - compute daily mean insitu mld data
15; - compute daily mean modeled data in boxes of 1/2° and 1/4° around insitu measurement
16; location
17; - plot ++
18; - write file:`${POMME_OD}/fig_mld.txt`
19;
20; :examples:
21;
22; ::
23;
24;   IDL> fig_mld
25;   IDL> exit
26;
27; :uses:
28;
29; :func:`read_ncdf`
30; :func:`julday`
31; :func:`pltt`
32; :func:`moyenne`
33; :func:`domdef`
34;
35; :ref:`init_pom.pro`
36; :func:`file_prn_to_mem`
37; :func:`file_asc_to_mem`
38; :func:`dmean_mld`
39; :func:`join_dmean_asc`
40;
41; :func:`reform`
42;
43; :todo:
44;
45; make it work
46;
47; consolidate
48;
49; better organisation of output files
50;
51; noter dans la doc data que l'axe des temps des fichiers modeles est incorrect
52;
53; :history:
54;
55; - fplod 20101129T151939Z aedon.locean-ipsl.upmc.fr (Darwin)
56;
57;   * loop on delta
58;   * create output file
59;   * use http://www.dfanning.com/math_tips/nans.html to test *equality* to NaN
60;
61; - fplod 20101129T130822Z aedon.locean-ipsl.upmc.fr (Darwin)
62;
63;   * add reading of insitu MLD data files and associated
64;   * use the right filenames for models
65;   * complete header
66;
67; - fplod 20101125T145638Z aedon.locean-ipsl.upmc.fr (Darwin)
68;
69;   * add ReST minimal header
70;
71; - marina 20101125T130000Z
72;
73;   * creation draft
74;
75;
76;-
77PRO fig_mld
78;
79compile_opt idl2, strictarrsubs
80;
81@init_pom
82;
83; read MLD in model files
84mldm = -read_ncdf('mld', 0, 383, /timestep, file=iodir+'eddy_mld.nc',  /nostruct)
85mldr = -read_ncdf('mld', 0, 383, /timestep, file=iodir+'noeddy_mld.nc',  /nostruct)
86;
87time=julday(09,27,2000)+dindgen(jpt)
88;
89; plot modeled MLD
90;openps, 'fig_mld.ps' ++
91pltt, mldm , box=[-22,-16, 38, 44],  't',  -200,  0, color = 70,  title = 'MLD'
92pltt, mldr , box=[-22,-16, 38, 44],  't',  color = 220,  /ov1d
93;closeps
94;
95; read MLD in insitu files and metafiles
96data_asc=file_asc_to_mem()
97data_prn=file_prn_to_mem()
98data_dmean=dmean_mld(data_prn)
99data_insitu=join_dmean_asc(data_dmean,data_asc)
100;
101; calcul du temps des données insitu avec comme 0 le 20000927 ++
102time_insitu=julday(1,1,2001) - julday(09,27,2000) - 1 + data_insitu.doy
103;
104; build compatible insitu arrays with models arrays
105ndays = n_elements(time)
106mld1 =  findgen(ndays)
107mld2 = findgen(ndays)
108mld3 = findgen(ndays)
109mld4 = findgen(ndays)
110mld5 = findgen(ndays)
111xlon = findgen(ndays)
112ylat = findgen(ndays)
113FOR iday=0, ndays - 1 DO BEGIN
114   indice_insitu=WHERE(time_insitu EQ iday,count)
115   IF (count EQ 0) THEN BEGIN
116      mld1[iday] = !VALUES.F_NAN
117      mld2[iday] = !VALUES.F_NAN
118      mld3[iday] = !VALUES.F_NAN
119      mld4[iday] = !VALUES.F_NAN
120      mld5[iday] = !VALUES.F_NAN
121      xlon[iday] = !VALUES.F_NAN
122      ylat[iday] = !VALUES.F_NAN
123   ENDIF ELSE BEGIN
124      mld1[iday] = data_insitu[indice_insitu].mean_zhom001
125      mld2[iday] = data_insitu[indice_insitu].mean_zhom002
126      mld3[iday] = data_insitu[indice_insitu].mean_zhom005
127      mld4[iday] = data_insitu[indice_insitu].mean_zhom010
128      mld5[iday] = data_insitu[indice_insitu].mean_zhomelch
129      xlon[iday] = data_insitu[indice_insitu].lon
130      ylat[iday] = data_insitu[indice_insitu].lat
131   ENDELSE
132ENDFOR
133;
134; plot insitu daily mean MLD ++
135;
136; compute mean of modeled MLD in box around lat,lon insitu data
137mymldm = findgen(2,ndays)
138mymldr = findgen(2,ndays)
139myvarm = findgen(2,ndays)
140myvarr = findgen(2,ndays)
141;
142; define the size of the box
143delta=findgen(2)
144delta[0] = 0.5
145delta[1] = 1.
146ndelta=n_elements(delta)
147;
148; loop on delta
149FOR idelta=0, ndelta - 1 DO BEGIN
150   ; loop on days
151   FOR iday=0, ndays - 1 DO BEGIN
152      IF (finite(mld1[iday]) NE 0) THEN BEGIN
153         print, ' 3 iday xlon', iday, xlon[iday]
154         domdef
155         mybox = [ xlon[iday]-delta[idelta] $
156                 , xlon[iday]+delta[idelta] $
157                 , ylat[iday]-delta[idelta] $
158                 , ylat[iday]+delta[idelta] $
159                 ]
160         help, mybox
161         print, mybox
162
163         ; ++ verifier que la moyenne est bien faite dans la boite et pas dans tout le domaine
164         ;++ pb t point
165         ;mldm_box = reform(read_ncdf('mld', iday, /timestep, file=iodir+'eddy_mld.nc',  /nostruct, box = mybox))
166         ;mldr_box = reform(read_ncdf('mld', iday, /timestep, file=iodir+'noeddy_mld.nc',  /nostruct, box = mybox))
167
168         ;++mymldm[idelta,iday] = moyenne(mldm_box, box = mybox, 'xy')
169         ;++mymldr[idelta,iday] = moyenne(mldr_box, box = mybox, 'xy')
170         ;++myvarm[idelta,iday] = stddev(mldm_box)
171         ;++myvarr[idelta,iday] = stddev(mldr_box)
172      ENDIF ELSE BEGIN
173         ; print, '4 ',iday, ' no insitu data'
174         mymldm[idelta,iday] = !VALUES.F_NAN
175         mymldr[idelta,iday] = !VALUES.F_NAN
176         myvarm[idelta,iday] = !VALUES.F_NAN
177         myvarr[idelta,iday] = !VALUES.F_NAN
178      ENDELSE
179   ENDFOR
180ENDFOR
181;
182; Write results in ${POMME_OD}/fig_mld.txt
183filename=pomme_od_env+'fig_mld.txt'
184OPENW,lun, filename, /GET_LUN
185;++ hanlde error
186;
187header='jt xlon xlat mld1 mld2 mld3 mld4 mld5 mymldm_0 mymldr_0 myvarm_0 myvarr_0 mymldm_1 mymldr_1 myvarm_1 myvarr_1'
188; write header
189printf, lun, header
190;
191; write data lines
192FOR iday=0, ndays - 1 DO BEGIN
193   printf, lun $
194         , iday $
195         , xlon[iday] $
196         , ylat[iday] $
197         , mld1[iday] $
198         , mld2[iday] $
199         , mld3[iday] $
200         , mld4[iday] $
201         , mld5[iday] $
202         , mymldm[0,iday] $
203         , mymldr[0,iday] $
204         , myvarm[0,iday] $
205         , myvarr[0,iday] $
206         , mymldm[1,iday] $
207         , mymldr[1,iday] $
208         , myvarm[1,iday] $
209         , myvarr[1,iday]
210ENDFOR
211;
212; close file
213FREE_LUN, lun
214;
215END
Note: See TracBrowser for help on using the repository browser.