| 1 |
C $Header: /u/gcmpack/MITgcm/pkg/aim_v23/phy_driver.F,v 1.7 2006/01/26 00:18:54 jmc Exp $ |
| 2 |
C $Name: $ |
| 3 |
|
| 4 |
#include "AIM_OPTIONS.h" |
| 5 |
|
| 6 |
CBOP |
| 7 |
C !ROUTINE: PHY_DRIVER |
| 8 |
C !INTERFACE: |
| 9 |
SUBROUTINE PHY_DRIVER( tYear, usePkgDiag, |
| 10 |
I bi, bj, myTime, myIter, myThid ) |
| 11 |
|
| 12 |
|
| 13 |
C !DESCRIPTION: \bv |
| 14 |
C------------------------ |
| 15 |
C-- SUBROUTINE PHYDRIVER (tYear, myTime, bi, bj, myThid ) |
| 16 |
C-- Purpose: stand-alone driver for physical parametrization routines |
| 17 |
C-- Input : TYEAR : fraction of year (0 = 1jan.00, 1 = 31dec.24) |
| 18 |
C-- grid-point model fields in common block: PHYGR1 |
| 19 |
C-- forcing fields in common blocks : LSMASK, FORFIX, FORCIN |
| 20 |
C-- Output : Diagnosed upper-air variables in common block: PHYGR2 |
| 21 |
C-- Diagnosed surface variables in common block: PHYGR3 |
| 22 |
C-- Physical param. tendencies in common block: PHYTEN |
| 23 |
C-- Surface and upper boundary fluxes in common block: FLUXES |
| 24 |
C------- |
| 25 |
C Note: tendencies are not /dpFac here but later in AIM_AIM2DYN |
| 26 |
C------- |
| 27 |
C from SPEDDY code: (part of original code left with c_FM) |
| 28 |
C * S/R PHYPAR : except interp. dynamical Var. from Spectral of grid point |
| 29 |
C here dynamical var. are loaded within S/R AIM_DYN2AIM. |
| 30 |
C * S/R FORDATE: only the CALL SOL_OZ (done once / day in SPEEDY) |
| 31 |
C------------------------ |
| 32 |
C \ev |
| 33 |
|
| 34 |
C !USES: |
| 35 |
IMPLICIT NONE |
| 36 |
|
| 37 |
C == Global variables === |
| 38 |
|
| 39 |
C-- size for MITgcm & Physics package : |
| 40 |
#include "AIM_SIZE.h" |
| 41 |
#include "EEPARAMS.h" |
| 42 |
|
| 43 |
C-- Physics package |
| 44 |
#include "AIM_PARAMS.h" |
| 45 |
#include "AIM_GRID.h" |
| 46 |
|
| 47 |
C Constants + functions of sigma and latitude |
| 48 |
#include "com_physcon.h" |
| 49 |
|
| 50 |
C Model variables, tendencies and fluxes on gaussian grid |
| 51 |
#include "com_physvar.h" |
| 52 |
|
| 53 |
C Surface forcing fields (time-inv. or functions of seasonal cycle) |
| 54 |
#include "com_forcing.h" |
| 55 |
|
| 56 |
C Constants for forcing fields: |
| 57 |
#include "com_forcon.h" |
| 58 |
|
| 59 |
C Radiation scheme variables |
| 60 |
#include "com_radvar.h" |
| 61 |
|
| 62 |
C Radiation constants |
| 63 |
#include "com_radcon.h" |
| 64 |
|
| 65 |
C Logical flags |
| 66 |
c_FM include "com_lflags.h" |
| 67 |
|
| 68 |
C !INPUT/OUTPUT PARAMETERS: |
| 69 |
C == Routine arguments == |
| 70 |
C tYear :: Fraction into year |
| 71 |
C usePkgDiag :: logical flag, true if using Diagnostics PKG |
| 72 |
C bi, bj :: Tile index |
| 73 |
C myTime :: Current time of simulation ( s ) |
| 74 |
C myIter :: Current iteration number in simulation |
| 75 |
C myThid :: Number of this instance of the routine |
| 76 |
_RL tYear |
| 77 |
LOGICAL usePkgDiag |
| 78 |
INTEGER bi,bj |
| 79 |
_RL myTime |
| 80 |
INTEGER myIter, myThid |
| 81 |
CEOP |
| 82 |
|
| 83 |
#ifdef ALLOW_AIM |
| 84 |
C !FUNCTIONS: |
| 85 |
C !LOCAL VARIABLES: |
| 86 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
| 87 |
C-- Local Variables originally (Speedy) in common bloc (com_physvar.h): |
| 88 |
C TG1 :: absolute temperature |
| 89 |
C QG1 :: specific humidity (g/kg) |
| 90 |
C VsurfSq :: Square of surface wind speed (grid position = as T,Q) |
| 91 |
C SE :: dry static energy <- replaced by Pot.Temp. |
| 92 |
C QSAT :: saturation specific humidity (g/kg) |
| 93 |
C PSG :: surface pressure (normalized) |
| 94 |
_RL TG1 (NGP,NLEV) |
| 95 |
_RL QG1 (NGP,NLEV) |
| 96 |
_RL VsurfSq(NGP) |
| 97 |
_RL SE (NGP,NLEV) |
| 98 |
_RL QSAT (NGP,NLEV) |
| 99 |
_RL PSG (NGP) |
| 100 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
| 101 |
C-- Local variables: |
| 102 |
C kGrd :: Ground level index (2-dim) |
| 103 |
C dpFac :: cell delta_P fraction (3-dim) |
| 104 |
C dTskin :: temp. correction for daily-cycle heating [K] |
| 105 |
C T1s :: near-surface air temperature (from Pot.Temp) |
| 106 |
C DENVV :: surface flux (sens,lat.) coeff. (=Rho*|V|) [kg/m2/s] |
| 107 |
C Shf0 :: sensible heat flux over freezing surf. |
| 108 |
C dShf :: sensible heat flux derivative relative to surf. temp |
| 109 |
C Evp0 :: evaporation computed over freezing surface (Ts=0.oC) |
| 110 |
C dEvp :: evaporation derivative relative to surf. temp |
| 111 |
C Slr0 :: upward long wave radiation over freezing surf. |
| 112 |
C dSlr :: upward long wave rad. derivative relative to surf. temp |
| 113 |
C sFlx :: net surface flux (+=down) function of surf. temp Ts: |
| 114 |
C 0: Flux(Ts=0.oC) ; 1: Flux(Ts^n) ; 2: d.Flux/d.Ts(Ts^n) |
| 115 |
LOGICAL LRADSW |
| 116 |
INTEGER ICLTOP(NGP) |
| 117 |
INTEGER kGround(NGP) |
| 118 |
_RL dpFac(NGP,NLEV) |
| 119 |
c_FM REAL RPS(NGP), ST4S(NGP) |
| 120 |
_RL ST4S(NGP) |
| 121 |
_RL PSG_1(NGP), RPS_1 |
| 122 |
_RL dTskin(NGP), T1s(NGP), DENVV(NGP) |
| 123 |
_RL Shf0(NGP), dShf(NGP), Evp0(NGP), dEvp(NGP) |
| 124 |
_RL Slr0(NGP), dSlr(NGP), sFlx(NGP,0:2) |
| 125 |
|
| 126 |
INTEGER J, K |
| 127 |
|
| 128 |
#ifdef ALLOW_CLR_SKY_DIAG |
| 129 |
_RL dummyR(NGP) |
| 130 |
INTEGER dummyI(NGP) |
| 131 |
#endif |
| 132 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
| 133 |
|
| 134 |
C-- 1. Compute grid-point fields |
| 135 |
|
| 136 |
C- 1.1 Convert model spectral variables to grid-point variables |
| 137 |
|
| 138 |
CALL AIM_DYN2AIM( |
| 139 |
O TG1, QG1, SE, VsurfSq, PSG, dpFac, kGround, |
| 140 |
I bi, bj, myTime, myIter, myThid ) |
| 141 |
|
| 142 |
C- 1.2 Compute thermodynamic variables |
| 143 |
|
| 144 |
C- 1.2.a Surface pressure (ps), 1/ps and surface temperature |
| 145 |
RPS_1 = 1. _d 0 |
| 146 |
DO J=1,NGP |
| 147 |
PSG_1(J)=1. _d 0 |
| 148 |
c_FM PSG(J)=EXP(PSLG1(J)) |
| 149 |
c_FM RPS(J)=1./PSG(J) |
| 150 |
ENDDO |
| 151 |
|
| 152 |
C 1.2.b Dry static energy |
| 153 |
C <= replaced by Pot.Temp in aim_dyn2aim |
| 154 |
c DO K=1,NLEV |
| 155 |
c DO J=1,NGP |
| 156 |
c_FM SE(J,K)=CP*TG1(J,K)+PHIG1(J,K) |
| 157 |
c ENDDO |
| 158 |
c ENDDO |
| 159 |
|
| 160 |
C 1.2.c Relative humidity and saturation spec. humidity |
| 161 |
|
| 162 |
DO K=1,NLEV |
| 163 |
c_FM CALL SHTORH (1,NGP,TG1(1,K),PSG,SIG(K),QG1(1,K), |
| 164 |
c_FM & RH(1,K),QSAT(1,K)) |
| 165 |
CALL SHTORH (1,NGP,TG1(1,K),PSG_1,SIG(K),QG1(1,K), |
| 166 |
O RH(1,K,myThid),QSAT(1,K), |
| 167 |
I myThid) |
| 168 |
ENDDO |
| 169 |
|
| 170 |
C-- 2. Precipitation |
| 171 |
|
| 172 |
C 2.1 Deep convection |
| 173 |
|
| 174 |
c_FM CALL CONVMF (PSG,SE,QG1,QSAT, |
| 175 |
c_FM & ICLTOP,CBMF,PRECNV,TT_CNV,QT_CNV) |
| 176 |
CALL CONVMF (PSG,dpFac,SE,QG1,QSAT, |
| 177 |
O ICLTOP,CBMF(1,myThid),PRECNV(1,myThid), |
| 178 |
O TT_CNV(1,1,myThid),QT_CNV(1,1,myThid), |
| 179 |
I kGround,bi,bj,myThid) |
| 180 |
|
| 181 |
DO K=2,NLEV |
| 182 |
DO J=1,NGP |
| 183 |
TT_CNV(J,K,myThid)=TT_CNV(J,K,myThid)*RPS_1*GRDSCP(K) |
| 184 |
QT_CNV(J,K,myThid)=QT_CNV(J,K,myThid)*RPS_1*GRDSIG(K) |
| 185 |
ENDDO |
| 186 |
ENDDO |
| 187 |
|
| 188 |
C 2.2 Large-scale condensation |
| 189 |
|
| 190 |
c_FM CALL LSCOND (PSG,QG1,QSAT, |
| 191 |
c_FM & PRECLS,TT_LSC,QT_LSC) |
| 192 |
CALL LSCOND (PSG,dpFac,QG1,QSAT, |
| 193 |
O PRECLS(1,myThid),TT_LSC(1,1,myThid), |
| 194 |
O QT_LSC(1,1,myThid), |
| 195 |
I kGround,bi,bj,myThid) |
| 196 |
|
| 197 |
IF ( aim_energPrecip ) THEN |
| 198 |
C 2.3 Snow Precipitation (update TT_CNV & TT_LSC) |
| 199 |
CALL SNOW_PRECIP ( |
| 200 |
I PSG, dpFac, SE, ICLTOP, |
| 201 |
I PRECNV(1,myThid), QT_CNV(1,1,myThid), |
| 202 |
I PRECLS(1,myThid), QT_LSC(1,1,myThid), |
| 203 |
U TT_CNV(1,1,myThid), TT_LSC(1,1,myThid), |
| 204 |
O EnPrec(1,myThid), |
| 205 |
I kGround,bi,bj,myThid) |
| 206 |
ELSE |
| 207 |
DO J=1,NGP |
| 208 |
EnPrec(J,myThid) = 0. _d 0 |
| 209 |
ENDDO |
| 210 |
ENDIF |
| 211 |
|
| 212 |
C-- 3. Radiation (shortwave and longwave) and surface fluxes |
| 213 |
|
| 214 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
| 215 |
C --> from FORDATE (in SPEEDY) : |
| 216 |
|
| 217 |
C 3.0 Compute Incomming shortwave rad. (from FORDATE in SPEEDY) |
| 218 |
|
| 219 |
c_FM CALL SOL_OZ (SOLC,TYEAR) |
| 220 |
CALL SOL_OZ (SOLC,tYear, snLat(1,myThid), csLat(1,myThid), |
| 221 |
O FSOL, OZONE, OZUPP, ZENIT, STRATZ, |
| 222 |
I bi,bj,myThid) |
| 223 |
|
| 224 |
C <-- from FORDATE (in SPEEDY). |
| 225 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
| 226 |
|
| 227 |
C 3.1 Compute shortwave tendencies and initialize lw transmissivity |
| 228 |
|
| 229 |
C The sw radiation may be called at selected time steps |
| 230 |
LRADSW = .TRUE. |
| 231 |
|
| 232 |
IF (LRADSW) THEN |
| 233 |
|
| 234 |
c_FM CALL RADSW (PSG,QG1,RH,ALB1, |
| 235 |
c_FM & ICLTOP,CLOUDC,TSR,SSR,TT_RSW) |
| 236 |
ICLTOP(1) = 1 |
| 237 |
CALL RADSW (PSG,dpFac,QG1,RH(1,1,myThid),ALB1(1,0,myThid), |
| 238 |
I FSOL, OZONE, OZUPP, ZENIT, STRATZ, |
| 239 |
O TAU2, STRATC, |
| 240 |
O ICLTOP,CLOUDC(1,myThid), |
| 241 |
O TSR(1,myThid),SSR(1,0,myThid),TT_RSW(1,1,myThid), |
| 242 |
I kGround,bi,bj,myThid) |
| 243 |
|
| 244 |
DO J=1,NGP |
| 245 |
CLTOP(J,myThid)=SIGH(ICLTOP(J)-1)*PSG_1(J) |
| 246 |
ENDDO |
| 247 |
|
| 248 |
DO K=1,NLEV |
| 249 |
DO J=1,NGP |
| 250 |
TT_RSW(J,K,myThid)=TT_RSW(J,K,myThid)*RPS_1*GRDSCP(K) |
| 251 |
ENDDO |
| 252 |
ENDDO |
| 253 |
|
| 254 |
ENDIF |
| 255 |
|
| 256 |
C 3.2 Compute downward longwave fluxes |
| 257 |
|
| 258 |
c_FM CALL RADLW (-1,TG1,TS,ST4S, |
| 259 |
c_FM & OLR,SLR,TT_RLW) |
| 260 |
CALL RADLW (-1,TG1,TS(1,myThid),ST4S, |
| 261 |
& OZUPP, STRATC, TAU2, FLUX, ST4A, |
| 262 |
O OLR(1,myThid),SLR(1,0,myThid),TT_RLW(1,1,myThid), |
| 263 |
I kGround,bi,bj,myThid) |
| 264 |
|
| 265 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
| 266 |
C 3.3. Compute surface fluxes and land skin temperature |
| 267 |
|
| 268 |
c_FM CALL SUFLUX (PSG,UG1,VG1,TG1,QG1,RH,PHIG1, |
| 269 |
c_FM & PHIS0,FMASK1,STL1,SST1,SOILW1,SSR,SLR, |
| 270 |
c_FM & USTR,VSTR,SHF,EVAP,ST4S, |
| 271 |
c_FM & TS,TSKIN,U0,V0,T0,Q0) |
| 272 |
CALL SUFLUX_PREP( |
| 273 |
I PSG, TG1, QG1, RH(1,1,myThid), SE, VsurfSq, |
| 274 |
I WVSurf(1,myThid),csLat(1,myThid),fOrogr(1,myThid), |
| 275 |
I FMASK1(1,1,myThid),STL1(1,myThid),SST1(1,myThid), |
| 276 |
I sti1(1,myThid), SSR(1,0,myThid), |
| 277 |
O SPEED0(1,myThid),DRAG(1,0,myThid),DENVV, |
| 278 |
O dTskin,T1s,T0(1,myThid),Q0(1,myThid), |
| 279 |
I kGround,bi,bj,myThid) |
| 280 |
|
| 281 |
CALL SUFLUX_LAND ( |
| 282 |
I PSG, FMASK1(1,1,myThid), EMISFC, |
| 283 |
I STL1(1,myThid), dTskin, |
| 284 |
I SOILW1(1,myThid), SSR(1,1,myThid), SLR(1,0,myThid), |
| 285 |
I T1s, T0(1,myThid), Q0(1,myThid), DENVV, |
| 286 |
O SHF(1,1,myThid), EVAP(1,1,myThid), SLR(1,1,myThid), |
| 287 |
O Shf0, dShf, Evp0, dEvp, Slr0, dSlr, sFlx, |
| 288 |
O TS(1,myThid), TSKIN(1,myThid), |
| 289 |
I bi,bj,myThid) |
| 290 |
#ifdef ALLOW_LAND |
| 291 |
CALL AIM_LAND_IMPL( |
| 292 |
I FMASK1(1,1,myThid), dTskin, |
| 293 |
I Shf0, dShf, Evp0, dEvp, Slr0, dSlr, |
| 294 |
U sFlx, STL1(1,myThid), |
| 295 |
U SHF(1,1,myThid), EVAP(1,1,myThid), SLR(1,1,myThid), |
| 296 |
O dTsurf(1,1,myThid), |
| 297 |
I bi, bj, myTime, myIter, myThid) |
| 298 |
#endif /* ALLOW_LAND */ |
| 299 |
|
| 300 |
CALL SUFLUX_OCEAN( |
| 301 |
I PSG, FMASK1(1,2,myThid), |
| 302 |
I SST1(1,myThid), |
| 303 |
I SSR(1,2,myThid), SLR(1,0,myThid), |
| 304 |
O T1s, T0(1,myThid), Q0(1,myThid), DENVV, |
| 305 |
O SHF(1,2,myThid), EVAP(1,2,myThid), SLR(1,2,myThid), |
| 306 |
I bi,bj,myThid) |
| 307 |
|
| 308 |
IF ( aim_splitSIOsFx ) THEN |
| 309 |
CALL SUFLUX_SICE ( |
| 310 |
I PSG, FMASK1(1,3,myThid), EMISFC, |
| 311 |
I STI1(1,myThid), dTskin, |
| 312 |
I SSR(1,3,myThid), SLR(1,0,myThid), |
| 313 |
I T1s, T0(1,myThid), Q0(1,myThid), DENVV, |
| 314 |
O SHF(1,3,myThid), EVAP(1,3,myThid), SLR(1,3,myThid), |
| 315 |
O Shf0, dShf, Evp0, dEvp, Slr0, dSlr, sFlx, |
| 316 |
O TS(1,myThid), TSKIN(1,myThid), |
| 317 |
I bi,bj,myThid) |
| 318 |
#ifdef ALLOW_THSICE |
| 319 |
CALL AIM_SICE_IMPL( |
| 320 |
I FMASK1(1,3,myThid), SSR(1,3,myThid), sFlx, |
| 321 |
I Shf0, dShf, Evp0, dEvp, Slr0, dSlr, |
| 322 |
U STI1(1,myThid), |
| 323 |
U SHF(1,3,myThid), EVAP(1,3,myThid), SLR(1,3,myThid), |
| 324 |
O dTsurf(1,3,myThid), |
| 325 |
I bi, bj, myTime, myIter, myThid) |
| 326 |
#endif /* ALLOW_THSICE */ |
| 327 |
ELSE |
| 328 |
DO J=1,NGP |
| 329 |
SHF (J,3,myThid) = 0. _d 0 |
| 330 |
EVAP(J,3,myThid) = 0. _d 0 |
| 331 |
SLR (J,3,myThid) = 0. _d 0 |
| 332 |
ENDDO |
| 333 |
ENDIF |
| 334 |
|
| 335 |
CALL SUFLUX_POST( |
| 336 |
I FMASK1(1,1,myThid), EMISFC, |
| 337 |
I STL1(1,myThid), SST1(1,myThid), sti1(1,myThid), |
| 338 |
I dTskin, SLR(1,0,myThid), |
| 339 |
I T0(1,myThid), Q0(1,myThid), DENVV, |
| 340 |
U DRAG(1,0,myThid), SHF(1,0,myThid), |
| 341 |
U EVAP(1,0,myThid), SLR(1,1,myThid), |
| 342 |
O ST4S, TS(1,myThid), TSKIN(1,myThid), |
| 343 |
I bi,bj,myThid) |
| 344 |
|
| 345 |
#ifdef ALLOW_DIAGNOSTICS |
| 346 |
IF ( usePkgDiag ) THEN |
| 347 |
CALL DIAGNOSTICS_FILL( SLR(1,0,myThid), |
| 348 |
& 'DWNLWG ', 1, 1 , 3,bi,bj, myThid ) |
| 349 |
ENDIF |
| 350 |
#endif |
| 351 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
| 352 |
|
| 353 |
C 3.4 Compute upward longwave fluxes, convert them to tendencies |
| 354 |
C and add shortwave tendencies |
| 355 |
|
| 356 |
c_FM CALL RADLW (1,TG1,TS,ST4S, |
| 357 |
c_FM & OLR,SLR,TT_RLW) |
| 358 |
CALL RADLW (1,TG1,TS(1,myThid),ST4S, |
| 359 |
& OZUPP, STRATC, TAU2, FLUX, ST4A, |
| 360 |
O OLR(1,myThid),SLR(1,0,myThid),TT_RLW(1,1,myThid), |
| 361 |
I kGround,bi,bj,myThid) |
| 362 |
|
| 363 |
DO K=1,NLEV |
| 364 |
DO J=1,NGP |
| 365 |
TT_RLW(J,K,myThid)=TT_RLW(J,K,myThid)*RPS_1*GRDSCP(K) |
| 366 |
c_FM TTEND (J,K)=TTEND(J,K)+TT_RSW(J,K)+TT_RLW(J,K) |
| 367 |
ENDDO |
| 368 |
ENDDO |
| 369 |
|
| 370 |
#ifdef ALLOW_CLR_SKY_DIAG |
| 371 |
C 3.5 Compute clear-sky radiation (for diagnostics only) |
| 372 |
IF ( aim_clrSkyDiag ) THEN |
| 373 |
|
| 374 |
C 3.5.1 Compute shortwave tendencies |
| 375 |
dummyI(1) = -1 |
| 376 |
CALL RADSW (PSG,dpFac,QG1,RH(1,1,myThid),ALB1(1,0,myThid), |
| 377 |
I FSOL, OZONE, OZUPP, ZENIT, STRATZ, |
| 378 |
O TAU2, STRATC, |
| 379 |
O dummyI, dummyR, |
| 380 |
O TSWclr(1,myThid), SSWclr(1,myThid), TT_SWclr(1,1,myThid), |
| 381 |
I kGround,bi,bj,myThid) |
| 382 |
|
| 383 |
C 3.5.2 Compute downward longwave fluxes |
| 384 |
|
| 385 |
CALL RADLW (-1,TG1,TS(1,myThid),ST4S, |
| 386 |
& OZUPP, STRATC, TAU2, FLUX, ST4A, |
| 387 |
O OLWclr(1,myThid), SLWclr(1,myThid), TT_LWclr(1,1,myThid), |
| 388 |
I kGround,bi,bj,myThid) |
| 389 |
|
| 390 |
C 3.5.3 Compute upward longwave fluxes, convert them to tendencies |
| 391 |
|
| 392 |
CALL RADLW (1,TG1,TS(1,myThid),ST4S, |
| 393 |
& OZUPP, STRATC, TAU2, FLUX, ST4A, |
| 394 |
O OLWclr(1,myThid), SLWclr(1,myThid), TT_LWclr(1,1,myThid), |
| 395 |
I kGround,bi,bj,myThid) |
| 396 |
|
| 397 |
DO K=1,NLEV |
| 398 |
DO J=1,NGP |
| 399 |
TT_SWclr(J,K,myThid)=TT_SWclr(J,K,myThid)*RPS_1*GRDSCP(K) |
| 400 |
TT_LWclr(J,K,myThid)=TT_LWclr(J,K,myThid)*RPS_1*GRDSCP(K) |
| 401 |
ENDDO |
| 402 |
ENDDO |
| 403 |
|
| 404 |
ENDIF |
| 405 |
#endif /* ALLOW_CLR_SKY_DIAG */ |
| 406 |
|
| 407 |
C-- 4. PBL interactions with lower troposphere |
| 408 |
|
| 409 |
C 4.1 Vertical diffusion and shallow convection |
| 410 |
|
| 411 |
c_FM CALL VDIFSC (UG1,VG1,SE,RH,QG1,QSAT,PHIG1, |
| 412 |
c_FM & UT_PBL,VT_PBL,TT_PBL,QT_PBL) |
| 413 |
CALL VDIFSC (dpFac, SE, RH(1,1,myThid), QG1, QSAT, |
| 414 |
O TT_PBL(1,1,myThid),QT_PBL(1,1,myThid), |
| 415 |
I kGround,bi,bj,myThid) |
| 416 |
|
| 417 |
C 4.2 Add tendencies due to surface fluxes |
| 418 |
|
| 419 |
DO J=1,NGP |
| 420 |
c_FM UT_PBL(J,NLEV)=UT_PBL(J,NLEV)+USTR(J,3)*RPS(J)*GRDSIG(NLEV) |
| 421 |
c_FM VT_PBL(J,NLEV)=VT_PBL(J,NLEV)+VSTR(J,3)*RPS(J)*GRDSIG(NLEV) |
| 422 |
c_FM TT_PBL(J,NLEV)=TT_PBL(J,NLEV)+ SHF(J,3)*RPS(J)*GRDSCP(NLEV) |
| 423 |
c_FM QT_PBL(J,NLEV)=QT_PBL(J,NLEV)+EVAP(J,3)*RPS(J)*GRDSIG(NLEV) |
| 424 |
K = kGround(J) |
| 425 |
IF ( K.GT.0 ) THEN |
| 426 |
TT_PBL(J,K,myThid) = TT_PBL(J,K,myThid) |
| 427 |
& + SHF(J,0,myThid) *RPS_1*GRDSCP(K) |
| 428 |
QT_PBL(J,K,myThid) = QT_PBL(J,K,myThid) |
| 429 |
& + EVAP(J,0,myThid)*RPS_1*GRDSIG(K) |
| 430 |
ENDIF |
| 431 |
ENDDO |
| 432 |
|
| 433 |
c_FM DO K=1,NLEV |
| 434 |
c_FM DO J=1,NGP |
| 435 |
c_FM UTEND(J,K)=UTEND(J,K)+UT_PBL(J,K) |
| 436 |
c_FM VTEND(J,K)=VTEND(J,K)+VT_PBL(J,K) |
| 437 |
c_FM TTEND(J,K)=TTEND(J,K)+TT_PBL(J,K) |
| 438 |
c_FM QTEND(J,K)=QTEND(J,K)+QT_PBL(J,K) |
| 439 |
c_FM ENDDO |
| 440 |
c_FM ENDDO |
| 441 |
|
| 442 |
#endif /* ALLOW_AIM */ |
| 443 |
|
| 444 |
RETURN |
| 445 |
END |