1 !WRF:MODEL_LAYER:PHYSICS
3 MODULE module_bl_surface_drag
8 SUBROUTINE surface_drag (rublten, rvblten, u_phy, v_phy, xland, &
10 ids, ide, jds, jde, kds, kde, &
11 ims, ime, jms, jme, kms, kme, &
12 its, ite, jts, jte, kts, kte )
16 INTEGER , INTENT(IN ) :: ids, ide, jds, jde, kds, kde, &
17 ims, ime, jms, jme, kms, kme, &
18 its, ite, jts, jte, kts, kte
20 INTEGER, DIMENSION( ims:ime, jms:jme ) , &
21 INTENT( OUT) :: kpbl2d
23 REAL , DIMENSION( ims:ime , kms:kme, jms:jme ) , &
24 INTENT(INOUT) :: rublten, &
26 REAL , DIMENSION( ims:ime , kms:kme, jms:jme ) , &
27 INTENT(IN ) :: u_phy, &
30 REAL , DIMENSION( ims:ime , jms:jme ), INTENT(IN) :: xland, ht
33 REAL :: V0, tao_xz, tao_yz, cd, zh, zwt
34 INTEGER :: i, j, i_start, i_end, i_endu, j_start, j_end, j_endv, k
37 !-----------------------------------------------------------------------
40 i_end = MIN(ite,ide-1)
43 j_end = MIN(jte,jde-1)
47 DO i = i_start, i_endu
49 V0 = sqrt((u_phy(i,kts,j)**2) + &
52 IF ( ABS(xland(i,j)-xland(i-1,j)) .LT. 1.0E-10 ) THEN
53 IF ( xland(i,j) .LT. 1.5 ) THEN
59 Cd=MAX(Cd, 1.e-4 * V0)
68 tao_xz=Cd*V0*u_phy(i,kts,j)
71 zh = (z(i,k,j)-ht(i,j))
72 IF ( zh .LT. 1000. ) THEN
73 zwt = 2. * (1000.-zh) / 1000.
74 rublten(i,k,j)=rublten(i,k,j) &
84 DO j = j_start, j_endv
87 V0 = SQRT((u_phy(i,kts,j)**2) + &
90 IF ( ABS(xland(i,j)-xland(i,j-1)) .LT. 1.0E-10 ) THEN
91 IF ( xland(i,j) .LT. 1.5 ) THEN
97 Cd=MAX(Cd, 1.e-4 * V0)
105 tao_yz=Cd*V0*v_phy(i,kts,j)
108 zh = (z(i,k,j)-ht(i,j))
109 IF ( zh .LT. 1000. ) THEN
110 zwt = 2. * (1000.-zh) / 1000.
111 rvblten(i,k,j)= rvblten(i,k,j) &
112 -zwt*0.5*tao_yz/1000.
119 END SUBROUTINE surface_drag
121 !===================================================================
122 SUBROUTINE surface_drag_init(RUBLTEN,RVBLTEN,RTHBLTEN, &
124 ids, ide, jds, jde, kds, kde, &
125 ims, ime, jms, jme, kms, kme, &
126 its, ite, jts, jte, kts, kte )
127 !-------------------------------------------------------------------
129 !-------------------------------------------------------------------
130 LOGICAL , INTENT(IN) :: restart
131 INTEGER , INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
132 ims, ime, jms, jme, kms, kme, &
133 its, ite, jts, jte, kts, kte
135 REAL , DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) :: &
140 INTEGER :: i, j, k, itf, jtf, ktf
159 END SUBROUTINE surface_drag_init
161 END MODULE module_bl_surface_drag