/[MITgcm]/MITgcm_contrib/ocean_inversion_project/write_netCDF/write_nc_MaskAreaBathy.F
ViewVC logotype

Contents of /MITgcm_contrib/ocean_inversion_project/write_netCDF/write_nc_MaskAreaBathy.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Tue Oct 21 06:21:52 2003 UTC (21 years, 9 months ago) by dimitri
Branch: MAIN
CVS Tags: HEAD
added netcdf output files

1 !
2 ! $Id: write_nc_MaskAreaBathy.F,v 1.1.1.1 2003/05/01 21:25:53 fletcher Exp $
3 !
4 !_ ---------------------------------------------------------------------
5 !_ RCS lines preceded by "c_ "
6 !_ ---------------------------------------------------------------------
7 !_
8 !_ $Source: /usr/data/cvsroot/fletcher/MOM_3/MOM_3/ocmip2/write_nc_MaskAreaBathy.F,v $
9 !_ $Revision: 1.1.1.1 $
10 !_ $Date: 2003/05/01 21:25:53 $ ; $State: Exp $
11 !_ $Author: fletcher $ ; $Locker: $
12 !_
13 !_ ---------------------------------------------------------------------
14 !_ $Log: write_nc_MaskAreaBathy.F,v $
15 !_ Revision 1.1.1.1 2003/05/01 21:25:53 fletcher
16 !_ Added code to write inversion variables
17 !_
18 !_ Revision 1.1.1.1 2001/01/23 23:01:05 frenzel
19 !_ MOM 3 Sources from Rick Slater
20 !_
21 !_ Revision 1.2 1999/11/18 17:12:03 rdslater
22 !_ Cosmetic changes: change cmoment character to "!", add $Id string at
23 !_ top, remove *4 specifier on type statements.
24 !_
25 !_ Revision 1.1.1.1 1999/05/19 15:40:41 rdslater
26 !_ Imported sources: OCN19 OCMIP2 CFC runs
27 !_
28 !_ Revision 2.1 1999/04/29 11:44:58 orr
29 !_ Now GDT 1.2 compatible!!!
30 !_ Added argument "production"
31 !_
32 !_ Revision 1.3 1998/09/10 09:22:26 brocksce
33 !_ Add missing value attribute for BATHY variable.
34 !_
35 !_ Revision 1.2 1998/08/26 12:09:12 brocksce
36 !_ Fixed convention error on two-dimensional bound arrays
37 !_ (confusion between C and FORTRAN notations).
38 !_
39 !_ Revision 1.1 1998/07/21 16:55:54 jomce
40 !_ Initial revision
41 !_
42 !_ ---------------------------------------------------------------------
43 !_
44
45 !***********************************************************************
46 !
47 ! NAME: WRITE_NC_MaskAreaBathy
48 !
49 ! INPUT:
50 ! group= group code (ex: IPSL)
51 ! production= production (model and version ex: OPA 8.1)
52 ! imt= dimension
53 ! jmt= dimension
54 ! kmt= dimension
55 ! lon= longitude axis [degrees East]
56 ! bounds_lon= boundaries array [degrees East]
57 ! = bounds_lon(i,j,1,1) represents the lower left boundary
58 ! = bounds_lon(i,j,2,1) represents the lower right boundary
59 ! = bounds_lon(i,j,1,2) represents the upper left boundary
60 ! = bounds_lon(i,j,2,2) represents the upper right boundary
61 ! lat= latitude axis [degrees North]
62 ! bounds_lat= boundaries array [degrees North]
63 ! = bounds_lat(i,j,1,1) represents the lower left boundary
64 ! = bounds_lat(i,j,2,1) represents the lower right boundary
65 ! = bounds_lat(i,j,1,2) represents the upper left boundary
66 ! = bounds_lat(i,j,2,2) represents the upper right boundary
67 ! depth= depth axis [meters]
68 ! bounds_depth= boundaries array [meters]
69 ! = bounds_dept(k,1) represents the lower boundary
70 ! = bounds_dept(k,2) represents the upper boundary
71 !
72 ! MASK= Mask Land/Ocean at tracer points [0/1]
73 ! AREA= Surface Area of tracer cells [m^2]
74 ! BATHY= Bathymetry [m]
75 ! REG_AREA = Area of each dye region
76 !
77 ! OUTPUT FILE:
78 ! A netcdf file (clobbed if exists) with
79 ! the filename group_MaskAreaBathy.nc
80 !
81 !***********************************************************************
82
83 SUBROUTINE WRITE_NC_MaskAreaBathy(
84 & group,production,
85 & imt,jmt,kmt,ndyetrac,
86 & lon,bounds_lon,lat,bounds_lat,depth,bounds_depth,
87 & MASK,AREA,BATHY,REGION_MASK,REGION_AREA)
88
89 ! No implicit declarations
90 IMPLICIT NONE
91
92 ! Arguments
93 CHARACTER*(*) group
94 CHARACTER*(*) production
95 INTEGER imt,jmt,kmt,ndyetrac
96 REAL lon(imt,jmt),bounds_lon(imt,jmt,2,2)
97 REAL lat(imt,jmt),bounds_lat(imt,jmt,2,2)
98 REAL depth(kmt),bounds_depth(kmt,2)
99 REAL MASK(imt,jmt,kmt)
100 REAL AREA(imt,jmt)
101 REAL BATHY(imt,jmt)
102 REAL REGION_MASK(imt,jmt,ndyetrac)
103 REAL REGION_AREA(ndyetrac)
104
105
106 ! Constants
107 REAL missing_value
108 PARAMETER (missing_value=-1.E+34)
109
110 ! Local variables
111 CHARACTER*256 string256,filename
112
113 ! Function
114 ! INTEGER LEN_TRIM
115
116 ! NetCDF variables
117 #include "netcdf.inc"
118 INTEGER NC_ID
119 INTEGER STATUS
120 INTEGER LON_DIM,LON_ID
121 INTEGER LAT_DIM,LAT_ID
122 INTEGER DEPTH_DIM,DEPTH_ID
123 INTEGER DYE_DIM, DYE_ID
124 INTEGER TWO_DIM
125 INTEGER BOUNDS_LON_ID
126 INTEGER BOUNDS_LAT_ID
127 INTEGER BOUNDS_DEPTH_ID
128 INTEGER MASK_ID,AREA_ID,BATHY_ID, REG_MASK_ID, REG_AREA_ID
129 INTEGER DIMS_2D(2)
130 INTEGER DIMS_3D(3)
131 INTEGER DIMS_4D(4)
132 INTEGER DIMS_3D_REG(3)
133
134 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
135 ! Build the NetCDF filename
136 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
137 filename=group//'_MaskAreaBathy.nc'
138
139 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
140 ! Open the NetCDF file
141 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
142 STATUS=NF_CREATE(filename,NF_CLOBBER,NC_ID)
143 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
144
145 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
146 ! Define dimensions
147 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
148 STATUS=NF_DEF_DIM(NC_ID,'x',imt,LON_DIM)
149 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
150
151 STATUS=NF_DEF_DIM(NC_ID,'y',jmt,LAT_DIM)
152 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
153
154 STATUS=NF_DEF_DIM(NC_ID,'depth',kmt,DEPTH_DIM)
155 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
156
157 STATUS=NF_DEF_DIM(NC_ID,'dye',ndyetrac,DYE_DIM)
158 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
159
160 STATUS=NF_DEF_DIM(NC_ID,'two',2,TWO_DIM)
161 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
162
163 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
164 ! Define variables
165 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
166 DIMS_2D(1)=LON_DIM
167 DIMS_2D(2)=LAT_DIM
168 STATUS=NF_DEF_VAR(NC_ID,'lon',NF_FLOAT,
169 & 2,DIMS_2D,LON_ID)
170 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
171
172 !---------------------------------------------------------
173 DIMS_4D(1)=LON_DIM
174 DIMS_4D(2)=LAT_DIM
175 DIMS_4D(3)=TWO_DIM
176 DIMS_4D(4)=TWO_DIM
177 STATUS=NF_DEF_VAR(NC_ID,'bounds_lon',NF_FLOAT,
178 & 4,DIMS_4D,BOUNDS_LON_ID)
179 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
180
181 !---------------------------------------------------------
182 STATUS=NF_DEF_VAR(NC_ID,'lat',NF_FLOAT,
183 & 2,DIMS_2D,LAT_ID)
184 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
185
186 !---------------------------------------------------------
187 STATUS=NF_DEF_VAR(NC_ID,'bounds_lat',NF_FLOAT,
188 & 4,DIMS_4D,BOUNDS_LAT_ID)
189 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
190
191 !---------------------------------------------------------
192 STATUS=NF_DEF_VAR(NC_ID,'depth',NF_FLOAT,
193 & 1,DEPTH_DIM,DEPTH_ID)
194 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
195
196 !---------------------------------------------------------
197 DIMS_2D(1)=DEPTH_DIM
198 DIMS_2D(2)=TWO_DIM
199 STATUS=NF_DEF_VAR(NC_ID,'bounds_depth',NF_FLOAT,
200 & 2,DIMS_2D,BOUNDS_DEPTH_ID)
201 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
202
203 !---------------------------------------------------------
204 DIMS_3D(1)=LON_DIM
205 DIMS_3D(2)=LAT_DIM
206 DIMS_3D(3)=DEPTH_DIM
207 STATUS=NF_DEF_VAR(NC_ID,'MASK',NF_FLOAT,
208 & 3,DIMS_3D,MASK_ID)
209 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
210
211 !---------------------------------------------------------
212 DIMS_2D(1)=LON_DIM
213 DIMS_2D(2)=LAT_DIM
214 STATUS=NF_DEF_VAR(NC_ID,'AREA',NF_FLOAT,
215 & 2,DIMS_2D,AREA_ID)
216 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
217
218 !---------------------------------------------------------
219 DIMS_2D(1)=LON_DIM
220 DIMS_2D(2)=LAT_DIM
221 STATUS=NF_DEF_VAR(NC_ID,'BATHY',NF_FLOAT,
222 & 2,DIMS_2D,BATHY_ID)
223 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
224
225 !---------------------------------------------------------
226 DIMS_3D_REG(1)=LON_DIM
227 DIMS_3D_REG(2)=LAT_DIM
228 DIMS_3D_REG(3)=DYE_DIM
229 STATUS=NF_DEF_VAR(NC_ID,'REGION_MASK',NF_FLOAT,
230 & 3,DIMS_3D_REG,REG_MASK_ID)
231 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
232
233 !---------------------------------------------------------
234 STATUS=NF_DEF_VAR(NC_ID,'REGION_AREA', NF_FLOAT,
235 & 1,DYE_DIM, REG_AREA_ID)
236 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
237 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
238 ! Define global attributes
239 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
240 string256='GDT 1.2'
241 STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL,'Conventions',
242 & LEN_TRIM(string256),string256)
243 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
244
245 !---------------------------------------------------------
246 string256=filename
247 STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL,'file_name',
248 & LEN_TRIM(string256),string256)
249 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
250
251 !---------------------------------------------------------
252 string256=group//'_grid.nc'
253 STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL,'associate_file',
254 & LEN_TRIM(string256),string256)
255 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
256
257 !---------------------------------------------------------
258 string256='Ocean Inversion'
259 STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL,'project',
260 & LEN_TRIM(string256),string256)
261 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
262
263 !---------------------------------------------------------
264 string256=group
265 STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL,'institution',
266 & LEN_TRIM(string256),string256)
267 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
268
269 !---------------------------------------------------------
270 string256=production
271 STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL,'production',
272 & LEN_TRIM(string256),string256)
273 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
274
275 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
276 ! Define variable attributes
277 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
278 string256='Longitude'
279 STATUS=NF_PUT_ATT_TEXT(NC_ID,LON_ID,'long_name',
280 & LEN_TRIM(string256),string256)
281 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
282
283 string256='degrees_east'
284 STATUS=NF_PUT_ATT_TEXT(NC_ID,LON_ID,'units',
285 & LEN_TRIM(string256),string256)
286 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
287
288 STATUS=NF_PUT_ATT_REAL(NC_ID,LON_ID,'modulo',
289 & NF_FLOAT,1,360.0)
290 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
291
292 string256='circular'
293 STATUS=NF_PUT_ATT_TEXT(NC_ID,LON_ID,'topology',
294 & LEN_TRIM(string256),string256)
295 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
296
297 string256='bounds_lon'
298 STATUS=NF_PUT_ATT_TEXT(NC_ID,LON_ID,'bounds',
299 & LEN_TRIM(string256),string256)
300 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
301
302 !---------------------------------------------------------
303 string256='Latitude'
304 STATUS=NF_PUT_ATT_TEXT(NC_ID,LAT_ID,'long_name',
305 & LEN_TRIM(string256),string256)
306 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
307
308 string256='degrees_north'
309 STATUS=NF_PUT_ATT_TEXT(NC_ID,LAT_ID,'units',
310 & LEN_TRIM(string256),string256)
311 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
312
313 string256='bounds_lat'
314 STATUS=NF_PUT_ATT_TEXT(NC_ID,LAT_ID,'bounds',
315 & LEN_TRIM(string256),string256)
316 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
317
318 !---------------------------------------------------------
319 string256='Depth below the surface'
320 STATUS=NF_PUT_ATT_TEXT(NC_ID,DEPTH_ID,'long_name',
321 & LEN_TRIM(string256),string256)
322 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
323
324 string256='meters'
325 STATUS=NF_PUT_ATT_TEXT(NC_ID,DEPTH_ID,'units',
326 & LEN_TRIM(string256),string256)
327 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
328
329 string256='down'
330 STATUS=NF_PUT_ATT_TEXT(NC_ID,DEPTH_ID,'positive',
331 & LEN_TRIM(string256),string256)
332 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
333
334 string256='bounds_depth'
335 STATUS=NF_PUT_ATT_TEXT(NC_ID,DEPTH_ID,'bounds',
336 & LEN_TRIM(string256),string256)
337 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
338
339 !---------------------------------------------------------
340 string256='Mask Land/Ocean'
341 STATUS=NF_PUT_ATT_TEXT(NC_ID,MASK_ID,'long_name',
342 & LEN_TRIM(string256),string256)
343 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
344
345 string256='0/1'
346 STATUS=NF_PUT_ATT_TEXT(NC_ID,MASK_ID,'units',
347 & LEN_TRIM(string256),string256)
348 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
349
350 string256='depth lat lon'
351 STATUS=NF_PUT_ATT_TEXT(NC_ID,MASK_ID,'associate',
352 & LEN_TRIM(string256),string256)
353 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
354
355 !---------------------------------------------------------
356 string256='Surface Area of cells'
357 STATUS=NF_PUT_ATT_TEXT(NC_ID,AREA_ID,'long_name',
358 & LEN_TRIM(string256),string256)
359 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
360
361 string256='m^2'
362 STATUS=NF_PUT_ATT_TEXT(NC_ID,AREA_ID,'units',
363 & LEN_TRIM(string256),string256)
364 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
365
366 string256='lat lon'
367 STATUS=NF_PUT_ATT_TEXT(NC_ID,AREA_ID,'associate',
368 & LEN_TRIM(string256),string256)
369 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
370
371 !---------------------------------------------------------
372 string256='Bathymetry'
373 STATUS=NF_PUT_ATT_TEXT(NC_ID,BATHY_ID,'long_name',
374 & LEN_TRIM(string256),string256)
375 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
376
377 string256='m'
378 STATUS=NF_PUT_ATT_TEXT(NC_ID,BATHY_ID,'units',
379 & LEN_TRIM(string256),string256)
380 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
381
382 STATUS=NF_PUT_ATT_REAL(NC_ID,BATHY_ID,'missing_value',
383 & NF_FLOAT,1,missing_value)
384 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
385
386 string256='lat lon'
387 STATUS=NF_PUT_ATT_TEXT(NC_ID,BATHY_ID,'associate',
388 & LEN_TRIM(string256),string256)
389 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
390
391 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
392 string256='Region Mask'
393 STATUS=NF_PUT_ATT_TEXT(NC_ID,REG_MASK_ID,'long_name',
394 & LEN_TRIM(string256),string256)
395 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
396
397 string256='dimensionless'
398 STATUS=NF_PUT_ATT_TEXT(NC_ID,REG_MASK_ID,'units',
399 & LEN_TRIM(string256),string256)
400 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
401
402 STATUS=NF_PUT_ATT_REAL(NC_ID,REG_MASK_ID,'missing_value',
403 & NF_FLOAT,1,missing_value)
404 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
405
406 string256='lat lon dye'
407 STATUS=NF_PUT_ATT_TEXT(NC_ID,REG_MASK_ID,'associate',
408 & LEN_TRIM(string256),string256)
409 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
410
411 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
412
413 string256='Region Area'
414 STATUS=NF_PUT_ATT_TEXT(NC_ID,REG_AREA_ID,'long_name',
415 & LEN_TRIM(string256),string256)
416 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
417
418 string256='m^2'
419 STATUS=NF_PUT_ATT_TEXT(NC_ID,REG_AREA_ID,'units',
420 & LEN_TRIM(string256),string256)
421 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
422
423 STATUS=NF_PUT_ATT_REAL(NC_ID,REG_AREA_ID,'missing_value',
424 & NF_FLOAT,1,missing_value)
425 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
426
427 string256='dye'
428 STATUS=NF_PUT_ATT_TEXT(NC_ID,REG_AREA_ID,'associate',
429 & LEN_TRIM(string256),string256)
430 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
431
432 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
433
434 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
435 ! End of define mode
436 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
437 STATUS=NF_ENDDEF(NC_ID)
438 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
439
440 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
441 ! Write data to file
442 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
443 STATUS=NF_PUT_VAR_REAL(NC_ID,LON_ID,lon)
444 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
445
446 STATUS=NF_PUT_VAR_REAL(NC_ID,BOUNDS_LON_ID,bounds_lon)
447 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
448
449 STATUS=NF_PUT_VAR_REAL(NC_ID,LAT_ID,lat)
450 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
451
452 STATUS=NF_PUT_VAR_REAL(NC_ID,BOUNDS_LAT_ID,bounds_lat)
453 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
454
455 STATUS=NF_PUT_VAR_REAL(NC_ID,DEPTH_ID,depth)
456 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
457
458 STATUS=NF_PUT_VAR_REAL(NC_ID,BOUNDS_DEPTH_ID,bounds_depth)
459 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
460
461 STATUS=NF_PUT_VAR_REAL(NC_ID,MASK_ID,MASK)
462 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
463
464 STATUS=NF_PUT_VAR_REAL(NC_ID,AREA_ID,AREA)
465
466 STATUS=NF_PUT_VAR_REAL(NC_ID,BATHY_ID,BATHY)
467 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
468
469 STATUS=NF_PUT_VAR_REAL(NC_ID,REG_MASK_ID,REGION_MASK)
470 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
471
472 STATUS=NF_PUT_VAR_REAL(NC_ID,REG_AREA_ID,REGION_AREA)
473 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
474
475
476 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
477 ! Close the NetCDF file
478 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
479 STATUS=NF_CLOSE(NC_ID)
480 IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS)
481
482 END

  ViewVC Help
Powered by ViewVC 1.1.22