File indexing completed on 2018-03-02 18:41:59 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
5280ebf5f3 Ed H*0001 #include "MNC_OPTIONS.h"
0002
0003
0004
0005
0006
0007
0008 SUBROUTINE MNC_CW_INIT(
0009 I sNx,sNy, OLx,OLy, nSx,nSy, nPx,nPy, Nr,
0010 I myThid )
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 implicit none
07155994b8 Mart*0039 #include "MNC_COMMON.h"
5280ebf5f3 Ed H*0040 #include "EEPARAMS.h"
0041
0042
0043 integer myThid
0044 integer sNx,sNy, OLx,OLy, nSx,nSy, nPx,nPy, Nr
0045
0046
0047
0048 integer CW_MAX_LOC
2cc3b69a26 Ed H*0049 parameter ( CW_MAX_LOC = 6 )
5280ebf5f3 Ed H*0050 integer i, ihorz,ihsub,ivert,itime,ihalo, is,ih, n,ntot
0051 integer ndim, ncomb, nvch
0052 character*(MNC_MAX_CHAR) name
0053 character*(MNC_MAX_CHAR) dn(CW_MAX_LOC)
0054 character*(5) horz_dat(CW_MAX_LOC), hsub_dat(CW_MAX_LOC),
0055 & vert_dat(CW_MAX_LOC), time_dat(CW_MAX_LOC),
0056 & halo_dat(CW_MAX_LOC)
0057 integer dim(CW_MAX_LOC), ib(CW_MAX_LOC), ie(CW_MAX_LOC)
0058
0059
0060 integer ILNBLNK
0061 external ILNBLNK
0062
0063
0064 data horz_dat /
2cc3b69a26 Ed H*0065 & '- ', 'U ', 'V ', 'Cen ', 'Cor ', ' ' /
5280ebf5f3 Ed H*0066 data hsub_dat /
2cc3b69a26 Ed H*0067 & 'xy ', 'x ', 'y ', '- ', ' ', ' ' /
5280ebf5f3 Ed H*0068 data halo_dat /
2cc3b69a26 Ed H*0069 & 'Hn ', 'Hy ', '-- ', ' ', ' ', ' ' /
5280ebf5f3 Ed H*0070 data vert_dat /
2cc3b69a26 Ed H*0071 & '- ', 'C ', 'I ', 'L ', 'U ', 'S ' /
5280ebf5f3 Ed H*0072 data time_dat /
2cc3b69a26 Ed H*0073 & '- ', 't ', ' ', ' ', ' ', ' ' /
5280ebf5f3 Ed H*0074
d77e828db7 Ed H*0075
5280ebf5f3 Ed H*0076 ncomb = 0
0077 DO ihorz = 1,5
0078 DO is = 1,3
0079 DO ih = 1,2
0080
0081
0082 ihsub = is
0083 ihalo = ih
0084 IF (ihorz .EQ. 1) THEN
0085 IF ((is .EQ. 1) .AND. (ih .EQ. 1)) THEN
0086 ihsub = 4
0087 ihalo = 3
0088 ELSE
0089 GOTO 10
0090 ENDIF
0091 ENDIF
0092
2cc3b69a26 Ed H*0093 DO ivert = 1,6
5280ebf5f3 Ed H*0094 DO itime = 1,2
0095
0096
0097 name(1:MNC_MAX_CHAR) = mnc_blank_name(1:MNC_MAX_CHAR)
0098 n = ILNBLNK(horz_dat(ihorz))
0099 name(1:n) = horz_dat(ihorz)(1:n)
0100 ntot = n + 1
0101 name(ntot:ntot) = '_'
0102 n = ILNBLNK(hsub_dat(ihsub))
0103 name((ntot+1):(ntot+n)) = hsub_dat(ihsub)(1:n)
0104 ntot = ntot + n
0105
0106
0107 write(name((ntot+1):(ntot+5)), '(a1,2a2)')
0108 & '_', halo_dat(ihalo)(1:2), '__'
0109 nvch = ILNBLNK(vert_dat(ivert))
0110 n = ntot+6+nvch-1
0111 name((ntot+6):(n)) = vert_dat(ivert)(1:nvch)
0112 write(name((n+1):(n+3)), '(a2,a1)')
0113 & '__', time_dat(itime)(1:1)
0114
0115 ndim = 0
0116 DO i = 1,CW_MAX_LOC
0117 dn(i)(1:MNC_MAX_CHAR)=mnc_blank_name(1:MNC_MAX_CHAR)
0118 dim(i) = 0
0119 ib(i) = 0
0120 ie(i) = 0
0121 ENDDO
0122
0123
0124 IF (halo_dat(ihalo)(1:5) .EQ. 'Hn ') THEN
0125
0126 IF (hsub_dat(ihsub)(1:1) .EQ. 'x') THEN
0127 ndim = ndim + 1
0128 IF ( (horz_dat(ihorz)(1:3) .EQ. 'Cen')
0129 & .OR. (horz_dat(ihorz)(1:1) .EQ. 'V') ) THEN
0130 dn(ndim)(1:1) = 'X'
0131 dim(ndim) = sNx + 2*OLx
0132 ib(ndim) = OLx + 1
0133 ie(ndim) = OLx + sNx
0134 ENDIF
0135 IF ( (horz_dat(ihorz)(1:3) .EQ. 'Cor')
0136 & .OR. (horz_dat(ihorz)(1:1) .EQ. 'U') ) THEN
0137 dn(ndim)(1:3) = 'Xp1'
0138 dim(ndim) = sNx + 2*OLx
0139 ib(ndim) = OLx + 1
0140 ie(ndim) = OLx + sNx + 1
0141 ENDIF
0142 ENDIF
0143 IF ((hsub_dat(ihsub)(1:1) .EQ. 'y')
0144 & .OR. (hsub_dat(ihsub)(2:2) .EQ. 'y')) THEN
0145 ndim = ndim + 1
0146 IF ( (horz_dat(ihorz)(1:3) .EQ. 'Cen')
0147 & .OR. (horz_dat(ihorz)(1:1) .EQ. 'U') ) THEN
0148 dn(ndim)(1:1) = 'Y'
0149 dim(ndim) = sNy + 2*OLy
0150 ib(ndim) = OLy + 1
0151 ie(ndim) = OLy + sNy
0152 ENDIF
0153 IF ( (horz_dat(ihorz)(1:3) .EQ. 'Cor')
0154 & .OR. (horz_dat(ihorz)(1:1) .EQ. 'V') ) THEN
0155 dn(ndim)(1:3) = 'Yp1'
0156 dim(ndim) = sNy + 2*OLy
0157 ib(ndim) = OLy + 1
0158 ie(ndim) = OLy + sNy + 1
0159 ENDIF
0160 ENDIF
0161
0162 ELSEIF (halo_dat(ihalo)(1:5) .EQ. 'Hy ') THEN
0163
0164 IF (hsub_dat(ihsub)(1:1) .EQ. 'x') THEN
0165 ndim = ndim + 1
0166 dn(ndim)(1:3) = 'Xwh'
0167 dim(ndim) = sNx + 2*OLx
0168 ib(ndim) = 1
0169 ie(ndim) = sNx + 2*OLx
0170 ENDIF
0171 IF ((hsub_dat(ihsub)(1:1) .EQ. 'y')
0172 & .OR. (hsub_dat(ihsub)(2:2) .EQ. 'y')) THEN
0173 ndim = ndim + 1
0174 dn(ndim)(1:3) = 'Ywh'
0175 dim(ndim) = sNy + 2*OLy
0176 ib(ndim) = 1
0177 ie(ndim) = sNy + 2*OLy
0178 ENDIF
0179
0180 ENDIF
0181
0182
0183 IF (vert_dat(ivert)(1:1) .EQ. 'C') THEN
0184 ndim = ndim + 1
0185 dn(ndim)(1:1) = 'Z'
0186 dim(ndim) = Nr
0187 ib(ndim) = 1
0188 ie(ndim) = Nr
0189 ENDIF
0190 IF (vert_dat(ivert)(1:1) .EQ. 'I') THEN
0191 ndim = ndim + 1
0192 dn(ndim)(1:3) = 'Zp1'
0193 dim(ndim) = Nr + 1
0194 ib(ndim) = 1
0195 ie(ndim) = Nr + 1
0196 ENDIF
2cc3b69a26 Ed H*0197 IF (vert_dat(ivert)(1:1) .EQ. 'L') THEN
0198 ndim = ndim + 1
0199 dn(ndim)(1:2) = 'Zl'
0200 dim(ndim) = Nr
0201 ib(ndim) = 1
0202 ie(ndim) = Nr
0203 ENDIF
0204 IF (vert_dat(ivert)(1:1) .EQ. 'U') THEN
0205 ndim = ndim + 1
0206 dn(ndim)(1:2) = 'Zu'
0207 dim(ndim) = Nr
0208 ib(ndim) = 1
0209 ie(ndim) = Nr
0210 ENDIF
0211 IF (vert_dat(ivert)(1:1) .EQ. 'M') THEN
0212 ndim = ndim + 1
0213 dn(ndim)(1:3) = 'Zm1'
0214 dim(ndim) = Nr - 1
0215 ib(ndim) = 1
0216 ie(ndim) = Nr - 1
0217 ENDIF
5280ebf5f3 Ed H*0218
0219
0220 IF (time_dat(itime)(1:1) .EQ. 't') THEN
0221 ndim = ndim + 1
0222 dn(ndim)(1:1) = 'T'
0223 dim(ndim) = -1
0224 ib(ndim) = 1
0225 ie(ndim) = 1
0226 ENDIF
0227
0228 IF (ndim .GT. 0) THEN
0229 #ifdef MNC_DEBUG
0230 ncomb = ncomb + 1
0231 write(*,'(i4,a3,a15,i3,a3,5i4,a4,5i4,a4,5i4,6a4)')
0232 & ncomb, ' : ', name(1:15), ndim,
0233 & ' : ', (dim(i), i=1,5),
0234 & ' | ', (ib(i), i=1,5),
0235 & ' | ', (ie(i), i=1,5),
0236 & ' | ', (dn(i)(1:4), i=1,5)
0237 #endif
0238
0239 CALL MNC_CW_ADD_GNAME(name, ndim,
0240 & dim, dn, ib, ie, myThid)
0241 ENDIF
0242
0243 ENDDO
0244 ENDDO
0245
0246 10 CONTINUE
0247 ENDDO
0248 ENDDO
0249 ENDDO
0250
0251 RETURN
0252 END
0253
0254