module_pbl_driver.F

References to this file elsewhere.
1 !WRF:MEDIATION_LAYER:PHYSICS
2 !
3 
4 MODULE module_pbl_driver
5 CONTAINS
6 
7 !------------------------------------------------------------------
8    SUBROUTINE pbl_driver(                                          &
9                   itimestep,dt,u_frame,v_frame                     &
10                  ,rublten,rvblten,rthblten                         &
11                  ,tsk,xland,znt,ht                                 &
12                  ,ust,pblh,hfx,qfx,grdflx                          &
13                  ,u_phy,v_phy,th_phy,rho                           &
14                  ,p_phy,pi_phy,p8w,t_phy,dz8w,z                    &
15                  ,tke_myj,el_myj,exch_h,akhs,akms                  &
16                  ,thz0,qz0,uz0,vz0,qsfc                            &
17                  ,lowlyr,u10,v10                                   &
18                  ,psim,psih,gz1oz0, wspd,br,chklowq                &
19                  ,bl_pbl_physics, ra_lw_physics, dx                &
20                  ,stepbl,warm_rain                                 &
21                  ,kpbl,ct,lh,snow,xice                             &
22                  ,ids,ide, jds,jde, kds,kde                        &
23                  ,ims,ime, jms,jme, kms,kme                        &
24                  ,i_start,i_end, j_start,j_end, kts,kte, num_tiles &
25              ! Optional
26                  ,hol, mol, regime                                 &
27              !  Optional moisture tracers
28                  ,qv_curr, qc_curr, qr_curr                        &
29                  ,qi_curr, qs_curr, qg_curr                        &
30                  ,rqvblten,rqcblten,rqiblten                       &
31                  ,rqrblten,rqsblten,rqgblten                       &
32              !  Optional moisture tracer flags
33                  ,f_qv,f_qc,f_qr                                   &
34                  ,f_qi,f_qs,f_qg                                   &
35                                                                    )
36 !------------------------------------------------------------------
37    USE module_state_description, ONLY :                            &
38                    YSUSCHEME,MRFSCHEME,GFSSCHEME,MYJPBLSCHEME
39 
40    USE module_model_constants
41 
42 ! *** add new modules of schemes here
43 
44    USE module_bl_myjpbl
45    USE module_bl_ysu
46    USE module_bl_mrf
47    USE module_bl_gfs
48 
49    !  This driver calls subroutines for the PBL parameterizations.
50    !
51    !  pbl scheme:
52    !      1. ysupbl
53    !      2. myjpbl
54    !      99. mrfpbl
55    !
56 !------------------------------------------------------------------
57    IMPLICIT NONE
58 !======================================================================
59 ! Grid structure in physics part of WRF
60 !----------------------------------------------------------------------
61 ! The horizontal velocities used in the physics are unstaggered
62 ! relative to temperature/moisture variables. All predicted
63 ! variables are carried at half levels except w, which is at full
64 ! levels. Some arrays with names (*8w) are at w (full) levels.
65 !
66 !----------------------------------------------------------------------
67 ! In WRF, kms (smallest number) is the bottom level and kme (largest
68 ! number) is the top level.  In your scheme, if 1 is at the top level,
69 ! then you have to reverse the order in the k direction.
70 !
71 !         kme      -   half level (no data at this level)
72 !         kme    ----- full level
73 !         kme-1    -   half level
74 !         kme-1  ----- full level
75 !         .
76 !         .
77 !         .
78 !         kms+2    -   half level
79 !         kms+2  ----- full level
80 !         kms+1    -   half level
81 !         kms+1  ----- full level
82 !         kms      -   half level
83 !         kms    ----- full level
84 !
85 !======================================================================
86 ! Definitions
87 !-----------
88 ! Rho_d      dry density (kg/m^3)
89 ! Theta_m    moist potential temperature (K)
90 ! Qv         water vapor mixing ratio (kg/kg)
91 ! Qc         cloud water mixing ratio (kg/kg)
92 ! Qr         rain water mixing ratio (kg/kg)
93 ! Qi         cloud ice mixing ratio (kg/kg)
94 ! Qs         snow mixing ratio (kg/kg)
95 !-----------------------------------------------------------------
96 !-- RUBLTEN       U tendency due to 
97 !                 PBL parameterization (m/s^2)
98 !-- RVBLTEN       V tendency due to 
99 !                 PBL parameterization (m/s^2)
100 !-- RTHBLTEN      Theta tendency due to 
101 !                 PBL parameterization (K/s)
102 !-- RQVBLTEN      Qv tendency due to 
103 !                 PBL parameterization (kg/kg/s)
104 !-- RQCBLTEN      Qc tendency due to 
105 !                 PBL parameterization (kg/kg/s)
106 !-- RQIBLTEN      Qi tendency due to 
107 !                 PBL parameterization (kg/kg/s)
108 !-- itimestep     number of time steps
109 !-- GLW           downward long wave flux at ground surface (W/m^2)
110 !-- GSW           downward short wave flux at ground surface (W/m^2)
111 !-- EMISS         surface emissivity (between 0 and 1)
112 !-- TSK           surface temperature (K)
113 !-- TMN           soil temperature at lower boundary (K)
114 !-- XLAND         land mask (1 for land, 2 for water)
115 !-- ZNT           roughness length (m)
116 !-- MAVAIL        surface moisture availability (between 0 and 1)
117 !-- UST           u* in similarity theory (m/s)
118 !-- MOL           T* (similarity theory) (K)
119 !-- HOL           PBL height over Monin-Obukhov length
120 !-- PBLH          PBL height (m)
121 !-- CAPG          heat capacity for soil (J/K/m^3)
122 !-- THC           thermal inertia (Cal/cm/K/s^0.5)
123 !-- SNOWC         flag indicating snow coverage (1 for snow cover)
124 !-- HFX           upward heat flux at the surface (W/m^2)
125 !-- QFX           upward moisture flux at the surface (kg/m^2/s)
126 !-- REGIME        flag indicating PBL regime (stable, unstable, etc.)
127 !-- tke_myj       turbulence kinetic energy from Mellor-Yamada-Janjic (MYJ) (m^2/s^2)
128 !-- el_myj        mixing length from Mellor-Yamada-Janjic (MYJ) (m)
129 !-- akhs          sfc exchange coefficient of heat/moisture from MYJ
130 !-- akms          sfc exchange coefficient of momentum from MYJ
131 !-- thz0          potential temperature at roughness length (K)
132 !-- uz0           u wind component at roughness length (m/s)
133 !-- vz0           v wind component at roughness length (m/s)
134 !-- qsfc          specific humidity at lower boundary (kg/kg)
135 !-- th2           diagnostic 2-m theta from surface layer and lsm
136 !-- t2            diagnostic 2-m temperature from surface layer and lsm
137 !-- q2            diagnostic 2-m mixing ratio from surface layer and lsm
138 !-- lowlyr        index of lowest model layer above ground
139 !-- rr            dry air density (kg/m^3)
140 !-- u_phy         u-velocity interpolated to theta points (m/s)
141 !-- v_phy         v-velocity interpolated to theta points (m/s)
142 !-- th_phy        potential temperature (K)
143 !-- p_phy         pressure (Pa)
144 !-- pi_phy        exner function (dimensionless)
145 !-- p8w           pressure at full levels (Pa)
146 !-- t_phy         temperature (K)
147 !-- dz8w          dz between full levels (m)
148 !-- z             height above sea level (m)
149 !-- DX            horizontal space interval (m)
150 !-- DT            time step (second)
151 !-- n_moist       number of moisture species
152 !-- PSFC          pressure at the surface (Pa)
153 !-- TSLB          
154 !-- ZS
155 !-- DZS
156 !-- num_soil_layers number of soil layer
157 !-- IFSNOW      ifsnow=1 for snow-cover effects
158 !
159 !-- P_QV          species index for water vapor
160 !-- P_QC          species index for cloud water
161 !-- P_QR          species index for rain water
162 !-- P_QI          species index for cloud ice
163 !-- P_QS          species index for snow
164 !-- P_QG          species index for graupel
165 !-- ids           start index for i in domain
166 !-- ide           end index for i in domain
167 !-- jds           start index for j in domain
168 !-- jde           end index for j in domain
169 !-- kds           start index for k in domain
170 !-- kde           end index for k in domain
171 !-- ims           start index for i in memory
172 !-- ime           end index for i in memory
173 !-- jms           start index for j in memory
174 !-- jme           end index for j in memory
175 !-- kms           start index for k in memory
176 !-- kme           end index for k in memory
177 !-- jts           start index for j in tile
178 !-- jte           end index for j in tile
179 !-- kts           start index for k in tile
180 !-- kte           end index for k in tile
181 !
182 !******************************************************************
183 !------------------------------------------------------------------ 
184 !
185 
186 
187    INTEGER,    INTENT(IN   )    ::     bl_pbl_physics, ra_lw_physics
188 
189    INTEGER,    INTENT(IN   )    ::     ids,ide, jds,jde, kds,kde, &
190                                        ims,ime, jms,jme, kms,kme, &
191                                        kts,kte, num_tiles
192 
193    INTEGER, DIMENSION(num_tiles), INTENT(IN) ::                   &
194   &                                    i_start,i_end,j_start,j_end
195 
196    INTEGER,    INTENT(IN   )    ::     itimestep,STEPBL
197    INTEGER,    DIMENSION( ims:ime , jms:jme ),                    &
198                INTENT(IN   )    ::                        LOWLYR
199 !
200    LOGICAL,      INTENT(IN   )    ::   warm_rain
201 !
202    REAL,       INTENT(IN   )    ::     DT,DX
203 
204 
205 !
206    REAL,       DIMENSION( ims:ime, kms:kme, jms:jme ),            &
207                INTENT(IN   )    ::                         p_phy, &
208                                                           pi_phy, &
209                                                              p8w, &
210                                                              rho, &
211                                                            t_phy, &
212                                                            u_phy, &
213                                                            v_phy, &
214                                                             dz8w, &
215                                                                z, &
216                                                           th_phy
217 !
218 !
219    REAL,       DIMENSION( ims:ime , jms:jme ),                    &
220                INTENT(IN   )    ::                         XLAND, &
221                                                               HT, &
222                                                             PSIM, &
223                                                             PSIH, &
224                                                           GZ1OZ0, &
225                                                               BR, &
226                                                          CHKLOWQ
227 !
228    REAL,       DIMENSION( ims:ime, jms:jme )                    , &
229                INTENT(INOUT)    ::                           TSK, &
230                                                              UST, &
231                                                             PBLH, &
232                                                              HFX, &
233                                                              QFX, &
234                                                              ZNT, &
235                                                             QSFC, &
236                                                             AKHS, &
237                                                             AKMS, &
238                                                              QZ0, &
239                                                             THZ0, &
240                                                              UZ0, &
241                                                              VZ0, &
242                                                               CT, &
243                                                           GRDFLX, &
244                                                              U10, &
245                                                              V10, &
246                                                             WSPD
247 
248 !
249    REAL,       DIMENSION( ims:ime, kms:kme, jms:jme ),            &
250                INTENT(INOUT)    ::                       RUBLTEN, &
251                                                          RVBLTEN, &
252                                                         RTHBLTEN, &
253                                                   EXCH_H,TKE_MYJ
254 !
255    REAL,       DIMENSION( ims:ime, kms:kme, jms:jme ),            &
256                INTENT(OUT)    ::                          EL_MYJ
257 
258    REAL ,                             INTENT(IN   )  ::  u_frame, &
259                                                          v_frame
260 !
261 
262    INTEGER,    DIMENSION( ims:ime , jms:jme ),                    &
263                INTENT(INOUT) ::                             KPBL
264 
265    REAL,       DIMENSION( ims:ime , jms:jme ),                    &
266                INTENT(IN)    :: XICE, SNOW, LH
267 
268 !
269 ! Optional
270 !
271 !
272 ! Flags relating to the optional tendency arrays declared above
273 ! Models that carry the optional tendencies will provdide the
274 ! optional arguments at compile time; these flags all the model
275 ! to determine at run-time whether a particular tracer is in
276 ! use or not.
277 !
278    LOGICAL, INTENT(IN), OPTIONAL ::                             &
279                                                       f_qv      &
280                                                      ,f_qc      &
281                                                      ,f_qr      &
282                                                      ,f_qi      &
283                                                      ,f_qs      &
284                                                      ,f_qg
285 
286    REAL, DIMENSION( ims:ime, kms:kme, jms:jme ),                 &
287          OPTIONAL, INTENT(INOUT) ::                              &
288                       ! optional moisture tracers
289                       ! 2 time levels; if only one then use CURR
290                       qv_curr, qc_curr, qr_curr                  &
291                      ,qi_curr, qs_curr, qg_curr                  &
292                      ,rqvblten,rqcblten,rqrblten                 &
293                      ,rqiblten,rqsblten,rqgblten
294 
295    REAL,       DIMENSION( ims:ime, jms:jme )                    , &
296                OPTIONAL                                         , &
297                INTENT(INOUT)    ::                           HOL, &
298                                                              MOL, &
299                                                           REGIME
300 
301 !  LOCAL  VAR
302 
303    REAL,       DIMENSION( ims:ime, kms:kme, jms:jme ) ::v_phytmp
304    REAL,       DIMENSION( ims:ime, kms:kme, jms:jme ) ::u_phytmp
305 
306    REAL,       DIMENSION( ims:ime, jms:jme )          ::  TSKOLD, &
307                                                           USTOLD, &
308                                                           ZNTOLD, &
309                                                              ZOL, &
310                                                             PSFC
311 
312 !
313 
314    REAL    :: DTMIN,DTBL
315 !
316    INTEGER :: i,J,K,NK,jj,ij,its,ite,jts,jte
317    LOGICAL :: radiation
318    LOGICAL :: flag_qv, flag_qc, flag_qr, flag_qi, flag_qs, flag_qg
319    CHARACTER*256 :: message
320 
321 !------------------------------------------------------------------
322 !
323 
324   flag_qv = .FALSE. ; IF ( PRESENT( F_QV ) ) flag_qv = F_QV
325   flag_qc = .FALSE. ; IF ( PRESENT( F_QC ) ) flag_qc = F_QC
326   flag_qr = .FALSE. ; IF ( PRESENT( F_QR ) ) flag_qr = F_QR
327   flag_qi = .FALSE. ; IF ( PRESENT( F_QI ) ) flag_qi = F_QI
328   flag_qs = .FALSE. ; IF ( PRESENT( F_QS ) ) flag_qs = F_QS
329   flag_qg = .FALSE. ; IF ( PRESENT( F_QG ) ) flag_qg = F_QG
330 
331 !print *,flag_qv, flag_qc, flag_qr, flag_qi, flag_qs, flag_qg,' flag_qv, flag_qc, flag_qr, flag_qi, flag_qs, flag_qg'
332 !print *,f_qv, f_qc, f_qr, f_qi, f_qs, f_qg,' f_qv, f_qc, f_qr, f_qi, f_qs, f_qg'
333 
334   if (bl_pbl_physics .eq. 0) return
335 ! RAINBL in mm (Accumulation between PBL calls)
336 
337 
338   IF (itimestep .eq. 1 .or. mod(itimestep,STEPBL) .eq. 0) THEN
339 
340   radiation = .false.
341   IF (ra_lw_physics .gt. 0) radiation = .true.
342 
343 !---- 
344 ! CALCULATE CONSTANT
345  
346    DTMIN=DT/60.
347 ! PBL schemes need PBL time step for updates
348    DTBL=DT*STEPBL
349 
350 ! SAVE OLD VALUES
351 
352    !$OMP PARALLEL DO   &
353    !$OMP PRIVATE ( ij,i,j,k )
354    DO ij = 1 , num_tiles
355       DO j=j_start(ij),j_end(ij)
356       DO i=i_start(ij),i_end(ij)
357          TSKOLD(i,j)=TSK(i,j)
358          USTOLD(i,j)=UST(i,j)
359          ZNTOLD(i,j)=ZNT(i,j)
360 
361 ! REVERSE ORDER IN THE VERTICAL DIRECTION
362 
363 ! testing change later
364 
365          DO k=kts,kte
366             v_phytmp(i,k,j)=v_phy(i,k,j)+v_frame
367             u_phytmp(i,k,j)=u_phy(i,k,j)+u_frame
368          ENDDO
369 
370 ! PSFC : in Pa
371 
372          PSFC(I,J)=p8w(I,kms,J)
373 
374          DO k=kts,min(kte+1,kde)
375             RTHBLTEN(I,K,J)=0.
376             RUBLTEN(I,K,J)=0.
377             RVBLTEN(I,K,J)=0.
378             IF ( PRESENT( RQCBLTEN )) RQCBLTEN(I,K,J)=0.
379             IF ( PRESENT( RQVBLTEN )) RQVBLTEN(I,K,J)=0.
380          ENDDO
381 
382          IF (flag_QI .AND. PRESENT(RQIBLTEN) ) THEN
383             DO k=kts,min(kte+1,kde)
384                RQIBLTEN(I,K,J)=0.
385             ENDDO
386          ENDIF
387       ENDDO
388       ENDDO
389 
390    ENDDO
391    !$OMP END PARALLEL DO
392 !
393   !$OMP PARALLEL DO   &
394   !$OMP PRIVATE ( ij, i,j,k, its, ite, jts, jte )
395   DO ij = 1 , num_tiles
396 
397    its = i_start(ij)
398    ite = i_end(ij)
399    jts = j_start(ij)
400    jte = j_end(ij)
401 
402    pbl_select: SELECT CASE(bl_pbl_physics)
403 
404       CASE (YSUSCHEME)
405         CALL wrf_debug(100,'in YSU PBL')
406            IF ( PRESENT( qv_curr )  .AND. PRESENT( qc_curr )  .AND. &
407                 PRESENT( qi_curr )                            .AND. &
408                 PRESENT( rqvblten ) .AND. PRESENT( rqcblten ) .AND. &
409                 PRESENT( rqiblten )                           .AND. &
410                 PRESENT( hol      ) ) THEN
411              CALL ysu(                                              &
412                U3D=u_phytmp,V3D=v_phytmp,TH3D=th_phy,T3D=t_phy      &
413               ,QV3D=qv_curr,QC3D=qc_curr,QI3D=qi_curr               &
414               ,P3D=p_phy,P3DI=p8w,PI3D=pi_phy                       &
415               ,RUBLTEN=rublten,RVBLTEN=rvblten                      &
416               ,RTHBLTEN=rthblten,RQVBLTEN=rqvblten                  &
417               ,RQCBLTEN=rqcblten,RQIBLTEN=rqiblten                  &
418               ,FLAG_QI=flag_qi                                      &
419               ,CP=cp,G=g,ROVCP=rcp,RD=r_D,ROVG=rovg                 &
420               ,DZ8W=dz8w,Z=z,XLV=XLV,RV=r_v,PSFC=PSFC               &
421               ,ZNT=znt,UST=ust,ZOL=zol,HOL=hol,HPBL=pblh            &
422               ,PSIM=psim,PSIH=psih,XLAND=xland                      &
423               ,HFX=hfx,QFX=qfx,TSK=tskold,GZ1OZ0=gz1oz0             &
424               ,U10=u10,V10=v10                                      &
425               ,WSPD=wspd,BR=br,DT=dtbl,DTMIN=dtmin,KPBL2D=kpbl      &
426               ,SVP1=svp1,SVP2=svp2,SVP3=svp3,SVPT0=svpt0            &
427               ,EP1=ep_1,EP2=ep_2,KARMAN=karman,EOMEG=eomeg          &
428               ,STBOLT=stbolt,EXCH_H=exch_h,REGIME=regime            &
429               ,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde      &
430               ,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme      &
431               ,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte      &
432                                                                     )
433            ELSE
434                CALL wrf_error_fatal('Lack arguments to call YSU pbl')
435            ENDIF
436 
437       CASE (MRFSCHEME)
438            IF ( PRESENT( qv_curr )  .AND. PRESENT( qc_curr )  .AND. &
439                 PRESENT( rqvblten ) .AND. PRESENT( rqcblten ) .AND. &
440                 PRESENT( hol      )                           .AND. &
441                                                         .TRUE.  ) THEN
442 
443              CALL wrf_debug(100,'in MRF')
444              CALL mrf(                                              &
445                U3D=u_phytmp,V3D=v_phytmp,TH3D=th_phy,T3D=t_phy      &
446               ,QV3D=qv_curr                                         &
447               ,QC3D=qc_curr                                         &
448               ,QI3D=qi_curr                                         &
449               ,P3D=p_phy,PI3D=pi_phy                                &
450               ,RUBLTEN=rublten,RVBLTEN=rvblten                      &
451               ,RTHBLTEN=rthblten,RQVBLTEN=rqvblten                  &
452               ,RQCBLTEN=rqcblten,RQIBLTEN=rqiblten                  &
453               ,CP=cp,G=g,ROVCP=rcp,R=r_d,ROVG=rovg                  &
454               ,DZ8W=dz8w,Z=z,XLV=xlv,RV=r_v,PSFC=psfc               &
455               ,P1000MB=p1000mb                                      &
456               ,ZNT=znt,UST=ust,ZOL=zol,HOL=hol                      &
457               ,PBL=pblh,PSIM=psim,PSIH=psih                         &
458               ,XLAND=xland,HFX=hfx,QFX=qfx,TSK=tskold               &
459               ,GZ1OZ0=gz1oz0,WSPD=wspd,BR=br                        &
460               ,DT=dtbl,DTMIN=dtmin,KPBL2D=kpbl                      &
461               ,SVP1=svp1,SVP2=svp2,SVP3=svp3,SVPT0=svpt0            &
462               ,EP1=ep_1,EP2=ep_2,KARMAN=karman,EOMEG=eomeg          &
463               ,STBOLT=stbolt,REGIME=regime                          &
464               ,FLAG_QI=flag_qi                                      &
465               ,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde      &
466               ,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme      &
467               ,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte      &
468                                                                     )
469            ELSE
470                CALL wrf_error_fatal('Lack arguments to call MRF pbl')
471            ENDIF
472 
473       CASE (GFSSCHEME)
474            IF ( PRESENT( qv_curr )  .AND. PRESENT( qc_curr )  .AND. &
475                 PRESENT( rqvblten ) .AND. PRESENT( rqcblten ) .AND. &
476                                                         .TRUE.  ) THEN
477              CALL wrf_debug(100,'in GFS')
478              CALL bl_gfs(                                           &
479                U3D=u_phytmp,V3D=v_phytmp                            &
480               ,TH3D=th_phy,T3D=t_phy                                &
481               ,QV3D=qv_curr,QC3D=qc_curr,QI3D=qi_curr               &
482               ,P3D=p_phy,PI3D=pi_phy                                &
483               ,RUBLTEN=rublten,RVBLTEN=rvblten,RTHBLTEN=rthblten    &
484               ,RQVBLTEN=rqvblten,RQCBLTEN=rqcblten                  &
485               ,RQIBLTEN=rqiblten                                    &
486               ,CP=cp,G=g,ROVCP=rcp,R=r_d,ROVG=rovg,FLAG_QI=flag_qi  &
487               ,DZ8W=dz8w,z=z,PSFC=psfc                              &
488               ,UST=ust,PBL=pblh,PSIM=psim,PSIH=psih                 &
489               ,HFX=hfx,QFX=qfx,TSK=tskold,GZ1OZ0=gz1oz0             &
490               ,WSPD=wspd,BR=br                                      &
491               ,DT=dtbl,KPBL2D=kpbl,EP1=ep_1,KARMAN=karman           &
492               ,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde      &
493               ,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme      &
494               ,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte      &
495                                                                     )
496            ELSE
497                CALL wrf_error_fatal('Lack arguments to call GFS pbl')
498            ENDIF
499 
500       CASE (MYJPBLSCHEME)
501            IF ( PRESENT( qv_curr )  .AND. PRESENT( qc_curr )  .AND. &
502                 PRESENT( rqvblten ) .AND. PRESENT( rqcblten ) .AND. &
503                                                         .TRUE.  ) THEN
504 
505              CALL wrf_debug(100,'in MYJPBL')
506              CALL myjpbl(                                           &
507                DT=dt,STEPBL=stepbl,HT=ht,DZ=dz8w                    &
508               ,PMID=p_phy,PINT=p8w,TH=th_phy,T=t_phy,EXNER=pi_phy   &
509               ,QV=qv_curr, CWM=qc_curr                               &
510               ,U=u_phy,V=v_phy,RHO=rho                              &
511               ,TSK=tsk,QSFC=qsfc,CHKLOWQ=chklowq,THZ0=thz0          &
512               ,QZ0=qz0,UZ0=uz0,VZ0=vz0                              &
513               ,LOWLYR=lowlyr                                        &
514               ,XLAND=xland,SICE=xice,SNOW=snow                      &
515               ,TKE_MYJ=tke_myj,EXCH_H=exch_h,USTAR=ust,ZNT=znt      &
516               ,EL_MYJ=el_myj,PBLH=pblh,KPBL=kpbl,CT=ct              &
517               ,AKHS=akhs,AKMS=akms,ELFLX=lh                         &
518               ,RUBLTEN=rublten,RVBLTEN=rvblten,RTHBLTEN=rthblten    &
519               ,RQVBLTEN=rqvblten,RQCBLTEN=rqcblten                  &
520               ,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde      &
521               ,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme      &
522               ,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte      &
523                                                                     )
524            ELSE
525                CALL wrf_error_fatal('Lack arguments to call MYJ pbl')
526            ENDIF
527 
528      CASE DEFAULT
529 
530        WRITE( message , * ) 'The pbl option does not exist: bl_pbl_physics = ', bl_pbl_physics
531        CALL wrf_error_fatal ( message )
532 
533    END SELECT pbl_select
534 
535    ENDDO
536    !$OMP END PARALLEL DO
537 
538    ENDIF
539 !
540    END SUBROUTINE pbl_driver
541 END MODULE module_pbl_driver