source: trunk/procs/macros/make_bsf.pro @ 2

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

Initial import from ~/POST_IT/

File size: 2.4 KB
Line 
1;
2; make Barotropic Stream Function
3;
4FUNCTION make_bsf, file_name, ncdf_db,  TIME_1 = time_1,  TIME_2 =  time_2, ZMTYP = zmtyp
5
6@common
7@com_eg
8;
9;
10; Read taux and tauy
11;
12; HISTORY:
13;
14;       Fri Apr 6 12:18:15 2001, Eric Guilyardi
15;       <ericg@lemnos.rdg.ac.uk>
16;
17;               
18;
19   file_nam = strmid(file_name, 0, strlen(file_name)-4)
20; keep current settings
21;   old_boite = [lon1, lon2, lat1, lat2, prof1, prof2]
22;   domdef
23; diag_bsf requires the whole domain
24   jpi = 182
25   jpj = 149
26   key_offset = [0, 0, 0]
27   key_shift_old = key_shift
28   key_shift = 0
29   ixminmesh  =0
30   ixmaxmesh  =181
31;
32   iyminmesh  =0
33   iymaxmesh  =148
34   
35   CASE config OF
36      'ORCA_R2': BEGIN
37         ncdf_meshlec, 'meshmask.orca.2d.nc' ; for ST7-type runs
38;        ncdf_meshlec, 'meshmask_ORCA_R2.nc' ; for CT/TT-type runs
39      END
40      'ORCA_R4': BEGIN
41         ncdf_meshlec, 'meshmask_orca4.nc'
42      END
43   ENDCASE
44; make masks
45   umaskr = umask()
46   vmaskr = vmask()
47   fmaskr = fmask()
48
49   vargrid = 'U'
50   u = nc_read(file_nam+'U.nc','vozocrtx', ncdf_db,  TIME_1 = time_1,  TIME_2 =  time_2, /ALL_DATA)
51   vargrid = 'V'
52   v = nc_read(file_nam+'V.nc','vomecrty', ncdf_db,  TIME_1 = time_1,  TIME_2 =  time_2, /ALL_DATA)
53
54   IF time_1 EQ time_2 THEN BEGIN
55
56      bsf = diag_bsf(u.data, v.data)
57      bsfr = bsf[1:jpi-2, 0:jpj-2]
58      bsfr = shift(bsfr, key_shift_old, 0)
59   
60   ENDIF ELSE BEGIN
61     
62      jpt = time_2-time_1+1
63      bsfr = fltarr(180, 148, jpt)
64      FOR t = 0, jpt DO BEGIN
65
66         bsf= diag_bsf(u.data(*, *, *, t), v.data(*, *, *, t))
67         bsft = bsf[1:jpi-2, 0:jpj-2]
68         bsfr(*, *, t) = shift(bsft, key_shift_old, 0)
69      ENDFOR
70
71   ENDELSE
72
73; extract sub-domain
74   
75
76   jpi = 180
77   jpj = 148
78   key_offset = [2, 0, 0]
79   key_shift = key_shift_old
80   ixminmesh  =2
81   ixmaxmesh  =181
82;
83   iyminmesh  =0
84   iymaxmesh  =147
85;
86   izminmesh  =0
87   izmaxmesh  =30
88   key_periodique = 1
89   ncdf_meshlec, 'meshmask_ORCA_R2.nc'
90
91   isign=where(glamt gt 380.)
92   IF isign(0) NE -1 THEN glamt(isign) = glamt(isign)-360.
93   isign=where(glamu gt 380.)
94   IF isign(0) NE -1 THEN glamu(isign) = glamu(isign)-360.
95   isign=where(glamv gt 380.)
96   IF isign(0) NE -1 THEN glamv(isign) = glamv(isign)-360.
97   isign=where(glamf gt 380.)
98   IF isign(0) NE -1 THEN glamf(isign) = glamf(isign)-360.
99;   domdef, old_boite
100
101   field = {name: '', data: bsfr, legend: '', units: '', origin: '', dim: 0}
102   
103   field.origin = u.origin
104   field.dim = u.dim
105
106   return, field
107END
Note: See TracBrowser for help on using the repository browser.