** Warning **
Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle dbname=MITgcm at /usr/local/share/lxr/lib/LXR/Common.pm line 1224.
Last-Modified: Fri, 10 Sep 2026 05:09:17 GMT
Content-Type: text/html; charset=utf-8
MITgcm/MITgcm/pkg/seaice/seaice_itd_remap.F
File indexing completed on 2026-05-05 05:09:03 UTC
view on github raw file Latest commit 3f0f10fc on 2026-05-04 14:55:37 UTC
ed2f6fecc4 Mart* 0001
0002
0003
0004
0005
0006 #include "SEAICE_OPTIONS.h "
0007
0008
0009
0010
0011
0012 SUBROUTINE SEAICE_ITD_REMAP (
0013 I heffitdpre , areaitdpre ,
0014 I bi , bj , myTime , myIter , myThid )
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 IMPLICIT NONE
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044 #include "SIZE.h "
0045 #include "EEPARAMS.h "
0046 #include "PARAMS.h "
0047 #include "SEAICE_SIZE.h "
0048 #include "SEAICE_PARAMS.h "
3f0f10fc37 Mart* 0049 #include "SEAICE_GRID.h "
ed2f6fecc4 Mart* 0050 #include "SEAICE.h "
0051
0052
0053
0054
0055
0056
0057
0058 _RL myTime
0059 INTEGER bi ,bj
0060 INTEGER myIter
0061 INTEGER myThid
0062 _RL heffitdPre (1:sNx ,1:sNy ,1:nITD )
0063 _RL areaitdPre (1:sNx ,1:sNy ,1:nITD )
0064
0065 #ifdef SEAICE_ITD
0066
0067
0068
0069
0070
0071 INTEGER i , j , k
0072 INTEGER kDonor , kRecvr
0073 _RL slope , area_reg_sq , hice_reg_sq
0074 _RL etaMin , etaMax , etam , etap , eta2
0075 _RL dh0 , da0 , daMax
0076
0077 _RL third
0078 PARAMETER ( third = 0.333333333333333333333333333 _d 0 )
dcd6ed0c75 Jean* 0079
ed2f6fecc4 Mart* 0080 _RL dhActual (1:sNx ,1:sNy ,1:nITD )
0081 _RL hActual (1:sNx ,1:sNy ,1:nITD )
0082 _RL hActualPre (1:sNx ,1:sNy ,1:nITD )
0083 _RL dheff , darea , dhsnw
dcd6ed0c75 Jean* 0084
ed2f6fecc4 Mart* 0085 _RL hLimitNew (1:sNx ,1:sNy ,0:nITD )
0086
0087
0088
0089
0090
0091 _RL g0 (1:sNx ,1:sNy ,0:nITD )
0092 _RL g1 (1:sNx ,1:sNy ,0:nITD )
0093 _RL hL (1:sNx ,1:sNy ,0:nITD )
0094 _RL hR (1:sNx ,1:sNy ,0:nITD )
0095
0096 _RL aLoc (1:sNx ,1:sNy )
0097 LOGICAL doRemapping (1:sNx ,1:sNy )
0098
0099
0100
0101
0102 area_reg_sq = SEAICE_area_reg **2
0103 hice_reg_sq = SEAICE_hice_reg **2
0104
0105
0106 DO j =1,sNy
0107 DO i =1,sNx
0108 doRemapping (i ,j ) = .FALSE.
0109 IF ( HEFFM (i ,j ,bi ,bj ) .NE. 0. _d 0 ) doRemapping (i ,j ) = .TRUE.
0110 ENDDO
0111 ENDDO
dcd6ed0c75 Jean* 0112
ed2f6fecc4 Mart* 0113
0114
0115 DO k =1,nITD
0116 DO j =1,sNy
0117 DO i =1,sNx
0118 hActualPre (i ,j ,k ) = 0. _d 0
0119 hActual (i ,j ,k ) = 0. _d 0
0120 dhActual (i ,j ,k ) = 0. _d 0
0121 IF (.FALSE. ) THEN
0122 IF ( areaitdPre (i ,j ,k ) .GT. 0. _d 0 ) THEN
0123 hActualPre (i ,j ,k ) = heffitdPre (i ,j ,k )
0124 & /SQRT( areaitdPre (i ,j ,k )**2 + area_reg_sq )
dcd6ed0c75 Jean* 0125
ed2f6fecc4 Mart* 0126 ENDIF
0127 IF ( AREAITD (i ,j ,k ,bi ,bj ) .GT. 0. _d 0 ) THEN
0128 hActual (i ,j ,k ) = HEFFITD (i ,j ,k ,bi ,bj )
0129 & /SQRT( AREAITD (i ,j ,k ,bi ,bj )**2 + area_reg_sq )
dcd6ed0c75 Jean* 0130
ed2f6fecc4 Mart* 0131 ENDIF
0132 dhActual (i ,j ,k ) = hActual (i ,j ,k ) - hActualPre (i ,j ,k )
0133 ELSE
0134 IF ( areaitdPre (i ,j ,k ) .GT. SEAICE_area_reg ) THEN
0135 hActualPre (i ,j ,k ) = heffitdPre (i ,j ,k )/areaitdPre (i ,j ,k )
0136 ENDIF
0137 IF ( AREAITD (i ,j ,k ,bi ,bj ) .GT. SEAICE_area_reg ) THEN
0138 hActual (i ,j ,k ) = HEFFITD (i ,j ,k ,bi ,bj )/AREAITD (i ,j ,k ,bi ,bj )
0139 ENDIF
0140 dhActual (i ,j ,k ) = hActual (i ,j ,k ) - hActualPre (i ,j ,k )
0141 ENDIF
0142 ENDDO
0143 ENDDO
0144 ENDDO
dcd6ed0c75 Jean* 0145
ed2f6fecc4 Mart* 0146
dcd6ed0c75 Jean* 0147
ed2f6fecc4 Mart* 0148 DO j =1,sNy
0149 DO i =1,sNx
0150 hLimitNew (i ,j ,0) = hLimit (0)
0151 ENDDO
0152 ENDDO
0153 DO k =1,nITD -1
0154 DO j =1,sNy
0155 DO i =1,sNx
0156 IF ( hActualPre (i ,j ,k ) .GT. SEAICE_eps .AND.
0157 & hActualPre (i ,j ,k +1).GT. SEAICE_eps ) THEN
dcd6ed0c75 Jean* 0158 slope = ( dhActual (i ,j ,k +1) - dhActual (i ,j ,k ) )
ed2f6fecc4 Mart* 0159 & /( hActualPre (i ,j ,k +1) - hActualPre (i ,j ,k ) )
0160 hLimitNew (i ,j ,k ) = hLimit (k ) + dhActual (i ,j ,k )
0161 & + slope * ( hLimit (k ) - hActualPre (i ,j ,k ) )
0162 ELSEIF ( hActualPre (i ,j ,k ) .GT. SEAICE_eps ) THEN
0163 hLimitNew (i ,j ,k ) = hLimit (k ) + dhActual (i ,j ,k )
0164 ELSEIF ( hActualPre (i ,j ,k +1).GT. SEAICE_eps ) THEN
0165 hLimitNew (i ,j ,k ) = hLimit (k ) + dhActual (i ,j ,k +1)
0166 ELSE
0167 hLimitNew (i ,j ,k ) = hLimit (k )
0168 ENDIF
0169
0170
0171 IF ( ( AREAITD (i ,j ,k ,bi ,bj ).GT. SEAICE_area_reg .AND.
0172 & hActual (i ,j ,k ) .GE. hLimitNew (i ,j ,k ) ) .OR.
0173 & ( AREAITD (i ,j ,k +1,bi ,bj ).GT. SEAICE_area_reg .AND.
dcd6ed0c75 Jean* 0174 & hActual (i ,j ,k +1) .LE. hLimitNew (i ,j ,k ) ) )
ed2f6fecc4 Mart* 0175 & doRemapping (i ,j ) = .FALSE.
0176
0177
0178
0179 IF ( ( hLimitNew (i ,j ,k ) .GT. hLimit (k +1) ) .OR.
0180 & ( hLimitNew (i ,j ,k ) .LT. hLimit (k -1) ) )
0181 & doRemapping (i ,j ) = .FALSE.
0182 ENDDO
0183 ENDDO
0184 ENDDO
0185
0186
0187
0188
0189 IF ( debugLevel .GE. debLevA )
0190 & CALL SEAICE_ITD_REMAP_CHECK_BOUNDS (
0191 I AREAITD , hActual , hActualPre , hLimitNew , doRemapping ,
0192 I bi , bj , myTime , myIter , myThid )
0193
0194
0195 k = nITD
0196 DO j =1,sNy
0197 DO i =1,sNx
0198 hLimitNew (i ,j ,k ) = hLimit (k )
0199 IF ( AREAITD (i ,j ,k ,bi ,bj ).GT. SEAICE_area_reg )
0200 & hLimitNew (i ,j ,k ) = MAX( 3. _d 0*hActual (i ,j ,k )
0201 & - 2. _d 0 * hLimitNew (i ,j ,k -1), hLimit (k -1) )
0202 ENDDO
0203 ENDDO
dcd6ed0c75 Jean* 0204
0205
ed2f6fecc4 Mart* 0206
dcd6ed0c75 Jean* 0207
0208
ed2f6fecc4 Mart* 0209
0210 k = 1
0211 DO j =1,sNy
0212 DO i =1,sNx
0213
0214 aLoc (i ,j ) = AREAITD (i ,j ,k ,bi ,bj )
0215
dcd6ed0c75 Jean* 0216
ed2f6fecc4 Mart* 0217
0218 hL (i ,j ,k ) = hLimitNew (i ,j ,k -1)
0219 hR (i ,j ,k ) = hLimit (k )
0220 ENDDO
0221 ENDDO
0222 CALL SEAICE_ITD_REMAP_LINEAR (
dcd6ed0c75 Jean* 0223 O g0 (1,1,k ), g1 (1,1,k ),
ed2f6fecc4 Mart* 0224 U hL (1,1,k ), hR (1,1,k ),
dcd6ed0c75 Jean* 0225 I hActual (1,1,k ), aLoc ,
ed2f6fecc4 Mart* 0226 I SEAICE_area_reg , SEAICE_eps , doRemapping ,
0227 I myTime , myIter , myThid )
0228
0229
0230
0231 DO j =1,sNy
0232 DO i =1,sNx
dcd6ed0c75 Jean* 0233 IF ( doRemapping (i ,j ) .AND.
ed2f6fecc4 Mart* 0234 & AREAITD (i ,j ,k ,bi ,bj ) .GT. SEAICE_area_reg ) THEN
0235
0236 IF ( dhActual (i ,j ,k ) .LT. 0. _d 0 ) THEN
0237
0238
0239 dh0 = MIN(-dhActual (i ,j ,k ),hLimit (k ))
0240 etaMax = MIN(dh0 ,hR (i ,j ,k )) - hL (i ,j ,k )
0241 IF ( etaMax > 0. _d 0 ) THEN
0242
0243 da0 = g0 (i ,j ,k )*etaMax + g1 (i ,j ,k )*etaMax *etaMax *0.5 _d 0
0244 daMax = AREAITD (i ,j ,k ,bi ,bj )
0245 & * ( 1. _d 0 - hActual (i ,j ,k )/hActualPre (i ,j ,k ))
0246 da0 = MIN( da0 , daMax )
0247
0248 IF ( (AREAITD (i ,j ,k ,bi ,bj )-da0 ) .GT. SEAICE_area_reg ) THEN
0249 hActual (i ,j ,k ) = hActual (i ,j ,k )
0250 & * AREAITD (i ,j ,k ,bi ,bj )/( AREAITD (i ,j ,k ,bi ,bj ) - da0 )
0251 ELSE
0252 hActual (i ,j ,k ) = ZERO
0253 da0 = AREAITD (i ,j ,k ,bi ,bj )
0254 ENDIF
0255
0256 AREAITD (i ,j ,k ,bi ,bj ) = AREAITD (i ,j ,k ,bi ,bj ) - da0
0257 ENDIF
0258 ELSE
0259
0260 hLimitNew (i ,j ,k -1) = MIN( dhActual (i ,j ,k ), hLimit (k ) )
0261 ENDIF
0262 ENDIF
0263 ENDDO
0264 ENDDO
0265
0266
0267
0268 DO k =1,nITD
0269 DO j =1,sNy
0270 DO i =1,sNx
0271
0272 aLoc (i ,j ) = AREAITD (i ,j ,k ,bi ,bj )
0273
0274 hL (i ,j ,k ) = hLimitNew (i ,j ,k -1)
0275 hR (i ,j ,k ) = hLimitNew (i ,j ,k )
0276 ENDDO
0277 ENDDO
0278 CALL SEAICE_ITD_REMAP_LINEAR (
dcd6ed0c75 Jean* 0279 O g0 (1,1,k ), g1 (1,1,k ),
ed2f6fecc4 Mart* 0280 U hL (1,1,k ), hR (1,1,k ),
0281 I hActual (1,1,k ), aLoc ,
0282 I SEAICE_area_reg , SEAICE_eps , doRemapping ,
0283 I myTime , myIter , myThid )
0284 ENDDO
dcd6ed0c75 Jean* 0285
ed2f6fecc4 Mart* 0286 DO k =1,nITD -1
0287 DO j =1,sNy
0288 DO i =1,sNx
0289 dheff = 0. _d 0
0290 darea = 0. _d 0
0291 IF ( doRemapping (i ,j ) ) THEN
0292
0293 IF ( hLimitNew (i ,j ,k ) .GT. hLimit (k ) ) THEN
0294 etaMin = MAX( hLimit (k ), hL (i ,j ,k )) - hL (i ,j ,k )
0295 etaMax = MIN(hLimitNew (i ,j ,k ), hR (i ,j ,k )) - hL (i ,j ,k )
0296 kDonor = k
0297 kRecvr = k +1
0298 ELSE
0299 etaMin = 0. _d 0
0300 etaMax = MIN(hLimit (k ), hR (i ,j ,k +1)) - hL (i ,j ,k +1)
0301 kDonor = k +1
0302 kRecvr = k
0303 ENDIF
0304
0305 IF ( etaMax .GT. etaMin ) THEN
0306 etam = etaMax -etaMin
0307 etap = etaMax +etaMin
0308 eta2 = 0.5*etam *etap
0309 darea = g0 (i ,j ,kDonor )*etam + g1 (i ,j ,kDonor )*eta2
0310
0311
0312
0313 dheff = g0 (i ,j ,kDonor )*eta2
0314 & + g1 (i ,j ,kDonor )*(etaMax **3-etaMin **3)*third
0315 & + darea *hL (i ,j ,kDonor )
0316 ENDIF
0317
0318
0319
0320 IF ( (darea .GT. AREAITD (i ,j ,kDonor ,bi ,bj )-SEAICE_eps ).OR.
0321 & (dheff .GT. HEFFITD (i ,j ,kDonor ,bi ,bj )-SEAICE_eps ) ) THEN
0322 darea = AREAITD (i ,j ,kDonor ,bi ,bj )
0323 dheff = HEFFITD (i ,j ,kDonor ,bi ,bj )
0324 ENDIF
0325
0326
0327
0328 IF ( (darea .LT. SEAICE_eps ).OR.
0329 & (dheff .LT. SEAICE_eps ) ) THEN
0330 darea = 0. _d 0
0331 dheff = 0. _d 0
0332 ENDIF
0333
0334 IF ( AREAITD (i ,j ,kDonor ,bi ,bj ) .GT. SEAICE_area_reg ) THEN
0335
0336 dhsnw = darea /AREAITD (i ,j ,kDonor ,bi ,bj )
0337 & * HSNOWITD (i ,j ,kDonor ,bi ,bj )
0338
dcd6ed0c75 Jean* 0339
ed2f6fecc4 Mart* 0340
0341 ELSE
0342 dhsnw = HSNOWITD (i ,j ,kDonor ,bi ,bj )
0343 ENDIF
0344
0345 HEFFITD (i ,j ,kRecvr ,bi ,bj ) = HEFFITD (i ,j ,kRecvr ,bi ,bj ) + dheff
0346 HEFFITD (i ,j ,kDonor ,bi ,bj ) = HEFFITD (i ,j ,kDonor ,bi ,bj ) - dheff
0347 AREAITD (i ,j ,kRecvr ,bi ,bj ) = AREAITD (i ,j ,kRecvr ,bi ,bj ) + darea
0348 AREAITD (i ,j ,kDonor ,bi ,bj ) = AREAITD (i ,j ,kDonor ,bi ,bj ) - darea
0349 HSNOWITD (i ,j ,kRecvr ,bi ,bj )=HSNOWITD (i ,j ,kRecvr ,bi ,bj ) + dhsnw
0350 HSNOWITD (i ,j ,kDonor ,bi ,bj )=HSNOWITD (i ,j ,kDonor ,bi ,bj ) - dhsnw
0351
0352 ENDIF
0353 ENDDO
0354 ENDDO
0355 ENDDO
0356
0357 RETURN
0358 END
0359
0360
0361
0362
0363
0364
0365
0366 SUBROUTINE SEAICE_ITD_REMAP_LINEAR (
0367 O g0 , g1 ,
0368 U hL , hR ,
dcd6ed0c75 Jean* 0369 I hActual , area ,
ed2f6fecc4 Mart* 0370 I SEAICE_area_reg , SEAICE_eps , doRemapping ,
0371 I myTime , myIter , myThid )
0372
0373
0374
0375
dcd6ed0c75 Jean* 0376
ed2f6fecc4 Mart* 0377
0378
0379
0380
0381
0382
0383
0384
0385 IMPLICIT NONE
0386
0387 #include "SIZE.h "
0388
0389
0390
0391
0392
0393
0394 _RL myTime
0395 INTEGER myIter
0396 INTEGER myThid
dcd6ed0c75 Jean* 0397
ed2f6fecc4 Mart* 0398
0399
0400
0401
0402
0403 _RL g0 (1:sNx ,1:sNy )
0404 _RL g1 (1:sNx ,1:sNy )
0405 _RL hL (1:sNx ,1:sNy )
0406 _RL hR (1:sNx ,1:sNy )
0407
0408
0409
0410 _RL hActual (1:sNx ,1:sNy )
0411 _RL area (1:sNx ,1:sNy )
0412
0413 _RL SEAICE_area_reg
0414 _RL SEAICE_eps
0415
0416
0417 LOGICAL doRemapping (1:sNx ,1:sNy )
0418
0419
0420
0421
0422
0423 INTEGER i , j
0424
0425
0426
0427 _RL auxCoeff
0428 _RL recip_etaR , etaNoR
0429 _RL third , sixth
0430 PARAMETER ( third = 0.333333333333333333333333333 _d 0 )
0431 PARAMETER ( sixth = 0.666666666666666666666666666 _d 0 )
0432
dcd6ed0c75 Jean* 0433
ed2f6fecc4 Mart* 0434
0435
0436 DO j =1,sNy
0437 DO i =1,sNx
0438 g0 (i ,j ) = 0. _d 0
0439 g1 (i ,j ) = 0. _d 0
0440 IF ( doRemapping (i ,j ) .AND.
0441 & area (i ,j ) .GT. SEAICE_area_reg .AND.
0442 & hR (i ,j ) - hL (i ,j ) .GT. SEAICE_eps ) THEN
0443
0444 IF ( hActual (i ,j ) .LT. (2. _d 0*hL (i ,j ) + hR (i ,j ))*third ) THEN
0445 hR (i ,j ) = 3. _d 0 * hActual (i ,j ) - 2. _d 0 * hL (i ,j )
0446 ELSEIF ( hActual (i ,j ).GT. (hL (i ,j )+2. _d 0*hR (i ,j ))*third ) THEN
0447 hL (i ,j ) = 3. _d 0 * hActual (i ,j ) - 2. _d 0 * hR (i ,j )
0448 ENDIF
0449
0450
0451
0452 recip_etaR = 0. _d 0
0453
0454 IF ( hR (i ,j ) - hL (i ,j ) .GT. SEAICE_eps )
0455 & recip_etaR = 1. _d 0 / (hR (i ,j ) - hL (i ,j ))
0456
0457 etaNoR = (hActual (i ,j ) - hL (i ,j ))*recip_etaR
0458 auxCoeff = 6. _d 0 * area (i ,j )*recip_etaR
0459
0460 g0 (i ,j ) = auxCoeff *( sixth - etaNoR )
0461 g1 (i ,j ) = 2. _d 0 * auxCoeff *recip_etaR *( etaNoR - 0.5 _d 0 )
0462 ELSE
0463
0464
0465 hL (i ,j ) = 0. _d 0
0466 hR (i ,j ) = 0. _d 0
0467 ENDIF
0468 ENDDO
0469 ENDDO
0470
0471 RETURN
0472 END
0473
0474
0475
e7af59f6fd Jean* 0476
ed2f6fecc4 Mart* 0477
0478
0479
0480 SUBROUTINE SEAICE_ITD_REMAP_CHECK_BOUNDS (
0481 I AREAITD , hActual , hActualPre , hLimitNew , doRemapping ,
0482 I bi , bj , myTime , myIter , myThid )
0483
0484
0485
0486
0487
0488
0489
0490
0491
0492
0493
0494 IMPLICIT NONE
0495
0496 #include "SIZE.h "
0497 #include "EEPARAMS.h "
0498 #include "SEAICE_SIZE.h "
0499 #include "SEAICE_PARAMS.h "
0500
0501
0502
0503
0504
0505
0506
0507 _RL myTime
0508 INTEGER bi ,bj
0509 INTEGER myIter
0510 INTEGER myThid
0511
0512 _RL hActual (1:sNx ,1:sNy ,1:nITD )
0513 _RL hActualPre (1:sNx ,1:sNy ,1:nITD )
0514
0515 _RL hLimitNew (1:sNx ,1:sNy ,0:nITD )
0516
dcd6ed0c75 Jean* 0517 _RL AREAITD (1-OLx :sNx +OLx ,1-OLy :sNy +OLy ,nITD ,nSx ,nSy )
ed2f6fecc4 Mart* 0518
0519
0520 LOGICAL doRemapping (1:sNx ,1:sNy )
0521
0522
0523
0524
0525
0526 INTEGER i , j , k
0527 CHARACTER *(MAX_LEN_MBUF ) msgBuf
0528 CHARACTER *(39) tmpBuf
0529
dcd6ed0c75 Jean* 0530
ed2f6fecc4 Mart* 0531 DO j =1,sNy
0532 DO i =1,sNx
0533 IF (.NOT. doRemapping (i ,j ) ) THEN
0534 DO k =1,nITD -1
dcd6ed0c75 Jean* 0535 WRITE (tmpBuf ,'(A,2I5,A,I10)' )
ed2f6fecc4 Mart* 0536 & ' at (' , i , j , ') in timestep ' , myIter
0537 IF ( AREAITD (i ,j ,k ,bi ,bj ).GT. SEAICE_area_reg .AND.
0538 & hActual (i ,j ,k ) .GE. hLimitNew (i ,j ,k ) ) THEN
0539 WRITE (msgBuf ,'(A,I3,A)' )
0540 & 'SEAICE_ITD_REMAP: hActual(k) >= hLimitNew(k) ' //
0541 & 'for category ' , k , tmpBuf
0542 CALL PRINT_MESSAGE ( msgBuf , standardMessageUnit ,
0543 & SQUEEZE_RIGHT , myThid )
dcd6ed0c75 Jean* 0544
ed2f6fecc4 Mart* 0545
0546 ENDIF
0547 IF ( AREAITD (i ,j ,k +1,bi ,bj ).GT. SEAICE_area_reg .AND.
0548 & hActual (i ,j ,k +1) .LE. hLimitNew (i ,j ,k ) ) THEN
dcd6ed0c75 Jean* 0549 WRITE (msgBuf ,'(A,I3,A)' )
ed2f6fecc4 Mart* 0550 & 'SEAICE_ITD_REMAP: hActual(k+1) <= hLimitNew(k) ' //
0551 & 'for category ' , k , tmpBuf
0552 CALL PRINT_MESSAGE ( msgBuf , standardMessageUnit ,
0553 & SQUEEZE_RIGHT , myThid )
dcd6ed0c75 Jean* 0554 PRINT '(8(1X,E10.4))' ,
ed2f6fecc4 Mart* 0555 & AREAITD (i ,j ,k +1,bi ,bj ), hActual (i ,j ,k +1),
0556 & hActualPre (i ,j ,k +1),
0557 & AREAITD (i ,j ,k ,bi ,bj ), hActual (i ,j ,k ),
0558 & hActualPre (i ,j ,k ),
0559 & hLimitNew (i ,j ,k ), hLimit (k )
0560 ENDIF
0561 IF ( hLimitNew (i ,j ,k ) .GT. hLimit (k +1) ) THEN
dcd6ed0c75 Jean* 0562 WRITE (msgBuf ,'(A,I3,A)' )
ed2f6fecc4 Mart* 0563 & 'SEAICE_ITD_REMAP: hLimitNew(k) > hLimitNew(k+1) ' //
0564 & 'for category ' , k , tmpBuf
0565 CALL PRINT_MESSAGE ( msgBuf , standardMessageUnit ,
0566 & SQUEEZE_RIGHT , myThid )
0567 ENDIF
0568 IF ( hLimitNew (i ,j ,k ) .LT. hLimit (k -1) ) THEN
dcd6ed0c75 Jean* 0569 WRITE (msgBuf ,'(A,I3,A)' )
ed2f6fecc4 Mart* 0570 & 'SEAICE_ITD_REMAP: hLimitNew(k) < hLimitNew(k-1) ' //
0571 & 'for category ' , k , tmpBuf
0572 CALL PRINT_MESSAGE ( msgBuf , standardMessageUnit ,
0573 & SQUEEZE_RIGHT , myThid )
0574 ENDIF
0575 ENDDO
0576 ENDIF
0577 ENDDO
0578 ENDDO
0579
0580 #endif /* SEAICE_ITD */
0581
0582 RETURN
0583 END