/[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.151 by gforget, Mon Feb 13 19:03:50 2012 UTC revision 1.152 by gforget, Mon Feb 13 23:20:37 2012 UTC
# Line 123  C conversion factors to go from Q (W/m2) Line 123  C conversion factors to go from Q (W/m2)
123  C conversion factors to go from precip (m/s) unit to HEFF (ice meters)  C conversion factors to go from precip (m/s) unit to HEFF (ice meters)
124        _RL convertPRECIP2HI, convertHI2PRECIP        _RL convertPRECIP2HI, convertHI2PRECIP
125    
126    #ifdef ALLOW_DIAGNOSTICS
127  C ICE/SNOW stocks tendencies associated with the various melt/freeze processes  C ICE/SNOW stocks tendencies associated with the various melt/freeze processes
128        _RL d_AREAbyATM         (1:sNx,1:sNy)        _RL d_AREAbyATM         (1:sNx,1:sNy)
129        _RL d_AREAbyOCN         (1:sNx,1:sNy)        _RL d_AREAbyOCN         (1:sNx,1:sNy)
130        _RL d_AREAbyICE         (1:sNx,1:sNy)        _RL d_AREAbyICE         (1:sNx,1:sNy)
131    #endif
132    
133  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
134  c     sea ice dyhnamics  c     sea ice dyhnamics
# Line 310  C ===================== Line 312  C =====================
312            a_QbyOCN (I,J)             = 0.0 _d 0            a_QbyOCN (I,J)             = 0.0 _d 0
313            r_QbyOCN (I,J)             = 0.0 _d 0            r_QbyOCN (I,J)             = 0.0 _d 0
314    
315    #ifdef ALLOW_DIAGNOSTICS
316            d_AREAbyATM(I,J)           = 0.0 _d 0            d_AREAbyATM(I,J)           = 0.0 _d 0
317            d_AREAbyICE(I,J)           = 0.0 _d 0            d_AREAbyICE(I,J)           = 0.0 _d 0
318            d_AREAbyOCN(I,J)           = 0.0 _d 0            d_AREAbyOCN(I,J)           = 0.0 _d 0
319    #endif
320    
321            d_HEFFbyNEG(I,J)           = 0.0 _d 0            d_HEFFbyNEG(I,J)           = 0.0 _d 0
322            d_HEFFbyOCNonICE(I,J)      = 0.0 _d 0            d_HEFFbyOCNonICE(I,J)      = 0.0 _d 0
# Line 816  c efficiency of turbulent fluxes : depen Line 820  c efficiency of turbulent fluxes : depen
820                 tmpscal1 = SEAICE_availHeatFracFrz                 tmpscal1 = SEAICE_availHeatFracFrz
821             ENDIF             ENDIF
822  c efficiency of turbulent fluxes : dependency to AREA (McPhee cases)  c efficiency of turbulent fluxes : dependency to AREA (McPhee cases)
823             if ( (SEAICEturbFluxFormula.EQ.3).AND.             if ( (SEAICEturbFluxFormula.NE.4).AND.
824       &        (AREApreTH(I,J) .GE. 0. _d 0) ) then       &        (AREApreTH(I,J) .GT. 0. _d 0) ) then
825                MixedLayerTurbulenceFactor = ONE - AREApreTH(I,J) *                MixedLayerTurbulenceFactor = ONE -
826       &        (MCPHEE_TAPER_FAC-1) / MCPHEE_TAPER_FAC       &         SEAICE_availHeatTaper * AREApreTH(I,J)
827             elseif ( (SEAICEturbFluxFormula.EQ.4).AND.             elseif ( (SEAICEturbFluxFormula.EQ.4).AND.
828       &        (AREApreTH(I,J) .LE. 0. _d 0) ) then       &        (AREApreTH(I,J) .GT. 0. _d 0) ) then
829                MixedLayerTurbulenceFactor = ONE/MCPHEE_TAPER_FAC                MixedLayerTurbulenceFactor = ONE- SEAICE_availHeatTaper
830             else             else
831                MixedLayerTurbulenceFactor = ONE                MixedLayerTurbulenceFactor = ONE
832             endif             endif
# Line 1155  C           could not melt more than all Line 1159  C           could not melt more than all
1159              tmpscal3 = MIN(ZERO,tmpscal2)              tmpscal3 = MIN(ZERO,tmpscal2)
1160            endif            endif
1161                        
 C to be fixed soon : proper fill of d_AREAbyATM, d_AREAbyICE, d_AREAbyOCN  
           d_AREAbyATM(I,J)=recip_HO*tmpscal4+HALF*recip_HH*tmpscal3  
           d_AREAbyOCN(I,J)=ZERO  
           d_AREAbyICE(I,J)=ZERO  
   
1162  C apply tendency  C apply tendency
1163            IF ( (HEFF(i,j,bi,bj).GT.0. _d 0).OR.            IF ( (HEFF(i,j,bi,bj).GT.0. _d 0).OR.
1164       &        (HSNOW(i,j,bi,bj).GT.0. _d 0) ) THEN       &        (HSNOW(i,j,bi,bj).GT.0. _d 0) ) THEN
# Line 1172  C apply tendency Line 1171  C apply tendency
1171  #ifdef ALLOW_SITRACER  #ifdef ALLOW_SITRACER
1172            SItrAREA(I,J,bi,bj,3)=AREA(I,J,bi,bj)            SItrAREA(I,J,bi,bj,3)=AREA(I,J,bi,bj)
1173  #endif  #endif
1174    #ifdef ALLOW_DIAGNOSTICS
1175              d_AREAbyATM(I,J)=
1176         &       recip_HO*MAX(ZERO,d_HEFFbyATMonOCN_open(I,J))
1177         &       +HALF*recip_HH*MIN(0. _d 0,d_HEFFbyATMonOCN_open(I,J))
1178              d_AREAbyICE(I,J)=
1179         &        HALF*recip_HH*MIN(0. _d 0,d_HEFFbyATMonOCN_cover(I,J))
1180              d_AREAbyOCN(I,J)=
1181         &        HALF*recip_HH*MIN( 0. _d 0,d_HEFFbyOCNonICE(I,J) )
1182    #endif
1183           ENDDO           ENDDO
1184          ENDDO          ENDDO
1185    
# Line 1426  C ====================================== Line 1433  C ======================================
1433           ENDDO           ENDDO
1434          ENDDO          ENDDO
1435    
1436  #ifdef SEAICE_HEAT_CONSERV_FIX  #ifndef SEAICE_DISABLE_HEATCONSFIX
1437  #ifndef SEAICE_GROWTH_LEGACY  C treat advective heat flux by ocean to ice water exchange (at 0decC)
1438    C ===================================================================
1439          IF ( SEAICEheatConsFix ) THEN
1440  c Unlike for evap and precip, the temperature of gained/lost  c Unlike for evap and precip, the temperature of gained/lost
1441  c ocean liquid water due to melt/freeze of solid water cannot be chosen  c ocean liquid water due to melt/freeze of solid water cannot be chosen
1442  c to be e.g. the ocean SST. It must be done at 0degC. The fix below anticipates  c to be e.g. the ocean SST. It must be done at 0degC. The fix below anticipates
# Line 1437  c I leave alone the exotic case when onv Line 1446  c I leave alone the exotic case when onv
1446  c the small error of the synchronous time stepping case (see external_forcing_surf.F).  c the small error of the synchronous time stepping case (see external_forcing_surf.F).
1447          DO J=1,sNy          DO J=1,sNy
1448           DO I=1,sNx           DO I=1,sNx
1449    #ifdef ALLOW_DIAGNOSTICS
1450  c store unaltered QNET for diagnostic purposes  c store unaltered QNET for diagnostic purposes
1451             DIAGarrayA(I,J)=-QNET(I,J,bi,bj)             DIAGarrayA(I,J)=QNET(I,J,bi,bj)
1452    #endif
1453  c compute the ocean water going to ice/snow, in precip units  c compute the ocean water going to ice/snow, in precip units
1454             tmpscal3=rhoConstFresh*maskC(I,J,kSurface,bi,bj)*             tmpscal3=rhoConstFresh*maskC(I,J,kSurface,bi,bj)*
1455       &       ( d_HSNWbyATMonSNW(I,J)/ICE2SNOW       &       ( d_HSNWbyATMonSNW(I,J)/ICE2SNOW
# Line 1456  c melt/freez water is in effect consiste Line 1467  c melt/freez water is in effect consiste
1467               QNET(I,J,bi,bj)=QNET(I,J,bi,bj) - tmpscal3*               QNET(I,J,bi,bj)=QNET(I,J,bi,bj) - tmpscal3*
1468       &         HeatCapacity_Cp * theta(I,J,kSurface,bi,bj)       &         HeatCapacity_Cp * theta(I,J,kSurface,bi,bj)
1469             ENDIF             ENDIF
1470    #ifdef ALLOW_DIAGNOSTICS
1471    c back out the eventual TFLUX adjustement and fill diag
1472               DIAGarrayA(I,J)=QNET(I,J,bi,bj)-DIAGarrayA(I,J)
1473    #endif
1474           ENDDO           ENDDO
1475          ENDDO          ENDDO
1476          ENDIF
1477  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
1478  C temporary (?) output of unaltered QNET using SDIAG6          CALL DIAGNOSTICS_FILL(DIAGarrayA,
1479  c        CALL DIAGNOSTICS_FILL(DIAGarrayA,       &      'SIaaflux',0,1,3,bi,bj,myThid)
 c    &      'SDIAG6  ',0,1,3,bi,bj,myThid)  
1480  #endif  #endif
1481        ENDIF        ENDIF
1482  #endif  #endif
 #endif  
1483    
1484  C compute net fresh water flux leaving/entering  C compute net fresh water flux leaving/entering
1485  C the ocean, accounting for fresh/salt water stocks.  C the ocean, accounting for fresh/salt water stocks.
# Line 1648  C the latent heat flux Line 1662  C the latent heat flux
1662           CALL DIAGNOSTICS_FILL(DIAGarrayC,'SIrsSubl',0,1,3,bi,bj,myThid)           CALL DIAGNOSTICS_FILL(DIAGarrayC,'SIrsSubl',0,1,3,bi,bj,myThid)
1663           CALL DIAGNOSTICS_FILL(DIAGarrayB,'SIhl    ',0,1,3,bi,bj,myThid)           CALL DIAGNOSTICS_FILL(DIAGarrayB,'SIhl    ',0,1,3,bi,bj,myThid)
1664    
 #ifdef SEAICE_HEAT_CONSERV_FIX  
1665           DO J=1,sNy           DO J=1,sNy
1666            DO I=1,sNx            DO I=1,sNx
1667  c compute ice/snow water going to atm, in precip units  c compute ice/snow water going to atm, in precip units
# Line 1683  c add to SIatmQnt, leading to SItflux, w Line 1696  c add to SIatmQnt, leading to SItflux, w
1696       &            -tmpscal1-tmpscal2       &            -tmpscal1-tmpscal2
1697            ENDDO            ENDDO
1698           ENDDO           ENDDO
1699  c        CALL DIAGNOSTICS_FILL(DIAGarrayA,           CALL DIAGNOSTICS_FILL(DIAGarrayA,
1700  C until SItflux is added to diags, output it using SDIAG5       &      'SItflux ',0,1,3,bi,bj,myThid)
 c    &      'SDIAG5  ',0,1,3,bi,bj,myThid)  
 #endif /* SEAICE_HEAT_CONSERV_FIX */  
1701  #endif /* ALLOW_ATM_TEMP */  #endif /* ALLOW_ATM_TEMP */
1702    
1703          ENDIF          ENDIF

Legend:
Removed from v.1.151  
changed lines
  Added in v.1.152

  ViewVC Help
Powered by ViewVC 1.1.22