File indexing completed on 2018-03-02 18:42:01 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
4de8f8c098 Ed H*0001 #include "MNC_OPTIONS.h"
0002
e9b72f2bd9 Ed H*0003
e6bb5b2cc3 Ed H*0004
1b5fb69d21 Ed H*0005
4de8f8c098 Ed H*0006
1b5fb69d21 Ed H*0007
a27dc5c859 Ed H*0008 SUBROUTINE MNC_FILE_CREATE(
3f2ea2a4ed Ed H*0009 I fname,
0010 I myThid )
a27dc5c859 Ed H*0011
1b5fb69d21 Ed H*0012
0013
0014
0015
a27dc5c859 Ed H*0016 implicit none
0017
1b5fb69d21 Ed H*0018
a27dc5c859 Ed H*0019 integer myThid
0020 character*(*) fname
e6bb5b2cc3 Ed H*0021
a27dc5c859 Ed H*0022
1b5fb69d21 Ed H*0023
b11e5981be Ed H*0024 integer indf
0025
3f2ea2a4ed Ed H*0026 CALL MNC_FILE_OPEN(fname, 0, indf, myThid)
a27dc5c859 Ed H*0027
0028 RETURN
0029 END
0030
e9b72f2bd9 Ed H*0031
e6bb5b2cc3 Ed H*0032
1b5fb69d21 Ed H*0033
a27dc5c859 Ed H*0034
1b5fb69d21 Ed H*0035
4de8f8c098 Ed H*0036 SUBROUTINE MNC_FILE_OPEN(
0037 I fname,
b11e5981be Ed H*0038 I itype,
3f2ea2a4ed Ed H*0039 O indf,
0040 I myThid )
4de8f8c098 Ed H*0041
1b5fb69d21 Ed H*0042
0043
0044
0045
4de8f8c098 Ed H*0046 implicit none
07155994b8 Mart*0047 #include "MNC_COMMON.h"
4de8f8c098 Ed H*0048 #include "EEPARAMS.h"
853ee6565e Jean*0049 #include "netcdf.inc"
4de8f8c098 Ed H*0050
1b5fb69d21 Ed H*0051
b11e5981be Ed H*0052 integer myThid,indf
4de8f8c098 Ed H*0053 character*(*) fname
0054 integer itype
a906dd2a24 Ed H*0055
e6bb5b2cc3 Ed H*0056
4de8f8c098 Ed H*0057
1b5fb69d21 Ed H*0058
a906dd2a24 Ed H*0059 integer n, err, fid, nf
4de8f8c098 Ed H*0060 character*(MAX_LEN_MBUF) msgbuf
e6bb5b2cc3 Ed H*0061
1b5fb69d21 Ed H*0062
0063 integer ILNBLNK
4de8f8c098 Ed H*0064
0065
a906dd2a24 Ed H*0066 nf = ILNBLNK(fname)
ef92f00980 Ed H*0067 CALL MNC_GET_IND(MNC_MAX_FID, fname,mnc_f_names,indf,myThid)
b11e5981be Ed H*0068 IF (indf .GT. 0) THEN
a906dd2a24 Ed H*0069 write(msgbuf,'(3a)') 'MNC_FILE_OPEN ERROR: ''', fname(1:nf),
4de8f8c098 Ed H*0070 & ''' is already open -- cannot open twice'
b11e5981be Ed H*0071 CALL print_error(msgbuf, mythid)
4de8f8c098 Ed H*0072 stop 'ABNORMAL END: package MNC'
0073 ENDIF
0074
16a9213e57 Ed H*0075 write(msgbuf,'(3a)') 'opening ''', fname(1:nf), ''''
b11e5981be Ed H*0076 IF (itype .EQ. 0) THEN
75987013ac Ed H*0077
4de8f8c098 Ed H*0078
75987013ac Ed H*0079 err = NF_CREATE(fname, NF_CLOBBER, fid)
3f2ea2a4ed Ed H*0080 CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
75987013ac Ed H*0081
b11e5981be Ed H*0082 ELSEIF (itype .EQ. 1) THEN
75987013ac Ed H*0083
4de8f8c098 Ed H*0084
3f2ea2a4ed Ed H*0085 CALL MNC_FILE_READALL(fname, myThid)
75987013ac Ed H*0086
4de8f8c098 Ed H*0087 ELSE
0088
0089 write(msgbuf,'(a,i5,a)') 'MNC_FILE_OPEN ERROR: ''', itype,
0090 & ''' is not defined--should be: [0|1]'
a27dc5c859 Ed H*0091 CALL print_error( msgbuf, mythid )
0092 stop 'ABNORMAL END: S/R MNC_FILE_ADD_ATTR_STR'
4de8f8c098 Ed H*0093 ENDIF
0094
ef92f00980 Ed H*0095 CALL MNC_GET_NEXT_EMPTY_IND(MNC_MAX_FID, mnc_f_names,
9705a0d5c6 Ed H*0096 & 'mnc_f_names', indf, myThid)
a27dc5c859 Ed H*0097 n = ILNBLNK(fname)
b11e5981be Ed H*0098 mnc_f_names(indf)(1:n) = fname(1:n)
0099 mnc_f_info(indf,1) = 1
0100 mnc_f_info(indf,2) = fid
0101 mnc_f_info(indf,3) = 0
0102 mnc_fv_ids(indf,1) = 0
0103 mnc_f_alld(indf,1) = 0
4de8f8c098 Ed H*0104
a27dc5c859 Ed H*0105 RETURN
4de8f8c098 Ed H*0106 END
0107
e9b72f2bd9 Ed H*0108
e6bb5b2cc3 Ed H*0109
1b5fb69d21 Ed H*0110
4de8f8c098 Ed H*0111
1b5fb69d21 Ed H*0112
4de8f8c098 Ed H*0113 SUBROUTINE MNC_FILE_ADD_ATTR_STR(
0114 I fname,
0115 I atname,
3f2ea2a4ed Ed H*0116 I sval,
0117 I myThid )
4de8f8c098 Ed H*0118
1b5fb69d21 Ed H*0119
0120
0121
0122
4de8f8c098 Ed H*0123 implicit none
1b5fb69d21 Ed H*0124
0125
dad4143247 Ed H*0126 integer myThid
a7ffe10af7 Ed H*0127 character*(*) fname, atname, sval
1b5fb69d21 Ed H*0128
169a7aa8bd Jean*0129 real*4 sZero
0130 sZero = 0.
4de8f8c098 Ed H*0131
3f2ea2a4ed Ed H*0132 CALL MNC_FILE_ADD_ATTR_ANY(fname,atname, 1,
169a7aa8bd Jean*0133 & sval, 0, 0.0D0, sZero, 0, myThid )
a7ffe10af7 Ed H*0134 RETURN
0135 END
4de8f8c098 Ed H*0136
e9b72f2bd9 Ed H*0137
e6bb5b2cc3 Ed H*0138
1b5fb69d21 Ed H*0139
4de8f8c098 Ed H*0140
1b5fb69d21 Ed H*0141
a7ffe10af7 Ed H*0142 SUBROUTINE MNC_FILE_ADD_ATTR_DBL(
0143 I fname,
0144 I atname,
0145 I len,
3f2ea2a4ed Ed H*0146 I dval,
0147 I myThid )
4de8f8c098 Ed H*0148
1b5fb69d21 Ed H*0149
0150
0151
0152
a7ffe10af7 Ed H*0153 implicit none
1b5fb69d21 Ed H*0154
0155
a7ffe10af7 Ed H*0156 integer myThid, len
0157 character*(*) fname, atname
dad4143247 Ed H*0158 REAL*8 dval
1b5fb69d21 Ed H*0159
169a7aa8bd Jean*0160 real*4 sZero
0161 sZero = 0.
4de8f8c098 Ed H*0162
3f2ea2a4ed Ed H*0163 CALL MNC_FILE_ADD_ATTR_ANY(fname,atname, 2,
169a7aa8bd Jean*0164 & ' ', len, dval, sZero, 0, myThid )
a27dc5c859 Ed H*0165 RETURN
4de8f8c098 Ed H*0166 END
0167
e9b72f2bd9 Ed H*0168
e6bb5b2cc3 Ed H*0169
1b5fb69d21 Ed H*0170
4de8f8c098 Ed H*0171
1b5fb69d21 Ed H*0172
a7ffe10af7 Ed H*0173 SUBROUTINE MNC_FILE_ADD_ATTR_REAL(
4de8f8c098 Ed H*0174 I fname,
0175 I atname,
a7ffe10af7 Ed H*0176 I len,
3f2ea2a4ed Ed H*0177 I rval,
0178 I myThid )
4de8f8c098 Ed H*0179
1b5fb69d21 Ed H*0180
0181
0182
0183
4de8f8c098 Ed H*0184 implicit none
1b5fb69d21 Ed H*0185
0186
a7ffe10af7 Ed H*0187 integer myThid, len
4de8f8c098 Ed H*0188 character*(*) fname, atname
dad4143247 Ed H*0189 REAL*4 rval
1b5fb69d21 Ed H*0190
4de8f8c098 Ed H*0191
3f2ea2a4ed Ed H*0192 CALL MNC_FILE_ADD_ATTR_ANY(fname,atname, 3,
0193 & ' ', len, 0.0D0, rval, 0, myThid )
a7ffe10af7 Ed H*0194 RETURN
0195 END
4de8f8c098 Ed H*0196
e9b72f2bd9 Ed H*0197
e6bb5b2cc3 Ed H*0198
1b5fb69d21 Ed H*0199
4de8f8c098 Ed H*0200
1b5fb69d21 Ed H*0201
a7ffe10af7 Ed H*0202 SUBROUTINE MNC_FILE_ADD_ATTR_INT(
0203 I fname,
0204 I atname,
0205 I len,
3f2ea2a4ed Ed H*0206 I ival,
0207 I myThid )
4de8f8c098 Ed H*0208
1b5fb69d21 Ed H*0209
0210
0211
0212
a7ffe10af7 Ed H*0213 implicit none
1b5fb69d21 Ed H*0214
0215
a7ffe10af7 Ed H*0216 integer myThid, len, ival
0217 character*(*) fname, atname
1b5fb69d21 Ed H*0218
169a7aa8bd Jean*0219 real*4 sZero
0220 sZero = 0.
4de8f8c098 Ed H*0221
3f2ea2a4ed Ed H*0222 CALL MNC_FILE_ADD_ATTR_ANY(fname,atname, 4,
169a7aa8bd Jean*0223 & ' ', len, 0.0D0, sZero, ival, myThid )
a27dc5c859 Ed H*0224 RETURN
4de8f8c098 Ed H*0225 END
0226
e9b72f2bd9 Ed H*0227
e6bb5b2cc3 Ed H*0228
1b5fb69d21 Ed H*0229
4de8f8c098 Ed H*0230
1b5fb69d21 Ed H*0231
a7ffe10af7 Ed H*0232 SUBROUTINE MNC_FILE_ADD_ATTR_ANY(
4de8f8c098 Ed H*0233 I fname,
0234 I atname,
3f2ea2a4ed Ed H*0235 I atype, sv, len,dv,rv,iv,
0236 I myThid )
4de8f8c098 Ed H*0237
1b5fb69d21 Ed H*0238
0239
0240
0241
a7ffe10af7 Ed H*0242 implicit none
07155994b8 Mart*0243 #include "MNC_COMMON.h"
4de8f8c098 Ed H*0244 #include "EEPARAMS.h"
853ee6565e Jean*0245 #include "netcdf.inc"
4de8f8c098 Ed H*0246
1b5fb69d21 Ed H*0247
a7ffe10af7 Ed H*0248 integer myThid, atype, len, iv
0249 character*(*) fname, atname, sv
dad4143247 Ed H*0250 REAL*8 dv
0251 REAL*4 rv
e6bb5b2cc3 Ed H*0252
0253
1b5fb69d21 Ed H*0254
16a9213e57 Ed H*0255 integer n, nf, err, fid, ind, n1, lens
4de8f8c098 Ed H*0256 character*(MNC_MAX_CHAR) s1
0257 character*(MAX_LEN_MBUF) msgbuf
e6bb5b2cc3 Ed H*0258
1b5fb69d21 Ed H*0259
0260 integer ILNBLNK
0261
907e360dab Ed H*0262
ef92f00980 Ed H*0263 CALL MNC_GET_IND(MNC_MAX_FID, fname, mnc_f_names, ind, myThid)
907e360dab Ed H*0264 IF (ind .LT. 0) THEN
16a9213e57 Ed H*0265 nf = ILNBLNK( fname )
4de8f8c098 Ed H*0266 write(msgbuf,'(3a)') 'MNC ERROR: file ''',
16a9213e57 Ed H*0267 & fname(1:nf), ''' must be opened first'
4de8f8c098 Ed H*0268 CALL print_error( msgbuf, mythid )
0269 stop 'ABNORMAL END: S/R MNC_FILE_ADD_ATTR_INT'
0270 ENDIF
d2129fb7fc Ed H*0271 fid = mnc_f_info(ind,2)
4de8f8c098 Ed H*0272
0273
3f2ea2a4ed Ed H*0274 CALL MNC_FILE_REDEF(fname, myThid)
4de8f8c098 Ed H*0275
0276 s1(1:MNC_MAX_CHAR) = mnc_blank_name(1:MNC_MAX_CHAR)
0277 n1 = ILNBLNK(atname)
0278 s1(1:n1) = atname(1:n1)
0279
a7ffe10af7 Ed H*0280 IF (atype .EQ. 1) THEN
0281 lens = ILNBLNK(sv)
0282 err = NF_PUT_ATT_TEXT(fid, NF_GLOBAL, s1, lens, sv)
3f2ea2a4ed Ed H*0283 CALL MNC_HANDLE_ERR(err,
0284 & 'adding TEXT attribute in S/R MNC_FILE_ADD_ATTR_ANY',
0285 & myThid)
a7ffe10af7 Ed H*0286 ELSEIF (atype .EQ. 2) THEN
0287 err = NF_PUT_ATT_DOUBLE(fid, NF_GLOBAL, s1, NF_DOUBLE, len, dv)
3f2ea2a4ed Ed H*0288 CALL MNC_HANDLE_ERR(err,
0289 & 'adding DOUBLE attribute in S/R MNC_FILE_ADD_ATTR_ANY',
0290 & myThid)
a7ffe10af7 Ed H*0291 ELSEIF (atype .EQ. 3) THEN
0292 err = NF_PUT_ATT_REAL(fid, NF_GLOBAL, s1, NF_FLOAT, len, rv)
3f2ea2a4ed Ed H*0293 CALL MNC_HANDLE_ERR(err,
0294 & 'adding REAL attribute in S/R MNC_FILE_ADD_ATTR_ANY',
0295 & myThid)
a7ffe10af7 Ed H*0296 ELSEIF (atype .EQ. 4) THEN
0297 err = NF_PUT_ATT_INT(fid, NF_GLOBAL, s1, NF_INT, len, iv)
3f2ea2a4ed Ed H*0298 CALL MNC_HANDLE_ERR(err,
0299 & 'adding INT attribute in S/R MNC_FILE_ADD_ATTR_ANY',
0300 & myThid)
a7ffe10af7 Ed H*0301 ELSE
0302 write(msgbuf,'(a,i10,a)') 'MNC ERROR: atype = ''', atype,
0303 & ''' is invalid--must be: [1-4]'
0304 n = ILNBLNK(msgbuf)
0305 CALL print_error(msgbuf(1:n), mythid)
0306 stop 'ABNORMAL END: S/R MNC_VAR_ADD_ATTR_ANY'
0307 ENDIF
a27dc5c859 Ed H*0308
0309 RETURN
0310 END
0311
e9b72f2bd9 Ed H*0312
e6bb5b2cc3 Ed H*0313
1b5fb69d21 Ed H*0314
a27dc5c859 Ed H*0315
1b5fb69d21 Ed H*0316
a27dc5c859 Ed H*0317 SUBROUTINE MNC_FILE_CLOSE(
3f2ea2a4ed Ed H*0318 I fname,
0319 I myThid )
a27dc5c859 Ed H*0320
1b5fb69d21 Ed H*0321
0322
0323
0324
a27dc5c859 Ed H*0325 implicit none
07155994b8 Mart*0326 #include "MNC_COMMON.h"
a27dc5c859 Ed H*0327 #include "EEPARAMS.h"
853ee6565e Jean*0328 #include "netcdf.inc"
a27dc5c859 Ed H*0329
1b5fb69d21 Ed H*0330
a27dc5c859 Ed H*0331 integer myThid
0332 character*(*) fname
e6bb5b2cc3 Ed H*0333
a27dc5c859 Ed H*0334
1b5fb69d21 Ed H*0335
a906dd2a24 Ed H*0336 integer i,j,k,n, err, fid, indf, nf
a27dc5c859 Ed H*0337 character*(MAX_LEN_MBUF) msgbuf
e6bb5b2cc3 Ed H*0338
1b5fb69d21 Ed H*0339
0340 integer ILNBLNK
a27dc5c859 Ed H*0341
a906dd2a24 Ed H*0342 nf = ILNBLNK(fname)
0343
a27dc5c859 Ed H*0344
ef92f00980 Ed H*0345 CALL MNC_GET_IND(MNC_MAX_FID, fname, mnc_f_names, indf, myThid)
a906dd2a24 Ed H*0346 IF (indf .LT. 1) THEN
0347 write(msgbuf,'(3a)') 'MNC Warning: file ''', fname(1:nf),
a27dc5c859 Ed H*0348 & ''' is already closed'
0349 CALL print_error( msgbuf, mythid )
0350 RETURN
0351 ENDIF
a906dd2a24 Ed H*0352 fid = mnc_f_info(indf,2)
a27dc5c859 Ed H*0353 err = NF_CLOSE(fid)
a906dd2a24 Ed H*0354 write(msgbuf,'(3a)') ' cannot close file ''', fname(1:nf), ''''
3f2ea2a4ed Ed H*0355 CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
a27dc5c859 Ed H*0356
75987013ac Ed H*0357
0358
a906dd2a24 Ed H*0359 n = mnc_fv_ids(indf,1)
a27dc5c859 Ed H*0360 IF (n .GE. 1) THEN
0361 DO i = 1,n
75987013ac Ed H*0362 j = 2 + 3*(i - 1)
a906dd2a24 Ed H*0363 k = mnc_fv_ids(indf,j)
a27dc5c859 Ed H*0364 mnc_v_names(k)(1:MNC_MAX_CHAR)=mnc_blank_name(1:MNC_MAX_CHAR)
0365 ENDDO
a906dd2a24 Ed H*0366 DO i = 1,MNC_MAX_INFO
0367 mnc_fv_ids(indf,i) = 0
75987013ac Ed H*0368 ENDDO
a27dc5c859 Ed H*0369 ENDIF
75987013ac Ed H*0370
a906dd2a24 Ed H*0371 n = mnc_f_alld(indf,1)
0372 mnc_f_alld(indf,1) = 0
dad4143247 Ed H*0373 DO i = 1,n
a906dd2a24 Ed H*0374 j = mnc_f_alld(indf,i+1)
75987013ac Ed H*0375 mnc_d_ids(j) = 0
0376 mnc_d_size(j) = 0
dad4143247 Ed H*0377 mnc_d_names(j)(1:MNC_MAX_CHAR) = mnc_blank_name(1:MNC_MAX_CHAR)
a906dd2a24 Ed H*0378 mnc_f_alld(indf,i+1) = 0
dad4143247 Ed H*0379 ENDDO
75987013ac Ed H*0380
a906dd2a24 Ed H*0381 n = mnc_f_info(indf,3)
75987013ac Ed H*0382 IF (n .GT. 0) THEN
0383 DO i = 1,n
0384 j = 4 + 3*(i - 1)
a906dd2a24 Ed H*0385 k = mnc_f_info(indf,j)
75987013ac Ed H*0386 mnc_g_names(k)(1:MNC_MAX_CHAR)=mnc_blank_name(1:MNC_MAX_CHAR)
0387 ENDDO
0388 DO i = 1,MNC_MAX_INFO
a906dd2a24 Ed H*0389 mnc_fd_ind(indf,i) = 0
0390 mnc_f_info(indf,i) = 0
75987013ac Ed H*0391 ENDDO
0392 ENDIF
0393
ef92f00980 Ed H*0394 DO i = 1,MNC_MAX_PATH
0395 mnc_f_names(indf)(i:i) = ' '
0396 ENDDO
4de8f8c098 Ed H*0397
a27dc5c859 Ed H*0398 RETURN
4de8f8c098 Ed H*0399 END
0400
e9b72f2bd9 Ed H*0401
e6bb5b2cc3 Ed H*0402
1b5fb69d21 Ed H*0403
907e360dab Ed H*0404
1b5fb69d21 Ed H*0405
251b9a88c9 Ed H*0406 SUBROUTINE MNC_FILE_CLOSE_ALL_MATCHING(
3f2ea2a4ed Ed H*0407 I fname,
0408 I myThid )
251b9a88c9 Ed H*0409
1b5fb69d21 Ed H*0410
0411
0412
0413
251b9a88c9 Ed H*0414 implicit none
07155994b8 Mart*0415 #include "MNC_COMMON.h"
251b9a88c9 Ed H*0416 #include "EEPARAMS.h"
853ee6565e Jean*0417 #include "netcdf.inc"
251b9a88c9 Ed H*0418
1b5fb69d21 Ed H*0419
251b9a88c9 Ed H*0420 integer myThid
0421 character*(*) fname
e6bb5b2cc3 Ed H*0422
251b9a88c9 Ed H*0423
1b5fb69d21 Ed H*0424
0425 integer i,n
e6bb5b2cc3 Ed H*0426
251b9a88c9 Ed H*0427
0428 integer ILNBLNK
0429
0430 n = ILNBLNK(fname)
ef92f00980 Ed H*0431 DO i = 1,MNC_MAX_FID
251b9a88c9 Ed H*0432
0433
0434 IF (fname(1:n) .EQ. mnc_f_names(i)(1:n)) THEN
3f2ea2a4ed Ed H*0435 CALL MNC_FILE_CLOSE(mnc_f_names(i), myThid)
251b9a88c9 Ed H*0436 ENDIF
0437
0438 ENDDO
0439
0440 RETURN
0441 END
0442
e9b72f2bd9 Ed H*0443
e6bb5b2cc3 Ed H*0444
1b5fb69d21 Ed H*0445
251b9a88c9 Ed H*0446
1b5fb69d21 Ed H*0447
251b9a88c9 Ed H*0448 SUBROUTINE MNC_FILE_CLOSE_ALL(
0449 I myThid )
0450
1b5fb69d21 Ed H*0451
b03b61c263 Ed H*0452
1b5fb69d21 Ed H*0453
0454
251b9a88c9 Ed H*0455 implicit none
07155994b8 Mart*0456 #include "MNC_COMMON.h"
251b9a88c9 Ed H*0457 #include "EEPARAMS.h"
853ee6565e Jean*0458 #include "netcdf.inc"
251b9a88c9 Ed H*0459
1b5fb69d21 Ed H*0460
251b9a88c9 Ed H*0461 integer myThid
e6bb5b2cc3 Ed H*0462
251b9a88c9 Ed H*0463
1b5fb69d21 Ed H*0464
251b9a88c9 Ed H*0465 integer i
ef92f00980 Ed H*0466 character*(MNC_MAX_PATH) bpath
0467
0468 DO i = 1,MNC_MAX_PATH
0469 bpath(i:i) = ' '
0470 ENDDO
251b9a88c9 Ed H*0471
ef92f00980 Ed H*0472 DO i = 1,MNC_MAX_FID
251b9a88c9 Ed H*0473
0474
ef92f00980 Ed H*0475 IF (mnc_f_names(i)(1:MNC_MAX_PATH)
0476 & .NE. bpath(1:MNC_MAX_PATH)) THEN
3f2ea2a4ed Ed H*0477 CALL MNC_FILE_CLOSE(mnc_f_names(i), myThid)
251b9a88c9 Ed H*0478 ENDIF
0479
0480 ENDDO
0481
0482 RETURN
0483 END
0484
e9b72f2bd9 Ed H*0485
e6bb5b2cc3 Ed H*0486
1b5fb69d21 Ed H*0487
251b9a88c9 Ed H*0488
1b5fb69d21 Ed H*0489
907e360dab Ed H*0490 SUBROUTINE MNC_FILE_REDEF(
3f2ea2a4ed Ed H*0491 I fname,
0492 I myThid )
907e360dab Ed H*0493
1b5fb69d21 Ed H*0494
0495
0496
0497
907e360dab Ed H*0498 implicit none
07155994b8 Mart*0499 #include "MNC_COMMON.h"
907e360dab Ed H*0500 #include "EEPARAMS.h"
853ee6565e Jean*0501 #include "netcdf.inc"
907e360dab Ed H*0502
1b5fb69d21 Ed H*0503
907e360dab Ed H*0504 integer myThid
0505 character*(*) fname
e6bb5b2cc3 Ed H*0506
907e360dab Ed H*0507
1b5fb69d21 Ed H*0508
dad4143247 Ed H*0509 integer ind, fid, def, err, n
907e360dab Ed H*0510 character*(MAX_LEN_MBUF) msgbuf
e6bb5b2cc3 Ed H*0511
1b5fb69d21 Ed H*0512
0513 integer ILNBLNK
907e360dab Ed H*0514
0515
ef92f00980 Ed H*0516 CALL MNC_GET_IND(MNC_MAX_FID, fname, mnc_f_names, ind, myThid)
907e360dab Ed H*0517 IF (ind .LT. 0) THEN
dad4143247 Ed H*0518 n = ILNBLNK(fname)
907e360dab Ed H*0519 write(msgbuf,'(3a)') 'MNC ERROR: file ''',
dad4143247 Ed H*0520 & fname(1:n), ''' must be opened first'
907e360dab Ed H*0521 CALL print_error( msgbuf, mythid )
0522 stop 'ABNORMAL END: S/R MNC_FILE_REDEF'
0523 ENDIF
0524 def = mnc_f_info(ind,1)
0525 fid = mnc_f_info(ind,2)
0526
0527 IF (def .NE. 1) THEN
0528
0529 err = NF_REDEF(fid)
3f2ea2a4ed Ed H*0530 CALL MNC_HANDLE_ERR(err,
0531 & 'entering define mode in S/R MNC_FILE_REDEF', myThid)
907e360dab Ed H*0532 mnc_f_info(ind,1) = 1
0533 ENDIF
0534
0535 RETURN
0536 END
0537
e9b72f2bd9 Ed H*0538
e6bb5b2cc3 Ed H*0539
1b5fb69d21 Ed H*0540
907e360dab Ed H*0541
1b5fb69d21 Ed H*0542
907e360dab Ed H*0543 SUBROUTINE MNC_FILE_ENDDEF(
3f2ea2a4ed Ed H*0544 I fname,
0545 I myThid )
907e360dab Ed H*0546
1b5fb69d21 Ed H*0547
0548
0549
0550
907e360dab Ed H*0551 implicit none
07155994b8 Mart*0552 #include "MNC_COMMON.h"
907e360dab Ed H*0553 #include "EEPARAMS.h"
853ee6565e Jean*0554 #include "netcdf.inc"
907e360dab Ed H*0555
1b5fb69d21 Ed H*0556
907e360dab Ed H*0557 integer myThid
0558 character*(*) fname
e6bb5b2cc3 Ed H*0559
907e360dab Ed H*0560
1b5fb69d21 Ed H*0561
dad4143247 Ed H*0562 integer ind, fid, def, err, n
907e360dab Ed H*0563 character*(MAX_LEN_MBUF) msgbuf
e6bb5b2cc3 Ed H*0564
1b5fb69d21 Ed H*0565
0566 integer ILNBLNK
907e360dab Ed H*0567
0568
ef92f00980 Ed H*0569 CALL MNC_GET_IND(MNC_MAX_FID, fname, mnc_f_names, ind, myThid)
907e360dab Ed H*0570 IF (ind .LT. 0) THEN
dad4143247 Ed H*0571 n = ILNBLNK(fname)
907e360dab Ed H*0572 write(msgbuf,'(3a)') 'MNC ERROR: file ''',
dad4143247 Ed H*0573 & fname(1:n), ''' must be opened first'
907e360dab Ed H*0574 CALL print_error( msgbuf, mythid )
0575 stop 'ABNORMAL END: S/R MNC_FILE_REDEF'
0576 ENDIF
0577 def = mnc_f_info(ind,1)
0578 fid = mnc_f_info(ind,2)
0579
0580 IF (def .NE. 2) THEN
0581
0582 err = NF_ENDDEF(fid)
3f2ea2a4ed Ed H*0583 CALL MNC_HANDLE_ERR(err,
0584 & 'ending define mode in S/R MNC_FILE_ENDDEF', myThid)
907e360dab Ed H*0585 mnc_f_info(ind,1) = 2
0586 ENDIF
0587
0588 RETURN
0589 END
0590
e9b72f2bd9 Ed H*0591
e6bb5b2cc3 Ed H*0592
e40d346a32 Ed H*0593
75987013ac Ed H*0594
e6bb5b2cc3 Ed H*0595
75987013ac Ed H*0596 SUBROUTINE MNC_FILE_READALL(
3f2ea2a4ed Ed H*0597 I fname,
0598 I myThid )
75987013ac Ed H*0599
e6bb5b2cc3 Ed H*0600
0601
0602
0603
75987013ac Ed H*0604 implicit none
0605 #include "EEPARAMS.h"
853ee6565e Jean*0606 #include "netcdf.inc"
75987013ac Ed H*0607
1b5fb69d21 Ed H*0608
75987013ac Ed H*0609 integer myThid
0610 character*(*) fname
e6bb5b2cc3 Ed H*0611
75987013ac Ed H*0612
0613
0614 integer IFNBLNK, ILNBLNK
0615
0616
b11e5981be Ed H*0617 integer ierr, nff,nlf, indf
3623ff8097 Ed H*0618 character*(MAX_LEN_MBUF) msgbuf
0619
0620 nff = IFNBLNK(fname)
0621 nlf = ILNBLNK(fname)
3f2ea2a4ed Ed H*0622 CALL MNC_FILE_TRY_READ(fname, ierr, indf, myThid)
3623ff8097 Ed H*0623 write(msgbuf,'(3a)') 'MNC ERROR: cannot open file ''',
0624 & fname(nff:nlf), ''' for read/write access'
3f2ea2a4ed Ed H*0625 CALL MNC_HANDLE_ERR(ierr, msgbuf, myThid)
3623ff8097 Ed H*0626
0627 RETURN
0628 END
0629
0630
e6bb5b2cc3 Ed H*0631
1b5fb69d21 Ed H*0632
3623ff8097 Ed H*0633
1b5fb69d21 Ed H*0634
3623ff8097 Ed H*0635 SUBROUTINE MNC_FILE_TRY_READ(
0636 I fname,
b11e5981be Ed H*0637 O ierr,
3f2ea2a4ed Ed H*0638 O indf,
0639 I myThid )
3623ff8097 Ed H*0640
1b5fb69d21 Ed H*0641
0642
0643
0644
3623ff8097 Ed H*0645 implicit none
07155994b8 Mart*0646 #include "MNC_COMMON.h"
3623ff8097 Ed H*0647 #include "EEPARAMS.h"
853ee6565e Jean*0648 #include "netcdf.inc"
3623ff8097 Ed H*0649
1b5fb69d21 Ed H*0650
b11e5981be Ed H*0651 integer myThid, ierr, indf
3623ff8097 Ed H*0652 character*(*) fname
0653
1b5fb69d21 Ed H*0654
75987013ac Ed H*0655 integer i,j,k, fid, err, ndim,nvar,ngat,unlimid
b11e5981be Ed H*0656 integer dlen, id, xtype, nat, nff,nlf, iv
75987013ac Ed H*0657 integer ndv, did, ns,ne, n1,n2, indg, indv
0658 character*(MAX_LEN_MBUF) msgbuf
0659 character*(NF_MAX_NAME) name
0660 integer idlist(NF_MAX_VAR_DIMS)
0661 character*(MNC_MAX_CHAR) dnames(20)
1b5fb69d21 Ed H*0662
0663
0664 integer IFNBLNK, ILNBLNK
75987013ac Ed H*0665
0666
0667 nff = IFNBLNK(fname)
0668 nlf = ILNBLNK(fname)
0669 err = NF_OPEN(fname, NF_WRITE, fid)
3623ff8097 Ed H*0670 ierr = NF_NOERR
0671 IF (err .NE. NF_NOERR) THEN
0672 ierr = err
0673 RETURN
0674 ENDIF
ef92f00980 Ed H*0675 CALL MNC_GET_NEXT_EMPTY_IND(MNC_MAX_FID, mnc_f_names,
9705a0d5c6 Ed H*0676 & 'mnc_f_names', indf, myThid)
75987013ac Ed H*0677 mnc_f_names(indf)(1:(nlf-nff+1)) = fname(nff:nlf)
0678 mnc_f_info(indf,2) = fid
0679
0680
0681 err = NF_INQ(fid, ndim, nvar, ngat, unlimid)
0682 write(msgbuf,'(4a)') 'MNC ERROR: cannot read number of dims',
0683 & ' in file ''', fname(nff:nlf), ''''
3f2ea2a4ed Ed H*0684 CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
75987013ac Ed H*0685
0686
0687 DO id = 1,ndim
0688 err = NF_INQ_DIM(fid, id, name, dlen)
0689 write(msgbuf,'(2a,i5,3a)') 'MNC ERROR: cannot read dimension',
0690 & ' info for dim ''', id, ''' in file ''',
0691 & fname(nff:nlf), ''''
3f2ea2a4ed Ed H*0692 CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
75987013ac Ed H*0693 IF (id .EQ. unlimid) THEN
0694 dlen = -1
0695 ENDIF
0696 ns = IFNBLNK(name)
0697 ne = ILNBLNK(name)
e40d346a32 Ed H*0698
3f2ea2a4ed Ed H*0699 CALL MNC_DIM_INIT_ALL(fname,name(ns:ne),dlen,'N', myThid)
75987013ac Ed H*0700 DO i = 1,mnc_f_alld(indf,1)
0701 j = mnc_f_alld(indf,i+1)
0702 n1 = IFNBLNK(mnc_d_names(j))
0703 n2 = ILNBLNK(mnc_d_names(j))
0704 IF (((ne-ns) .EQ. (n2-n1))
0705 & .AND. (mnc_d_names(j)(ns:ne) .EQ. name(ns:ne))) THEN
0706 mnc_d_ids(j) = id
0707 goto 10
0708 ENDIF
0709 ENDDO
0710 10 CONTINUE
0711 ENDDO
0712
0713
0714 DO id = 1,nvar
0715 err = NF_INQ_VAR(fid, id, name, xtype, ndv, idlist, nat)
0716 write(msgbuf,'(2a,i5,3a)') 'MNC ERROR: cannot read variable',
0717 & ' info for variable ''', id, ''' in file ''',
0718 & fname(nff:nlf), ''''
3f2ea2a4ed Ed H*0719 CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
75987013ac Ed H*0720 n1 = IFNBLNK(name)
0721 n2 = ILNBLNK(name)
e40d346a32 Ed H*0722
75987013ac Ed H*0723
0724 DO i = 1,ndv
0725 did = idlist(i)
0726 dnames(i)(1:MNC_MAX_CHAR) = mnc_d_names(did)(1:MNC_MAX_CHAR)
0727 ENDDO
e40d346a32 Ed H*0728
3f2ea2a4ed Ed H*0729 CALL MNC_GRID_INIT_ALL(fname, name, ndv, dnames, indg, myThid)
75987013ac Ed H*0730
0731
9705a0d5c6 Ed H*0732 CALL MNC_GET_NEXT_EMPTY_IND(MNC_MAX_ID,mnc_v_names,
0733 & 'mnc_v_names', indv,myThid)
75987013ac Ed H*0734 mnc_v_names(indv)(1:(n2-n1+1)) = name(n1:n2)
0735 iv = 2 + 3*mnc_fv_ids(indf,1)
0736 mnc_fv_ids(indf,iv) = indv
0737 mnc_fv_ids(indf,iv+1) = id
0738 DO i = 1,mnc_f_info(indf,3)
0739 j = 4 + 3*(i-1)
0740 k = mnc_f_info(indf,j)
0741 IF (k .EQ. indg) THEN
0742 mnc_fv_ids(indf,iv+2) = j
0743 GOTO 20
0744 ENDIF
0745 ENDDO
0746 20 CONTINUE
0747 mnc_fv_ids(indf,1) = mnc_fv_ids(indf,1) + 1
0748
0749 ENDDO
0750
0751 RETURN
0752 END
0753
e6bb5b2cc3 Ed H*0754