source: trunk/procs/macros/make_wcurl.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: 3.5 KB
Line 
1;+
2;
3; make curl of vector field
4;
5;
6; @param FILE_NAME {in}{required}{type=string}
7;
8; @param NCDF_DB {in}{required}{type=string}
9; <location>:<path> or just <path>
10;
11; @keyword BOXZOOM
12;
13; @keyword TIME_1
14;
15; @keyword TIME_2
16;
17; @keyword ALL_DATA
18;
19; @keyword ZMTYP
20;
21; @returns
22; structure
23; -1 in case of error
24
25; @uses
26; <pro>common</pro>
27; <propost_it>com_eg</propost_it>
28;
29; @history
30; - fplod 20100119T094252Z aedon.locean-ipsl.upmc.fr (Darwin)
31;
32;   * check parameters
33;
34; @version
35; $Id$
36;
37;-
38FUNCTION make_wcurl, file_name, ncdf_db $
39         , BOXZOOM=boxzoom $
40         , TIME_1=time_1 $
41         , TIME_2=time_2 $
42         , ALL_DATA=all_data $
43         , ZMTYP=zmtyp
44;
45  compile_opt idl2, strictarrsubs
46;
47@common
48@com_eg
49;
50   IF debug_w THEN BEGIN
51    info = report('enter ...')
52   ENDIF
53
54 usage='result=make_wcurl(file_name, ncdf_db ' $
55         + ', BOXZOOM=boxzoom ' $
56         + ', TIME_1=time_1 ' $
57         + ', TIME_2=time_2 ' $
58         + ', ALL_DATA=all_data ' $
59         + ', ZMTYP=zmtyp)'
60
61 nparam = N_PARAMS()
62 IF (nparam LT 2) THEN BEGIN
63    ras = report(['Incorrect number of arguments.' $
64          + '!C' $
65          + 'Usage : ' + usage])
66    return, -1
67 ENDIF
68
69 arg_type = size(file_name,/type)
70 IF (arg_type NE 7) THEN BEGIN
71   ras = report(['Incorrect arg type file_name' $
72          + '!C' $
73          + 'Usage : ' + usage])
74   return, -1
75 ENDIF
76
77 arg_type = size(ncdf_db,/type)
78 IF (arg_type NE 7) THEN BEGIN
79   ras = report(['Incorrect arg type ncdf_db' $
80          + '!C' $
81          + 'Usage : ' + usage])
82   return, -1
83 ENDIF
84
85   var_name1 = (strsplit(macro_base_fld, ',', ESCAPE = ' ', /EXTRACT))[0]
86   var_name2 = (strsplit(macro_base_fld, ',', ESCAPE = ' ', /EXTRACT))[1]
87
88;  Build file_name2 if different
89
90   IF strpos (cmd1_back.grid, '#') NE -1 THEN BEGIN
91      varpos = strpos(file_name, var_name1)
92      file_name2= strmid(file_name, 0, varpos)+var_name2+'.nc'
93      IF debug_w THEN BEGIN
94       print, '   file_name2 = ', file_name2
95      ENDIF
96   ENDIF ELSE file_name2 = file_name
97
98;
99;  Read the variables in the correspondent netcdf file
100   var_x = nc_read(file_name, var_name1, ncdf_db, BOXZOOM = boxzoom, TIME_1 = time_1, TIME_2 = time_2)
101   var_y = nc_read(file_name2, var_name2, ncdf_db, BOXZOOM = boxzoom, TIME_1 = time_1, TIME_2 = time_2)
102
103; TO DO: ORCA grid C case
104;   vargrid = 'U'
105;   new_file = new_filename(file_name, 'T', vargrid)
106;   taux = nc_read(new_file,'sozotaux', ncdf_db, BOXZOOM = boxzoom, TIME_1 = time_1, TIME_2 = time_2, ALL_DATA = all_data)
107;   vargrid = 'V'
108;   new_file = new_filename(file_name, 'T', vargrid)
109;   tauy = nc_read(new_file,'sometauy', ncdf_db, BOXZOOM = boxzoom, TIME_1 = time_1, TIME_2 = time_2, ALL_DATA = all_data)
110
111;   for ORCA C grid vcurl = curl(var_x, var_y)
112
113   grille,mask,glam,gphi,gdep,nx,ny,nz,premierx,premiery,premierz,dernierx,derniery,dernierz
114
115   zu = var_x.data
116   zv = var_y.data
117
118
119   IF jpt EQ 1 THEN BEGIN
120      wcurl = (shift(zv, -1, 0)-zv)/e1t[premierx:dernierx, premiery:derniery] + (zu-shift(zu, 0, -1))/e2t[premierx:dernierx, premiery:derniery]
121   ENDIF ELSE BEGIN
122      e1t3d = reform(reform(e1t[premierx:dernierx, premiery:derniery], nx*ny)#replicate(1, jpt), nx, ny, jpt)
123      e2t3d = reform(reform(e2t[premierx:dernierx, premiery:derniery], nx*ny)#replicate(1, jpt), nx, ny, jpt)
124      wcurl = (shift(zv, -1, 0, 0)-zv)/e1t3d + (zu-shift(zu, 0, -1, 0))/e2t3d
125   ENDELSE
126
127   field = {name: '', data: wcurl, legend: '', units: '', origin: '', dim: 0, direc:''}
128
129   field.origin = var_x.origin
130   field.dim = var_x.dim
131   field.direc = var_x.direc
132
133   return, field
134END
Note: See TracBrowser for help on using the repository browser.