| 1 |
czaja |
1.1 |
#include "CPP_OPTIONS.h" |
| 2 |
|
|
|
| 3 |
|
|
SUBROUTINE MPDRIVER (CURTIME, DELT) |
| 4 |
|
|
IMPLICIT NONE |
| 5 |
|
|
C-- |
| 6 |
|
|
C-- SUBROUTINE PDRIVER (CURTIME) |
| 7 |
|
|
C-- |
| 8 |
|
|
C-- Purpose: stand-alone driver for MIT physical parametrization routines |
| 9 |
|
|
C-- Input : CURTIME : current time (in seconds) |
| 10 |
|
|
C-- grid-point model fields in common block: PHYGR1 |
| 11 |
|
|
C-- forcing fields in common blocks : LSMASK, FORFIX, FORCIN |
| 12 |
|
|
C-- Output : Diagnosed convective variables in common block: MITPHYGR2 |
| 13 |
|
|
C-- Other diagnosed variables in common block: MITPHYGR3 |
| 14 |
|
|
C-- Physical param. tendencies in common block: MITPHYTEN |
| 15 |
|
|
C-- Surface and upper boundary fluxes in common block: MITFLUXES |
| 16 |
|
|
C-- |
| 17 |
|
|
C |
| 18 |
|
|
C============================================================================= |
| 19 |
|
|
C |
| 20 |
|
|
C ******************************************************************* |
| 21 |
|
|
C * * |
| 22 |
|
|
C * MIT Physics package * |
| 23 |
|
|
C * * |
| 24 |
|
|
C * Version 1.0 * |
| 25 |
|
|
C * (July 2000) * |
| 26 |
|
|
C * * |
| 27 |
|
|
C ******************************************************************* |
| 28 |
|
|
C |
| 29 |
|
|
C |
| 30 |
|
|
C Created: 07/2000 Sandrine Bony & Kerry Emanuel |
| 31 |
|
|
C Modification by Olivier Pauluis (07-2001 --- now) |
| 32 |
|
|
C |
| 33 |
|
|
C -- Important: |
| 34 |
|
|
C ------------- |
| 35 |
|
|
C |
| 36 |
|
|
C * this version (1.0) of the physics package is intended to be used over |
| 37 |
|
|
C a tropical aqua-planet (no sea ice, no distinction between land and |
| 38 |
|
|
C ocean surfaces, no specific cloudiness associated with mid-latitude |
| 39 |
|
|
C weather systems, etc.) |
| 40 |
|
|
C ... but nothing precludes to complete it later on ! |
| 41 |
|
|
C |
| 42 |
|
|
C * for a non-equatorial version of the model, don't forget to specify |
| 43 |
|
|
C the latitude (RLAT) seen by radiation. |
| 44 |
|
|
C |
| 45 |
|
|
C * if you change the vertical resolution, change it accordingly |
| 46 |
|
|
C in the file ../inc/dimensions.h (this is for the radiation code) |
| 47 |
|
|
C and also in convect43b.F (NLEV=...) |
| 48 |
|
|
C (not very satisfying...will have to be improved) |
| 49 |
|
|
C |
| 50 |
|
|
C |
| 51 |
|
|
C -- Among important differences with Franco Molteni's physics: |
| 52 |
|
|
C ------------------------------------------------------------- |
| 53 |
|
|
C |
| 54 |
|
|
C - opposite convention used for numbering the vertical levels |
| 55 |
|
|
C (here, the 1st atmospheric level is the nearest to the surface) |
| 56 |
|
|
C |
| 57 |
|
|
C - QG1 (specific humidity) is in kg/kg |
| 58 |
|
|
C |
| 59 |
|
|
C - all the physics package is called atmospheric column by |
| 60 |
|
|
C atmospheric column (note that the radiation code would |
| 61 |
|
|
C easily accept to work with 3D fields) |
| 62 |
|
|
C |
| 63 |
|
|
C |
| 64 |
|
|
C -- If you are looking for some documentation about the parameterizations |
| 65 |
|
|
C used in this package: |
| 66 |
|
|
C -------------------------------------------------------------------------- |
| 67 |
|
|
C |
| 68 |
|
|
C Bony S and K A Emanuel, 2001: A parameterization of the cloudiness |
| 69 |
|
|
C associated with cumulus convection; Evaluation using TOGA COARE |
| 70 |
|
|
C data. J. Atmos. Sci., accepted. |
| 71 |
|
|
C |
| 72 |
|
|
C Emanuel K A, 1991: A scheme for representing cumulus convection in |
| 73 |
|
|
C large-scale models. J. Atmos. Sci., 48, 2313-2335. |
| 74 |
|
|
C |
| 75 |
|
|
C Emanuel K A and M Zivkovic-Rothman, 1999: Development and evaluation |
| 76 |
|
|
C of a convection scheme for use in climate models. J. Atmos. Sci., |
| 77 |
|
|
C 56, 1766-1782 (see also http://www-paoc.mit.edu/~emanuel/home.html) |
| 78 |
|
|
C |
| 79 |
|
|
C Fouquart Y and B Bonnel, 1980: Computation of solar heating of the |
| 80 |
|
|
C Earth's atmosphere: a new parameterization. Beitr. Phys. Atmos., |
| 81 |
|
|
C 53, 35-62. |
| 82 |
|
|
C |
| 83 |
|
|
C Morcrette J-J, 1991: Radiation and cloud radiative properties in the |
| 84 |
|
|
C European Centre for Medium-Range Weather Forecasts forecasting |
| 85 |
|
|
C system. J. Geophys. Res., 96, 9121-9132. |
| 86 |
|
|
C |
| 87 |
|
|
C-- Please, kindly report any problem or suggestion to the authors: |
| 88 |
|
|
C |
| 89 |
|
|
C bony@wind.mit.edu, emanuel@texmex.mit.edu |
| 90 |
|
|
C |
| 91 |
|
|
C============================================================================= |
| 92 |
|
|
|
| 93 |
|
|
C Resolution parameters |
| 94 |
|
|
C |
| 95 |
|
|
#include "atparam.h" |
| 96 |
|
|
#include "atparam1.h" |
| 97 |
|
|
#include "MITPHYS_PARAMS.h" |
| 98 |
|
|
C |
| 99 |
|
|
INTEGER NLON, NLAT, NLEV, NGP |
| 100 |
|
|
PARAMETER ( NLON=IX, NLAT=IL, NLEV=KX, NGP=NLON*NLAT ) |
| 101 |
|
|
C |
| 102 |
|
|
C Constants + functions of sigma and latitude |
| 103 |
|
|
C |
| 104 |
|
|
#include "Lev_def.h" |
| 105 |
|
|
C |
| 106 |
|
|
C Model variables, tendencies and fluxes on gaussian grid |
| 107 |
|
|
C |
| 108 |
|
|
#include "com_mitphysvar.h" |
| 109 |
|
|
C |
| 110 |
|
|
C Diagnostics from the convection scheme: |
| 111 |
|
|
C |
| 112 |
|
|
#include "com_convect.h" |
| 113 |
|
|
C |
| 114 |
|
|
C Assign thermodynamical constants: |
| 115 |
|
|
C |
| 116 |
|
|
#include "thermo.h" |
| 117 |
|
|
C |
| 118 |
|
|
C Surface forcing fields (time-inv. or functions of seasonal cycle) |
| 119 |
|
|
C |
| 120 |
|
|
#include "com_forcing1.h" |
| 121 |
|
|
|
| 122 |
|
|
c Misc: |
| 123 |
|
|
|
| 124 |
|
|
INTEGER I,J,K |
| 125 |
|
|
_RL CURTIME |
| 126 |
|
|
_RL DELT, ES, AUX, RSS, RS(NLEV), QMIN |
| 127 |
|
|
PARAMETER (QMIN=1.e-12) ! minimum humidity when negative |
| 128 |
|
|
C PARAMETER (DELT=600.D0) ! timestep in seconds (temporary: deltaT better) |
| 129 |
|
|
C (not very satisfying...will have to be improved) |
| 130 |
|
|
_RL TS(NGP) |
| 131 |
|
|
|
| 132 |
|
|
_RL SX(NLEV),HX(NLEV),LV(NLEV),GZ(NLEV),TVY,TVX,CPN(NLEV) |
| 133 |
|
|
|
| 134 |
|
|
c Convection: |
| 135 |
|
|
|
| 136 |
|
|
INTEGER IFLAG, NTRA, NL |
| 137 |
|
|
PARAMETER (NTRA=1) ! number of tracors in convection |
| 138 |
|
|
_RL CBMF, PRECIP, WD, TPRIME, QPRIME |
| 139 |
|
|
_RL TCONV(NLEV), RCONV(NLEV), RVCONV(NLEV) |
| 140 |
|
|
_RL TMEMO(NLEV), RMEMO(NLEV) |
| 141 |
|
|
_RL UCONV_E(NLEV), UCONV_W(NLEV) |
| 142 |
|
|
_RL VCONV_S(NLEV), VCONV_N(NLEV) |
| 143 |
|
|
_RL UCONV(NLEV), VCONV(NLEV) |
| 144 |
|
|
_RL TRACONV(NLEV,NTRA) |
| 145 |
|
|
_RL QCONDC(NLEV), FTCONV(NLEV), FRCONV(NLEV) |
| 146 |
|
|
_RL FUCONV(NLEV), FVCONV(NLEV), FTRACONV(NLEV,NTRA) |
| 147 |
|
|
C modif omp |
| 148 |
|
|
_RL PLCL |
| 149 |
|
|
|
| 150 |
|
|
c Soil moisture: bucket model |
| 151 |
|
|
|
| 152 |
|
|
_RL LANDMUL(NGP), FACTOR, EBKT, PBKT |
| 153 |
|
|
|
| 154 |
|
|
c Cloudiness and large-scale condensation: |
| 155 |
|
|
|
| 156 |
|
|
_RL PRADJ, CLDT, CLDWP |
| 157 |
|
|
_RL CLDF(NLEV), CLDQ(NLEV), FTADJ(NLEV), FRADJ(NLEV) |
| 158 |
|
|
_RL CLDEMI(NLEV), CLDTAU(NLEV), CLDFICE(NLEV) |
| 159 |
|
|
_RL CLDFRAD(NLEV), CLDEMIRAD(NLEV), CLDTAURAD(NLEV) |
| 160 |
|
|
|
| 161 |
|
|
|
| 162 |
|
|
_RL CLDT_M, CLDWP_M |
| 163 |
|
|
_RL CLDF_M(NLEV), CLDQ_M(NLEV) |
| 164 |
|
|
_RL CLDEMI_M(NLEV), CLDTAU_M(NLEV), CLDFICE_M(NLEV) |
| 165 |
|
|
|
| 166 |
|
|
|
| 167 |
|
|
c Radiation: |
| 168 |
|
|
|
| 169 |
|
|
c modif omp: now included in MITPHYS_PARAMS.h |
| 170 |
|
|
C _RL RADFREQ ! frequency of radiation calls |
| 171 |
|
|
C PARAMETER (RADFREQ=6*3600.) ! here: every 6 hours |
| 172 |
|
|
|
| 173 |
|
|
|
| 174 |
|
|
_RL SCON, CO2, ALB! solar cst, CO2 conc, sfc albedo |
| 175 |
|
|
PARAMETER (SCON=1370.0, CO2=330.0) !units: W/m2, ppm |
| 176 |
|
|
c PARAMETER (ALB=0.07) !units: fraction |
| 177 |
|
|
PARAMETER (ALB=0.10) !units: fraction |
| 178 |
|
|
|
| 179 |
|
|
C REPLACED by a logical DARAD in MITPHYS_PARAMS.h |
| 180 |
|
|
C CHARACTER*1 DARAD ! diurnally averaged radiation? |
| 181 |
|
|
C PARAMETER (DARAD='y') |
| 182 |
|
|
|
| 183 |
|
|
_RL RC0(NGP,NLEV) ! specified radiative heating rate |
| 184 |
|
|
_RL RCRF0(NLEV) ! specified net cld radiative forcing |
| 185 |
|
|
|
| 186 |
|
|
C modif omp: these parameters are defined in the MITPHYS namelist |
| 187 |
|
|
|
| 188 |
|
|
C LOGICAL RADINT, CRFINT, CLEARSKY |
| 189 |
|
|
C PARAMETER (RADINT=.TRUE.) ! TRUE=interactive radiation |
| 190 |
|
|
C PARAMETER (CRFINT=.TRUE.)! TRUE=interactive cld rad forcing |
| 191 |
|
|
C PARAMETER (CLEARSKY=.FALSE.)! TRUE=ignore cld-rad interactions |
| 192 |
|
|
C PARAMETER (RADINT=.FALSE.) ! TRUE=interactive radiation |
| 193 |
|
|
C PARAMETER (CRFINT=.FALSE.)! TRUE=interactive cld rad forcing |
| 194 |
|
|
C PARAMETER (CLEARSKY=.TRUE.)! TRUE=ignore cld-rad interactions |
| 195 |
|
|
|
| 196 |
|
|
INTEGER julien |
| 197 |
|
|
_RL rjulien |
| 198 |
|
|
|
| 199 |
|
|
_RL zlongi, dist, rmu0, fract, TSRAD, TIMEU, gmtime |
| 200 |
|
|
_RL radsol, albsol, albpla, RLON, RLAT, normalis |
| 201 |
|
|
_RL O3(NLEV), O3RAD(NLEV) |
| 202 |
|
|
_RL topsw, toplw, solsw, sollw |
| 203 |
|
|
_RL topsw0, toplw0, solsw0, sollw0, inso |
| 204 |
|
|
_RL heat(NLEV), heat0(NLEV), cool(NLEV), cool0(NLEV) |
| 205 |
|
|
_RL RADTIME |
| 206 |
|
|
SAVE RADTIME |
| 207 |
|
|
|
| 208 |
|
|
|
| 209 |
|
|
|
| 210 |
|
|
LOGICAL FirstCall |
| 211 |
|
|
DATA FirstCall /.TRUE./ |
| 212 |
|
|
SAVE FirstCall |
| 213 |
|
|
|
| 214 |
|
|
c Surface fluxes: |
| 215 |
|
|
|
| 216 |
|
|
C modif omp: these parameters are defined in the MITPHYS namelist |
| 217 |
|
|
|
| 218 |
|
|
C _RL CD ! drag coeff and sfc evap potential |
| 219 |
|
|
C PARAMETER (CD=1.2D-3) |
| 220 |
|
|
|
| 221 |
|
|
C _RL US0,VS0,WS0 ! mean and min sfc winds |
| 222 |
|
|
C PARAMETER (US0= 0.0,VS0=0.0,WS0=4.0) |
| 223 |
|
|
_RL EFRAC |
| 224 |
|
|
PARAMETER (EFRAC = 1.0) |
| 225 |
|
|
|
| 226 |
|
|
_RL US2,VS2,VSURF,VSPRIME,TC,ALV |
| 227 |
|
|
_RL TSA,PG,ROWS,DPH1I,FTSURF,FRSURF,SH,LH |
| 228 |
|
|
|
| 229 |
|
|
_RL SST_TEND, STL_TEND |
| 230 |
|
|
|
| 231 |
|
|
_RL DUMMY |
| 232 |
|
|
|
| 233 |
|
|
C modif omp: these parameters are defined in the MITPHYS namelist |
| 234 |
|
|
C OMP 07-18-01 |
| 235 |
|
|
C LOG_CORRECT: correction factor for wind distribution in the PBL. |
| 236 |
|
|
C Defined as the ratio of the 10m wind to the wind at the |
| 237 |
|
|
C lowest model level |
| 238 |
|
|
C LOG_CORRECT = 1: wind uniform in the lowest level |
| 239 |
|
|
C LOG_CORRECT = 2/3: logarithmic profile between the surface to 100m, with a |
| 240 |
|
|
C surfcae roughness ~ 10cm. |
| 241 |
|
|
|
| 242 |
|
|
C _RL LOG_CORRECT |
| 243 |
|
|
C PARAMETER ( LOG_CORRECT = 1.0 ) |
| 244 |
|
|
C PARAMETER ( LOG_CORRECT = 0.6666666666 ) |
| 245 |
|
|
|
| 246 |
|
|
|
| 247 |
|
|
|
| 248 |
|
|
C OMP: LOW LEVEL MIXING: |
| 249 |
|
|
|
| 250 |
|
|
C modif omp: these parameters are defined in the MITPHYS namelist |
| 251 |
|
|
C INTEGER K_PBL |
| 252 |
|
|
C PARAMETER (K_PBL = 8 ) |
| 253 |
|
|
C LOGICAL PBL_DIFF |
| 254 |
|
|
C PARAMETER (PBL_DIFF = .FALSE.) |
| 255 |
|
|
|
| 256 |
|
|
_RL U_PBLW, U_PBLE, V_PBLS, V_PBLN, PBL_INV |
| 257 |
|
|
_RL UW_FLUX(nlev), UE_FLUX(nlev), VN_FLUX(nlev),VS_FLUX(nlev) |
| 258 |
|
|
_RL DPI, VISC_PBL, DELTI_ADJ, DELTI_MIX |
| 259 |
|
|
_RL WIND_ADJ |
| 260 |
|
|
|
| 261 |
|
|
_RL FUSURF_W, FUSURF_E, FVSURF_S,FVSURF_N |
| 262 |
|
|
|
| 263 |
|
|
c Momentum drag: |
| 264 |
|
|
|
| 265 |
|
|
c _RL TAUM ! timescale for zonal wind relaxation |
| 266 |
|
|
c PARAMETER (TAUM=3.*86400.) ! 3 days |
| 267 |
|
|
|
| 268 |
|
|
_RL UMEAN, VMEAN ! specified mean barotropic flow |
| 269 |
|
|
PARAMETER (UMEAN=0.0, VMEAN=0.) ! for drag only |
| 270 |
|
|
|
| 271 |
|
|
C modif omp: these parameters are defined in the MITPHYS namelist |
| 272 |
|
|
C _RL CDM ! drag coeff for sfc flux of momentum |
| 273 |
|
|
C PARAMETER (CDM=1.2d-3) |
| 274 |
|
|
|
| 275 |
|
|
c _RL UZON(NLEV) |
| 276 |
|
|
|
| 277 |
|
|
C Atmospheric pressure levels used by the physics package: |
| 278 |
|
|
C PPLAY (mb): pressure surfaces where T, Q are computed |
| 279 |
|
|
C PAPRS (mb): pressure surfaces at the interface between layers |
| 280 |
|
|
C PPLAY1 and PAPRS1: same as PPLAY and PAPRS but in Pa |
| 281 |
|
|
C (should be improved later...use pSurfs instead) |
| 282 |
|
|
|
| 283 |
|
|
_RL DP, PPLAY(NLEV), PAPRS(NLEV+1) |
| 284 |
|
|
_RL PPLAY1(NLEV), PAPRS1(NLEV+1) |
| 285 |
|
|
|
| 286 |
|
|
c 5levels DATA PPLAY / 950.0, 775.0, 500.0, 250.0, 75.0 / |
| 287 |
|
|
c 5levels DATA PAPRS / 1000.0, 900.0, 650.0, 350.0, 150.0, 0.0 / |
| 288 |
|
|
c 5levels DATA O3 / 0.0, 0.0, 0.0, 0.0, 0.0 / |
| 289 |
|
|
|
| 290 |
|
|
DATA O3 / 0.048, 0.049, 0.051, 0.052, 0.053, 0.054, 0.056, |
| 291 |
|
|
: 0.056, 0.057, 0.058, 0.059, 0.059, 0.060, 0.060, |
| 292 |
|
|
: 0.061, 0.062, 0.063, 0.064, 0.066, 0.068, 0.069, |
| 293 |
|
|
: 0.072, 0.073, 0.075, 0.077, 0.081, 0.085, 0.090, |
| 294 |
|
|
: 0.096, 0.106, 0.117, 0.135, 0.153, 0.175, 0.202, |
| 295 |
|
|
: 0.243, 0.405, 1.000, 3.700, 10.124 / |
| 296 |
|
|
|
| 297 |
|
|
c mean CRF profile derived for SST=27C, U*=2m/s, U0=-5m/s, 360x40, 180E: |
| 298 |
|
|
DATA RCRF0 / 0.152041972, 0.183760509, 0.167694584, 0.16433309, |
| 299 |
|
|
: 0.16215764, 0.161808997, 0.163289174, 0.166284353, |
| 300 |
|
|
: 0.170786828, 0.176764682, 0.1845745, 0.19467622, |
| 301 |
|
|
: 0.201630697, 0.209879801, 0.223531589, 0.245427981, |
| 302 |
|
|
: 0.270941138, 0.301004857, 0.324049205, 0.340905219, |
| 303 |
|
|
: 0.360249668, 0.389321774, 0.412838638, 0.449643821, |
| 304 |
|
|
: 0.483938843, 0.525295079, 0.666303575, 0.935836792, |
| 305 |
|
|
: 1.25989616, 1.19505048, 1.40494013, 1.28129566, |
| 306 |
|
|
: -0.570507288, -0.167021349, -0.00548044546, 0.129761115, |
| 307 |
|
|
: -0.0882121176, -0.0795640424, -0.134504586, 0.0340689607 / |
| 308 |
|
|
|
| 309 |
|
|
C ========================================================================= |
| 310 |
|
|
C |
| 311 |
|
|
C Loop over atmospheric columns starts here: |
| 312 |
|
|
C |
| 313 |
|
|
C ========================================================================= |
| 314 |
|
|
|
| 315 |
|
|
CC (acz) check for SST |
| 316 |
|
|
CC write(6,*) 'beginning of mit_phydriver: SST1=',SST1(1) |
| 317 |
|
|
|
| 318 |
|
|
IF (FirstCall) THEN |
| 319 |
|
|
DO J = 1,NGP |
| 320 |
|
|
DO K = 1 , NLEV |
| 321 |
|
|
CLDF_MEAN(J,K) = 0.0 |
| 322 |
|
|
CLDQ_MEAN(J,K) = 0.0 |
| 323 |
|
|
END DO |
| 324 |
|
|
END DO |
| 325 |
|
|
END IF |
| 326 |
|
|
|
| 327 |
|
|
C note: using 1.0/DELT potentially unstable because of the |
| 328 |
|
|
C Adams-Bashford time-stepping. CAN be put to 1 if the physics is |
| 329 |
|
|
C taken out of the Adams-Bashford... |
| 330 |
|
|
|
| 331 |
|
|
|
| 332 |
|
|
IF (CONV_ADJ) THEN |
| 333 |
|
|
DELTI_ADJ = 1.0/ DELT |
| 334 |
|
|
WIND_ADJ = 0.6 |
| 335 |
|
|
ELSE |
| 336 |
|
|
DELTI_ADJ = 1.0/ DELT |
| 337 |
|
|
WIND_ADJ = 0.0 |
| 338 |
|
|
END IF |
| 339 |
|
|
DELTI_MIX = 0.6 / DELT |
| 340 |
|
|
|
| 341 |
|
|
|
| 342 |
|
|
|
| 343 |
|
|
RADTIME = RADTIME + DELT |
| 344 |
|
|
|
| 345 |
|
|
|
| 346 |
|
|
c -- pressure levels: |
| 347 |
|
|
|
| 348 |
|
|
DP = 1000./NLEV |
| 349 |
|
|
DO K = 1, NLEV |
| 350 |
|
|
PPLAY(K) = 1000. - (K-1)*DP |
| 351 |
|
|
IF(K.GT.1) PAPRS(K)=0.5*(PPLAY(K)+PPLAY(K-1)) |
| 352 |
|
|
ENDDO |
| 353 |
|
|
PAPRS(1) = 2.*PPLAY(1)-PAPRS(2) |
| 354 |
|
|
PAPRS(NLEV+1) = 2.*PAPRS(NLEV)-PAPRS(NLEV-1) |
| 355 |
|
|
PAPRS(NLEV+1) = MAX(0.1,PAPRS(NLEV+1)) |
| 356 |
|
|
|
| 357 |
|
|
c -- zonally-averaged zonal wind at each level: |
| 358 |
|
|
|
| 359 |
|
|
c DO K = 1, NLEV |
| 360 |
|
|
c UZON(K) = 0. |
| 361 |
|
|
c DO J = 1, NGP |
| 362 |
|
|
c UZON(K) = UZON(K) + UG1(J,K)/FLOAT(NGP) |
| 363 |
|
|
c ENDDO |
| 364 |
|
|
c ENDDO |
| 365 |
|
|
|
| 366 |
|
|
c -- loop over horizontal gridpoints: |
| 367 |
|
|
|
| 368 |
|
|
C Newtonian cooling rate |
| 369 |
|
|
|
| 370 |
|
|
IF (.NOT. RADINT ) THEN |
| 371 |
|
|
CALL NEWT_COOL(TG1,RC0) |
| 372 |
|
|
END IF |
| 373 |
|
|
|
| 374 |
|
|
|
| 375 |
|
|
DO 9999 J = 1, NGP |
| 376 |
|
|
|
| 377 |
|
|
c ----------------------------------------------------------------------- |
| 378 |
|
|
c 1. Preliminaries: |
| 379 |
|
|
c ----------------------------------------------------------------------- |
| 380 |
|
|
|
| 381 |
|
|
c -- check that humidities are not negative: |
| 382 |
|
|
DO K = 1, NLEV |
| 383 |
|
|
if (QG1(J,K).lt.0.0 ) then |
| 384 |
|
|
CC(acz) write(*,*) ' J, K, neg humidity: ',J, K,QG1(J,K) |
| 385 |
|
|
QG1(J,K) = MAX( QG1(J,K), QMIN ) |
| 386 |
|
|
endif |
| 387 |
|
|
ENDDO |
| 388 |
|
|
|
| 389 |
|
|
c -- initialize tendencies (MITPHYTEN common): |
| 390 |
|
|
|
| 391 |
|
|
DO K = 1, NLEV |
| 392 |
|
|
TT_CNV(J,K) = 0.0 |
| 393 |
|
|
QT_CNV(J,K) = 0.0 |
| 394 |
|
|
UT_CNV(J,K) = 0.0 |
| 395 |
|
|
VT_CNV(J,K) = 0.0 |
| 396 |
|
|
TT_LSC(J,K) = 0.0 |
| 397 |
|
|
QT_LSC(J,K) = 0.0 |
| 398 |
|
|
TT_PBL(J,K) = 0.0 |
| 399 |
|
|
QT_PBL(J,K) = 0.0 |
| 400 |
|
|
UT_PBL_E(J,K) = 0.0 |
| 401 |
|
|
UT_PBL_W(J,K) = 0.0 |
| 402 |
|
|
VT_PBL_S(J,K) = 0.0 |
| 403 |
|
|
VT_PBL_N(J,K) = 0.0 |
| 404 |
|
|
ENDDO |
| 405 |
|
|
PRECNV(J) = 0. |
| 406 |
|
|
PRECLS(J) = 0. |
| 407 |
|
|
LHF(J) = 0. |
| 408 |
|
|
SHF(J) = 0. |
| 409 |
|
|
|
| 410 |
|
|
c -- surface pressure (mb): |
| 411 |
|
|
|
| 412 |
|
|
PG = 0.01 * PSG1(J) |
| 413 |
|
|
|
| 414 |
|
|
c -- surface temperature (K): |
| 415 |
|
|
|
| 416 |
|
|
TS(J) =SST1(J)+FMASK1(J)*(STL1(J)-SST1(J)) |
| 417 |
|
|
|
| 418 |
|
|
CC (acz) check for SST |
| 419 |
|
|
CC write(6,*) 'start of phy_driver: J, FMASK1(J)=',J, FMASK1(J) |
| 420 |
|
|
CC if( J .EQ. NGP) THEN |
| 421 |
|
|
CC write(6,*) 'start of phy_driver: TS, SST1, STL1=',TS(NGP), SST1(NGP),STL1(NGP) |
| 422 |
|
|
CC end if |
| 423 |
|
|
|
| 424 |
|
|
c -- compute the land multiplicator factor for evaporation |
| 425 |
|
|
c (acz) adapted from (nprive) - Delworth and Manabe (1988) |
| 426 |
|
|
|
| 427 |
|
|
if (BUCKET(J) .GE. 0.75*BKT0) then |
| 428 |
|
|
FACTOR = 1 |
| 429 |
|
|
else |
| 430 |
|
|
FACTOR = BUCKET(J)/(0.75*BKT0) |
| 431 |
|
|
endif |
| 432 |
|
|
|
| 433 |
|
|
LANDMUL(J) = 1 + FMASK1(J) * (FACTOR-1) |
| 434 |
|
|
|
| 435 |
|
|
c -- compute saturation specific humidity: |
| 436 |
|
|
|
| 437 |
|
|
TC=TS(J)-273.15 |
| 438 |
|
|
ES=6.112*EXP(17.67*TC/(243.5+TC)) |
| 439 |
|
|
RSS=0.98*EPS*ES/(PG-(1.-EPS)*ES) |
| 440 |
|
|
|
| 441 |
|
|
DO K = 1, NLEV |
| 442 |
|
|
TC=TG1(J,K)-273.15 |
| 443 |
|
|
IF(TC.GE.0.0)THEN |
| 444 |
|
|
ES=6.112*EXP(17.67*TC/(243.5+TC)) |
| 445 |
|
|
ELSE |
| 446 |
|
|
ES=EXP(23.33086-6111.72784/TG1(J,K)+0.15215*LOG(TG1(J,K))) |
| 447 |
|
|
ENDIF |
| 448 |
|
|
ES=MIN(ES,PPLAY(K)) |
| 449 |
|
|
RS(K)=EPS*ES/(PPLAY(K)-(1.-EPS)*ES) |
| 450 |
|
|
ENDDO |
| 451 |
|
|
|
| 452 |
|
|
c -- eventually, prescribe the radiative cooling rate to a cst value: |
| 453 |
|
|
|
| 454 |
|
|
C omp: Prescribed cooling has been replaced by a newtonian cooling |
| 455 |
|
|
|
| 456 |
|
|
IF ( .NOT. RADINT ) THEN |
| 457 |
|
|
DO K = 1, NLEV |
| 458 |
|
|
C RC1(J,K) = - RC0(J,K)! net rad heating (units = K/day) |
| 459 |
|
|
RC1(J,K) = RC0(J,K) * 24.d0 * 3600.d0 ! net rad heating (units = K/day) |
| 460 |
|
|
ENDDO |
| 461 |
|
|
|
| 462 |
|
|
|
| 463 |
|
|
ENDIF |
| 464 |
|
|
|
| 465 |
|
|
c ----------------------------------------------------------------------- |
| 466 |
|
|
c 2. Convection subroutine |
| 467 |
|
|
c |
| 468 |
|
|
c CBMF : cloud-base mass flux (its value must be "remembered" by the |
| 469 |
|
|
c calling program between calls to the convection subroutine). |
| 470 |
|
|
c |
| 471 |
|
|
c QCONDC: in-cloud mixing ratio of condensed water produced by cumulus |
| 472 |
|
|
c convection [kg/kg], output of the convection scheme used in |
| 473 |
|
|
c the cloud parameterization. |
| 474 |
|
|
c |
| 475 |
|
|
c WD, TPRIME, QPRIME: convective downdraft velocity scale [m/s], |
| 476 |
|
|
c temperature perturbation scale [K] and specific humidity |
| 477 |
|
|
c perturbation scale [kg/kg] that will be used in surface |
| 478 |
|
|
c flux parameterizations. |
| 479 |
|
|
c ----------------------------------------------------------------------- |
| 480 |
|
|
|
| 481 |
|
|
c cloud-base mass flux: |
| 482 |
|
|
|
| 483 |
|
|
CBMF = CBMFG1(J) |
| 484 |
|
|
PLCL = 0 |
| 485 |
|
|
|
| 486 |
|
|
c NL: the maximum number of levels to which convection can penetrate, plus 1 |
| 487 |
|
|
c (NL MUST be less than or equal to NLEV-1) |
| 488 |
|
|
|
| 489 |
|
|
NL = 1 |
| 490 |
|
|
DO K = 1, NLEV |
| 491 |
|
|
IF(PPLAY(K).GE.78.0) NL = MAX(NL,K) |
| 492 |
|
|
ENDDO |
| 493 |
|
|
|
| 494 |
|
|
c T and Q profiles seen by the convection (and eventually altered by |
| 495 |
|
|
c the subroutine is dry convective adjustment occurs): |
| 496 |
|
|
|
| 497 |
|
|
DO K = 1, NLEV |
| 498 |
|
|
TCONV(K) = TG1(J,K) ! TCONV in K |
| 499 |
|
|
RCONV(K) = QG1(J,K) ! RCONV in kg/kg |
| 500 |
|
|
C OMP: Current implementation of the momentum transport consider the mean |
| 501 |
|
|
C velocity at the center of the cell. Future implementatioin may |
| 502 |
|
|
C separate between UGW, VGW, VGS, VGN. this would require modifying |
| 503 |
|
|
C convect43 to handle more than 2 velocity. |
| 504 |
|
|
|
| 505 |
|
|
UCONV(K) = 0.5 * (UGW(J,K) + UGE(J,K)) |
| 506 |
|
|
VCONV(K) = 0.5 * (VGS(J,K) + VGN(J,K)) |
| 507 |
|
|
|
| 508 |
|
|
UCONV_W(K) = UGW(J,K) |
| 509 |
|
|
UCONV_E(K) = UGE(J,K) |
| 510 |
|
|
VCONV_S(K) = VGS(J,K) |
| 511 |
|
|
VCONV_N(K) = VGN(J,K) |
| 512 |
|
|
DO I = 1, NTRA |
| 513 |
|
|
TRACONV(K,I) = 0.0 ! no tracors here |
| 514 |
|
|
ENDDO |
| 515 |
|
|
ENDDO |
| 516 |
|
|
|
| 517 |
|
|
c "official" version 4.3b of CONVECT plus diagnostics required for cld parameterization: |
| 518 |
|
|
|
| 519 |
|
|
|
| 520 |
|
|
C write(*,*) '--- convect: I2 = ', J, 'CBMF =', CBMF |
| 521 |
|
|
|
| 522 |
|
|
CALL CONVECT43C(TCONV, RCONV, RS, UCONV, VCONV, |
| 523 |
|
|
: TRACONV, |
| 524 |
|
|
: PPLAY, PAPRS, NLEV, NL, NTRA, DELT, |
| 525 |
|
|
: IFLAG, FTCONV, FRCONV, FUCONV, FVCONV, |
| 526 |
|
|
: FTRACONV, PRECIP, WD, TPRIME, QPRIME, QCONDC, |
| 527 |
|
|
: CBMF, PLCL ) |
| 528 |
|
|
C write(*,*) 'after convect, CBMF =', CBMF |
| 529 |
|
|
|
| 530 |
|
|
C if necessary, write to error file |
| 531 |
|
|
|
| 532 |
|
|
|
| 533 |
|
|
IF (IFLAG.EQ.4) THEN |
| 534 |
|
|
WRITE(*,120) CURTIME |
| 535 |
|
|
120 FORMAT(5X,'CFL condition violated at TIME ',e15.7) |
| 536 |
|
|
WRITE(*,*) 'LAT: ', LAT_G(J), 'LON: ', LON_G(J) |
| 537 |
|
|
ENDIF |
| 538 |
|
|
|
| 539 |
|
|
c T and Q tendencies associated with convection: |
| 540 |
|
|
|
| 541 |
|
|
|
| 542 |
|
|
|
| 543 |
|
|
DO K = 1, NL |
| 544 |
|
|
TT_CNV(J,K) = FTCONV(K) ! K/s |
| 545 |
|
|
QT_CNV(J,K) = FRCONV(K) ! kg/kg/s |
| 546 |
|
|
UT_CNV(J,K) = FUCONV(K) ! m/s^2 |
| 547 |
|
|
VT_CNV(J,K) = FVCONV(K) ! m/s^2 |
| 548 |
|
|
c |
| 549 |
|
|
c note that we do not update the wind, here |
| 550 |
|
|
c (should be done in principle if the dry adjustment |
| 551 |
|
|
c is called and if the wind-tendencies due to the |
| 552 |
|
|
c convection are to be taken into account). |
| 553 |
|
|
|
| 554 |
|
|
c modif omp: pass the convective adjustment as a time tendecy |
| 555 |
|
|
TT_ADJ(J,K) = DELTI_ADJ * (TCONV(K) - TG1(J,K)) |
| 556 |
|
|
QT_ADJ(J,K) = DELTI_ADJ * (RCONV(K) - QG1(J,K)) |
| 557 |
|
|
UT_ADJ(J,K) = WIND_ADJ * DELTI_ADJ * (UCONV(K) |
| 558 |
|
|
& - 0.5 * (UCONV_W(K) + UCONV_E(K))) |
| 559 |
|
|
VT_ADJ(J,K) = WIND_ADJ * DELTI_ADJ * (VCONV(K) |
| 560 |
|
|
& - 0.5 * (VCONV_S(K) + VCONV_N(K))) |
| 561 |
|
|
TG1(J,K) = TCONV(K) |
| 562 |
|
|
QG1(J,K) = RCONV(K) ! QG1 in kg/kg |
| 563 |
|
|
C UGW(J,K) = UCONV_W(K) |
| 564 |
|
|
C UGE(J,K) = UCONV_E(K) |
| 565 |
|
|
C VGS(J,K) = VCONV_S(K) |
| 566 |
|
|
C VGN(J,K) = VCONV_N(K) |
| 567 |
|
|
END DO |
| 568 |
|
|
|
| 569 |
|
|
|
| 570 |
|
|
|
| 571 |
|
|
c update the cloud-base mass flux: |
| 572 |
|
|
|
| 573 |
|
|
CBMFG1(J) = CBMF |
| 574 |
|
|
PLCLG1(J) = PLCL |
| 575 |
|
|
|
| 576 |
|
|
c fill-in the MITPHYGR2 common: |
| 577 |
|
|
|
| 578 |
|
|
DO K = 1, NL |
| 579 |
|
|
MUP1(J,K) = MUP(K) |
| 580 |
|
|
MDOWN1(J,K) = MDOWN(K) |
| 581 |
|
|
MP1(J,K) = MP0(K) |
| 582 |
|
|
ENT1(J,K) = ENT(K) |
| 583 |
|
|
DET1(J,K) = DET(K) |
| 584 |
|
|
ENDDO |
| 585 |
|
|
INBG1(J) = INB |
| 586 |
|
|
ICBG1(J) = ICB |
| 587 |
|
|
|
| 588 |
|
|
c ------------------------------------------------------------------------- |
| 589 |
|
|
c 3. Cloudiness parameterization |
| 590 |
|
|
c |
| 591 |
|
|
c (the subroutine predicts the cloud fraction and cloud water associated |
| 592 |
|
|
c with cumulus convection, and the precipitation and the cloud water |
| 593 |
|
|
c associated with large-scale super-saturation) |
| 594 |
|
|
c |
| 595 |
|
|
c CLDF: cloud fraction [0-1] (will be used in radiation) |
| 596 |
|
|
c |
| 597 |
|
|
c CLDQ: in-cloud mixing ratio of condensed (liquid+solid) water [kg/kg] |
| 598 |
|
|
c resulting from cumulus convection + large-scale condensation |
| 599 |
|
|
c (will be used to compute cloud optical properties). |
| 600 |
|
|
c ------------------------------------------------------------------------- |
| 601 |
|
|
|
| 602 |
|
|
|
| 603 |
|
|
C modif omp: does not compute the cloudfraction if CLEARSKY is .TRUE. |
| 604 |
|
|
|
| 605 |
|
|
IF (CLEARSKY) THEN |
| 606 |
|
|
DO K = 1,NL |
| 607 |
|
|
QCONDC(K) = 0. |
| 608 |
|
|
END DO |
| 609 |
|
|
END IF |
| 610 |
|
|
|
| 611 |
|
|
CALL CLOUDS_SUB_LS_40(NLEV,RCONV,RS,TCONV,PPLAY,PAPRS |
| 612 |
|
|
: ,DELT,QCONDC |
| 613 |
|
|
: ,CLDF,CLDQ,PRADJ,FTADJ,FRADJ) |
| 614 |
|
|
|
| 615 |
|
|
|
| 616 |
|
|
C modif omp. 12-30-01 (Some people do not take enough vacations...) |
| 617 |
|
|
C --> average the cloud over between the radiation calls. |
| 618 |
|
|
C --> average for the cloud fraction and total water. |
| 619 |
|
|
|
| 620 |
|
|
DO K = 1,NLEV |
| 621 |
|
|
CLDF_MEAN(J,K) = CLDF_MEAN(J,K) + CLDF(K) * DELT |
| 622 |
|
|
CLDQ_MEAN(J,K) = CLDQ_MEAN(J,K) + CLDF(K) * CLDQ(K) * DELT |
| 623 |
|
|
END DO |
| 624 |
|
|
|
| 625 |
|
|
c T and Q tendencies: |
| 626 |
|
|
|
| 627 |
|
|
DO K = 1, NLEV |
| 628 |
|
|
TT_LSC(J,K) = FTADJ(K) |
| 629 |
|
|
QT_LSC(J,K) = FRADJ(K) |
| 630 |
|
|
ENDDO |
| 631 |
|
|
|
| 632 |
|
|
c ----------------------------------------------------------------------- |
| 633 |
|
|
c 4. Cloud optical properties |
| 634 |
|
|
c |
| 635 |
|
|
c (interface between clouds and radiation). |
| 636 |
|
|
c |
| 637 |
|
|
c The following variables will be used in input of the radiation code: |
| 638 |
|
|
c |
| 639 |
|
|
c CLDF: cloud fraction [0-1] |
| 640 |
|
|
c CLDEMI: cloud longwave emissivity [0-1] |
| 641 |
|
|
c CLDTAU: cloud visible optical thickness |
| 642 |
|
|
c ----------------------------------------------------------------------- |
| 643 |
|
|
|
| 644 |
|
|
DO K = 1, NLEV |
| 645 |
|
|
PPLAY1(K) = PPLAY(K)*100. |
| 646 |
|
|
PAPRS1(K) = PAPRS(K)*100. |
| 647 |
|
|
ENDDO |
| 648 |
|
|
PAPRS1(NLEV+1) = PAPRS(NLEV+1)*100. |
| 649 |
|
|
|
| 650 |
|
|
IF ( RADINT ) |
| 651 |
|
|
: CALL OPTICAL(NLEV,TCONV,PAPRS1,PPLAY1,CLDF,CLDQ |
| 652 |
|
|
: ,CLDEMI,CLDTAU,CLDFICE,CLDT,CLDWP) |
| 653 |
|
|
|
| 654 |
|
|
c ----------------------------------------------------------------------- |
| 655 |
|
|
c 5. Radiation |
| 656 |
|
|
c |
| 657 |
|
|
c Important: to save some CPU time, radiation is not computed at every |
| 658 |
|
|
c timestep but every RADFREQ seconds. |
| 659 |
|
|
c ----------------------------------------------------------------------- |
| 660 |
|
|
|
| 661 |
|
|
IF ( RADINT ) THEN ! interactive radiation |
| 662 |
|
|
|
| 663 |
|
|
c If desired, call radiation scheme |
| 664 |
|
|
|
| 665 |
|
|
C IF ( CURTIME .LT. (1.5*DELT) .OR. |
| 666 |
|
|
C : RADTIME .GT. (RADFREQ-10.0) .OR. Firstcall ) THEN |
| 667 |
|
|
|
| 668 |
|
|
IF ( (RADTIME .GT. (RADFREQ-10.0)) .OR. Firstcall ) THEN |
| 669 |
|
|
|
| 670 |
|
|
IF (J .EQ. NGP) then |
| 671 |
|
|
write(*,*) 'Radiation call: time = ',CURTIME |
| 672 |
|
|
write(*,*) 'julien =', julien |
| 673 |
|
|
RADTIME=0.0 |
| 674 |
|
|
END IF |
| 675 |
|
|
|
| 676 |
|
|
|
| 677 |
|
|
C modif omp: mean cloud cover |
| 678 |
|
|
|
| 679 |
|
|
DO K = 1,NLEV |
| 680 |
|
|
CLDF_M(K) = CLDF_MEAN(J,K) / RADFREQ |
| 681 |
|
|
IF (CLDF_M(K) .GT. 0) THEN |
| 682 |
|
|
CLDQ_M(K) = CLDQ_MEAN(J,K) / RADFREQ / CLDF_M(K) |
| 683 |
|
|
ELSE |
| 684 |
|
|
CLDQ_M(K) = 0. |
| 685 |
|
|
END IF |
| 686 |
|
|
|
| 687 |
|
|
CLDF_MEAN(J,K) = 0.0 |
| 688 |
|
|
CLDQ_MEAN(J,K) = 0.0 |
| 689 |
|
|
END DO |
| 690 |
|
|
CALL OPTICAL(NLEV,TCONV,PAPRS1,PPLAY1,CLDF_M,CLDQ_M |
| 691 |
|
|
& ,CLDEMI_M,CLDTAU_M,CLDFICE_M,CLDT_M,CLDWP_M) |
| 692 |
|
|
|
| 693 |
|
|
c IF (DARAD.eq.'n'.or.DARAD.eq.'N') THEN |
| 694 |
|
|
c TIMEU=TIME0+MOD(CURTIME,86400) |
| 695 |
|
|
c ELSE |
| 696 |
|
|
c TIMEU=TIME0 |
| 697 |
|
|
c ENDIF |
| 698 |
|
|
|
| 699 |
|
|
C fixed time for radiation |
| 700 |
|
|
|
| 701 |
|
|
C TIMEU = 24. * 3600. * 31. * 28. * 20. ! current time in seconds |
| 702 |
|
|
TIMEU = rad_start_time ! current time in seconds |
| 703 |
|
|
|
| 704 |
|
|
C adjust time from starting time |
| 705 |
|
|
IF (RAD_TIME) THEN |
| 706 |
|
|
TIMEU = TIMEU +CURTIME ! current time in seconds |
| 707 |
|
|
END IF |
| 708 |
|
|
|
| 709 |
|
|
IF (RAD_LAT) THEN |
| 710 |
|
|
RLAT = LAT_G(J) ! latitude |
| 711 |
|
|
ELSE |
| 712 |
|
|
RLAT = 0. ! latitude (valid only for equatorial model...) |
| 713 |
|
|
END IF |
| 714 |
|
|
IF (RAD_LON) THEN |
| 715 |
|
|
RLON = LON_G(J) |
| 716 |
|
|
ELSE |
| 717 |
|
|
RLON = 0. ! longitude (here we want a uniform insolation) |
| 718 |
|
|
END IF |
| 719 |
|
|
c -- Earth-Sun distance: |
| 720 |
|
|
|
| 721 |
|
|
julien = INT(TIMEU)/(3600*24) + 1 |
| 722 |
|
|
|
| 723 |
|
|
c omp: Classic fortran bug - single precision real passed to a subroutine |
| 724 |
|
|
C requiring a doouble precision. |
| 725 |
|
|
C do the conversion independently of the precision of REAL... |
| 726 |
|
|
rjulien = julien |
| 727 |
|
|
|
| 728 |
|
|
C CALL ORBITE(FLOAT(julien),zlongi,dist) |
| 729 |
|
|
C CALL ORBITE(DFLOAT(julien),zlongi,dist) |
| 730 |
|
|
CALL ORBITE(rjulien,zlongi,dist) |
| 731 |
|
|
|
| 732 |
|
|
c -- solar zenith angle and surface albedo: |
| 733 |
|
|
|
| 734 |
|
|
C IF(DARAD.EQ.'y'.OR.DARAD.EQ.'Y')THEN ! no diurnal cycle |
| 735 |
|
|
IF( DARAD )THEN ! no diurnal cycle |
| 736 |
|
|
CALL ANGLE(zlongi,RLAT,fract,rmu0) |
| 737 |
|
|
C omp: same thing here. |
| 738 |
|
|
C CALL ALBOC(FLOAT(julien),RLAT,albsol) |
| 739 |
|
|
C CALL ALBOC(DFLOAT(julien),RLAT,albsol) |
| 740 |
|
|
CALL ALBOC(rjulien,RLAT,albsol) |
| 741 |
|
|
albsol = ALB ! only if you prefer to set it to a constant value |
| 742 |
|
|
ELSE |
| 743 |
|
|
gmtime = MOD(TIMEU,3600.*24.)/86400. - RADFREQ/2./86400. |
| 744 |
|
|
CALL ZENANG(zlongi,gmtime,RADFREQ,RLAT,RLON,rmu0,fract) |
| 745 |
|
|
CALL ALBOC_CD(rmu0,albsol) |
| 746 |
|
|
ENDIF |
| 747 |
|
|
|
| 748 |
|
|
c -- call the radiation subroutine |
| 749 |
|
|
|
| 750 |
|
|
TSRAD = TS(J) |
| 751 |
|
|
|
| 752 |
|
|
C modif omp: mean cloud cover |
| 753 |
|
|
|
| 754 |
|
|
DO K = 1, NLEV |
| 755 |
|
|
C instantaneous value of the cloud cover |
| 756 |
|
|
RVCONV(K) = RCONV(K) - CLDQ(K)*CLDF(K) |
| 757 |
|
|
C Mean value |
| 758 |
|
|
C RVCONV(K) = RCONV(K) - CLDQ_M(K)*CLDF_M(K) |
| 759 |
|
|
|
| 760 |
|
|
RVCONV(K) = MAX( MIN(RVCONV(K),RCONV(K)) , 0.0 ) |
| 761 |
|
|
O3RAD(K) = O3(K) * 1.0E-6 |
| 762 |
|
|
|
| 763 |
|
|
IF (CLEARSKY) THEN |
| 764 |
|
|
CLDFRAD(K) = 0. |
| 765 |
|
|
CLDEMIRAD(K) = 0. |
| 766 |
|
|
CLDTAURAD(K) = 0. |
| 767 |
|
|
ELSE |
| 768 |
|
|
C instantaneous value of the cloud cover |
| 769 |
|
|
CLDFRAD(K) = CLDF(K) |
| 770 |
|
|
CLDEMIRAD(K) = CLDEMI(K) |
| 771 |
|
|
CLDTAURAD(K) = CLDTAU(K) |
| 772 |
|
|
C mean value for the cloud cover |
| 773 |
|
|
C CLDFRAD(K) = CLDF_M(K) |
| 774 |
|
|
C CLDEMIRAD(K) = CLDEMI_M(K) |
| 775 |
|
|
C CLDTAURAD(K) = CLDTAU_M(K) |
| 776 |
|
|
ENDIF |
| 777 |
|
|
|
| 778 |
|
|
ENDDO |
| 779 |
|
|
|
| 780 |
|
|
CALL RADLWSW |
| 781 |
|
|
i (dist, rmu0, fract, CO2, SCON, |
| 782 |
|
|
i PAPRS1, PPLAY1,TSRAD,albsol,TCONV,RVCONV,O3RAD, |
| 783 |
|
|
i CLDFRAD, CLDEMIRAD, CLDTAURAD, |
| 784 |
|
|
o heat,heat0,cool,cool0,radsol,albpla, |
| 785 |
|
|
o topsw,toplw,solsw,sollw, |
| 786 |
|
|
o topsw0,toplw0,solsw0,sollw0,inso) |
| 787 |
|
|
|
| 788 |
|
|
DO K = 1, NLEV |
| 789 |
|
|
|
| 790 |
|
|
c if thermo constants used in radiation are different than those |
| 791 |
|
|
c used in the calling program, renormalize the cooling rates: |
| 792 |
|
|
|
| 793 |
|
|
normalis = 1004.709/(CPD*(1.-RCONV(K))+CPV*RCONV(K)) |
| 794 |
|
|
: *G/9.80665 |
| 795 |
|
|
cool(K) = cool(K)*normalis |
| 796 |
|
|
heat(K) = heat(K)*normalis |
| 797 |
|
|
cool0(K) = cool0(K)*normalis |
| 798 |
|
|
heat0(K) = heat0(K)*normalis |
| 799 |
|
|
|
| 800 |
|
|
ENDDO |
| 801 |
|
|
|
| 802 |
|
|
TLW(J) = toplw |
| 803 |
|
|
TSW(J) = topsw |
| 804 |
|
|
TLW0(J) = toplw0 |
| 805 |
|
|
TSW0(J) = topsw0 |
| 806 |
|
|
SLW(J) = sollw |
| 807 |
|
|
SSW(J) = solsw |
| 808 |
|
|
SLW0(J) = sollw0 |
| 809 |
|
|
SSW0(J) = solsw0 |
| 810 |
|
|
SINS(J) = inso |
| 811 |
|
|
|
| 812 |
|
|
c T and Q tendencies associated with radiation: |
| 813 |
|
|
|
| 814 |
|
|
IF ( CRFINT ) THEN |
| 815 |
|
|
|
| 816 |
|
|
DO K = 1, NLEV |
| 817 |
|
|
TT_RLW(J,K) = -cool(K)/(24*3600.) |
| 818 |
|
|
TT_RSW(J,K) = heat(K)/(24*3600.) |
| 819 |
|
|
TT_RLW0(J,K) = -cool0(K)/(24*3600.) |
| 820 |
|
|
TT_RSW0(J,K) = heat0(K)/(24*3600.) |
| 821 |
|
|
|
| 822 |
|
|
RC1(J,K) = heat(K)-cool(K) |
| 823 |
|
|
CRLW1(J,K) = cool0(K)-cool(K) |
| 824 |
|
|
CRSW1(J,K) = heat(K)-heat0(K) |
| 825 |
|
|
ENDDO |
| 826 |
|
|
|
| 827 |
|
|
ELSE ! CRFINT=false |
| 828 |
|
|
|
| 829 |
|
|
c caution: cloudy rad fluxes at the surface and at the top of the atmosphere |
| 830 |
|
|
c are not meaningfull if the CRF is specified! (but clear-sky fluxes are) |
| 831 |
|
|
|
| 832 |
|
|
DO K = 1, NLEV |
| 833 |
|
|
c clear-sky rates are those actually computed: |
| 834 |
|
|
TT_RLW0(J,K) = -cool0(K)/(24*3600.) |
| 835 |
|
|
TT_RSW0(J,K) = heat0(K)/(24*3600.) |
| 836 |
|
|
c cloudy rates deduced from "clear-sky+specified CRF": |
| 837 |
|
|
c be careful: the names of the following variables may not correspond |
| 838 |
|
|
c to their actual definition here (misleading notations in that case): |
| 839 |
|
|
RC1(J,K) = heat0(K)-cool0(K) + RCRF0(K) ! net rad heating rate |
| 840 |
|
|
TT_RLW(J,K) = (heat0(K)-cool0(K)+RCRF0(K))/(24*3600.)!net rad heating rate here |
| 841 |
|
|
TT_RSW(J,K) = 0.0 ! anything (will not be used) |
| 842 |
|
|
CRLW1(J,K) = RCRF0(K) ! here: net CRF (notation misleading) |
| 843 |
|
|
CRSW1(J,K) = heat0(K)-cool0(K) ! here: net clear-sky heating rate (misleading) |
| 844 |
|
|
ENDDO |
| 845 |
|
|
|
| 846 |
|
|
|
| 847 |
|
|
ENDIF ! CRFINT |
| 848 |
|
|
|
| 849 |
|
|
ENDIF ! RADFREQ |
| 850 |
|
|
|
| 851 |
|
|
ELSE ! RADINT = FALSE |
| 852 |
|
|
|
| 853 |
|
|
DO K = 1,NLEV |
| 854 |
|
|
|
| 855 |
|
|
TT_RLW(J,K) = RC1(J,K)/86400. |
| 856 |
|
|
TT_RSW(J,K) = 0.0 |
| 857 |
|
|
TT_RLW0(J,K) = 0.0 |
| 858 |
|
|
TT_RSW0(J,K) = 0.0 |
| 859 |
|
|
CRLW1(J,K) = 0.0 |
| 860 |
|
|
CRSW1(J,K) = 0.0 |
| 861 |
|
|
END DO |
| 862 |
|
|
TLW(J) = 0.0 |
| 863 |
|
|
TSW(J) = 0.0 |
| 864 |
|
|
TLW0(J) = 0.0 |
| 865 |
|
|
TSW0(J) = 0.0 |
| 866 |
|
|
SLW(J) = 0.0 |
| 867 |
|
|
SSW(J) = 0.0 |
| 868 |
|
|
SLW0(J) = 0.0 |
| 869 |
|
|
SSW0(J) = 0.0 |
| 870 |
|
|
SINS(J) = 0.0 |
| 871 |
|
|
|
| 872 |
|
|
ENDIF ! RADINT |
| 873 |
|
|
|
| 874 |
|
|
|
| 875 |
|
|
c ----------------------------------------------------------------------- |
| 876 |
|
|
c 6. Surface fluxes: |
| 877 |
|
|
c ----------------------------------------------------------------------- |
| 878 |
|
|
|
| 879 |
|
|
C omp: mixed-layer |
| 880 |
|
|
IF (PBL_MIX) THEN |
| 881 |
|
|
|
| 882 |
|
|
U_PBLW = 0.0 |
| 883 |
|
|
U_PBLE = 0.0 |
| 884 |
|
|
V_PBLS = 0.0 |
| 885 |
|
|
V_PBLN = 0.0 |
| 886 |
|
|
|
| 887 |
|
|
PBL_INV = 1./float(K_PBL) |
| 888 |
|
|
DO k = 1,K_PBL |
| 889 |
|
|
U_PBLW = U_PBLW + UGW(J,k) |
| 890 |
|
|
U_PBLE = U_PBLE + UGE(J,k) |
| 891 |
|
|
V_PBLS = V_PBLS + VGS(J,k) |
| 892 |
|
|
V_PBLN = V_PBLN + VGN(J,k) |
| 893 |
|
|
END DO |
| 894 |
|
|
U_PBLW = U_PBLW * PBL_INV |
| 895 |
|
|
U_PBLE = U_PBLE * PBL_INV |
| 896 |
|
|
V_PBLS = V_PBLS * PBL_INV |
| 897 |
|
|
V_PBLN = V_PBLN * PBL_INV |
| 898 |
|
|
|
| 899 |
|
|
C OMP - This version is incorrect. |
| 900 |
|
|
C The vertical velocities must also be modified in order for |
| 901 |
|
|
C advection (which is computed after the call to MITPHYS) |
| 902 |
|
|
C to be computed properly. |
| 903 |
|
|
C DO k = 1,K_PBL |
| 904 |
|
|
C UGW(J,K) = U_PBLW |
| 905 |
|
|
C UGE(J,K) = U_PBLE |
| 906 |
|
|
C VGS(J,K) = V_PBLS |
| 907 |
|
|
C VGN(J,K) = V_PBLN |
| 908 |
|
|
C END DO |
| 909 |
|
|
C Alternative: include the change in the _PBL tendencies: |
| 910 |
|
|
|
| 911 |
|
|
|
| 912 |
|
|
DO k = 1, K_PBL |
| 913 |
|
|
UT_PBL_E (J,K) = 0.5 * DELTI_MIX * (U_PBLE- UGE(J,K)) |
| 914 |
|
|
UT_PBL_W (J,K) = 0.5 * DELTI_MIX * (U_PBLW- UGW(J,K)) |
| 915 |
|
|
VT_PBL_S (J,K) = 0.5 * DELTI_MIX * (V_PBLS- VGS(J,K)) |
| 916 |
|
|
VT_PBL_N (J,K) = 0.5 * DELTI_MIX * (V_PBLN- VGN(J,K)) |
| 917 |
|
|
END DO |
| 918 |
|
|
|
| 919 |
|
|
|
| 920 |
|
|
END IF |
| 921 |
|
|
|
| 922 |
|
|
|
| 923 |
|
|
C omp: older version |
| 924 |
|
|
C Vertical diffusion in the PBL instead of mixing. It does not work as well |
| 925 |
|
|
C when the PBL is deep, and still allows significant vertical shear. |
| 926 |
|
|
|
| 927 |
|
|
c$$$ VISC_PBL = .1 *((paprs1(1) - paprs1(2))) **2 / DELT |
| 928 |
|
|
c$$$C GAMMA = RD_AIR / CP_AIR |
| 929 |
|
|
c$$$ |
| 930 |
|
|
c$$$ DPI = 1./(pplay1(K-1) - pplay1(K) ) |
| 931 |
|
|
c$$$ |
| 932 |
|
|
c$$$ DO K = 2, K_PBL |
| 933 |
|
|
c$$$ UE_FLUX(K) = VISC_PBL * |
| 934 |
|
|
c$$$ & ( UGE(J,K-1) - UGE(J,K)) * DPI |
| 935 |
|
|
c$$$ UW_FLUX(K) = VISC_PBL * |
| 936 |
|
|
c$$$ & ( UGW(J,K-1) - UGW(J,K)) * DPI |
| 937 |
|
|
c$$$ VS_FLUX(K) = VISC_PBL * |
| 938 |
|
|
c$$$ & ( VGS(J,K-1) - VGS(J,K)) * DPI |
| 939 |
|
|
c$$$ VN_FLUX(K) = VISC_PBL * |
| 940 |
|
|
c$$$ & ( VGN(J,K-1) - VGN(J,K)) * DPI |
| 941 |
|
|
c$$$ |
| 942 |
|
|
c$$$C QT_FLUX(K) = VISC_PBL * |
| 943 |
|
|
c$$$C & ( QG1(J,K-1) - QG1(J,K)) * DPI |
| 944 |
|
|
c$$$C QT_FLUX(K) = 0. |
| 945 |
|
|
c$$$C H_FLUX(K) = 0. |
| 946 |
|
|
c$$$C H_FLUX(K) = VISC_PBL * |
| 947 |
|
|
c$$$C & ( TG1(I,J,K-1) * ( P_full(K-1) ** GAMMA) |
| 948 |
|
|
c$$$C & - TG1(I,J,K) * ( P_full(K) ** GAMMA)) |
| 949 |
|
|
c$$$C & * (P_half(K) ** (- GAMMA)) * DPI |
| 950 |
|
|
c$$$ END DO |
| 951 |
|
|
c$$$C QT_FLUX(I_PBL) = 0. |
| 952 |
|
|
c$$$C H_FLUX(I_PBL) = 0. |
| 953 |
|
|
c$$$ UW_FLUX(1) = 0. |
| 954 |
|
|
c$$$ UE_FLUX(1) = 0. |
| 955 |
|
|
c$$$ VS_FLUX(1) = 0. |
| 956 |
|
|
c$$$ VN_FLUX(1) = 0. |
| 957 |
|
|
c$$$ UW_FLUX(K_PBL+1) = 0. |
| 958 |
|
|
c$$$ UE_FLUX(K_PBL+1) = 0. |
| 959 |
|
|
c$$$ VS_FLUX(K_PBL+1) = 0. |
| 960 |
|
|
c$$$ VN_FLUX(K_PBL+1) = 0. |
| 961 |
|
|
c$$$ DO K = 1,K_PBL |
| 962 |
|
|
c$$$ DPI = 1./(paprs1(K) - paprs1(K+1) ) |
| 963 |
|
|
c$$$C QT_PBL(I,J,K) = (QT_FLUX(K) - QT_FLUX(K+1)) |
| 964 |
|
|
c$$$C & * DPI |
| 965 |
|
|
c$$$C TT_PBL(I,J,K) = (H_FLUX(K) - H_FLUX(K+1)) |
| 966 |
|
|
c$$$C & * DPI |
| 967 |
|
|
c$$$ UT_PBL_E(J,K) = 0.5 * (UE_FLUX(K) - UE_FLUX(K+1)) |
| 968 |
|
|
c$$$ & * DPI |
| 969 |
|
|
c$$$ UT_PBL_W(J,K) = 0.5 * (UW_FLUX(K) - UW_FLUX(K+1)) |
| 970 |
|
|
c$$$ & * DPI |
| 971 |
|
|
c$$$ VT_PBL_S(J,K) = 0.5 *(VS_FLUX(K) - VS_FLUX(K+1)) |
| 972 |
|
|
c$$$ & * DPI |
| 973 |
|
|
c$$$ VT_PBL_N(J,K) = 0.5 *(VN_FLUX(K) - VN_FLUX(K+1)) |
| 974 |
|
|
c$$$ & * DPI |
| 975 |
|
|
c$$$ END DO |
| 976 |
|
|
c$$$ |
| 977 |
|
|
c$$$ |
| 978 |
|
|
c$$$ |
| 979 |
|
|
|
| 980 |
|
|
c -- surface wind: |
| 981 |
|
|
c US0, VS0: mean surface wind |
| 982 |
|
|
c WS0: minimum surface wind |
| 983 |
|
|
c WD: gustiness factor due to convective downdrafts |
| 984 |
|
|
|
| 985 |
|
|
|
| 986 |
|
|
c omp: two formulation for the contribution of the zonal wind: |
| 987 |
|
|
C |
| 988 |
|
|
|
| 989 |
|
|
C 1) US2 and VS2 are the square of the velocity at the center of the |
| 990 |
|
|
C cell |
| 991 |
|
|
|
| 992 |
|
|
US2= 0.25 * (US0+LOG_CORRECT *UGW(J,1) |
| 993 |
|
|
& + US0+LOG_CORRECT *UGE(J,1)) * |
| 994 |
|
|
& (US0+LOG_CORRECT *UGW(J,1) + |
| 995 |
|
|
& US0+LOG_CORRECT *UGE(J,1)) |
| 996 |
|
|
|
| 997 |
|
|
VS2= 0.25 *( VS0+LOG_CORRECT *VGS(J,1) |
| 998 |
|
|
& + VS0+LOG_CORRECT *VGN(J,1)) * |
| 999 |
|
|
& (VS0+LOG_CORRECT *VGS(J,1) |
| 1000 |
|
|
& + VS0+LOG_CORRECT *VGN(J,1)) |
| 1001 |
|
|
|
| 1002 |
|
|
|
| 1003 |
|
|
C or 2) US2 and VS2 are the average of the square of the velocity |
| 1004 |
|
|
|
| 1005 |
|
|
C US2= 0.5 *( (US0+LOG_CORRECT *UGW(J,1))* |
| 1006 |
|
|
C & (US0+LOG_CORRECT *UGW(J,1)) |
| 1007 |
|
|
C & + (US0+LOG_CORRECT *UGE(J,1)) |
| 1008 |
|
|
C & * (US0+LOG_CORRECT *UGE(J,1))) |
| 1009 |
|
|
|
| 1010 |
|
|
|
| 1011 |
|
|
C VS2= 0.5 *( (VS0+LOG_CORRECT *VGS(J,1))* |
| 1012 |
|
|
C & (VS0+LOG_CORRECT *VGS(J,1)) |
| 1013 |
|
|
C & + (VS0+LOG_CORRECT *VGN(J,1)) |
| 1014 |
|
|
C & * (VS0+LOG_CORRECT *VGN(J,1))) |
| 1015 |
|
|
|
| 1016 |
|
|
VSURF=SQRT(WS0*WS0+WD*WD+VS2+US2) |
| 1017 |
|
|
VSPRIME=VSURF-SQRT(WS0*WS0+VS2+US2) |
| 1018 |
|
|
|
| 1019 |
|
|
|
| 1020 |
|
|
c -- turbulent fluxes (NB: PG in mb): |
| 1021 |
|
|
|
| 1022 |
|
|
TSA=TCONV(1)*(PG/PPLAY(1))**(RD/CPD) |
| 1023 |
|
|
ROWS=PG/(RD*TSA*(1.+RCONV(1)*(EPSI-1.))) |
| 1024 |
|
|
DPH1I=1.0/(PAPRS(1)-PAPRS(2)) |
| 1025 |
|
|
|
| 1026 |
|
|
FTSURF = G * ROWS * CD |
| 1027 |
|
|
: * (VSURF*(TS(J)-TSA) - VSPRIME*TPRIME)*DPH1I |
| 1028 |
|
|
|
| 1029 |
|
|
FRSURF = G * ROWS * CD * EFRAC * LANDMUL(J) |
| 1030 |
|
|
: * (VSURF*(RSS-RCONV(1)) - VSPRIME*QPRIME)*DPH1I |
| 1031 |
|
|
|
| 1032 |
|
|
c -- sensible and latent heat fluxes at the surface (W/m2): |
| 1033 |
|
|
|
| 1034 |
|
|
TC = TS(J)-273.15 |
| 1035 |
|
|
ALV = LV0-CPVMCL*TC |
| 1036 |
|
|
|
| 1037 |
|
|
SH = (CPD*(1.-RCONV(1))+CPV*RCONV(1)) * 100.0*ROWS * CD |
| 1038 |
|
|
: * (VSURF*(TS(J)-TSA) - VSPRIME*TPRIME) |
| 1039 |
|
|
|
| 1040 |
|
|
LH = ALV * 100.0*ROWS * CD * EFRAC * LANDMUL(J) |
| 1041 |
|
|
: * (VSURF*(RSS-RCONV(1)) - VSPRIME*QPRIME) |
| 1042 |
|
|
|
| 1043 |
|
|
c -- Surface flux of momentum: |
| 1044 |
|
|
c here we impose the mean flow and so we apply |
| 1045 |
|
|
c the drag only to the wind perturbation: |
| 1046 |
|
|
|
| 1047 |
|
|
IF (LINEAR_FRICTION) THEN |
| 1048 |
|
|
|
| 1049 |
|
|
VSURF = LIN_FR_VEL |
| 1050 |
|
|
END IF |
| 1051 |
|
|
FUSURF_E = -G*ROWS*CDM*VSURF*DPH1I*UGE(J,1) * LOG_CORRECT |
| 1052 |
|
|
FUSURF_W = -G*ROWS*CDM*VSURF*DPH1I*UGW(J,1) * LOG_CORRECT |
| 1053 |
|
|
|
| 1054 |
|
|
C FUSURF_E = -G*ROWS*CDM*VSURF*DPH1I* 0.5 |
| 1055 |
|
|
C & * (UGE(J,1) + UGW(J,1)) * LOG_CORRECT |
| 1056 |
|
|
C FUSURF_W = FUSURF_E |
| 1057 |
|
|
|
| 1058 |
|
|
|
| 1059 |
|
|
FVSURF_S = -G*ROWS*CDM*VSURF*DPH1I*VGS(J,1) * LOG_CORRECT |
| 1060 |
|
|
FVSURF_N = -G*ROWS*CDM*VSURF*DPH1I*VGN(J,1) * LOG_CORRECT |
| 1061 |
|
|
|
| 1062 |
|
|
C FVSURF_S = -G*ROWS*CDM*VSURF*DPH1I*0.5 |
| 1063 |
|
|
C & * (VGS(J,1) + VGN(J,1)) * LOG_CORRECT |
| 1064 |
|
|
C FVSURF_N = FVSURF_S |
| 1065 |
|
|
|
| 1066 |
|
|
|
| 1067 |
|
|
c -- relaxation of the zonally averaged zonal wind |
| 1068 |
|
|
c to a preset value: |
| 1069 |
|
|
|
| 1070 |
|
|
c DO K = 1, NLEV |
| 1071 |
|
|
c UT_PBLi(J,K) = (UMEAN-UZON(K)) / TAUM |
| 1072 |
|
|
c VT_PBL(J,K) = 0. |
| 1073 |
|
|
c ENDDO |
| 1074 |
|
|
|
| 1075 |
|
|
c -- T, Q, U, V tendencies at first atmospheric level: |
| 1076 |
|
|
|
| 1077 |
|
|
TT_PBL(J,1) = FTSURF |
| 1078 |
|
|
QT_PBL(J,1) = FRSURF |
| 1079 |
|
|
UT_PBL_E(J,1) = UT_PBL_E(J,1) + 0.5 * FUSURF_E |
| 1080 |
|
|
UT_PBL_W(J,1) = UT_PBL_W(J,1) + 0.5 * FUSURF_W |
| 1081 |
|
|
VT_PBL_S(J,1) = VT_PBL_S(J,1) + 0.5 * FVSURF_S |
| 1082 |
|
|
VT_PBL_N(J,1) = VT_PBL_N(J,1) + 0.5 * FVSURF_N |
| 1083 |
|
|
|
| 1084 |
|
|
|
| 1085 |
|
|
c ----------------------------------------------------------------------- |
| 1086 |
|
|
c 7. Fill-in COMMONs : |
| 1087 |
|
|
c ----------------------------------------------------------------------- |
| 1088 |
|
|
|
| 1089 |
|
|
c MITFLUXES: |
| 1090 |
|
|
|
| 1091 |
|
|
PRECNV(J) = PRECIP ! convective precipitation (mm/day) |
| 1092 |
|
|
PRECLS(J) = PRADJ ! large-scale precipitation (mm/day) |
| 1093 |
|
|
LHF(J) = LH |
| 1094 |
|
|
SHF(J) = SH |
| 1095 |
|
|
|
| 1096 |
|
|
USTR(J) = 0.5 * (FUSURF_E + FUSURF_W) |
| 1097 |
|
|
& * (PAPRS(1)-PAPRS(2)) / G * 100.0 |
| 1098 |
|
|
VSTR(J) = 0.5 * (FVSURF_S + FVSURF_N) |
| 1099 |
|
|
& * (PAPRS(1)-PAPRS(2)) / G * 100.0 |
| 1100 |
|
|
|
| 1101 |
|
|
|
| 1102 |
|
|
c MITPHYGR3: |
| 1103 |
|
|
|
| 1104 |
|
|
CLDT1(J) = CLDT ! total cloud cover |
| 1105 |
|
|
CLDWP1(J) = CLDWP ! cloud water path |
| 1106 |
|
|
TS1(J) = TS(J) ! surface temperature |
| 1107 |
|
|
CC (acz) check for STL |
| 1108 |
|
|
CC IF( J .EQ. NGP ) THEN |
| 1109 |
|
|
CC write(6,*) 'TS1 set to TS: TS1=',TS1(J) |
| 1110 |
|
|
CC END IF |
| 1111 |
|
|
PRW1(J) = 0.0 |
| 1112 |
|
|
DO K = 1, NLEV |
| 1113 |
|
|
AUX = (RCONV(K)-CLDF(K)*CLDQ(K))/RS(K) |
| 1114 |
|
|
RH1(J,K) = MIN(MAX(AUX,0.0),1.0) |
| 1115 |
|
|
CLDF1(J,K) = CLDF(K) |
| 1116 |
|
|
CLDQ1(J,K) = CLDQ(K) |
| 1117 |
|
|
CLDQC1(J,K) = QCONDC(K) |
| 1118 |
|
|
PRW1(J) = PRW1(J)+RCONV(K)*(PAPRS1(K)-PAPRS1(K+1))/G |
| 1119 |
|
|
ENDDO |
| 1120 |
|
|
|
| 1121 |
|
|
GZ(1)=0.0 |
| 1122 |
|
|
CPN(1)=CPD*(1.-RCONV(1))+RCONV(1)*CPV |
| 1123 |
|
|
LV(1)=LV0-CPVMCL*(TCONV(1)-273.15) |
| 1124 |
|
|
SX(1)=CPN(I)*TCONV(1)+GZ(1) |
| 1125 |
|
|
HX(1)=SX(1)+LV(1)*RCONV(1) |
| 1126 |
|
|
DO K = 2, NLEV |
| 1127 |
|
|
CPN(K)=CPD*(1.-RCONV(K))+RCONV(K)*CPV |
| 1128 |
|
|
TVX=TCONV(K)*(1.+RCONV(K)*EPSI-RCONV(K)) |
| 1129 |
|
|
TVY=TCONV(K-1)*(1.+RCONV(K-1)*EPSI-RCONV(K-1)) |
| 1130 |
|
|
GZ(K)=GZ(K-1)+0.5*RD*(TVX+TVY) |
| 1131 |
|
|
: *(PPLAY(K-1)-PPLAY(K))/PAPRS(K) |
| 1132 |
|
|
LV(K)=LV0-CPVMCL*(TCONV(K)-273.15) |
| 1133 |
|
|
SX(K)=TCONV(K)*CPN(K)+GZ(K) |
| 1134 |
|
|
HX(K)=SX(K)+LV(K)*RCONV(K) |
| 1135 |
|
|
ENDDO |
| 1136 |
|
|
DO K = 1, NLEV |
| 1137 |
|
|
SXG1(J,K)=SX(K)/1000. |
| 1138 |
|
|
HXG1(J,K)=HX(K)/1000. |
| 1139 |
|
|
ENDDO |
| 1140 |
|
|
|
| 1141 |
|
|
CC (acz) interactive SST and STL: computed at each |
| 1142 |
|
|
CC gridpoint (then masked to determine TS) |
| 1143 |
|
|
CC with different QFLUX (defined in do_inphys) |
| 1144 |
|
|
CC |
| 1145 |
|
|
IF (.NOT. PRESC_SST) THEN |
| 1146 |
|
|
SST_TEND = (-SH - LH + SSW(J) - SLW(J) + QFLUX(J)) |
| 1147 |
|
|
: / HEATCAPOCEA |
| 1148 |
|
|
SST1(J) = SST1(J) + SST_TEND * DELT |
| 1149 |
|
|
END IF |
| 1150 |
|
|
|
| 1151 |
|
|
IF (.NOT. PRESC_STL) THEN |
| 1152 |
|
|
STL_TEND = (-SH - LH + SSW(J) - SLW(J) + QFLUX(J)) |
| 1153 |
|
|
: / HEATCAPLAND |
| 1154 |
|
|
STL1(J) = STL1(J) + STL_TEND * DELT |
| 1155 |
|
|
END IF |
| 1156 |
|
|
|
| 1157 |
|
|
CC |
| 1158 |
|
|
CC (nprive+acz) Interactive soil moisture |
| 1159 |
|
|
CC |
| 1160 |
|
|
|
| 1161 |
|
|
c convert latent heat flux to evaporation and |
| 1162 |
|
|
c evaporation in kg m-2 s-1 into evaporation in cm/s |
| 1163 |
|
|
EBKT = LH / (10. * ALV) |
| 1164 |
|
|
|
| 1165 |
|
|
c convert precipitation in mm/day in cm/s |
| 1166 |
|
|
PBKT = (PRECIP + PRADJ)/(10*24*3600) |
| 1167 |
|
|
|
| 1168 |
|
|
IF (.NOT. PRESC_BKT) THEN |
| 1169 |
|
|
BUCKET(J) = BUCKET(J) + (PBKT-EBKT) * DELT |
| 1170 |
|
|
IF (BUCKET(J) .LT. 0) then |
| 1171 |
|
|
BUCKET(J) = 0 |
| 1172 |
|
|
ELSEIF (BUCKET(J) .GT. BKT0) then |
| 1173 |
|
|
BUCKET(J) = BKT0 |
| 1174 |
|
|
ENDIF |
| 1175 |
|
|
|
| 1176 |
|
|
ELSE |
| 1177 |
|
|
|
| 1178 |
|
|
BUCKET(J) = BKT0 |
| 1179 |
|
|
|
| 1180 |
|
|
ENDIF |
| 1181 |
|
|
|
| 1182 |
|
|
|
| 1183 |
|
|
C ================================================================ |
| 1184 |
|
|
|
| 1185 |
|
|
9999 CONTINUE ! loop over atmospheric columns ends up here |
| 1186 |
|
|
|
| 1187 |
|
|
C ================================================================ |
| 1188 |
|
|
|
| 1189 |
|
|
C DUMMY = 0 |
| 1190 |
|
|
C DO k = 1, K_PBL |
| 1191 |
|
|
C DUMMY = DUMMY + UT_PBL_W(100,k) + UT_PBL_E(100,k) |
| 1192 |
|
|
C END DO |
| 1193 |
|
|
|
| 1194 |
|
|
C write(*,*) 'MITPHYS_DRIVER:' |
| 1195 |
|
|
C write(*,*) 'UT_PBL(100,1:K_PBL):', DUMMY |
| 1196 |
|
|
C write(*,*) 'USTR(100) = ',USTR(100) |
| 1197 |
|
|
C DUMMY = 0 |
| 1198 |
|
|
C DO k = 1, K_PBL |
| 1199 |
|
|
C DUMMY = DUMMY + VT_PBL_S(100,k) + VT_PBL_N(100,k) |
| 1200 |
|
|
C END DO |
| 1201 |
|
|
|
| 1202 |
|
|
C write(*,*) 'VT_PBL(100,1):', DUMMY |
| 1203 |
|
|
C write(*,*) 'VSTR(100) = ', VSTR(100) |
| 1204 |
|
|
C write(*,*) ROWS |
| 1205 |
|
|
C |
| 1206 |
|
|
C write(*,*) 'PHY_DRIVER end, TG1(65,1):', TG1(65,1) |
| 1207 |
|
|
|
| 1208 |
|
|
C write(*,*) 'PHY_DRIVER end, CBMFG1(85):', CBMFG1(85) |
| 1209 |
|
|
|
| 1210 |
|
|
FirstCall = .FALSE. |
| 1211 |
|
|
|
| 1212 |
|
|
RETURN |
| 1213 |
|
|
END |
| 1214 |
|
|
|
| 1215 |
|
|
|
| 1216 |
|
|
C $Id: phy_driver.F,v 1.2 2000/06/26 23:45:42 cnh Exp $ |
| 1217 |
|
|
|
| 1218 |
|
|
|
| 1219 |
|
|
|