source: trunk/procs/meshes/mesh_orca.pro @ 3

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

use of ncdf_meshread routine instead of ncdf_meshlec obsolete routine

File size: 5.5 KB
Line 
1PRO mesh_orca, I_INDEX = i_index, DELTA_I = delta_i, J_INDEX = j_index, DELTA_J = delta_j, K_INDEX = k_index, DELTA_K = delta_k, ZONAL =  zonal, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, H_CONFIG = h_config, V_CONFIG = V_config
2
3@common
4@com_eg
5;
6
7   IF NOT keyword_set(H_CONFIG) THEN h_config = 'ORCA_R2'
8   IF NOT keyword_set(V_CONFIG) THEN v_config = 'L30'
9   print, '    Init ORCA mesh horizontal config '+h_config
10   print, '                     vertical config '+v_config
11
12
13;----------------------------------------------------------
14; bornes de la grille
15;----------------------------------------------------------
16
17   CASE h_config OF
18      'ORCA_R2': begin
19         IF keyword_set(WHOLE_ARRAYS) THEN BEGIN
20            ixminmesh  =0 & ixmaxmesh  =181
21            iyminmesh  =0 & iymaxmesh  =148
22         ENDIF ELSE BEGIN   
23            ixminmesh  =2 & ixmaxmesh  =181
24            iyminmesh  =0 & iymaxmesh  =147
25         ENDELSE 
26      END
27      'ORCA_R4':  begin
28         IF keyword_set(WHOLE_ARRAYS) THEN BEGIN
29            ixminmesh  =0 & ixmaxmesh  =91
30            iyminmesh  =0 & iymaxmesh  =75
31         ENDIF ELSE BEGIN   
32            ixminmesh  =2 & ixmaxmesh  =91
33            iyminmesh  =0 & iymaxmesh  =75
34         ENDELSE 
35      END
36   ENDCASE
37
38   CASE v_config OF
39      'L300': BEGIN & izminmesh  =0 & izmaxmesh  =300 & END
40      'L30': BEGIN & izminmesh  =0 & izmaxmesh  =30 & END
41   ENDCASE
42;
43; init shift and periodicity
44
45
46   IF keyword_set(NO_SHIFT) THEN key_shift = 0
47
48   no_lon_shift = 0
49
50   key_periodique = 1
51
52; reduce grid in latitude ?
53
54   IF keyword_set(J_INDEX) THEN BEGIN
55
56      IF NOT keyword_set(DELTA_J) THEN delta_j = 1
57      delta_j = delta_j - 1
58
59      iyminmesh = j_index
60      iymaxmesh = j_index+delta_j
61
62      print, '      set ORCA grid to j_index in ', j_index, j_index+delta_j
63      iymindta = iyminmesh
64   ENDIF
65
66; reduce grid in longitude ?
67
68   IF keyword_set(I_INDEX) THEN BEGIN
69
70      no_lon_shift = no_lon_shift + 1
71
72      IF NOT keyword_set(DELTA_I) THEN delta_i = 1
73      delta_i = delta_i - 1
74
75      ixminmesh  = i_index
76      ixmaxmesh  = i_index+delta_i
77
78      print, '      set ORCA grid to i_index in ', i_index, i_index+delta_i
79
80      ixmindta = ixminmesh
81      key_periodique = 0
82      key_offset = [0, 0, 0]
83      diaznl_idx = 0
84      key_shift = 0
85   ENDIF
86
87; reduce grid in depth ?
88
89   IF keyword_set(K_INDEX) THEN BEGIN
90
91      IF NOT keyword_set(DELTA_K) THEN delta_k = 1
92      delta_k = delta_k - 1
93
94      izminmesh  = k_index-1
95      izmaxmesh  = k_index-1+delta_k
96
97      izmindta = izminmesh
98
99      print, '      set ORCA grid to k_index in ', k_index-1, k_index-1+delta_k
100
101   ENDIF
102;
103;------------------------------------------------------
104; lecture de la grille
105;------------------------------------------------------
106
107   key_yreverse = 0
108
109   CASE h_config OF
110      'ORCA_R2': BEGIN
111         CASE v_config of
112            'L30': BEGIN
113               CASE orca_mask_version OF
114                  'V1': mesmsk = 'meshmask.orca.2d.nc'
115                  'V2': mesmsk = 'meshmask_ORCA_R2.nc'
116                  'V3': mesmsk = 'meshmask_ORCA_R2_V2.nc'
117               ENDCASE
118               IF whole_arrays EQ 0 THEN BEGIN
119                   cmd_grid = 'ncdf_meshread, sm_file, GLAMBOUNDARY = glamboundary_box, onearth = onearth'
120               ENDIF ELSE BEGIN
121                   cmd_grid = 'ncdf_meshread, sm_file, GLAMBOUNDARY = glamboundary_box'
122               ENDELSE
123            END
124            'L300': BEGIN
125               mesmsk = 'meshmask.orca.2d.L300.nc'
126               cmd_grid = 'ncdf_meshread, sm_file, GLAMBOUNDARY = glamboundary_box'
127            END
128         ENDCASE
129      END
130      'ORCA_R4': BEGIN
131         mesmsk = 'meshmask_orca4.nc'
132         cmd_grid = 'ncdf_meshread, sm_file, GLAMBOUNDARY = glamboundary_box'
133      END
134   ENDCASE
135   
136   print, '                         mask config '+orca_mask_version
137   IF keyword_set(WHOLE_ARRAYS) THEN print, '                         [whole array]'         
138       
139   sm_file = hom_idl+'grids/'+mesmsk
140   res = find(sm_file)
141
142   IF res NE 'NOT FOUND' THEN BEGIN
143       res_grid =  execute(cmd_grid)
144   ENDIF ELSE BEGIN
145       stop, 'No meshmask file found for ORCA mesh config'
146   ENDELSE
147
148; reduce grid to zonal mean
149
150   IF keyword_set(ZONAL) THEN BEGIN
151
152      no_lon_shift = no_lon_shift + 1
153
154      jpi = 1
155      ixminmesh  = 0
156      ixmaxmesh  = 0
157
158      print, '   set ORCA grid to zonal mean '
159
160      diaznl_idx = 0
161
162      glamt = glamt[diaznl_idx, *]
163      glamu = glamu[diaznl_idx, *]
164      glamv = glamv[diaznl_idx, *]
165      glamf = glamf[diaznl_idx, *]
166      gphit = gphit[diaznl_idx, *]
167      gphiu = gphiu[diaznl_idx, *]
168      gphiv = gphiv[diaznl_idx, *]
169      gphif = gphif[diaznl_idx, *]
170
171      e1t = e1t[diaznl_idx, *]
172      e2t = e2t[diaznl_idx, *]
173      e1u = e1u[diaznl_idx, *]
174      e2u = e2u[diaznl_idx, *]
175      e1v = e1v[diaznl_idx, *]
176      e2v = e2v[diaznl_idx, *]
177
178; read offset
179
180      key_offset = [0, 0, 0]
181
182      key_shift = 0
183
184   ENDIF
185
186
187   IF no_lon_shift EQ 0 THEN BEGIN
188      CASE h_config OF
189         'ORCA_R2': BEGIN
190; read offset
191           
192            key_offset = [2, 0, 0]
193;
194; indice i pour grille j moyenne zonale
195;
196            diaznl_idx = 50-1
197           
198         END
199         'ORCA_R4': BEGIN
200; read offset
201
202            key_offset = [2, 0, 0]
203;
204; indice i pour grille j moyenne zonale
205;
206            diaznl_idx = 25-1
207           
208         END
209      ENDCASE
210   ENDIF
211
212   IF keyword_set(NO_SHIFT) THEN key_offset = [0, 0, 0]
213
214   print, '     key_shift =', key_shift
215
216   print, '    End of ORCA mesh config '
217
218END
Note: See TracBrowser for help on using the repository browser.