source: trunk/src/fig_mld.pro @ 4

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

going on ...

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