/[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.160 by jmc, Sun Mar 11 13:43:46 2012 UTC revision 1.161 by heimbach, Wed Mar 14 22:55:53 2012 UTC
# Line 130  C ICE/SNOW stocks tendencies associated Line 130  C ICE/SNOW stocks tendencies associated
130        _RL d_AREAbyICE         (1:sNx,1:sNy)        _RL d_AREAbyICE         (1:sNx,1:sNy)
131  #endif  #endif
132    
133    #ifdef SEAICE_ALLOW_AREA_RELAXATION
134    C     ICE/SNOW stocks tendency associated with relaxation towards observation
135          _RL d_AREAbyRLX         (1:sNx,1:sNy)
136    c     The change of mean ice thickness due to relaxation
137          _RL d_HEFFbyRLX         (1:sNx,1:sNy)
138    #endif
139    
140  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
141  c     sea ice dyhnamics  c     sea ice dyhnamics
142        _RL d_HEFFbyNEG         (1:sNx,1:sNy)        _RL d_HEFFbyNEG         (1:sNx,1:sNy)
# Line 325  C ===================== Line 332  C =====================
332            d_AREAbyOCN(I,J)           = 0.0 _d 0            d_AREAbyOCN(I,J)           = 0.0 _d 0
333  #endif  #endif
334    
335    #ifdef SEAICE_ALLOW_AREA_RELAXATION
336              d_AREAbyRLX(I,J)           = 0.0 _d 0
337              d_HEFFbyRLX(I,J)           = 0.0 _d 0
338    #endif
339    
340            d_HEFFbyNEG(I,J)           = 0.0 _d 0            d_HEFFbyNEG(I,J)           = 0.0 _d 0
341            d_HEFFbyOCNonICE(I,J)      = 0.0 _d 0            d_HEFFbyOCNonICE(I,J)      = 0.0 _d 0
342            d_HEFFbyATMonOCN(I,J)      = 0.0 _d 0            d_HEFFbyATMonOCN(I,J)      = 0.0 _d 0
# Line 364  c Line 376  c
376            ENDDO            ENDDO
377           ENDDO           ENDDO
378          ENDDO          ENDDO
379  #ifdef ALLOW_MEAN_SFLUX_COST_CONTRIBUTION  #if (defined (ALLOW_MEAN_SFLUX_COST_CONTRIBUTION) || defined (ALLOW_SSH_GLOBMEAN_COST_CONTRIBUTION))
380          DO J=1-oLy,sNy+oLy          DO J=1-oLy,sNy+oLy
381           DO I=1-oLx,sNx+oLx           DO I=1-oLx,sNx+oLx
382            frWtrAtm(I,J,bi,bj)        = 0.0 _d 0            frWtrAtm(I,J,bi,bj)        = 0.0 _d 0
# Line 402  Cgf no dependency through pathological c Line 414  Cgf no dependency through pathological c
414          IF ( SEAICEadjMODE.EQ.0 ) THEN          IF ( SEAICEadjMODE.EQ.0 ) THEN
415  #endif  #endif
416    
417    #ifdef SEAICE_ALLOW_AREA_RELAXATION
418    CADJ STORE heff(:,:,bi,bj) = comlev1_bibj, key = iicekey,byte=isbyte
419    CADJ STORE area(:,:,bi,bj) = comlev1_bibj, key = iicekey,byte=isbyte
420    C 0) relax sea ice concentration towards observation
421            IF (SEAICE_tauAreaObsRelax .GT. 0.) THEN
422            DO J=1,sNy
423             DO I=1,sNx
424    C         d_AREAbyRLX(i,j) = 0. _d 0
425    C         d_HEFFbyRLX(i,j) = 0. _d 0
426               IF ( obsSIce(I,J,bi,bj).GT.AREA(I,J,bi,bj)) THEN
427                d_AREAbyRLX(i,j) =
428         &       SEAICE_deltaTtherm/SEAICE_tauAreaObsRelax
429         &       * (obsSIce(I,J,bi,bj) - AREA(I,J,bi,bj))
430               ENDIF
431               IF ( obsSIce(I,J,bi,bj).GT.0. _d 0 .AND.
432         &          AREA(I,J,bi,bj).EQ.0. _d 0) THEN
433    C           d_HEFFbyRLX(i,j) = 1. _d 1 * siEps * d_AREAbyRLX(i,j)
434                d_HEFFbyRLX(i,j) = 1. _d 1 * siEps
435               ENDIF
436                AREA(I,J,bi,bj) = AREA(I,J,bi,bj) +  d_AREAbyRLX(i,j)
437                HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) +  d_HEFFbyRLX(i,j)
438             ENDDO
439            ENDDO
440            ENDIF
441    #endif /* SEAICE_ALLOW_AREA_RELAXATION */
442    
443  C 1) treat the case of negative values:  C 1) treat the case of negative values:
444    
445  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
# Line 566  Cgf no additional dependency of air-sea Line 604  Cgf no additional dependency of air-sea
604          ENDIF          ENDIF
605  #endif  #endif
606    
607    #if (defined (ALLOW_MEAN_SFLUX_COST_CONTRIBUTION) || defined (ALLOW_SSH_GLOBMEAN_COST_CONTRIBUTION))
608            DO J=1,sNy
609             DO I=1,sNx
610              AREAforAtmFW(I,J,bi,bj) = AREApreTH(I,J)
611             ENDDO
612            ENDDO
613    #endif
614    
615  C 4) COMPUTE ACTUAL ICE/SNOW THICKNESS; USE MIN/MAX VALUES  C 4) COMPUTE ACTUAL ICE/SNOW THICKNESS; USE MIN/MAX VALUES
616  C    TO REGULARIZE SEAICE_SOLVE4TEMP/d_AREA COMPUTATIONS  C    TO REGULARIZE SEAICE_SOLVE4TEMP/d_AREA COMPUTATIONS
617    
# Line 1278  CADJ &                       key = iicek Line 1324  CADJ &                       key = iicek
1324            tmpscal1 = d_HEFFbyNEG(I,J) + d_HEFFbyOCNonICE(I,J) +            tmpscal1 = d_HEFFbyNEG(I,J) + d_HEFFbyOCNonICE(I,J) +
1325       &               d_HEFFbyATMonOCN(I,J) + d_HEFFbyFLOODING(I,J)       &               d_HEFFbyATMonOCN(I,J) + d_HEFFbyFLOODING(I,J)
1326       &             + d_HEFFbySublim(I,J)       &             + d_HEFFbySublim(I,J)
1327    #ifdef SEAICE_ALLOW_AREA_RELAXATION
1328                       + d_HEFFbyRLX(I,J)
1329    #endif
1330            tmpscal2 = tmpscal1 * SEAICE_salt0 * HEFFM(I,J,bi,bj)            tmpscal2 = tmpscal1 * SEAICE_salt0 * HEFFM(I,J,bi,bj)
1331       &            * recip_deltaTtherm * SEAICE_rhoIce       &            * recip_deltaTtherm * SEAICE_rhoIce
1332            saltFlux(I,J,bi,bj) = tmpscal2            saltFlux(I,J,bi,bj) = tmpscal2
# Line 1483  C for backward compatibility it is left Line 1532  C for backward compatibility it is left
1532       &         - ( d_HEFFbyOCNonICE(I,J) +       &         - ( d_HEFFbyOCNonICE(I,J) +
1533       &             d_HSNWbyOCNonSNW(I,J)*SNOW2ICE +       &             d_HSNWbyOCNonSNW(I,J)*SNOW2ICE +
1534       &             d_HEFFbyNEG(I,J) +       &             d_HEFFbyNEG(I,J) +
1535    #idef SEAICE_ALLOW_AREA_RELAXATION
1536         &             d_HEFFbyRLX(I,J) +
1537    #endif
1538       &             d_HSNWbyNEG(I,J)*SNOW2ICE )       &             d_HSNWbyNEG(I,J)*SNOW2ICE )
1539       &         * maskC(I,J,kSurface,bi,bj)       &         * maskC(I,J,kSurface,bi,bj)
1540            QSW(I,J,bi,bj)  = a_QSWbyATM_cover(I,J) + a_QSWbyATM_open(I,J)            QSW(I,J,bi,bj)  = a_QSWbyATM_cover(I,J) + a_QSWbyATM_open(I,J)
# Line 1570  C ====================================== Line 1622  C ======================================
1622       &             +d_HEFFbyOCNonICE(I,J)       &             +d_HEFFbyOCNonICE(I,J)
1623       &             +d_HEFFbyATMonOCN(I,J)       &             +d_HEFFbyATMonOCN(I,J)
1624       &             +d_HEFFbyNEG(I,J)       &             +d_HEFFbyNEG(I,J)
1625    #ifdef SEAICE_ALLOW_AREA_RELAXATION
1626         &             +d_HEFFbyRLX(I,J)
1627    #endif
1628       &             +d_HSNWbyNEG(I,J)*SNOW2ICE       &             +d_HSNWbyNEG(I,J)*SNOW2ICE
1629  C     If r_FWbySublim>0, then it is evaporated from ocean.  C     If r_FWbySublim>0, then it is evaporated from ocean.
1630       &             +r_FWbySublim(I,J)       &             +r_FWbySublim(I,J)
# Line 1584  C     If r_FWbySublim>0, then it is evap Line 1639  C     If r_FWbySublim>0, then it is evap
1639           ENDDO           ENDDO
1640          ENDDO          ENDDO
1641    
1642  #ifdef ALLOW_MEAN_SFLUX_COST_CONTRIBUTION  #ifdef ALLOW_SSH_GLOBMEAN_COST_CONTRIBUTION
1643    C--
1644              DO J=1,sNy
1645               DO I=1,sNx
1646                frWtrAtm(I,J,bi,bj) = maskC(I,J,kSurface,bi,bj)*(
1647         &           PRECIP(I,J,bi,bj)
1648         &           - EVAP(I,J,bi,bj)*( ONE - AREApreTH(I,J) )
1649    # ifdef ALLOW_RUNOFF
1650         &           + RUNOFF(I,J,bi,bj)
1651    # endif /* ALLOW_RUNOFF */
1652         &           )*rhoConstFresh
1653    # ifdef SEAICE_ADD_SUBLIMATION_TO_FWBUDGET
1654         &           - a_FWbySublim(I,J)*AREApreTH(I,J)
1655    # endif /* SEAICE_ADD_SUBLIMATION_TO_FWBUDGET */
1656               ENDDO
1657              ENDDO
1658    C--
1659    #else  /* ndef ALLOW_SSH_GLOBMEAN_COST_CONTRIBUTION */
1660    C--
1661    # ifdef ALLOW_MEAN_SFLUX_COST_CONTRIBUTION
1662          DO J=1,sNy          DO J=1,sNy
1663           DO I=1,sNx           DO I=1,sNx
1664            frWtrAtm(I,J,bi,bj) = maskC(I,J,kSurface,bi,bj)*(            frWtrAtm(I,J,bi,bj) = maskC(I,J,kSurface,bi,bj)*(
1665       &         PRECIP(I,J,bi,bj)       &         PRECIP(I,J,bi,bj)
1666       &         - EVAP(I,J,bi,bj)       &         - EVAP(I,J,bi,bj)
1667       &         *( ONE - AREApreTH(I,J) )       &         *( ONE - AREApreTH(I,J) )
1668  #ifdef ALLOW_RUNOFF  #  ifdef ALLOW_RUNOFF
1669       &         + RUNOFF(I,J,bi,bj)       &         + RUNOFF(I,J,bi,bj)
1670  #endif /* ALLOW_RUNOFF */  #  endif /* ALLOW_RUNOFF */
1671       &         )*rhoConstFresh       &         )*rhoConstFresh
1672       &     - a_FWbySublim(I,J) * SEAICE_rhoIce * recip_deltaTtherm       &     - a_FWbySublim(I,J) * SEAICE_rhoIce * recip_deltaTtherm
1673           ENDDO           ENDDO
1674          ENDDO          ENDDO
1675  #endif  # endif
1676    C--
1677    #endif /* ALLOW_SSH_GLOBMEAN_COST_CONTRIBUTION */
1678    
1679  #endif /* ALLOW_ATM_TEMP */  #endif /* ALLOW_ATM_TEMP */
1680    
1681  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG

Legend:
Removed from v.1.160  
changed lines
  Added in v.1.161

  ViewVC Help
Powered by ViewVC 1.1.22