File indexing completed on 2018-03-02 18:42:02 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
4de8f8c098 Ed H*0001 #include "MNC_OPTIONS.h"
beebb2eade Jean*0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
e9b72f2bd9 Ed H*0022
e6bb5b2cc3 Ed H*0023
1b5fb69d21 Ed H*0024
4de8f8c098 Ed H*0025
1b5fb69d21 Ed H*0026
beebb2eade Jean*0027 SUBROUTINE MNC_VAR_INIT_DBL(
0028 I fname,
0029 I gname,
0030 I vname,
21c48a3add Ed H*0031 I irv,
3f2ea2a4ed Ed H*0032 I myThid )
a7ffe10af7 Ed H*0033
1b5fb69d21 Ed H*0034
beebb2eade Jean*0035
0036
1b5fb69d21 Ed H*0037
beebb2eade Jean*0038 IMPLICIT NONE
a7ffe10af7 Ed H*0039 #include "netcdf.inc"
0040
1b5fb69d21 Ed H*0041
beebb2eade Jean*0042 CHARACTER*(*) fname,gname,vname
0043 INTEGER irv,myThid
1b5fb69d21 Ed H*0044
a7ffe10af7 Ed H*0045
beebb2eade Jean*0046 CALL MNC_VAR_INIT_ANY( fname,gname,vname, NF_DOUBLE, irv,myThid )
0047
a7ffe10af7 Ed H*0048 RETURN
0049 END
0050
e9b72f2bd9 Ed H*0051
e6bb5b2cc3 Ed H*0052
1b5fb69d21 Ed H*0053
a7ffe10af7 Ed H*0054
1b5fb69d21 Ed H*0055
beebb2eade Jean*0056 SUBROUTINE MNC_VAR_INIT_REAL(
0057 I fname,
0058 I gname,
0059 I vname,
21c48a3add Ed H*0060 I irv,
3f2ea2a4ed Ed H*0061 I myThid )
a7ffe10af7 Ed H*0062
1b5fb69d21 Ed H*0063
beebb2eade Jean*0064
0065
1b5fb69d21 Ed H*0066
beebb2eade Jean*0067 IMPLICIT NONE
a7ffe10af7 Ed H*0068 #include "netcdf.inc"
0069
1b5fb69d21 Ed H*0070
beebb2eade Jean*0071 CHARACTER*(*) fname,gname,vname
0072 INTEGER irv,myThid
1b5fb69d21 Ed H*0073
a7ffe10af7 Ed H*0074
beebb2eade Jean*0075 CALL MNC_VAR_INIT_ANY( fname,gname,vname, NF_FLOAT, irv,myThid )
0076
a7ffe10af7 Ed H*0077 RETURN
0078 END
0079
e9b72f2bd9 Ed H*0080
e6bb5b2cc3 Ed H*0081
1b5fb69d21 Ed H*0082
a7ffe10af7 Ed H*0083
1b5fb69d21 Ed H*0084
beebb2eade Jean*0085 SUBROUTINE MNC_VAR_INIT_INT(
0086 I fname,
0087 I gname,
0088 I vname,
21c48a3add Ed H*0089 I irv,
3f2ea2a4ed Ed H*0090 I myThid )
a7ffe10af7 Ed H*0091
1b5fb69d21 Ed H*0092
0093
beebb2eade Jean*0094
1b5fb69d21 Ed H*0095
beebb2eade Jean*0096 IMPLICIT NONE
a7ffe10af7 Ed H*0097 #include "netcdf.inc"
0098
1b5fb69d21 Ed H*0099
beebb2eade Jean*0100 CHARACTER*(*) fname,gname,vname
0101 INTEGER irv,myThid
1b5fb69d21 Ed H*0102
a7ffe10af7 Ed H*0103
beebb2eade Jean*0104 CALL MNC_VAR_INIT_ANY( fname,gname,vname, NF_INT, irv,myThid )
0105
a7ffe10af7 Ed H*0106 RETURN
0107 END
0108
e9b72f2bd9 Ed H*0109
e6bb5b2cc3 Ed H*0110
1b5fb69d21 Ed H*0111
a7ffe10af7 Ed H*0112
1b5fb69d21 Ed H*0113
beebb2eade Jean*0114 SUBROUTINE MNC_VAR_INIT_ANY(
0115 I fname,
0116 I gname,
0117 I vname,
0118 I vtype,
21c48a3add Ed H*0119 I irv,
3f2ea2a4ed Ed H*0120 I myThid )
4de8f8c098 Ed H*0121
1b5fb69d21 Ed H*0122
beebb2eade Jean*0123
0124
1b5fb69d21 Ed H*0125
beebb2eade Jean*0126 IMPLICIT NONE
07155994b8 Mart*0127 #include "MNC_COMMON.h"
4de8f8c098 Ed H*0128 #include "EEPARAMS.h"
853ee6565e Jean*0129 #include "netcdf.inc"
4de8f8c098 Ed H*0130
1b5fb69d21 Ed H*0131
beebb2eade Jean*0132 CHARACTER*(*) fname,gname,vname
0133 INTEGER vtype
0134 INTEGER irv,myThid
e6bb5b2cc3 Ed H*0135
4de8f8c098 Ed H*0136
1b5fb69d21 Ed H*0137
beebb2eade Jean*0138 INTEGER ILNBLNK
0139 EXTERNAL ILNBLNK
0140
0141
0142 INTEGER i,j,k, n, nf, indf,indv, fid, nd, ngrid, is,ie, err
0143 INTEGER vid, nv, ind_g_finfo, needed, nvar
0144 CHARACTER*(MAX_LEN_MBUF) msgBuf
0145 INTEGER ids(20)
0146 INTEGER lenf,leng,lenv
4de8f8c098 Ed H*0147
907e360dab Ed H*0148
0149 lenf = ILNBLNK(fname)
0150 leng = ILNBLNK(gname)
0151 lenv = ILNBLNK(vname)
0152
0153
ef92f00980 Ed H*0154 CALL MNC_GET_IND(MNC_MAX_FID, fname, mnc_f_names, indf, myThid)
907e360dab Ed H*0155 IF (indf .LT. 1) THEN
16a9213e57 Ed H*0156 nf = ILNBLNK( fname )
beebb2eade Jean*0157 WRITE(msgBuf,'(3A)') 'MNC ERROR: file ''', fname(1:nf),
907e360dab Ed H*0158 & ''' must be opened first'
beebb2eade Jean*0159 CALL print_error(msgBuf, myThid)
0160 STOP 'ABNORMAL END: S/R MNC_VAR_INIT_ANY'
907e360dab Ed H*0161 ENDIF
0162 fid = mnc_f_info(indf,2)
0163
dad4143247 Ed H*0164
0165 needed = 1 + 3*(mnc_fv_ids(indf,1) + 1)
0166 IF (needed .GE. MNC_MAX_INFO) THEN
beebb2eade Jean*0167 WRITE(msgBuf,'(2A,I7,A)') 'MNC ERROR: MNC_MAX_INFO exceeded',
0168 & ': please increase it to ', 2*MNC_MAX_INFO,
99056ab1c6 Oliv*0169 & ' in the file ''pkg/mnc/MNC_SIZE.h'''
beebb2eade Jean*0170 CALL print_error(msgBuf, myThid)
0171 STOP 'ABNORMAL END: S/R MNC_VAR_INIT_ANY'
dad4143247 Ed H*0172 ENDIF
0173
907e360dab Ed H*0174
0175 ngrid = mnc_f_info(indf,3)
0176 IF (ngrid .LT. 1) THEN
beebb2eade Jean*0177 WRITE(msgBuf,'(3A)') 'MNC ERROR: file ''', fname(1:lenf),
907e360dab Ed H*0178 & ''' contains NO grids'
beebb2eade Jean*0179 CALL print_error(msgBuf, myThid)
0180 STOP 'ABNORMAL END: S/R MNC_VAR_INIT_ANY'
907e360dab Ed H*0181 ENDIF
0182 DO i = 1,ngrid
0183 j = 4 + (i-1)*3
0184 k = mnc_f_info(indf,j)
0185 n = ILNBLNK(mnc_g_names(k))
beebb2eade Jean*0186 IF ((leng .EQ. n)
907e360dab Ed H*0187 & .AND. (mnc_g_names(k)(1:n) .EQ. gname(1:n))) THEN
376f4203f6 Ed H*0188 ind_g_finfo = j
907e360dab Ed H*0189 is = mnc_f_info(indf,(j+1))
0190 ie = mnc_f_info(indf,(j+2))
0191 nd = 0
0192 DO k = is,ie
0193 nd = nd + 1
75987013ac Ed H*0194 ids(nd) = mnc_d_ids(mnc_fd_ind(indf,k))
907e360dab Ed H*0195 ENDDO
0196 GOTO 10
0197 ENDIF
0198 ENDDO
beebb2eade Jean*0199 WRITE(msgBuf,'(5A)') 'MNC ERROR: file ''', fname(1:lenf),
907e360dab Ed H*0200 & ''' does not contain grid ''', gname(1:leng), ''''
beebb2eade Jean*0201 CALL print_error(msgBuf, myThid)
0202 STOP 'ABNORMAL END: S/R MNC_VAR_INIT_ANY'
907e360dab Ed H*0203 10 CONTINUE
0204
b11e5981be Ed H*0205
0206 nvar = mnc_fv_ids(indf,1)
0207 DO i = 1,nvar
0208 j = 2 + 3*(i-1)
0209 IF (mnc_v_names(mnc_fv_ids(indf,j)) .EQ. vname) THEN
0210 k = mnc_f_info(indf,mnc_fv_ids(indf,j+2))
0211 IF (mnc_g_names(k) .NE. gname) THEN
beebb2eade Jean*0212 WRITE(msgBuf,'(5A)') 'MNC ERROR: variable ''',
0213 & vname(1:lenv), ''' is already defined in file ''',
b11e5981be Ed H*0214 & fname(1:lenf), ''' but using a different grid shape'
beebb2eade Jean*0215 CALL print_error(msgBuf, myThid)
0216 STOP 'ABNORMAL END: S/R MNC_VAR_INIT_ANY'
b11e5981be Ed H*0217 ELSE
0218
21c48a3add Ed H*0219 irv = 0
b11e5981be Ed H*0220 RETURN
0221 ENDIF
0222 ENDIF
0223 ENDDO
0224
21c48a3add Ed H*0225 irv = 1
0226
907e360dab Ed H*0227
3f2ea2a4ed Ed H*0228 CALL MNC_FILE_REDEF(fname, myThid)
a7ffe10af7 Ed H*0229 err = NF_DEF_VAR(fid, vname, vtype, nd, ids, vid)
0ae5aeaaaa Ed H*0230 IF ( err .NE. NF_NOERR ) THEN
beebb2eade Jean*0231 WRITE(msgBuf,'(2A)') 'ERROR: MNC will not ',
0ae5aeaaaa Ed H*0232 & 'overwrite variables in existing NetCDF'
0233 CALL PRINT_ERROR( msgBuf, myThid )
beebb2eade Jean*0234 WRITE(msgBuf,'(2A)') ' files. Please',
0ae5aeaaaa Ed H*0235 & ' make sure that you are not trying to'
0236 CALL PRINT_ERROR( msgBuf, myThid )
beebb2eade Jean*0237 WRITE(msgBuf,'(2A)') ' overwrite output',
0ae5aeaaaa Ed H*0238 & 'files from a previous model run!'
0239 CALL PRINT_ERROR( msgBuf, myThid )
beebb2eade Jean*0240 WRITE(msgBuf,'(5A)') 'defining variable ''', vname(1:lenv),
907e360dab Ed H*0241 & ''' in file ''', fname(1:lenf), ''''
beebb2eade Jean*0242 CALL MNC_HANDLE_ERR(err, msgBuf, myThid)
0ae5aeaaaa Ed H*0243 ENDIF
907e360dab Ed H*0244
0245
9705a0d5c6 Ed H*0246 CALL MNC_GET_NEXT_EMPTY_IND(MNC_MAX_ID,mnc_v_names,'mnc_v_names',
0247 & indv, myThid)
907e360dab Ed H*0248 mnc_v_names(indv)(1:lenv) = vname(1:lenv)
0249 nv = mnc_fv_ids(indf,1)
a7ffe10af7 Ed H*0250 i = 2 + nv*3
75987013ac Ed H*0251 mnc_fv_ids(indf,i) = indv
0252 mnc_fv_ids(indf,i+1) = vid
0253 mnc_fv_ids(indf,i+2) = ind_g_finfo
907e360dab Ed H*0254 mnc_fv_ids(indf,1) = nv + 1
0255
0256 RETURN
0257 END
0258
e9b72f2bd9 Ed H*0259
e6bb5b2cc3 Ed H*0260
1b5fb69d21 Ed H*0261
907e360dab Ed H*0262
1b5fb69d21 Ed H*0263
beebb2eade Jean*0264 SUBROUTINE MNC_VAR_ADD_ATTR_STR(
0265 I fname,
0266 I vname,
0267 I atname,
0268 I sval,
3f2ea2a4ed Ed H*0269 I myThid )
907e360dab Ed H*0270
1b5fb69d21 Ed H*0271
beebb2eade Jean*0272
0273
1b5fb69d21 Ed H*0274
beebb2eade Jean*0275 IMPLICIT NONE
1b5fb69d21 Ed H*0276
0277
beebb2eade Jean*0278 CHARACTER*(*) fname,vname,atname,sval
0279 INTEGER myThid
1b5fb69d21 Ed H*0280
169a7aa8bd Jean*0281 real*8 dZero(1)
0282 real*4 sZero(1)
beebb2eade Jean*0283 INTEGER iZero(1)
169a7aa8bd Jean*0284 dZero(1) = 0.0D0
0285 sZero(1) = 0.0
0286 iZero(1) = 0
a7ffe10af7 Ed H*0287
beebb2eade Jean*0288 CALL MNC_VAR_ADD_ATTR_ANY( fname,vname,atname,
0289 & 1, sval, 0, dZero, sZero, iZero, myThid )
0290
a7ffe10af7 Ed H*0291 RETURN
0292 END
e9b72f2bd9 Ed H*0293
e6bb5b2cc3 Ed H*0294
1b5fb69d21 Ed H*0295
a7ffe10af7 Ed H*0296
1b5fb69d21 Ed H*0297
beebb2eade Jean*0298 SUBROUTINE MNC_VAR_ADD_ATTR_DBL(
0299 I fname,
0300 I vname,
0301 I atname,
0302 I nv,
0303 I dval,
3f2ea2a4ed Ed H*0304 I myThid )
a7ffe10af7 Ed H*0305
1b5fb69d21 Ed H*0306
beebb2eade Jean*0307
0308
1b5fb69d21 Ed H*0309
beebb2eade Jean*0310 IMPLICIT NONE
1b5fb69d21 Ed H*0311
0312
beebb2eade Jean*0313 CHARACTER*(*) fname,vname,atname
0314 INTEGER nv
0315 Real*8 dval(*)
0316 INTEGER myThid
1b5fb69d21 Ed H*0317
169a7aa8bd Jean*0318 real*4 sZero(1)
beebb2eade Jean*0319 INTEGER iZero(1)
169a7aa8bd Jean*0320 sZero(1) = 0.0
0321 iZero(1) = 0
a7ffe10af7 Ed H*0322
beebb2eade Jean*0323 CALL MNC_VAR_ADD_ATTR_ANY( fname,vname,atname,
0324 & 2, ' ', nv, dval, sZero, iZero, myThid )
0325
a7ffe10af7 Ed H*0326 RETURN
0327 END
0328
e9b72f2bd9 Ed H*0329
e6bb5b2cc3 Ed H*0330
5eef09f930 Ed H*0331
a7ffe10af7 Ed H*0332
1b5fb69d21 Ed H*0333
beebb2eade Jean*0334 SUBROUTINE MNC_VAR_ADD_ATTR_REAL(
0335 I fname,
0336 I vname,
0337 I atname,
0338 I nv,
0339 I rval,
3f2ea2a4ed Ed H*0340 I myThid )
a7ffe10af7 Ed H*0341
1b5fb69d21 Ed H*0342
beebb2eade Jean*0343
0344
1b5fb69d21 Ed H*0345
beebb2eade Jean*0346 IMPLICIT NONE
1b5fb69d21 Ed H*0347
0348
beebb2eade Jean*0349 CHARACTER*(*) fname,vname,atname
0350 INTEGER nv
0351 Real*4 rval(*)
0352 INTEGER myThid
1b5fb69d21 Ed H*0353
169a7aa8bd Jean*0354 real*8 dZero(1)
beebb2eade Jean*0355 INTEGER iZero(1)
169a7aa8bd Jean*0356 dZero(1) = 0.0D0
0357 iZero(1) = 0
a7ffe10af7 Ed H*0358
beebb2eade Jean*0359 CALL MNC_VAR_ADD_ATTR_ANY( fname,vname,atname,
0360 & 3, ' ', nv, dZero, rval, iZero, myThid )
a7ffe10af7 Ed H*0361 RETURN
0362 END
0363
e9b72f2bd9 Ed H*0364
e6bb5b2cc3 Ed H*0365
1b5fb69d21 Ed H*0366
a7ffe10af7 Ed H*0367
1b5fb69d21 Ed H*0368
beebb2eade Jean*0369 SUBROUTINE MNC_VAR_ADD_ATTR_INT(
0370 I fname,
0371 I vname,
0372 I atname,
0373 I nv,
0374 I ival,
3f2ea2a4ed Ed H*0375 I myThid )
a7ffe10af7 Ed H*0376
1b5fb69d21 Ed H*0377
beebb2eade Jean*0378
0379
1b5fb69d21 Ed H*0380
beebb2eade Jean*0381 IMPLICIT NONE
1b5fb69d21 Ed H*0382
0383
beebb2eade Jean*0384 CHARACTER*(*) fname,vname,atname
0385 INTEGER nv
0386 INTEGER ival(*)
0387 INTEGER myThid
1b5fb69d21 Ed H*0388
169a7aa8bd Jean*0389 real*8 dZero(1)
0390 real*4 sZero(1)
0391 dZero(1) = 0.0D0
0392 sZero(1) = 0.0
a7ffe10af7 Ed H*0393
beebb2eade Jean*0394 CALL MNC_VAR_ADD_ATTR_ANY( fname,vname,atname,
0395 & 4, ' ', nv, dZero, sZero, ival, myThid )
0396
a7ffe10af7 Ed H*0397 RETURN
0398 END
0399
e9b72f2bd9 Ed H*0400
e6bb5b2cc3 Ed H*0401
1b5fb69d21 Ed H*0402
a7ffe10af7 Ed H*0403
1b5fb69d21 Ed H*0404
beebb2eade Jean*0405 SUBROUTINE MNC_VAR_ADD_ATTR_ANY(
0406 I fname,
0407 I vname,
0408 I atname,
0409 I atype, cs,len,dv,rv,iv,
3f2ea2a4ed Ed H*0410 I myThid )
a7ffe10af7 Ed H*0411
1b5fb69d21 Ed H*0412
beebb2eade Jean*0413
0414
1b5fb69d21 Ed H*0415
beebb2eade Jean*0416 IMPLICIT NONE
07155994b8 Mart*0417 #include "MNC_COMMON.h"
907e360dab Ed H*0418 #include "EEPARAMS.h"
853ee6565e Jean*0419 #include "netcdf.inc"
907e360dab Ed H*0420
1b5fb69d21 Ed H*0421
beebb2eade Jean*0422 CHARACTER*(*) fname,vname,atname
0423 INTEGER atype
0424 CHARACTER*(*) cs
0425 INTEGER len
0426 Real*8 dv(*)
0427 Real*4 rv(*)
0428 INTEGER iv(*)
0429 INTEGER myThid
e6bb5b2cc3 Ed H*0430
907e360dab Ed H*0431
1b5fb69d21 Ed H*0432
beebb2eade Jean*0433 INTEGER ILNBLNK
0434 EXTERNAL ILNBLNK
0435
0436
0437 INTEGER n, indf,ind_fv_ids, fid,vid, err
0438 CHARACTER*(MAX_LEN_MBUF) msgBuf
0439 INTEGER lenf,lenv,lenat,lens
907e360dab Ed H*0440
0441
0442 lenf = ILNBLNK(fname)
0443 lenv = ILNBLNK(vname)
0444 lenat = ILNBLNK(atname)
a7ffe10af7 Ed H*0445 lens = ILNBLNK(cs)
907e360dab Ed H*0446
3f2ea2a4ed Ed H*0447 CALL MNC_GET_FVINDS(fname, vname, indf, ind_fv_ids, myThid)
376f4203f6 Ed H*0448 IF ((indf .LT. 1).OR.(ind_fv_ids .LT. 1)) THEN
beebb2eade Jean*0449 WRITE(msgBuf,'(5A)') 'MNC ERROR: file ''', fname(1:lenf),
0450 & ''' is not open or does not contain variable ''',
376f4203f6 Ed H*0451 & vname(1:lenv), ''''
beebb2eade Jean*0452 CALL print_error(msgBuf, myThid)
0453 STOP 'ABNORMAL END: S/R MNC_VAR_ADD_ATTR_STR'
4de8f8c098 Ed H*0454 ENDIF
907e360dab Ed H*0455 fid = mnc_f_info(indf,2)
376f4203f6 Ed H*0456 vid = mnc_fv_ids(indf,(ind_fv_ids+1))
907e360dab Ed H*0457
0458
3f2ea2a4ed Ed H*0459 CALL MNC_FILE_REDEF(fname, myThid)
a7ffe10af7 Ed H*0460 IF (atype .EQ. 1) THEN
0461 err = NF_PUT_ATT_TEXT(fid, vid, atname, lens, cs)
0462 ELSEIF (atype .EQ. 2) THEN
0463 err = NF_PUT_ATT_DOUBLE(fid, vid, atname, NF_DOUBLE, len, dv)
0464 ELSEIF (atype .EQ. 3) THEN
0465 err = NF_PUT_ATT_REAL(fid, vid, atname, NF_FLOAT, len, rv)
0466 ELSEIF (atype .EQ. 4) THEN
0467 err = NF_PUT_ATT_INT(fid, vid, atname, NF_INT, len, iv)
0468 ELSE
beebb2eade Jean*0469 WRITE(msgBuf,'(A,I10,A)') 'MNC ERROR: atype = ''', atype,
a7ffe10af7 Ed H*0470 & ''' is invalid--must be: [1-4]'
beebb2eade Jean*0471 n = ILNBLNK(msgBuf)
0472 CALL print_error(msgBuf(1:n), myThid)
0473 STOP 'ABNORMAL END: S/R MNC_VAR_ADD_ATTR_ANY'
a7ffe10af7 Ed H*0474 ENDIF
beebb2eade Jean*0475 WRITE(msgBuf,'(5A)') 'adding attribute ''', atname(1:lenat),
907e360dab Ed H*0476 & ''' to file ''', fname(1:lenf), ''''
beebb2eade Jean*0477 CALL MNC_HANDLE_ERR(err, msgBuf, myThid)
4de8f8c098 Ed H*0478
a27dc5c859 Ed H*0479 RETURN
4de8f8c098 Ed H*0480 END
0481
e9b72f2bd9 Ed H*0482
376f4203f6 Ed H*0483
beebb2eade Jean*0484 SUBROUTINE MNC_VAR_WRITE_DBL(
0485 I fname,
0486 I vname,
0487 I var,
3f2ea2a4ed Ed H*0488 I myThid )
376f4203f6 Ed H*0489
beebb2eade Jean*0490 IMPLICIT NONE
a7ffe10af7 Ed H*0491
beebb2eade Jean*0492 CHARACTER*(*) fname, vname
0493 Real*8 var(*)
0494 INTEGER myThid
0495
0496
0497 Real*4 dummyR4(1)
0498 INTEGER dummyI (1)
0499
0500 DATA dummyR4 / 0. /
0501 DATA dummyI / 0 /
0502
0503 CALL MNC_VAR_WRITE_ANY( fname, vname, 1, 0,
0504 & var, dummyR4, dummyI, myThid )
a7ffe10af7 Ed H*0505
0506 RETURN
0507 END
0508
e9b72f2bd9 Ed H*0509
a7ffe10af7 Ed H*0510
beebb2eade Jean*0511 SUBROUTINE MNC_VAR_WRITE_REAL(
0512 I fname,
0513 I vname,
0514 I var,
3f2ea2a4ed Ed H*0515 I myThid )
a7ffe10af7 Ed H*0516
beebb2eade Jean*0517 IMPLICIT NONE
a7ffe10af7 Ed H*0518
beebb2eade Jean*0519 CHARACTER*(*) fname, vname
0520 Real*4 var(*)
0521 INTEGER myThid
0522
0523
0524 Real*8 dummyR8(1)
0525 INTEGER dummyI (1)
0526
0527 DATA dummyR8 / 0. _d 0 /
0528 DATA dummyI / 0 /
0529
0530 CALL MNC_VAR_WRITE_ANY( fname, vname, 2, 0,
0531 & dummyR8, var, dummyI, myThid )
a7ffe10af7 Ed H*0532
0533 RETURN
0534 END
0535
e9b72f2bd9 Ed H*0536
a7ffe10af7 Ed H*0537
beebb2eade Jean*0538 SUBROUTINE MNC_VAR_WRITE_INT(
0539 I fname,
0540 I vname,
0541 I var,
3f2ea2a4ed Ed H*0542 I myThid )
a7ffe10af7 Ed H*0543
beebb2eade Jean*0544 IMPLICIT NONE
a7ffe10af7 Ed H*0545
beebb2eade Jean*0546 CHARACTER*(*) fname, vname
0547 INTEGER var(*)
0548 INTEGER myThid
0549
0550
0551 Real*8 dummyR8(1)
0552 Real*4 dummyR4(1)
0553
0554 DATA dummyR8 / 0. _d 0 /
0555 DATA dummyR4 / 0. /
0556
0557 CALL MNC_VAR_WRITE_ANY( fname, vname, 3, 0,
0558 & dummyR8, dummyR4, var, myThid )
a7ffe10af7 Ed H*0559
251b9a88c9 Ed H*0560 RETURN
0561 END
0562
e9b72f2bd9 Ed H*0563
251b9a88c9 Ed H*0564
beebb2eade Jean*0565 SUBROUTINE MNC_VAR_APPEND_DBL(
0566 I fname,
0567 I vname,
0568 I var,
0569 I append,
3f2ea2a4ed Ed H*0570 I myThid )
251b9a88c9 Ed H*0571
beebb2eade Jean*0572 IMPLICIT NONE
251b9a88c9 Ed H*0573
beebb2eade Jean*0574 CHARACTER*(*) fname, vname
0575 Real*8 var(*)
0576 INTEGER append, myThid
0577
0578
0579 Real*4 dummyR4(1)
0580 INTEGER dummyI (1)
0581
0582 DATA dummyR4 / 0. /
0583 DATA dummyI / 0 /
0584
0585 CALL MNC_VAR_WRITE_ANY( fname, vname, 1, append,
0586 & var, dummyR4, dummyI, myThid )
251b9a88c9 Ed H*0587
0588 RETURN
0589 END
0590
e9b72f2bd9 Ed H*0591
251b9a88c9 Ed H*0592
beebb2eade Jean*0593 SUBROUTINE MNC_VAR_APPEND_REAL(
0594 I fname,
0595 I vname,
0596 I var,
0597 I append,
3f2ea2a4ed Ed H*0598 I myThid )
251b9a88c9 Ed H*0599
beebb2eade Jean*0600 IMPLICIT NONE
251b9a88c9 Ed H*0601
beebb2eade Jean*0602 CHARACTER*(*) fname, vname
0603 Real*4 var(*)
0604 INTEGER append, myThid
0605
0606
0607 Real*8 dummyR8(1)
0608 INTEGER dummyI (1)
0609
0610 DATA dummyR8 / 0. _d 0 /
0611 DATA dummyI / 0 /
0612
0613 CALL MNC_VAR_WRITE_ANY( fname, vname, 2, append,
0614 & dummyR8, var, dummyI, myThid )
251b9a88c9 Ed H*0615
0616 RETURN
0617 END
0618
e9b72f2bd9 Ed H*0619
251b9a88c9 Ed H*0620
beebb2eade Jean*0621 SUBROUTINE MNC_VAR_APPEND_INT(
0622 I fname,
0623 I vname,
0624 I var,
0625 I append,
3f2ea2a4ed Ed H*0626 I myThid )
251b9a88c9 Ed H*0627
beebb2eade Jean*0628 IMPLICIT NONE
251b9a88c9 Ed H*0629
beebb2eade Jean*0630 CHARACTER*(*) fname, vname
0631 INTEGER var(*)
0632 INTEGER append, myThid
0633
0634
0635 Real*8 dummyR8(1)
0636 Real*4 dummyR4(1)
0637
0638 DATA dummyR8 / 0. _d 0 /
0639 DATA dummyR4 / 0. /
0640
0641 CALL MNC_VAR_WRITE_ANY( fname, vname, 3, append,
0642 & dummyR8, dummyR4, var, myThid )
251b9a88c9 Ed H*0643
a7ffe10af7 Ed H*0644 RETURN
0645 END
0646
e9b72f2bd9 Ed H*0647
a7ffe10af7 Ed H*0648
beebb2eade Jean*0649 SUBROUTINE MNC_VAR_WRITE_ANY(
0650 I fname,
0651 I vname,
a7ffe10af7 Ed H*0652 I vtype,
251b9a88c9 Ed H*0653 I append,
a7ffe10af7 Ed H*0654 I dv,
0655 I rv,
beebb2eade Jean*0656 I iv,
3f2ea2a4ed Ed H*0657 I myThid )
a7ffe10af7 Ed H*0658
beebb2eade Jean*0659 IMPLICIT NONE
07155994b8 Mart*0660 #include "MNC_COMMON.h"
376f4203f6 Ed H*0661 #include "EEPARAMS.h"
853ee6565e Jean*0662 #include "netcdf.inc"
376f4203f6 Ed H*0663
0664
beebb2eade Jean*0665 CHARACTER*(*) fname, vname
0666 INTEGER vtype
0667 INTEGER append
0668 Real*8 dv(*)
0669 Real*4 rv(*)
0670 INTEGER iv(*)
0671 INTEGER myThid
376f4203f6 Ed H*0672
0673
beebb2eade Jean*0674 INTEGER ILNBLNK
376f4203f6 Ed H*0675
0676
beebb2eade Jean*0677 INTEGER i,j,k, n, indf,ind_fv_ids, fid,vid,did, ig, err, ds,de
0678 CHARACTER*(MAX_LEN_MBUF) msgBuf
0679 INTEGER lenf,lenv, lend
0680 INTEGER vstart(100), vcount(100)
376f4203f6 Ed H*0681
0682
0683 lenf = ILNBLNK(fname)
0684 lenv = ILNBLNK(vname)
0685
3f2ea2a4ed Ed H*0686 CALL MNC_GET_FVINDS(fname, vname, indf, ind_fv_ids, myThid)
376f4203f6 Ed H*0687 IF ((indf .LT. 1).OR.(ind_fv_ids .LT. 1)) THEN
beebb2eade Jean*0688 WRITE(msgBuf,'(5A)') 'MNC ERROR: file ''', fname(1:lenf),
0689 & ''' is not open or does not contain variable ''',
376f4203f6 Ed H*0690 & vname(1:lenv), ''''
beebb2eade Jean*0691 CALL print_error(msgBuf, myThid)
0692 STOP 'ABNORMAL END: S/R MNC_VAR_ADD_ATTR_STR'
376f4203f6 Ed H*0693 ENDIF
0694 fid = mnc_f_info(indf,2)
0695 vid = mnc_fv_ids(indf,(ind_fv_ids+1))
0696
0697
0698 ig = mnc_fv_ids(indf,(ind_fv_ids+2))
0699 ds = mnc_f_info(indf,ig+1)
0700 de = mnc_f_info(indf,ig+2)
0701 k = 0
0702 DO i = ds,de
0703 k = k + 1
0704 vstart(k) = 1
0705 vcount(k) = mnc_d_size( mnc_fd_ind(indf,i) )
0706 ENDDO
0707
0708
0709 j = mnc_d_size( mnc_fd_ind(indf,de) )
0710 IF (j .LT. 1) THEN
75987013ac Ed H*0711 did = mnc_d_ids( mnc_fd_ind(indf,de) )
376f4203f6 Ed H*0712 err = NF_INQ_DIMLEN(fid, did, lend)
beebb2eade Jean*0713 WRITE(msgBuf,'(A)') 'reading current length of unlimited dim'
0714 CALL MNC_HANDLE_ERR(err, msgBuf, myThid)
251b9a88c9 Ed H*0715 IF (append .GT. 0) THEN
0716 lend = lend + append
0717 ENDIF
0718 IF (lend .LT. 1) lend = 1
376f4203f6 Ed H*0719 vstart(k) = lend
0720 vcount(k) = 1
0721 ENDIF
0722
3f2ea2a4ed Ed H*0723 CALL MNC_FILE_ENDDEF(fname, myThid)
a7ffe10af7 Ed H*0724 IF (vtype .EQ. 1) THEN
0725 err = NF_PUT_VARA_DOUBLE(fid, vid, vstart, vcount, dv)
0726 ELSEIF (vtype .EQ. 2) THEN
0727 err = NF_PUT_VARA_REAL(fid, vid, vstart, vcount, rv)
0728 ELSEIF (vtype .EQ. 3) THEN
0729 err = NF_PUT_VARA_INT(fid, vid, vstart, vcount, iv)
0730 ELSE
beebb2eade Jean*0731 WRITE(msgBuf,'(A,I10,A)') 'MNC ERROR: vtype = ''', vtype,
a7ffe10af7 Ed H*0732 & ''' is invalid--must be: [1|2|3]'
beebb2eade Jean*0733 n = ILNBLNK(msgBuf)
0734 CALL print_error(msgBuf(1:n), myThid)
0735 STOP 'ABNORMAL END: S/R MNC_VAR_WRITE_ALL'
0736 ENDIF
0737 WRITE(msgBuf,'(5A)') 'writing variable ''', vname(1:lenv),
376f4203f6 Ed H*0738 & ''' to file ''', fname(1:lenf), ''''
beebb2eade Jean*0739 CALL MNC_HANDLE_ERR(err, msgBuf, myThid)
376f4203f6 Ed H*0740
0741 RETURN
0742 END
0743
e9b72f2bd9 Ed H*0744
0745