File indexing completed on 2024-11-07 06:11:08 UTC
view on githubraw file Latest commit 9f85ea26 on 2024-11-06 14:50:55 UTC
9c7e07a4e1 Jean*0001 #include "GRDCHK_OPTIONS.h"
a7eff9e819 Jean*0002 #ifdef ALLOW_CTRL
0003 # include "CTRL_OPTIONS.h"
0004 #endif
f81d465bd0 Patr*0005
9f85ea262e Mart*0006
0007
0008
0009 SUBROUTINE GRDCHK_GET_POSITION( myThid )
f81d465bd0 Patr*0010
9f85ea262e Mart*0011
0012
0013
0014
0015
0016
f81d465bd0 Patr*0017
9f85ea262e Mart*0018
0019 IMPLICIT NONE
f81d465bd0 Patr*0020
0021 #include "EEPARAMS.h"
0022 #include "SIZE.h"
0023 #include "GRID.h"
e6556bc77a Mart*0024 #ifdef ALLOW_SHELFICE
0025 # include "SHELFICE.h"
9c7e07a4e1 Jean*0026 #endif
c732bd258e Patr*0027 #ifdef ALLOW_OBCS
0028 # include "OBCS_GRID.h"
0029 #endif
5cf4364659 Mart*0030 #include "CTRL_SIZE.h"
4d72283393 Mart*0031 #include "CTRL.h"
444da61630 Mart*0032 #ifdef ALLOW_OBCS_CONTROL
0033
0034 # include "CTRL_OBCS.h"
0035 #endif
0036 #include "GRDCHK.h"
f81d465bd0 Patr*0037
9f85ea262e Mart*0038
0039 INTEGER myThid
f81d465bd0 Patr*0040
9f5240b52a Jean*0041 #ifdef ALLOW_GRDCHK
9f85ea262e Mart*0042
0043 INTEGER icvrec
0044 INTEGER jtile
0045 INTEGER itile
0046 INTEGER layer
0047 INTEGER obcspos
0048 INTEGER itilepos
0049 INTEGER jtilepos
0050 INTEGER itest
0051 INTEGER ierr
0052 INTEGER bi,bj
0053 INTEGER i,j,k
0054 INTEGER iobcs
0055 INTEGER iwrk, jwrk, kwrk
0056 INTEGER irec, irecwrk
0057 INTEGER icomptest
0058 INTEGER nobcsmax
0059 INTEGER pastit
f81d465bd0 Patr*0060 _RL wetlocal
9f85ea262e Mart*0061
f81d465bd0 Patr*0062
9f85ea262e Mart*0063
0064 itile = iLocTile
0065 jtile = jLocTile
e4b263335d Patr*0066 itilepos = iGloPos
0067 jtilepos = jGloPos
f81d465bd0 Patr*0068 layer = kGloPos
0069 obcspos = obcsglo
0070 icvrec = recglo
0071
9f85ea262e Mart*0072 _BEGIN_MASTER( myThid )
e4b263335d Patr*0073
9f85ea262e Mart*0074
0075
ef53b829d7 Jean*0076
9f85ea262e Mart*0077 IF ( myProcId .EQ. grdchkwhichproc ) THEN
f81d465bd0 Patr*0078
9f85ea262e Mart*0079
0080 ierr = -5
0081 pastit = -1
0082 wetlocal = 0
f81d465bd0 Patr*0083
9f85ea262e Mart*0084 itest = 0
0085 icomptest = 0
0086 irecwrk = 1
0087 kwrk = 1
0088 jwrk = 1
0089 iwrk = 1
f81d465bd0 Patr*0090
9f85ea262e Mart*0091
0092 IF ( ncvargrd(grdchkvarindex) .EQ. 'm' ) THEN
444da61630 Mart*0093 #ifdef ALLOW_OBCS_CONTROL
9f85ea262e Mart*0094 nobcsmax = nobcs
444da61630 Mart*0095 #else
9f85ea262e Mart*0096 PRINT *, 'S/R grdchk_get_position: Ooops!'
444da61630 Mart*0097 #endif
9f85ea262e Mart*0098 ELSE
0099 nobcsmax = 1
0100 ENDIF
0101
0102
0103 DO irec = irecwrk, ncvarrecs(grdchkvarindex)
0104 iobcs = MOD((irec-1),nobcsmax) + 1
0105 bi = itile
0106 bj = jtile
0107 DO k = kwrk, ncvarnrmax(grdchkvarindex)
e4b263335d Patr*0108
9f85ea262e Mart*0109
ef53b829d7 Jean*0110
e4b263335d Patr*0111
9f85ea262e Mart*0112 IF ( ierr .ne. 0 ) THEN
0113 DO j = jwrk, ncvarymax(grdchkvarindex)
0114 DO i = iwrk, ncvarxmax(grdchkvarindex)
0115 IF (ierr .NE. 0) THEN
0116 IF ( ncvargrd(grdchkvarindex) .EQ. 'c' ) THEN
0117 IF ( maskC(i,j,k,bi,bj) .GT. 0.) THEN
0118 icomptest = icomptest + 1
0119 ENDIF
0120 wetlocal = maskC(i,j,k,bi,bj)
0121 ELSEIF ( ncvargrd(grdchkvarindex) .EQ. 's' ) THEN
0122 IF ( _maskS(i,j,k,bi,bj) .GT. 0.) THEN
0123 icomptest = icomptest + 1
0124 ENDIF
0125 wetlocal = _maskS(i,j,k,bi,bj)
0126 ELSEIF ( ncvargrd(grdchkvarindex) .EQ. 'w' ) THEN
0127 IF ( _maskW(i,j,k,bi,bj) .GT. 0.) THEN
0128 icomptest = icomptest + 1
0129 ENDIF
0130 wetlocal = _maskW(i,j,k,bi,bj)
6b47d550f4 Mart*0131 #ifdef ALLOW_SHELFICE
9f85ea262e Mart*0132
0133 ELSEIF ( ncvargrd(grdchkvarindex) .EQ. 'i' ) THEN
0134 IF ( maskSHI(i,j,k,bi,bj) .GT. 0.) THEN
0135 icomptest = icomptest + 1
0136 ENDIF
0137 wetlocal = maskSHI(i,j,k,bi,bj)
6b47d550f4 Mart*0138 #endif /* ALLOW_SHELFICE */
5cf4364659 Mart*0139 #ifdef ALLOW_OBCS_CONTROL
9f85ea262e Mart*0140 ELSEIF ( ncvargrd(grdchkvarindex) .EQ. 'm' ) THEN
0141 IF ( ncvarfname(grdchkvarindex)
0142 & .EQ. xx_obcsn_file ) THEN
f81d465bd0 Patr*0143 #ifdef ALLOW_OBCSN_CONTROL
9f85ea262e Mart*0144 IF (grdchk_maskxz(i,k,bi,bj,iobcs) .GT. 0.
0145 & .AND. j .EQ. OB_Jn(i,bi,bj) ) THEN
0146 icomptest = icomptest + 1
0147 ENDIF
0148 wetlocal = grdchk_maskxz(i,k,bi,bj,iobcs)
f81d465bd0 Patr*0149 #endif
9f85ea262e Mart*0150 ELSEIF ( ncvarfname(grdchkvarindex)
0151 & .EQ. xx_obcss_file ) THEN
f81d465bd0 Patr*0152 #ifdef ALLOW_OBCSS_CONTROL
9f85ea262e Mart*0153 IF (grdchk_maskxz(i,k,bi,bj,iobcs) .GT. 0.
0154 & .AND. j .EQ. OB_Js(i,bi,bj) ) THEN
0155 icomptest = icomptest + 1
0156 ENDIF
0157 wetlocal = grdchk_maskxz(i,k,bi,bj,iobcs)
f81d465bd0 Patr*0158 #endif
9f85ea262e Mart*0159 ELSEIF ( ncvarfname(grdchkvarindex)
0160 & .EQ. xx_obcse_file ) THEN
5cf4364659 Mart*0161 #ifdef ALLOW_OBCSE_CONTROL
9f85ea262e Mart*0162 IF (grdchk_maskyz(j,k,bi,bj,iobcs) .GT. 0.
0163 & .AND. i .EQ. OB_Ie(j,bi,bj) ) THEN
0164 icomptest = icomptest + 1
0165 ENDIF
0166 wetlocal = grdchk_maskyz(j,k,bi,bj,iobcs)
f81d465bd0 Patr*0167 #endif
9f85ea262e Mart*0168 ELSEIF ( ncvarfname(grdchkvarindex)
0169 & .EQ. xx_obcsw_file ) THEN
5cf4364659 Mart*0170 #ifdef ALLOW_OBCSW_CONTROL
9f85ea262e Mart*0171 IF ( grdchk_maskyz(j,k,bi,bj,iobcs) .GT. 0.
0172 & .AND. i .EQ. OB_Iw(j,bi,bj) ) THEN
0173 icomptest = icomptest + 1
0174 ENDIF
0175 wetlocal = grdchk_maskyz(j,k,bi,bj,iobcs)
f81d465bd0 Patr*0176 #endif
9f85ea262e Mart*0177 ENDIF
5cf4364659 Mart*0178 #endif /* ALLOW_OBCS_CONTROL */
9f85ea262e Mart*0179 ENDIF
0180
0181 IF ( i .EQ. itilepos .AND.
0182 & j .EQ. jtilepos .AND.
0183 & k .EQ. layer .AND.
0184 & bi .EQ. itile .AND.
0185 & bj .EQ. jtile .AND.
0186 & iobcs .EQ. obcspos .AND.
0187 & irec .EQ. icvrec ) THEN
0188 pastit = 0
0189 IF ( wetlocal .NE.0 ) THEN
0190 nbeg = icomptest
0191 nend = nbeg + nend
0192 ierr = 0
0193 WRITE(standardMessageUnit,'(a,6I5)')
0194 & ' grad-res exact position met: '
0195 WRITE(standardMessageUnit,'(a,7I5)')
0196 & ' grad-res ', grdchkwhichproc,
0197 & nbeg, itilepos, jtilepos, layer,
0198 & itile, jtile
0199 GOTO 1234
0200 ENDIF
0201 ELSEIF ( pastit .EQ. 0 .AND. wetlocal .NE.0 ) THEN
0202 nbeg = icomptest
0203 nend = nbeg + nend
0204 ierr = 0
0205 WRITE(standardMessageUnit,'(a,6I5)')
0206 & ' grad-res closest next position: '
0207 WRITE(standardMessageUnit,'(a,7I5)')
0208 & ' grad-res ', grdchkwhichproc,
0209 & nbeg, itilepos, jtilepos, layer,
0210 & itile, jtile
0211 GOTO 1234
0212 ENDIF
0213
0214 ENDIF
0215 ENDDO
0216 iwrk = 1
0217 ENDDO
0218 jwrk = 1
0219 ELSEIF (ierr .NE. 0) THEN
0220 itest = itest + nwettile(bi,bj,k,iobcs)
0221 iwrk = 1
0222 jwrk = 1
0223 ENDIF
0224
0225
0226 ENDDO
0227
0228
0229 ENDDO
0230
0231
0232 ENDIF
0233
0234 1234 CONTINUE
0235
0236 _END_MASTER( myThid )
f81d465bd0 Patr*0237
0238 _BARRIER
0239
0240 #endif /* ALLOW_GRDCHK */
0241
9f85ea262e Mart*0242 RETURN
0243 END