/[MITgcm]/MITgcm_contrib/torge/itd/code/seaice_growth.F
ViewVC logotype

Diff of /MITgcm_contrib/torge/itd/code/seaice_growth.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.3 by torge, Wed Sep 26 17:50:17 2012 UTC revision 1.7 by torge, Fri Oct 5 22:41:30 2012 UTC
# Line 115  C     a_QSWbyATM_open   - short wave hea Line 115  C     a_QSWbyATM_open   - short wave hea
115  C     a_QSWbyATM_cover  - short wave heat flux under ice in W/m^2  C     a_QSWbyATM_cover  - short wave heat flux under ice in W/m^2
116        _RL a_QSWbyATM_open     (1:sNx,1:sNy)        _RL a_QSWbyATM_open     (1:sNx,1:sNy)
117        _RL a_QSWbyATM_cover    (1:sNx,1:sNy)        _RL a_QSWbyATM_cover    (1:sNx,1:sNy)
118  C     a_QbyOCN :: available heat (in in W/m^2) due to the  C     a_QbyOCN :: available heat (in W/m^2) due to the
119  C             interaction of the ice pack and the ocean surface  C             interaction of the ice pack and the ocean surface
120  C     r_QbyOCN :: residual of a_QbyOCN after freezing/melting  C     r_QbyOCN :: residual of a_QbyOCN after freezing/melting
121  C             processes have been accounted for  C             processes have been accounted for
# Line 141  c     The change of mean ice thickness d Line 141  c     The change of mean ice thickness d
141        _RL d_HEFFbyRLX         (1:sNx,1:sNy)        _RL d_HEFFbyRLX         (1:sNx,1:sNy)
142  #endif  #endif
143    
 #ifdef SEAICE_ITD  
 c     The change of mean ice area due to out-of-bounds values following  
 c     sea ice dynamics  
       _RL d_AREAbyNEG         (1:sNx,1:sNy)  
 #endif  
144  c     The change of mean ice thickness due to out-of-bounds values following  c     The change of mean ice thickness due to out-of-bounds values following
145  c     sea ice dynamics  c     sea ice dynamics
146        _RL d_HEFFbyNEG         (1:sNx,1:sNy)        _RL d_HEFFbyNEG         (1:sNx,1:sNy)
# Line 179  C                     as EVAP (positive Line 174  C                     as EVAP (positive
174        _RL d_HEFFbySublim      (1:sNx,1:sNy)        _RL d_HEFFbySublim      (1:sNx,1:sNy)
175        _RL d_HSNWbySublim      (1:sNx,1:sNy)        _RL d_HSNWbySublim      (1:sNx,1:sNy)
176    
177  #if (defined(SEAICE_CAP_SUBLIM) || defined(SEAICE_ITD))  #ifdef SEAICE_CAP_SUBLIM
178  C     The latent heat flux which will sublimate all snow and ice  C     The latent heat flux which will sublimate all snow and ice
179  C     over one time step  C     over one time step
180        _RL latentHeatFluxMax   (1:sNx,1:sNy)        _RL latentHeatFluxMax   (1:sNx,1:sNy)
# Line 206  C     AREA_PRE :: hold sea-ice fraction Line 201  C     AREA_PRE :: hold sea-ice fraction
201        _RL HEFFITDpreTH        (1:sNx,1:sNy,1:nITD)        _RL HEFFITDpreTH        (1:sNx,1:sNy,1:nITD)
202        _RL HSNWITDpreTH        (1:sNx,1:sNy,1:nITD)        _RL HSNWITDpreTH        (1:sNx,1:sNy,1:nITD)
203        _RL areaFracFactor      (1:sNx,1:sNy,1:nITD)        _RL areaFracFactor      (1:sNx,1:sNy,1:nITD)
       _RL heffFracFactor      (1:sNx,1:sNy,1:nITD)  
204  #endif  #endif
205    
206  C     wind speed  C     wind speed
# Line 233  C temporary variables available for the Line 227  C temporary variables available for the
227    
228        INTEGER ilockey        INTEGER ilockey
229        INTEGER it        INTEGER it
 #ifdef SEAICE_ITD  
       INTEGER K  
 #endif  
230        _RL pFac        _RL pFac
231        _RL ticeInMult          (1:sNx,1:sNy,MULTDIM)        _RL ticeInMult          (1:sNx,1:sNy,MULTDIM)
232        _RL ticeOutMult         (1:sNx,1:sNy,MULTDIM)        _RL ticeOutMult         (1:sNx,1:sNy,MULTDIM)
# Line 367  C ===================== Line 358  C =====================
358            d_HEFFbyRLX(I,J)           = 0.0 _d 0            d_HEFFbyRLX(I,J)           = 0.0 _d 0
359  #endif  #endif
360    
 #ifdef SEAICE_ITD  
           d_AREAbyNEG(I,J)           = 0.0 _d 0  
 #endif  
361            d_HEFFbyNEG(I,J)           = 0.0 _d 0            d_HEFFbyNEG(I,J)           = 0.0 _d 0
362            d_HEFFbyOCNonICE(I,J)      = 0.0 _d 0            d_HEFFbyOCNonICE(I,J)      = 0.0 _d 0
363            d_HEFFbyATMonOCN(I,J)      = 0.0 _d 0            d_HEFFbyATMonOCN(I,J)      = 0.0 _d 0
# Line 403  c Line 391  c
391              a_QbyATMmult_cover(I,J,IT)    = 0.0 _d 0              a_QbyATMmult_cover(I,J,IT)    = 0.0 _d 0
392              a_QSWbyATMmult_cover(I,J,IT)  = 0.0 _d 0              a_QSWbyATMmult_cover(I,J,IT)  = 0.0 _d 0
393              a_FWbySublimMult(I,J,IT)      = 0.0 _d 0              a_FWbySublimMult(I,J,IT)      = 0.0 _d 0
394    #ifdef SEAICE_CAP_SUBLIM
395                latentHeatFluxMaxMult(I,J,IT) = 0.0 _d 0
396    #endif
397  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
398              r_QbyATMmult_cover (I,J,IT)   = 0.0 _d 0              r_QbyATMmult_cover (I,J,IT)   = 0.0 _d 0
399              r_FWbySublimMult(I,J,IT)      = 0.0 _d 0              r_FWbySublimMult(I,J,IT)      = 0.0 _d 0
400  #endif  #endif
 #if (defined(SEAICE_CAP_SUBLIM) || defined(SEAICE_ITD))  
             latentHeatFluxMaxMult(I,J,IT) = 0.0 _d 0  
 #endif  
401            ENDDO            ENDDO
402           ENDDO           ENDDO
403          ENDDO          ENDDO
# Line 444  C ====================================== Line 432  C ======================================
432           ENDDO           ENDDO
433          ENDDO          ENDDO
434  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
435          DO K=1,nITD          DO IT=1,nITD
436           DO J=1,sNy           DO J=1,sNy
437            DO I=1,sNx            DO I=1,sNx
438             HEFFITDpreTH(I,J,K)=HEFFITD(I,J,K,bi,bj)             HEFFITDpreTH(I,J,IT)=HEFFITD(I,J,IT,bi,bj)
439             HSNWITDpreTH(I,J,K)=HSNOWITD(I,J,K,bi,bj)             HSNWITDpreTH(I,J,IT)=HSNOWITD(I,J,IT,bi,bj)
440             AREAITDpreTH(I,J,K)=AREAITD(I,J,K,bi,bj)             AREAITDpreTH(I,J,IT)=AREAITD(I,J,IT,bi,bj)
441            ENDDO            ENDDO
442           ENDDO           ENDDO
443          ENDDO          ENDDO
# Line 504  CADJ STORE area(:,:,bi,bj) = comlev1_bib Line 492  CADJ STORE area(:,:,bi,bj) = comlev1_bib
492          DO J=1,sNy          DO J=1,sNy
493           DO I=1,sNx           DO I=1,sNx
494  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
495            DO K=1,nITD            DO IT=1,nITD
            tmpscal1=0. _d 0  
496             tmpscal2=0. _d 0             tmpscal2=0. _d 0
497             tmpscal3=0. _d 0             tmpscal3=0. _d 0
498             tmpscal2=MAX(-HEFFITD(I,J,K,bi,bj),0. _d 0)             tmpscal2=MAX(-HEFFITD(I,J,IT,bi,bj),0. _d 0)
499             HEFFITD(I,J,K,bi,bj)=HEFFITD(I,J,K,bi,bj)+tmpscal2             HEFFITD(I,J,IT,bi,bj)=HEFFITD(I,J,IT,bi,bj)+tmpscal2
500             d_HEFFbyNEG(I,J)=d_HEFFbyNEG(I,J)+tmpscal2             d_HEFFbyNEG(I,J)=d_HEFFbyNEG(I,J)+tmpscal2
501             tmpscal3=MAX(-HSNOWITD(I,J,K,bi,bj),0. _d 0)             tmpscal3=MAX(-HSNOWITD(I,J,IT,bi,bj),0. _d 0)
502             HSNOWITD(I,J,K,bi,bj)=HSNOWITD(I,J,K,bi,bj)+tmpscal3             HSNOWITD(I,J,IT,bi,bj)=HSNOWITD(I,J,IT,bi,bj)+tmpscal3
503             d_HSNWbyNEG(I,J)=d_HSNWbyNEG(I,J)+tmpscal3             d_HSNWbyNEG(I,J)=d_HSNWbyNEG(I,J)+tmpscal3
504             tmpscal1=MAX(-AREAITD(I,J,K,bi,bj),0. _d 0)             AREAITD(I,J,IT,bi,bj)=MAX(AREAITD(I,J,IT,bi,bj),0. _d 0)
            AREAITD(I,J,K,bi,bj)=AREAITD(I,J,K,bi,bj)+tmpscal1  
            d_AREAbyNEG(I,J)=d_AREAbyNEG(I,J)+tmpscal1  
505            ENDDO            ENDDO
506  CToM      AREA, HEFF, and HSNOW will be updated at end of PART 1  CToM      AREA, HEFF, and HSNOW will be updated at end of PART 1
507  C         by calling SEAICE_ITD_SUM  C         by calling SEAICE_ITD_SUM
508  #else  #else
509            d_HEFFbyNEG(I,J)=MAX(-HEFF(I,J,bi,bj),0. _d 0)            d_HEFFbyNEG(I,J)=MAX(-HEFF(I,J,bi,bj),0. _d 0)
           d_HSNWbyNEG(I,J)=MAX(-HSNOW(I,J,bi,bj),0. _d 0)  
           AREA(I,J,bi,bj)=MAX(AREA(I,J,bi,bj),0. _d 0)  
510            HEFF(I,J,bi,bj)=HEFF(I,J,bi,bj)+d_HEFFbyNEG(I,J)            HEFF(I,J,bi,bj)=HEFF(I,J,bi,bj)+d_HEFFbyNEG(I,J)
511              d_HSNWbyNEG(I,J)=MAX(-HSNOW(I,J,bi,bj),0. _d 0)
512            HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)+d_HSNWbyNEG(I,J)            HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)+d_HSNWbyNEG(I,J)
513              AREA(I,J,bi,bj)=MAX(AREA(I,J,bi,bj),0. _d 0)
514  #endif  #endif
515           ENDDO           ENDDO
516          ENDDO          ENDDO
# Line 538  CADJ STORE heff(:,:,bi,bj)  = comlev1_bi Line 523  CADJ STORE heff(:,:,bi,bj)  = comlev1_bi
523          DO J=1,sNy          DO J=1,sNy
524           DO I=1,sNx           DO I=1,sNx
525  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
526            DO K=1,nITD            DO IT=1,nITD
527  #endif  #endif
528            tmpscal2=0. _d 0            tmpscal2=0. _d 0
529            tmpscal3=0. _d 0            tmpscal3=0. _d 0
530  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
531             IF (HEFFITD(I,J,K,bi,bj).LE.siEps) THEN             IF (HEFFITD(I,J,IT,bi,bj).LE.siEps) THEN
532              tmpscal2=-HEFFITD(I,J,K,bi,bj)              tmpscal2=-HEFFITD(I,J,IT,bi,bj)
533              tmpscal3=-HSNOWITD(I,J,K,bi,bj)              tmpscal3=-HSNOWITD(I,J,IT,bi,bj)
534              TICES(I,J,K,bi,bj)=celsius2K              TICES(I,J,IT,bi,bj)=celsius2K
535  CToM        TICE will be updated at end of Part 1 together with AREA and HEFF  CToM        TICE will be updated at end of Part 1 together with AREA and HEFF
536             ENDIF             ENDIF
537             HEFFITD(I,J,K,bi,bj) =HEFFITD(I,J,K,bi,bj) +tmpscal2             HEFFITD(I,J,IT,bi,bj) =HEFFITD(I,J,IT,bi,bj) +tmpscal2
538             HSNOWITD(I,J,K,bi,bj)=HSNOWITD(I,J,K,bi,bj)+tmpscal3             HSNOWITD(I,J,IT,bi,bj)=HSNOWITD(I,J,IT,bi,bj)+tmpscal3
539  #else  #else
540            IF (HEFF(I,J,bi,bj).LE.siEps) THEN            IF (HEFF(I,J,bi,bj).LE.siEps) THEN
541             tmpscal2=-HEFF(I,J,bi,bj)             tmpscal2=-HEFF(I,J,bi,bj)
# Line 580  CADJ STORE hsnow(:,:,bi,bj) = comlev1_bi Line 565  CADJ STORE hsnow(:,:,bi,bj) = comlev1_bi
565          DO J=1,sNy          DO J=1,sNy
566           DO I=1,sNx           DO I=1,sNx
567  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
568            DO K=1,nITD            DO IT=1,nITD
569             IF ((HEFFITD(i,j,k,bi,bj).EQ.0. _d 0).AND.             IF ((HEFFITD(I,J,IT,bi,bj).EQ.0. _d 0).AND.
570       &         (HSNOWITD(i,j,k,bi,bj).EQ.0. _d 0))       &         (HSNOWITD(I,J,IT,bi,bj).EQ.0. _d 0))
571       &      AREAITD(I,J,K,bi,bj)=0. _d 0       &      AREAITD(I,J,IT,bi,bj)=0. _d 0
572            ENDDO            ENDDO
573  #else  #else
574            IF ((HEFF(i,j,bi,bj).EQ.0. _d 0).AND.            IF ((HEFF(i,j,bi,bj).EQ.0. _d 0).AND.
# Line 601  CADJ STORE area(:,:,bi,bj)  = comlev1_bi Line 586  CADJ STORE area(:,:,bi,bj)  = comlev1_bi
586          DO J=1,sNy          DO J=1,sNy
587           DO I=1,sNx           DO I=1,sNx
588  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
589            DO K=1,nITD            DO IT=1,nITD
590             IF ((HEFFITD(i,j,k,bi,bj).GT.0).OR.             IF ((HEFFITD(I,J,IT,bi,bj).GT.0).OR.
591       &         (HSNOWITD(i,j,k,bi,bj).GT.0)) THEN       &         (HSNOWITD(I,J,IT,bi,bj).GT.0)) THEN
592  CToM        SEAICE_area_floor*nITD cannot be allowed to exceed 1  CToM        SEAICE_area_floor*nITD cannot be allowed to exceed 1
593  C           hence use SEAICE_area_floor devided by nITD  C           hence use SEAICE_area_floor devided by nITD
594  C           (or install a warning in e.g. seaice_readparms.F)  C           (or install a warning in e.g. seaice_readparms.F)
595              AREAITD(I,J,K,bi,bj)=              AREAITD(I,J,IT,bi,bj)=
596       &         MAX(AREAITD(I,J,K,bi,bj),SEAICE_area_floor/float(nITD))       &         MAX(AREAITD(I,J,IT,bi,bj),SEAICE_area_floor/float(nITD))
597             ENDIF             ENDIF
598            ENDDO            ENDDO
599  #else  #else
# Line 639  CADJ STORE area(:,:,bi,bj)  = comlev1_bi Line 624  CADJ STORE area(:,:,bi,bj)  = comlev1_bi
624            AREA(I,J,bi,bj)=MIN(AREA(I,J,bi,bj),SEAICE_area_max)            AREA(I,J,bi,bj)=MIN(AREA(I,J,bi,bj),SEAICE_area_max)
625           ENDDO           ENDDO
626          ENDDO          ENDDO
627  #endif /* SEAICE_ITD */  #endif /* notSEAICE_ITD */
628    
629  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
630  CToM catch up with items 1.25 and 2.5 involving category sums AREA and HEFF  CToM catch up with items 1.25 and 2.5 involving category sums AREA and HEFF
 C    first, update AREA and HEFF:  
         CALL SEAICE_ITD_SUM(bi, bj, myTime, myIter, myThid)  
 C  
631          DO J=1,sNy          DO J=1,sNy
632           DO I=1,sNx           DO I=1,sNx
633  C    TICES was changed above (item 1.25), now update TICE as ice volume  C    TICES was changed above (item 1.25), now update TICE as ice volume
634  C     weighted average of TICES  C     weighted average of TICES
635    C    also compute total of AREAITD (needed for finishing item 2.5, see below)
636            tmpscal1 = 0. _d 0            tmpscal1 = 0. _d 0
637            tmpscal2 = 0. _d 0            tmpscal2 = 0. _d 0
638            DO K=1,nITD            tmpscal3 = 0. _d 0
639             tmpscal1=tmpscal1 + TICES(I,J,K,bi,bj)*HEFFITD(I,J,K,bi,bj)            DO IT=1,nITD
640             tmpscal2=tmpscal2 + HEFFITD(I,J,K,bi,bj)             tmpscal1=tmpscal1 + TICES(I,J,IT,bi,bj)*HEFFITD(I,J,IT,bi,bj)
641               tmpscal2=tmpscal2 + HEFFITD(I,J,IT,bi,bj)
642               tmpscal3=tmpscal3 + AREAITD(I,J,IT,bi,bj)
643            ENDDO            ENDDO
644            TICE(I,J,bi,bj)=tmpscal1/tmpscal2            TICE(I,J,bi,bj)=tmpscal1/tmpscal2
645  C    lines of item 2.5 that were omitted:  C    lines of item 2.5 that were omitted:
# Line 662  C    in 2.5 these lines are executed bef Line 647  C    in 2.5 these lines are executed bef
647  C    hence we execute them here before SEAICE_ITD_REDIST is called  C    hence we execute them here before SEAICE_ITD_REDIST is called
648  C    although this means that AREA has not been completely regularized  C    although this means that AREA has not been completely regularized
649  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
650            DIAGarrayA(I,J) = AREA(I,J,bi,bj)            DIAGarrayA(I,J) = tmpscal3
651  #endif  #endif
652  #ifdef ALLOW_SITRACER  #ifdef ALLOW_SITRACER
653            SItrAREA(I,J,bi,bj,1)=AREA(I,J,bi,bj)            SItrAREA(I,J,bi,bj,1)=tmpscal3
654  #endif  #endif
655           ENDDO           ENDDO
656          ENDDO          ENDDO
# Line 676  C    and update AREA, HEFF, and HSNOW Line 661  C    and update AREA, HEFF, and HSNOW
661          CALL SEAICE_ITD_REDIST(bi, bj, myTime, myIter, myThid)          CALL SEAICE_ITD_REDIST(bi, bj, myTime, myIter, myThid)
662          CALL SEAICE_ITD_SUM(bi, bj, myTime, myIter, myThid)          CALL SEAICE_ITD_SUM(bi, bj, myTime, myIter, myThid)
663    
664  #endif  c ToM<<< debug seaice_growth
665            WRITE(msgBuf,'(A,7F6.2)')
666         &    ' SEAICE_GROWTH: Heff increments 0, HEFFITD = ',
667         &     HEFFITD(20,20,:,bi,bj)
668            CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
669         &    SQUEEZE_RIGHT , myThid)
670            WRITE(msgBuf,'(A,7F6.2)')
671         &    ' SEAICE_GROWTH: Area increments 0, AREAITD = ',
672         &     AREAITD(20,20,:,bi,bj)
673            CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
674         &    SQUEEZE_RIGHT , myThid)
675    #else
676            WRITE(msgBuf,'(A,7F6.2)')
677         &    ' SEAICE_GROWTH: Heff increments 0, HEFF = ',
678         &     HEFF(20,20,bi,bj)
679            CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
680         &    SQUEEZE_RIGHT , myThid)
681            WRITE(msgBuf,'(A,7F6.2)')
682         &    ' SEAICE_GROWTH: Area increments 0, AREA = ',
683         &     AREA(20,20,bi,bj)
684            CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
685         &    SQUEEZE_RIGHT , myThid)
686    c ToM>>>
687    #endif /* SEAICE_ITD */
688  #if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ)  #if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ)
689  C        ENDIF SEAICEadjMODE.EQ.0  C        end SEAICEadjMODE.EQ.0 statement:
690          ENDIF          ENDIF
691  #endif  #endif
692    
# Line 700  C 3) store regularized values of heff, h Line 708  C 3) store regularized values of heff, h
708           ENDDO           ENDDO
709          ENDDO          ENDDO
710  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
711          DO K=1,nITD          DO IT=1,nITD
712           DO J=1,sNy           DO J=1,sNy
713            DO I=1,sNx            DO I=1,sNx
714             HEFFITDpreTH(I,J,K)=HEFFITD(I,J,K,bi,bj)             HEFFITDpreTH(I,J,IT)=HEFFITD(I,J,IT,bi,bj)
715             HSNWITDpreTH(I,J,K)=HSNOWITD(I,J,K,bi,bj)             HSNWITDpreTH(I,J,IT)=HSNOWITD(I,J,IT,bi,bj)
716             AREAITDpreTH(I,J,K)=AREAITD(I,J,K,bi,bj)             AREAITDpreTH(I,J,IT)=AREAITD(I,J,IT,bi,bj)
717    
718  C memorize areal and volume fraction of each ITD category  C memorize areal and volume fraction of each ITD category
719             IF (AREA(I,J,bi,bj).GT.0) THEN             IF (AREA(I,J,bi,bj).GT.0) THEN
720              areaFracFactor(I,J,K)=AREAITD(I,J,K,bi,bj)/AREA(I,J,bi,bj)              areaFracFactor(I,J,IT)=AREAITD(I,J,IT,bi,bj)/AREA(I,J,bi,bj)
            ELSE  
             areaFracFactor(I,J,K)=ZERO  
            ENDIF  
            IF (HEFF(I,J,bi,bj).GT.0) THEN  
             heffFracFactor(I,J,K)=HEFFITD(I,J,K,bi,bj)/HEFF(I,J,bi,bj)  
721             ELSE             ELSE
722              heffFracFactor(I,J,K)=ZERO  C           if there's no ice, potential growth starts in 1st category
723                IF (IT .EQ. 1) THEN
724                 areaFracFactor(I,J,IT)=ONE
725                ELSE
726                 areaFracFactor(I,J,IT)=ZERO
727                ENDIF
728             ENDIF             ENDIF
729            ENDDO            ENDDO
730           ENDDO           ENDDO
731          ENDDO          ENDDO
732  C prepare SItrHEFF to be computed as cumulative sum  C prepare SItrHEFF to be computed as cumulative sum
733          DO K=2,5          DO iTr=2,5
734           DO J=1,sNy           DO J=1,sNy
735            DO I=1,sNx            DO I=1,sNx
736             SItrHEFF(I,J,bi,bj,K)=ZERO             SItrHEFF(I,J,bi,bj,iTr)=ZERO
737            ENDDO            ENDDO
738           ENDDO           ENDDO
739          ENDDO          ENDDO
# Line 791  Cgf no additional dependency of air-sea Line 799  Cgf no additional dependency of air-sea
799            ENDDO            ENDDO
800           ENDDO           ENDDO
801  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
802           DO K=1,nITD           DO IT=1,nITD
803            DO J=1,sNy            DO J=1,sNy
804             DO I=1,sNx             DO I=1,sNx
805              HEFFITDpreTH(I,J,K) = 0. _d 0              HEFFITDpreTH(I,J,IT) = 0. _d 0
806              HSNWITDpreTH(I,J,K) = 0. _d 0              HSNWITDpreTH(I,J,IT) = 0. _d 0
807              AREAITDpreTH(I,J,K) = 0. _d 0              AREAITDpreTH(I,J,IT) = 0. _d 0
808             ENDDO             ENDDO
809            ENDDO            ENDDO
810           ENDDO           ENDDO
# Line 821  CADJ STORE HEFFpreTH = comlev1_bibj, key Line 829  CADJ STORE HEFFpreTH = comlev1_bibj, key
829  CADJ STORE HSNWpreTH = comlev1_bibj, key = iicekey, byte = isbyte  CADJ STORE HSNWpreTH = comlev1_bibj, key = iicekey, byte = isbyte
830  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
831  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
832          DO K=1,nITD          DO IT=1,nITD
833  #endif  #endif
834          DO J=1,sNy          DO J=1,sNy
835           DO I=1,sNx           DO I=1,sNx
836    
837  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
838            IF (HEFFITDpreTH(I,J,K) .GT. ZERO) THEN            IF (HEFFITDpreTH(I,J,IT) .GT. ZERO) THEN
839  #ifdef SEAICE_GROWTH_LEGACY  #ifdef SEAICE_GROWTH_LEGACY
840              tmpscal1          = MAX(SEAICE_area_reg/float(nITD),              tmpscal1          = MAX(SEAICE_area_reg/float(nITD),
841       &                              AREAITDpreTH(I,J,K))       &                              AREAITDpreTH(I,J,IT))
842              hsnowActualMult(I,J,K) = HSNWITDpreTH(I,J,K)/tmpscal1              hsnowActualMult(I,J,IT) = HSNWITDpreTH(I,J,IT)/tmpscal1
843              tmpscal2               = HEFFITDpreTH(I,J,K)/tmpscal1              tmpscal2               = HEFFITDpreTH(I,J,IT)/tmpscal1
844              heffActualMult(I,J,K)  = MAX(tmpscal2,SEAICE_hice_reg)              heffActualMult(I,J,IT)  = MAX(tmpscal2,SEAICE_hice_reg)
845  #else /* SEAICE_GROWTH_LEGACY */  #else /* SEAICE_GROWTH_LEGACY */
846  cif        regularize AREA with SEAICE_area_reg  cif        regularize AREA with SEAICE_area_reg
847             tmpscal1 = SQRT(AREAITDpreTH(I,J,K) * AREAITDpreTH(I,J,K)             tmpscal1 = SQRT(AREAITDpreTH(I,J,IT) * AREAITDpreTH(I,J,IT)
848       &                     + area_reg_sq)       &                     + area_reg_sq)
849  cif        heffActual calculated with the regularized AREA  cif        heffActual calculated with the regularized AREA
850             tmpscal2 = HEFFITDpreTH(I,J,K) / tmpscal1             tmpscal2 = HEFFITDpreTH(I,J,IT) / tmpscal1
851  cif        regularize heffActual with SEAICE_hice_reg (add lower bound)  cif        regularize heffActual with SEAICE_hice_reg (add lower bound)
852             heffActualMult(I,J,K) = SQRT(tmpscal2 * tmpscal2             heffActualMult(I,J,IT) = SQRT(tmpscal2 * tmpscal2
853       &                                  + hice_reg_sq)       &                                  + hice_reg_sq)
854  cif        hsnowActual calculated with the regularized AREA  cif        hsnowActual calculated with the regularized AREA
855             hsnowActualMult(I,J,K) = HSNWITDpreTH(I,J,K) / tmpscal1             hsnowActualMult(I,J,IT) = HSNWITDpreTH(I,J,IT) / tmpscal1
856  #endif /* SEAICE_GROWTH_LEGACY */  #endif /* SEAICE_GROWTH_LEGACY */
857  cif        regularize the inverse of heffActual by hice_reg  cif        regularize the inverse of heffActual by hice_reg
858             recip_heffActualMult(I,J,K)  = AREAITDpreTH(I,J,K) /             recip_heffActualMult(I,J,IT)  = AREAITDpreTH(I,J,IT) /
859       &                 sqrt(HEFFITDpreTH(I,J,K) * HEFFITDpreTH(I,J,K)       &                 sqrt(HEFFITDpreTH(I,J,IT) * HEFFITDpreTH(I,J,IT)
860       &                      + hice_reg_sq)       &                      + hice_reg_sq)
861  cif       Do not regularize when HEFFpreTH = 0  cif       Do not regularize when HEFFpreTH = 0
862            ELSE            ELSE
863              heffActualMult(I,J,K) = ZERO              heffActualMult(I,J,IT) = ZERO
864              hsnowActualMult(I,J,K) = ZERO              hsnowActualMult(I,J,IT) = ZERO
865              recip_heffActualMult(I,J,K)  = ZERO              recip_heffActualMult(I,J,IT)  = ZERO
866            ENDIF            ENDIF
867  #else /* SEAICE_ITD */  #else /* SEAICE_ITD */
868            IF (HEFFpreTH(I,J) .GT. ZERO) THEN            IF (HEFFpreTH(I,J) .GT. ZERO) THEN
# Line 900  cif       Do not regularize when HEFFpre Line 908  cif       Do not regularize when HEFFpre
908  C 5) COMPUTE MAXIMUM LATENT HEAT FLUXES FOR THE CURRENT ICE  C 5) COMPUTE MAXIMUM LATENT HEAT FLUXES FOR THE CURRENT ICE
909  C    AND SNOW THICKNESS  C    AND SNOW THICKNESS
910  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
911          DO K=1,nITD          DO IT=1,nITD
912  #endif  #endif
913          DO J=1,sNy          DO J=1,sNy
914           DO I=1,sNx           DO I=1,sNx
# Line 908  c        The latent heat flux over the s Line 916  c        The latent heat flux over the s
916  c        will sublimate all of the snow and ice over one time  c        will sublimate all of the snow and ice over one time
917  c        step (W/m^2)  c        step (W/m^2)
918  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
919            IF (HEFFITDpreTH(I,J,K) .GT. ZERO) THEN            IF (HEFFITDpreTH(I,J,IT) .GT. ZERO) THEN
920              latentHeatFluxMaxMult(I,J,K) = lhSublim*recip_deltaTtherm *              latentHeatFluxMaxMult(I,J,IT) = lhSublim*recip_deltaTtherm *
921       &         (HEFFITDpreTH(I,J,K)*SEAICE_rhoIce +       &         (HEFFITDpreTH(I,J,IT)*SEAICE_rhoIce +
922       &          HSNWITDpreTH(I,J,K)*SEAICE_rhoSnow)/AREAITDpreTH(I,J,K)       &          HSNWITDpreTH(I,J,IT)*SEAICE_rhoSnow)
923         &         /AREAITDpreTH(I,J,IT)
924            ELSE            ELSE
925              latentHeatFluxMaxMult(I,J,K) = ZERO              latentHeatFluxMaxMult(I,J,IT) = ZERO
926            ENDIF            ENDIF
927  #else  #else
928            IF (HEFFpreTH(I,J) .GT. ZERO) THEN            IF (HEFFpreTH(I,J) .GT. ZERO) THEN
# Line 1079  C     update TICE & TICES Line 1088  C     update TICE & TICES
1088  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1089  C     calculate area weighted mean  C     calculate area weighted mean
1090  C     (although the ice's temperature relates to its energy content  C     (although the ice's temperature relates to its energy content
1091  C      and hence should be averaged weighted by ice volume [heffFracFactor],  C      and hence should be averaged weighted by ice volume,
1092  C      the temperature here is a result of the fluxes through the ice surface  C      the temperature here is a result of the fluxes through the ice surface
1093  C      computed individually for each single category in SEAICE_SOLVE4TEMP  C      computed individually for each single category in SEAICE_SOLVE4TEMP
1094  C      and hence is averaged area weighted [areaFracFactor])  C      and hence is averaged area weighted [areaFracFactor])
1095             TICE(I,J,bi,bj) = TICE(I,J,bi,bj)             TICE(I,J,bi,bj) = TICE(I,J,bi,bj)
1096       &          +  ticeOutMult(I,J,IT)*areaFracFactor(I,J,K)       &          +  ticeOutMult(I,J,IT)*areaFracFactor(I,J,IT)
1097  #else  #else
1098             TICE(I,J,bi,bj) = TICE(I,J,bi,bj)             TICE(I,J,bi,bj) = TICE(I,J,bi,bj)
1099       &          +  ticeOutMult(I,J,IT)*recip_multDim       &          +  ticeOutMult(I,J,IT)*recip_multDim
# Line 1095  C     average over categories Line 1104  C     average over categories
1104  C     calculate area weighted mean  C     calculate area weighted mean
1105  C     (fluxes are per unit (ice surface) area and are thus area weighted)  C     (fluxes are per unit (ice surface) area and are thus area weighted)
1106             a_QbyATM_cover   (I,J) = a_QbyATM_cover(I,J)             a_QbyATM_cover   (I,J) = a_QbyATM_cover(I,J)
1107       &          + a_QbyATMmult_cover(I,J,IT)*areaFracFactor(I,J,K)       &          + a_QbyATMmult_cover(I,J,IT)*areaFracFactor(I,J,IT)
1108             a_QSWbyATM_cover (I,J) = a_QSWbyATM_cover(I,J)             a_QSWbyATM_cover (I,J) = a_QSWbyATM_cover(I,J)
1109       &          + a_QSWbyATMmult_cover(I,J,IT)*areaFracFactor(I,J,K)       &          + a_QSWbyATMmult_cover(I,J,IT)*areaFracFactor(I,J,IT)
1110             a_FWbySublim     (I,J) = a_FWbySublim(I,J)             a_FWbySublim     (I,J) = a_FWbySublim(I,J)
1111       &          + a_FWbySublimMult(I,J,IT)*areaFracFactor(I,J,K)       &          + a_FWbySublimMult(I,J,IT)*areaFracFactor(I,J,IT)
1112  #else  #else
1113             a_QbyATM_cover   (I,J) = a_QbyATM_cover(I,J)             a_QbyATM_cover   (I,J) = a_QbyATM_cover(I,J)
1114       &          + a_QbyATMmult_cover(I,J,IT)*recip_multDim       &          + a_QbyATMmult_cover(I,J,IT)*recip_multDim
# Line 1141  CADJ STORE a_FWbySublim    = comlev1_bib Line 1150  CADJ STORE a_FWbySublim    = comlev1_bib
1150    
1151  C switch heat fluxes from W/m2 to 'effective' ice meters  C switch heat fluxes from W/m2 to 'effective' ice meters
1152  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1153          DO K=1,nITD          DO IT=1,nITD
1154           DO J=1,sNy           DO J=1,sNy
1155            DO I=1,sNx            DO I=1,sNx
1156             a_QbyATMmult_cover(I,J,K)   = a_QbyATMmult_cover(I,J,K)             a_QbyATMmult_cover(I,J,IT)   = a_QbyATMmult_cover(I,J,IT)
1157       &          * convertQ2HI * AREAITDpreTH(I,J,K)       &          * convertQ2HI * AREAITDpreTH(I,J,IT)
1158             a_QSWbyATMmult_cover(I,J,K) = a_QSWbyATMmult_cover(I,J,K)             a_QSWbyATMmult_cover(I,J,IT) = a_QSWbyATMmult_cover(I,J,IT)
1159       &          * convertQ2HI * AREAITDpreTH(I,J,K)       &          * convertQ2HI * AREAITDpreTH(I,J,IT)
1160  C and initialize r_QbyATM_cover  C and initialize r_QbyATM_cover
1161             r_QbyATMmult_cover(I,J,K)=a_QbyATMmult_cover(I,J,K)             r_QbyATMmult_cover(I,J,IT)=a_QbyATMmult_cover(I,J,IT)
1162  C     Convert fresh water flux by sublimation to 'effective' ice meters.  C     Convert fresh water flux by sublimation to 'effective' ice meters.
1163  C     Negative sublimation is resublimation and will be added as snow.  C     Negative sublimation is resublimation and will be added as snow.
1164  #ifdef SEAICE_DISABLE_SUBLIM  #ifdef SEAICE_DISABLE_SUBLIM
1165             a_FWbySublimMult(I,J,K) = ZERO             a_FWbySublimMult(I,J,IT) = ZERO
1166  #endif  #endif
1167             a_FWbySublimMult(I,J,K) = SEAICE_deltaTtherm*recip_rhoIce             a_FWbySublimMult(I,J,IT) = SEAICE_deltaTtherm*recip_rhoIce
1168       &            * a_FWbySublimMult(I,J,K)*AREAITDpreTH(I,J,K)       &            * a_FWbySublimMult(I,J,IT)*AREAITDpreTH(I,J,IT)
1169             r_FWbySublimMult(I,J,K)=a_FWbySublimMult(I,J,K)             r_FWbySublimMult(I,J,IT)=a_FWbySublimMult(I,J,IT)
1170            ENDDO            ENDDO
1171           ENDDO           ENDDO
1172          ENDDO          ENDDO
1173          DO J=1,sNy          DO J=1,sNy
1174           DO I=1,sNx           DO I=1,sNx
1175              a_QbyATM_open(I,J)    = a_QbyATM_open(I,J)
1176         &         * convertQ2HI * ( ONE - AREApreTH(I,J) )
1177              a_QSWbyATM_open(I,J)  = a_QSWbyATM_open(I,J)
1178         &         * convertQ2HI * ( ONE - AREApreTH(I,J) )
1179  C and initialize r_QbyATM_open  C and initialize r_QbyATM_open
1180            r_QbyATM_open(I,J)=a_QbyATM_open(I,J)            r_QbyATM_open(I,J)=a_QbyATM_open(I,J)
1181           ENDDO           ENDDO
# Line 1210  CADJ STORE r_FWbySublim    = comlev1_bib Line 1223  CADJ STORE r_FWbySublim    = comlev1_bib
1223  Cgf no additional dependency through ice cover  Cgf no additional dependency through ice cover
1224          IF ( SEAICEadjMODE.GE.3 ) THEN          IF ( SEAICEadjMODE.GE.3 ) THEN
1225  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1226           DO K=1,nITD           DO IT=1,nITD
1227            DO J=1,sNy            DO J=1,sNy
1228             DO I=1,sNx             DO I=1,sNx
1229              a_QbyATMmult_cover(I,J,K)   = 0. _d 0              a_QbyATMmult_cover(I,J,IT)   = 0. _d 0
1230              r_QbyATMmult_cover(I,J,K)   = 0. _d 0              r_QbyATMmult_cover(I,J,IT)   = 0. _d 0
1231              a_QSWbyATMmult_cover(I,J,K) = 0. _d 0              a_QSWbyATMmult_cover(I,J,IT) = 0. _d 0
1232             ENDDO             ENDDO
1233            ENDDO            ENDDO
1234           ENDDO           ENDDO
# Line 1272  c available turbulent flux Line 1285  c available turbulent flux
1285            a_QbyOCN(i,j) =            a_QbyOCN(i,j) =
1286       &         tmpscal1 * tmpscal2 * MixedLayerTurbulenceFactor       &         tmpscal1 * tmpscal2 * MixedLayerTurbulenceFactor
1287            r_QbyOCN(i,j) = a_QbyOCN(i,j)            r_QbyOCN(i,j) = a_QbyOCN(i,j)
 ctm  
           if (i.eq.20 .and. j.eq.20) then  
             print *, HeatCapacity_Cp  
             print *, rhoConst  
             print *, recip_QI  
             print *, theta(20,20,kSurface,bi,bj)  
             print *, tempFrz  
             print *, SEAICE_deltaTtherm  
             print *, maskC(20,20,kSurface,bi,bj)  
             print *, tmpscal2  
             print *, a_QbyOCN(20,20)  
           endif  
 ctm  
1288           ENDDO           ENDDO
1289          ENDDO          ENDDO
1290    
# Line 1305  CADJ STORE hsnow(:,:,bi,bj) = comlev1_bi Line 1305  CADJ STORE hsnow(:,:,bi,bj) = comlev1_bi
1305  CADJ STORE r_FWbySublim     = comlev1_bibj,key=iicekey,byte=isbyte  CADJ STORE r_FWbySublim     = comlev1_bibj,key=iicekey,byte=isbyte
1306  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
1307  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1308          DO K=1,nITD          DO IT=1,nITD
1309  #endif  #endif
1310          DO J=1,sNy          DO J=1,sNy
1311           DO I=1,sNx           DO I=1,sNx
1312  C     First sublimate/deposite snow  C     First sublimate/deposite snow
1313            tmpscal2 =            tmpscal2 =
1314  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1315       &     MAX(MIN(r_FWbySublimMult(I,J,K),HSNOWITD(I,J,K,bi,bj)       &     MAX(MIN(r_FWbySublimMult(I,J,IT),HSNOWITD(I,J,IT,bi,bj)
1316       &             *SNOW2ICE),ZERO)       &             *SNOW2ICE),ZERO)
1317  C         accumulate change over ITD categories  C         accumulate change over ITD categories
1318            d_HSNWbySublim(I,J)     = d_HSNWbySublim(I,J)     - tmpscal2            d_HSNWbySublim(I,J)     = d_HSNWbySublim(I,J)      - tmpscal2
1319       &                                                       *ICE2SNOW       &                                                       *ICE2SNOW
1320            HSNOWITD(I,J,K,bi,bj)   = HSNOWITD(I,J,K,bi,bj)   - tmpscal2            HSNOWITD(I,J,IT,bi,bj)  = HSNOWITD(I,J,IT,bi,bj)   - tmpscal2
1321       &                                                       *ICE2SNOW       &                                                       *ICE2SNOW
1322            r_FWbySublimMult(I,J,K) = r_FWbySublimMult(I,J,K) - tmpscal2            r_FWbySublimMult(I,J,IT)= r_FWbySublimMult(I,J,IT) - tmpscal2
1323  C         keep total up to date, too  C         keep total up to date, too
1324            r_FWbySublim(I,J)       = r_FWbySublim(I,J)       - tmpscal2            r_FWbySublim(I,J)       = r_FWbySublim(I,J)        - tmpscal2
1325  #else  #else
1326       &     MAX(MIN(r_FWbySublim(I,J),HSNOW(I,J,bi,bj)*SNOW2ICE),ZERO)       &     MAX(MIN(r_FWbySublim(I,J),HSNOW(I,J,bi,bj)*SNOW2ICE),ZERO)
1327            d_HSNWbySublim(I,J) = - tmpscal2 * ICE2SNOW            d_HSNWbySublim(I,J) = - tmpscal2 * ICE2SNOW
# Line 1339  CADJ STORE r_FWbySublim    = comlev1_bib Line 1339  CADJ STORE r_FWbySublim    = comlev1_bib
1339  C     If anything is left, sublimate ice  C     If anything is left, sublimate ice
1340            tmpscal2 =            tmpscal2 =
1341  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1342       &     MAX(MIN(r_FWbySublimMult(I,J,K),HEFFITD(I,J,K,bi,bj)),ZERO)       &     MAX(MIN(r_FWbySublimMult(I,J,IT),HEFFITD(I,J,IT,bi,bj)),ZERO)
1343  C         accumulate change over ITD categories  C         accumulate change over ITD categories
1344            d_HSNWbySublim(I,J)     = d_HSNWbySublim(I,J)     - tmpscal2            d_HSNWbySublim(I,J)     = d_HSNWbySublim(I,J)     - tmpscal2
1345            HEFFITD(I,J,K,bi,bj)    = HEFFITD(I,J,K,bi,bj)    - tmpscal2            HEFFITD(I,J,IT,bi,bj)    = HEFFITD(I,J,IT,bi,bj)    - tmpscal2
1346            r_FWbySublimMult(I,J,K) = r_FWbySublimMult(I,J,K) - tmpscal2            r_FWbySublimMult(I,J,IT) = r_FWbySublimMult(I,J,IT) - tmpscal2
1347  C         keep total up to date, too  C         keep total up to date, too
1348            r_FWbySublim(I,J)       = r_FWbySublim(I,J)       - tmpscal2            r_FWbySublim(I,J)       = r_FWbySublim(I,J)       - tmpscal2
1349  #else  #else
# Line 1360  C     If anything is left, it will be ev Line 1360  C     If anything is left, it will be ev
1360  C     Since a_QbyATM_cover was computed for sublimation, not simple evaporation, we need to  C     Since a_QbyATM_cover was computed for sublimation, not simple evaporation, we need to
1361  C     remove the fusion part for the residual (that happens to be precisely r_FWbySublim).  C     remove the fusion part for the residual (that happens to be precisely r_FWbySublim).
1362  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1363            a_QbyATMmult_cover(I,J,K) = a_QbyATMmult_cover(I,J,K)            a_QbyATMmult_cover(I,J,IT) = a_QbyATMmult_cover(I,J,IT)
1364       &                              - r_FWbySublimMult(I,J,K)       &                               - r_FWbySublimMult(I,J,IT)
1365            r_QbyATMmult_cover(I,J,K) = r_QbyATMmult_cover(I,J,K)            r_QbyATMmult_cover(I,J,IT) = r_QbyATMmult_cover(I,J,IT)
1366       &                              - r_FWbySublimMult(I,J,K)       &                               - r_FWbySublimMult(I,J,IT)
1367           ENDDO           ENDDO
1368          ENDDO          ENDDO
1369  C       end K loop  C       end IT loop
1370          ENDDO          ENDDO
1371  C       then update totals        C       then update totals      
1372          DO J=1,sNy          DO J=1,sNy
# Line 1378  C       then update totals Line 1378  C       then update totals
1378          ENDDO          ENDDO
1379  c ToM<<< debug seaice_growth  c ToM<<< debug seaice_growth
1380          WRITE(msgBuf,'(A,7F6.2)')          WRITE(msgBuf,'(A,7F6.2)')
1381    #ifdef SEAICE_ITD
1382       &    ' SEAICE_GROWTH: Heff increments 1, HEFFITD = ',       &    ' SEAICE_GROWTH: Heff increments 1, HEFFITD = ',
1383       &     HEFFITD(20,20,:,bi,bj)       &     HEFFITD(20,20,:,bi,bj)
1384    #else
1385         &    ' SEAICE_GROWTH: Heff increments 1, HEFF = ',
1386         &     HEFF(20,20,bi,bj)
1387    #endif
1388          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1389       &    SQUEEZE_RIGHT , myThid)       &    SQUEEZE_RIGHT , myThid)
1390  c ToM>>>  c ToM>>>
# Line 1393  CADJ STORE r_QbyOCN = comlev1_bibj,key=i Line 1398  CADJ STORE r_QbyOCN = comlev1_bibj,key=i
1398  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
1399    
1400  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1401          DO K=1,nITD          DO IT=1,nITD
1402           DO J=1,sNy           DO J=1,sNy
1403            DO I=1,sNx            DO I=1,sNx
1404  C          ice growth/melt due to ocean heat is equally distributed under the ice  C          ice growth/melt due to ocean heat r_QbyOCN (W/m^2) is
1405  C          and hence weighted by fractional area of each thickness category  C          equally distributed under the ice and hence weighted by
1406             tmpscal1=MAX(r_QbyOCN(i,j)*areaFracFactor(I,J,K),  C          fractional area of each thickness category
1407       &                               -HEFFITD(I,J,K,bi,bj))             tmpscal1=MAX(r_QbyOCN(i,j)*areaFracFactor(I,J,IT),
1408             d_HEFFbyOCNonICE(I,J)= d_HEFFbyOCNonICE(I,J) + tmpscal1       &                               -HEFFITD(I,J,IT,bi,bj))
1409             r_QbyOCN(I,J)        = r_QbyOCN(I,J)         - tmpscal1             d_HEFFbyOCNonICE(I,J) = d_HEFFbyOCNonICE(I,J) + tmpscal1
1410             HEFFITD(I,J,K,bi,bj) = HEFFITD(I,J,K,bi,bj)  + tmpscal1             HEFFITD(I,J,IT,bi,bj) = HEFFITD(I,J,IT,bi,bj) + tmpscal1
1411  #ifdef ALLOW_SITRACER  #ifdef ALLOW_SITRACER
1412             SItrHEFF(I,J,bi,bj,2) = SItrHEFF(I,J,bi,bj,2)             SItrHEFF(I,J,bi,bj,2) = SItrHEFF(I,J,bi,bj,2)
1413       &                           + HEFFITD(I,J,K,bi,bj)       &                           + HEFFITD(I,J,IT,bi,bj)
1414  #endif  #endif
1415            ENDDO            ENDDO
1416           ENDDO           ENDDO
1417          ENDDO          ENDDO
1418  c ToM<<< debug seaice_growth          DO J=1,sNy
1419          WRITE(msgBuf,'(A,7F9.6)')           DO I=1,sNx
1420       &    ' SEAICE_GROWTH: d_HEFFbyOCNonICE w/ITD: ',            r_QbyOCN(I,J)=r_QbyOCN(I,J)-d_HEFFbyOCNonICE(I,J)
1421       &     d_HEFFbyOCNonICE(20,20)           ENDDO
1422          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,          ENDDO
      &    SQUEEZE_RIGHT , myThid)  
 c ToM>>>  
1423  #else /* SEAICE_ITD */  #else /* SEAICE_ITD */
1424          DO J=1,sNy          DO J=1,sNy
1425           DO I=1,sNx           DO I=1,sNx
# Line 1428  c ToM>>> Line 1431  c ToM>>>
1431  #endif  #endif
1432           ENDDO           ENDDO
1433          ENDDO          ENDDO
 c ToM<<< debug seaice_growth  
         WRITE(msgBuf,'(A,7F9.6)')  
      &    ' SEAICE_GROWTH: d_HEFFbyOCNonICE w/o ITD: ',  
      &     d_HEFFbyOCNonICE(20,20)  
         CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,  
      &    SQUEEZE_RIGHT , myThid)  
 c ToM>>>  
1434  #endif /* SEAICE_ITD */  #endif /* SEAICE_ITD */
1435  c ToM<<< debug seaice_growth  c ToM<<< debug seaice_growth
1436          WRITE(msgBuf,'(A,7F6.2)')          WRITE(msgBuf,'(A,7F6.2)')
1437    #ifdef SEAICE_ITD
1438       &    ' SEAICE_GROWTH: Heff increments 2, HEFFITD = ',       &    ' SEAICE_GROWTH: Heff increments 2, HEFFITD = ',
1439       &     HEFFITD(20,20,:,bi,bj)       &     HEFFITD(20,20,:,bi,bj)
1440    #else
1441         &    ' SEAICE_GROWTH: Heff increments 2, HEFF = ',
1442         &     HEFF(20,20,bi,bj)
1443    #endif
1444          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1445       &    SQUEEZE_RIGHT , myThid)       &    SQUEEZE_RIGHT , myThid)
1446  c ToM>>>  c ToM>>>
# Line 1453  CADJ STORE r_QbyATM_cover = comlev1_bibj Line 1454  CADJ STORE r_QbyATM_cover = comlev1_bibj
1454  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
1455    
1456  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1457          DO K=1,nITD          DO IT=1,nITD
1458           DO J=1,sNy           DO J=1,sNy
1459            DO I=1,sNx            DO I=1,sNx
1460  C     Convert to standard units (meters of ice) rather than to meters  C     Convert to standard units (meters of ice) rather than to meters
1461  C     of snow. This appears to be more robust.  C     of snow. This appears to be more robust.
1462            tmpscal1=MAX(r_QbyATMmult_cover(I,J,K),-HSNOWITD(I,J,K,bi,bj)             tmpscal1=MAX(r_QbyATMmult_cover(I,J,IT),
1463       &                                           *SNOW2ICE)       &                  -HSNOWITD(I,J,IT,bi,bj)*SNOW2ICE)
1464            tmpscal2=MIN(tmpscal1,0. _d 0)             tmpscal2=MIN(tmpscal1,0. _d 0)
1465  #ifdef SEAICE_MODIFY_GROWTH_ADJ  #ifdef SEAICE_MODIFY_GROWTH_ADJ
1466  Cgf no additional dependency through snow  Cgf no additional dependency through snow
1467            IF ( SEAICEadjMODE.GE.2 ) tmpscal2 = 0. _d 0             IF ( SEAICEadjMODE.GE.2 ) tmpscal2 = 0. _d 0
1468  #endif  #endif
1469            d_HSNWbyATMonSNW(I,J)=d_HSNWbyATMonSNW(I,J)+tmpscal2*ICE2SNOW             d_HSNWbyATMonSNW(I,J) = d_HSNWbyATMonSNW(I,J)
1470            HSNOWITD(I,J,K,bi,bj)=HSNOWITD(I,J,K,bi,bj)+tmpscal2*ICE2SNOW       &                           + tmpscal2*ICE2SNOW
1471            r_QbyATMmult_cover(I,J,K)=r_QbyATMmult_cover(I,J,K) - tmpscal2             HSNOWITD(I,J,IT,bi,bj)= HSNOWITD(I,J,IT,bi,bj)
1472  C         keep the total up to date, too       &                           + tmpscal2*ICE2SNOW
1473            r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J) - tmpscal2             r_QbyATMmult_cover(I,J,IT)=r_QbyATMmult_cover(I,J,IT)
1474         &                           - tmpscal2
1475    C          keep the total up to date, too
1476               r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J) - tmpscal2
1477            ENDDO            ENDDO
1478           ENDDO           ENDDO
1479          ENDDO          ENDDO
# Line 1492  Cgf no additional dependency through sno Line 1496  Cgf no additional dependency through sno
1496  #endif /* SEAICE_ITD */  #endif /* SEAICE_ITD */
1497  c ToM<<< debug seaice_growth  c ToM<<< debug seaice_growth
1498          WRITE(msgBuf,'(A,7F6.2)')          WRITE(msgBuf,'(A,7F6.2)')
1499    #ifdef SEAICE_ITD
1500       &    ' SEAICE_GROWTH: Heff increments 3, HEFFITD = ',       &    ' SEAICE_GROWTH: Heff increments 3, HEFFITD = ',
1501       &     HEFFITD(20,20,:,bi,bj)       &     HEFFITD(20,20,:,bi,bj)
1502    #else
1503         &    ' SEAICE_GROWTH: Heff increments 3, HEFF = ',
1504         &     HEFF(20,20,bi,bj)
1505    #endif
1506          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1507       &    SQUEEZE_RIGHT , myThid)       &    SQUEEZE_RIGHT , myThid)
1508  c ToM>>>  c ToM>>>
# Line 1512  Cgf the v1.81=>v1.82 revision would chan Line 1521  Cgf the v1.81=>v1.82 revision would chan
1521  Cgf warming conditions, the lab_sea results were not changed.  Cgf warming conditions, the lab_sea results were not changed.
1522    
1523  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1524          DO K=1,nITD          DO IT=1,nITD
1525           DO J=1,sNy           DO J=1,sNy
1526            DO I=1,sNx            DO I=1,sNx
1527  #ifdef SEAICE_GROWTH_LEGACY  #ifdef SEAICE_GROWTH_LEGACY
1528             tmpscal2 =MAX(-HEFFITD(I,J,K,bi,bj),r_QbyATMmult_cover(I,J,K))             tmpscal2 = MAX(-HEFFITD(I,J,IT,bi,bj),
1529         &                     r_QbyATMmult_cover(I,J,IT))
1530  #else  #else
1531             tmpscal2 =MAX(-HEFFITD(I,J,K,bi,bj),r_QbyATMmult_cover(I,J,K)             tmpscal2 = MAX(-HEFFITD(I,J,IT,bi,bj),
1532         &                     r_QbyATMmult_cover(I,J,IT)
1533  c         Limit ice growth by potential melt by ocean  c         Limit ice growth by potential melt by ocean
1534       &     + AREAITDpreTH(I,J,K) * r_QbyOCN(I,J))       &              + AREAITDpreTH(I,J,IT) * r_QbyOCN(I,J))
1535  #endif /* SEAICE_GROWTH_LEGACY */  #endif /* SEAICE_GROWTH_LEGACY */
1536             d_HEFFbyATMonOCN_cover(I,J) = d_HEFFbyATMonOCN_cover(I,J)             d_HEFFbyATMonOCN_cover(I,J) = d_HEFFbyATMonOCN_cover(I,J)
1537       &                                 + tmpscal2       &                                 + tmpscal2
# Line 1528  c         Limit ice growth by potential Line 1539  c         Limit ice growth by potential
1539       &                                 + tmpscal2       &                                 + tmpscal2
1540             r_QbyATM_cover(I,J)         = r_QbyATM_cover(I,J)             r_QbyATM_cover(I,J)         = r_QbyATM_cover(I,J)
1541       &                                 - tmpscal2       &                                 - tmpscal2
1542             HEFFITD(I,J,K,bi,bj) = HEFFITD(I,J,K,bi,bj) + tmpscal2             HEFFITD(I,J,IT,bi,bj) = HEFFITD(I,J,IT,bi,bj) + tmpscal2
1543    
1544  #ifdef ALLOW_SITRACER  #ifdef ALLOW_SITRACER
1545             SItrHEFF(I,J,bi,bj,3) = SItrHEFF(I,J,bi,bj,3)             SItrHEFF(I,J,bi,bj,3) = SItrHEFF(I,J,bi,bj,3)
1546       &                           + HEFFITD(I,J,K,bi,bj)       &                           + HEFFITD(I,J,IT,bi,bj)
1547  #endif  #endif
1548            ENDDO            ENDDO
1549           ENDDO           ENDDO
# Line 1562  c         Limit ice growth by potential Line 1573  c         Limit ice growth by potential
1573  #endif /* SEAICE_ITD */  #endif /* SEAICE_ITD */
1574  c ToM<<< debug seaice_growth  c ToM<<< debug seaice_growth
1575          WRITE(msgBuf,'(A,7F6.2)')          WRITE(msgBuf,'(A,7F6.2)')
1576    #ifdef SEAICE_ITD
1577       &    ' SEAICE_GROWTH: Heff increments 4, HEFFITD = ',       &    ' SEAICE_GROWTH: Heff increments 4, HEFFITD = ',
1578       &     HEFFITD(20,20,:,bi,bj)       &     HEFFITD(20,20,:,bi,bj)
1579    #else
1580         &    ' SEAICE_GROWTH: Heff increments 4, HEFF = ',
1581         &     HEFF(20,20,bi,bj)
1582    #endif
1583          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1584       &    SQUEEZE_RIGHT , myThid)       &    SQUEEZE_RIGHT , myThid)
1585  c ToM>>>  c ToM>>>
# Line 1596  C           add precip to the fresh wate Line 1612  C           add precip to the fresh wate
1612           ENDDO           ENDDO
1613          ENDDO          ENDDO
1614  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1615          DO K=1,nITD          DO IT=1,nITD
1616           DO J=1,sNy           DO J=1,sNy
1617            DO I=1,sNx            DO I=1,sNx
1618             HSNOWITD(I,J,K,bi,bj) = HSNOWITD(I,J,K,bi,bj)             HSNOWITD(I,J,IT,bi,bj) = HSNOWITD(I,J,IT,bi,bj)
1619       &     + d_HSNWbyRAIN(I,J)*areaFracFactor(I,J,K)       &     + d_HSNWbyRAIN(I,J)*areaFracFactor(I,J,IT)
1620            ENDDO            ENDDO
1621           ENDDO           ENDDO
1622          ENDDO          ENDDO
# Line 1617  Cgf rain to snow is not a surface proces Line 1633  Cgf rain to snow is not a surface proces
1633  #endif /* ALLOW_ATM_TEMP */  #endif /* ALLOW_ATM_TEMP */
1634  c ToM<<< debug seaice_growth  c ToM<<< debug seaice_growth
1635          WRITE(msgBuf,'(A,7F6.2)')          WRITE(msgBuf,'(A,7F6.2)')
1636    #ifdef SEAICE_ITD
1637       &    ' SEAICE_GROWTH: Heff increments 5, HEFFITD = ',       &    ' SEAICE_GROWTH: Heff increments 5, HEFFITD = ',
1638       &     HEFFITD(20,20,:,bi,bj)       &     HEFFITD(20,20,:,bi,bj)
1639    #else
1640         &    ' SEAICE_GROWTH: Heff increments 5, HEFF = ',
1641         &     HEFF(20,20,bi,bj)
1642    #endif
1643          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1644       &    SQUEEZE_RIGHT , myThid)       &    SQUEEZE_RIGHT , myThid)
1645  c ToM>>>  c ToM>>>
# Line 1635  CADJ STORE r_QbyOCN = comlev1_bibj,key=i Line 1656  CADJ STORE r_QbyOCN = comlev1_bibj,key=i
1656  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
1657    
1658  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1659          DO K=1,nITD          DO IT=1,nITD
1660           DO J=1,sNy           DO J=1,sNy
1661            DO I=1,sNx            DO I=1,sNx
1662             tmpscal1=MAX(r_QbyOCN(i,j)*ICE2SNOW*areaFracFactor(I,J,K),             tmpscal1=MAX(r_QbyOCN(i,j)*ICE2SNOW*areaFracFactor(I,J,IT),
1663       &                  -HSNOWITD(I,J,K,bi,bj))       &                  -HSNOWITD(I,J,IT,bi,bj))
1664             tmpscal2=MIN(tmpscal1,0. _d 0)             tmpscal2=MIN(tmpscal1,0. _d 0)
1665  #ifdef SEAICE_MODIFY_GROWTH_ADJ  #ifdef SEAICE_MODIFY_GROWTH_ADJ
1666  Cgf no additional dependency through snow  Cgf no additional dependency through snow
# Line 1647  Cgf no additional dependency through sno Line 1668  Cgf no additional dependency through sno
1668  #endif  #endif
1669             d_HSNWbyOCNonSNW(I,J) = d_HSNWbyOCNonSNW(I,J) + tmpscal2             d_HSNWbyOCNonSNW(I,J) = d_HSNWbyOCNonSNW(I,J) + tmpscal2
1670             r_QbyOCN(I,J)=r_QbyOCN(I,J) - tmpscal2*SNOW2ICE             r_QbyOCN(I,J)=r_QbyOCN(I,J) - tmpscal2*SNOW2ICE
1671             HSNOWITD(I,J,K,bi,bj) = HSNOWITD(I,J,K,bi,bj) + tmpscal2             HSNOWITD(I,J,IT,bi,bj) = HSNOWITD(I,J,IT,bi,bj) + tmpscal2
1672            ENDDO            ENDDO
1673           ENDDO           ENDDO
1674          ENDDO          ENDDO
# Line 1671  Cgf no additional dependency through sno Line 1692  Cgf no additional dependency through sno
1692  Cph)  Cph)
1693  c ToM<<< debug seaice_growth  c ToM<<< debug seaice_growth
1694          WRITE(msgBuf,'(A,7F6.2)')          WRITE(msgBuf,'(A,7F6.2)')
1695    #ifdef SEAICE_ITD
1696       &    ' SEAICE_GROWTH: Heff increments 6, HEFFITD = ',       &    ' SEAICE_GROWTH: Heff increments 6, HEFFITD = ',
1697       &     HEFFITD(20,20,:,bi,bj)       &     HEFFITD(20,20,:,bi,bj)
1698    #else
1699         &    ' SEAICE_GROWTH: Heff increments 6, HEFF = ',
1700         &     HEFF(20,20,bi,bj)
1701    #endif
1702          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1703       &    SQUEEZE_RIGHT , myThid)       &    SQUEEZE_RIGHT , myThid)
1704  c ToM>>>  c ToM>>>
# Line 1710  C         determine thickness of new ice Line 1736  C         determine thickness of new ice
1736  C         considering the entire open water area to refreeze  C         considering the entire open water area to refreeze
1737            tmpscal1 = tmpscal3/tmpscal0            tmpscal1 = tmpscal3/tmpscal0
1738  C         then add new ice volume to appropriate thickness category  C         then add new ice volume to appropriate thickness category
1739            DO K=1,nITD            DO IT=1,nITD
1740             IF (tmpscal1.LT.Hlimit(K)) THEN             IF (tmpscal1.LT.Hlimit(IT)) THEN
1741              HEFFITD(I,J,K,bi,bj) = HEFFITD(I,J,K,bi,bj) + tmpscal3              HEFFITD(I,J,IT,bi,bj) = HEFFITD(I,J,IT,bi,bj) + tmpscal3
1742              tmpscal3=ZERO              tmpscal3=ZERO
1743  C not sure if AREAITD should be changed here since AREA is incremented  C not sure if AREAITD should be changed here since AREA is incremented
1744  C   in PART 4 below in non-itd code  C   in PART 4 below in non-itd code
1745  C in this scenario all open water is covered by new ice instantaneously,  C in this scenario all open water is covered by new ice instantaneously,
1746  C   i.e. no delayed lead closing is concidered such as is associated with  C   i.e. no delayed lead closing is concidered such as is associated with
1747  C   Hibler's h_0 parameter  C   Hibler's h_0 parameter
1748              AREAITD(I,J,K,bi,bj) = AREAITD(I,J,K,bi,bj)              AREAITD(I,J,IT,bi,bj) = AREAITD(I,J,IT,bi,bj)
1749       &                           + tmpscal0       &                           + tmpscal0
1750              tmpscal0=ZERO              tmpscal0=ZERO
1751             ENDIF             ENDIF
# Line 1732  C   Hibler's h_0 parameter Line 1758  C   Hibler's h_0 parameter
1758    
1759  #ifdef ALLOW_SITRACER  #ifdef ALLOW_SITRACER
1760  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1761          DO K=1,nITD          DO IT=1,nITD
1762           DO J=1,sNy           DO J=1,sNy
1763            DO I=1,sNx            DO I=1,sNx
1764  c needs to be here to allow use also with LEGACY branch  c needs to be here to allow use also with LEGACY branch
1765             SItrHEFF(I,J,bi,bj,4) = SItrHEFF(I,J,bi,bj,4)             SItrHEFF(I,J,bi,bj,4) = SItrHEFF(I,J,bi,bj,4)
1766       &                           + HEFFITD(I,J,K,bi,bj)       &                           + HEFFITD(I,J,IT,bi,bj)
1767            ENDDO            ENDDO
1768           ENDDO           ENDDO
1769          ENDDO          ENDDO
# Line 1752  c needs to be here to allow use also wit Line 1778  c needs to be here to allow use also wit
1778  #endif /* ALLOW_SITRACER */  #endif /* ALLOW_SITRACER */
1779  c ToM<<< debug seaice_growth  c ToM<<< debug seaice_growth
1780          WRITE(msgBuf,'(A,7F6.2)')          WRITE(msgBuf,'(A,7F6.2)')
1781    #ifdef SEAICE_ITD
1782       &    ' SEAICE_GROWTH: Heff increments 7, HEFFITD = ',       &    ' SEAICE_GROWTH: Heff increments 7, HEFFITD = ',
1783       &     HEFFITD(20,20,:,bi,bj)       &     HEFFITD(20,20,:,bi,bj)
1784    #else
1785         &    ' SEAICE_GROWTH: Heff increments 7, HEFF = ',
1786         &     HEFF(20,20,bi,bj)
1787    #endif
1788          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1789       &    SQUEEZE_RIGHT , myThid)       &    SQUEEZE_RIGHT , myThid)
1790  c ToM>>>  c ToM>>>
# Line 1769  CADJ STORE hsnow(:,:,bi,bj) = comlev1_bi Line 1800  CADJ STORE hsnow(:,:,bi,bj) = comlev1_bi
1800  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
1801          IF ( SEAICEuseFlooding ) THEN          IF ( SEAICEuseFlooding ) THEN
1802  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1803           DO K=1,nITD           DO IT=1,nITD
1804            DO J=1,sNy            DO J=1,sNy
1805             DO I=1,sNx             DO I=1,sNx
1806              tmpscal0 = (HSNOWITD(I,J,K,bi,bj)*SEAICE_rhoSnow              tmpscal0 = (HSNOWITD(I,J,IT,bi,bj)*SEAICE_rhoSnow
1807       &               +HEFFITD(I,J,K,bi,bj)*SEAICE_rhoIce)*recip_rhoConst       &               +  HEFFITD(I,J,IT,bi,bj) *SEAICE_rhoIce)
1808              tmpscal1 = MAX( 0. _d 0, tmpscal0 - HEFFITD(I,J,K,bi,bj))       &                                        *recip_rhoConst
1809              d_HEFFbyFLOODING(I,J) = d_HEFFbyFLOODING(I,J) + tmpscal1              tmpscal1 = MAX( 0. _d 0, tmpscal0 - HEFFITD(I,J,IT,bi,bj))
1810              HEFFITD(I,J,K,bi,bj)  = HEFFITD(I,J,K,bi,bj)  + tmpscal1              d_HEFFbyFLOODING(I,J) = d_HEFFbyFLOODING(I,J)  + tmpscal1
1811              HSNOWITD(I,J,K,bi,bj) = HSNOWITD(I,J,K,bi,bj) - tmpscal1              HEFFITD(I,J,IT,bi,bj) = HEFFITD(I,J,IT,bi,bj)  + tmpscal1
1812                HSNOWITD(I,J,IT,bi,bj)= HSNOWITD(I,J,IT,bi,bj) - tmpscal1
1813       &                            * ICE2SNOW       &                            * ICE2SNOW
1814             ENDDO             ENDDO
1815            ENDDO            ENDDO
# Line 1799  CADJ STORE hsnow(:,:,bi,bj) = comlev1_bi Line 1831  CADJ STORE hsnow(:,:,bi,bj) = comlev1_bi
1831  #endif /* SEAICE_GROWTH_LEGACY */  #endif /* SEAICE_GROWTH_LEGACY */
1832  c ToM<<< debug seaice_growth  c ToM<<< debug seaice_growth
1833          WRITE(msgBuf,'(A,7F6.2)')          WRITE(msgBuf,'(A,7F6.2)')
1834    #ifdef SEAICE_ITD
1835       &    ' SEAICE_GROWTH: Heff increments 8, HEFFITD = ',       &    ' SEAICE_GROWTH: Heff increments 8, HEFFITD = ',
1836       &     HEFFITD(20,20,:,bi,bj)       &     HEFFITD(20,20,:,bi,bj)
1837          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1838       &    SQUEEZE_RIGHT , myThid)       &    SQUEEZE_RIGHT , myThid)
1839            WRITE(msgBuf,'(A,7F6.2)')
1840         &    ' SEAICE_GROWTH: Area increments 8, AREAITD = ',
1841         &     AREAITD(20,20,:,bi,bj)
1842    #else
1843         &    ' SEAICE_GROWTH: Heff increments 8, HEFF = ',
1844         &     HEFF(20,20,bi,bj)
1845            CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1846         &    SQUEEZE_RIGHT , myThid)
1847            WRITE(msgBuf,'(A,7F6.2)')
1848         &    ' SEAICE_GROWTH: Area increments 8, AREA = ',
1849         &     AREA(20,20,bi,bj)
1850    #endif
1851            CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1852         &    SQUEEZE_RIGHT , myThid)
1853  c ToM>>>  c ToM>>>
1854    
1855  C ===================================================================  C ===================================================================
# Line 1842  C       does not account for lateral mel Line 1889  C       does not account for lateral mel
1889  C  C
1890  C        AREAITD is incremented in section "gain of new ice over open water" above  C        AREAITD is incremented in section "gain of new ice over open water" above
1891  C  C
1892          DO K=1,nITD          DO IT=1,nITD
1893           DO J=1,sNy           DO J=1,sNy
1894            DO I=1,sNx            DO I=1,sNx
1895             IF (HEFFITD(I,J,K,bi,bj).LE.ZERO) THEN             IF (HEFFITD(I,J,IT,bi,bj).LE.ZERO) THEN
1896              AREAITD(I,J,K,bi,bj)=ZERO              AREAITD(I,J,IT,bi,bj)=ZERO
1897             ENDIF             ENDIF
1898  #ifdef ALLOW_SITRACER  #ifdef ALLOW_SITRACER
1899             SItrAREA(I,J,bi,bj,3) = SItrAREA(I,J,bi,bj,3)             SItrAREA(I,J,bi,bj,3) = SItrAREA(I,J,bi,bj,3)
1900       &                           + AREAITD(I,J,K,bi,bj)       &                           + AREAITD(I,J,IT,bi,bj)
1901  #endif /* ALLOW_SITRACER */  #endif /* ALLOW_SITRACER */
1902            ENDDO            ENDDO
1903           ENDDO           ENDDO
# Line 1931  C apply tendency Line 1978  C apply tendency
1978  Cgf 'bulk' linearization of area=f(HEFF)  Cgf 'bulk' linearization of area=f(HEFF)
1979          IF ( SEAICEadjMODE.GE.1 ) THEN          IF ( SEAICEadjMODE.GE.1 ) THEN
1980  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
1981           DO K=1,nITD           DO IT=1,nITD
1982            DO J=1,sNy            DO J=1,sNy
1983             DO I=1,sNx             DO I=1,sNx
1984              AREAITD(I,J,K,bi,bj) = AREAITDpreTH(I,J,K) + 0.1 _d 0 *              AREAITD(I,J,IT,bi,bj) = AREAITDpreTH(I,J,IT) + 0.1 _d 0 *
1985       &               ( HEFFITD(I,J,K,bi,bj) - HEFFITDpreTH(I,J,K) )       &               ( HEFFITD(I,J,IT,bi,bj) - HEFFITDpreTH(I,J,IT) )
1986             ENDDO             ENDDO
1987            ENDDO            ENDDO
1988           ENDDO           ENDDO

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.7

  ViewVC Help
Powered by ViewVC 1.1.22