1 | PRO mesh_regular, deltax, deltay, INILON = inilon, EQUATOR = equator, NOMASK = nomask, MASK_FILE = mask_file, I_INDEX = i_index, DELTA_I = delta_i, J_INDEX = j_index, DELTA_J = delta_j, NO_SHIFT = no_shift, WHOLE_ARRAYS = whole_arrays, REVERSE_Y = reverse_y, GLAMBOUNDARY = glamboundary |
---|
2 | @common |
---|
3 | @com_eg |
---|
4 | ; |
---|
5 | ; init grid, sf, masks for regular grid (includes equator) |
---|
6 | ; |
---|
7 | print,' Regular grid inits.',deltax, deltay |
---|
8 | |
---|
9 | jpi = floor(360./deltax) |
---|
10 | jpj = floor(180./deltay) |
---|
11 | IF keyword_set(EQUATOR) THEN jpj = jpj + 1 |
---|
12 | jpk = 1 |
---|
13 | |
---|
14 | ; initialisation of character variables used in the execution of computegrid |
---|
15 | shift_txt = '' |
---|
16 | periodic_txt = '' |
---|
17 | idx_txt = '' |
---|
18 | |
---|
19 | ; 1. Define longitudes |
---|
20 | |
---|
21 | IF NOT keyword_set(inilon) THEN inilon = 0. |
---|
22 | |
---|
23 | glamt = 360.0*findgen(jpi)/float(jpi)+inilon |
---|
24 | glamt = glamt#replicate(1, jpj) |
---|
25 | |
---|
26 | ; 2. Define latitudes |
---|
27 | |
---|
28 | IF keyword_set(EQUATOR) THEN BEGIN |
---|
29 | |
---|
30 | gphit = 90.0*findgen((jpj-1)/2)/float((jpj-1)/2)+deltay |
---|
31 | gphitn = reverse(-gphit) |
---|
32 | gphit = [gphitn, 0.0, gphit] |
---|
33 | |
---|
34 | END ELSE BEGIN |
---|
35 | |
---|
36 | gphit = 90.0*findgen(jpj/2)/float(jpj/2)+deltay/2. |
---|
37 | gphitn = reverse(gphit) |
---|
38 | gphit = [gphitn, -gphit] |
---|
39 | |
---|
40 | ENDELSE |
---|
41 | |
---|
42 | ; 3. define mask |
---|
43 | |
---|
44 | tmask = lonarr(jpi, jpj) |
---|
45 | IF NOT keyword_set(NOMASK) THEN BEGIN |
---|
46 | s_file = hom_idl+'grids/mask_'+mask_file+'.dat' |
---|
47 | print, ' Read mask from ',s_file |
---|
48 | restore, s_file |
---|
49 | ; nummsk = 12 |
---|
50 | ; s_file = hom_idl+'grids/mask_regular_'+ $ |
---|
51 | ; strtrim(string(jpi), 2)+'x'+strtrim(string(jpj), 2) |
---|
52 | ; openr, nummsk, s_file, /get_lun, /f77 |
---|
53 | ; readu, nummsk, tmask |
---|
54 | ; tmask = reverse(1-tmask, 2) |
---|
55 | ; close, nummsk |
---|
56 | ; free_lun, nummsk |
---|
57 | |
---|
58 | ENDIF ELSE BEGIN |
---|
59 | tmask[*, *]= 1 |
---|
60 | print, ' Warning, No mask read' |
---|
61 | ENDELSE |
---|
62 | |
---|
63 | ; 4. Reduce grid in longitude |
---|
64 | |
---|
65 | IF keyword_set(i_index) THEN BEGIN |
---|
66 | idx_txt = ',XMINMESH='+string(i_index)+',XMAXMESH='+string(i_index+delta_i-1) |
---|
67 | idx_txt = idx_txt+',XMINDTA='+string(i_index)+',XMAXDTA='+string(i_index+delta_i-1) |
---|
68 | ENDIF |
---|
69 | IF keyword_set(j_index) THEN BEGIN |
---|
70 | idx_txt = idx_txt+',YMINMESH='+string(j_index)+',YMAXMESH='+string(j_index+delta_j-1) |
---|
71 | idx_txt = idx_txt+',YMINDTA='+string(j_index)+',YMAXDTA='+string(j_index+delta_j-1) |
---|
72 | ENDIF |
---|
73 | |
---|
74 | IF keyword_set(REVERSE_Y) THEN gphit = reverse(gphit) |
---|
75 | gphit = replicate(1, jpi)#gphit |
---|
76 | |
---|
77 | masked_data = 0 |
---|
78 | mesh_type = 'atm' |
---|
79 | ; |
---|
80 | ; definition of key_shift |
---|
81 | ; |
---|
82 | IF keyword_set(NO_SHIFT) THEN BEGIN |
---|
83 | shift_txt = ', SHIFT = 0 ' |
---|
84 | ENDIF |
---|
85 | IF keyword_set(WHOLE_ARRAYS) THEN BEGIN |
---|
86 | shift_txt = ', SHIFT = 0 ' |
---|
87 | periodic_txt = ', PERIODIC = 0' |
---|
88 | ENDIF |
---|
89 | |
---|
90 | ; Use the computegrid routine |
---|
91 | cmd_grid = 'computegrid, XAXIS = glamt, YAXIS = gphit, MASK = tmask, GLAMBOUNDARY = glamboundary, /FULLCGRID'+shift_txt+periodic_txt+idx_txt |
---|
92 | IF debug_w THEN print, cmd_grid |
---|
93 | res = execute( cmd_grid ) |
---|
94 | |
---|
95 | print, ' key_shift =', key_shift |
---|
96 | |
---|
97 | |
---|
98 | key_offset = [0, 0, 0] |
---|
99 | ; |
---|
100 | ; indice i pour grille j moyenne zonale |
---|
101 | ; |
---|
102 | diaznl_idx = 1 |
---|
103 | |
---|
104 | return |
---|
105 | END |
---|
106 | |
---|