source: trunk/netcdf_input.pro @ 2

Last change on this file since 2 was 2, checked in by pinsard, 18 years ago

initial import from /usr/work/fvi/OPA/geomag/

File size: 5.7 KB
Line 
1;------------------------------------------------------------
2;------------------------------------------------------------
3;------------------------------------------------------------
4;+
5; NAME: netcdf_input.pro
6;
7; PURPOSE: Reads coordinates, data and mask
8;
9; CATEGORY: Subroutine
10;
11; CALLING SEQUENCE: netcdf_input, mask
12;
13; INPUTS:
14;
15;          maskfile  : name of mask file
16;          gridfile  : name of grid file
17;          mask_name : mask name
18;  SCALAR FIELD :
19;          datafile  : name of input data file
20;          lon_name  : name of output longitude variable
21;          lat_name  : name of output latitude variable
22;  VECTOR FIELD :
23;          data_u_file  : name of input data x-component file
24;          data_v_file  : name of input data y-component file
25;          lon_u_name   : name of output longitude variable at u-point
26;          lat_u_name     : name of output latitude variable at u-point
27;          lon_v_name     : name of output longitude variable at v-point
28;          lat_v_name     : name of output latitude variable at v-point
29;          lon_f_name     : name of output longitude variable at f-point
30;          lat_f_name     : name of output latitude variable at f-point
31;
32; KEYWORD PARAMETERS: None
33;
34; OUTPUTS:
35;          mask     : mask of the origin grid
36;          nummsk   : ID of input mask file
37;          nummsh   : ID of output coordinates and mask file
38;  SCALAR FIELD :
39;          lon_t  : longitudes of target grid at t-point
40;          lat_t  : latitudes of target grid at t-point
41;          numdta : ID of input data file
42;  VECTOR FIELD :
43;          lon_u    : longitudes of target grid at u-point
44;          lat_u    : latitudes of target grid at u-point
45;          lon_v    : longitudes of target grid at v-point
46;          lat_v    : latitudes of target grid at v-point
47;          lon_f    : longitudes of target grid at f-point
48;          lat_f    : latitudes of target grid at f-point
49;          numdta_u : ID of input data x-component file
50;          numdta_v : ID of input data y-component file
51;
52; COMMON BLOCKS:
53;       common_interp.pro
54;
55; SIDE EFFECTS:
56;
57; RESTRICTIONS:
58;
59; EXAMPLE:
60;
61; MODIFICATION HISTORY: 11/99 A. Jouzeau
62;                       08/00 A. Jouzeau
63;                       03/2003 R.Hordoir Added reading of meridian
64;                       axis in input file
65;
66;-
67;------------------------------------------------------------
68;------------------------------------------------------------
69;------------------------------------------------------------
70PRO netcdf_input, mask
71@common_interp
72;
73; 0. Opening files
74; ================
75;
76printf, 40, ''
77IF keyword_set(key_mask) THEN nummsk = ncdf_open(input_dir+ '/'+ maskfile)
78IF keyword_set(key_mask) THEN printf, 40, maskfile, ' opening OK'
79IF keyword_set(nscal) THEN BEGIN
80   numdta_u = ncdf_open(string(input_dir, '/', data_u_file))
81   printf, 40, data_u_file, ' opening OK'
82   numdta_v = ncdf_open(string(input_dir, '/', data_v_file))
83   IF data_u_file NE data_v_file THEN printf, 40, data_v_file, ' opening OK'
84ENDIF ELSE BEGIN
85   numdta = ncdf_open(input_dir+ '/'+ datafile)
86   printf, 40, datafile, ' opening OK'
87ENDELSE
88nummsh = ncdf_open(input_dir+ '/'+ gridfile)
89printf, 40, gridfile, ' opening OK'
90;
91; 1. Reading coordinates of output grid
92; =====================================
93;
94IF keyword_set(nscal) THEN BEGIN
95   ncdf_varget, nummsh, lon_u_name, lon_u
96   ncdf_varget, nummsh, lat_u_name, lat_u
97   ncdf_varget, nummsh, lon_f_name, lon_f
98   ncdf_varget, nummsh, lat_f_name, lat_f
99   ncdf_varget, nummsh, lon_v_name, lon_v
100   ncdf_varget, nummsh, lat_v_name, lat_v
101   IF keyword_set(modlam) THEN BEGIN
102      ii=where(lon_f gt 360)
103      lon_f(ii)=lon_f(ii)-360
104      ii=where(lon_u gt 360)
105      lon_u(ii)=lon_u(ii)-360
106      ii=where(lon_v gt 360)
107      lon_v(ii)=lon_v(ii)-360
108   ENDIF
109ENDIF ELSE BEGIN
110   ncdf_varget, nummsh, lon_name, lon_t
111   ncdf_varget, nummsh, lat_name, lat_t
112   IF keyword_set(modlam) THEN BEGIN
113      ii=where(lon_t gt 360)
114      lon_t(ii)=lon_t(ii)-360
115   ENDIF
116ENDELSE
117printf, 40, ''
118printf, 40, 'Coordinates of output grid reading OK'
119;
120; 2. Reading the Input Axis and data mask
121; =======================================
122;
123; Input Axis Vertical Axis (Horizontal Axis is supposed to be fully regular)
124       phi_input=replicate(0,jpiatm,jpjatm)
125
126IF keyword_set(nscal) THEN BEGIN
127   
128       ncdf_varget, numdta_u,y_axis_u,phi_input_u, count = [jpiatm, jpjatm]
129       ncdf_varget, numdta_v,y_axis_v,phi_input_v, count = [jpiatm, jpjatm]
130       
131       phi_input_u=phi_input_u(0,*)
132       phi_input_v=phi_input_v(0,*)
133       
134ENDIF ELSE BEGIN
135
136     
137       ncdf_varget, numdta  ,y_axis  ,phi_input  , count = [ jpjatm]
138;   modif  FRED     
139       phi_input=reverse(phi_input)
140;   fin modif FRED
141;stop
142;       phi_input=phi_input(0,*)
143
144ENDELSE
145
146; Data Mask
147
148IF keyword_set(key_mask) THEN BEGIN
149   IF keyword_set(ndim) THEN $
150    ncdf_varget, nummsk, mask_name, mask, count = [jpiatm, jpjatm, jpkatm, 1] ELSE BEGIN 
151
152    IF keyword_set(key_2d) THEN $
153       ncdf_varget, nummsk, mask_name, mask, count = [jpiatm, jpjatm] ELSE $
154       ncdf_varget, nummsk, mask_name, mask, count = [jpiatm, jpjatm, 1, 1]
155    ENDELSE
156   
157   printf, 40, ''
158   printf, 40, 'Data mask reading OK'
159ENDIF ELSE BEGIN
160   IF keyword_set(ndim) THEN mask = replicate(1., jpiatm, jpjatm, jpkatm) ELSE $
161    mask = replicate(1., jpiatm, jpjatm)
162ENDELSE
163;
164; 3. Reading depths of input and output grids (3D field)
165; ======================================================
166;
167IF keyword_set(ndim) THEN BEGIN
168   IF keyword_set(ndep) THEN $
169    ncdf_varget, numdta, datadept_name, datadept ELSE $
170    ncdf_varget, nummsk, datadept_name, datadept
171   ncdf_varget, nummsh, outdept_name, outdept
172   datadept = float(datadept)
173   outdept = float(outdept)
174ENDIF
175;
176return
177END 
Note: See TracBrowser for help on using the repository browser.