/[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.1 by jmc, Wed Apr 7 23:40:34 2004 UTC revision 1.6 by jmc, Fri Jun 2 02:01:02 2006 UTC
# Line 2  C $Header$ Line 2  C $Header$
2  C $Name$  C $Name$
3    
4  #include "THSICE_OPTIONS.h"  #include "THSICE_OPTIONS.h"
5    
6  C     !ROUTINE: THSICE_IMPL_TEMP  C     !ROUTINE: THSICE_IMPL_TEMP
7  C     !INTERFACE:  C     !INTERFACE:
8        SUBROUTINE THSICE_IMPL_TEMP(        SUBROUTINE THSICE_IMPL_TEMP(
9       I                netSW, sFlx,       I                netSW, sFlx,
10       O                dTsurf,       O                dTsurf,
11       I                bi, bj, myTime, myIter, myThid)       I                bi, bj, myTime, myIter, myThid)
12  C     *==========================================================*  C     *==========================================================*
13  C     | S/R  THSICE_IMPL_TEMP              C     | S/R  THSICE_IMPL_TEMP
14  C     | o Calculate sea-ice and surface temp. implicitly  C     | o Calculate sea-ice and surface temp. implicitly
15  C     *==========================================================*  C     *==========================================================*
16  C     | o return surface fluxes for atmosphere boundary layer  C     | o return surface fluxes for atmosphere boundary layer
17  C     |  physics (and therefore called within atmospheric physics)  C     |  physics (and therefore called within atmospheric physics)
18  C     *==========================================================*  C     *==========================================================*
19    
# 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 ===
36  C     netSW   :: net Short Wave surf. flux (+=down) [W/m2]  C     netSW   :: net Short Wave surf. flux (+=down) [W/m2]
# 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
       _RL  flxExcSw(0:2)  
       _RL hIce, hSnow, Tsf, Tice(nlyr), qicen(nlyr)  
63    
64        LOGICAL dBug  C-    define grid-point location where to print debugging values
65    #include "THSICE_DEBUG.h"
66    
67     1010 FORMAT(A,1P4E14.6)
68    
69    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,1P4E11.3)  
   
       DO j = jMin, jMax  
        DO i = iMin, iMax  
 c       dBug = ( bi.EQ.3 .AND. i.EQ.13 .AND. j.EQ.13 )  
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          IF (iceMask(i,j,bi,bj).GT.0. _d 0) THEN        DO j = jMin, jMax
82            Tf      = -mu_Tf*sOceMxL(i,j,bi,bj)         DO i = iMin, iMax
83            hIce    = iceHeight(i,j,bi,bj)          icFlxSW(i,j,bi,bj) = netSW(i,j)
84            hSnow   = snowHeight(i,j,bi,bj)          IF (iceMask(i,j,bi,bj).GT.0. _d 0) THEN
85            flxExcSw(0) = sFlx(i,j,0)            tFrzOce(i,j) = -mu_Tf*sOceMxL(i,j,bi,bj)
86            flxExcSw(1) = sFlx(i,j,1)  #ifdef ALLOW_DBUG_THSICE
87            flxExcSw(2) = sFlx(i,j,2)            IF ( dBug(i,j,bi,bj) ) THEN
88            flxSW   = netSW(i,j)             WRITE(6,'(A,2I4,2I2)') 'ThSI_IMPL_T: i,j=',i,j,bi,bj
89            Tsf     = Tsrf(i,j,bi,bj)             WRITE(6,1010) 'ThSI_IMPL_T:-0- iceMask,hIc,hSn,Tsf=',
90            qicen(1)= Qice1(i,j,bi,bj)       &                   iceMask(i,j,bi,bj), iceHeight(i,j,bi,bj),
91            qicen(2)= Qice2(i,j,bi,bj)       &                   snowHeight(i,j,bi,bj), Tsrf(i,j,bi,bj)
92            CALL THSICE_SOLVE4TEMP(             WRITE(6,1010) 'ThSI_IMPL_T:-0- Tice(1,2),Qice(1,2)=',
93       I          useBulkforce, flxExcSw, Tf, hIce, hSnow,       &           Tice1(i,j,bi,bj), Tice2(i,j,bi,bj),
94       U          flxSW, Tsf, qicen,       &           Qice1(i,j,bi,bj), Qice2(i,j,bi,bj)
95       O          Tice, sHeating(i,j,bi,bj), flxCndBt(i,j,bi,bj),            ENDIF
96       O          dTsurf(i,j), flxtmp, evptmp,  #endif
      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)  
         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.,.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.1  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.22