source: trunk/procs/meshes/mesh_gaussian.pro @ 169

Last change on this file since 169 was 169, checked in by pinsard, 15 years ago

add compile_opt idl2, strictarrsubs and subsequent modifications

  • Property svn:keywords set to Id
File size: 7.7 KB
Line 
1;+
2;
3; @version
4; $Id$
5;
6;-
7PRO 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
205END
206
Note: See TracBrowser for help on using the repository browser.