File indexing completed on 2023-08-04 05:10:41 UTC
view on githubraw file Latest commit 45315406 on 2023-08-03 16:50:12 UTC
809c36b928 Patr*0001 #include "SEAICE_OPTIONS.h"
772b2ed80e Gael*0002 #ifdef ALLOW_AUTODIFF
0003 # include "AUTODIFF_OPTIONS.h"
0004 #endif
cda1c18f72 Jean*0005 #ifndef SEAICE_LSRBNEW
0006
0007
0008 # undef SEAICE_TEST
0009 #endif
809c36b928 Patr*0010
0011
7109a141b2 Patr*0012 SUBROUTINE lsr( ilcall, myThid )
03c669d1ab Jean*0013
809c36b928 Patr*0014
09510da3bb Dimi*0015
0016
0017
0018
0019
03c669d1ab Jean*0020
809c36b928 Patr*0021 IMPLICIT NONE
0022
0023
0024 #include "SIZE.h"
0025 #include "EEPARAMS.h"
0026 #include "PARAMS.h"
4366d31d92 Mart*0027 #include "GRID.h"
03c669d1ab Jean*0028 #include "SEAICE_SIZE.h"
809c36b928 Patr*0029 #include "SEAICE_PARAMS.h"
03c669d1ab Jean*0030 #include "SEAICE.h"
4366d31d92 Mart*0031
809c36b928 Patr*0032
7109a141b2 Patr*0033 #ifdef ALLOW_AUTODIFF_TAMC
0034 # include "tamc.h"
0035 #endif
809c36b928 Patr*0036
0037
0038
7109a141b2 Patr*0039 INTEGER ilcall
809c36b928 Patr*0040 INTEGER myThid
0041
0042
45315406aa Mart*0043 #ifdef SEAICE_BGRID_DYNAMICS
809c36b928 Patr*0044
0045
cee16b76ae Dimi*0046
809c36b928 Patr*0047
09510da3bb Dimi*0048 INTEGER i, j, m, bi, bj, j1, j2, im, jm
07b4a12853 Mart*0049 INTEGER ICOUNT1, ICOUNT2
e1d2983c5b Mart*0050
0051 _RL WFAU, WFAV, WFAU1, WFAV1, WFAU2, WFAV2
0052 _RL AA3, S1, S2, S1A, S2A
0053
0054 _RL e11loc, e22loc, e12loc
0055
0056 _RL COSWAT
5acccad966 Jean*0057 _RS SINWAT
e1d2983c5b Mart*0058 _RL ECM2, DELT1, DELT2
0059 _RL TEMPVAR
7109a141b2 Patr*0060
e1d2983c5b Mart*0061
0062 _RL AU (1:sNx,1:sNy,nSx,nSy)
0063 _RL BU (1:sNx,1:sNy,nSx,nSy)
0064 _RL CU (1:sNx,1:sNy,nSx,nSy)
0065 _RL AV (1:sNx,1:sNy,nSx,nSy)
0066 _RL BV (1:sNx,1:sNy,nSx,nSy)
0067 _RL CV (1:sNx,1:sNy,nSx,nSy)
809c36b928 Patr*0068
e1d2983c5b Mart*0069
0070 _RL uRt1(1:sNx,1:sNy,nSx,nSy)
0071 _RL uRt2(1:sNx,1:sNy,nSx,nSy)
0072
0073 _RL vRt1(1:sNx,1:sNy,nSx,nSy)
0074 _RL vRt2(1:sNx,1:sNy,nSx,nSy)
0075
0076 _RL rhsU (1:sNx,1:sNy,nSx,nSy)
0077 _RL rhsV (1:sNx,1:sNy,nSx,nSy)
3f31c7d5de Mart*0078
0079 _RL DRAGS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0080 _RL DRAGA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
e1d2983c5b Mart*0081 #ifdef SEAICE_LSRBNEW
d24acf3cfc Jean*0082 LOGICAL doIterate4u, doIterate4v
0083 CHARACTER*(MAX_LEN_MBUF) msgBuf
e1d2983c5b Mart*0084
0085
0086
0087
0088
0089
d24acf3cfc Jean*0090 _RL UXX (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0091 _RL UYY (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0092 _RL UXM (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0093 _RL UYM (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0094 _RL VXX (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0095 _RL VYY (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0096 _RL VXM (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0097 _RL VYM (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
e1d2983c5b Mart*0098
d24acf3cfc Jean*0099 _RL etaU (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0100 _RL zetaU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0101 _RL etaV (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0102 _RL zetaV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
e1d2983c5b Mart*0103
d24acf3cfc Jean*0104 _RL sig11(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0105 _RL sig22(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0106 _RL sig12(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0107 _RL sig21(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
4366d31d92 Mart*0108
e1d2983c5b Mart*0109
d24acf3cfc Jean*0110 _RL CUU (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0111 _RL CVV (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0112 _RL URT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0113 _RL VRT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
e1d2983c5b Mart*0114 #else
d24acf3cfc Jean*0115 _RL URT(1-OLx:sNx+OLx), CUU(1-OLx:sNx+OLx)
0116 _RL VRT(1-OLy:sNy+OLy), CVV(1-OLy:sNy+OLy)
0117
0118 _RL etaPlusZeta (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0119 _RL zetaMinusEta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0120 _RL ETAMEAN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0121 _RL ZETAMEAN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0122
0123 _RL dVdx (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0124 _RL dVdy (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0125 _RL dUdx (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0126 _RL dUdy (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
bb4175c1b5 Mart*0127 #ifdef SEAICE_TEST
d24acf3cfc Jean*0128 _RL uz (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0129 _RL vz (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
bb4175c1b5 Mart*0130 #endif
09510da3bb Dimi*0131
e1d2983c5b Mart*0132 INTEGER phexit
0133
0134 _RL AA1, AA2, AA4, AA5, AA6
0135
0136 #endif /* SEAICE_LSRBNEW */
0137
0138 _RL UERR
0139
0140
d24acf3cfc Jean*0141 _RL ucLoc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0142 _RL vcLoc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0143 _RL uTmp (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0144 _RL vTmp (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
e1d2983c5b Mart*0145
809c36b928 Patr*0146
09510da3bb Dimi*0147 WFAU1=0.95 _d 0
0148 WFAV1=0.95 _d 0
0149 WFAU2=ZERO
0150 WFAV2=ZERO
0151
0152 S1A=0.80 _d 0
0153 S2A=0.80 _d 0
0154 WFAU=WFAU1
0155 WFAV=WFAV1
0156
79df32c3f1 Mart*0157 ICOUNT1=SEAICElinearIterMax
0158 ICOUNT2=SEAICElinearIterMax
809c36b928 Patr*0159
e1d2983c5b Mart*0160 ECM2= 1. _d 0/(SEAICE_eccen**2)
0161
0162 SINWAT=SIN(SEAICE_waterTurnAngle*deg2rad)
0163 COSWAT=COS(SEAICE_waterTurnAngle*deg2rad)
0164
0165 DO bj=myByLo(myThid),myByHi(myThid)
0166 DO bi=myBxLo(myThid),myBxHi(myThid)
d24acf3cfc Jean*0167 DO j=1-OLy,sNy+OLy-1
0168 DO i=1-OLx,sNx+OLx-1
e1d2983c5b Mart*0169 ucLoc(I,J,bi,bj) = 0.25 _d 0 * (
45315406aa Mart*0170 & + uIceB(I+1,J,bi,bj) + uIceB(I+1,J+1,bi,bj)
0171 & + uIceB(I ,J,bi,bj) + uIceB(I, J+1,bi,bj) )
e1d2983c5b Mart*0172 vcLoc(I,J,bi,bj) = 0.25 _d 0 * (
45315406aa Mart*0173 & + vIceB(I+1,J,bi,bj) + vIceB(I+1,J+1,bi,bj)
0174 & + vIceB(I ,J,bi,bj) + vIceB(I, J+1,bi,bj) )
e1d2983c5b Mart*0175 ENDDO
0176 ENDDO
d24acf3cfc Jean*0177 DO J=1-OLy,sNy+OLy-1
0178 DO I=1-OLy,sNx+OLy-1
e1d2983c5b Mart*0179 e11loc = 0.5 _d 0 * _recip_dxF(I,J,bi,bj) *
45315406aa Mart*0180 & (uIceB(I+1,J+1,bi,bj)+uIceB(I+1,J,bi,bj)
0181 & -uIceB(I, J+1,bi,bj)-uIceB(I, J,bi,bj))
e1d2983c5b Mart*0182 & + vcLoc(I,J,bi,bj) * k2AtC(I,J,bi,bj)
0183 e22loc = 0.5 _d 0 * _recip_dyF(I,J,bi,bj) *
45315406aa Mart*0184 & (vIceB(I+1,J+1,bi,bj)+vIceB(I,J+1,bi,bj)
0185 & -vIceB(I+1,J, bi,bj)-vIceB(I,J, bi,bj))
e1d2983c5b Mart*0186 & + ucLoc(I,J,bi,bj) * k1AtC(I,J,bi,bj)
d24acf3cfc Jean*0187 e12loc = 0.5 _d 0*(
e1d2983c5b Mart*0188 & 0.5 _d 0 * _recip_dyF(I,J,bi,bj) *
45315406aa Mart*0189 & (uIceB(I+1,J+1,bi,bj)+uIceB(I,J+1,bi,bj)
0190 & -uIceB(I+1,J, bi,bj)-uIceB(I,J, bi,bj))
e1d2983c5b Mart*0191 & + 0.5 _d 0 * _recip_dxF(I,J,bi,bj) *
45315406aa Mart*0192 & (vIceB(I+1,J+1,bi,bj)+vIceB(I+1,J,bi,bj)
0193 & -vIceB(I, J+1,bi,bj)-vIceB(I, J,bi,bj))
e1d2983c5b Mart*0194 & - vcLoc(I,J,bi,bj)*k1AtC(I,J,bi,bj)
0195 & - ucLoc(I,J,bi,bj)*k2AtC(I,J,bi,bj) )
0196
0197 DELT1=(e11loc**2+e22loc**2)*(1. _d 0+ECM2)
0198 & +4.0 _d 0*ECM2*e12loc**2
0199 & +2.0 _d 0*e11loc*e22loc*(1. _d 0-ECM2)
0200 IF ( DELT1 .LE. SEAICE_EPS_SQ ) THEN
0201 DELT2=SEAICE_EPS
0202 ELSE
0203 DELT2=SQRT(DELT1)
0204 ENDIF
0205 ZETA(I,J,bi,bj) = 0.5 _d 0*PRESS0(I,J,bi,bj)/DELT2
0206
8e32c48b8f Mart*0207 ZETA(I,J,bi,bj) = MIN(SEAICE_zMax(I,J,bi,bj),ZETA(I,J,bi,bj))
0208 ZETA(I,J,bi,bj) = MAX(SEAICE_zMin(I,J,bi,bj),ZETA(I,J,bi,bj))
e1d2983c5b Mart*0209
0210 ZETA(I,J,bi,bj) = ZETA(I,J,bi,bj)*HEFFM(I,J,bi,bj)
0211 ETA(I,J,bi,bj) = ECM2*ZETA(I,J,bi,bj)
0212 PRESS(I,J,bi,bj) = 2.0 _d 0*ZETA(I,J,bi,bj)*DELT2
0213 ENDDO
0214 ENDDO
0215 DO j=1,sNy
0216 DO i=1,sNx
0217
0218 TEMPVAR=(uIce(I,J,bi,bj)-GWATX(I,J,bi,bj))**2
0219 & +(vIce(I,J,bi,bj)-GWATY(I,J,bi,bj))**2
0220 IF ( YC(I,J,bi,bj) .LT. ZERO ) THEN
b8665dacca Mart*0221 DWATN(I,J,bi,bj) = SEAICE_waterDrag_south*SQRT(TEMPVAR)
e1d2983c5b Mart*0222 ELSE
b8665dacca Mart*0223 DWATN(I,J,bi,bj) = SEAICE_waterDrag*SQRT(TEMPVAR)
e1d2983c5b Mart*0224 ENDIF
b8665dacca Mart*0225 DWATN(I,J,bi,bj) = MAX(DWATN(I,J,bi,bj)*rhoConst,QUART)
e1d2983c5b Mart*0226
0227 DRAGS(I,J,bi,bj)=DWATN(I,J,bi,bj)*COSWAT
0228
0229 DRAGA(I,J,bi,bj)=DWATN(I,J,bi,bj)
0230 & *SIGN(SINWAT, _fCori(I,J,bi,bj))
0231 & + AMASS(I,J,bi,bj) * _fCoriG(I,J,bi,bj)
0232
0233 FORCEX(I,J,bi,bj)=FORCEX0(I,J,bi,bj)+DWATN(I,J,bi,bj)
0234 & *(COSWAT*GWATX(I,J,bi,bj)
0235 & -SIGN(SINWAT, _fCori(I,J,bi,bj))*GWATY(I,J,bi,bj))
0236 FORCEY(I,J,bi,bj)=FORCEY0(I,J,bi,bj)+DWATN(I,J,bi,bj)
0237 & *(SIGN(SINWAT, _fCori(I,J,bi,bj))*GWATX(I,J,bi,bj)
0238 & +COSWAT*GWATY(I,J,bi,bj))
0239 #ifndef SEAICE_LSRBNEW
0240
0241
0242
0243 FORCEX(I,J,bi,bj)=FORCEX(I,J,bi,bj)
0244 & -QUART * _recip_dxV(I,J,bi,bj)
0245 & *(PRESS(I, J,bi,bj) + PRESS(I, J-1,bi,bj)
0246 & - PRESS(I-1,J,bi,bj) - PRESS(I-1,J-1,bi,bj))
0247 FORCEY(I,J,bi,bj)=FORCEY(I,J,bi,bj)
0248 & -QUART * _recip_dyU(I,J,bi,bj)
0249 & *(PRESS(I,J, bi,bj) + PRESS(I-1,J, bi,bj)
0250 & - PRESS(I,J-1,bi,bj) - PRESS(I-1,J-1,bi,bj))
0251 #endif /* not SEAICE_LSRBNEW */
0252 FORCEX(I,J,bi,bj)=FORCEX(I,J,bi,bj)
0253 & +AMASS(I,J,bi,bj)/SEAICE_deltaTdyn*uIceNm1(I,J,bi,bj)
0254 FORCEY(I,J,bi,bj)=FORCEY(I,J,bi,bj)
0255 & +AMASS(I,J,bi,bj)/SEAICE_deltaTdyn*vIceNm1(I,J,bi,bj)
0256 FORCEX(I,J,bi,bj)=FORCEX(I,J,bi,bj)*UVM(I,J,bi,bj)
0257 FORCEY(I,J,bi,bj)=FORCEY(I,J,bi,bj)*UVM(I,J,bi,bj)
0258 ENDDO
0259 ENDDO
0260 ENDDO
0261 ENDDO
0262
0263 #ifdef SEAICE_LSRBNEW
0264 DO bj=myByLo(myThid),myByHi(myThid)
0265 DO bi=myBxLo(myThid),myBxHi(myThid)
0266
d24acf3cfc Jean*0267 DO j=1-OLy,sNy+OLy-1
0268 DO i=1-OLx+1,sNx+OLx-1
e1d2983c5b Mart*0269 etaU(I,J) = 0.5 _d 0 * (
0270 & + eta(I,J,bi,bj) + eta(I-1,J,bi,bj) )
0271 zetaU(I,J)= 0.5 _d 0 *(
0272 & + zeta(I,J,bi,bj) + zeta(I-1,J,bi,bj) )
0273 ENDDO
0274 ENDDO
d24acf3cfc Jean*0275 DO j=1-OLy+1,sNy+OLy-1
0276 DO i=1-OLx,sNx+OLx-1
e1d2983c5b Mart*0277 etaV(I,J) = 0.5 _d 0 * (
0278 & + eta(I,J,bi,bj) + eta(I,J-1,bi,bj) )
0279 zetaV(I,J)= 0.5 _d 0 *(
0280 & + zeta(I,J,bi,bj) + zeta(I,J-1,bi,bj) )
0281 ENDDO
0282 ENDDO
0283
0284 DO J=1,sNy
0285 DO I=0,sNx
0286
0287 UXX(I,J) = _dyC(I,J,bi,bj) * (zetaV(I,J)+etaV(I,J))
0288 & * _recip_dxG(I,J,bi,bj)
0289
0290 UXM(I,J) = _dyC(I,J,bi,bj) * (zetaV(I,J)-etaV(I,J))
0291 & * k1AtV(I,J,bi,bj) * 0.5 _d 0
0292 ENDDO
0293 ENDDO
0294 DO J=0,sNy
0295 DO I=1,sNx
0296
0297 UYY(I,J) = _dxC(I,J,bi,bj) * etaU(I,J)
0298 & * _recip_dyG(I,J,bi,bj)
0299
0300 UYM(I,J) = _dxC(I,J,bi,bj) * etaU(I,J)
0301 & * k2AtU(I,J,bi,bj) * 0.5 _d 0
0302 ENDDO
0303 ENDDO
0304 DO J=1,sNy
0305 DO I=0,sNx
0306
0307 VXX(I,J) = _dyC(I,J,bi,bj) * etaV(I,J)
0308 & * _recip_dxG(I,J,bi,bj)
0309
0310 VXM(I,J) = _dyC(I,J,bi,bj) * etaV(I,J)
0311 & * k1AtV(I,J,bi,bj) * 0.5 _d 0
0312 ENDDO
0313 ENDDO
0314 DO J=0,sNy
0315 DO I=1,sNx
0316
0317 VYY(I,J) = _dxC(I,J,bi,bj) * (zetaU(I,J)+etaU(I,J))
0318 & * _recip_dyG(I,J,bi,bj)
0319
0320 VYM(I,J) = _dxC(I,J,bi,bj) * (zetaU(I,J)-etaU(I,J))
0321 & * k2AtU(I,J,bi,bj) * 0.5 _d 0
0322 ENDDO
0323 ENDDO
0324
0325
0326
0327
0328
0329 DO J=1,sNy
0330 DO I=1,sNx
0331
0332 AU(I,J,bi,bj)= ( - UXX(I-1,J) + UXM(I-1,J) )
0333 & * UVM(I,J,bi,bj)
0334
0335 CU(I,J,bi,bj)= ( - UXX(I ,J) - UXM(I ,J) )
0336 & * UVM(I,J,bi,bj)
0337
0338 BU(I,J,bi,bj)=(ONE - UVM(I,J,bi,bj)) +
0339 & ( UXX(I-1,J) + UXX(I,J) + UYY(I,J-1) + UYY(I,J)
0340 & + UXM(I-1,J) - UXM(I,J) - UYM(I,J-1) + UYM(I,J)
0341 & ) * UVM(I,J,bi,bj)
0342
0343 uRt1(I,J,bi,bj)= UYY(I,J-1) + UYM(I,J-1)
0344
0345 uRt2(I,J,bi,bj)= UYY(I,J ) - UYM(I,J )
0346 ENDDO
0347 ENDDO
0348
0349
0350 DO J=1,sNy
0351 DO I=1,sNx
0352 AU(I,J,bi,bj) = AU(I,J,bi,bj) * recip_rAz(I,J,bi,bj)
0353 CU(I,J,bi,bj) = CU(I,J,bi,bj) * recip_rAz(I,J,bi,bj)
0354
0355
0356 BU(I,J,bi,bj) = BU(I,J,bi,bj) * recip_rAz(I,J,bi,bj)
0357 & + UVM(I,J,bi,bj) *
0358 & ( AMASS(I,J,bi,bj)/SEAICE_deltaTdyn
0359 & + DRAGS(I,J,bi,bj) )
0360 uRt1(I,J,bi,bj) = uRt1(I,J,bi,bj) * recip_rAz(I,J,bi,bj)
0361 uRt2(I,J,bi,bj) = uRt2(I,J,bi,bj) * recip_rAz(I,J,bi,bj)
0362 ENDDO
0363 ENDDO
0364
0365
0366
0367
0368
0369 DO J=1,sNy
0370 DO I=1,sNx
0371
0372 AV(I,J,bi,bj)=( - VYY(I,J-1) + VYM(I,J-1)
0373 & ) * UVM(I,J,bi,bj)
0374
0375 CV(I,J,bi,bj)=( - VYY(I,J ) - VYM(I,J )
0376 & ) * UVM(I,J,bi,bj)
0377
0378 BV(I,J,bi,bj)= (ONE - UVM(I,J,bi,bj)) +
0379 & ( VXX(I,J) + VXX(I-1,J) + VYY(I,J) + VYY(I,J-1)
0380 & + VXM(I,J) - VXM(I-1,J) - VYM(I,J) + VYM(I,J-1)
0381 & ) * UVM(I,J,bi,bj)
0382
0383 vRt1(I,J,bi,bj) = VXX(I-1,J) + VXM(I-1,J)
0384
0385 vRt2(I,J,bi,bj) = VXX(I ,J) - VXM(I ,J)
0386 ENDDO
0387 ENDDO
0388
0389
0390 DO J=1,sNy
0391 DO I=1,sNx
0392 AV(I,J,bi,bj) = AV(I,J,bi,bj) * recip_rAz(I,J,bi,bj)
0393 CV(I,J,bi,bj) = CV(I,J,bi,bj) * recip_rAz(I,J,bi,bj)
0394
0395
0396 BV(I,J,bi,bj) = BV(I,J,bi,bj) * recip_rAz(I,J,bi,bj)
0397 & + UVM(I,J,bi,bj) *
0398 & ( AMASS(I,J,bi,bj)/SEAICE_deltaTdyn
0399 & + DRAGS(I,J,bi,bj) )
0400 vRt1(I,J,bi,bj) = vRt1(I,J,bi,bj) * recip_rAz(I,J,bi,bj)
0401 vRt2(I,J,bi,bj) = vRt2(I,J,bi,bj) * recip_rAz(I,J,bi,bj)
0402 ENDDO
0403 ENDDO
0404
0405
0406 DO j=1,sNy
0407 DO i=0,sNx
0408
d24acf3cfc Jean*0409 sig11(I,J) =
0410 & (zetaV(I,J)-etaV(I,J))
0411 & * (vcLoc(I,J,bi,bj)-vcLoc(I,J-1,bi,bj))
e1d2983c5b Mart*0412 & * _recip_dyC(I,J,bi,bj)
0413 & + (zetaV(I,J)+etaV(I,J))*k2atV(I,J,bi,bj)
45315406aa Mart*0414 & * 0.5 _d 0 * (vIceB(I,J,bi,bj)+vIceB(I+1,J,bi,bj))
e1d2983c5b Mart*0415 & - 0.5 _d 0 * (PRESS(I,J,bi,bj)+PRESS(I,J-1,bi,bj))
d24acf3cfc Jean*0416 sig12(I,J) = etaV(I,J)
e1d2983c5b Mart*0417 & * (ucLoc(I,J,bi,bj)-ucLoc(I,J-1,bi,bj))
0418 & * _recip_dyC(I,J,bi,bj)
0419 & - etaV(I,J) * k2AtV(I,J,bi,bj)
45315406aa Mart*0420 & * 0.5 _d 0 * (uIceB(I,J,bi,bj)+uIceB(I+1,J,bi,bj))
e1d2983c5b Mart*0421 ENDDO
0422 ENDDO
0423 DO j=0,sNy
0424 DO i=1,sNx
0425
d24acf3cfc Jean*0426 sig22(I,J) =
0427 & (zetaU(I,J)-etaU(I,J))
0428 & * (ucLoc(I,J,bi,bj)-ucLoc(I-1,J,bi,bj))
e1d2983c5b Mart*0429 & * _recip_dxC(I,J,bi,bj)
0430 & + (zetaU(I,J)+etaU(I,J))*k2atU(I,J,bi,bj)
45315406aa Mart*0431 & * 0.5 _d 0 * (uIceB(I,J,bi,bj)+uIceB(I,J+1,bi,bj))
e1d2983c5b Mart*0432 & - 0.5 _d 0 * (PRESS(I,J,bi,bj)+PRESS(I-1,J,bi,bj))
d24acf3cfc Jean*0433 sig21(I,J) = etaU(I,J)
e1d2983c5b Mart*0434 & * (vcLoc(I,J,bi,bj)-vcLoc(I-1,J,bi,bj))
0435 & * _recip_dxC(I,J,bi,bj)
0436 & - etaU(I,J) * k1AtU(I,J,bi,bj)
45315406aa Mart*0437 & * 0.5 _d 0 * (vIceB(I,J,bi,bj)+vIceB(I,J+1,bi,bj))
e1d2983c5b Mart*0438 ENDDO
0439 ENDDO
0440 DO j=1,sNy
0441 DO i=1,sNx
45315406aa Mart*0442 rhsU(I,J,bi,bj) = DRAGA(I,J,bi,bj)*vIceB(I,J,bi,bj)
e1d2983c5b Mart*0443 & +FORCEX(I,J,bi,bj)
0444 & + ( _dyC(I, J, bi,bj) * sig11(I, J )
0445 & - _dyC(I-1,J, bi,bj) * sig11(I-1,J )
0446 & + _dxC(I, J, bi,bj) * sig21(I, J )
0447 & - _dxC(I, J-1,bi,bj) * sig21(I, J-1) )
0448 & * recip_rAz(I,J,bi,bj) * UVM(I,J,bi,bj)
45315406aa Mart*0449 rhsV(I,J,bi,bj) = - DRAGA(I,J,bi,bj)*uIceB(I,J,bi,bj)
e1d2983c5b Mart*0450 & +FORCEY(I,J,bi,bj)
d24acf3cfc Jean*0451 & + ( _dyC(I, J, bi,bj) * sig12(I, J )
0452 & - _dyC(I-1,J, bi,bj) * sig12(I-1,J )
0453 & + _dxC(I, J, bi,bj) * sig22(I, J )
e1d2983c5b Mart*0454 & - _dxC(I, J-1,bi,bj) * sig22(I, J-1) )
0455 & * recip_rAz(I,J,bi,bj) * UVM(I,J,bi,bj)
0456 ENDDO
0457 ENDDO
0458
0459 ENDDO
0460 ENDDO
0461
0462
0463
0464 doIterate4u = .TRUE.
0465 doIterate4v = .TRUE.
0466
0467
0468
79df32c3f1 Mart*0469 DO m = 1, SEAICElinearIterMax
e1d2983c5b Mart*0470 IF ( doIterate4u .OR. doIterate4v ) THEN
0471
0472 IF ( useCubedSphereExchange ) THEN
0473 doIterate4u = .TRUE.
0474 doIterate4v = .TRUE.
0475 ENDIF
0476
0477 DO bj=myByLo(myThid),myByHi(myThid)
0478 DO bi=myBxLo(myThid),myBxHi(myThid)
0479
0480
0481
0482 DO j=1-OLy,sNy+OLy
0483 DO i=1-OLx,sNx+OLx
0484 uTmp(I,J,bi,bj)=uIce(I,J,bi,bj)
0485 ENDDO
0486 ENDDO
0487
0488 DO j=1-OLy,sNy+OLy
0489 DO i=1-OLx,sNx+OLx
0490 vTmp(I,J,bi,bj)=vIce(I,J,bi,bj)
0491 ENDDO
0492 ENDDO
0493
0494 IF ( doIterate4u ) THEN
0495
0496 DO J=1,sNy
0497 DO I=1,sNx
0498 AA3 = ZERO
0499 IF (I.EQ.1) AA3 = AA3 - AU(I,J,bi,bj)*uIce(I-1,J,bi,bj)
0500 IF (I.EQ.sNx) AA3 = AA3 - CU(I,J,bi,bj)*uIce(I+1,J,bi,bj)
0501
0502 URT(I,J)=rhsU(I,J,bi,bj)
0503 & + AA3
0504 #ifdef SEAICE_VECTORIZE_LSR
0505 & + uRt1(I,J,bi,bj)*uTmp(I,J-1,bi,bj)
0506 & + uRt2(I,J,bi,bj)*uTmp(I,J+1,bi,bj)
0507 #else
0508 & + uRt1(I,J,bi,bj)*uIce(I,J-1,bi,bj)
0509 & + uRt2(I,J,bi,bj)*uIce(I,J+1,bi,bj)
0510 #endif /* SEAICE_VECTORIZE_LSR */
0511 URT(I,J)=URT(I,J)* UVM(I,J,bi,bj)
0512 ENDDO
0513
0514 DO I=1,sNx
0515 CUU(I,J)=CU(I,J,bi,bj)
0516 ENDDO
0517 CUU(1,J)=CUU(1,J)/BU(1,J,bi,bj)
0518 URT(1,J)=URT(1,J)/BU(1,J,bi,bj)
0519 #ifdef SEAICE_VECTORIZE_LSR
0520 ENDDO
0521
0522 DO I=2,sNx
0523 IM=I-1
0524 DO J=1,sNy
0525 #else /* do not SEAICE_VECTORIZE_LSR */
0526 DO I=2,sNx
0527 IM=I-1
0528 #endif /* SEAICE_VECTORIZE_LSR */
0529 CUU(I,J)=CUU(I,J)/(BU(I,J,bi,bj)-AU(I,J,bi,bj)*CUU(IM,J))
0530 URT(I,J)=(URT(I,J)-AU(I,J,bi,bj)*URT(IM,J))
0531 & /(BU(I,J,bi,bj)-AU(I,J,bi,bj)*CUU(IM,J))
0532 ENDDO
0533 #ifdef SEAICE_VECTORIZE_LSR
0534 ENDDO
0535
0536 DO J=1,sNy
0537 #endif /* SEAICE_VECTORIZE_LSR */
0538 DO I=1,sNx-1
0539 J1=sNx-I
0540 J2=J1+1
0541 URT(J1,J)=URT(J1,J)-CUU(J1,J)*URT(J2,J)
0542 ENDDO
0543 DO I=1,sNx
0544 uIce(I,J,bi,bj)=uTmp(I,J,bi,bj)
0545 & +WFAU*(URT(I,J)-uTmp(I,J,bi,bj))
0546 ENDDO
0547 ENDDO
0548
0549 ENDIF
0550
0551 IF ( doIterate4v ) THEN
0552
0553 DO I=1,sNx
0554 DO J=1,sNy
0555 AA3 = ZERO
0556 IF (J.EQ.1) AA3 = AA3 - AV(I,J,bi,bj)*vIce(I,J-1,bi,bj)
0557 IF (J.EQ.sNy) AA3 = AA3 - CV(I,J,bi,bj)*vIce(I,J+1,bi,bj)
0558
0559 VRT(I,J)=rhsV(I,J,bi,bj)
0560 & + AA3
0561 #ifdef SEAICE_VECTORIZE_LSR
0562 & + vRt1(I,J,bi,bj)*vTmp(I-1,J,bi,bj)
0563 & + vRt2(I,J,bi,bj)*vTmp(I+1,J,bi,bj)
0564 #else
0565 & + vRt1(I,J,bi,bj)*vIce(I-1,J,bi,bj)
0566 & + vRt2(I,J,bi,bj)*vIce(I+1,J,bi,bj)
0567 #endif /* SEAICE_VECTORIZE_LSR */
0568 VRT(I,J)=VRT(I,J)* UVM(I,J,bi,bj)
0569 ENDDO
0570
0571 DO J=1,sNy
0572 CVV(I,J)=CV(I,J,bi,bj)
0573 ENDDO
0574 CVV(I,1)=CVV(I,1)/BV(I,1,bi,bj)
0575 VRT(I,1)=VRT(I,1)/BV(I,1,bi,bj)
0576 DO J=2,sNy
0577 JM=J-1
0578 CVV(I,J)=CVV(I,J)/(BV(I,J,bi,bj)-AV(I,J,bi,bj)*CVV(I,JM))
0579 VRT(I,J)=(VRT(I,J)-AV(I,J,bi,bj)*VRT(I,JM))
0580 & /(BV(I,J,bi,bj)-AV(I,J,bi,bj)*CVV(I,JM))
0581 ENDDO
0582 DO J=1,sNy-1
0583 J1=sNy-J
0584 J2=J1+1
0585 VRT(I,J1)=VRT(I,J1)-CVV(I,J1)*VRT(I,J2)
0586 ENDDO
0587 DO J=1,sNy
0588 vIce(I,J,bi,bj)=vTmp(I,J,bi,bj)
0589 & +WFAV*(VRT(I,J)-vTmp(I,J,bi,bj))
0590 ENDDO
0591 ENDDO
0592
0593 ENDIF
0594
0595
0596 ENDDO
0597 ENDDO
0598
0599 IF ( doIterate4u.AND.MOD(m,SOLV_NCHECK).EQ.0) THEN
0600 S1=ZERO
0601 DO bj=myByLo(myThid),myByHi(myThid)
0602 DO bi=myBxLo(myThid),myBxHi(myThid)
0603 DO J=1,sNy
0604 DO I=1,sNx
0605 UERR=(uIce(I,J,bi,bj)-uTmp(I,J,bi,bj))
0606 & * UVM(I,J,bi,bj)
0607 S1=MAX(ABS(UERR),S1)
0608 ENDDO
0609 ENDDO
0610 ENDDO
0611 ENDDO
0612 _GLOBAL_MAX_RL( S1, myThid )
0613
0614
0615
0616 IF(m.GT.1.AND.S1.GT.S1A) WFAU=WFAU2
0617 S1A=S1
0618 IF(S1.LT.LSR_ERROR) THEN
0619 ICOUNT1=m
0620 doIterate4u = .FALSE.
0621 ENDIF
0622 ENDIF
0623
0624 IF ( doIterate4v.AND.MOD(m,SOLV_NCHECK).EQ.0) THEN
0625 S2=ZERO
0626 DO bj=myByLo(myThid),myByHi(myThid)
0627 DO bi=myBxLo(myThid),myBxHi(myThid)
0628 DO J=1,sNy
0629 DO I=1,sNx
0630 UERR=(vIce(I,J,bi,bj)-vTmp(I,J,bi,bj))
0631 & * UVM(I,J,bi,bj)
0632 S2=MAX(ABS(UERR),S2)
0633 ENDDO
0634 ENDDO
0635 ENDDO
0636 ENDDO
0637 _GLOBAL_MAX_RL( S2, myThid )
0638
0639 IF(m.GT.1.AND.S2.GT.S2A) WFAV=WFAV2
0640 S2A=S2
0641 IF(S2.LT.LSR_ERROR) THEN
0642 ICOUNT2=m
0643 doIterate4v = .FALSE.
0644 ENDIF
0645 ENDIF
0646
0647 CALL EXCH_UV_XY_RL( uIce, vIce,.TRUE.,myThid)
0648
0649
0650 ENDIF
0651 ENDDO
0652
0653 #ifdef ALLOW_DEBUG
0654 IF ( debugLevel .GE. debLevD ) THEN
0655 WRITE(msgBuf,'(A,I3,A)')
0656 & 'Uice post iter (SEAICE_LSR', MOD(ilcall,1000), ')'
0657 CALL DEBUG_STATS_RL( 1, uIce, msgBuf, myThid )
0658 WRITE(msgBuf,'(A,I3,A)')
0659 & 'Vice post iter (SEAICE_LSR', MOD(ilcall,1000), ')'
0660 CALL DEBUG_STATS_RL( 1, vIce, msgBuf, myThid )
0661 ENDIF
0662 #endif /* ALLOW_DEBUG */
0663 IF ( doIterate4u .OR. doIterate4v ) THEN
0664 WRITE(msgBuf,'(2A,I10,A,I4,A)') '** WARNING ** SEAICE_LSR ',
0665 & '(it=', -9999, ',', ilcall,') did not converge :'
0666 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0667 & SQUEEZE_RIGHT, myThid )
0668 WRITE(msgBuf,'(2(A,I6,0PF6.3,1PE14.6))')
0669 & ' nIt,wFU,dU=', ICOUNT1, WFAU, S1,
0670 & ' ; nIt,wFV,dV=', ICOUNT2, WFAV, S2
0671 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0672 & SQUEEZE_RIGHT, myThid )
0673 ENDIF
0674
0675 #else /* SEAICE_LSRBNEW */
809c36b928 Patr*0676
0677
7109a141b2 Patr*0678 #ifdef ALLOW_AUTODIFF_TAMC
88f72205aa Jean*0679
7109a141b2 Patr*0680
0681
8a37a22def Patr*0682
7109a141b2 Patr*0683
8a37a22def Patr*0684
7109a141b2 Patr*0685
0686 #endif /* ALLOW_AUTODIFF_TAMC */
0687
809c36b928 Patr*0688 DO bj=myByLo(myThid),myByHi(myThid)
0689 DO bi=myBxLo(myThid),myBxHi(myThid)
d24acf3cfc Jean*0690 DO j=1-OLy,sNy+OLy
0691 DO i=1-OLx,sNx+OLx
4366d31d92 Mart*0692 etaPlusZeta(I,J,bi,bj) = ETA(I,J,bi,bj)+ZETA(I,J,bi,bj)
0693 zetaMinusEta(I,J,bi,bj) = ZETA(I,J,bi,bj)-ETA(I,J,bi,bj)
0694 ENDDO
0695 ENDDO
d24acf3cfc Jean*0696 DO j=1-OLy+1,sNy+OLy
0697 DO i=1-OLx+1,sNx+OLx
4366d31d92 Mart*0698 ETAMEAN(I,J,bi,bj) =QUART*(
0699 & ETA(I,J-1,bi,bj) + ETA(I-1,J-1,bi,bj)
0700 & +ETA(I,J ,bi,bj) + ETA(I-1,J ,bi,bj))
0701 ZETAMEAN(I,J,bi,bj)=QUART*(
0702 & ZETA(I,J-1,bi,bj) + ZETA(I-1,J-1,bi,bj)
0703 & +ZETA(I,J ,bi,bj) + ZETA(I-1,J ,bi,bj))
809c36b928 Patr*0704 ENDDO
0705 ENDDO
0706 ENDDO
0707 ENDDO
0708
0709 DO bj=myByLo(myThid),myByHi(myThid)
0710 DO bi=myBxLo(myThid),myBxHi(myThid)
0711
0712 DO J=1,sNy
0713 DO I=1,sNx
4366d31d92 Mart*0714 AA1=( etaPlusZeta(I ,J-1,bi,bj) * _recip_dxF(I ,J-1,bi,bj)
0715 & +etaPlusZeta(I ,J ,bi,bj) * _recip_dxF(I ,J ,bi,bj)
0716 & )*0.5 _d 0 * _recip_dxV(I,J,bi,bj) * UVM(I,J,bi,bj)
0717 AA2=( etaPlusZeta(I-1,J-1,bi,bj) * _recip_dxF(I-1,J-1,bi,bj)
0718 & +etaPlusZeta(I-1,J ,bi,bj) * _recip_dxF(I-1,J ,bi,bj)
0719 & )*0.5 _d 0 * _recip_dxV(I,J,bi,bj) * UVM(I,J,bi,bj)
0720 AA3= 0.5 _d 0 *(ETA(I-1,J ,bi,bj)+ETA(I,J ,bi,bj))
0721 AA4= 0.5 _d 0 *(ETA(I-1,J-1,bi,bj)+ETA(I,J-1,bi,bj))
df7ba7118e Jean*0722 AA5= -(AA3-AA4) * _tanPhiAtV(I,J,bi,bj)
1b4a08ade9 Mart*0723 & * _recip_dyU(I,J,bi,bj)*recip_rSphere
0724 AA6=TWO*ETAMEAN(I,J,bi,bj) *recip_rSphere*recip_rSphere
4366d31d92 Mart*0725 & * _tanPhiAtV(I,J,bi,bj) * _tanPhiAtV(I,J,bi,bj)
0726 AU(I,J,bi,bj)=-AA2
0727 CU(I,J,bi,bj)=-AA1
0728 BU(I,J,bi,bj)=(ONE-UVM(I,J,bi,bj))
0729 & - AU(I,J,bi,bj) - CU(I,J,bi,bj)
0730 & + ((AA3+AA4)*_recip_dyU(I,J,bi,bj)*_recip_dyU(I,J,bi,bj)
0731 & + AA5 + AA6
0732 & + AMASS(I,J,bi,bj)/SEAICE_deltaTdyn
0733 & + DRAGS(I,J,bi,bj)
0734 & )*UVM(I,J,bi,bj)
809c36b928 Patr*0735 END DO
0736 END DO
0737
0738 DO J=1,sNy
09510da3bb Dimi*0739 AU(1,J,bi,bj)=ZERO
0740 CU(sNx,J,bi,bj)=ZERO
0741 CU(1,J,bi,bj)=CU(1,J,bi,bj)/BU(1,J,bi,bj)
809c36b928 Patr*0742 END DO
0743
4366d31d92 Mart*0744
d24acf3cfc Jean*0745 DO J=1-OLy,sNy+OLy-1
0746 DO I=1-OLx,sNx+OLx-1
bb4175c1b5 Mart*0747 dVdy(I,J) = 0.5 _d 0 * (
45315406aa Mart*0748 & ( vIceB(I+1,J+1,bi,bj) - vIceB(I+1,J ,bi,bj) )
bb4175c1b5 Mart*0749 & * _recip_dyG(I+1,J,bi,bj)
45315406aa Mart*0750 & +(vIceB(I ,J+1,bi,bj) - vIceB(I ,J ,bi,bj) )
bb4175c1b5 Mart*0751 & * _recip_dyG(I, J,bi,bj) )
0752 dVdx(I,J) = 0.5 _d 0 * (
45315406aa Mart*0753 & ( vIceB(I+1,J+1,bi,bj) - vIceB(I ,J+1,bi,bj) )
bb4175c1b5 Mart*0754 & * _recip_dxG(I,J+1,bi,bj)
45315406aa Mart*0755 & +(vIceB(I+1,J ,bi,bj) - vIceB(I ,J ,bi,bj) )
bb4175c1b5 Mart*0756 & * _recip_dxG(I,J, bi,bj) )
0757 ENDDO
0758 ENDDO
0759 #ifdef SEAICE_TEST
d24acf3cfc Jean*0760 DO j=1-OLy,sNy+OLy-1
0761 DO i=1-OLx,sNx+OLx-1
04016f2c47 Mart*0762 vz(i,j) = quart * (
45315406aa Mart*0763 & vIceB(i,j,bi,bj) + vIceB(i+1,j,bi,bj) )
04016f2c47 Mart*0764 vz(i,j)= vz(i,j) + quart * (
45315406aa Mart*0765 & vIceB(i,j+1,bi,bj) + vIceB(i+1,j+1,bi,bj) )
4366d31d92 Mart*0766 ENDDO
0767 ENDDO
bb4175c1b5 Mart*0768 #endif
809c36b928 Patr*0769 DO J=1,sNy
0770 DO I=1,sNx
45315406aa Mart*0771 rhsU(I,J,bi,bj)=DRAGA(I,J,bi,bj)*vIceB(I,J,bi,bj)
4366d31d92 Mart*0772 & +FORCEX(I,J,bi,bj)
bb4175c1b5 Mart*0773 #ifdef SEAICE_TEST
df7ba7118e Jean*0774 & + ( 0.5 _d 0 *
bb4175c1b5 Mart*0775 & (zetaMinusEta(i,j,bi,bj)+zetaMinusEta(i,j-1,bi,bj))
04016f2c47 Mart*0776 & *(vz(i,j)-vz(i,j-1)) * _recip_dyC(i,j,bi,bj)
df7ba7118e Jean*0777 & - 0.5 _d 0 *
bb4175c1b5 Mart*0778 & (zetaMinusEta(i-1,j,bi,bj)+zetaMinusEta(i-1,j-1,bi,bj))
04016f2c47 Mart*0779 & *(vz(i-1,j)-vz(i-1,j-1)) * _recip_dyC(i-1,j,bi,bj)
bb4175c1b5 Mart*0780 & ) * _recip_dxV(i,j,bi,bj)
0781 #else
0782 & + ( zetaMinusEta(I ,J ,bi,bj) * dVdy(I ,J )
0783 & + zetaMinusEta(I ,J-1,bi,bj) * dVdy(I ,J-1)
0784 & - zetaMinusEta(I-1,J ,bi,bj) * dVdy(I-1,J )
0785 & - zetaMinusEta(I-1,J-1,bi,bj) * dVdy(I-1,J-1)
df7ba7118e Jean*0786 & )* 0.5 _d 0 * _recip_dxV(I,J,bi,bj)
bb4175c1b5 Mart*0787 #endif
4366d31d92 Mart*0788 &
bb4175c1b5 Mart*0789 & + ( ETA (I ,J ,bi,bj) * dVdx(I ,J )
0790 & + ETA (I-1,J ,bi,bj) * dVdx(I-1,J )
0791 & - ETA (I ,J-1,bi,bj) * dVdx(I ,J-1)
0792 & - ETA (I-1,J-1,bi,bj) * dVdx(I-1,J-1)
4366d31d92 Mart*0793 & ) * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)
0794 &
0795 & -(etaPlusZeta(I ,J ,bi,bj)+etaPlusZeta(I ,J-1,bi,bj)
0796 & -etaPlusZeta(I-1,J-1,bi,bj)-etaPlusZeta(I-1,J ,bi,bj))
45315406aa Mart*0797 & * vIceB(I,J,bi,bj)
4366d31d92 Mart*0798 & * _tanPhiAtV(I,J,bi,bj)
1b4a08ade9 Mart*0799 & * 0.5 _d 0 * _recip_dxV(I,J,bi,bj)*recip_rSphere
4366d31d92 Mart*0800 &
0801 & -(ETAMEAN(I,J,bi,bj)+ZETAMEAN(I,J,bi,bj))
45315406aa Mart*0802 & *(vIceB(I+1,J,bi,bj) - vIceB(I-1,J,bi,bj))
4366d31d92 Mart*0803 & * _tanPhiAtV(I,J,bi,bj)
0804 & * 1.0 _d 0 /( _dxG(I,J,bi,bj) + _dxG(I-1,J,bi,bj) )
1b4a08ade9 Mart*0805 & *recip_rSphere
4366d31d92 Mart*0806 &
0807 & -ETAMEAN(I,J,bi,bj)
45315406aa Mart*0808 & *(vIceB(I+1,J,bi,bj) - vIceB(I-1,J,bi,bj))
4366d31d92 Mart*0809 & *TWO* _tanPhiAtV(I,J,bi,bj)
0810 & * 1.0 _d 0 /( _dxG(I,J,bi,bj) + _dxG(I-1,J,bi,bj) )
1b4a08ade9 Mart*0811 & *recip_rSphere
4366d31d92 Mart*0812
e1d2983c5b Mart*0813 URT1(I,J,bi,bj)=
4366d31d92 Mart*0814 & 0.5 _d 0 * (ETA(I-1,J-1,bi,bj)+ETA(I,J-1,bi,bj))
0815 & * _recip_dyU(I,J,bi,bj) * _recip_dyU(I,J,bi,bj)
0816 & - ETAMEAN(I,J,bi,bj) * _tanPhiAtV(I,J-1,bi,bj)
1b4a08ade9 Mart*0817 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere
4366d31d92 Mart*0818 & + TWO*ETAMEAN(I,J,bi,bj) * _tanPhiAtV(I,J,bi,bj)
1b4a08ade9 Mart*0819 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere
e1d2983c5b Mart*0820 URT2(I,J,bi,bj)=
4366d31d92 Mart*0821 & 0.5 _d 0 * (ETA(I-1,J,bi,bj)+ETA(I,J,bi,bj))
0822 & * _recip_dyU(I,J,bi,bj) * _recip_dyU(I,J,bi,bj)
0823 & + ETAMEAN(I,J,bi,bj) * _tanPhiAtV(I,J+1,bi,bj)
1b4a08ade9 Mart*0824 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere
4366d31d92 Mart*0825 & - TWO*ETAMEAN(I,J,bi,bj) * _tanPhiAtV(I,J,bi,bj)
1b4a08ade9 Mart*0826 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere
809c36b928 Patr*0827 END DO
0828 END DO
0829
0830 ENDDO
0831 ENDDO
0832
0833
09510da3bb Dimi*0834
7109a141b2 Patr*0835
0836
0837 phexit = -1
0838
0839
0840 #ifdef ALLOW_AUTODIFF_TAMC
0841
0842 #endif /* ALLOW_AUTODIFF_TAMC */
79df32c3f1 Mart*0843 DO M=1, SEAICElinearIterMax
7109a141b2 Patr*0844 IF ( phexit .EQ. -1 ) THEN
df7ba7118e Jean*0845
809c36b928 Patr*0846 DO bj=myByLo(myThid),myByHi(myThid)
0847 DO bi=myBxLo(myThid),myBxHi(myThid)
0848
0849 DO J=1,sNy
0850 DO I=1,sNx
772590b63c Mart*0851 UTMP(I,J,bi,bj)=UICE(I,J,bi,bj)
809c36b928 Patr*0852 END DO
0853 END DO
0854
df7ba7118e Jean*0855 DO J=1,sNy
809c36b928 Patr*0856 DO I=1,sNx
09510da3bb Dimi*0857 IF(I.EQ.1) THEN
4366d31d92 Mart*0858 AA2=(etaPlusZeta(I-1,J-1,bi,bj) * _recip_dxF(I-1,J-1,bi,bj)
0859 & +etaPlusZeta(I-1,J ,bi,bj) * _recip_dxF(I-1,J ,bi,bj)
0860 & )*0.5 _d 0 * _recip_dxV(I,J,bi,bj)
772590b63c Mart*0861 AA3=AA2*UICE(I-1,J,bi,bj)*UVM(I,J,bi,bj)
09510da3bb Dimi*0862 ELSE IF(I.EQ.sNx) THEN
4366d31d92 Mart*0863 AA1=(etaPlusZeta(I ,J-1,bi,bj) * _recip_dxF(I ,J-1,bi,bj)
0864 & +etaPlusZeta(I ,J ,bi,bj) * _recip_dxF(I ,J ,bi,bj)
0865 & )*0.5 _d 0 * _recip_dxV(I,J,bi,bj)
772590b63c Mart*0866 AA3=AA1*UICE(I+1,J,bi,bj)*UVM(I,J,bi,bj)
09510da3bb Dimi*0867 ELSE
0868 AA3=ZERO
0869 END IF
e1d2983c5b Mart*0870 URT(I)=rhsU(I,J,bi,bj)+AA3
0871 & +URT1(I,J,bi,bj)*UICE(I,J-1,bi,bj)
0872 & +URT2(I,J,bi,bj)*UICE(I,J+1,bi,bj)
809c36b928 Patr*0873 URT(I)=URT(I)*UVM(I,J,bi,bj)
0874 END DO
0875
0876 DO I=1,sNx
09510da3bb Dimi*0877 CUU(I)=CU(I,J,bi,bj)
809c36b928 Patr*0878 END DO
09510da3bb Dimi*0879 URT(1)=URT(1)/BU(1,J,bi,bj)
809c36b928 Patr*0880 DO I=2,sNx
0881 IM=I-1
09510da3bb Dimi*0882 CUU(I)=CUU(I)/(BU(I,J,bi,bj)-AU(I,J,bi,bj)*CUU(IM))
0883 URT(I)=(URT(I)-AU(I,J,bi,bj)*URT(IM))
0884 & /(BU(I,J,bi,bj)-AU(I,J,bi,bj)*CUU(IM))
809c36b928 Patr*0885 END DO
0886 DO I=1,sNx-1
0887 J1=sNx-I
0888 J2=J1+1
0889 URT(J1)=URT(J1)-CUU(J1)*URT(J2)
0890 END DO
0891 DO I=1,sNx
772590b63c Mart*0892 UICE(I,J,bi,bj)=UTMP(I,J,bi,bj)
04016f2c47 Mart*0893 & +WFAU*(URT(I)-UTMP(I,J,bi,bj))
809c36b928 Patr*0894 END DO
0895
df7ba7118e Jean*0896 END DO
809c36b928 Patr*0897
0898 ENDDO
0899 ENDDO
0900
09510da3bb Dimi*0901 IF(MOD(M,SOLV_NCHECK).EQ.0) THEN
df7ba7118e Jean*0902 S1=ZERO
09510da3bb Dimi*0903 DO bj=myByLo(myThid),myByHi(myThid)
0904 DO bi=myBxLo(myThid),myBxHi(myThid)
0905 DO J=1,sNy
0906 DO I=1,sNx
e1d2983c5b Mart*0907 UERR=(UICE(I,J,bi,bj)-UTMP(I,J,bi,bj))
809c36b928 Patr*0908 & *UVM(I,J,bi,bj)
e1d2983c5b Mart*0909 S1=MAX(ABS(UERR),S1)
09510da3bb Dimi*0910 END DO
809c36b928 Patr*0911 END DO
09510da3bb Dimi*0912 ENDDO
809c36b928 Patr*0913 ENDDO
7163a40534 Jean*0914 _GLOBAL_MAX_RL( S1, myThid )
09510da3bb Dimi*0915
0916 IF(M.GT.1.AND.S1.GT.S1A) WFAU=WFAU2
0917 S1A=S1
0918 IF(S1.LT.LSR_ERROR) THEN
0919 ICOUNT1=M
7109a141b2 Patr*0920 phexit = 1
09510da3bb Dimi*0921 END IF
0922 END IF
772590b63c Mart*0923 _EXCH_XY_RL( UICE, myThid )
09510da3bb Dimi*0924
df7ba7118e Jean*0925 ENDIF
0926 ENDDO
7109a141b2 Patr*0927
0928
23142459d0 Jean*0929 IF ( debugLevel .GE. debLevC ) THEN
0276a7ecde Dimi*0930 _BEGIN_MASTER( myThid )
0931 write(*,'(A,I6,1P2E22.14)')' U lsr iters, error = ',ICOUNT1,S1
ea6e02f692 Ed H*0932 _END_MASTER( myThid )
0276a7ecde Dimi*0933 ENDIF
809c36b928 Patr*0934
0935
0936 DO bj=myByLo(myThid),myByHi(myThid)
0937 DO bi=myBxLo(myThid),myBxHi(myThid)
0938
0939 DO J=1,sNy
0940 DO I=1,sNx
4366d31d92 Mart*0941 AA1=0.5 _d 0 * _recip_dyU(I,J,bi,bj) * _recip_dyU(I,J,bi,bj)
0942 & * (etaPlusZeta(I-1,J ,bi,bj) + etaPlusZeta(I,J ,bi,bj))
0943 AA2=0.5 _d 0 * _recip_dyU(I,J,bi,bj) * _recip_dyU(I,J,bi,bj)
0944 & * (etaPlusZeta(I-1,J-1,bi,bj) + etaPlusZeta(I,J-1,bi,bj))
0945 AA3= (ETA(I ,J-1,bi,bj) * _recip_dxV(I,J,bi,bj)
0946 & +ETA(I ,J ,bi,bj) * _recip_dxV(I,J,bi,bj)
0947 & )* 0.5 _d 0 * _recip_dxV(I,J,bi,bj)
0948 AA4= (ETA(I-1,J-1,bi,bj)+ETA(I-1,J,bi,bj))*0.5 _d 0
0949 & *_recip_dxV(I,J,bi,bj) * _recip_dxV(I,J,bi,bj)
0950 AA5=(zetaMinusEta(I-1,J ,bi,bj) + zetaMinusEta(I,J ,bi,bj)
0951 & -zetaMinusEta(I-1,J-1,bi,bj) - zetaMinusEta(I,J-1,bi,bj)
df7ba7118e Jean*0952 & )* _tanPhiAtV(I,J,bi,bj)
1b4a08ade9 Mart*0953 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere
4366d31d92 Mart*0954
1b4a08ade9 Mart*0955 AA6=TWO*ETAMEAN(I,J,bi,bj) * recip_rSphere*recip_rSphere
4366d31d92 Mart*0956 & * _tanPhiAtV(I,J,bi,bj) * _tanPhiAtV(I,J,bi,bj)
0957
0958 AV(I,J,bi,bj)=(
0959 & - AA2
0960 & - (ZETAMEAN(I,J,bi,bj)-ETAMEAN(I,J,bi,bj))
df7ba7118e Jean*0961 & * _tanPhiAtV(I,J-1,bi,bj)
1b4a08ade9 Mart*0962 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere
4366d31d92 Mart*0963 & -ETAMEAN(I,J,bi,bj)*TWO* _tanPhiAtV(I,J,bi,bj)
1b4a08ade9 Mart*0964 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere
4366d31d92 Mart*0965 & )*UVM(I,J,bi,bj)
0966 CV(I,J,bi,bj)=(
df7ba7118e Jean*0967 & -AA1
4366d31d92 Mart*0968 & +(ZETAMEAN(I,J,bi,bj)-ETAMEAN(I,J,bi,bj))
df7ba7118e Jean*0969 & * _tanPhiAtV(I,J+1,bi,bj)
1b4a08ade9 Mart*0970 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere
4366d31d92 Mart*0971 & +ETAMEAN(I,J,bi,bj)*TWO* _tanPhiAtV(I,J,bi,bj)
1b4a08ade9 Mart*0972 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere
4366d31d92 Mart*0973 & )*UVM(I,J,bi,bj)
0974 BV(I,J,bi,bj)= (ONE-UVM(I,J,bi,bj))
0975 & +( (AA1+AA2) + (AA3+AA4) + AA5 + AA6
0976 & +AMASS(I,J,bi,bj)/SEAICE_deltaTdyn+DRAGS(I,J,bi,bj))
0977 & *UVM(I,J,bi,bj)
809c36b928 Patr*0978 END DO
0979 END DO
0980
0981 DO I=1,sNx
09510da3bb Dimi*0982 AV(I,1,bi,bj)=ZERO
0983 CV(I,sNy,bi,bj)=ZERO
0984 CV(I,1,bi,bj)=CV(I,1,bi,bj)/BV(I,1,bi,bj)
809c36b928 Patr*0985 END DO
0986
4366d31d92 Mart*0987
d24acf3cfc Jean*0988 DO J=1-OLy,sNy+OLy-1
0989 DO I=1-OLx,sNx+OLx-1
bb4175c1b5 Mart*0990 dUdx(I,J) = 0.5 _d 0 * (
45315406aa Mart*0991 & ( uIceB(I+1,J+1,bi,bj) - uIceB(I ,J+1,bi,bj) )
bb4175c1b5 Mart*0992 & * _recip_dxG(I,J+1,bi,bj)
45315406aa Mart*0993 & +(uIceB(I+1,J ,bi,bj) - uIceB(I ,J ,bi,bj) )
bb4175c1b5 Mart*0994 & * _recip_dxG(I,J ,bi,bj) )
0995 dUdy(I,J) = 0.5 _d 0 * (
45315406aa Mart*0996 & ( uIceB(I+1,J+1,bi,bj) - uIceB(I+1,J ,bi,bj) )
bb4175c1b5 Mart*0997 & * _recip_dyG(I+1,J,bi,bj)
45315406aa Mart*0998 & +(uIceB(I ,J+1,bi,bj) - uIceB(I ,J ,bi,bj) )
bb4175c1b5 Mart*0999 & * _recip_dyG(I, J,bi,bj) )
4366d31d92 Mart*1000 ENDDO
1001 ENDDO
bb4175c1b5 Mart*1002 #ifdef SEAICE_TEST
d24acf3cfc Jean*1003 DO j=1-OLy,sNy+OLy-1
1004 DO i=1-OLx,sNx+OLx-1
04016f2c47 Mart*1005 uz(i,j) = quart * (
45315406aa Mart*1006 & uIceB(i,j,bi,bj) + uIceB(i+1,j,bi,bj) )
04016f2c47 Mart*1007 uz(i,j)= uz(i,j) + quart * (
45315406aa Mart*1008 & uIceB(i,j+1,bi,bj) + uIceB(i+1,j+1,bi,bj) )
2d0930fb3f Mart*1009 ENDDO
1010 ENDDO
bb4175c1b5 Mart*1011 #endif
809c36b928 Patr*1012 DO J=1,sNy
1013 DO I=1,sNx
45315406aa Mart*1014 rhsV(I,J,bi,bj)=-DRAGA(I,J,bi,bj)*uIceB(I,J,bi,bj)
4366d31d92 Mart*1015 & +FORCEY(I,J,bi,bj)
1016 &
bb4175c1b5 Mart*1017 #ifdef SEAICE_TEST
df7ba7118e Jean*1018 & + ( 0.5 _d 0 *
2d0930fb3f Mart*1019 & (zetaMinusEta(i,j,bi,bj)+zetaMinusEta(i-1,j,bi,bj))
04016f2c47 Mart*1020 & *(uz(i,j)-uz(i-1,j)) * _recip_dxC(i,j,bi,bj)
df7ba7118e Jean*1021 & - 0.5 _d 0 *
2d0930fb3f Mart*1022 & (zetaMinusEta(i,j-1,bi,bj)+zetaMinusEta(i-1,j-1,bi,bj))
04016f2c47 Mart*1023 & *(uz(i,j-1)-uz(i-1,j-1)) * _recip_dxC(i,j-1,bi,bj)
2d0930fb3f Mart*1024 & ) * _recip_dyU(i,j,bi,bj)
bb4175c1b5 Mart*1025 #else
1026 & + ( zetaMinusEta(I ,J ,bi,bj) * dUdx(I ,J )
1027 & + zetaMinusEta(I-1,J ,bi,bj) * dUdx(I-1,J )
1028 & - zetaMinusEta(I ,J-1,bi,bj) * dUdx(I ,J-1)
1029 & - zetaMinusEta(I-1,J-1,bi,bj) * dUdx(I-1,J-1)
1030 & )* 0.5 _d 0 * _recip_dyU(I,J,bi,bj)
1031 #endif
df7ba7118e Jean*1032 &
bb4175c1b5 Mart*1033 & + ( ETA (I ,J ,bi,bj) * dUdy(I ,J )
1034 & + ETA (I ,J-1,bi,bj) * dUdy(I ,J-1)
1035 & - ETA (I-1,J ,bi,bj) * dUdy(I-1,J )
1036 & - ETA (I-1,J-1,bi,bj) * dUdy(I-1,J-1)
1037 & )*0.5 _d 0* _recip_dxV(I,J,bi,bj)
4366d31d92 Mart*1038 &
1039 & +(ETA(I ,J ,bi,bj) + ETA(I ,J-1,bi,bj)
1040 & -ETA(I-1,J-1,bi,bj) - ETA(I-1,J ,bi,bj))
45315406aa Mart*1041 & * uIceB(I,J,bi,bj)
4366d31d92 Mart*1042 & * _tanPhiAtV(I,J,bi,bj)
1b4a08ade9 Mart*1043 & * 0.5 _d 0 * _recip_dxV(I,J,bi,bj)*recip_rSphere
4366d31d92 Mart*1044 & +ETAMEAN(I,J,bi,bj) * _tanPhiAtV(I,J,bi,bj)
45315406aa Mart*1045 & *(uIceB(I+1,J,bi,bj)-uIceB(I-1,J,bi,bj))
1b4a08ade9 Mart*1046 & * 0.5 _d 0 * _recip_dxV(I,J,bi,bj)*recip_rSphere
4366d31d92 Mart*1047 &
1048 & +ETAMEAN(I,J,bi,bj)*TWO * _tanPhiAtV(I,J,bi,bj)
45315406aa Mart*1049 & *(uIceB(I+1,J,bi,bj)-uIceB(I-1,J,bi,bj))
4366d31d92 Mart*1050 & * 1. _d 0 /( _dxG(I,J,bi,bj) + _dxG(I-1,J,bi,bj))
1b4a08ade9 Mart*1051 & *recip_rSphere
e1d2983c5b Mart*1052 VRT1(I,J,bi,bj)= 0.5 _d 0 * (
4366d31d92 Mart*1053 & ETA(I-1,J-1,bi,bj) * _recip_dxV(I,J,bi,bj)
1054 & +ETA(I-1,J ,bi,bj) * _recip_dxV(I,J,bi,bj)
1055 & ) * _recip_dxV(I,J,bi,bj)
e1d2983c5b Mart*1056 VRT2(I,J,bi,bj)= 0.5 _d 0 * (
4366d31d92 Mart*1057 & ETA(I ,J-1,bi,bj) * _recip_dxV(I,J,bi,bj)
1058 & +ETA(I ,J ,bi,bj) * _recip_dxV(I,J,bi,bj)
1059 & ) * _recip_dxV(I,J,bi,bj)
809c36b928 Patr*1060
1061 END DO
1062 END DO
1063
1064 ENDDO
1065 ENDDO
1066
1067
09510da3bb Dimi*1068
7109a141b2 Patr*1069
1070
1071 phexit = -1
1072
1073
1074 #ifdef ALLOW_AUTODIFF_TAMC
1075
1076 #endif /* ALLOW_AUTODIFF_TAMC */
79df32c3f1 Mart*1077 DO M=1, SEAICElinearIterMax
7109a141b2 Patr*1078 IF ( phexit .EQ. -1 ) THEN
df7ba7118e Jean*1079
809c36b928 Patr*1080
1081 DO bj=myByLo(myThid),myByHi(myThid)
1082 DO bi=myBxLo(myThid),myBxHi(myThid)
1083
1084 DO J=1,sNy
1085 DO I=1,sNx
772590b63c Mart*1086 VTMP(I,J,bi,bj)=VICE(I,J,bi,bj)
809c36b928 Patr*1087 END DO
1088 END DO
1089
7109a141b2 Patr*1090 DO I=1,sNx
809c36b928 Patr*1091 DO J=1,sNy
09510da3bb Dimi*1092 IF(J.EQ.1) THEN
4366d31d92 Mart*1093 AA2= _recip_dyU(I,J,bi,bj) * _recip_dyU(I,J,bi,bj)
df7ba7118e Jean*1094 & * 0.5 _d 0 *(
4366d31d92 Mart*1095 & etaPlusZeta(I-1,J-1,bi,bj) + etaPlusZeta(I,J-1,bi,bj)
1096 & )
1097 AA3=( AA2
1098 & +( ZETAMEAN(I,J,bi,bj)-ETAMEAN(I,J,bi,bj) )
1099 & * _tanPhiAtV(I,J-1,bi,bj)
df7ba7118e Jean*1100 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere
4366d31d92 Mart*1101 & + ETAMEAN(I,J,bi,bj)*TWO* _tanPhiAtV(I,J,bi,bj)
1b4a08ade9 Mart*1102 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere )
772590b63c Mart*1103 & *VICE(I,J-1,bi,bj)*UVM(I,J,bi,bj)
09510da3bb Dimi*1104 ELSE IF(J.EQ.sNy) THEN
4366d31d92 Mart*1105 AA1= _recip_dyU(I,J,bi,bj) * _recip_dyU(I,J,bi,bj)
1106 & * 0.5 _d 0 * (
1107 & etaPlusZeta(I-1,J,bi,bj) + etaPlusZeta(I,J,bi,bj)
1108 & )
1109 AA3=( AA1
1110 & -( ZETAMEAN(I,J,bi,bj)-ETAMEAN(I,J,bi,bj))
1111 & * _tanPhiAtV(I,J+1,bi,bj)
df7ba7118e Jean*1112 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere
4366d31d92 Mart*1113 & - ETAMEAN(I,J,bi,bj)*TWO* _tanPhiAtV(I,J,bi,bj)
1b4a08ade9 Mart*1114 & * 0.5 _d 0 * _recip_dyU(I,J,bi,bj)*recip_rSphere )
772590b63c Mart*1115 & *VICE(I,J+1,bi,bj)*UVM(I,J,bi,bj)
09510da3bb Dimi*1116 ELSE
1117 AA3=ZERO
1118 END IF
1119
e1d2983c5b Mart*1120 VRT(J)=rhsV(I,J,bi,bj)+AA3+VRT1(I,J,bi,bj)*VICE(I-1,J,bi,bj)
1121 & +VRT2(I,J,bi,bj)*VICE(I+1,J,bi,bj)
809c36b928 Patr*1122 VRT(J)=VRT(J)*UVM(I,J,bi,bj)
1123 END DO
1124
1125 DO J=1,sNy
09510da3bb Dimi*1126 CVV(J)=CV(I,J,bi,bj)
809c36b928 Patr*1127 END DO
09510da3bb Dimi*1128 VRT(1)=VRT(1)/BV(I,1,bi,bj)
809c36b928 Patr*1129 DO J=2,sNy
1130 JM=J-1
09510da3bb Dimi*1131 CVV(J)=CVV(J)/(BV(I,J,bi,bj)-AV(I,J,bi,bj)*CVV(JM))
1132 VRT(J)=(VRT(J)-AV(I,J,bi,bj)*VRT(JM))
1133 & /(BV(I,J,bi,bj)-AV(I,J,bi,bj)*CVV(JM))
809c36b928 Patr*1134 END DO
1135 DO J=1,sNy-1
1136 J1=sNy-J
1137 J2=J1+1
1138 VRT(J1)=VRT(J1)-CVV(J1)*VRT(J2)
1139 END DO
1140 DO J=1,sNy
772590b63c Mart*1141 VICE(I,J,bi,bj)=VTMP(I,J,bi,bj)
04016f2c47 Mart*1142 & +WFAV*(VRT(J)-VTMP(I,J,bi,bj))
809c36b928 Patr*1143 END DO
7109a141b2 Patr*1144 ENDDO
809c36b928 Patr*1145
1146 ENDDO
1147 ENDDO
1148
09510da3bb Dimi*1149 IF(MOD(M,SOLV_NCHECK).EQ.0) THEN
df7ba7118e Jean*1150 S2=ZERO
09510da3bb Dimi*1151 DO bj=myByLo(myThid),myByHi(myThid)
1152 DO bi=myBxLo(myThid),myBxHi(myThid)
1153 DO J=1,sNy
1154 DO I=1,sNx
e1d2983c5b Mart*1155 UERR=(VICE(I,J,bi,bj)-VTMP(I,J,bi,bj))
809c36b928 Patr*1156 & *UVM(I,J,bi,bj)
e1d2983c5b Mart*1157 S2=MAX(ABS(UERR),S2)
09510da3bb Dimi*1158 END DO
809c36b928 Patr*1159 END DO
09510da3bb Dimi*1160 ENDDO
809c36b928 Patr*1161 ENDDO
7163a40534 Jean*1162 _GLOBAL_MAX_RL( S2, myThid )
09510da3bb Dimi*1163
1164 IF(M.GT.1.AND.S2.GT.S2A) WFAV=WFAV2
1165 S2A=S2
1166 IF(S2.LT.LSR_ERROR) THEN
1167 ICOUNT2=M
7109a141b2 Patr*1168 phexit = 1
09510da3bb Dimi*1169 END IF
1170 END IF
1171
772590b63c Mart*1172 _EXCH_XY_RL( VICE, myThid )
09510da3bb Dimi*1173
df7ba7118e Jean*1174 ENDIF
1175 ENDDO
7109a141b2 Patr*1176
1177
23142459d0 Jean*1178 IF ( debugLevel .GE. debLevC ) THEN
0276a7ecde Dimi*1179 _BEGIN_MASTER( myThid )
1180 write(*,'(A,I6,1P2E22.14)')' V lsr iters, error = ',ICOUNT2,S2
ea6e02f692 Ed H*1181 _END_MASTER( myThid )
0276a7ecde Dimi*1182 ENDIF
809c36b928 Patr*1183
e1d2983c5b Mart*1184 #endif /* SEAICE_LSRBNEW */
1185
809c36b928 Patr*1186
1187
1188 DO bj=myByLo(myThid),myByHi(myThid)
1189 DO bi=myBxLo(myThid),myBxHi(myThid)
d24acf3cfc Jean*1190 DO J=1-OLy,sNy+OLy
1191 DO I=1-OLx,sNx+OLx
772590b63c Mart*1192 UICE(I,J,bi,bj)=UICE(I,J,bi,bj)*UVM(I,J,bi,bj)
1193 VICE(I,J,bi,bj)=VICE(I,J,bi,bj)*UVM(I,J,bi,bj)
809c36b928 Patr*1194 END DO
1195 END DO
1196 ENDDO
1197 ENDDO
1198
45315406aa Mart*1199 #endif /* SEAICE_BGRID_DYNAMICS */
809c36b928 Patr*1200
1201 RETURN
1202 END