1 | ; |
---|
2 | ; make Barotropic Stream Function |
---|
3 | ; |
---|
4 | FUNCTION 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 |
---|
107 | END |
---|