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                                           &
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                                                             WSPD
245 
246 !
247    REAL,       DIMENSION( ims:ime, kms:kme, jms:jme ),            &
248                INTENT(INOUT)    ::                       RUBLTEN, &
249                                                          RVBLTEN, &
250                                                         RTHBLTEN, &
251                                                   EXCH_H,TKE_MYJ
252 !
253    REAL,       DIMENSION( ims:ime, kms:kme, jms:jme ),            &
254                INTENT(OUT)    ::                          EL_MYJ
255 
256    REAL ,                             INTENT(IN   )  ::  u_frame, &
257                                                          v_frame
258 !
259 
260    INTEGER,    DIMENSION( ims:ime , jms:jme ),                    &
261                INTENT(INOUT) ::                             KPBL
262 
263    REAL,       DIMENSION( ims:ime , jms:jme ),                    &
264                INTENT(IN)    :: XICE, SNOW, LH
265 
266 !
267 ! Optional
268 !
269 !
270 ! Flags relating to the optional tendency arrays declared above
271 ! Models that carry the optional tendencies will provdide the
272 ! optional arguments at compile time; these flags all the model
273 ! to determine at run-time whether a particular tracer is in
274 ! use or not.
275 !
276    LOGICAL, INTENT(IN), OPTIONAL ::                             &
277                                                       f_qv      &
278                                                      ,f_qc      &
279                                                      ,f_qr      &
280                                                      ,f_qi      &
281                                                      ,f_qs      &
282                                                      ,f_qg
283 
284    REAL, DIMENSION( ims:ime, kms:kme, jms:jme ),                 &
285          OPTIONAL, INTENT(INOUT) ::                              &
286                       ! optional moisture tracers
287                       ! 2 time levels; if only one then use CURR
288                       qv_curr, qc_curr, qr_curr                  &
289                      ,qi_curr, qs_curr, qg_curr                  &
290                      ,rqvblten,rqcblten,rqrblten                 &
291                      ,rqiblten,rqsblten,rqgblten
292 
293    REAL,       DIMENSION( ims:ime, jms:jme )                    , &
294                OPTIONAL                                         , &
295                INTENT(INOUT)    ::                           HOL, &
296                                                              MOL, &
297                                                           REGIME
298 
299 !  LOCAL  VAR
300 
301    REAL,       DIMENSION( ims:ime, kms:kme, jms:jme ) ::v_phytmp
302    REAL,       DIMENSION( ims:ime, kms:kme, jms:jme ) ::u_phytmp
303 
304    REAL,       DIMENSION( ims:ime, jms:jme )          ::  TSKOLD, &
305                                                           USTOLD, &
306                                                           ZNTOLD, &
307                                                              ZOL, &
308                                                             PSFC
309 
310 !
311 
312    REAL    :: DTMIN,DTBL
313 !
314    INTEGER :: i,J,K,NK,jj,ij,its,ite,jts,jte
315    LOGICAL :: radiation
316    LOGICAL :: flag_qv, flag_qc, flag_qr, flag_qi, flag_qs, flag_qg
317    CHARACTER*256 :: message
318 
319 !------------------------------------------------------------------
320 !
321 
322   flag_qv = .FALSE. ; IF ( PRESENT( F_QV ) ) flag_qv = F_QV
323   flag_qc = .FALSE. ; IF ( PRESENT( F_QC ) ) flag_qc = F_QC
324   flag_qr = .FALSE. ; IF ( PRESENT( F_QR ) ) flag_qr = F_QR
325   flag_qi = .FALSE. ; IF ( PRESENT( F_QI ) ) flag_qi = F_QI
326   flag_qs = .FALSE. ; IF ( PRESENT( F_QS ) ) flag_qs = F_QS
327   flag_qg = .FALSE. ; IF ( PRESENT( F_QG ) ) flag_qg = F_QG
328 
329 !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'
330 !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'
331 
332   if (bl_pbl_physics .eq. 0) return
333 ! RAINBL in mm (Accumulation between PBL calls)
334 
335 
336   IF (itimestep .eq. 1 .or. mod(itimestep,STEPBL) .eq. 0) THEN
337 
338   radiation = .false.
339   IF (ra_lw_physics .gt. 0) radiation = .true.
340 
341 !---- 
342 ! CALCULATE CONSTANT
343  
344    DTMIN=DT/60.
345 ! PBL schemes need PBL time step for updates
346    DTBL=DT*STEPBL
347 
348 ! SAVE OLD VALUES
349 
350    !$OMP PARALLEL DO   &
351    !$OMP PRIVATE ( ij,i,j,k )
352    DO ij = 1 , num_tiles
353       DO j=j_start(ij),j_end(ij)
354       DO i=i_start(ij),i_end(ij)
355          TSKOLD(i,j)=TSK(i,j)
356          USTOLD(i,j)=UST(i,j)
357          ZNTOLD(i,j)=ZNT(i,j)
358 
359 ! REVERSE ORDER IN THE VERTICAL DIRECTION
360 
361 ! testing change later
362 
363          DO k=kts,kte
364             v_phytmp(i,k,j)=v_phy(i,k,j)+v_frame
365             u_phytmp(i,k,j)=u_phy(i,k,j)+u_frame
366          ENDDO
367 
368 ! PSFC : in Pa
369 
370          PSFC(I,J)=p8w(I,kms,J)
371 
372          DO k=kts,min(kte+1,kde)
373             RTHBLTEN(I,K,J)=0.
374             RUBLTEN(I,K,J)=0.
375             RVBLTEN(I,K,J)=0.
376             IF ( PRESENT( RQCBLTEN )) RQCBLTEN(I,K,J)=0.
377             IF ( PRESENT( RQVBLTEN )) RQVBLTEN(I,K,J)=0.
378          ENDDO
379 
380          IF (flag_QI .AND. PRESENT(RQIBLTEN) ) THEN
381             DO k=kts,min(kte+1,kde)
382                RQIBLTEN(I,K,J)=0.
383             ENDDO
384          ENDIF
385       ENDDO
386       ENDDO
387 
388    ENDDO
389    !$OMP END PARALLEL DO
390 !
391   !$OMP PARALLEL DO   &
392   !$OMP PRIVATE ( ij, i,j,k, its, ite, jts, jte )
393   DO ij = 1 , num_tiles
394 
395    its = i_start(ij)
396    ite = i_end(ij)
397    jts = j_start(ij)
398    jte = j_end(ij)
399 
400    pbl_select: SELECT CASE(bl_pbl_physics)
401 
402       CASE (YSUSCHEME)
403         CALL wrf_debug(100,'in YSU PBL')
404            IF ( PRESENT( qv_curr )  .AND. PRESENT( qc_curr )  .AND. &
405                 PRESENT( qi_curr )                            .AND. &
406                 PRESENT( rqvblten ) .AND. PRESENT( rqcblten ) .AND. &
407                 PRESENT( rqiblten )                           .AND. &
408                 PRESENT( hol      ) ) THEN
409              CALL ysu(                                              &
410                U3D=u_phytmp,V3D=v_phytmp,TH3D=th_phy,T3D=t_phy      &
411               ,QV3D=qv_curr,QC3D=qc_curr,QI3D=qi_curr               &
412               ,P3D=p_phy,PI3D=pi_phy                                &
413               ,RUBLTEN=rublten,RVBLTEN=rvblten                      &
414               ,RTHBLTEN=rthblten,RQVBLTEN=rqvblten                  &
415               ,RQCBLTEN=rqcblten,RQIBLTEN=rqiblten                  &
416               ,FLAG_QI=flag_qi                                      &
417               ,CP=cp,G=g,ROVCP=rcp,RD=r_D,ROVG=rovg                 &
418               ,DZ8W=dz8w,Z=z,XLV=XLV,RV=r_v,PSFC=PSFC               &
419               ,ZNT=znt,UST=ust,ZOL=zol,HOL=hol,HPBL=pblh            &
420               ,PSIM=psim,PSIH=psih,XLAND=xland                      &
421               ,HFX=hfx,QFX=qfx,TSK=tskold,GZ1OZ0=gz1oz0             &
422               ,WSPD=wspd,BR=br,DT=dtbl,DTMIN=dtmin,KPBL2D=kpbl      &
423               ,SVP1=svp1,SVP2=svp2,SVP3=svp3,SVPT0=svpt0            &
424               ,EP1=ep_1,EP2=ep_2,KARMAN=karman,EOMEG=eomeg          &
425               ,STBOLT=stbolt,EXCH_H=exch_h,REGIME=regime            &
426               ,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde      &
427               ,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme      &
428               ,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte      &
429                                                                     )
430            ELSE
431                CALL wrf_error_fatal('Lack arguments to call YSU pbl')
432            ENDIF
433 
434       CASE (MRFSCHEME)
435            IF ( PRESENT( qv_curr )  .AND. PRESENT( qc_curr )  .AND. &
436                 PRESENT( rqvblten ) .AND. PRESENT( rqcblten ) .AND. &
437                 PRESENT( hol      )                           .AND. &
438                                                         .TRUE.  ) THEN
439 
440              CALL wrf_debug(100,'in MRF')
441              CALL mrf(                                              &
442                U3D=u_phytmp,V3D=v_phytmp,TH3D=th_phy,T3D=t_phy      &
443               ,QV3D=qv_curr                                         &
444               ,QC3D=qc_curr                                         &
445               ,QI3D=qi_curr                                         &
446               ,P3D=p_phy,PI3D=pi_phy                                &
447               ,RUBLTEN=rublten,RVBLTEN=rvblten                      &
448               ,RTHBLTEN=rthblten,RQVBLTEN=rqvblten                  &
449               ,RQCBLTEN=rqcblten,RQIBLTEN=rqiblten                  &
450               ,CP=cp,G=g,ROVCP=rcp,R=r_d,ROVG=rovg                  &
451               ,DZ8W=dz8w,Z=z,XLV=xlv,RV=r_v,PSFC=psfc               &
452               ,ZNT=znt,UST=ust,ZOL=zol,HOL=hol                      &
453               ,PBL=pblh,PSIM=psim,PSIH=psih                         &
454               ,XLAND=xland,HFX=hfx,QFX=qfx,TSK=tskold               &
455               ,GZ1OZ0=gz1oz0,WSPD=wspd,BR=br                        &
456               ,DT=dtbl,DTMIN=dtmin,KPBL2D=kpbl                      &
457               ,SVP1=svp1,SVP2=svp2,SVP3=svp3,SVPT0=svpt0            &
458               ,EP1=ep_1,EP2=ep_2,KARMAN=karman,EOMEG=eomeg          &
459               ,STBOLT=stbolt,REGIME=regime                          &
460               ,FLAG_QI=flag_qi                                      &
461               ,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde      &
462               ,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme      &
463               ,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte      &
464                                                                     )
465            ELSE
466                CALL wrf_error_fatal('Lack arguments to call MRF pbl')
467            ENDIF
468 
469       CASE (GFSSCHEME)
470            IF ( PRESENT( qv_curr )  .AND. PRESENT( qc_curr )  .AND. &
471                 PRESENT( rqvblten ) .AND. PRESENT( rqcblten ) .AND. &
472                                                         .TRUE.  ) THEN
473              CALL wrf_debug(100,'in GFS')
474              CALL bl_gfs(                                           &
475                U3D=u_phytmp,V3D=v_phytmp                            &
476               ,TH3D=th_phy,T3D=t_phy                                &
477               ,QV3D=qv_curr,QC3D=qc_curr,QI3D=qi_curr               &
478               ,P3D=p_phy,PI3D=pi_phy                                &
479               ,RUBLTEN=rublten,RVBLTEN=rvblten,RTHBLTEN=rthblten    &
480               ,RQVBLTEN=rqvblten,RQCBLTEN=rqcblten                  &
481               ,RQIBLTEN=rqiblten                                    &
482               ,CP=cp,G=g,ROVCP=rcp,R=r_d,ROVG=rovg,FLAG_QI=flag_qi  &
483               ,DZ8W=dz8w,z=z,PSFC=psfc                              &
484               ,UST=ust,PBL=pblh,PSIM=psim,PSIH=psih                 &
485               ,HFX=hfx,QFX=qfx,TSK=tskold,GZ1OZ0=gz1oz0             &
486               ,WSPD=wspd,BR=br                                      &
487               ,DT=dtbl,KPBL2D=kpbl,EP1=ep_1,KARMAN=karman           &
488               ,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde      &
489               ,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme      &
490               ,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte      &
491                                                                     )
492            ELSE
493                CALL wrf_error_fatal('Lack arguments to call GFS pbl')
494            ENDIF
495 
496       CASE (MYJPBLSCHEME)
497            IF ( PRESENT( qv_curr )  .AND. PRESENT( qc_curr )  .AND. &
498                 PRESENT( rqvblten ) .AND. PRESENT( rqcblten ) .AND. &
499                                                         .TRUE.  ) THEN
500 
501              CALL wrf_debug(100,'in MYJPBL')
502              CALL myjpbl(                                           &
503                DT=dt,STEPBL=stepbl,HT=ht,DZ=dz8w                    &
504               ,PMID=p_phy,PINT=p8w,TH=th_phy,T=t_phy,EXNER=pi_phy   &
505               ,QV=qv_curr, CWM=qc_curr                               &
506               ,U=u_phy,V=v_phy,RHO=rho                              &
507               ,TSK=tsk,QSFC=qsfc,CHKLOWQ=chklowq,THZ0=thz0          &
508               ,QZ0=qz0,UZ0=uz0,VZ0=vz0                              &
509               ,LOWLYR=lowlyr                                        &
510               ,XLAND=xland,SICE=xice,SNOW=snow                      &
511               ,TKE_MYJ=tke_myj,EXCH_H=exch_h,USTAR=ust,ZNT=znt      &
512               ,EL_MYJ=el_myj,PBLH=pblh,KPBL=kpbl,CT=ct              &
513               ,AKHS=akhs,AKMS=akms,ELFLX=lh                         &
514               ,RUBLTEN=rublten,RVBLTEN=rvblten,RTHBLTEN=rthblten    &
515               ,RQVBLTEN=rqvblten,RQCBLTEN=rqcblten                  &
516               ,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde      &
517               ,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme      &
518               ,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte      &
519                                                                     )
520            ELSE
521                CALL wrf_error_fatal('Lack arguments to call MYJ pbl')
522            ENDIF
523 
524      CASE DEFAULT
525 
526        WRITE( message , * ) 'The pbl option does not exist: bl_pbl_physics = ', bl_pbl_physics
527        CALL wrf_error_fatal ( message )
528 
529    END SELECT pbl_select
530 
531    ENDDO
532    !$OMP END PARALLEL DO
533 
534    ENDIF
535 !
536    END SUBROUTINE pbl_driver
537 END MODULE module_pbl_driver