File indexing completed on 2024-12-17 18:36:49 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
a27dc5c859 Ed H*0001 #include "MNC_OPTIONS.h"
0002
e9b72f2bd9 Ed H*0003
e6bb5b2cc3 Ed H*0004
d5d5c6127e Ed H*0005
1b5fb69d21 Ed H*0006
d5d5c6127e Ed H*0007
a27dc5c859 Ed H*0008 SUBROUTINE MNC_DIM_INIT(
dad4143247 Ed H*0009 I fname,
a27dc5c859 Ed H*0010 I dname,
3f2ea2a4ed Ed H*0011 I dlen,
0012 I myThid )
a27dc5c859 Ed H*0013
d5d5c6127e Ed H*0014
1b5fb69d21 Ed H*0015
d5d5c6127e Ed H*0016
0017
75987013ac Ed H*0018 integer myThid, dlen
0019 character*(*) fname, dname
d5d5c6127e Ed H*0020
75987013ac Ed H*0021
3f2ea2a4ed Ed H*0022 CALL MNC_DIM_INIT_ALL(fname, dname, dlen, 'Y', myThid)
75987013ac Ed H*0023
0024 RETURN
0025 END
0026
e9b72f2bd9 Ed H*0027
e6bb5b2cc3 Ed H*0028
d5d5c6127e Ed H*0029
1b5fb69d21 Ed H*0030
d5d5c6127e Ed H*0031
75987013ac Ed H*0032 SUBROUTINE MNC_DIM_INIT_ALL(
0033 I fname,
0034 I dname,
0035 I dlen,
3f2ea2a4ed Ed H*0036 I doWrite,
0037 I myThid )
75987013ac Ed H*0038
d5d5c6127e Ed H*0039
1b5fb69d21 Ed H*0040
d5d5c6127e Ed H*0041
d77e828db7 Ed H*0042
0043 implicit none
0044
0045
0046 integer myThid, dlen
0047 character*(*) fname, dname
0048 character*(1) doWrite
0049
0050
e40d346a32 Ed H*0051 CALL MNC_DIM_INIT_ALL_CV(fname,dname,dlen,doWrite,-1,-1,myThid)
d77e828db7 Ed H*0052
0053 RETURN
0054 END
0055
0056
0057
0058
0059
0060
0061 SUBROUTINE MNC_DIM_INIT_ALL_CV(
0062 I fname,
0063 I dname,
0064 I dlen,
0065 I doWrite,
0066 I bi,bj,
0067 I myThid )
0068
0069
0070
0071
d5d5c6127e Ed H*0072
a27dc5c859 Ed H*0073 implicit none
07155994b8 Mart*0074 #include "MNC_COMMON.h"
a27dc5c859 Ed H*0075 #include "EEPARAMS.h"
853ee6565e Jean*0076 #include "netcdf.inc"
a27dc5c859 Ed H*0077
d5d5c6127e Ed H*0078
d77e828db7 Ed H*0079 integer myThid, dlen, bi,bj
75987013ac Ed H*0080 character*(*) fname, dname
0081 character*(1) doWrite
e6bb5b2cc3 Ed H*0082
a27dc5c859 Ed H*0083
d5d5c6127e Ed H*0084
1b5fb69d21 Ed H*0085 integer i,j, indf,indd, n,nf, dnf,dnl
0086 integer ntmp, idd, err, tlen
a27dc5c859 Ed H*0087 character*(MAX_LEN_MBUF) msgbuf
e6bb5b2cc3 Ed H*0088
1b5fb69d21 Ed H*0089
0090 integer ILNBLNK, IFNBLNK
a27dc5c859 Ed H*0091
dad4143247 Ed H*0092 nf = ILNBLNK(fname)
75987013ac Ed H*0093
0094 dnf = IFNBLNK(dname)
0095 dnl = ILNBLNK(dname)
dad4143247 Ed H*0096
0097
ef92f00980 Ed H*0098 CALL MNC_GET_IND(MNC_MAX_FID, fname, mnc_f_names, indf, myThid)
dad4143247 Ed H*0099 IF ( indf .LT. 1 ) THEN
0100 write(msgbuf,'(3a)') 'MNC ERROR: file ''', fname(1:nf),
0101 & ''' does not exist'
a27dc5c859 Ed H*0102 CALL print_error( msgbuf, mythid )
dad4143247 Ed H*0103 stop 'ABNORMAL END: S/R MNC_DIM_INIT'
a27dc5c859 Ed H*0104 ENDIF
dad4143247 Ed H*0105
0106
0107 n = mnc_f_alld(indf,1)
0108 DO i = 1,n
0109 j = mnc_f_alld(indf,i+1)
b11e5981be Ed H*0110 ntmp = ILNBLNK(mnc_d_names(j))
75987013ac Ed H*0111 IF ((ntmp .EQ. (dnl-dnf+1))
b11e5981be Ed H*0112 & .AND. (dname(dnf:dnl) .EQ. mnc_d_names(j)(1:ntmp))) THEN
0113 IF (mnc_d_size(j) .NE. dlen) THEN
0114 IF ((mnc_d_size(j) .GT. 0) .OR. (dlen .GT. 0)) THEN
0115 write(msgbuf,'(5a)') 'MNC ERROR: dimension ''',
0116 & dname(dnf:dnl), ''' already exists within file ''',
0117 & fname(1:nf), ''' and its size cannot be changed'
0118 CALL print_error(msgbuf, mythid)
0119 stop 'ABNORMAL END: S/R MNC_DIM_INIT'
0120 ELSE
0121
0122
0123 RETURN
0124 ENDIF
0125 ELSE
0126
0127 RETURN
0128 ENDIF
dad4143247 Ed H*0129 ENDIF
0130 ENDDO
0131
9705a0d5c6 Ed H*0132 CALL MNC_GET_NEXT_EMPTY_IND(MNC_MAX_ID, mnc_d_names,
0133 & 'mnc_d_names', indd, myThid)
a27dc5c859 Ed H*0134
75987013ac Ed H*0135
0136 IF (doWrite(1:1) .EQ. 'Y') THEN
0137
0138 tlen = dlen
0139 IF (dlen .LT. 1) tlen = NF_UNLIMITED
0140
3f2ea2a4ed Ed H*0141 CALL MNC_FILE_REDEF(fname, myThid)
75987013ac Ed H*0142 err = NF_DEF_DIM(mnc_f_info(indf,2), dname(dnf:dnl), tlen, idd)
0143 write(msgbuf,'(5a)') 'MNC_DIM_INIT ERROR: cannot create ',
0144 & 'dim ''', dname(dnf:dnl), ''' in file ''', fname(1:nf)
3f2ea2a4ed Ed H*0145 CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
75987013ac Ed H*0146
d77e828db7 Ed H*0147
0148
0149 IF (bi .GT. -1) THEN
0150 CALL MNC_CW_WRITE_CVAR(fname, dname(dnf:dnl),
0151 & mnc_f_info(indf,2), idd, bi, bj, myThid)
0152 ENDIF
0153
a27dc5c859 Ed H*0154 ENDIF
0155
0156
75987013ac Ed H*0157 mnc_d_names(indd)(1:(dnl-dnf+1)) = dname(dnf:dnl)
dad4143247 Ed H*0158 mnc_d_size(indd) = dlen
75987013ac Ed H*0159 mnc_d_ids(indd) = idd
dad4143247 Ed H*0160 mnc_f_alld(indf,1) = n + 1
0161 mnc_f_alld(indf,n+2) = indd
a27dc5c859 Ed H*0162
0163 RETURN
0164 END
0165
ef84d10314 Ed H*0166
e6bb5b2cc3 Ed H*0167
1b5fb69d21 Ed H*0168
ef84d10314 Ed H*0169
1b5fb69d21 Ed H*0170
ef84d10314 Ed H*0171 SUBROUTINE MNC_DIM_UNLIM_SIZE(
0172 I fname,
3f2ea2a4ed Ed H*0173 I unlim_sz,
0174 I myThid )
ef84d10314 Ed H*0175
1b5fb69d21 Ed H*0176
0177
0178
0179
ef84d10314 Ed H*0180 implicit none
07155994b8 Mart*0181 #include "MNC_COMMON.h"
ef84d10314 Ed H*0182 #include "EEPARAMS.h"
853ee6565e Jean*0183 #include "netcdf.inc"
ef84d10314 Ed H*0184
1b5fb69d21 Ed H*0185
ef84d10314 Ed H*0186 integer myThid, unlim_sz
0187 character*(*) fname
e6bb5b2cc3 Ed H*0188
ef84d10314 Ed H*0189
1b5fb69d21 Ed H*0190
ef84d10314 Ed H*0191 integer i,j, nf, indf, fid, unlimid, err
0192 character*(MAX_LEN_MBUF) msgbuf
e6bb5b2cc3 Ed H*0193
1b5fb69d21 Ed H*0194
d77e828db7 Ed H*0195 integer ILNBLNK
ef84d10314 Ed H*0196
0197 nf = ILNBLNK(fname)
0198
0199
ef92f00980 Ed H*0200 CALL MNC_GET_IND(MNC_MAX_FID, fname, mnc_f_names, indf, myThid)
ef84d10314 Ed H*0201 IF (indf .LT. 1) THEN
0202 write(msgbuf,'(3a)') 'MNC ERROR: file ''', fname(1:nf),
0203 & ''' does not exist'
0204 CALL print_error(msgbuf, mythid)
0205 stop 'ABNORMAL END: S/R MNC_DIM_UNLIM_SIZE'
0206 ENDIF
0207 fid = mnc_f_info(indf,2)
0208
0209
0210 unlim_sz = -1
0211 DO i = 1,mnc_f_alld(indf,1)
0212 j = mnc_f_alld(indf,i+1)
0213 IF (mnc_d_size(j) .EQ. -1) THEN
0214 unlimid = mnc_d_ids(j)
0215 err = NF_INQ_DIMLEN(fid, unlimid, unlim_sz)
0216 write(msgbuf,'(3a)') 'MNC_DIM_UNLIM_SIZE ERROR: cannot ',
0217 & 'determine unlimited dim size in file ''', fname(1:nf)
3f2ea2a4ed Ed H*0218 CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
ef84d10314 Ed H*0219 RETURN
0220 ENDIF
0221 ENDDO
0222
0223 RETURN
0224 END
0225
0226
0227
0228