/[MITgcm]/MITgcm/pkg/mnc/mnc_file.F
ViewVC logotype

Contents of /MITgcm/pkg/mnc/mnc_file.F

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


Revision 1.1 - (show annotations) (download)
Mon Jan 5 06:20:07 2004 UTC (20 years, 5 months ago) by edhill
Branch: MAIN
 o initial check-in of notes and in-progress mnc package

1 C $Header: $
2 C $Name: $
3
4 #include "MNC_OPTIONS.h"
5
6 C==================================================================
7
8 SUBROUTINE MNC_FILE_OPEN(
9 I myThid,
10 I fname,
11 I itype )
12
13 implicit none
14 #include "netcdf.inc"
15 #include "mnc_common.h"
16 #include "EEPARAMS.h"
17
18 C Arguments
19 integer myThid
20 character*(*) fname
21 integer itype
22 C itype => [ 0=new | 1=append ]
23
24 C Local Variables
25 integer i, err, fid, ind
26 character*(MNC_MAX_CHAR) aname
27 character*(MAX_LEN_MBUF) msgbuf
28
29 C Is the file already open?
30 CALL MNC_GET_IND(myThid, MNC_MAX_ID, fname, mnc_f_names, ind)
31 IF ( ind .GT. 0 ) THEN
32 write(msgbuf,'(3a)') 'MNC_FILE_OPEN ERROR: ''', fname,
33 & ''' is already open -- cannot open twice'
34 CALL print_error( msgbuf, mythid )
35 stop 'ABNORMAL END: package MNC'
36 ENDIF
37
38 IF ( itype .EQ. 0 ) THEN
39 C Create new file
40 err = NF_CREATE( fname, NF_CLOBBER, fid )
41 IF (err .NE. NF_NOERR) CALL MNC_HANDLE_ERR(myThid, err)
42 ELSEIF ( itype .EQ. 1 ) THEN
43 C Append to existing file
44 err = NF_OPEN( fname, NF_WRITE, fid )
45 IF (err .NE. NF_NOERR) CALL MNC_HANDLE_ERR(myThid, err)
46 ELSE
47 C Error
48 write(msgbuf,'(a,i5,a)') 'MNC_FILE_OPEN ERROR: ''', itype,
49 & ''' is not defined--should be: [0|1]'
50 ENDIF
51
52 CALL MNC_GET_NEXT_EMPTY_IND(myThid, MNC_MAX_ID, mnc_f_names, ind)
53 mnc_f_names(ind) = fname
54 mnc_f_info(ind,1) = 1
55 mnc_f_info(ind,1) = fid
56
57 END
58
59 C==================================================================
60
61 SUBROUTINE MNC_FILE_ADD_ATTR_STR(
62 I myThid,
63 I fname,
64 I atname,
65 I sval )
66
67 implicit none
68 #include "netcdf.inc"
69 #include "mnc_common.h"
70 #include "EEPARAMS.h"
71
72 C Arguments
73 integer myThid
74 character*(*) fname
75 character*(*) atname
76 character*(*) sval
77
78 C Functions
79 integer ILNBLNK
80
81 C Local Variables
82 integer i, err, fid, ind, n1,n2
83 character*(MNC_MAX_CHAR) s1, s2
84 character*(MAX_LEN_MBUF) msgbuf
85
86 C Is the file open?
87 CALL MNC_GET_IND(myThid, MNC_MAX_ID, fname, mnc_f_names, ind)
88 IF ( ind .GT. 0 ) THEN
89 write(msgbuf,'(3a)') 'MNC ERROR: file ''',
90 & fname, ''' must be opened first'
91 CALL print_error( msgbuf, mythid )
92 stop 'ABNORMAL END: S/R MNC_FILE_ADD_ATTR_STR'
93 ENDIF
94 fid = mnc_f_info(ind,2)
95
96 C Enter define mode
97 err = NF_REDEF(fid)
98 IF (err .NE. NF_NOERR) CALL MNC_HANDLE_ERR(myThid, err)
99
100 s1(1:MNC_MAX_CHAR) = mnc_blank_name(1:MNC_MAX_CHAR)
101 s2(1:MNC_MAX_CHAR) = mnc_blank_name(1:MNC_MAX_CHAR)
102 n1 = ILNBLNK(atname)
103 n2 = ILNBLNK(sval)
104 s1(1:n1) = atname(1:n1)
105 s2(1:n2) = sval(1:n2)
106
107 err = NF_PUT_ATT_TEXT(fid, NF_GLOBAL, s1, n2, s2)
108 IF (err .NE. NF_NOERR) CALL MNC_HANDLE_ERR(myThid, err)
109
110 END
111
112 C==================================================================
113
114 SUBROUTINE MNC_FILE_ADD_ATTR_INT(
115 I myThid,
116 I fname,
117 I atname,
118 I ival )
119
120 implicit none
121 #include "netcdf.inc"
122 #include "mnc_common.h"
123 #include "EEPARAMS.h"
124
125 C Arguments
126 integer myThid
127 character*(*) fname, atname
128 integer ival
129
130 C Functions
131 integer ILNBLNK
132
133 C Local Variables
134 integer i, err, fid, ind, n1,n2
135 character*(MNC_MAX_CHAR) s1
136 character*(MAX_LEN_MBUF) msgbuf
137
138 C Is the file open?
139 CALL MNC_GET_IND(myThid, MNC_MAX_ID, fname, mnc_f_names, ind)
140 IF ( ind .GT. 0 ) THEN
141 write(msgbuf,'(3a)') 'MNC ERROR: file ''',
142 & fname, ''' must be opened first'
143 CALL print_error( msgbuf, mythid )
144 stop 'ABNORMAL END: S/R MNC_FILE_ADD_ATTR_INT'
145 ENDIF
146 fid = mnc_f_info(ind,2)
147
148 C Enter define mode
149 err = NF_REDEF(fid)
150 IF (err .NE. NF_NOERR) CALL MNC_HANDLE_ERR(myThid, err)
151
152 s1(1:MNC_MAX_CHAR) = mnc_blank_name(1:MNC_MAX_CHAR)
153 n1 = ILNBLNK(atname)
154 s1(1:n1) = atname(1:n1)
155
156 err = NF_PUT_ATT_INT(fid, NF_GLOBAL, s1, NF_INT, ival)
157 IF (err .NE. NF_NOERR) CALL MNC_HANDLE_ERR(myThid, err)
158
159 END
160
161 C==================================================================
162
163 SUBROUTINE MNC_FILE_ADD_ATTR_DBL(
164 I myThid,
165 I fname,
166 I atname,
167 I dval )
168
169 #include "netcdf.inc"
170 #include "mnc_common.h"
171 #include "EEPARAMS.h"
172
173 C Arguments
174 integer myThid
175 character*(*) fname, atname
176 _RL dval
177
178 C Functions
179 integer ILNBLNK
180
181 C Local Variables
182 integer i, err, fid, ind, n1,n2
183 character*(MNC_MAX_CHAR) s1
184 character*(MAX_LEN_MBUF) msgbuf
185
186
187 C Is the file open?
188 CALL MNC_GET_IND(myThid, MNC_MAX_ID, fname, mnc_f_names, ind)
189 IF ( ind .GT. 0 ) THEN
190 write(msgbuf,'(3a)') 'MNC ERROR: file ''',
191 & fname, ''' must be opened first'
192 CALL print_error( msgbuf, mythid )
193 stop 'ABNORMAL END: S/R MNC_FILE_ADD_ATTR_INT'
194 ENDIF
195 fid = mnc_fids(ind,2)
196
197 C Enter define mode
198 err = NF_REDEF(fid)
199 IF (err .NE. NF_NOERR) CALL MNC_HANDLE_ERR(myThid, err)
200
201 s1(1:MNC_MAX_CHAR) = mnc_blank_name(1:MNC_MAX_CHAR)
202 n1 = ILNBLNK(atname)
203 s1(1:n1) = atname(1:n1)
204
205 err = NF_PUT_ATT_DOUBLE(fid, NF_GLOBAL, s1, NF_DOUBLE, ival)
206 IF (err .NE. NF_NOERR) CALL MNC_HANDLE_ERR(myThid, err)
207
208 END
209

  ViewVC Help
Powered by ViewVC 1.1.22