File indexing completed on 2020-02-14 06:10:28 UTC
view on githubraw file Latest commit dff94812 on 2019-12-16 20:16:51 UTC
f15994caab Jean*0001
0002 #include "CPP_OPTIONS.h"
0003
0004
0005
0006
0007 SUBROUTINE INI_SIGMA_HFAC( myThid )
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 IMPLICIT NONE
0020
0021 #include "SIZE.h"
0022 #include "EEPARAMS.h"
0023 #include "PARAMS.h"
0024 #include "GRID.h"
0025 #include "SURFACE.h"
0026
0027
0028
0029
0030 INTEGER myThid
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041 INTEGER bi, bj
0042 INTEGER i, j, k
0043 _RS rEmpty
0044 _RL rFullDepth
0045 _RL tmpFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0046 _RL min_hFac
0047 _RL hFactmp
0048 CHARACTER*(MAX_LEN_MBUF) msgBuf
0049
0050
0051
0052
0053
0054 IF ( usingPCoords ) rEmpty = rF(Nr+1)
0055 IF ( usingZCoords ) rEmpty = rF(1)
0056 rFullDepth = rF(1)-rF(Nr+1)
0057
0058
0059 min_hFac = 1.
0060 DO bj=myByLo(myThid), myByHi(myThid)
0061 DO bi=myBxLo(myThid), myBxHi(myThid)
0062
0063
0064
0065
dff94812d5 Jean*0066 DO j=1-OLy,sNy+OLy
0067 DO i=1-OLx,sNx+OLx
f15994caab Jean*0068 tmpFld(i,j) = Ro_surf(i,j,bi,bj)-R_low(i,j,bi,bj)
0069
0070 IF ( tmpFld(i,j).LT.hFacInf*rFullDepth )
0071 & tmpFld(i,j) = 0. _d 0
0072 ENDDO
0073 ENDDO
0074
0075
0076
0077
0078
0079
dff94812d5 Jean*0080 DO j=1-OLy,sNy+OLy
0081 DO i=1-OLx,sNx+OLx
f15994caab Jean*0082 IF ( tmpFld(i,j).GT.0. _d 0 ) THEN
0083 kSurfC (i,j,bi,bj) = 1
0084 kLowC (i,j,bi,bj) = Nr
0085 maskInC(i,j,bi,bj) = 1.
0086 recip_Rcol(i,j,bi,bj) = 1. _d 0 / tmpFld(i,j)
0087 ELSE
0088 kSurfC (i,j,bi,bj) = Nr+1
0089 kLowC (i,j,bi,bj) = 0
0090 maskInC(i,j,bi,bj) = 0.
0091 recip_Rcol(i,j,bi,bj) = 0. _d 0
0092 Ro_surf(i,j,bi,bj) = rEmpty
0093 R_low(i,j,bi,bj) = rEmpty
0094 ENDIF
0095 ENDDO
0096 ENDDO
0097
0098 DO k=1, Nr
dff94812d5 Jean*0099 DO j=1-OLy,sNy+OLy
0100 DO i=1-OLx,sNx+OLx
f15994caab Jean*0101 IF ( maskInC(i,j,bi,bj).NE.0. _d 0 ) THEN
0102 hFactmp = ( dAHybSigF(k)*rFullDepth
0103 & + dBHybSigF(k)*tmpFld(i,j)
0104 & )*recip_drF(k)
0105 hFacC(i,j,k,bi,bj) = hFactmp
0106 min_hFac = MIN( min_hFac, hFactmp )
0107 ELSE
0108 hFacC(i,j,k,bi,bj) = 0.
0109 ENDIF
0110 ENDDO
0111 ENDDO
0112 ENDDO
0113
0114 ENDDO
0115 ENDDO
0116
0117 WRITE(msgBuf,'(A,1PE14.6)')
0118 & 'S/R INI_SIGMA_HFAC: minimum hFacC=', min_hFac
0119 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0120 & SQUEEZE_RIGHT, myThid )
0121
0122
0123
0124
0125
0126
0127
0128 DO bj=myByLo(myThid), myByHi(myThid)
0129 DO bi=myBxLo(myThid), myBxHi(myThid)
0130
0131 i = 1-OlX
dff94812d5 Jean*0132 DO j=1-OLy,sNy+OLy
f15994caab Jean*0133 rSurfW(i,j,bi,bj) = rEmpty
0134 rLowW (i,j,bi,bj) = rEmpty
0135 maskInW(i,j,bi,bj)= 0.
0136 ENDDO
dff94812d5 Jean*0137 j = 1-OLy
0138 DO i=1-OLx,sNx+OLx
f15994caab Jean*0139 rSurfS(i,j,bi,bj) = rEmpty
0140 rLowS (i,j,bi,bj) = rEmpty
0141 maskInS(i,j,bi,bj)= 0.
0142 ENDDO
dff94812d5 Jean*0143 DO j=1-OLy,sNy+OLy
0144 DO i=2-OLx,sNx+OLx
f15994caab Jean*0145 maskInW(i,j,bi,bj)= maskInC(i-1,j,bi,bj)*maskInC(i,j,bi,bj)
0146 rSurfW(i,j,bi,bj) =
0147 & ( Ro_surf(i-1,j,bi,bj)
0148 & + Ro_surf( i, j,bi,bj) )*0.5 _d 0
0149 rLowW(i,j,bi,bj) =
0150 & ( R_low(i-1,j,bi,bj)
0151 & + R_low( i, j,bi,bj) )*0.5 _d 0
0152
0153
0154
0155
0156
0157
0158
0159
0160 IF ( maskInW(i,j,bi,bj).EQ.0. ) THEN
0161 rSurfW(i,j,bi,bj) = rEmpty
0162 rLowW (i,j,bi,bj) = rEmpty
0163 ENDIF
0164 ENDDO
0165 ENDDO
dff94812d5 Jean*0166 DO j=2-OLy,sNy+OLy
0167 DO i=1-OLx,sNx+OLx
f15994caab Jean*0168 maskInS(i,j,bi,bj)= maskInC(i,j-1,bi,bj)*maskInC(i,j,bi,bj)
0169 rSurfS(i,j,bi,bj) =
0170 & ( Ro_surf(i,j-1,bi,bj)
0171 & + Ro_surf(i, j, bi,bj) )*0.5 _d 0
0172 rLowS(i,j,bi,bj) =
0173 & ( R_low(i,j-1,bi,bj)
0174 & + R_low(i, j, bi,bj) )*0.5 _d 0
0175
0176
0177
0178
0179
0180
0181
0182
0183 IF ( maskInS(i,j,bi,bj).EQ.0. ) THEN
0184 rSurfS(i,j,bi,bj) = rEmpty
0185 rLowS (i,j,bi,bj) = rEmpty
0186 ENDIF
0187 ENDDO
0188 ENDDO
0189 ENDDO
0190 ENDDO
0191 CALL EXCH_UV_XY_RS( rSurfW, rSurfS, .FALSE., myThid )
0192 CALL EXCH_UV_XY_RS( rLowW, rLowS, .FALSE., myThid )
0193 CALL EXCH_UV_XY_RS( maskInW, maskInS, .FALSE., myThid )
0194
0195
0196 DO bj=myByLo(myThid), myByHi(myThid)
0197 DO bi=myBxLo(myThid), myBxHi(myThid)
0198 DO k=1, Nr
dff94812d5 Jean*0199 DO j=1-OLy,sNy+OLy
0200 DO i=1-OLx,sNx+OLx
f15994caab Jean*0201 hFactmp =
0202 & ( dAHybSigF(k)*rFullDepth
0203 & + dBHybSigF(k)*( rSurfW(i,j,bi,bj)-rLowW(i,j,bi,bj) )
0204 & )*recip_drF(k)
0205 hFacW(i,j,k,bi,bj) = hFactmp*maskInW(i,j,bi,bj)
0206 ENDDO
0207 ENDDO
0208 ENDDO
0209 DO k=1, Nr
dff94812d5 Jean*0210 DO j=1-OLy,sNy+OLy
0211 DO i=1-OLx,sNx+OLx
f15994caab Jean*0212 hFactmp =
0213 & ( dAHybSigF(k)*rFullDepth
0214 & + dBHybSigF(k)*( rSurfS(i,j,bi,bj)-rLowS(i,j,bi,bj) )
0215 & )*recip_drF(k)
0216 hFacS(i,j,k,bi,bj) = hFactmp*maskInS(i,j,bi,bj)
0217 ENDDO
0218 ENDDO
0219 ENDDO
0220
dff94812d5 Jean*0221 DO j=1-OLy,sNy+OLy
0222 DO i=1-OLx,sNx+OLx
f15994caab Jean*0223 kSurfW(i,j,bi,bj) = Nr+1
0224 kSurfS(i,j,bi,bj) = Nr+1
0225 IF ( maskInW(i,j,bi,bj).NE.0. ) kSurfW(i,j,bi,bj) = 1
0226 IF ( maskInS(i,j,bi,bj).NE.0. ) kSurfS(i,j,bi,bj) = 1
0227 ENDDO
0228 ENDDO
0229
0230 ENDDO
0231 ENDDO
0232
dff94812d5 Jean*0233
0234
0235
0236
0237 CALL ADD_WALLS2MASKS( rEmpty, myThid )
0238
f15994caab Jean*0239 RETURN
0240 END