/[MITgcm]/MITgcm/pkg/aim_v23/phy_suflux_sice.F
ViewVC logotype

Diff of /MITgcm/pkg/aim_v23/phy_suflux_sice.F

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

revision 1.3 by jmc, Fri May 21 17:43:04 2004 UTC revision 1.5 by jmc, Thu Jul 22 22:58:38 2004 UTC
# Line 9  C     !INTERFACE: Line 9  C     !INTERFACE:
9        SUBROUTINE SUFLUX_SICE(        SUBROUTINE SUFLUX_SICE(
10       I                   PSA, FMASK, EMISloc,       I                   PSA, FMASK, EMISloc,
11       I                   Tsurf, dTskin, SSR, SLRD,       I                   Tsurf, dTskin, SSR, SLRD,
12       I                   T0, Q0, CDENVV,       I                   T1, T0, Q0, DENVV,
13       O                   SHF, EVAP, SLRU,       O                   SHF, EVAP, SLRU,
14       O                   Evp0, dEvp, Slr0, dSlr, sFlx,       O                   Shf0, dShf, Evp0, dEvp, Slr0, dSlr, sFlx,
15       O                   TSFC, TSKIN,       O                   TSFC, TSKIN,
16       I                   bi,bj,myThid)       I                   bi,bj,myThid)
17    
# Line 52  C    Tsurf  :: surface temperature Line 52  C    Tsurf  :: surface temperature
52  C    dTskin :: temp. correction for daily-cycle heating [K]  C    dTskin :: temp. correction for daily-cycle heating [K]
53  C    SSR    :: sfc sw radiation (net flux)     (2-dim)  C    SSR    :: sfc sw radiation (net flux)     (2-dim)
54  C    SLRD   :: sfc lw radiation (downward flux)(2-dim)  C    SLRD   :: sfc lw radiation (downward flux)(2-dim)
55    C    T1     :: near-surface air temperature (from Pot.temp)
56  C    T0     :: near-surface air temperature    (2-dim)  C    T0     :: near-surface air temperature    (2-dim)
57  C    Q0     :: near-surface sp. humidity [g/kg](2-dim)  C    Q0     :: near-surface sp. humidity [g/kg](2-dim)
58  C    CDENVV :: sensible heat flux coefficient  (2-dim)  C    DENVV  :: surface flux (sens,lat.) coeff. (=Rho*|V|) [kg/m2/s]
59  C--   Output:  C--   Output:
60  C    SHF    :: sensible heat flux              (2-dim)  C    SHF    :: sensible heat flux              (2-dim)
61  C    EVAP   :: evaporation [g/(m^2 s)]         (2-dim)  C    EVAP   :: evaporation [g/(m^2 s)]         (2-dim)
62  C    SLRU   :: sfc lw radiation (upward flux)  (2-dim)  C    SLRU   :: sfc lw radiation (upward flux)  (2-dim)
63    C    Shf0   :: sensible heat flux over freezing surf.
64    C    dShf   :: sensible heat flux derivative relative to surf. temp
65  C    Evp0   :: evaporation computed over freezing surface (Ts=0.oC)  C    Evp0   :: evaporation computed over freezing surface (Ts=0.oC)
66  C    dEvp   :: evaporation derivative relative to surf. temp  C    dEvp   :: evaporation derivative relative to surf. temp
67  C    Slr0   :: upward long wave radiation over freezing surf.  C    Slr0   :: upward long wave radiation over freezing surf.
# Line 74  C-- Line 77  C--
77        _RL  PSA(NGP), FMASK(NGP), EMISloc        _RL  PSA(NGP), FMASK(NGP), EMISloc
78        _RL  Tsurf(NGP), dTskin(NGP)        _RL  Tsurf(NGP), dTskin(NGP)
79        _RL  SSR(NGP), SLRD(NGP)        _RL  SSR(NGP), SLRD(NGP)
80        _RL  T0(NGP), Q0(NGP), CDENVV(NGP)        _RL  T1(NGP), T0(NGP), Q0(NGP), DENVV(NGP)
81    
82        _RL  SHF(NGP), EVAP(NGP), SLRU(NGP)        _RL  SHF(NGP), EVAP(NGP), SLRU(NGP)
83        _RL  Evp0(NGP), dEvp(NGP), Slr0(NGP), dSlr(NGP), sFlx(NGP,0:2)        _RL  Shf0(NGP), dShf(NGP), Evp0(NGP), dEvp(NGP)
84          _RL  Slr0(NGP), dSlr(NGP), sFlx(NGP,0:2)
85        _RL  TSFC(NGP), TSKIN(NGP)        _RL  TSFC(NGP), TSKIN(NGP)
86    
87        INTEGER bi,bj,myThid        INTEGER bi,bj,myThid
# Line 86  CEOP Line 90  CEOP
90  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
91    
92  C-- Local variables:  C-- Local variables:
93    C    CDENVV :: surf. heat flux (sens.,lat.) coeff including stability effect
94    C    ALHevp :: Latent Heat of evaporation
95          _RL CDENVV(NGP), RDTH, FSSICE
96          _RL ALHevp, Fstb0, dTstb, dFstb
97        _RL QSAT0(NGP,2)        _RL QSAT0(NGP,2)
98        _RL QDUMMY(1), RDUMMY(1), TS2        _RL QDUMMY(1), RDUMMY(1), TS2
99        INTEGER J        INTEGER J
100    
101  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
102    
103          ALHevp = ALHC
104    C     Evap of snow/ice: account for Latent Heat of freezing :
105          IF ( aim_energPrecip ) ALHevp = ALHC + ALHF
106    
107  C     1.5 Define effective skin temperature to compensate for  C     1.5 Define effective skin temperature to compensate for
108  C         non-linearity of heat/moisture fluxes during the daily cycle  C         non-linearity of heat/moisture fluxes during the daily cycle
109    
# Line 102  c       TSFC(J)=273.16 _d 0 + dTskin(J) Line 114  c       TSFC(J)=273.16 _d 0 + dTskin(J)
114          TSFC(J)=273.16 _d 0          TSFC(J)=273.16 _d 0
115        ENDDO        ENDDO
116    
   
117  C--   2. Computation of fluxes over land and sea  C--   2. Computation of fluxes over land and sea
118    
119  C     2.1 Wind stress  C     2.1 Stability correction
120    
121  C     2.2 Sensible heat flux (from clim. TS over land)        RDTH = FSTAB/DTHETA
122    
123        DO J=1,NGP        DO J=1,NGP
124          SHF(J)   =  CDENVV(J)*CP*(TSKIN(J)-T0(J))          FSSICE=1.+MIN(DTHETA,MAX(-DTHETA,TSKIN(J)-T1(J)))*RDTH
125          sFlx(J,0)= -CDENVV(J)*CP*(TSFC(J) -T0(J))          CDENVV(J)=CHS*DENVV(J)*FSSICE
         sFlx(J,1)= -SHF(J)  
         sFlx(J,2)= -CDENVV(J)*CP  
126        ENDDO        ENDDO
127    
128  C     2.3 Evaporation        IF ( dTstab.GT.0. _d 0 ) THEN
129    C-    account for stability function derivative relative to Tsurf:
130    C note: to avoid discontinuity in the derivative (because of min,max), compute
131    C   the derivative using the discrete form: F(Ts+dTstab)-F(Ts-dTstab)/2.dTstab
132           DO J=1,NGP
133            Fstb0 = 1.+MIN(DTHETA,MAX(-DTHETA,TSFC(J) -T1(J)))*RDTH
134            Shf0(J) = CHS*DENVV(J)*Fstb0
135            dTstb = ( DTHETA+dTstab-ABS(TSKIN(J)-T1(J)) )/dTstab
136            dFstb = RDTH*MIN(1. _d 0, MAX(0. _d 0, dTstb*0.5 _d 0))
137            dShf(J) = CHS*DENVV(J)*dFstb
138           ENDDO
139    C-    deBug part:
140    c      J = 6 + (17-1)*sNx
141    c      IF ( bi.EQ.3 .AND. J.LE.NGP )
142    c    &  WRITE(6,1020)'SUFLUX_SICE: Stab=',Shf0(J),CDENVV(J),dShf(J)
143          ENDIF
144    
145    C     2.2 Evaporation
146    
147        CALL SHTORH (2, NGP, TSKIN, PSA, 1. _d 0, QDUMMY, dEvp,        CALL SHTORH (2, NGP, TSKIN, PSA, 1. _d 0, QDUMMY, dEvp,
148       &                QSAT0(1,1), myThid)       &                QSAT0(1,1), myThid)
149        CALL SHTORH (0, NGP, TSFC, PSA, 1. _d 0, QDUMMY, RDUMMY,        CALL SHTORH (0, NGP, TSFC, PSA, 1. _d 0, QDUMMY, RDUMMY,
150       &                QSAT0(1,2), myThid)       &                QSAT0(1,2), myThid)
151    
152        DO J=1,NGP        IF ( dTstab.GT.0. _d 0 ) THEN
153    C-    account for stability function derivative relative to Tsurf:
154           DO J=1,NGP
155            EVAP(J) = CDENVV(J)*(QSAT0(J,1)-Q0(J))
156            Evp0(J) =   Shf0(J)*(QSAT0(J,2)-Q0(J))
157            dEvp(J) = CDENVV(J)*dEvp(J)
158         &            + dShf(J)*(QSAT0(J,1)-Q0(J))
159           ENDDO
160          ELSE
161           DO J=1,NGP
162          EVAP(J) = CDENVV(J)*(QSAT0(J,1)-Q0(J))          EVAP(J) = CDENVV(J)*(QSAT0(J,1)-Q0(J))
163          Evp0(J) = CDENVV(J)*(QSAT0(J,2)-Q0(J))          Evp0(J) = CDENVV(J)*(QSAT0(J,2)-Q0(J))
164          dEvp(J) = CDENVV(J)*dEvp(J)          dEvp(J) = CDENVV(J)*dEvp(J)
165        ENDDO         ENDDO
166          ENDIF
167    
168    C     2.3 Sensible heat flux
169    
170          IF ( dTstab.GT.0. _d 0 ) THEN
171    C-    account for stability function derivative relative to Tsurf:
172           DO J=1,NGP
173            SHF(J)  = CDENVV(J)*CP*(TSKIN(J)-T0(J))
174            Shf0(J) =   Shf0(J)*CP*(TSFC(J) -T0(J))
175            dShf(J) = CDENVV(J)*CP
176         &            + dShf(J)*CP*(TSKIN(J)-T0(J))
177            dShf(J) = MAX( dShf(J), 0. _d 0 )
178    C--   do not allow negative derivative vs Ts of Sensible+Latent H.flux:
179    C     a) quiet unrealistic ;
180    C     b) garantee positive deriv. of total H.flux (needed for implicit solver)
181            dEvp(J) = MAX( dEvp(J), -dShf(J)/ALHevp )
182           ENDDO
183          ELSE
184           DO J=1,NGP
185            SHF(J)  = CDENVV(J)*CP*(TSKIN(J)-T0(J))
186            Shf0(J) = CDENVV(J)*CP*(TSFC(J) -T0(J))
187            dShf(J) = CDENVV(J)*CP
188           ENDDO
189          ENDIF
190    
191  C     2.4 Emission of lw radiation from the surface  C     2.4 Emission of lw radiation from the surface
192    
# Line 141  C     2.4 Emission of lw radiation from Line 200  C     2.4 Emission of lw radiation from
200    
201  C--   Compute net surface heat flux and its derivative ./. surf. temp.  C--   Compute net surface heat flux and its derivative ./. surf. temp.
202        DO J=1,NGP        DO J=1,NGP
203          sFlx(J,0)= sFlx(J,0)          sFlx(J,0)= ( SLRD(J) - EMISloc*Slr0(J) )
204       &           - ALHC*Evp0(J) - EMISloc*Slr0(J) + SLRD(J)       &           - ( Shf0(J) + ALHevp*Evp0(J) )
205          sFlx(J,1)= sFlx(J,1)          sFlx(J,1)= ( SLRD(J) - EMISloc*SLRU(J) )
206       &           - ALHC*EVAP(J) - EMISloc*SLRU(J) + SLRD(J)       &           - ( SHF(J)  + ALHevp*EVAP(J) )
207          sFlx(J,2)= sFlx(J,2)          sFlx(J,2)=            -EMISloc*dSlr(J)
208       &           - ALHC*dEvp(J) - EMISloc*dSlr(J)       &           - ( dShf(J) + ALHevp*dEvp(J) )
209        ENDDO        ENDDO
210        IF ( aim_energPrecip ) THEN  
211  C-     Evap of snow/ice: substract Latent Heat of freezing from heatFlux  C-    deBug part:   -----------------
212         DO J=1,NGP  c1010 FORMAT(A,I3,2F10.3,F10.4)
213           sFlx(J,0) = sFlx(J,0) - ALHF*Evp0(J)  c1020 FORMAT(A,1P4E11.3)
214           sFlx(J,1) = sFlx(J,1) - ALHF*EVAP(J)  c     J = 6 + (17-1)*sNx
215           sFlx(J,2) = sFlx(J,2) - ALHF*dEvp(J)  c     IF ( bi.EQ.3 .AND. J.LE.NGP ) THEN
216         ENDDO  c       WRITE(6,1010) 'SUFLUX_SICE: 1,sFlx=', 1,
217        ENDIF  c    &                                    sFlx(J,0),sFlx(J,1),sFlx(J,2)
218    c       WRITE(6,1010) 'SUFLUX_SICE: 0,Evap=', 0,Evp0(J),EVAP(J),dEvp(J)
219    c       WRITE(6,1010) 'SUFLUX_SICE: -,LWup=',-1,Slr0(J),SLRU(J),dSlr(J)
220    c       WRITE(6,1010) 'SUFLUX_SICE: -, SHF=',-1,Shf0(J),SHF(J), dShf(J)
221    c       WRITE(6,1010) 'SUFLUX_SICE: -, LAT=',-1,
222    c    &                     ALHevp*Evp0(J),ALHevp*EVAP(J),ALHevp*dEvp(J)
223    c     ENDIF
224    
225  C--   3. Adjustment of skin temperature and fluxes over land  C--   3. Adjustment of skin temperature and fluxes over land
226  C--      based on energy balance (to be implemented)  C--      based on energy balance (to be implemented)

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

  ViewVC Help
Powered by ViewVC 1.1.22