source: trunk/procs/def_grid.pro @ 100

Last change on this file since 100 was 91, checked in by ericg, 16 years ago

Misc. updates, including making macros with @grid# specs

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