source: trunk/procs/def_grid.pro @ 8

Last change on this file since 8 was 6, checked in by kolasinski, 17 years ago

Add ORCA05 config in the 'pacific' case in def_grid.pro

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