/[MITgcm]/MITgcm/pkg/bulk_force/bulkf_formula_aim.F
ViewVC logotype

Annotation of /MITgcm/pkg/bulk_force/bulkf_formula_aim.F

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


Revision 1.2 - (hide annotations) (download)
Thu Jun 22 14:10:29 2006 UTC (17 years, 10 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, mitgcm_mapl_00, 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, 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, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint59j, checkpoint59, 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, checkpoint58m_post, HEAD
Changes since 1.1: +10 -8 lines
fix missing "P0" (left from changes on last May 25)

1 jmc 1.2 C $Header: /u/gcmpack/MITgcm/pkg/bulk_force/bulkf_formula_aim.F,v 1.1 2006/01/22 15:50:37 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "BULK_FORCE_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: BULKF_FORMULA_AIM
8     C !INTERFACE:
9     SUBROUTINE BULKF_FORMULA_AIM(
10     I Tsurf, SLRD,
11     I T1, T0, Q0, Vsurf,
12     O SHF, EVAP, SLRU,
13     O dEvp, sFlx,
14     I iceornot, myThid )
15    
16     C !DESCRIPTION: \bv
17     C *==========================================================*
18     C | S/R BULKF_FORMULA_AIM
19     C | o compute surface flux over ocean and sea-ice,
20     C | using AIM surface flux formulation
21     C *==========================================================*
22     C *==========================================================*
23     C \ev
24    
25     C !USES:
26     IMPLICIT NONE
27    
28     C Resolution parameters
29    
30     #include "EEPARAMS.h"
31     #include "SIZE.h"
32     #include "PARAMS.h"
33     #include "BULKF_PARAMS.h"
34    
35     C !INPUT/OUTPUT PARAMETERS:
36     C == Routine Arguments ==
37     C-- Input:
38     C FMASK :: fractional land-sea mask (2-dim)
39     C Tsurf :: surface temperature (2-dim)
40     C SSR :: sfc sw radiation (net flux) (2-dim)
41     C SLRD :: sfc lw radiation (downward flux)(2-dim)
42     C T1 :: near-surface air temperature (from Pot.temp)
43     C T0 :: near-surface air temperature (2-dim)
44     C Q0 :: near-surface sp. humidity [g/kg](2-dim)
45     C Vsurf :: surface wind speed [m/s] (2-dim,input)
46     C-- Output:
47     C SHF :: sensible heat flux (2-dim)
48     C EVAP :: evaporation [g/(m^2 s)] (2-dim)
49     C SLRU :: sfc lw radiation (upward flux) (2-dim)
50     C Shf0 :: sensible heat flux over freezing surf.
51     C dShf :: sensible heat flux derivative relative to surf. temp
52     C Evp0 :: evaporation computed over freezing surface (Ts=0.oC)
53     C dEvp :: evaporation derivative relative to surf. temp
54     C Slr0 :: upward long wave radiation over freezing surf.
55     C dSlr :: upward long wave rad. derivative relative to surf. temp
56     C sFlx :: net heat flux (+=down) except SW, function of surf. temp Ts:
57     C 0: Flux(Ts=0.oC) ; 1: Flux(Ts^n) ; 2: d.Flux/d.Ts(Ts^n)
58     C TSFC :: surface temperature (clim.) (2-dim)
59     C TSKIN :: skin surface temperature (2-dim)
60     C-- Input:
61     C iceornot :: 0=open water, 1=ice cover
62     C myThid :: Thread number for this instance of the routine
63     C--
64     INTEGER NGP
65     PARAMETER ( NGP = 1 )
66     c _RL PSA(NGP), FMASK(NGP), EMISloc
67     _RL Tsurf(NGP)
68     c _RL SSR(NGP)
69     _RL SLRD(NGP)
70     _RL T1(NGP), T0(NGP), Q0(NGP), Vsurf(NGP)
71    
72     _RL SHF(NGP), EVAP(NGP), SLRU(NGP)
73     _RL dEvp(NGP), sFlx(NGP,0:2)
74     c _RL Shf0(NGP), dShf(NGP), Evp0(NGP), dEvp(NGP)
75     c _RL Slr0(NGP), dSlr(NGP), sFlx(NGP,0:2)
76     c _RL TSFC(NGP), TSKIN(NGP)
77    
78     INTEGER iceornot
79     INTEGER myThid
80     CEOP
81    
82     #ifdef ALLOW_FORMULA_AIM
83    
84     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
85     C FWIND0 = ratio of near-sfc wind to lowest-level wind
86     C CHS = heat exchange coefficient over sea
87     C VGUST = wind speed for sub-grid-scale gusts
88     C DTHETA = Potential temp. gradient for stability correction
89     C dTstab = potential temp. increment for stability function derivative
90     C FSTAB = Amplitude of stability correction (fraction)
91     C P0 = reference pressure [Pa=N/m2]
92     C GG = gravity accel. [m/s2]
93     C RD = gas constant for dry air [J/kg/K]
94     C CP = specific heat at constant pressure [J/kg/K]
95     C ALHC = latent heat of condensation [J/g]
96     C ALHF = latent heat of freezing [J/g]
97     C SBC = Stefan-Boltzmann constant
98     C EMISloc :: longwave surface emissivity
99     c _RL FWIND0, CHS, VGUST, DTHETA, dTstab, FSTAB
100 jmc 1.2 _RL P0, ALHC, ALHF, RD, CP, SBC, EMISloc
101 jmc 1.1 EQUIVALENCE ( ocean_emissivity , EMISloc )
102     EQUIVALENCE ( Lvap , ALHC )
103     EQUIVALENCE ( Lfresh , ALHF )
104     EQUIVALENCE ( Rgas , RD )
105     EQUIVALENCE ( cpair , CP )
106     EQUIVALENCE ( stefan , SBC )
107    
108     C-- Local variables:
109     C PSA :: norm. surface pressure [p/p0] (2-dim)
110     C DENVV :: surface flux (sens,lat.) coeff. (=Rho*|V|) [kg/m2/s]
111     C CDENVV :: surf. heat flux (sens.,lat.) coeff including stability effect
112     C ALHevp :: Latent Heat of evaporation
113     _RL PSA(NGP)
114 jmc 1.2 _RL DENVV(NGP), PRD
115 jmc 1.1 _RL Shf0(NGP), dShf(NGP), Evp0(NGP)
116     _RL Slr0(NGP), dSlr(NGP)
117     _RL TSFC(NGP), TSKIN(NGP)
118     _RL CDENVV(NGP), RDTH, FSSICE
119     _RL ALHevp, Fstb0, dTstb, dFstb
120     _RL QSAT0(NGP,2)
121     _RL QDUMMY(1), RDUMMY(1), TS2
122     INTEGER J
123     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
124    
125     PSA(1) = 1. _d 0
126 jmc 1.2 P0 = 1. _d +5
127 jmc 1.1 C---
128    
129     ALHevp = ALHC
130     C Evap of snow/ice: account for Latent Heat of freezing :
131 jmc 1.2 c IF ( aim_energPrecip .OR. useThSIce ) ALHevp = ALHC + ALHF
132     IF ( iceornot.GE.1 ) ALHevp = ALHC + ALHF
133 jmc 1.1
134     C 1.4 Density * wind speed (including gustiness factor)
135    
136     PRD = P0/RD
137 jmc 1.2 c VG2 = VGUST*VGUST
138     c factWind2 = FWIND0*FWIND0
139 jmc 1.1
140     DO J=1,NGP
141     c SPEED0(J)=SQRT(factWind2*Vsurf2(J)+VG2)
142     c DENVV(J)=(PRD*PSA(J)/T0(J))*SPEED0(J)
143 jmc 1.2 C-- assuming input file "WspeedFile" contains the time-average "SPEED0"
144     C from AIM output (aimPhytave: fields # 15 ; aimDiag: WINDS ) :
145 jmc 1.1 DENVV(J)=(PRD*PSA(J)/T0(J))*Vsurf(J)
146     ENDDO
147    
148     C 1.5 Define effective skin temperature to compensate for
149     C non-linearity of heat/moisture fluxes during the daily cycle
150    
151     DO J=1,NGP
152     TSKIN(J) = Tsurf(J) + celsius2K
153     TSFC(J)=273.16 _d 0
154     ENDDO
155    
156     C-- 2. Computation of fluxes over land and sea
157    
158     C 2.1 Stability correction
159    
160     RDTH = FSTAB/DTHETA
161    
162     DO J=1,NGP
163     FSSICE=1.+MIN(DTHETA,MAX(-DTHETA,TSKIN(J)-T1(J)))*RDTH
164     CDENVV(J)=CHS*DENVV(J)*FSSICE
165     ENDDO
166    
167     IF ( dTstab.GT.0. _d 0 ) THEN
168     C- account for stability function derivative relative to Tsurf:
169     C note: to avoid discontinuity in the derivative (because of min,max), compute
170     C the derivative using the discrete form: F(Ts+dTstab)-F(Ts-dTstab)/2.dTstab
171     DO J=1,NGP
172     Fstb0 = 1.+MIN(DTHETA,MAX(-DTHETA,TSFC(J) -T1(J)))*RDTH
173     Shf0(J) = CHS*DENVV(J)*Fstb0
174     dTstb = ( DTHETA+dTstab-ABS(TSKIN(J)-T1(J)) )/dTstab
175     dFstb = RDTH*MIN(1. _d 0, MAX(0. _d 0, dTstb*0.5 _d 0))
176     dShf(J) = CHS*DENVV(J)*dFstb
177     ENDDO
178     ENDIF
179    
180     C 2.2 Evaporation
181    
182     CALL BULKF_SH2RH_AIM( 2, NGP, TSKIN, PSA, 1. _d 0,
183     & QDUMMY, dEvp, QSAT0(1,1), myThid )
184     CALL BULKF_SH2RH_AIM( 0, NGP, TSFC, PSA, 1. _d 0,
185     & QDUMMY, RDUMMY,QSAT0(1,2), myThid )
186    
187     IF ( dTstab.GT.0. _d 0 ) THEN
188     C- account for stability function derivative relative to Tsurf:
189     DO J=1,NGP
190     EVAP(J) = CDENVV(J)*(QSAT0(J,1)-Q0(J))
191     Evp0(J) = Shf0(J)*(QSAT0(J,2)-Q0(J))
192     dEvp(J) = CDENVV(J)*dEvp(J)
193     & + dShf(J)*(QSAT0(J,1)-Q0(J))
194     ENDDO
195     ELSE
196     DO J=1,NGP
197     EVAP(J) = CDENVV(J)*(QSAT0(J,1)-Q0(J))
198     Evp0(J) = CDENVV(J)*(QSAT0(J,2)-Q0(J))
199     dEvp(J) = CDENVV(J)*dEvp(J)
200     ENDDO
201     ENDIF
202    
203     C 2.3 Sensible heat flux
204    
205     IF ( dTstab.GT.0. _d 0 ) THEN
206     C- account for stability function derivative relative to Tsurf:
207     DO J=1,NGP
208     SHF(J) = CDENVV(J)*CP*(TSKIN(J)-T0(J))
209     Shf0(J) = Shf0(J)*CP*(TSFC(J) -T0(J))
210     dShf(J) = CDENVV(J)*CP
211     & + dShf(J)*CP*(TSKIN(J)-T0(J))
212     dShf(J) = MAX( dShf(J), 0. _d 0 )
213     C-- do not allow negative derivative vs Ts of Sensible+Latent H.flux:
214     C a) quiet unrealistic ;
215     C b) garantee positive deriv. of total H.flux (needed for implicit solver)
216     dEvp(J) = MAX( dEvp(J), -dShf(J)/ALHevp )
217     ENDDO
218     ELSE
219     DO J=1,NGP
220     SHF(J) = CDENVV(J)*CP*(TSKIN(J)-T0(J))
221     Shf0(J) = CDENVV(J)*CP*(TSFC(J) -T0(J))
222     dShf(J) = CDENVV(J)*CP
223     ENDDO
224     ENDIF
225    
226     C 2.4 Emission of lw radiation from the surface
227    
228     DO J=1,NGP
229     TS2 = TSFC(J)*TSFC(J)
230     Slr0(J) = SBC*TS2*TS2
231     TS2 = TSKIN(J)*TSKIN(J)
232     SLRU(J) = SBC*TS2*TS2
233     dSlr(J) = 4. _d 0 *SBC*TS2*TSKIN(J)
234     ENDDO
235    
236     C-- Compute net surface heat flux and its derivative ./. surf. temp.
237     DO J=1,NGP
238     sFlx(J,0)= ( SLRD(J) - EMISloc*Slr0(J) )
239     & - ( Shf0(J) + ALHevp*Evp0(J) )
240     sFlx(J,1)= ( SLRD(J) - EMISloc*SLRU(J) )
241     & - ( SHF(J) + ALHevp*EVAP(J) )
242     sFlx(J,2)= -EMISloc*dSlr(J)
243     & - ( dShf(J) + ALHevp*dEvp(J) )
244     ENDDO
245    
246     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
247     #endif /* ALLOW_FORMULA_AIM */
248    
249     RETURN
250     END

  ViewVC Help
Powered by ViewVC 1.1.22