31 |
C-- size for MITgcm & Physics package : |
C-- size for MITgcm & Physics package : |
32 |
#include "AIM_SIZE.h" |
#include "AIM_SIZE.h" |
33 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
34 |
|
|
35 |
|
C-- Physics package |
36 |
|
#include "AIM_PARAMS.h" |
37 |
#include "AIM_GRID.h" |
#include "AIM_GRID.h" |
38 |
|
|
39 |
C Constants + functions of sigma and latitude |
C Constants + functions of sigma and latitude |
51 |
C Radiation scheme variables |
C Radiation scheme variables |
52 |
#include "com_radvar.h" |
#include "com_radvar.h" |
53 |
|
|
54 |
|
C Radiation constants |
55 |
|
#include "com_radcon.h" |
56 |
|
|
57 |
c #include "com_sflcon.h" |
c #include "com_sflcon.h" |
58 |
|
|
59 |
C Logical flags |
C Logical flags |
66 |
#ifdef ALLOW_AIM |
#ifdef ALLOW_AIM |
67 |
|
|
68 |
C-- Local variables: |
C-- Local variables: |
69 |
C kGrd = Ground level index (2-dim) |
C kGrd :: Ground level index (2-dim) |
70 |
C dpFac = cell delta_P fraction (3-dim) |
C dpFac :: cell delta_P fraction (3-dim) |
71 |
|
C dTskin :: temp. correction for daily-cycle heating [K] |
72 |
|
C CDENVV :: sensible heat flux coefficient (1:land, 2:sea, 3:sea-ice) |
73 |
|
C Evp0 :: evaporation computed over freezing surface (Ts=0.oC) |
74 |
|
C dEvp :: evaporation derivative relative to surf. temp |
75 |
|
C Slr0 :: upward long wave radiation over freezing surf. |
76 |
|
C dSlr :: upward long wave rad. derivative relative to surf. temp |
77 |
|
C sFlx :: net surface flux (+=down) function of surf. temp Ts: |
78 |
|
C 0: Flux(Ts=0.oC) ; 1: Flux(Ts^n) ; 2: d.Flux/d.Ts(Ts^n) |
79 |
LOGICAL LRADSW |
LOGICAL LRADSW |
80 |
INTEGER ICLTOP(NGP) |
INTEGER ICLTOP(NGP) |
81 |
INTEGER kGround(NGP) |
INTEGER kGround(NGP) |
83 |
c_FM REAL RPS(NGP), ST4S(NGP) |
c_FM REAL RPS(NGP), ST4S(NGP) |
84 |
_RL ST4S(NGP) |
_RL ST4S(NGP) |
85 |
_RL PSG_1(NGP), RPS_1 |
_RL PSG_1(NGP), RPS_1 |
86 |
|
_RL dTskin(NGP), CDENVV(NGP,3) |
87 |
|
_RL Evp0(NGP), dEvp(NGP), Slr0(NGP), dSlr(NGP), sFlx(NGP,0:2) |
88 |
|
|
89 |
INTEGER J, K |
INTEGER J, K |
90 |
|
|
153 |
O QT_LSC(1,1,myThid), |
O QT_LSC(1,1,myThid), |
154 |
I kGround,bi,bj,myThid) |
I kGround,bi,bj,myThid) |
155 |
|
|
156 |
|
IF ( aim_energPrecip ) THEN |
157 |
|
C 2.3 Snow Precipitation (update TT_CNV & TT_LSC) |
158 |
|
CALL SNOW_PRECIP ( |
159 |
|
I PSG, dpFac, SE, ICLTOP, |
160 |
|
I PRECNV(1,myThid), QT_CNV(1,1,myThid), |
161 |
|
I PRECLS(1,myThid), QT_LSC(1,1,myThid), |
162 |
|
U TT_CNV(1,1,myThid), TT_LSC(1,1,myThid), |
163 |
|
O EnPrec(1,myThid), |
164 |
|
I kGround,bi,bj,myThid) |
165 |
|
ELSE |
166 |
|
DO J=1,NGP |
167 |
|
EnPrec(J,myThid) = 0. _d 0 |
168 |
|
ENDDO |
169 |
|
ENDIF |
170 |
|
|
171 |
C-- 3. Radiation (shortwave and longwave) and surface fluxes |
C-- 3. Radiation (shortwave and longwave) and surface fluxes |
172 |
|
|
173 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
192 |
|
|
193 |
c_FM CALL RADSW (PSG,QG1,RH,ALB1, |
c_FM CALL RADSW (PSG,QG1,RH,ALB1, |
194 |
c_FM & ICLTOP,CLOUDC,TSR,SSR,TT_RSW) |
c_FM & ICLTOP,CLOUDC,TSR,SSR,TT_RSW) |
195 |
CALL RADSW (PSG,dpFac,QG1,RH(1,1,myThid),ALB1(1,myThid), |
CALL RADSW (PSG,dpFac,QG1,RH(1,1,myThid),ALB1(1,0,myThid), |
196 |
I FSOL, OZONE, OZUPP, ZENIT, STRATZ, |
I FSOL, OZONE, OZUPP, ZENIT, STRATZ, |
197 |
O TAU2, STRATC, |
O TAU2, STRATC, |
198 |
O ICLTOP,CLOUDC(1,myThid), |
O ICLTOP,CLOUDC(1,myThid), |
199 |
O TSR(1,myThid),SSR(1,myThid),TT_RSW(1,1,myThid), |
O TSR(1,myThid),SSR(1,0,myThid),TT_RSW(1,1,myThid), |
200 |
I kGround,bi,bj,myThid) |
I kGround,bi,bj,myThid) |
201 |
|
|
202 |
DO J=1,NGP |
DO J=1,NGP |
217 |
c_FM & OLR,SLR,TT_RLW) |
c_FM & OLR,SLR,TT_RLW) |
218 |
CALL RADLW (-1,TG1,TS(1,myThid),ST4S, |
CALL RADLW (-1,TG1,TS(1,myThid),ST4S, |
219 |
& OZUPP, STRATC, TAU2, FLUX, ST4A, |
& OZUPP, STRATC, TAU2, FLUX, ST4A, |
220 |
O OLR(1,myThid),SLR(1,myThid),TT_RLW(1,1,myThid), |
O OLR(1,myThid),SLR(1,0,myThid),TT_RLW(1,1,myThid), |
221 |
I kGround,bi,bj,myThid) |
I kGround,bi,bj,myThid) |
222 |
|
|
223 |
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
224 |
C 3.3. Compute surface fluxes and land skin temperature |
C 3.3. Compute surface fluxes and land skin temperature |
225 |
|
|
226 |
c_FM CALL SUFLUX (PSG,UG1,VG1,TG1,QG1,RH,PHIG1, |
c_FM CALL SUFLUX (PSG,UG1,VG1,TG1,QG1,RH,PHIG1, |
227 |
c_FM & PHIS0,FMASK1,STL1,SST1,SOILW1,SSR,SLR, |
c_FM & PHIS0,FMASK1,STL1,SST1,SOILW1,SSR,SLR, |
228 |
c_FM & USTR,VSTR,SHF,EVAP,ST4S, |
c_FM & USTR,VSTR,SHF,EVAP,ST4S, |
229 |
c_FM & TS,TSKIN,U0,V0,T0,Q0) |
c_FM & TS,TSKIN,U0,V0,T0,Q0) |
230 |
CALL SUFLUX (PSG, TG1, QG1, RH(1,1,myThid), SE, VsurfSq, |
CALL SUFLUX_PREP( |
231 |
|
I PSG, TG1, QG1, RH(1,1,myThid), SE, VsurfSq, |
232 |
I WVSurf(1,myThid),csLat(1,myThid),fOrogr(1,myThid), |
I WVSurf(1,myThid),csLat(1,myThid),fOrogr(1,myThid), |
233 |
I FMASK1(1,myThid),STL1(1,myThid),SST1(1,myThid), |
I FMASK1(1,1,myThid),STL1(1,myThid),SST1(1,myThid), |
234 |
I SOILW1(1,myThid), SSR(1,myThid),SLR(1,myThid), |
I sti1(1,myThid), SSR(1,0,myThid), |
235 |
O SPEED0(1,myThid),DRAG(1,1,myThid), |
O SPEED0(1,myThid),DRAG(1,0,myThid),CDENVV, |
236 |
O SHF(1,1,myThid), EVAP(1,1,myThid), |
O dTskin,T0(1,myThid),Q0(1,myThid), |
|
O ST4S,TS(1,myThid),TSKIN(1,myThid), |
|
|
O T0(1,myThid),Q0(1,myThid), |
|
237 |
I kGround,bi,bj,myThid) |
I kGround,bi,bj,myThid) |
238 |
|
|
239 |
|
CALL SUFLUX_LAND ( |
240 |
|
I PSG, FMASK1(1,1,myThid), EMISFC, |
241 |
|
I STL1(1,myThid), dTskin, |
242 |
|
I SOILW1(1,myThid), SSR(1,1,myThid), SLR(1,0,myThid), |
243 |
|
I T0(1,myThid), Q0(1,myThid), EnPrec(1,myThid), |
244 |
|
I CDENVV(1,1), |
245 |
|
O SHF(1,1,myThid), EVAP(1,1,myThid), SLR(1,1,myThid), |
246 |
|
O Evp0, dEvp, Slr0, dSlr, sFlx, |
247 |
|
O TS(1,myThid), TSKIN(1,myThid), |
248 |
|
I bi,bj,myThid) |
249 |
|
#ifdef ALLOW_LAND |
250 |
|
CALL AIM_LAND_IMPL( |
251 |
|
I FMASK1(1,1,myThid), dTskin, sFlx, |
252 |
|
I Evp0, dEvp, Slr0, dSlr, |
253 |
|
U STL1(1,myThid), EVAP(1,1,myThid), SLR(1,1,myThid), |
254 |
|
c O TS(1,myThid), TSKIN(1,myThid), |
255 |
|
I bi, bj, myTime, myIter, myThid) |
256 |
|
#endif /* ALLOW_LAND */ |
257 |
|
|
258 |
|
CALL SUFLUX_OCEAN( |
259 |
|
I PSG, FMASK1(1,2,myThid), |
260 |
|
I SST1(1,myThid), |
261 |
|
I SSR(1,2,myThid), SLR(1,0,myThid), |
262 |
|
O T0(1,myThid), Q0(1,myThid), CDENVV(1,2), |
263 |
|
O SHF(1,2,myThid), EVAP(1,2,myThid), SLR(1,2,myThid), |
264 |
|
I bi,bj,myThid) |
265 |
|
|
266 |
|
IF ( aim_splitSIOsFx ) THEN |
267 |
|
CALL SUFLUX_SICE ( |
268 |
|
I PSG, FMASK1(1,3,myThid), EMISFC, |
269 |
|
I STI1(1,myThid), dTskin, |
270 |
|
I SSR(1,3,myThid), SLR(1,0,myThid), |
271 |
|
I T0(1,myThid), Q0(1,myThid), EnPrec(1,myThid), |
272 |
|
I CDENVV(1,3), |
273 |
|
O SHF(1,3,myThid), EVAP(1,3,myThid), SLR(1,3,myThid), |
274 |
|
O Evp0, dEvp, Slr0, dSlr, sFlx, |
275 |
|
O TS(1,myThid), TSKIN(1,myThid), |
276 |
|
I bi,bj,myThid) |
277 |
|
ELSE |
278 |
|
DO J=1,NGP |
279 |
|
EVAP(J,3,myThid) = 0. _d 0 |
280 |
|
SLR (J,3,myThid) = 0. _d 0 |
281 |
|
ENDDO |
282 |
|
ENDIF |
283 |
|
|
284 |
|
CALL SUFLUX_POST( |
285 |
|
I FMASK1(1,1,myThid), EMISFC, |
286 |
|
I STL1(1,myThid), SST1(1,myThid), sti1(1,myThid), |
287 |
|
I dTskin, SLR(1,0,myThid), |
288 |
|
I T0(1,myThid), Q0(1,myThid), CDENVV, |
289 |
|
U DRAG(1,0,myThid), SHF(1,0,myThid), |
290 |
|
U EVAP(1,0,myThid), SLR(1,1,myThid), |
291 |
|
O ST4S, TS(1,myThid), TSKIN(1,myThid), |
292 |
|
I bi,bj,myThid) |
293 |
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
294 |
|
|
295 |
C 3.4 Compute upward longwave fluxes, convert them to tendencies |
C 3.4 Compute upward longwave fluxes, convert them to tendencies |
296 |
C and add shortwave tendencies |
C and add shortwave tendencies |
297 |
|
|
299 |
c_FM & OLR,SLR,TT_RLW) |
c_FM & OLR,SLR,TT_RLW) |
300 |
CALL RADLW (1,TG1,TS(1,myThid),ST4S, |
CALL RADLW (1,TG1,TS(1,myThid),ST4S, |
301 |
& OZUPP, STRATC, TAU2, FLUX, ST4A, |
& OZUPP, STRATC, TAU2, FLUX, ST4A, |
302 |
O OLR(1,myThid),SLR(1,myThid),TT_RLW(1,1,myThid), |
O OLR(1,myThid),SLR(1,0,myThid),TT_RLW(1,1,myThid), |
303 |
I kGround,bi,bj,myThid) |
I kGround,bi,bj,myThid) |
304 |
|
|
305 |
DO K=1,NLEV |
DO K=1,NLEV |
329 |
K = kGround(J) |
K = kGround(J) |
330 |
IF ( K.GT.0 ) THEN |
IF ( K.GT.0 ) THEN |
331 |
TT_PBL(J,K,myThid) = TT_PBL(J,K,myThid) |
TT_PBL(J,K,myThid) = TT_PBL(J,K,myThid) |
332 |
& + SHF(J,3,myThid) *RPS_1*GRDSCP(K) |
& + SHF(J,0,myThid) *RPS_1*GRDSCP(K) |
333 |
QT_PBL(J,K,myThid) = QT_PBL(J,K,myThid) |
QT_PBL(J,K,myThid) = QT_PBL(J,K,myThid) |
334 |
& + EVAP(J,3,myThid)*RPS_1*GRDSIG(K) |
& + EVAP(J,0,myThid)*RPS_1*GRDSIG(K) |
335 |
ENDIF |
ENDIF |
336 |
ENDDO |
ENDDO |
337 |
|
|