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

Last change on this file since 45 was 2, checked in by post_it, 17 years ago

Initial import from ~/POST_IT/

File size: 2.9 KB
Line 
1PRO 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
105END
106
Note: See TracBrowser for help on using the repository browser.