source: trunk/procs/meshes/build_mesh_glosea.pro @ 169

Last change on this file since 169 was 169, checked in by pinsard, 15 years ago

add compile_opt idl2, strictarrsubs and subsequent modifications

  • Property svn:keywords set to Id
File size: 9.1 KB
Line 
1;+
2;
3; @version
4; $Id$
5;
6;-
7PRO mesh_glosea $
8    , I_INDEX=i_index $
9    , DELTA_I=delta_i $
10    , J_INDEX=j_index $
11    , DELTA_J=delta_j $
12    , K_INDEX=k_index $
13    , DELTA_K=delta_k $
14    , ZONAL=zonal
15;
16  compile_opt idl2, strictarrsubs
17;
18@common
19@com_eg
20;
21print, '    Init GLOSEA mesh'
22
23;
24; NCO tranfo for glosea netCDF files (GLOSEA_40_10y_01_10_grid_T_glosea.nc )
25; ncwa -a unspecified
26; ncrename -h -d t,time_counter -d longitude,x -d latitude,y
27; -v longitude,nav_lon -v latitude,nav_lat -v depth,deptht
28; -v temp,votemper -v salinity,vosaline  -v field611,sobarstg
29; -v field653,somixhgt, -v PLE,sowaflup
30
31;----------------------------------------------------------
32; bornes de la grille
33;----------------------------------------------------------
34;
35   jpi = 288
36   jpj = 192
37   jpk = 40
38
39   jpiglo = jpi
40   jpjglo = jpj
41   jpkglo = jpk
42
43   ixminmesh =0
44   ixmaxmesh =jpi-1
45;
46   iyminmesh =0
47   iymaxmesh =jpj-1
48;
49   izminmesh =0
50   izmaxmesh =jpk-1
51
52
53; init shift and periodicity
54
55   key_shift = !VALUES.F_NAN
56
57   no_lon_shift = 0
58
59   key_periodique = 1
60
61; reduce grid in latitude ?
62
63   IF keyword_set(J_INDEX) THEN BEGIN
64
65      IF NOT keyword_set(DELTA_J) THEN delta_j = 1
66      delta_j = delta_j - 1
67
68      iyminmesh = j_index
69      iymaxmesh = j_index+delta_j
70
71      print, '      set GLOSEA grid to j_index in ', j_index, j_index+delta_j
72
73   ENDIF
74
75; reduce grid in longitude ?
76
77   IF keyword_set(I_INDEX) THEN BEGIN
78
79      no_lon_shift = no_lon_shift + 1
80
81      IF NOT keyword_set(DELTA_I) THEN delta_i = 1
82      delta_i = delta_i - 1
83
84      ixminmesh = i_index
85      ixmaxmesh = i_index+delta_i
86
87      print, '      set GLOSEA grid to i_index in ', i_index, i_index+delta_i
88
89      key_periodique = 0
90
91      key_offset = [0, 0, 0]
92
93      diaznl_idx = 0
94
95      key_shift = 0
96
97   ENDIF
98
99; reduce grid in depth ?
100
101   IF keyword_set(K_INDEX) THEN BEGIN
102
103      IF NOT keyword_set(DELTA_K) THEN delta_k = 1
104      delta_k = delta_k - 1
105
106      izminmesh = k_index-1
107      izmaxmesh = k_index-1+delta_k
108
109      print, '      set GLOSEA grid to k_index in ', k_index-1, k_index-1+delta_k
110
111   ENDIF
112;
113;------------------------------------------------------
114; calcul de la grille
115;------------------------------------------------------
116
117; 1.  Define longitudes
118
119   inilon = 0.
120
121   glamt = 360.0*findgen(jpi)/float(jpi)+inilon
122   glamt = glamt#replicate(1, jpj)
123
124   inilon = 0.625
125
126   glamu = 360.0*findgen(jpi)/float(jpi)+inilon
127   glamu = glamu#replicate(1, jpj)
128   
129; 2.  Define latitudes
130
131   gphit = [-89.375,-88.125,-86.875,-85.625,-84.375,-83.125,-81.875,-80.625,-79.375,-78.125,-76.875,-75.625,$
132            -74.375,-73.125,-71.875,-70.625,-69.375,-68.125,-66.875,-65.625,-64.375,-63.125,-61.875,-60.625,$
133            -59.375,-58.125,-56.875,-55.625,-54.375,-53.125,-51.875,-50.625,-49.375,-48.125,-46.875,-45.625,$
134            -44.375,-43.125,-41.877,-40.632,-39.391,-38.156,-36.928,-35.709,-34.500,-33.302,-32.117,-30.946,$
135            -29.791,-28.651,-27.529,-26.426,-25.342,-24.279,-23.237,-22.217,-21.221,-20.249,-19.300,-18.377]
136
137   gphit = [gphit, $
138            -17.480,-16.608,-15.762,-14.943,-14.150,-13.384,-12.644,-11.931,-11.245,-10.584,-9.950,-9.341,-8.757, $
139            -8.197,-7.661,-7.148,-6.658,-6.189,-5.740,-5.311,-4.901,-4.508,-4.132,-3.771,-3.423,-3.089,-2.766,$
140            -2.453,-2.148,-1.851,-1.559,-1.272,-0.988,-0.706,-0.423,-0.141,0.141,0.423,0.706,0.988,1.272,1.559,$
141            1.851,2.148,2.453,2.766,3.089,3.423,3.771,4.132,4.508,4.901,5.311,5.740,6.189,6.658,7.148,7.661,8.197,$
142            8.757,9.341,9.950,10.584,11.245,11.931,12.644,13.384,14.150,14.943,15.762,16.608,17.480,18.377,19.300]
143    gphit = [gphit, $
144            20.249,21.221,22.217,23.237,24.279,25.342,26.426,27.529,28.651,29.791,30.946,32.117,33.302,34.500, $
145            35.709,36.928,38.156,39.391,40.632,41.877,43.125,44.375,45.625,46.875,48.125,49.375,50.625,51.875, $
146            53.125,54.375,55.625,56.875,58.125,59.375,60.625,61.875,63.125,64.375,65.625,66.875,68.125,69.375,$
147            70.625,71.875,73.125,74.375,75.625,76.875,78.125,79.375,80.625,81.875,83.125,84.375,85.625,86.875,$
148            88.125,89.375]
149   gphit = replicate(1, jpi)#gphit
150   
151   gphiu = [-88.750,-87.500,-86.250,-85.000,-83.750,-82.500,-81.250,-80.000,-78.750,-77.500,-76.250,-75.000,-73.750,-72.500,-71.250,-70.000,-68.750,-67.500,-66.250,-65.000,-63.750,-62.500,-61.250,-60.000,-58.750,-57.500,-56.250,-55.000,-53.750,-52.500,-51.250,-50.000,-48.750,-47.500,-46.250,-45.000,-43.750,-42.501,-41.254,-40.010,-38.772,-37.540,-36.316,-35.102,-33.898,-32.707,-31.528,-30.365,-29.217,-28.086,-26.973,-25.879,-24.805,-23.752,-22.722,-21.713,-20.729]
152
153 gphiu = [gphiu, -19.768,-18.833,-17.922,-17.037,-16.178,-15.346,-14.539,-13.760,-13.007,-12.281,-11.581,-10.908,-10.261,-9.639,-9.043,-8.471,-7.923,-7.399,-6.897,-6.418,-5.959,-5.521,-5.102,-4.700,-4.316,-3.948,-3.594,-3.253,-2.925,-2.607,-2.298,-1.998,-1.704,-1.415,-1.130,-0.847,-0.565,-0.282,-0.000,0.282,0.565,0.847,1.130,1.415,1.704,1.998,2.298,2.607,2.925,3.253,3.594,3.948,4.316,4.700,5.102,5.521,5.959,6.418,6.897,7.399,7.923,8.471,9.043,9.639,10.261,10.908,11.581,12.281]
154
155 gphiu = [gphiu,13.007,13.760,14.539,15.346,16.178,17.037,17.922,18.833,19.768,20.729,21.713,22.722,23.752,24.805,25.879,26.973,28.086,29.217,30.365,31.528,32.707,33.898,35.102,36.316,37.540,38.772,40.010,41.254,42.501,43.750,45.000,46.250,47.500,48.750,50.000,51.250,52.500,53.750,55.000,56.250,57.500,58.750,60.000,61.250,62.500,63.750,65.000,66.250,67.500,68.750,70.000,71.250,72.500,73.750,75.000,76.250,77.500,78.750,80.000,81.250,82.500,83.750,85.000,86.250,87.500,88.750,90.000]
156   gphiu = replicate(1, jpi)#gphiu
157
158; 3 Define scale factors
159
160   zrad=6371229.0
161
162   ; Exact method: integration on a sphere
163
164   e1t = abs(2*!pi*zrad*cos(gphit*!pi/180.0)/jpi)
165   e1u = abs(2*!pi*zrad*cos(gphiu*!pi/180.0)/jpi)
166
167   e2t = [1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.249,1.247,1.243,1.238,1.232,1.224,1.214,1.204,1.192,1.178,1.164,1.148,1.131,1.113,1.094,1.074,1.053,1.031,1.008,0.985,0.960,0.936,0.911,0.885,0.859,0.833,0.806,0.779,0.753,0.726,0.700,0.673,0.647,0.622,0.596,0.572,0.548,0.524,0.501]
168
169e2t = [e2t, 0.480,0.459,0.438,0.419,0.401,0.384,0.368,0.354,0.341,0.329,0.318,0.308,0.301,0.294,0.289,0.285,0.283,0.282,0.282,0.282,0.282,0.282,0.282,0.283,0.285,0.289,0.294,0.301,0.308,0.318,0.329,0.341,0.354,0.368,0.384,0.401,0.419,0.438,0.459,0.480,0.501,0.524,0.548,0.572,0.596,0.622,0.647,0.673,0.700,0.726,0.753,0.779,0.806,0.833,0.859,0.885,0.911,0.936]
170
171e2t = [e2t,0.960,0.985,1.008,1.031,1.053,1.074,1.094,1.113,1.131,1.148,1.164,1.178,1.192,1.204,1.214,1.224,1.232,1.238,1.243,1.247,1.249,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250,1.250]
172   e2t = replicate(1, jpi)#e2t
173
174; 4. Define mask
175; open mask file
176   tmask = lonarr(jpi, jpj, jpk)
177   s_file = hom_idl+'grids/mask_glosea'
178   restore, s_file
179
180; 5. vertical grid (m)
181
182   gdept = [10.,20.,30.,40.,50.,60.,70.,80.,90.,100.,110.,120.,130.,141.,156.,176.,204.,243.,293.,358.,439.,538.,655.,794.,954.,1137.,1344.,1576.,1832.,2113.,2419.,2745.,3085.,3430.,3775.,4120.,4465.,4810.,5155.,5500.]
183   gdepw = [5.,15.,25.,35.,45.,55.,65.,75.,85.,95.,105.,115.,125.,136.,148.,166.,190.,224.,268.,326.,399.,488.,596.,724.,874.,1046.,1241.,1460.,1704.,1972.,2266.,2582.,2915.,3258.,3602.,3948.,4292.,4638.,4982.,5328.]
184
185   e3t = [10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,11.,15.,20.,28.,38.,51.,65.,81.,98.,118.,138.,160.,183.,207.,231.,256.,281.,306.,326.,340.,345.,345.,345.,345.,345.,345.,345.]
186   e3w = [5.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,11.,13.,17.,24.,33.,44.,58.,73.,90.,108.,128.,149.,172.,195.,219.,244.,269.,293.,316.,333.,343.,345.,345.,345.,345.,345.,345.]
187
188
189   
190
191   isign=where(glamt gt 380.)
192   IF isign[0] NE -1 THEN glamt[isign] = glamt[isign]-360.
193   isign=where(glamu gt 380.)
194   IF isign[0] NE -1 THEN glamu[isign] = glamu[isign]-360.
195   isign=where(glamv gt 380.)
196   IF isign[0] NE -1 THEN glamv[isign] = glamv[isign]-360.
197   isign=where(glamf gt 380.)
198   IF isign[0] NE -1 THEN glamf[isign] = glamf[isign]-360.
199
200; reduce grid to zonal mean
201
202   IF keyword_set(ZONAL) THEN BEGIN
203
204      no_lon_shift = no_lon_shift + 1
205
206      jpi = 1
207      ixminmesh = 0
208      ixmaxmesh = 0
209
210      print, '   set GLOSEA grid to zonal mean '
211
212      diaznl_idx = 0
213
214      glamt = glamt[diaznl_idx, *]
215      glamu = glamu[diaznl_idx, *]
216      glamv = glamv[diaznl_idx, *]
217      glamf = glamf[diaznl_idx, *]
218      gphit = gphit[diaznl_idx, *]
219      gphiu = gphiu[diaznl_idx, *]
220      gphiv = gphiv[diaznl_idx, *]
221      gphif = gphif[diaznl_idx, *]
222
223      e1t = e1t[diaznl_idx, *]
224      e2t = e2t[diaznl_idx, *]
225      e1u = e1u[diaznl_idx, *]
226      e2u = e2u[diaznl_idx, *]
227      e1v = e1v[diaznl_idx, *]
228      e2v = e2v[diaznl_idx, *]
229
230; read offset
231
232      key_offset = [0, 0, 0]
233
234      key_shift = 0
235
236   ENDIF
237
238
239   IF no_lon_shift EQ 0 THEN BEGIN
240
241; read offset
242
243      key_offset = [0, 0, 0]
244;
245; indice i pour grille j moyenne zonale
246;
247      diaznl_idx = 0
248
249   ENDIF
250
251END
Note: See TracBrowser for help on using the repository browser.