File indexing completed on 2018-03-02 18:43:56 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
cc36b35673 Jean*0001 #include "SHELFICE_OPTIONS.h"
ffe464dc7d Mart*0002
45f2c74f8a Jean*0003
0004
0005
0006
0007
ffe464dc7d Mart*0008
0009
0010
0011
0012 SUBROUTINE SHELFICE_FORCING_T(
73b1dccda0 Jean*0013 U gT_arr,
0014 I iMin,iMax,jMin,jMax, kLev, bi, bj,
0015 I myTime, myIter, myThid )
0016
ffe464dc7d Mart*0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 IMPLICIT NONE
0029
0030 #include "SIZE.h"
0031 #include "EEPARAMS.h"
0032 #include "PARAMS.h"
0033 #include "GRID.h"
73b1dccda0 Jean*0034
0035
ffe464dc7d Mart*0036 #include "SHELFICE.h"
0037
0038
73b1dccda0 Jean*0039
ffe464dc7d Mart*0040
0041
0042
73b1dccda0 Jean*0043
ffe464dc7d Mart*0044
73b1dccda0 Jean*0045
0046
0047 _RL gT_arr(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0048 INTEGER iMin, iMax, jMin, jMax
0049 INTEGER kLev, bi, bj
0050 _RL myTime
0051 INTEGER myIter
ffe464dc7d Mart*0052 INTEGER myThid
0053
0054 #ifdef ALLOW_SHELFICE
0055
0056
40b188dddd Mart*0057
0058
0059
0060
ffe464dc7d Mart*0061 INTEGER i, j
40b188dddd Mart*0062 INTEGER Kp1, Km1
0063 _RS drLoc
0064 _RL gTloc
ffe464dc7d Mart*0065
0066
0067
45f2c74f8a Jean*0068 IF ( SHELFICEboundaryLayer ) THEN
0069 DO j=1,sNy
0070 DO i=1,sNx
40b188dddd Mart*0071 IF ( kLev .LT. Nr .AND. kLev .EQ. kTopC(I,J,bi,bj) ) THEN
0072 kp1 = MIN(kLev+1,Nr)
0073 drLoc = drF(kLev)*( 1. _d 0 - _hFacC(I,J,kLev,bi,bj) )
cc36b35673 Jean*0074 drLoc = MIN( drLoc, drF(Kp1) * _hFacC(I,J,Kp1,bi,bj) )
09df6ae39f Dani*0075 drLoc = MAX( drLoc, 0. _d 0)
cc36b35673 Jean*0076 gTloc = shelficeForcingT(i,j,bi,bj)
40b188dddd Mart*0077 & /( drF(kLev)*_hFacC(I,J,kLev,bi,bj)+drLoc )
73b1dccda0 Jean*0078 gT_arr(i,j) = gT_arr(i,j) + gTloc
40b188dddd Mart*0079 ELSEIF ( kLev .GT. 1 .AND. kLev-1 .EQ. kTopC(I,J,bi,bj) ) THEN
0080 km1 = MAX(kLev-1,1)
0081 drLoc = drF(km1)*( 1. _d 0 - _hFacC(I,J,km1,bi,bj) )
cc36b35673 Jean*0082 drLoc = MIN( drLoc, drF(kLev) * _hFacC(I,J,kLev,bi,bj) )
09df6ae39f Dani*0083 drLoc = MAX( drLoc, 0. _d 0)
cc36b35673 Jean*0084 gTloc = shelficeForcingT(i,j,bi,bj)
40b188dddd Mart*0085 & /( drF(km1)*_hFacC(I,J,km1,bi,bj)+drLoc )
0086
0087
0088
0089
73b1dccda0 Jean*0090 gT_arr(i,j) = gT_arr(i,j) + gTloc
40b188dddd Mart*0091 & * drLoc*recip_drF(kLev)* _recip_hFacC(i,j,kLev,bi,bj)
0092 ENDIF
45f2c74f8a Jean*0093 ENDDO
ffe464dc7d Mart*0094 ENDDO
45f2c74f8a Jean*0095 ENDIF
ffe464dc7d Mart*0096
0097 #endif /* ALLOW_SHELFICE */
0098 RETURN
0099 END
0100
0101
0102
0103
0104
0105 SUBROUTINE SHELFICE_FORCING_S(
73b1dccda0 Jean*0106 U gS_arr,
0107 I iMin,iMax,jMin,jMax, kLev, bi, bj,
0108 I myTime, myIter, myThid )
ffe464dc7d Mart*0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121 IMPLICIT NONE
0122
0123 #include "SIZE.h"
0124 #include "EEPARAMS.h"
0125 #include "PARAMS.h"
0126 #include "GRID.h"
73b1dccda0 Jean*0127
0128
ffe464dc7d Mart*0129 #include "SHELFICE.h"
0130
0131
73b1dccda0 Jean*0132
ffe464dc7d Mart*0133
0134
0135
73b1dccda0 Jean*0136
ffe464dc7d Mart*0137
73b1dccda0 Jean*0138
0139
0140 _RL gS_arr(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0141 INTEGER iMin, iMax, jMin, jMax
0142 INTEGER kLev, bi, bj
0143 _RL myTime
0144 INTEGER myIter
ffe464dc7d Mart*0145 INTEGER myThid
0146
0147 #ifdef ALLOW_SHELFICE
0148
40b188dddd Mart*0149
0150
0151
0152
ffe464dc7d Mart*0153 INTEGER i, j
40b188dddd Mart*0154 INTEGER Kp1, Km1
0155 _RS drLoc
cc36b35673 Jean*0156 _RL gSloc
ffe464dc7d Mart*0157
0158
0159
45f2c74f8a Jean*0160 IF ( SHELFICEboundaryLayer ) THEN
0161 DO j=1,sNy
0162 DO i=1,sNx
40b188dddd Mart*0163 IF ( kLev .LT. Nr .AND. kLev .EQ. kTopC(I,J,bi,bj) ) THEN
0164 kp1 = MIN(kLev+1,Nr)
0165 drLoc = drF(kLev)*( 1. _d 0 - _hFacC(I,J,kLev,bi,bj) )
cc36b35673 Jean*0166 drLoc = MIN( drLoc, drF(Kp1) * _hFacC(I,J,Kp1,bi,bj) )
09df6ae39f Dani*0167 drLoc = MAX( drLoc, 0. _d 0)
cc36b35673 Jean*0168 gSloc = shelficeForcingS(i,j,bi,bj)
40b188dddd Mart*0169 & /( drF(kLev)*_hFacC(I,J,kLev,bi,bj)+drLoc )
73b1dccda0 Jean*0170 gS_arr(i,j) = gS_arr(i,j) + gSloc
40b188dddd Mart*0171 ELSEIF ( kLev .GT. 1 .AND. kLev-1 .EQ. kTopC(I,J,bi,bj) ) THEN
0172 km1 = MAX(kLev-1,1)
0173 drLoc = drF(km1)*( 1. _d 0 - _hFacC(I,J,km1,bi,bj) )
cc36b35673 Jean*0174 drLoc = MIN( drLoc, drF(kLev) * _hFacC(I,J,kLev,bi,bj) )
09df6ae39f Dani*0175 drLoc = MAX( drLoc, 0. _d 0)
cc36b35673 Jean*0176 gSloc = shelficeForcingS(i,j,bi,bj)
40b188dddd Mart*0177 & /( drF(km1)*_hFacC(I,J,km1,bi,bj)+drLoc )
0178
0179
0180
0181
73b1dccda0 Jean*0182 gS_arr(i,j) = gS_arr(i,j) + gSloc
40b188dddd Mart*0183 & * drLoc*recip_drF(kLev)* _recip_hFacC(i,j,kLev,bi,bj)
0184 ENDIF
45f2c74f8a Jean*0185 ENDDO
ffe464dc7d Mart*0186 ENDDO
45f2c74f8a Jean*0187 ENDIF
ffe464dc7d Mart*0188
0189 #endif /* ALLOW_SHELFICE */
0190 RETURN
0191 END