File indexing completed on 2018-03-02 18:42:28 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
7af3d6f22c Jean*0001 #include "OBCS_OPTIONS.h"
0002
daeae4b817 Jean*0003
0004
0005
0006
0007
7af3d6f22c Jean*0008 SUBROUTINE OBCS_APPLY_SURF_DR(
5fb8330347 Jean*0009 I bi, bj, etaFld,
7af3d6f22c Jean*0010 U hFac_FldC, hFac_FldW, hFac_FldS,
3814debfe6 Jean*0011 I myTime, myIter, myThid )
daeae4b817 Jean*0012
0013
0014
0015
0016
0017
0018
0019
7af3d6f22c Jean*0020 IMPLICIT NONE
0021
0022 #include "SIZE.h"
0023 #include "EEPARAMS.h"
0024 #include "PARAMS.h"
0025 #include "GRID.h"
daeae4b817 Jean*0026 #include "SURFACE.h"
6f4cf52d27 Dimi*0027 #include "OBCS_PARAMS.h"
9b4f2a04e2 Jean*0028 #include "OBCS_GRID.h"
0029 #include "OBCS_FIELDS.h"
7af3d6f22c Jean*0030
daeae4b817 Jean*0031
0032
5fb8330347 Jean*0033
0034
daeae4b817 Jean*0035
0036
3814debfe6 Jean*0037
0038
daeae4b817 Jean*0039
7af3d6f22c Jean*0040 INTEGER bi,bj
74019f026d Jean*0041 _RL etaFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
7af3d6f22c Jean*0042 _RS hFac_FldC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0043 _RS hFac_FldW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0044 _RS hFac_FldS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
3814debfe6 Jean*0045 _RL myTime
0046 INTEGER myIter, myThid
daeae4b817 Jean*0047
7af3d6f22c Jean*0048
0049 #ifdef NONLIN_FRSURF
0050
daeae4b817 Jean*0051
7af3d6f22c Jean*0052 INTEGER i,j,ks
5fb8330347 Jean*0053 LOGICAL useOBeta
7af3d6f22c Jean*0054 _RS hFacInfMOM, hFactmp
0055
0056
0057
daeae4b817 Jean*0058 hFacInfMOM = hFacInf
0059
5fb8330347 Jean*0060
0061
0062
0063 useOBeta = myIter.NE.-1
0064
daeae4b817 Jean*0065
0066 IF ( tileHasOBN(bi,bj) ) THEN
7af3d6f22c Jean*0067
74019f026d Jean*0068 DO i=1-OLx,sNx+OLx
0069 IF ( OB_Jn(i,bi,bj).NE.OB_indexNone ) THEN
0070 j = OB_Jn(i,bi,bj)
5fb8330347 Jean*0071 ks = kSurfS(i,j,bi,bj)
daeae4b817 Jean*0072 IF (ks.LE.Nr) THEN
5fb8330347 Jean*0073 IF ( useOBeta ) THEN
0074 hFactmp = h0FacS(i,j,ks,bi,bj)
0075 & + OBNeta(i,bi,bj)*recip_drF(ks)
0076 ELSE
0077 hFactmp = h0FacS(i,j,ks,bi,bj)
0078 & + etaFld(i,j,bi,bj)*recip_drF(ks)
0079 ENDIF
daeae4b817 Jean*0080 hFac_FldS(i,j,bi,bj) = MAX( hFacInfMOM, hFactmp )
0081 ENDIF
7af3d6f22c Jean*0082 ENDIF
daeae4b817 Jean*0083 ENDDO
0084 ENDIF
0085 IF ( tileHasOBS(bi,bj) ) THEN
7af3d6f22c Jean*0086
74019f026d Jean*0087 DO i=1-OLx,sNx+OLx
0088 IF ( OB_Js(i,bi,bj).NE.OB_indexNone ) THEN
0089 j = OB_Js(i,bi,bj)+1
5fb8330347 Jean*0090 ks = kSurfS(i,j,bi,bj)
daeae4b817 Jean*0091 IF (ks.LE.Nr) THEN
5fb8330347 Jean*0092 IF ( useOBeta ) THEN
0093 hFactmp = h0FacS(i,j,ks,bi,bj)
0094 & + OBSeta(i,bi,bj)*recip_drF(ks)
0095 ELSE
0096 hFactmp = h0FacS(i,j,ks,bi,bj)
0097 & + etaFld(i,j-1,bi,bj)*recip_drF(ks)
0098 ENDIF
daeae4b817 Jean*0099 hFac_FldS(i,j,bi,bj) = MAX( hFacInfMOM, hFactmp )
0100 ENDIF
7af3d6f22c Jean*0101 ENDIF
daeae4b817 Jean*0102 ENDDO
0103 ENDIF
7af3d6f22c Jean*0104
daeae4b817 Jean*0105
0106 IF ( tileHasOBE(bi,bj) ) THEN
7af3d6f22c Jean*0107
74019f026d Jean*0108 DO j=1-OLy,sNy+OLy
0109 IF ( OB_Ie(j,bi,bj).NE.OB_indexNone ) THEN
0110 i = OB_Ie(j,bi,bj)
5fb8330347 Jean*0111 ks = kSurfW(i,j,bi,bj)
daeae4b817 Jean*0112 IF (ks.LE.Nr) THEN
5fb8330347 Jean*0113 IF ( useOBeta ) THEN
0114 hFactmp = h0FacW(i,j,ks,bi,bj)
0115 & + OBEeta(j,bi,bj)*recip_drF(ks)
0116 ELSE
0117 hFactmp = h0FacW(i,j,ks,bi,bj)
0118 & + etaFld(i,j,bi,bj)*recip_drF(ks)
0119 ENDIF
daeae4b817 Jean*0120 hFac_FldW(i,j,bi,bj) = MAX( hFacInfMOM, hFactmp )
0121 ENDIF
7af3d6f22c Jean*0122 ENDIF
daeae4b817 Jean*0123 ENDDO
0124 ENDIF
0125 IF ( tileHasOBW(bi,bj) ) THEN
7af3d6f22c Jean*0126
74019f026d Jean*0127 DO j=1-OLy,sNy+OLy
0128 IF ( OB_Iw(j,bi,bj).NE.OB_indexNone ) THEN
0129 i = OB_Iw(j,bi,bj)+1
5fb8330347 Jean*0130 ks = kSurfW(i,j,bi,bj)
daeae4b817 Jean*0131 IF (ks.LE.Nr) THEN
5fb8330347 Jean*0132 IF ( useOBeta ) THEN
0133 hFactmp = h0FacW(i,j,ks,bi,bj)
0134 & + OBWeta(j,bi,bj)*recip_drF(ks)
0135 ELSE
0136 hFactmp = h0FacW(i,j,ks,bi,bj)
0137 & + etaFld(i-1,j,bi,bj)*recip_drF(ks)
0138 ENDIF
daeae4b817 Jean*0139 hFac_FldW(i,j,bi,bj) = MAX( hFacInfMOM, hFactmp )
0140 ENDIF
7af3d6f22c Jean*0141 ENDIF
daeae4b817 Jean*0142 ENDDO
0143 ENDIF
7af3d6f22c Jean*0144
0145
0146
0147 #endif /* NONLIN_FRSURF */
5fb8330347 Jean*0148
7af3d6f22c Jean*0149 RETURN
0150 END