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
4535e90cda Jean*0001 #include "OBCS_OPTIONS.h"
0002
00f96d7f83 Jean*0003
0004
0005
0006
0007
4535e90cda Jean*0008 SUBROUTINE OBCS_APPLY_R_STAR(
5fb8330347 Jean*0009 I bi, bj, etaFld,
4535e90cda Jean*0010 U rStarFldC, rStarFldW, rStarFldS,
0011 I myTime, myIter, myThid )
00f96d7f83 Jean*0012
0013
4535e90cda Jean*0014
0015
0016
00f96d7f83 Jean*0017
0018
4535e90cda Jean*0019 IMPLICIT NONE
0020
0021 #include "SIZE.h"
0022 #include "EEPARAMS.h"
0023 #include "PARAMS.h"
0024 #include "GRID.h"
6f4cf52d27 Dimi*0025 #include "OBCS_PARAMS.h"
9b4f2a04e2 Jean*0026 #include "OBCS_GRID.h"
0027 #include "OBCS_FIELDS.h"
4535e90cda Jean*0028
00f96d7f83 Jean*0029
0030
5fb8330347 Jean*0031
00f96d7f83 Jean*0032
0033
0034
0035
0036
0037
5fb8330347 Jean*0038 INTEGER bi, bj
74019f026d Jean*0039 _RL etaFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
4535e90cda Jean*0040 _RL rStarFldC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0041 _RL rStarFldW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0042 _RL rStarFldS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0043 _RL myTime
0044 INTEGER myIter, myThid
00f96d7f83 Jean*0045
4535e90cda Jean*0046
0047 #ifdef NONLIN_FRSURF
cb811659bb Patr*0048 #ifndef DISABLE_RSTAR_CODE
4535e90cda Jean*0049
00f96d7f83 Jean*0050
4535e90cda Jean*0051 INTEGER i,j
5fb8330347 Jean*0052 LOGICAL useOBeta
4535e90cda Jean*0053
0054
0055
5fb8330347 Jean*0056
0057
0058
0059 useOBeta = myIter.NE.-1
0060
4535e90cda Jean*0061
00f96d7f83 Jean*0062 IF ( tileHasOBN(bi,bj) ) THEN
4535e90cda Jean*0063
74019f026d Jean*0064 DO i=1-OLx,sNx+OLx
0065 IF ( OB_Jn(i,bi,bj).NE.OB_indexNone ) THEN
0066 j = OB_Jn(i,bi,bj)
5fb8330347 Jean*0067 IF (kSurfS(i,j,bi,bj).LE.Nr) THEN
0068 IF ( useOBeta ) THEN
0069 rStarFldS(i,j,bi,bj) = 1. _d 0
0070 & + OBNeta( j,bi,bj) / (rSurfS(i,j,bi,bj)-rLowS(i,j,bi,bj))
0071 ELSE
0072 rStarFldS(i,j,bi,bj) = 1. _d 0
0073 & + etaFld(i,j,bi,bj) / (rSurfS(i,j,bi,bj)-rLowS(i,j,bi,bj))
0074 ENDIF
00f96d7f83 Jean*0075 ENDIF
4535e90cda Jean*0076 ENDIF
00f96d7f83 Jean*0077 ENDDO
0078 ENDIF
0079 IF ( tileHasOBS(bi,bj) ) THEN
4535e90cda Jean*0080
74019f026d Jean*0081 DO i=1-OLx,sNx+OLx
0082 IF ( OB_Js(i,bi,bj).NE.OB_indexNone ) THEN
0083 j = OB_Js(i,bi,bj)+1
5fb8330347 Jean*0084 IF (kSurfS(i,j,bi,bj).LE.Nr) THEN
0085 IF ( useOBeta ) THEN
0086 rStarFldS(i,j,bi,bj) = 1. _d 0
0087 & + OBSeta( j,bi,bj) / (rSurfS(i,j,bi,bj)-rLowS(i,j,bi,bj))
0088 ELSE
0089 rStarFldS(i,j,bi,bj) = 1. _d 0
0090 & + etaFld(i,j-1,bi,bj)/(rSurfS(i,j,bi,bj)-rLowS(i,j,bi,bj))
0091 ENDIF
00f96d7f83 Jean*0092 ENDIF
4535e90cda Jean*0093 ENDIF
00f96d7f83 Jean*0094 ENDDO
0095 ENDIF
4535e90cda Jean*0096
0097
00f96d7f83 Jean*0098 IF ( tileHasOBE(bi,bj) ) THEN
4535e90cda Jean*0099
74019f026d Jean*0100 DO j=1-OLy,sNy+OLy
0101 IF ( OB_Ie(j,bi,bj).NE.OB_indexNone ) THEN
0102 i = OB_Ie(j,bi,bj)
5fb8330347 Jean*0103 IF (kSurfW(i,j,bi,bj).LE.Nr) THEN
0104 IF ( useOBeta ) THEN
0105 rStarFldW(i,j,bi,bj) = 1. _d 0
0106 & + OBEeta( j,bi,bj) / (rSurfW(i,j,bi,bj)-rLowW(i,j,bi,bj))
0107 ELSE
0108 rStarFldW(i,j,bi,bj) = 1. _d 0
0109 & + etaFld(i,j,bi,bj) / (rSurfW(i,j,bi,bj)-rLowW(i,j,bi,bj))
0110 ENDIF
00f96d7f83 Jean*0111 ENDIF
4535e90cda Jean*0112 ENDIF
00f96d7f83 Jean*0113 ENDDO
0114 ENDIF
0115 IF ( tileHasOBW(bi,bj) ) THEN
4535e90cda Jean*0116
74019f026d Jean*0117 DO j=1-OLy,sNy+OLy
0118 IF ( OB_Iw(j,bi,bj).NE.OB_indexNone ) THEN
0119 i = OB_Iw(j,bi,bj)+1
5fb8330347 Jean*0120 IF (kSurfW(i,j,bi,bj).LE.Nr) THEN
0121 IF ( useOBeta ) THEN
0122 rStarFldW(i,j,bi,bj) = 1. _d 0
0123 & + OBWeta( j,bi,bj) / (rSurfW(i,j,bi,bj)-rLowW(i,j,bi,bj))
0124 ELSE
0125 rStarFldW(i,j,bi,bj) = 1. _d 0
0126 & + etaFld(i-1,j,bi,bj)/(rSurfW(i,j,bi,bj)-rLowW(i,j,bi,bj))
0127 ENDIF
00f96d7f83 Jean*0128 ENDIF
4535e90cda Jean*0129 ENDIF
00f96d7f83 Jean*0130 ENDDO
0131 ENDIF
4535e90cda Jean*0132
0133
0134
cb811659bb Patr*0135 #endif /* DISABLE_RSTAR_CODE */
4535e90cda Jean*0136 #endif /* NONLIN_FRSURF */
5fb8330347 Jean*0137
4535e90cda Jean*0138 RETURN
0139 END