source: trunk/procs/meshes/mesh_regular.pro @ 205

Last change on this file since 205 was 205, checked in by pinsard, 14 years ago

homegenize THEN BEGIN ... ENDIF

  • Property svn:keywords set to Id
File size: 4.1 KB
Line 
1;+
2;
3; @param DELTAX
4;
5; @param DELTAY
6;
7; @keyword INILON
8;
9; @keyword EQUATOR
10;
11; @keyword NOMASK
12;
13; @keyword MASK_FILE
14;
15; @keyword I_INDEX
16;
17; @keyword DELTA_I
18;
19; @keyword J_INDEX
20;
21; @keyword DELTA_J
22;
23; @keyword NO_SHIFT
24;
25; @keyword WHOLE_ARRAYS
26;
27; @keyword REVERSE_Y
28;
29; @keyword GLAMBOUNDARY
30;
31; @uses
32; <pro>common</pro>
33; <propost_it>com_eg</propost_it>
34;
35; @history
36; - fplod 20100119T160644Z aedon.locean-ipsl.upmc.fr (Darwin)
37;
38;   * check parameters
39;
40; @version
41; $Id$
42;
43;-
44PRO mesh_regular, deltax, deltay $
45    , INILON=inilon $
46    , EQUATOR=equator $
47    , NOMASK=nomask $
48    , MASK_FILE=mask_file $
49    , I_INDEX=i_index $
50    , DELTA_I=delta_i $
51    , J_INDEX=j_index $
52    , DELTA_J=delta_j $
53    , NO_SHIFT=no_shift $
54    , WHOLE_ARRAYS=whole_arrays $
55    , REVERSE_Y=reverse_y $
56    , GLAMBOUNDARY=glamboundary
57;
58  compile_opt idl2, strictarrsubs
59;
60@common
61@com_eg
62;
63 usage='mesh_regular, deltax, deltay' $
64    + ', INILON=inilon' $
65    + ', EQUATOR=equator' $
66    + ', NOMASK=nomask' $
67    + ', MASK_FILE=mask_file' $
68    + ', I_INDEX=i_index' $
69    + ', DELTA_I=delta_i' $
70    + ', J_INDEX=j_index' $
71    + ', DELTA_J=delta_j' $
72    + ', NO_SHIFT=no_shift' $
73    + ', WHOLE_ARRAYS=whole_arrays' $
74    + ', REVERSE_Y=reverse_y' $
75    + ', GLAMBOUNDARY=glamboundary'
76;
77 nparam = N_PARAMS()
78 IF (nparam LT 2) THEN BEGIN
79    ras = report(['Incorrect number of arguments.' $
80          + '!C' $
81          + 'Usage : ' + usage])
82    stop
83 ENDIF
84
85; init grid, sf, masks for regular grid (includes equator)
86;
87   print,' Regular grid inits.',deltax, deltay
88
89   jpi = floor(360./deltax)
90   jpj = floor(180./deltay)
91   IF keyword_set(EQUATOR) THEN BEGIN
92    jpj = jpj + 1
93   ENDIF
94   jpk = 1
95
96 ; initialisation of character variables used in the execution of computegrid
97   shift_txt = ''
98   periodic_txt = ''
99   idx_txt = ''
100
101; 1.  Define longitudes
102
103   IF NOT keyword_set(inilon) THEN BEGIN
104    inilon = 0.
105   ENDIF
106
107   glamt = 360.0*findgen(jpi)/float(jpi)+inilon
108   glamt = glamt#replicate(1, jpj)
109
110; 2.  Define latitudes
111
112   IF keyword_set(EQUATOR) THEN BEGIN
113
114      gphit = 90.0*findgen((jpj-1)/2)/float((jpj-1)/2)+deltay
115      gphitn = reverse(-gphit)
116      gphit = [gphitn, 0.0, gphit]
117
118   END ELSE BEGIN
119
120      gphit = 90.0*findgen(jpj/2)/float(jpj/2)+deltay/2.
121      gphitn = reverse(gphit)
122      gphit = [gphitn, -gphit]
123
124   ENDELSE
125
126; 3. define mask
127
128   tmask = lonarr(jpi, jpj)
129   IF NOT keyword_set(NOMASK) THEN BEGIN
130      s_file = hom_idl+'grids/mask_'+mask_file+'.dat'
131      print, '     Read mask from ',s_file
132      restore, s_file
133;      nummsk = 12
134;      s_file = hom_idl+'grids/mask_regular_'+ $
135;       strtrim(string(jpi), 2)+'x'+strtrim(string(jpj), 2)
136;      openr, nummsk, s_file, /get_lun, /f77
137;      readu, nummsk, tmask
138;   tmask = reverse(1-tmask, 2)
139;      close, nummsk
140;      free_lun, nummsk
141
142   ENDIF ELSE BEGIN
143      tmask[*, *]= 1
144      print, '     Warning, No mask read'
145   ENDELSE
146
147; 4. Reduce grid in longitude
148
149   IF keyword_set(i_index) THEN BEGIN
150      idx_txt = ',XMINMESH='+string(i_index)+',XMAXMESH='+string(i_index+delta_i-1)
151      idx_txt = idx_txt+',XMINDTA='+string(i_index)+',XMAXDTA='+string(i_index+delta_i-1)
152   ENDIF
153   IF keyword_set(j_index) THEN BEGIN
154      idx_txt = idx_txt+',YMINMESH='+string(j_index)+',YMAXMESH='+string(j_index+delta_j-1)
155      idx_txt = idx_txt+',YMINDTA='+string(j_index)+',YMAXDTA='+string(j_index+delta_j-1)
156   ENDIF
157
158   IF keyword_set(REVERSE_Y) THEN BEGIN
159    gphit = reverse(gphit)
160   ENDIF
161   gphit = replicate(1, jpi)#gphit
162
163   masked_data = 0
164   mesh_type = 'atm'
165;
166; definition of key_shift
167;
168   IF keyword_set(NO_SHIFT) THEN BEGIN
169      shift_txt = ', SHIFT = 0 '
170   ENDIF
171   IF keyword_set(WHOLE_ARRAYS) THEN BEGIN
172      shift_txt = ', SHIFT = 0 '
173      periodic_txt = ', PERIODIC = 0'
174   ENDIF
175
176; Use the computegrid routine
177   cmd_grid = 'computegrid, XAXIS = glamt, YAXIS = gphit, MASK = tmask, GLAMBOUNDARY = glamboundary, /FULLCGRID'+shift_txt+periodic_txt+idx_txt
178   IF debug_w THEN BEGIN
179    print, cmd_grid
180   ENDIF
181   res = execute( cmd_grid )
182
183   print, '   key_shift =', key_shift
184
185
186   key_offset = [0, 0, 0]
187;
188; indice i pour grille j moyenne zonale
189;
190   diaznl_idx = 1
191
192END
Note: See TracBrowser for help on using the repository browser.