/[MITgcm]/MITgcm/pkg/seaice/seaice_growth.F
ViewVC logotype

Diff of /MITgcm/pkg/seaice/seaice_growth.F

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

revision 1.127 by gforget, Thu Jun 9 19:37:01 2011 UTC revision 1.128 by gforget, Sun Jun 12 16:07:30 2011 UTC
# Line 228  c     McPhee heat flux parameterization Line 228  c     McPhee heat flux parameterization
228    
229  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
230  c     Helper variables for diagnostics  c     Helper variables for diagnostics
       _RL DIAGarray     (1:sNx,1:sNy)  
231        _RL DIAGarrayA    (1:sNx,1:sNy)        _RL DIAGarrayA    (1:sNx,1:sNy)
232        _RL DIAGarrayB    (1:sNx,1:sNy)        _RL DIAGarrayB    (1:sNx,1:sNy)
233        _RL DIAGarrayC    (1:sNx,1:sNy)        _RL DIAGarrayC    (1:sNx,1:sNy)
# Line 367  C ====================================== Line 366  C ======================================
366            AREApreTH(I,J)=AREANM1(I,J,bi,bj)            AREApreTH(I,J)=AREANM1(I,J,bi,bj)
367            d_HEFFbyNEG(I,J)=0. _d 0            d_HEFFbyNEG(I,J)=0. _d 0
368            d_HSNWbyNEG(I,J)=0. _d 0            d_HSNWbyNEG(I,J)=0. _d 0
369    #ifdef ALLOW_DIAGNOSTICS
370              DIAGarrayA(I,J) = AREANM1(I,J,bi,bj)
371              DIAGarrayB(I,J) = AREANM1(I,J,bi,bj)
372              DIAGarrayC(I,J) = HEFFNM1(I,J,bi,bj)
373              DIAGarrayD(I,J) = HSNOW(I,J,bi,bj)
374    #endif
375           ENDDO           ENDDO
376          ENDDO          ENDDO
377    
# Line 463  CADJ STORE area(:,:,bi,bj)  = comlev1_bi Line 468  CADJ STORE area(:,:,bi,bj)  = comlev1_bi
468  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
469          DO J=1,sNy          DO J=1,sNy
470           DO I=1,sNx           DO I=1,sNx
471    #ifdef ALLOW_DIAGNOSTICS
472              DIAGarrayA(I,J) = AREA(I,J,bi,bj)
473    #endif
474  #ifdef ALLOW_SITRACER  #ifdef ALLOW_SITRACER
475            SItrAREA(I,J,bi,bj,1)=AREA(I,J,bi,bj)            SItrAREA(I,J,bi,bj,1)=AREA(I,J,bi,bj)
476  #endif  #endif
# Line 489  C 3) store regularized values of heff, h Line 497  C 3) store regularized values of heff, h
497            HEFFpreTH(I,J)=HEFF(I,J,bi,bj)            HEFFpreTH(I,J)=HEFF(I,J,bi,bj)
498            HSNWpreTH(I,J)=HSNOW(I,J,bi,bj)            HSNWpreTH(I,J)=HSNOW(I,J,bi,bj)
499            AREApreTH(I,J)=AREA(I,J,bi,bj)            AREApreTH(I,J)=AREA(I,J,bi,bj)
500    #ifdef ALLOW_DIAGNOSTICS
501              DIAGarrayB(I,J) = AREA(I,J,bi,bj)
502              DIAGarrayC(I,J) = HEFF(I,J,bi,bj)
503              DIAGarrayD(I,J) = HSNOW(I,J,bi,bj)
504    #endif
505  #ifdef ALLOW_SITRACER  #ifdef ALLOW_SITRACER
506            SItrHEFF(I,J,bi,bj,1)=HEFF(I,J,bi,bj)            SItrHEFF(I,J,bi,bj,1)=HEFF(I,J,bi,bj)
507            SItrAREA(I,J,bi,bj,2)=AREA(I,J,bi,bj)            SItrAREA(I,J,bi,bj,2)=AREA(I,J,bi,bj)
# Line 541  CADJ &     key = iicekey,byte=isbyte Line 554  CADJ &     key = iicekey,byte=isbyte
554    
555  #endif /* SEAICE_GROWTH_LEGACY */  #endif /* SEAICE_GROWTH_LEGACY */
556    
557    #ifdef ALLOW_DIAGNOSTICS
558          IF ( useDiagnostics ) THEN
559          CALL DIAGNOSTICS_FILL(DIAGarrayA,'SIarPrRi',0,1,3,bi,bj,myThid)
560          CALL DIAGNOSTICS_FILL(DIAGarrayB,'SIarPrTh',0,1,3,bi,bj,myThid)
561          CALL DIAGNOSTICS_FILL(DIAGarrayC,'SIhePrTh',0,1,3,bi,bj,myThid)
562          CALL DIAGNOSTICS_FILL(DIAGarrayD,'SIhsPrTh',0,1,3,bi,bj,myThid)
563          ENDIF
564    #endif
565    
566  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
567  #ifdef SEAICE_MODIFY_GROWTH_ADJ  #ifdef SEAICE_MODIFY_GROWTH_ADJ
568  Cgf no additional dependency of air-sea fluxes to ice  Cgf no additional dependency of air-sea fluxes to ice
# Line 845  c          be triggered by this term, wh Line 867  c          be triggered by this term, wh
867    
868  #endif /* MCPHEE_OCEAN_ICE_HEAT_FLUX */  #endif /* MCPHEE_OCEAN_ICE_HEAT_FLUX */
869    
 #ifdef ALLOW_DIAGNOSTICS  
           DIAGarrayA (I,J) = a_QbyOCN(I,J)  
 #endif  
870            r_QbyOCN(i,j) = a_QbyOCN(i,j)            r_QbyOCN(i,j) = a_QbyOCN(i,j)
871    
872           ENDDO           ENDDO
# Line 877  CADJ STORE r_QbyOCN = comlev1_bibj,key=i Line 896  CADJ STORE r_QbyOCN = comlev1_bibj,key=i
896            d_HEFFbyOCNonICE(I,J)=MAX(r_QbyOCN(i,j), -HEFF(I,J,bi,bj))            d_HEFFbyOCNonICE(I,J)=MAX(r_QbyOCN(i,j), -HEFF(I,J,bi,bj))
897            r_QbyOCN(I,J)=r_QbyOCN(I,J)-d_HEFFbyOCNonICE(I,J)            r_QbyOCN(I,J)=r_QbyOCN(I,J)-d_HEFFbyOCNonICE(I,J)
898            HEFF(I,J,bi,bj)=HEFF(I,J,bi,bj) + d_HEFFbyOCNonICE(I,J)            HEFF(I,J,bi,bj)=HEFF(I,J,bi,bj) + d_HEFFbyOCNonICE(I,J)
 #ifdef ALLOW_DIAGNOSTICS  
           DIAGarrayA(I,J) = d_HEFFbyOCNonICE(i,j)  
 #endif  
899  #ifdef ALLOW_SITRACER  #ifdef ALLOW_SITRACER
900            SItrHEFF(I,J,bi,bj,2)=HEFF(I,J,bi,bj)            SItrHEFF(I,J,bi,bj,2)=HEFF(I,J,bi,bj)
901  #endif  #endif
# Line 970  c         Limit ice growth by potential Line 986  c         Limit ice growth by potential
986            r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J)-tmpscal2            r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J)-tmpscal2
987            HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal2            HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal2
988    
 #ifdef ALLOW_DIAGNOSTICS  
           DIAGarrayA(I,J) = d_HEFFbyATMonOCN_cover(I,J)  
 #endif  
989  #ifdef ALLOW_SITRACER  #ifdef ALLOW_SITRACER
990            SItrHEFF(I,J,bi,bj,3)=HEFF(I,J,bi,bj)            SItrHEFF(I,J,bi,bj,3)=HEFF(I,J,bi,bj)
991  #endif  #endif
# Line 1051  CADJ STORE a_QSWbyATM_open = comlev1_bib Line 1064  CADJ STORE a_QSWbyATM_open = comlev1_bib
1064  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
1065          DO J=1,sNy          DO J=1,sNy
1066           DO I=1,sNx           DO I=1,sNx
 #ifdef ALLOW_DIAGNOSTICS          
             DIAGarrayA(I,J) = ZERO  
 #endif  
   
1067  #ifdef SEAICE_DO_OPEN_WATER_GROWTH  #ifdef SEAICE_DO_OPEN_WATER_GROWTH
           
1068  c           Initial ice growth is triggered by open water  c           Initial ice growth is triggered by open water
1069  c           heat flux overcoming potential melt by ocean  c           heat flux overcoming potential melt by ocean
1070              tmpscal1=r_QbyATM_open(I,J)+r_QbyOCN(i,j) *              tmpscal1=r_QbyATM_open(I,J)+r_QbyOCN(i,j) *
# Line 1073  C           allow not only growth but al Line 1081  C           allow not only growth but al
1081            d_HEFFbyATMonOCN_open(I,J)=tmpscal3            d_HEFFbyATMonOCN_open(I,J)=tmpscal3
1082            d_HEFFbyATMonOCN(I,J)=d_HEFFbyATMonOCN(I,J)+tmpscal3            d_HEFFbyATMonOCN(I,J)=d_HEFFbyATMonOCN(I,J)+tmpscal3
1083            r_QbyATM_open(I,J)=r_QbyATM_open(I,J)-tmpscal3            r_QbyATM_open(I,J)=r_QbyATM_open(I,J)-tmpscal3
1084            HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal3            HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal3          
             
1085  #endif /* SEAICE_DO_OPEN_WATER_GROWTH */  #endif /* SEAICE_DO_OPEN_WATER_GROWTH */
   
 #ifdef ALLOW_DIAGNOSTICS  
             DIAGarrayA(I,J) = maskC(I,J,kSurface,bi,bj)  
      &           * d_HEFFbyATMonOCN_open(I,J)  
 #endif  
1086           ENDDO           ENDDO
1087          ENDDO          ENDDO
   
1088  #endif /* SEAICE_GROWTH_LEGACY */  #endif /* SEAICE_GROWTH_LEGACY */
1089    
1090  #ifdef ALLOW_SITRACER  #ifdef ALLOW_SITRACER
# Line 1158  C compute available heat left after snow Line 1159  C compute available heat left after snow
1159  C (cannot melt more than all the ice)  C (cannot melt more than all the ice)
1160            tmpscal2 = MAX(-tmpscal0,tmpscal1)            tmpscal2 = MAX(-tmpscal0,tmpscal1)
1161            tmpscal3 = MIN(ZERO,tmpscal2)            tmpscal3 = MIN(ZERO,tmpscal2)
 #ifdef ALLOW_DIAGNOSTICS  
           DIAGarray(I,J) = tmpscal2  
 #endif  
1162  C gain of new ice over open water  C gain of new ice over open water
1163            tmpscal4=MAX(ZERO,a_QbyATM_open(I,J))            tmpscal4=MAX(ZERO,a_QbyATM_open(I,J))
1164  C compute cover fraction tendency  C compute cover fraction tendency
# Line 1617  C ====================================== Line 1615  C ======================================
1615       &      'SIdHbATC',0,1,3,bi,bj,myThid)       &      'SIdHbATC',0,1,3,bi,bj,myThid)
1616           CALL DIAGNOSTICS_FILL(d_HEFFbyATMonOCN_open,           CALL DIAGNOSTICS_FILL(d_HEFFbyATMonOCN_open,
1617       &      'SIdHbATO',0,1,3,bi,bj,myThid)       &      'SIdHbATO',0,1,3,bi,bj,myThid)
1618             CALL DIAGNOSTICS_FILL(d_HEFFbyFLOODING,
1619         &      'SIdHbFLO',0,1,3,bi,bj,myThid)
1620             CALL DIAGNOSTICS_FILL
1621         &      (d_HSNWbyOCNonSNW,'SIdSbOCN',0,1,3,bi,bj,myThid)
1622             CALL DIAGNOSTICS_FILL(d_HSNWbyATMonSNW,
1623         &      'SIdSbATC',0,1,3,bi,bj,myThid)
1624           CALL DIAGNOSTICS_FILL           CALL DIAGNOSTICS_FILL
1625       &    (d_AREAbyATM,'SIdAbATO',0,1,3,bi,bj,myThid)       &    (d_AREAbyATM,'SIdAbATO',0,1,3,bi,bj,myThid)
1626           CALL DIAGNOSTICS_FILL           CALL DIAGNOSTICS_FILL
# Line 1632  C three that actually need intermediate Line 1636  C three that actually need intermediate
1636            DO I=1,sNx            DO I=1,sNx
1637              DIAGarrayA(I,J) = maskC(I,J,kSurface,bi,bj)              DIAGarrayA(I,J) = maskC(I,J,kSurface,bi,bj)
1638       &        * d_HSNWbyRAIN(I,J)*SEAICE_rhoSnow/SEAICE_deltaTtherm       &        * d_HSNWbyRAIN(I,J)*SEAICE_rhoSnow/SEAICE_deltaTtherm
1639              DIAGarrayB(I,J) =                DIAGarrayB(I,J) =  AREA(I,J,bi,bj)-AREApreTH(I,J)
      &        d_AREAbyICE(I,J) + d_AREAbyATM(I,J) + d_AREAbyOCN(I,J)  
             DIAGarrayC(I,J) = (HEFF(I,J,bi,bj)-HEFFpreTH(I,J)  
      &        -d_HEFFbyFLOODING(I,J))/SEAICE_deltaTtherm  
1640            ENDDO            ENDDO
1641           ENDDO           ENDDO
1642           CALL DIAGNOSTICS_FILL           CALL DIAGNOSTICS_FILL
1643       &    (DIAGarrayA,'SIsnPrcp',0,1,3,bi,bj,myThid)       &    (DIAGarrayA,'SIsnPrcp',0,1,3,bi,bj,myThid)
1644           CALL DIAGNOSTICS_FILL           CALL DIAGNOSTICS_FILL
1645       &    (DIAGarrayB,'SIdA    ',0,1,3,bi,bj,myThid)       &    (DIAGarrayB,'SIdA    ',0,1,3,bi,bj,myThid)
          CALL DIAGNOSTICS_FILL  
      &    (DIAGarrayC,'SIthdgrh',0,1,3,bi,bj,myThid)  
          tmpscal1=1. _d 0 / SEAICE_deltaTtherm  
          CALL DIAGNOSTICS_SCALE_FILL(d_HEFFbyFLOODING,tmpscal1,1,  
      &    'SIsnwice',0,1,3,bi,bj,myThid)  
          CALL DIAGNOSTICS_FILL  
      &    (d_HEFFbyOCNonICE,'SIyneg  ',0,1,1,bi,bj,myThid)  
          CALL DIAGNOSTICS_FILL  
      &    (d_HEFFbyATMonOCN_cover,'SIfice  ',0,1,1,bi,bj,myThid)  
1646          ENDIF          ENDIF
1647  #endif  #endif
1648    

Legend:
Removed from v.1.127  
changed lines
  Added in v.1.128

  ViewVC Help
Powered by ViewVC 1.1.22