File indexing completed on 2022-02-16 06:09:20 UTC
view on githubraw file Latest commit 4676ff26 on 2022-02-11 10:50:43 UTC
6f4cf52d27 Dimi*0001 #include "OBCS_OPTIONS.h"
0002
0003
0004
0005
0006
0007
0008 SUBROUTINE OBCS_ADD_TIDES( myTime, myIter, myThid )
0009
0010
0011
0012
0013
b13b04666e Dimi*0014
0015
4676ff26c7 ndet*0016
6f4cf52d27 Dimi*0017
0018
0019
0020 IMPLICIT NONE
0021
0022
0023 #include "SIZE.h"
0024 #include "EEPARAMS.h"
0025 #include "PARAMS.h"
0026 #include "GRID.h"
0027 #include "OBCS_PARAMS.h"
0028 #include "OBCS_GRID.h"
0029 #include "OBCS_FIELDS.h"
0030
0031
0032 _RL myTime
0033 INTEGER myIter
0034 INTEGER myThid
0035
0036
0037 #ifdef ALLOW_OBCS
beb3b14177 Dimi*0038 #ifdef ALLOW_OBCS_TIDES
6f4cf52d27 Dimi*0039
0040
0041
0042
0043
0044
0045
0046
0047 INTEGER bi, bj
0048 INTEGER i, j, k, iB, jB
0049 INTEGER td
0050
0051 #ifdef ALLOW_DEBUG
0052 IF (debugMode) CALL DEBUG_ENTER('OBCS_ADD_TIDES',myThid)
0053 #endif
0054
0055
4676ff26c7 ndet*0056 DO td=1,tidalComponents
0057 IF ( tidalPeriod(td) .GT. 0.D0 ) THEN
0058 DO bj=myByLo(myThid),myByHi(myThid)
0059 DO bi=myBxLo(myThid),myBxHi(myThid)
6f4cf52d27 Dimi*0060
0061 #ifdef ALLOW_OBCS_EAST
4676ff26c7 ndet*0062 IF ( tileHasOBE(bi,bj) ) THEN
0063 DO k=1,Nr
0064 DO j=1-OLy,sNy+OLy
0065 iB = OB_Ie(j,bi,bj)
0066 IF ( iB.NE.OB_indexNone ) THEN
0067 OBEu(j,k,bi,bj) = OBEu(j,k,bi,bj) +
6f4cf52d27 Dimi*0068 & maskW(iB,j,k,bi,bj) * OBEam(j,td,bi,bj) *
0069 & COS( 2.D0 * PI * (myTime-OBEph(j,td,bi,bj)) /
0070 & tidalPeriod(td) )
4676ff26c7 ndet*0071 ENDIF
6f4cf52d27 Dimi*0072 ENDDO
4676ff26c7 ndet*0073 ENDDO
0074 ENDIF
6f4cf52d27 Dimi*0075 #endif /* ALLOW_OBCS_EAST */
0076
0077 #ifdef ALLOW_OBCS_WEST
4676ff26c7 ndet*0078 IF ( tileHasOBW(bi,bj) ) THEN
0079 DO k=1,Nr
0080 DO j=1-OLy,sNy+OLy
0081 iB = OB_Iw(j,bi,bj)
0082 IF ( iB.NE.OB_indexNone ) THEN
0083 OBWu(j,k,bi,bj) = OBWu(j,k,bi,bj) +
6f4cf52d27 Dimi*0084 & maskW(1+iB,j,k,bi,bj) * OBWam(j,td,bi,bj) *
0085 & COS( 2.D0 * PI * (myTime-OBWph(j,td,bi,bj)) /
0086 & tidalPeriod(td) )
4676ff26c7 ndet*0087 ENDIF
6f4cf52d27 Dimi*0088 ENDDO
4676ff26c7 ndet*0089 ENDDO
0090 ENDIF
6f4cf52d27 Dimi*0091 #endif /* ALLOW_OBCS_WEST */
0092
0093 #ifdef ALLOW_OBCS_NORTH
4676ff26c7 ndet*0094 IF ( tileHasOBN(bi,bj) ) THEN
0095 DO k=1,Nr
0096 DO i=1-OLx,sNx+OLx
0097 jB = OB_Jn(i,bi,bj)
0098 IF ( jB.NE.OB_indexNone ) THEN
0099 OBNv(i,k,bi,bj) = OBNv(i,k,bi,bj) +
6f4cf52d27 Dimi*0100 & maskS(i,jB,k,bi,bj) * OBNam(i,td,bi,bj) *
0101 & COS( 2.D0 * PI * (myTime-OBNph(i,td,bi,bj)) /
0102 & tidalPeriod(td) )
4676ff26c7 ndet*0103 ENDIF
6f4cf52d27 Dimi*0104 ENDDO
4676ff26c7 ndet*0105 ENDDO
0106 ENDIF
6f4cf52d27 Dimi*0107 #endif /* ALLOW_OBCS_NORTH */
0108
0109 #ifdef ALLOW_OBCS_SOUTH
4676ff26c7 ndet*0110 IF ( tileHasOBS(bi,bj) ) THEN
0111 DO k=1,Nr
0112 DO i=1-OLx,sNx+OLx
0113 jB = OB_Js(i,bi,bj)
0114 IF ( jB.NE.OB_indexNone ) THEN
0115 OBSv(i,k,bi,bj) = OBSv(i,k,bi,bj) +
beb3b14177 Dimi*0116 & maskS(i,1+jB,k,bi,bj)* OBSam(i,td,bi,bj) *
6f4cf52d27 Dimi*0117 & COS( 2.D0 * PI * (myTime-OBSph(i,td,bi,bj)) /
0118 & tidalPeriod(td) )
4676ff26c7 ndet*0119 ENDIF
6f4cf52d27 Dimi*0120 ENDDO
4676ff26c7 ndet*0121 ENDDO
0122 ENDIF
6f4cf52d27 Dimi*0123 #endif /* ALLOW_OBCS_SOUTH */
0124
4676ff26c7 ndet*0125 ENDDO
0126 ENDDO
0127 ENDIF
6f4cf52d27 Dimi*0128 ENDDO
0129
0130 #ifdef ALLOW_DEBUG
0131 IF (debugMode) CALL DEBUG_LEAVE('OBCS_ADD_TIDES',myThid)
0132 #endif
0133
0134 #endif /* ALLOW_OBCS_TIDES */
0135 #endif /* ALLOW_OBCS */
0136
0137 RETURN
0138 END