File indexing completed on 2023-08-04 05:10:48 UTC
view on githubraw file Latest commit 45315406 on 2023-08-03 16:50:12 UTC
4b22dd6e44 Mart*0001 #include "SEAICE_OPTIONS.h"
0002 #ifdef ALLOW_OBCS
0003 # include "OBCS_OPTIONS.h"
0004 #endif
0005
0006
0007
0008
0009 SUBROUTINE SEAICE_OCEANDRAG_COEFFS(
ec0d7df165 Mart*0010 I uIceLoc, vIceLoc, HEFFMLoc,
4b22dd6e44 Mart*0011 O CwatC,
0012 I iStep, myTime, myIter, myThid )
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 IMPLICIT NONE
0026
0027
0028 #include "SIZE.h"
0029 #include "EEPARAMS.h"
0030 #include "PARAMS.h"
0031 #include "GRID.h"
0032 #include "DYNVARS.h"
0033 #include "SEAICE_SIZE.h"
0034 #include "SEAICE_PARAMS.h"
0035
0036
0037
0038
0039
0040
5867b94c2f Mart*0041
4b22dd6e44 Mart*0042 _RL myTime
0043 INTEGER myIter
0044 INTEGER myThid
0045 INTEGER iStep
0046
0047 _RL uIceLoc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0048 _RL vIceLoc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
ec0d7df165 Mart*0049
0050 _RL HEFFMLoc (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
4b22dd6e44 Mart*0051
0052 _RL CwatC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0053
45315406aa Mart*0054 #ifdef SEAICE_CGRID
4b22dd6e44 Mart*0055
0056
0057 INTEGER i,j,bi,bj
0058 INTEGER kSrf
5867b94c2f Mart*0059 _RL tempVar, tempMin
b8665dacca Mart*0060 _RL dragCoeff
4b22dd6e44 Mart*0061
0062
0320e25227 Mart*0063 IF ( usingPCoords ) THEN
0064 kSrf = Nr
0065 ELSE
0066 kSrf = 1
0067 ENDIF
5867b94c2f Mart*0068 tempMin = SEAICEdWatMin*SEAICEdWatMin
4b22dd6e44 Mart*0069
0070 DO bj=myByLo(myThid),myByHi(myThid)
0071 DO bi=myBxLo(myThid),myBxHi(myThid)
5867b94c2f Mart*0072 DO j=1-OLy,sNy+OLy-1
439f623ce9 Mart*0073 DO i=1-OLx,sNx+OLy-1
b8665dacca Mart*0074
4b22dd6e44 Mart*0075 #ifdef OBCS_UVICE_OLD
5867b94c2f Mart*0076 tempVar = 0.25 _d 0*(
4b22dd6e44 Mart*0077 & ( ( uIceLoc(i ,j,bi,bj)-uVel(i ,j,kSrf,bi,bj) )
0078 & +( uIceLoc(i+1,j,bi,bj)-uVel(i+1,j,kSrf,bi,bj) )
0079 & )**2
0080 & + ( ( vIceLoc(i, j ,bi,bj)-vVel(i, j ,kSrf,bi,bj) )
0081 & +( vIceLoc(i,j+1,bi,bj)-vVel(i,j+1,kSrf,bi,bj) )
0082 & )**2 )
0083 #else /* OBCS_UVICE_OLD */
5867b94c2f Mart*0084 tempVar = 0.25 _d 0*(
4b22dd6e44 Mart*0085 & ( ( uIceLoc(i ,j,bi,bj)-uVel(i ,j,kSrf,bi,bj) )
0086 & *maskInW( i ,j,bi,bj)
5867b94c2f Mart*0087 & +( uIceLoc(i+1,j,bi,bj)-uVel(i+1,j,kSrf,bi,bj) )
4b22dd6e44 Mart*0088 & *maskInW(i+1,j,bi,bj) )**2
0089 & + ( ( vIceLoc(i,j ,bi,bj)-vVel(i,j ,kSrf,bi,bj) )
0090 & *maskInS(i, j ,bi,bj)
0091 & +( vIceLoc(i,j+1,bi,bj)-vVel(i,j+1,kSrf,bi,bj) )
0092 & *maskInS(i,j+1,bi,bj) )**2 )
0093 #endif /* OBCS_UVICE_OLD */
5867b94c2f Mart*0094 IF ( YC(i,j,bi,bj) .LT. ZERO ) THEN
b8665dacca Mart*0095 dragCoeff = SEAICE_waterDrag_south*rhoConst
4b22dd6e44 Mart*0096 ELSE
b8665dacca Mart*0097 dragCoeff = SEAICE_waterDrag *rhoConst
4b22dd6e44 Mart*0098 ENDIF
5867b94c2f Mart*0099 CwatC(i,j,bi,bj) = SEAICEdWatMin
0100
0101
b8665dacca Mart*0102
5867b94c2f Mart*0103
b8665dacca Mart*0104
5867b94c2f Mart*0105 IF ( dragCoeff*dragCoeff * tempVar .GT. tempMin )
0106 & CwatC(i,j,bi,bj) = dragCoeff*SQRT(tempVar)
0107 CwatC(i,j,bi,bj) = CwatC(i,j,bi,bj) * HEFFMLoc(i,j,bi,bj)
4b22dd6e44 Mart*0108 ENDDO
0109 ENDDO
0110 ENDDO
0111 ENDDO
0112
45315406aa Mart*0113 #endif /* SEAICE_CGRID */
4b22dd6e44 Mart*0114
0115 RETURN
0116 END