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

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

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


Revision 1.6 - (hide annotations) (download)
Mon Mar 13 03:58:32 2006 UTC (18 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint58l_post, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint58e_post, checkpoint58u_post, checkpoint58w_post, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64, checkpoint65, checkpoint60, checkpoint61, checkpoint62, checkpoint63, checkpoint58r_post, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint58n_post, checkpoint58x_post, checkpoint58t_post, checkpoint58h_post, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint58q_post, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint58j_post, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint59j, checkpoint59, checkpoint58f_post, checkpoint58d_post, checkpoint58c_post, checkpoint58i_post, checkpoint58g_post, checkpoint58o_post, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint58y_post, checkpoint58k_post, checkpoint58v_post, checkpoint58s_post, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint58p_post, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y, checkpoint58b_post, checkpoint58m_post, HEAD
Changes since 1.5: +6 -5 lines
make Latent Heat of sublimation more consistent with the different options

1 jmc 1.6 C $Header: /u/gcmpack/MITgcm/pkg/aim_v23/phy_suflux_sice.F,v 1.5 2004/07/22 22:58:38 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "AIM_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: SUFLUX_SICE
8     C !INTERFACE:
9     SUBROUTINE SUFLUX_SICE(
10     I PSA, FMASK, EMISloc,
11     I Tsurf, dTskin, SSR, SLRD,
12 jmc 1.4 I T1, T0, Q0, DENVV,
13 jmc 1.1 O SHF, EVAP, SLRU,
14 jmc 1.4 O Shf0, dShf, Evp0, dEvp, Slr0, dSlr, sFlx,
15 jmc 1.1 O TSFC, TSKIN,
16     I bi,bj,myThid)
17    
18     C !DESCRIPTION: \bv
19     C *==========================================================*
20     C | S/R SUFLUX_SICE
21     C | o compute surface flux over sea-ice
22     C *==========================================================*
23     C | o contains part of original S/R SUFLUX (Speedy code)
24     C *==========================================================*
25     C \ev
26    
27     C !USES:
28     IMPLICIT NONE
29    
30     C Resolution parameters
31    
32     C-- size for MITgcm & Physics package :
33     #include "AIM_SIZE.h"
34     #include "EEPARAMS.h"
35 jmc 1.6 #include "PARAMS.h"
36 jmc 1.1
37     C-- Physics package
38     #include "AIM_PARAMS.h"
39    
40     C Physical constants + functions of sigma and latitude
41     #include "com_physcon.h"
42    
43     C Surface flux constants
44     #include "com_sflcon.h"
45    
46     C !INPUT/OUTPUT PARAMETERS:
47     C == Routine Arguments ==
48     C-- Input:
49     C PSA :: norm. surface pressure [p/p0] (2-dim)
50     C FMASK :: fractional land-sea mask (2-dim)
51     C EMISloc:: longwave surface emissivity
52     C Tsurf :: surface temperature (2-dim)
53     C dTskin :: temp. correction for daily-cycle heating [K]
54     C SSR :: sfc sw radiation (net flux) (2-dim)
55     C SLRD :: sfc lw radiation (downward flux)(2-dim)
56 jmc 1.4 C T1 :: near-surface air temperature (from Pot.temp)
57 jmc 1.1 C T0 :: near-surface air temperature (2-dim)
58     C Q0 :: near-surface sp. humidity [g/kg](2-dim)
59 jmc 1.4 C DENVV :: surface flux (sens,lat.) coeff. (=Rho*|V|) [kg/m2/s]
60 jmc 1.1 C-- Output:
61     C SHF :: sensible heat flux (2-dim)
62     C EVAP :: evaporation [g/(m^2 s)] (2-dim)
63     C SLRU :: sfc lw radiation (upward flux) (2-dim)
64 jmc 1.4 C Shf0 :: sensible heat flux over freezing surf.
65     C dShf :: sensible heat flux derivative relative to surf. temp
66 jmc 1.1 C Evp0 :: evaporation computed over freezing surface (Ts=0.oC)
67     C dEvp :: evaporation derivative relative to surf. temp
68     C Slr0 :: upward long wave radiation over freezing surf.
69     C dSlr :: upward long wave rad. derivative relative to surf. temp
70 jmc 1.2 C sFlx :: net heat flux (+=down) except SW, function of surf. temp Ts:
71 jmc 1.1 C 0: Flux(Ts=0.oC) ; 1: Flux(Ts^n) ; 2: d.Flux/d.Ts(Ts^n)
72     C TSFC :: surface temperature (clim.) (2-dim)
73     C TSKIN :: skin surface temperature (2-dim)
74     C-- Input:
75     C bi,bj :: tile index
76     C myThid :: Thread number for this instance of the routine
77     C--
78     _RL PSA(NGP), FMASK(NGP), EMISloc
79     _RL Tsurf(NGP), dTskin(NGP)
80     _RL SSR(NGP), SLRD(NGP)
81 jmc 1.4 _RL T1(NGP), T0(NGP), Q0(NGP), DENVV(NGP)
82 jmc 1.1
83     _RL SHF(NGP), EVAP(NGP), SLRU(NGP)
84 jmc 1.4 _RL Shf0(NGP), dShf(NGP), Evp0(NGP), dEvp(NGP)
85     _RL Slr0(NGP), dSlr(NGP), sFlx(NGP,0:2)
86 jmc 1.1 _RL TSFC(NGP), TSKIN(NGP)
87    
88     INTEGER bi,bj,myThid
89     CEOP
90    
91     #ifdef ALLOW_AIM
92    
93     C-- Local variables:
94 jmc 1.4 C CDENVV :: surf. heat flux (sens.,lat.) coeff including stability effect
95 jmc 1.6 C ALHevp :: Latent Heat of evaporation
96 jmc 1.4 _RL CDENVV(NGP), RDTH, FSSICE
97 jmc 1.5 _RL ALHevp, Fstb0, dTstb, dFstb
98 jmc 1.1 _RL QSAT0(NGP,2)
99     _RL QDUMMY(1), RDUMMY(1), TS2
100     INTEGER J
101    
102     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
103    
104 jmc 1.5 ALHevp = ALHC
105     C Evap of snow/ice: account for Latent Heat of freezing :
106 jmc 1.6 IF ( aim_energPrecip .OR. useThSIce ) ALHevp = ALHC + ALHF
107 jmc 1.5
108 jmc 1.1 C 1.5 Define effective skin temperature to compensate for
109     C non-linearity of heat/moisture fluxes during the daily cycle
110    
111     DO J=1,NGP
112     c TSKIN(J) = Tsurf(J) + dTskin(J)
113     c TSFC(J)=273.16 _d 0 + dTskin(J)
114     TSKIN(J) = Tsurf(J)
115     TSFC(J)=273.16 _d 0
116     ENDDO
117    
118     C-- 2. Computation of fluxes over land and sea
119    
120 jmc 1.4 C 2.1 Stability correction
121 jmc 1.1
122 jmc 1.4 RDTH = FSTAB/DTHETA
123 jmc 1.1
124     DO J=1,NGP
125 jmc 1.4 FSSICE=1.+MIN(DTHETA,MAX(-DTHETA,TSKIN(J)-T1(J)))*RDTH
126     CDENVV(J)=CHS*DENVV(J)*FSSICE
127 jmc 1.1 ENDDO
128    
129 jmc 1.4 IF ( dTstab.GT.0. _d 0 ) THEN
130     C- account for stability function derivative relative to Tsurf:
131     C note: to avoid discontinuity in the derivative (because of min,max), compute
132     C the derivative using the discrete form: F(Ts+dTstab)-F(Ts-dTstab)/2.dTstab
133     DO J=1,NGP
134     Fstb0 = 1.+MIN(DTHETA,MAX(-DTHETA,TSFC(J) -T1(J)))*RDTH
135 jmc 1.5 Shf0(J) = CHS*DENVV(J)*Fstb0
136 jmc 1.4 dTstb = ( DTHETA+dTstab-ABS(TSKIN(J)-T1(J)) )/dTstab
137     dFstb = RDTH*MIN(1. _d 0, MAX(0. _d 0, dTstb*0.5 _d 0))
138 jmc 1.5 dShf(J) = CHS*DENVV(J)*dFstb
139 jmc 1.4 ENDDO
140 jmc 1.5 C- deBug part:
141     c J = 6 + (17-1)*sNx
142 jmc 1.6 c IF ( bi.EQ.3 .AND. J.LE.NGP )
143 jmc 1.5 c & WRITE(6,1020)'SUFLUX_SICE: Stab=',Shf0(J),CDENVV(J),dShf(J)
144 jmc 1.4 ENDIF
145    
146     C 2.2 Evaporation
147 jmc 1.1
148     CALL SHTORH (2, NGP, TSKIN, PSA, 1. _d 0, QDUMMY, dEvp,
149     & QSAT0(1,1), myThid)
150     CALL SHTORH (0, NGP, TSFC, PSA, 1. _d 0, QDUMMY, RDUMMY,
151     & QSAT0(1,2), myThid)
152    
153 jmc 1.4 IF ( dTstab.GT.0. _d 0 ) THEN
154     C- account for stability function derivative relative to Tsurf:
155     DO J=1,NGP
156     EVAP(J) = CDENVV(J)*(QSAT0(J,1)-Q0(J))
157     Evp0(J) = Shf0(J)*(QSAT0(J,2)-Q0(J))
158     dEvp(J) = CDENVV(J)*dEvp(J)
159     & + dShf(J)*(QSAT0(J,1)-Q0(J))
160     ENDDO
161     ELSE
162     DO J=1,NGP
163 jmc 1.1 EVAP(J) = CDENVV(J)*(QSAT0(J,1)-Q0(J))
164     Evp0(J) = CDENVV(J)*(QSAT0(J,2)-Q0(J))
165     dEvp(J) = CDENVV(J)*dEvp(J)
166 jmc 1.4 ENDDO
167     ENDIF
168    
169     C 2.3 Sensible heat flux
170    
171     IF ( dTstab.GT.0. _d 0 ) THEN
172     C- account for stability function derivative relative to Tsurf:
173     DO J=1,NGP
174     SHF(J) = CDENVV(J)*CP*(TSKIN(J)-T0(J))
175     Shf0(J) = Shf0(J)*CP*(TSFC(J) -T0(J))
176     dShf(J) = CDENVV(J)*CP
177     & + dShf(J)*CP*(TSKIN(J)-T0(J))
178 jmc 1.5 dShf(J) = MAX( dShf(J), 0. _d 0 )
179     C-- do not allow negative derivative vs Ts of Sensible+Latent H.flux:
180 jmc 1.6 C a) quiet unrealistic ;
181 jmc 1.5 C b) garantee positive deriv. of total H.flux (needed for implicit solver)
182     dEvp(J) = MAX( dEvp(J), -dShf(J)/ALHevp )
183 jmc 1.4 ENDDO
184     ELSE
185     DO J=1,NGP
186     SHF(J) = CDENVV(J)*CP*(TSKIN(J)-T0(J))
187     Shf0(J) = CDENVV(J)*CP*(TSFC(J) -T0(J))
188     dShf(J) = CDENVV(J)*CP
189     ENDDO
190     ENDIF
191 jmc 1.1
192     C 2.4 Emission of lw radiation from the surface
193    
194     DO J=1,NGP
195     TS2 = TSFC(J)*TSFC(J)
196     Slr0(J) = SBC*TS2*TS2
197     TS2 = TSKIN(J)*TSKIN(J)
198     SLRU(J) = SBC*TS2*TS2
199     dSlr(J) = 4. _d 0 *SBC*TS2*TSKIN(J)
200     ENDDO
201    
202     C-- Compute net surface heat flux and its derivative ./. surf. temp.
203     DO J=1,NGP
204 jmc 1.4 sFlx(J,0)= ( SLRD(J) - EMISloc*Slr0(J) )
205 jmc 1.5 & - ( Shf0(J) + ALHevp*Evp0(J) )
206 jmc 1.4 sFlx(J,1)= ( SLRD(J) - EMISloc*SLRU(J) )
207 jmc 1.5 & - ( SHF(J) + ALHevp*EVAP(J) )
208 jmc 1.4 sFlx(J,2)= -EMISloc*dSlr(J)
209 jmc 1.5 & - ( dShf(J) + ALHevp*dEvp(J) )
210 jmc 1.1 ENDDO
211 jmc 1.5
212     C- deBug part: -----------------
213     c1010 FORMAT(A,I3,2F10.3,F10.4)
214     c1020 FORMAT(A,1P4E11.3)
215     c J = 6 + (17-1)*sNx
216     c IF ( bi.EQ.3 .AND. J.LE.NGP ) THEN
217     c WRITE(6,1010) 'SUFLUX_SICE: 1,sFlx=', 1,
218     c & sFlx(J,0),sFlx(J,1),sFlx(J,2)
219     c WRITE(6,1010) 'SUFLUX_SICE: 0,Evap=', 0,Evp0(J),EVAP(J),dEvp(J)
220     c WRITE(6,1010) 'SUFLUX_SICE: -,LWup=',-1,Slr0(J),SLRU(J),dSlr(J)
221     c WRITE(6,1010) 'SUFLUX_SICE: -, SHF=',-1,Shf0(J),SHF(J), dShf(J)
222     c WRITE(6,1010) 'SUFLUX_SICE: -, LAT=',-1,
223     c & ALHevp*Evp0(J),ALHevp*EVAP(J),ALHevp*dEvp(J)
224     c ENDIF
225 jmc 1.1
226     C-- 3. Adjustment of skin temperature and fluxes over land
227     C-- based on energy balance (to be implemented)
228     C <= done separately for each surface type (land,ocean,sea-ice)
229    
230     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
231     #endif /* ALLOW_AIM */
232    
233     RETURN
234     END

  ViewVC Help
Powered by ViewVC 1.1.22