1 | ;+ |
---|
2 | ; |
---|
3 | ; @version |
---|
4 | ; $Id$ |
---|
5 | ; |
---|
6 | ;- |
---|
7 | PRO mesh_gaussian, trunc $ |
---|
8 | , IBEG=ibeg $ |
---|
9 | , IFIN=ifin $ |
---|
10 | , JBEG=jbeg $ |
---|
11 | , JFIN=jfin $ |
---|
12 | , ZOOM=zoom $ |
---|
13 | , NO_SHIFT=no_shift $ |
---|
14 | , WHOLE_ARRAYS=whole_arrays $ |
---|
15 | , GLAMBOUNDARY=glamboundary |
---|
16 | ; |
---|
17 | compile_opt idl2, strictarrsubs |
---|
18 | ; |
---|
19 | @common |
---|
20 | @com_eg |
---|
21 | ; |
---|
22 | ; init grid, sf, masks for gaussian grid for SINTEX |
---|
23 | ; |
---|
24 | print,' T',trunc, ' gaussian grid inits.',format='(A5,I3,A20)' |
---|
25 | |
---|
26 | key_shift = 0 |
---|
27 | |
---|
28 | ; initialisation of character variables used in the execution of initncdf |
---|
29 | ; (and computegrid as a consequence) |
---|
30 | shift_txt = '' |
---|
31 | plain_txt = '' |
---|
32 | |
---|
33 | IF keyword_set(NO_SHIFT) THEN BEGIN |
---|
34 | shift_txt = ', SHIFT = 0' |
---|
35 | ENDIF |
---|
36 | IF keyword_set(WHOLE_ARRAYS) THEN BEGIN |
---|
37 | plain_txt = ', PLAIN = 1' |
---|
38 | ;; Force YREVERSE = 0, ZREVERSE = 0, PERIODIC = 0, SHIFT = 0, STRIDE = [1, 1, 1] and |
---|
39 | ;; suppress the automatic redefinition of the domain in case of x periodicity overlap, |
---|
40 | ;; y periodicity overlap (ORCA type only) and mask border to 0. |
---|
41 | ENDIF |
---|
42 | |
---|
43 | IF debug_w THEN print, ' key_yreverse = ', key_yreverse |
---|
44 | |
---|
45 | CASE trunc OF |
---|
46 | 30: BEGIN & jpi = 96L & jpj = 48L & jpk = 14L & END |
---|
47 | 42: BEGIN & jpi = 128L & jpj = 64L & jpk = 14L & END |
---|
48 | 62: BEGIN & jpi = 192L & jpj = 94L & jpk = 17L & END |
---|
49 | 106: BEGIN & jpi = 320L & jpj = 160L & jpk = 17L & key_shiftg = [jpi/2, 0]& END |
---|
50 | ELSE: BEGIN |
---|
51 | print, ' ' |
---|
52 | print, ' mesh_gaussian: truncature ',trunc, ' not implemented.' |
---|
53 | stop |
---|
54 | END |
---|
55 | ENDCASE |
---|
56 | |
---|
57 | jpiglo = jpi |
---|
58 | jpjglo = jpj |
---|
59 | jpkglo = jpk |
---|
60 | |
---|
61 | ixminmesh =0 |
---|
62 | ixmaxmesh =jpi-1 |
---|
63 | ; |
---|
64 | iyminmesh =0 |
---|
65 | iymaxmesh =jpj-1 |
---|
66 | ; |
---|
67 | izminmesh =0 |
---|
68 | izmaxmesh =jpk-1 |
---|
69 | |
---|
70 | ; 1. Define longitudes |
---|
71 | |
---|
72 | glamt = 360.0*findgen(jpi)/float(jpi) |
---|
73 | |
---|
74 | ; 2 Define latitudes |
---|
75 | CASE trunc OF |
---|
76 | 30: BEGIN |
---|
77 | gphit = [ $ |
---|
78 | -87.16 , -83.48 , -79.78 , -76.07 , -72.36 , -68.65, $ |
---|
79 | -64.94 , -61.23 , -57.52 , -53.81 , -50.10 , -46.39, $ |
---|
80 | -42.68 , -38.97 , -35.26 , -31.54 , -27.83 , -24.12, $ |
---|
81 | -20.41 , -16.70 , -12.99 , -9.28 , -5.57 , -1.86, $ |
---|
82 | 1.86 , 5.57 , 9.28 , 12.99 , 16.70 , 20.41, $ |
---|
83 | 24.12 , 27.83 , 31.54 , 35.26 , 38.97 , 42.68, $ |
---|
84 | 46.39 , 50.10 , 53.81 , 57.52 , 61.23 , 64.94, $ |
---|
85 | 68.65 , 72.36 , 76.07 , 79.78 , 83.48 , 87.16 ] |
---|
86 | gdept = [1000, 850, 700, 500, 400, 300, $ |
---|
87 | 250, 200, 150, 100, 70, 50, $ |
---|
88 | 30, 10] |
---|
89 | END |
---|
90 | 42: BEGIN |
---|
91 | gphit = [ $ |
---|
92 | -87.8638, -85.09653, -82.31291, -79.5256, -76.7369, -73.94752, $ |
---|
93 | -71.15775, -68.36776, -65.57761, -62.78735, -59.99702, -57.20663, $ |
---|
94 | -54.4162, -51.62573, -48.83524, -46.04473, -43.2542, -40.46365, $ |
---|
95 | -37.67309, -34.88252, -32.09195, -29.30136, -26.51077, -23.72017, $ |
---|
96 | -20.92957, -18.13897, -15.34836, -12.55776, -9.767145, -6.976533, $ |
---|
97 | -4.185921, -1.395307, 1.395307, 4.185921, 6.976533, 9.767145, 12.55776, $ |
---|
98 | 15.34836, 18.13897, 20.92957, 23.72017, 26.51077, 29.30136, 32.09195, $ |
---|
99 | 34.88252, 37.67309, 40.46365, 43.2542, 46.04473, 48.83524, 51.62573, $ |
---|
100 | 54.4162, 57.20663, 59.99702, 62.78735, 65.57761, 68.36776, 71.15775, $ |
---|
101 | 73.94752, 76.7369, 79.5256, 82.31291, 85.09653, 87.8638 ] |
---|
102 | gdept = [1000, 850, 700, 500, 400, 300, $ |
---|
103 | 250, 200, 150, 100, 70, 50, $ |
---|
104 | 30, 10] |
---|
105 | END |
---|
106 | 62: BEGIN |
---|
107 | gphit = [ $ |
---|
108 | 88.542, 86.6531, 84.7532, 82.8508, 80.9473, 79.0435, 77.1394, 75.2351, $ |
---|
109 | 73.3307, 71.4262, 69.5217, 67.6171, 65.7125, 63.8079, 61.9033, 59.9986, $ |
---|
110 | 58.0939, 56.1893, 54.2846, 52.3799, 50.4752, 48.5705, 46.6658, 44.7611, $ |
---|
111 | 42.8564, 40.9517, 39.047, 37.1422, 35.2375, 33.3328, 31.4281, 29.5234, $ |
---|
112 | 27.6186, 25.7139, 23.8092, 21.9044, 19.9997, 18.095, 16.1902, 14.2855, $ |
---|
113 | 12.3808, 10.47604, 8.57131, 6.66657, 4.76184, 2.8571, 0.952368, $ |
---|
114 | -0.952368, -2.8571, -4.76184, -6.66657, -8.57131, -10.47604, -12.3808] |
---|
115 | gphit = [ gphit, $ |
---|
116 | -14.2855, -16.1902, -18.095, -19.9997, -21.9044, -23.8092, -25.7139, $ |
---|
117 | -27.6186, -29.5234, -31.4281, -33.3328, -35.2375, -37.1422, -39.047, $ |
---|
118 | -40.9517, -42.8564, -44.7611, -46.6658, -48.5705, -50.4752, -52.3799, $ |
---|
119 | -54.2846, -56.1893, -58.0939, -59.9986, -61.9033, -63.8079, -65.7125, $ |
---|
120 | -67.6171, -69.5217, -71.4262, -73.3307, -75.2351, -77.1394, -79.0435, $ |
---|
121 | -80.9473, -82.8508, -84.7532, -86.6531, -88.542 ] |
---|
122 | ; gphit = reverse(gphit, 1) |
---|
123 | gdept = [10, 30, 50, 70, 100, 150, $ |
---|
124 | 200, 250, 300, 400, 500, 600, $ |
---|
125 | 700, 775, 850, 925, 1000] |
---|
126 | |
---|
127 | END |
---|
128 | 106: BEGIN |
---|
129 | gphit = [$ |
---|
130 | 89.14152, 88.02943, 86.91077, 85.79063, 84.66992, 83.54894, $ |
---|
131 | 82.42781, 81.30659, 80.1853, 79.06398, 77.94262, 76.82124, 75.69984, $ |
---|
132 | 74.57843, 73.457, 72.33557, 71.21413, 70.09269, 68.97124, 67.84978, $ |
---|
133 | 66.72832, 65.60686, 64.4854, 63.36393, 62.24246, 61.12099, 59.99952, $ |
---|
134 | 58.87804, 57.75657, 56.63509, 55.51361, 54.39213, 53.27065, 52.14917, $ |
---|
135 | 51.02769, 49.90621, 48.78473, 47.66325, 46.54176, 45.42028, 44.29879, $ |
---|
136 | 43.17731, 42.05582, 40.93434, 39.81285, 38.69136, 37.56988, 36.44839, $ |
---|
137 | 35.3269, 34.20542, 33.08393, 31.96244, 30.84095, 29.71947, 28.59798, $ |
---|
138 | 27.47649, 26.355, 25.23351, 24.11202, 22.99054, 21.86905, 20.74756, $ |
---|
139 | 19.62607, 18.50458, 17.38309, 16.2616, 15.14011, 14.01862, 12.89713, $ |
---|
140 | 11.77564, 10.65415, 9.532663, 8.411174, 7.289684, 6.168194, 5.046704, $ |
---|
141 | 3.925215, 2.803725, 1.682235, 0.5607449 ] |
---|
142 | gphit = [ gphit, $ |
---|
143 | -0.5607449, -1.682235, $ |
---|
144 | -2.803725, -3.925215, -5.046704, -6.168194, -7.289684, -8.411174, $ |
---|
145 | -9.532663, -10.65415, -11.77564, -12.89713, -14.01862, -15.14011, $ |
---|
146 | -16.2616, -17.38309, -18.50458, -19.62607, -20.74756, -21.86905, $ |
---|
147 | -22.99054, -24.11202, -25.23351, -26.355, -27.47649, -28.59798, $ |
---|
148 | -29.71947, -30.84095, -31.96244, -33.08393, -34.20542, -35.3269, $ |
---|
149 | -36.44839, -37.56988, -38.69136, -39.81285, -40.93434, -42.05582, $ |
---|
150 | -43.17731, -44.29879, -45.42028, -46.54176, -47.66325, -48.78473, $ |
---|
151 | -49.90621, -51.02769, -52.14917, -53.27065, -54.39213, -55.51361, $ |
---|
152 | -56.63509, -57.75657, -58.87804, -59.99952, -61.12099, -62.24246, $ |
---|
153 | -63.36393, -64.4854, -65.60686, -66.72832, -67.84978, -68.97124, $ |
---|
154 | -70.09269, -71.21413, -72.33557, -73.457, -74.57843, -75.69984, $ |
---|
155 | -76.82124, -77.94262, -79.06398, -80.1853, -81.30659, -82.42781, $ |
---|
156 | -83.54894, -84.66992, -85.79063, -86.91077, -88.02943, -89.14152 ] |
---|
157 | gphit = reverse(gphit, 1) |
---|
158 | gdept = [10, 30, 50, 70, 100, 150, $ |
---|
159 | 200, 250, 300, 400, 500, 600, $ |
---|
160 | 700, 775, 850, 925, 1000] |
---|
161 | END |
---|
162 | ENDCASE |
---|
163 | |
---|
164 | ; 4. Define mask |
---|
165 | |
---|
166 | ; open mask file |
---|
167 | |
---|
168 | CASE trunc OF |
---|
169 | 62: BEGIN ; NCEP mask |
---|
170 | s_file = hom_idl+'grids/mask_t62.nc' |
---|
171 | tmask = nc_get(s_file, 'lsmask') |
---|
172 | ; tmask = reverse(1-tmask, 2) |
---|
173 | tmask = 1-tmask |
---|
174 | END |
---|
175 | ELSE: BEGIN |
---|
176 | nummsk = 12 |
---|
177 | s_file = hom_idl+'grids/mask_t'+strtrim(string(trunc), 2) |
---|
178 | openr, nummsk, s_file, /get_lun, /f77, /swap_if_little_endian |
---|
179 | tmask = lonarr(jpi, jpj) |
---|
180 | readu, nummsk, tmask |
---|
181 | CASE trunc OF |
---|
182 | 106: tmask = 1-tmask |
---|
183 | 30: BEGIN |
---|
184 | tmask = reverse(1-tmask, 2) |
---|
185 | ; tmask = shift(tmask, jpi/2, 0) |
---|
186 | END |
---|
187 | ELSE: BEGIN |
---|
188 | tmask = reverse(1-tmask, 2) |
---|
189 | END |
---|
190 | ENDCASE |
---|
191 | close, nummsk |
---|
192 | free_lun, nummsk |
---|
193 | END |
---|
194 | ENDCASE |
---|
195 | ; |
---|
196 | ; compute grid |
---|
197 | ; |
---|
198 | computegrid, xaxis = glamt, yaxis = gphit, mask = tmask, GLAMBOUNDARY = glamboundary, /periodic |
---|
199 | |
---|
200 | key_offset = [0, 0, 0] |
---|
201 | |
---|
202 | print,' End of initialisation for gaussian grid T', trunc |
---|
203 | |
---|
204 | return |
---|
205 | END |
---|
206 | |
---|