source: trunk/procs/def_grid.pro @ 122

Last change on this file since 122 was 116, checked in by kolasinski, 16 years ago

Small changes in def_grid.pro (cdf option) and trends.pro (name of ascii file)

File size: 11.0 KB
Line 
1PRO def_grid, cmd
2
3;
4; define which grid to use and set corresponding arrays
5;
6
7@common
8@com_eg
9   IF debug_w THEN print, ' '
10   IF debug_w THEN print, '  ENTER def_grid / cmd =', cmd
11
12;   varexp = cmd.exp
13
14   IF cmd.out EQ 'cdf' THEN BEGIN
15      no_shift = 1
16      whole_arrays = 1
17      ;meshlec_type = '-' ; force grid read
18      test_read = 1 ; force grid read : better test ? at least for atm grid
19      key_onearth = 1
20      glambound = 0
21  ENDIF ELSE BEGIN
22      no_shift = 0
23      whole_arrays = 0
24      tag = ''
25      key_onearth = 1
26      glambound = glamboundary_box
27   ENDELSE
28
29; If tv no key_shift
30   IF cmd.out EQ 'tv' THEN BEGIN
31      no_shift = 1
32   ENDIF
33
34; append name of variable to file ?
35   file_suff_var = ''
36   IF strpos(cmd.grid, '#') NE -1 THEN BEGIN
37      cmd.grid = strmid(cmd.grid, 0, strlen(cmd.grid)-1)
38      @def_file_suff_var
39   ENDIF
40
41   IF debug_w THEN print, '    file_suff_var = ', file_suff_var
42
43; read_grid_from_file ?
44
45   read_grid_from_file = 0
46
47   IF strpos(cmd.grid, '@') EQ 0 THEN BEGIN
48      cmd.grid = strmid(cmd.grid, 1, strlen(cmd.grid)-1)
49      read_grid_from_file = 1
50      print, '    Will read grid info '+cmd.grid+' from data file'
51      key_shift_map = 0
52      IF strpos(cmd.var, '@@') NE -1 THEN BEGIN
53         @def_macro_base_fld
54         var_read_grd_file = macro_base_fld_1
55      ENDIF ELSE var_read_grd_file = cmd.var
56   ENDIF ELSE var_read_grd_file = cmd.var
57
58   IF debug_w THEN print,    '    cmd.grid after test read_grid_from_file: ', cmd.grid
59
60; choose grid (if not already loaded)
61
62; tests to read
63   test_box = 0
64   IF box_h[0] NE box_h_prev[0] OR box_h[1] NE box_h_prev[1] THEN test_box = 1
65   test_read = 0
66   IF cmd.grid NE cmd_prev.grid OR test_box EQ 1 THEN BEGIN
67      test_read = 1
68      suff_domain = ''
69   ENDIF ELSE BEGIN
70      suff_domain =  suff_domain
71   ENDELSE
72   IF sw_diffg EQ 1 THEN test_read = 1
73
74   IF test_read EQ 1 THEN BEGIN
75 ; read attributes from Defaults/Grids/grid_config.def
76      file_grid_config = hom_def+'grid_config.def'
77      IF debug_w THEN print, '      doing: grep -i "\ '+cmd.grid+' " '+file_grid_config
78      spawn, 'grep -i "\ '+cmd.grid+' " '+file_grid_config, line
79      line = strcompress(strtrim(line[0], 2))
80      length = strlen(line)
81
82      IF debug_w THEN print, '      line from grid_config.def  ',line
83
84      IF length EQ 0 THEN BEGIN
85         print, ' *** def_grid : define grid ', cmd.grid, ' in file ', file_grid_config
86         stop   
87      ENDIF ELSE BEGIN
88         argvar = strsplit(line, ' ', /EXTRACT)
89         mesh_type = argvar[1]
90         masked_data = argvar[2]
91         mesh_type2 = argvar[3]
92         vargrid = argvar[4]
93         name_level = argvar[5]
94      ENDELSE
95      meshlec_type = mesh_type
96   ENDIF
97
98   IF masked_data EQ 0 THEN atmos_msk = 0
99
100; init zoom for data read
101
102   IF data_domain EQ 'global' THEN BEGIN
103      ixmindta = 0
104      iymindta = 0
105      izmindta = 0
106   ENDIF
107   IF debug_w THEN print,  '     varexp in def_grid before case cmd.grid:', varexp
108
109   IF read_grid_from_file EQ 1 THEN GOTO, final
110
111   CASE cmd.grid OF
112      't30': BEGIN
113         IF test_read EQ 1 THEN BEGIN
114            mesh_gaussian, 30, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, glamboundary = glambound
115            domdef & triangles=triangule()
116        ENDIF
117      END
118      't42': BEGIN
119         IF test_read EQ 1 THEN BEGIN
120            mesh_gaussian, 42, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, glamboundary = glambound
121            domdef & triangles=triangule()
122         ENDIF
123      END
124      't62': BEGIN
125         IF test_read EQ 1 THEN BEGIN
126            mesh_gaussian, 62, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, glamboundary = glambound
127            domdef & triangles=triangule()
128         ENDIF
129      END
130      't106': BEGIN
131         IF test_read EQ 1 THEN BEGIN
132            mesh_gaussian, 106, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, glamboundary = glambound
133            domdef & triangles=triangule()
134         ENDIF
135      END
136      'umat': BEGIN
137         IF test_read EQ 1 THEN BEGIN
138            mesh_um, 96, 73,  'T', NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, /reverse_y
139            domdef & triangles=triangule()
140         ENDIF
141      END
142      'umau': BEGIN
143         IF test_read EQ 1 THEN BEGIN
144            mesh_um, 96, 72,  'U', NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, /reverse_y
145            domdef & triangles=triangule()
146         ENDIF
147      END
148      'umath': BEGIN
149         IF test_read EQ 1 THEN BEGIN
150            mesh_um, long(288), long(217),  'T', NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays
151            domdef & triangles=triangule()
152         ENDIF
153      END
154      'umauh': BEGIN
155         IF test_read EQ 1 THEN BEGIN
156            mesh_um, long(288), long(216),  'U', NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays
157            domdef & triangles=triangule()
158        ENDIF
159      END
160      'reg1.125': BEGIN
161         IF test_read EQ 1 THEN read_grid_from_file = 1
162      END
163      'reg2.5': BEGIN
164         IF test_read EQ 1 THEN read_grid_from_file = 1
165      END
166      'reg1m': BEGIN
167         IF test_read EQ 1 THEN read_grid_from_file = 1
168      END
169      'reg1': BEGIN
170         IF test_read EQ 1 THEN read_grid_from_file = 1
171      END
172      'reg1mtrop': BEGIN
173         IF test_read EQ 1 THEN BEGIN
174                                ; j in [69,110] (20.5S,20.5N)
175            mesh_regular, 1., 1., inilon = -179.5, mask_file = 'hadisst1', j_index =69, delta_j = 42, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, glamboundary = glambound
176            domdef & triangles=triangule()
177         ENDIF
178      END
179      'tao': BEGIN
180         IF test_read EQ 1 THEN BEGIN
181            mesh_tao, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays
182            domdef & triangles=triangule()
183         ENDIF
184      END
185;       'new_grid': BEGIN
186;          IF test_read EQ 1 THEN BEGIN
187;             mesh_new_grid ...
188;             domdef & triangles=triangule()
189;          ENDIF
190;       END
191      ELSE: BEGIN
192         ; nc_grids_list defined in plt_def.pro
193         indx = where(nc_grids_list EQ cmd.grid)
194         IF indx NE -1 THEN BEGIN
195            IF test_read EQ 1 THEN BEGIN
196               mesh_pcmdi, cmd.grid, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays
197               domdef & triangles=triangule()
198            ENDIF
199         ENDIF ELSE BEGIN
200           
201            h_config_oce = 'ORCA_R2'
202            IF strpos (cmd.grid, '05') NE -1 THEN h_config_oce = 'ORCA05'
203
204            IF meshlec_type NE 'oce' OR data_dom_type NE data_domain OR h_config_oce_type NE h_config_oce OR v_config_oce_type NE v_config_oce OR orca_mask_version_type NE orca_mask_version OR test_box EQ 1 OR test_read EQ 1 THEN BEGIN
205               CASE data_domain OF
206                  'equator': BEGIN
207                     mesh_orca, j_index=73, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, H_CONFIG = h_config_oce, V_CONFIG = v_config_oce 
208                     suff_domain = '_eq'
209                     domdef
210                  END
211                  'equator_band': BEGIN
212                                ; j in [64,82] (5S,5N)
213                     mesh_orca, j_index=64, delta_j = 19, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, H_CONFIG = h_config_oce, V_CONFIG = v_config_oce
214                     suff_domain = '_eqb'
215                     domdef
216                  END
217                  'pacific': BEGIN
218                                ; j in [49,97] (30S,30N), i in
219                                ; [16,106] (110E,290), k in [1-19]
220                                ; (0.,364 m)
221                     CASE h_config_oce of
222                        'ORCA_R2': mesh_orca, j_index=49, delta_j = 49,  i_index = 16, delta_i =91, k_index = 1, delta_k = 19, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, H_CONFIG = h_config_oce, V_CONFIG = v_config_oce
223                        'ORCA05': mesh_orca, j_index=183, delta_j = 130,  i_index = 54, delta_i =381, k_index = 1, delta_k = 19, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, H_CONFIG = h_config_oce, V_CONFIG = v_config_oce
224                     ENDCASE
225                     suff_domain = '_pac'
226                     domdef
227                     triangles=triangule()
228                  END
229                  'pacific_eq': BEGIN
230                                ; j in [64,82] (5S,5N), i in [16,106] (110E,290)
231                     mesh_orca, j_index=64, delta_j = 19,  i_index = 16, delta_i =91, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays , H_CONFIG = h_config_oce, V_CONFIG = v_config_oce
232                     suff_domain = '_paceq'
233                     domdef
234                  END
235                  'zonal': BEGIN
236                     mesh_orca, /zonal, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, H_CONFIG = h_config_oce, V_CONFIG = v_config_oce
237                     suff_domain = '_diaznl'
238                     domdef
239                  END
240                  'glosea': BEGIN
241                     mesh_glosea, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays
242                     suff_domain = '_glosea'
243                     domdef
244                     triangles=triangule()
245                  END
246                  ELSE: BEGIN
247                     IF cmd.grid EQ 'BMT' OR cmd.grid EQ 'BMU' OR cmd.grid EQ 'BMV' THEN BEGIN
248                        mesh_micom, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, H_CONFIG = h_config_oce, V_CONFIG = v_config_oce
249                        ;; We Need to redefine vargrid because it
250                        ;; has changed when call to initncdf
251                        vargrid = argvar[4]
252                        suff_domain = ''
253                     ENDIF ELSE BEGIN
254                        mesh_orca, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, H_CONFIG = h_config_oce, V_CONFIG = v_config_oce
255                        suff_domain = ''
256                        domdef
257                        triangles=triangule()
258                     ENDELSE
259                  END
260               ENDCASE 
261               masked_data = 1
262               meshlec_type = 'oce'
263               mesh_type = 'oce'
264               data_dom_type = data_domain
265               h_config_oce_type = h_config_oce
266               v_config_oce_type = v_config_oce
267               orca_mask_version_type = orca_mask_version
268            ENDIF
269         ENDELSE 
270      END 
271   ENDCASE 
272
273   key_shift_map = key_shift
274
275   IF read_grid_from_file EQ 1 THEN BEGIN
276      ; def base field if macro
277 ; needed ?     cmd.grid = strmid(cmd.grid, 0, strlen(cmd.grid)-1)
278      @def_file_suff_var
279      var_read_grd_file = macro_base_fld
280      file_suff_var = ''
281   ENDIF
282
283final:
284
285   box_h_prev = box_h
286
287   IF debug_w THEN print,  '     cmd.grid in def_grid:          ', cmd.grid
288   IF debug_w THEN print,  '     file_suff_var in def_grid:     ', file_suff_var
289   IF debug_w THEN print,  '     var_read_grd_file in def_grid: ', var_read_grd_file
290   IF debug_w THEN print,  '     meshlec_type in def_grid:      ', meshlec_type
291   IF debug_w THEN print,  '     varexp in def_grid:            ', varexp
292   IF debug_w THEN print,  '  ...EXIT def_grid'
293   IF debug_w THEN print,  '  '
294 
295END
Note: See TracBrowser for help on using the repository browser.