File indexing completed on 2018-03-02 18:42:25 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
08be60903a Mart*0001 #include "MY82_OPTIONS.h"
0002
0003
0004
0005
0006
0007 subroutine MY82_RI_NUMBER(
94c8eb5701 Jean*0008 I bi, bj, K, iMin, iMax, jMin, jMax,
08be60903a Mart*0009 O RiNumber, buoyFreq, vertShear,
0010 I myTime, myThid )
0011
0012
0013
0014
0015
0016
0017
0018 IMPLICIT NONE
0019
0020
0021
0022
0023
0024
0025 #include "SIZE.h"
0026 #include "EEPARAMS.h"
0027 #include "PARAMS.h"
0028 #include "DYNVARS.h"
0029 #include "MY82.h"
0030 #include "GRID.h"
0031
0032
0033
0034
94c8eb5701 Jean*0035
08be60903a Mart*0036
0037
0038
0039
0040
0041
0042 INTEGER bi, bj, iMin, iMax, jMin, jMax, k
0043 INTEGER myThid
0044 _RL myTime
0045 _RL RiNumber (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0046 _RL buoyFreq (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0047 _RL vertShear (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0048
0049 #ifdef ALLOW_MY82
0050
0051
0052
0053
0054
0055
0056
0057 INTEGER I,J,Km1
94c8eb5701 Jean*0058 _RL p5 , p125
8fef4b1a57 Mart*0059 PARAMETER( p5=0.5D0, p125=0.125D0 )
08be60903a Mart*0060 _RL tempu, tempv
0061 _RL epsilon
0062 PARAMETER ( epsilon = 1.D-10 )
0063 _RL rhoKm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0064 _RL rhoK (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0065 #ifdef MY82_SMOOTH_RI
0066 _RL RiTmp (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0067 #endif /* MY82_SMOOTH_RI */
94c8eb5701 Jean*0068
08be60903a Mart*0069
0070 Km1 = MAX(1,K-1)
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
94c8eb5701 Jean*0086 CALL FIND_RHO_2D(
0087 I iMin, iMax, jMin, jMax, K,
0088 I theta(1-OLx,1-OLy,Km1,bi,bj), salt(1-OLx,1-OLy,Km1,bi,bj),
08be60903a Mart*0089 O rhoKm1,
94c8eb5701 Jean*0090 I Km1, bi, bj, myThid )
0091 CALL FIND_RHO_2D(
0092 I iMin, iMax, jMin, jMax, K,
0093 I theta(1-OLx,1-OLy,K,bi,bj), salt(1-OLx,1-OLy,K,bi,bj),
08be60903a Mart*0094 O rhoK,
94c8eb5701 Jean*0095 I K, bi, bj, myThid )
08be60903a Mart*0096
0097
0098
0099 DO J= jMin, jMax
0100 DO I = iMin, iMax
fb62f539dc Jean*0101 tempu= .5 _d 0*( uVel(I,J,Km1,bi,bj)+uVel(I+1,J,Km1,bi,bj)
08be60903a Mart*0102 & - (uVel(I,J,K ,bi,bj)+uVel(I+1,J,K ,bi,bj)) )
0103 & *recip_drC(K)
fb62f539dc Jean*0104 tempv= .5 _d 0*( vVel(I,J,Km1,bi,bj)+vVel(I,J+1,Km1,bi,bj)
08be60903a Mart*0105 & - (vVel(I,J,K ,bi,bj)+vVel(I,J+1,K ,bi,bj)) )
0106 & *recip_drC(K)
0107 vertShear(I,J) = tempu*tempu+tempv*tempv
0108
0109
0110
0111
0b1017b546 Jean*0112 buoyFreq(I,J) = gravity*mass2rUnit *
08be60903a Mart*0113 & (rhoKm1(I,J) - rhoK(I,J))*recip_drC(K)
94c8eb5701 Jean*0114
08be60903a Mart*0115
0116
94c8eb5701 Jean*0117
08be60903a Mart*0118 RiNumber(I,J) = -buoyFreq(I,J)/max(vertShear(I,J),epsilon)
94c8eb5701 Jean*0119
08be60903a Mart*0120 ENDDO
0121 ENDDO
94c8eb5701 Jean*0122
08be60903a Mart*0123 #ifdef MY82_SMOOTH_RI
0124
0125 DO J=jMin,jMax
0126 DO I=iMin,iMax
0127 RiTmp(I,J) = RiNumber(I,J)
0128 ENDDO
94c8eb5701 Jean*0129 ENDDO
08be60903a Mart*0130 DO J=1-Oly+1,sNy+Oly-1
0131 DO I=1-Olx+1,sNx+Olx-1
94c8eb5701 Jean*0132 RiNumber(I,J) = p5*RiTmp(I,J)
0133 & + p125*RiTmp(I-1,J) + p125*RiTmp(I+1,J)
0134 & + p125*RiTmp(I,J-1) + p125*RiTmp(I,J+1)
08be60903a Mart*0135 ENDDO
94c8eb5701 Jean*0136 ENDDO
08be60903a Mart*0137 #endif /* MY82_SMOOTH_RI */
0138
0139 #endif /* ALLOW_MY82 */
0140
0141 RETURN
0142 END