source: trunk/procs/def_grid.pro @ 12

Last change on this file since 12 was 9, checked in by kolasinski, 17 years ago

Add var_read_grd_file in def_grid and mesh_from_file - Define valmask if needed when the grid is read in mesh_from_file

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