File indexing completed on 2018-03-02 18:42:41 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
c7c4b57180 Dimi*0001 #include "OBCS_OPTIONS.h"
0002
0003
0004
0005
0006
5e26aed318 Dimi*0007
0008
c7c4b57180 Dimi*0009
0010
0011
0012
0013 SUBROUTINE OBCS_SEAICE_SPONGE_A( myThid )
0014
0015
0016
0017
0018 IMPLICIT NONE
0019
0020
0021 #include "SIZE.h"
0022 #include "EEPARAMS.h"
0023 #include "PARAMS.h"
0024 #include "GRID.h"
0025 #include "DYNVARS.h"
0026 #include "OBCS_PARAMS.h"
0027 #include "OBCS_GRID.h"
0028 #include "OBCS_FIELDS.h"
0029 #include "OBCS_SEAICE.h"
0030 #ifdef ALLOW_SEAICE
0031 # include "SEAICE_SIZE.h"
0032 # include "SEAICE_PARAMS.h"
0033 # include "SEAICE.h"
0034 #endif
0035
0036
0037 INTEGER myThid
0038
0039
0040 #if (defined(ALLOW_OBCS) && defined(ALLOW_SEAICE) && defined(ALLOW_OBCS_SEAICE_SPONGE))
0041
0042
0043 INTEGER bi, bj, i, j, isl, jsl
0044 _RL lambda_obcs
0045
0046 IF ( useSeaiceSponge .AND. seaiceSpongeThickness.NE.0 ) THEN
0047 DO bj=myByLo(myThid),myByHi(myThid)
0048 DO bi=myBxLo(myThid),myBxHi(myThid)
0049
0050
0051 # ifdef ALLOW_OBCS_NORTH
0052 IF ( tileHasOBN(bi,bj) ) THEN
0053 DO i=1,sNx
0054 IF ( OB_Jn(i,bi,bj).NE.OB_indexNone ) THEN
0055 DO jsl= 1,seaiceSpongeThickness
0056 j=OB_Jn(i,bi,bj)-jsl
0057 IF ((j.ge.1).and.(j.le.sNy)) THEN
0058 lambda_obcs = (
0059 & float(seaiceSpongeThickness-jsl)*Arelaxobcsbound
5e26aed318 Dimi*0060 & + float(jsl-1)*Arelaxobcsinner)
0061 & / float(seaiceSpongeThickness-1)
c7c4b57180 Dimi*0062 IF (lambda_obcs.ne.0.) THEN
0063 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0064 ELSE
0065 lambda_obcs = 0. _d 0
0066 ENDIF
5e26aed318 Dimi*0067 AREA(i,j,bi,bj) = AREA(i,j,bi,bj)
c7c4b57180 Dimi*0068 & - maskC(i,j,1,bi,bj) * lambda_obcs
0069 & * ( AREA(i,j,bi,bj) - OBNa(i,bi,bj) )
0070 ENDIF
0071 ENDDO
0072 ENDIF
0073 ENDDO
0074 ENDIF
0075 # endif
0076
0077
0078 # ifdef ALLOW_OBCS_SOUTH
0079 IF ( tileHasOBS(bi,bj) ) THEN
0080 DO i=1,sNx
0081 IF ( OB_Js(i,bi,bj).NE.OB_indexNone ) THEN
0082 DO jsl= 1,seaiceSpongeThickness
0083 j=OB_Js(i,bi,bj)+jsl
0084 IF ((j.ge.1).and.(j.le.sNy)) THEN
0085 lambda_obcs = (
5e26aed318 Dimi*0086 & float(seaiceSpongeThickness-jsl)*Arelaxobcsbound
0087 & + float(jsl-1)*Arelaxobcsinner)
0088 & / float(seaiceSpongeThickness-1)
c7c4b57180 Dimi*0089 if (lambda_obcs.ne.0.) then
0090 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0091 else
0092 lambda_obcs = 0. _d 0
0093 endif
0094 AREA(i,j,bi,bj) = AREA(i,j,bi,bj)
0095 & - maskC(i,j,1,bi,bj) * lambda_obcs
0096 & * ( AREA(i,j,bi,bj) - OBSa(i,bi,bj) )
0097 ENDIF
0098 ENDDO
0099 ENDIF
0100 ENDDO
0101 ENDIF
0102 # endif
0103
0104
0105 # ifdef ALLOW_OBCS_EAST
0106 IF ( tileHasOBE(bi,bj) ) THEN
0107 DO j=1,sNy
0108 IF ( OB_Ie(j,bi,bj).NE.OB_indexNone ) THEN
0109 DO isl= 1,seaiceSpongeThickness
0110 i=OB_Ie(j,bi,bj)-isl
0111 IF ((i.ge.1).and.(i.le.sNx)) THEN
0112 lambda_obcs = (
0113 & float(seaiceSpongeThickness-isl)*Arelaxobcsbound
5e26aed318 Dimi*0114 & + float(isl-1)*Arelaxobcsinner)
0115 & / float(seaiceSpongeThickness-1)
c7c4b57180 Dimi*0116 if (lambda_obcs.ne.0.) then
0117 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0118 else
0119 lambda_obcs = 0. _d 0
0120 endif
0121 AREA(i,j,bi,bj) = AREA(i,j,bi,bj)
0122 & - maskC(i,j,1,bi,bj) * lambda_obcs
0123 & * ( AREA(i,j,bi,bj) - OBEa(j,bi,bj) )
0124 ENDIF
0125 ENDDO
0126 ENDIF
0127 ENDDO
0128 ENDIF
0129 # endif
0130
0131
0132 # ifdef ALLOW_OBCS_WEST
0133 IF ( tileHasOBW(bi,bj) ) THEN
0134 DO j=1,sNy
0135 IF ( OB_Iw(j,bi,bj).NE.OB_indexNone ) THEN
0136 DO isl= 1,seaiceSpongeThickness
0137 i=OB_Iw(j,bi,bj)+isl
0138 IF ((i.ge.1).and.(i.le.sNx)) THEN
0139 lambda_obcs= (
0140 & float(seaiceSpongeThickness-isl)*Arelaxobcsbound
5e26aed318 Dimi*0141 & + float(isl-1)*Arelaxobcsinner)
0142 & / float(seaiceSpongeThickness-1)
c7c4b57180 Dimi*0143 if (lambda_obcs.ne.0.) then
0144 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0145 else
0146 lambda_obcs = 0. _d 0
0147 endif
5e26aed318 Dimi*0148 AREA(i,j,bi,bj) = AREA(i,j,bi,bj)
c7c4b57180 Dimi*0149 & - maskC(i,j,1,bi,bj) * lambda_obcs
0150 & * ( AREA(i,j,bi,bj) - OBWa(j,bi,bj) )
0151 ENDIF
0152 ENDDO
0153 ENDIF
0154 ENDDO
0155 ENDIF
0156 # endif
0157
0158 ENDDO
0159 ENDDO
0160 ENDIF
0161
0162 #endif /* ALLOW_OBCS & ALLOW_SEAICE & ALLOW_OBCS_SEAICE_SPONGE */
0163
0164 RETURN
0165 END
0166
0167
0168
0169
0170 SUBROUTINE OBCS_SEAICE_SPONGE_H( myThid )
0171
0172
0173
0174
0175 IMPLICIT NONE
0176
0177
0178 #include "SIZE.h"
0179 #include "EEPARAMS.h"
0180 #include "PARAMS.h"
0181 #include "GRID.h"
0182 #include "DYNVARS.h"
0183 #include "OBCS_PARAMS.h"
0184 #include "OBCS_GRID.h"
0185 #include "OBCS_FIELDS.h"
0186 #include "OBCS_SEAICE.h"
0187 #ifdef ALLOW_SEAICE
0188 # include "SEAICE_SIZE.h"
0189 # include "SEAICE_PARAMS.h"
0190 # include "SEAICE.h"
0191 #endif
0192
0193
0194 INTEGER myThid
0195
0196
0197 #if (defined(ALLOW_OBCS) && defined(ALLOW_SEAICE) && defined(ALLOW_OBCS_SEAICE_SPONGE))
0198
0199
0200 INTEGER bi, bj, i, j, isl, jsl
0201 _RL lambda_obcs
0202
0203 IF ( useSeaiceSponge .AND. seaiceSpongeThickness.NE.0 ) THEN
0204 DO bj=myByLo(myThid),myByHi(myThid)
0205 DO bi=myBxLo(myThid),myBxHi(myThid)
0206
0207
0208 # ifdef ALLOW_OBCS_NORTH
0209 IF ( tileHasOBN(bi,bj) ) THEN
0210 DO i=1,sNx
0211 IF ( OB_Jn(i,bi,bj).NE.OB_indexNone ) THEN
0212 DO jsl= 1,seaiceSpongeThickness
0213 j=OB_Jn(i,bi,bj)-jsl
0214 IF ((j.ge.1).and.(j.le.sNy)) THEN
0215 lambda_obcs = (
0216 & float(seaiceSpongeThickness-jsl)*Hrelaxobcsbound
5e26aed318 Dimi*0217 & + float(jsl-1)*Hrelaxobcsinner)
0218 & / float(seaiceSpongeThickness-1)
c7c4b57180 Dimi*0219 IF (lambda_obcs.ne.0.) THEN
0220 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0221 ELSE
0222 lambda_obcs = 0. _d 0
0223 ENDIF
5e26aed318 Dimi*0224 HEFF(i,j,bi,bj) = HEFF(i,j,bi,bj)
c7c4b57180 Dimi*0225 & - maskC(i,j,1,bi,bj) * lambda_obcs
0226 & * ( HEFF(i,j,bi,bj) - OBNh(i,bi,bj) )
0227 ENDIF
0228 ENDDO
0229 ENDIF
0230 ENDDO
0231 ENDIF
0232 # endif
0233
0234
0235 # ifdef ALLOW_OBCS_SOUTH
0236 IF ( tileHasOBS(bi,bj) ) THEN
0237 DO i=1,sNx
0238 IF ( OB_Js(i,bi,bj).NE.OB_indexNone ) THEN
0239 DO jsl= 1,seaiceSpongeThickness
0240 j=OB_Js(i,bi,bj)+jsl
0241 IF ((j.ge.1).and.(j.le.sNy)) THEN
0242 lambda_obcs = (
5e26aed318 Dimi*0243 & float(seaiceSpongeThickness-jsl)*Hrelaxobcsbound
0244 & + float(jsl-1)*Hrelaxobcsinner)
0245 & / float(seaiceSpongeThickness-1)
c7c4b57180 Dimi*0246 if (lambda_obcs.ne.0.) then
0247 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0248 else
0249 lambda_obcs = 0. _d 0
0250 endif
0251 HEFF(i,j,bi,bj) = HEFF(i,j,bi,bj)
0252 & - maskC(i,j,1,bi,bj) * lambda_obcs
0253 & * ( HEFF(i,j,bi,bj) - OBSh(i,bi,bj) )
0254 ENDIF
0255 ENDDO
0256 ENDIF
0257 ENDDO
0258 ENDIF
0259 # endif
0260
0261
0262 # ifdef ALLOW_OBCS_EAST
0263 IF ( tileHasOBE(bi,bj) ) THEN
0264 DO j=1,sNy
0265 IF ( OB_Ie(j,bi,bj).NE.OB_indexNone ) THEN
0266 DO isl= 1,seaiceSpongeThickness
0267 i=OB_Ie(j,bi,bj)-isl
0268 IF ((i.ge.1).and.(i.le.sNx)) THEN
0269 lambda_obcs = (
0270 & float(seaiceSpongeThickness-isl)*Hrelaxobcsbound
5e26aed318 Dimi*0271 & + float(isl-1)*Hrelaxobcsinner)
0272 & / float(seaiceSpongeThickness-1)
c7c4b57180 Dimi*0273 if (lambda_obcs.ne.0.) then
0274 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0275 else
0276 lambda_obcs = 0. _d 0
0277 endif
0278 HEFF(i,j,bi,bj) = HEFF(i,j,bi,bj)
0279 & - maskC(i,j,1,bi,bj) * lambda_obcs
5e26aed318 Dimi*0280 & * ( HEFF(i,j,bi,bj) - OBEh(j,bi,bj) )
c7c4b57180 Dimi*0281 ENDIF
0282 ENDDO
0283 ENDIF
0284 ENDDO
0285 ENDIF
0286 # endif
0287
0288
0289 # ifdef ALLOW_OBCS_WEST
0290 IF ( tileHasOBW(bi,bj) ) THEN
0291 DO j=1,sNy
0292 IF ( OB_Iw(j,bi,bj).NE.OB_indexNone ) THEN
0293 DO isl= 1,seaiceSpongeThickness
0294 i=OB_Iw(j,bi,bj)+isl
0295 IF ((i.ge.1).and.(i.le.sNx)) THEN
0296 lambda_obcs= (
0297 & float(seaiceSpongeThickness-isl)*Hrelaxobcsbound
5e26aed318 Dimi*0298 & + float(isl-1)*Hrelaxobcsinner)
0299 & / float(seaiceSpongeThickness-1)
0300 if (lambda_obcs.ne.0.) then
0301 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0302 else
0303 lambda_obcs = 0. _d 0
0304 endif
0305 HEFF(i,j,bi,bj) = HEFF(i,j,bi,bj)
0306 & - maskC(i,j,1,bi,bj) * lambda_obcs
0307 & * ( HEFF(i,j,bi,bj) - OBWh(j,bi,bj) )
0308 ENDIF
0309 ENDDO
0310 ENDIF
0311 ENDDO
0312 ENDIF
0313 # endif
0314
0315 ENDDO
0316 ENDDO
0317 ENDIF
0318
0319 #endif /* ALLOW_OBCS & ALLOW_SEAICE & ALLOW_OBCS_SEAICE_SPONGE */
0320
0321 RETURN
0322 END
0323
0324
0325
0326
0327 SUBROUTINE OBCS_SEAICE_SPONGE_SL( myThid )
0328
0329
0330
0331
0332 IMPLICIT NONE
0333
0334
0335 #include "SIZE.h"
0336 #include "EEPARAMS.h"
0337 #include "PARAMS.h"
0338 #include "GRID.h"
0339 #include "DYNVARS.h"
0340 #include "OBCS_PARAMS.h"
0341 #include "OBCS_GRID.h"
0342 #include "OBCS_FIELDS.h"
0343 #include "OBCS_SEAICE.h"
0344 #ifdef ALLOW_SEAICE
0345 # include "SEAICE_SIZE.h"
0346 # include "SEAICE_PARAMS.h"
0347 # include "SEAICE.h"
0348 #endif
0349
0350
0351 INTEGER myThid
0352
0353
0354 #if (defined(ALLOW_OBCS) && defined(ALLOW_SEAICE) && defined(ALLOW_OBCS_SEAICE_SPONGE) && defined(SEAICE_VARIABLE_SALINITY))
0355
0356
0357 INTEGER bi, bj, i, j, isl, jsl
0358 _RL lambda_obcs
0359
0360 IF ( useSeaiceSponge .AND. seaiceSpongeThickness.NE.0 ) THEN
0361 DO bj=myByLo(myThid),myByHi(myThid)
0362 DO bi=myBxLo(myThid),myBxHi(myThid)
0363
0364
0365 # ifdef ALLOW_OBCS_NORTH
0366 IF ( tileHasOBN(bi,bj) ) THEN
0367 DO i=1,sNx
0368 IF ( OB_Jn(i,bi,bj).NE.OB_indexNone ) THEN
0369 DO jsl= 1,seaiceSpongeThickness
0370 j=OB_Jn(i,bi,bj)-jsl
0371 IF ((j.ge.1).and.(j.le.sNy)) THEN
0372 lambda_obcs = (
0373 & float(seaiceSpongeThickness-jsl)*SLrelaxobcsbound
0374 & + float(jsl-1)*SLrelaxobcsinner)
0375 & / float(seaiceSpongeThickness-1)
0376 IF (lambda_obcs.ne.0.) THEN
0377 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0378 ELSE
0379 lambda_obcs = 0. _d 0
0380 ENDIF
0381 HSALT(i,j,bi,bj) = HSALT(i,j,bi,bj)
0382 & - maskC(i,j,1,bi,bj) * lambda_obcs
0383 & * ( HSALT(i,j,bi,bj) - OBNsl(i,bi,bj) )
0384 ENDIF
0385 ENDDO
0386 ENDIF
0387 ENDDO
0388 ENDIF
0389 # endif
0390
0391
0392 # ifdef ALLOW_OBCS_SOUTH
0393 IF ( tileHasOBS(bi,bj) ) THEN
0394 DO i=1,sNx
0395 IF ( OB_Js(i,bi,bj).NE.OB_indexNone ) THEN
0396 DO jsl= 1,seaiceSpongeThickness
0397 j=OB_Js(i,bi,bj)+jsl
0398 IF ((j.ge.1).and.(j.le.sNy)) THEN
0399 lambda_obcs = (
0400 & float(seaiceSpongeThickness-jsl)*SLrelaxobcsbound
0401 & + float(jsl-1)*SLrelaxobcsinner)
0402 & / float(seaiceSpongeThickness-1)
0403 if (lambda_obcs.ne.0.) then
0404 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0405 else
0406 lambda_obcs = 0. _d 0
0407 endif
0408 HSALT(i,j,bi,bj) = HSALT(i,j,bi,bj)
0409 & - maskC(i,j,1,bi,bj) * lambda_obcs
0410 & * ( HSALT(i,j,bi,bj) - OBSsl(i,bi,bj) )
0411 ENDIF
0412 ENDDO
0413 ENDIF
0414 ENDDO
0415 ENDIF
0416 # endif
0417
0418
0419 # ifdef ALLOW_OBCS_EAST
0420 IF ( tileHasOBE(bi,bj) ) THEN
0421 DO j=1,sNy
0422 IF ( OB_Ie(j,bi,bj).NE.OB_indexNone ) THEN
0423 DO isl= 1,seaiceSpongeThickness
0424 i=OB_Ie(j,bi,bj)-isl
0425 IF ((i.ge.1).and.(i.le.sNx)) THEN
0426 lambda_obcs = (
0427 & float(seaiceSpongeThickness-isl)*SLrelaxobcsbound
0428 & + float(isl-1)*SLrelaxobcsinner)
0429 & / float(seaiceSpongeThickness-1)
0430 if (lambda_obcs.ne.0.) then
0431 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0432 else
0433 lambda_obcs = 0. _d 0
0434 endif
0435 HSALT(i,j,bi,bj) = HSALT(i,j,bi,bj)
0436 & - maskC(i,j,1,bi,bj) * lambda_obcs
0437 & * ( HSALT(i,j,bi,bj) - OBEsl(j,bi,bj) )
0438 ENDIF
0439 ENDDO
0440 ENDIF
0441 ENDDO
0442 ENDIF
0443 # endif
0444
0445
0446 # ifdef ALLOW_OBCS_WEST
0447 IF ( tileHasOBW(bi,bj) ) THEN
0448 DO j=1,sNy
0449 IF ( OB_Iw(j,bi,bj).NE.OB_indexNone ) THEN
0450 DO isl= 1,seaiceSpongeThickness
0451 i=OB_Iw(j,bi,bj)+isl
0452 IF ((i.ge.1).and.(i.le.sNx)) THEN
0453 lambda_obcs= (
0454 & float(seaiceSpongeThickness-isl)*SLrelaxobcsbound
0455 & + float(isl-1)*SLrelaxobcsinner)
0456 & / float(seaiceSpongeThickness-1)
0457 if (lambda_obcs.ne.0.) then
0458 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0459 else
0460 lambda_obcs = 0. _d 0
0461 endif
0462 HSALT(i,j,bi,bj) = HSALT(i,j,bi,bj)
0463 & - maskC(i,j,1,bi,bj) * lambda_obcs
0464 & * ( HSALT(i,j,bi,bj) - OBWsl(j,bi,bj) )
0465 ENDIF
0466 ENDDO
0467 ENDIF
0468 ENDDO
0469 ENDIF
0470 # endif
0471
0472 ENDDO
0473 ENDDO
0474 ENDIF
0475
0476 #endif /* ALLOW_OBCS & ALLOW_SEAICE & ALLOW_OBCS_SEAICE_SPONGE & SEAICE_VARIABLE_SALINITY */
0477
0478 RETURN
0479 END
0480
0481
0482
0483
0484 SUBROUTINE OBCS_SEAICE_SPONGE_SN( myThid )
0485
0486
0487
0488
0489 IMPLICIT NONE
0490
0491
0492 #include "SIZE.h"
0493 #include "EEPARAMS.h"
0494 #include "PARAMS.h"
0495 #include "GRID.h"
0496 #include "DYNVARS.h"
0497 #include "OBCS_PARAMS.h"
0498 #include "OBCS_GRID.h"
0499 #include "OBCS_FIELDS.h"
0500 #include "OBCS_SEAICE.h"
0501 #ifdef ALLOW_SEAICE
0502 # include "SEAICE_SIZE.h"
0503 # include "SEAICE_PARAMS.h"
0504 # include "SEAICE.h"
0505 #endif
0506
0507
0508 INTEGER myThid
0509
0510
0511 #if (defined(ALLOW_OBCS) && defined(ALLOW_SEAICE) && defined(ALLOW_OBCS_SEAICE_SPONGE))
0512
0513
0514 INTEGER bi, bj, i, j, isl, jsl
0515 _RL lambda_obcs
0516
0517 IF ( useSeaiceSponge .AND. seaiceSpongeThickness.NE.0 ) THEN
0518 DO bj=myByLo(myThid),myByHi(myThid)
0519 DO bi=myBxLo(myThid),myBxHi(myThid)
0520
0521
0522 # ifdef ALLOW_OBCS_NORTH
0523 IF ( tileHasOBN(bi,bj) ) THEN
0524 DO i=1,sNx
0525 IF ( OB_Jn(i,bi,bj).NE.OB_indexNone ) THEN
0526 DO jsl= 1,seaiceSpongeThickness
0527 j=OB_Jn(i,bi,bj)-jsl
0528 IF ((j.ge.1).and.(j.le.sNy)) THEN
0529 lambda_obcs = (
0530 & float(seaiceSpongeThickness-jsl)*SNrelaxobcsbound
0531 & + float(jsl-1)*SNrelaxobcsinner)
0532 & / float(seaiceSpongeThickness-1)
0533 IF (lambda_obcs.ne.0.) THEN
0534 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0535 ELSE
0536 lambda_obcs = 0. _d 0
0537 ENDIF
0538 HSNOW(i,j,bi,bj) = HSNOW(i,j,bi,bj)
0539 & - maskC(i,j,1,bi,bj) * lambda_obcs
0540 & * ( HSNOW(i,j,bi,bj) - OBNsn(i,bi,bj) )
0541 ENDIF
0542 ENDDO
0543 ENDIF
0544 ENDDO
0545 ENDIF
0546 # endif
0547
0548
0549 # ifdef ALLOW_OBCS_SOUTH
0550 IF ( tileHasOBS(bi,bj) ) THEN
0551 DO i=1,sNx
0552 IF ( OB_Js(i,bi,bj).NE.OB_indexNone ) THEN
0553 DO jsl= 1,seaiceSpongeThickness
0554 j=OB_Js(i,bi,bj)+jsl
0555 IF ((j.ge.1).and.(j.le.sNy)) THEN
0556 lambda_obcs = (
0557 & float(seaiceSpongeThickness-jsl)*SNrelaxobcsbound
0558 & + float(jsl-1)*SNrelaxobcsinner)
0559 & / float(seaiceSpongeThickness-1)
0560 if (lambda_obcs.ne.0.) then
0561 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0562 else
0563 lambda_obcs = 0. _d 0
0564 endif
0565 HSNOW(i,j,bi,bj) = HSNOW(i,j,bi,bj)
0566 & - maskC(i,j,1,bi,bj) * lambda_obcs
0567 & * ( HSNOW(i,j,bi,bj) - OBSsn(i,bi,bj) )
0568 ENDIF
0569 ENDDO
0570 ENDIF
0571 ENDDO
0572 ENDIF
0573 # endif
0574
0575
0576 # ifdef ALLOW_OBCS_EAST
0577 IF ( tileHasOBE(bi,bj) ) THEN
0578 DO j=1,sNy
0579 IF ( OB_Ie(j,bi,bj).NE.OB_indexNone ) THEN
0580 DO isl= 1,seaiceSpongeThickness
0581 i=OB_Ie(j,bi,bj)-isl
0582 IF ((i.ge.1).and.(i.le.sNx)) THEN
0583 lambda_obcs = (
0584 & float(seaiceSpongeThickness-isl)*SNrelaxobcsbound
0585 & + float(isl-1)*SNrelaxobcsinner)
0586 & / float(seaiceSpongeThickness-1)
0587 if (lambda_obcs.ne.0.) then
0588 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0589 else
0590 lambda_obcs = 0. _d 0
0591 endif
0592 HSNOW(i,j,bi,bj) = HSNOW(i,j,bi,bj)
0593 & - maskC(i,j,1,bi,bj) * lambda_obcs
0594 & * ( HSNOW(i,j,bi,bj) - OBEsn(j,bi,bj) )
0595 ENDIF
0596 ENDDO
0597 ENDIF
0598 ENDDO
0599 ENDIF
0600 # endif
0601
0602
0603 # ifdef ALLOW_OBCS_WEST
0604 IF ( tileHasOBW(bi,bj) ) THEN
0605 DO j=1,sNy
0606 IF ( OB_Iw(j,bi,bj).NE.OB_indexNone ) THEN
0607 DO isl= 1,seaiceSpongeThickness
0608 i=OB_Iw(j,bi,bj)+isl
0609 IF ((i.ge.1).and.(i.le.sNx)) THEN
0610 lambda_obcs= (
0611 & float(seaiceSpongeThickness-isl)*SNrelaxobcsbound
0612 & + float(isl-1)*SNrelaxobcsinner)
0613 & / float(seaiceSpongeThickness-1)
c7c4b57180 Dimi*0614 if (lambda_obcs.ne.0.) then
0615 lambda_obcs = SEAICE_deltaTtherm / lambda_obcs
0616 else
0617 lambda_obcs = 0. _d 0
0618 endif
5e26aed318 Dimi*0619 HSNOW(i,j,bi,bj) = HSNOW(i,j,bi,bj)
c7c4b57180 Dimi*0620 & - maskC(i,j,1,bi,bj) * lambda_obcs
5e26aed318 Dimi*0621 & * ( HSNOW(i,j,bi,bj) - OBWsn(j,bi,bj) )
c7c4b57180 Dimi*0622 ENDIF
0623 ENDDO
0624 ENDIF
0625 ENDDO
0626 ENDIF
0627 # endif
0628
0629 ENDDO
0630 ENDDO
0631 ENDIF
0632
0633 #endif /* ALLOW_OBCS & ALLOW_SEAICE & ALLOW_OBCS_SEAICE_SPONGE */
0634
0635 RETURN
0636 END