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

Annotation 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 - (hide 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 dimitri 1.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