/[MITgcm]/MITgcm/pkg/thsice/thsice_impl_temp.F
ViewVC logotype

Diff of /MITgcm/pkg/thsice/thsice_impl_temp.F

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

revision 1.3 by jmc, Mon Mar 13 03:53:40 2006 UTC revision 1.4 by jmc, Thu May 25 18:03:24 2006 UTC
# Line 27  C     === Global variables === Line 27  C     === Global variables ===
27  #include "THSICE_SIZE.h"  #include "THSICE_SIZE.h"
28  #include "THSICE_PARAMS.h"  #include "THSICE_PARAMS.h"
29  #include "THSICE_VARS.h"  #include "THSICE_VARS.h"
30          INTEGER siLo, siHi, sjLo, sjHi
31          PARAMETER ( siLo = 1-OLx , siHi = sNx+OLx )
32          PARAMETER ( sjLo = 1-OLy , sjHi = sNy+OLy )
33    
34  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
35  C     === Routine arguments ===  C     === Routine arguments ===
# Line 49  C     myThid  :: thread number for this Line 52  C     myThid  :: thread number for this
52  #ifdef ALLOW_THSICE  #ifdef ALLOW_THSICE
53  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
54  C     === Local variables ===  C     === Local variables ===
55  C     flxSW    :: net Short-Wave (+=down) at surface [W/m2]  C     tFrzOce  :: sea-water freezing temperature [oC] (function of S)
56  C     flxExcSw :: surf. heat flux (+=down) except SW, function of surf. temp Ts:  C     dTsrf    :: surf. temp adjusment: Ts^n+1 - Ts^n
 C                0: Flx(Ts=0) ; 1: Flx(Ts=Ts^n) ; 2: d.Flx/dTs(Ts=Ts^n)  
 C     sHeating :: surf heating left to melt snow or ice (= Atmos-conduction)  
 C     flxCnB   :: heat flux conducted through the ice to bottom surface  
 C     flxtmp   :: net heat flux from the atmosphere ( >0 downward)  
 C     evptmp   :: evaporation to the atmosphere [kg/m2/s] (>0 if evaporate)  
57        INTEGER i,j        INTEGER i,j
58        INTEGER iMin, iMax        INTEGER iMin, iMax
59        INTEGER jMin, jMax        INTEGER jMin, jMax
60        _RL flxSW        _RL tFrzOce(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
61        _RL Tf  c     _RL dTsrf  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
62        _RL flxtmp, evptmp        LOGICAL dBugFlag
63        _RL  flxExcSw(0:2)  
64        _RL hIce, hSnow, Tsf, Tice(nlyr), qicen(nlyr)  C-    define grid-point location where to print debugging values
65    #include "THSICE_DEBUG.h"
66    
67     1010 FORMAT(A,1P4E14.6)
68    
69        LOGICAL dBug  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
70    
71        iMin = 1        iMin = 1
72        iMax = sNx        iMax = sNx
73        jMin = 1        jMin = 1
74        jMax = sNy        jMax = sNy
75        dBug = .FALSE.        dBugFlag = debugLevel.GE.debLevB
  1010 FORMAT(A,1P4E14.6)  
   
       DO j = jMin, jMax  
        DO i = iMin, iMax  
 c       dBug = ( bi.EQ.3 .AND. i.EQ.15 .AND. j.EQ.11 )  
76    
77  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
78  C    part.1 : ice-covered fraction ;  C    part.1 : ice-covered fraction ;
79  C     Solve for surface and ice temperature (implicitly) ; compute surf. fluxes  C     Solve for surface and ice temperature (implicitly) ; compute surf. fluxes
80  C-------  C-------
81          DO j = jMin, jMax
82           DO i = iMin, iMax
83          IF (iceMask(i,j,bi,bj).GT.0. _d 0) THEN          IF (iceMask(i,j,bi,bj).GT.0. _d 0) THEN
84            Tf      = -mu_Tf*sOceMxL(i,j,bi,bj)            tFrzOce(i,j) = -mu_Tf*sOceMxL(i,j,bi,bj)
85            hIce    = iceHeight(i,j,bi,bj)            icFlxSW(i,j,bi,bj) = netSW(i,j)
86            hSnow   = snowHeight(i,j,bi,bj)  #ifdef ALLOW_DBUG_THSICE
87            flxExcSw(0) = sFlx(i,j,0)            IF ( dBug(i,j,bi,bj) ) THEN
           flxExcSw(1) = sFlx(i,j,1)  
           flxExcSw(2) = sFlx(i,j,2)  
           flxSW   = netSW(i,j)  
           Tsf     = Tsrf(i,j,bi,bj)  
           qicen(1)= Qice1(i,j,bi,bj)  
           qicen(2)= Qice2(i,j,bi,bj)  
           IF ( dBug ) THEN  
88             WRITE(6,'(A,2I4,2I2)') 'ThSI_IMPL_T: i,j=',i,j,bi,bj             WRITE(6,'(A,2I4,2I2)') 'ThSI_IMPL_T: i,j=',i,j,bi,bj
89             WRITE(6,1010) 'ThSI_IMPL_T:-0- iceMask,hIc,hSn,Tsf=',             WRITE(6,1010) 'ThSI_IMPL_T:-0- iceMask,hIc,hSn,Tsf=',
90       &                   iceMask(i,j,bi,bj), hIce, hSnow, Tsf       &                   iceMask(i,j,bi,bj), iceHeight(i,j,bi,bj),
91         &                   snowHeight(i,j,bi,bj), Tsrf(i,j,bi,bj)
92             WRITE(6,1010) 'ThSI_IMPL_T:-0- Tice(1,2),Qice(1,2)=',             WRITE(6,1010) 'ThSI_IMPL_T:-0- Tice(1,2),Qice(1,2)=',
93       &           Tice1(i,j,bi,bj), Tice2(i,j,bi,bj), qicen       &           Tice1(i,j,bi,bj), Tice2(i,j,bi,bj),
94         &           Qice1(i,j,bi,bj), Qice2(i,j,bi,bj)
95            ENDIF            ENDIF
96    #endif
           CALL THSICE_SOLVE4TEMP(  
      I          useBulkforce, flxExcSw, Tf, hIce, hSnow,  
      U          flxSW, Tsf, qicen,  
      O          Tice, sHeating(i,j,bi,bj), flxCndBt(i,j,bi,bj),  
      O          dTsurf(i,j), flxtmp, evptmp,  
      I          i,j, bi,bj, myThid)  
 C--    Update Fluxes :  
           Qsw(i,j,bi,bj) = -flxSW  
 C--    Update Sea-Ice state :  
           Tsrf(i,j,bi,bj) =Tsf  
           Tice1(i,j,bi,bj)=Tice(1)  
           Tice2(i,j,bi,bj)=Tice(2)  
           Qice1(i,j,bi,bj)=qicen(1)  
           Qice2(i,j,bi,bj)=qicen(2)  
   
           IF ( dBug ) THEN  
            WRITE(6,1010) 'ThSI_IMPL_T: Tsf, Tice(1,2), dTsurf=',  
      &                              Tsf, Tice, dTsurf(i,j)  
            WRITE(6,1010) 'ThSI_IMPL_T: sHeat, flxCndBt, Qice =',  
      &           sHeating(i,j,bi,bj), flxCndBt(i,j,bi,bj), qicen  
            WRITE(6,1010) 'ThSI_IMPL_T: flxA, fxSW_bf,af=',  
      &           flxtmp, netSW(i,j), flxSW  
           ENDIF  
         ELSE  
           dTsurf(i,j) = 0. _d 0  
           Qsw(i,j,bi,bj) = 0. _d 0  
97          ENDIF          ENDIF
   
98         ENDDO         ENDDO
99        ENDDO        ENDDO
100    
101          CALL THSICE_SOLVE4TEMP(
102         I          bi, bj, siLo, siHi, sjLo, sjHi,
103         I          iMin,iMax, jMin,jMax, dBugFlag, .FALSE.,
104         I          iceMask(siLo,sjLo,bi,bj), iceHeight(siLo,sjLo,bi,bj),
105         I          snowHeight(siLo,sjLo,bi,bj), tFrzOce, sFlx,
106         U          icFlxSW(siLo,sjLo,bi,bj), Tsrf(siLo,sjLo,bi,bj),
107         U          Qice1(siLo,sjLo,bi,bj), Qice2(siLo,sjLo,bi,bj),
108         O          Tice1(siLo,sjLo,bi,bj), Tice2(siLo,sjLo,bi,bj), dTsurf,
109         O          sHeating(siLo,sjLo,bi,bj), flxCndBt(siLo,sjLo,bi,bj),
110         O          icFlxAtm(siLo,sjLo,bi,bj), icFrwAtm(siLo,sjLo,bi,bj),
111         I          myTime, myIter, myThid )
112    
113  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
114  #endif /* ALLOW_THSICE */  #endif /* ALLOW_THSICE */
115    

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

  ViewVC Help
Powered by ViewVC 1.1.22