44 LIA, LIS, LIE, LJA, LJS, LJE, &
53 ZMFLX, XMFLX, YMFLX, &
54 Ustar, Tstar, Qstar, &
68 qsat => atmos_saturation_dens2qsat_all
72 bulkflux_diagnose_surface
74 integer,
intent(in) :: lia, lis, lie
75 integer,
intent(in) :: lja, ljs, lje
77 real(
rp),
intent(in) :: snow_frac(lia,lja)
78 real(
rp),
intent(in) :: tmpa(lia,lja)
79 real(
rp),
intent(in) :: prsa(lia,lja)
80 real(
rp),
intent(in) :: wa (lia,lja)
81 real(
rp),
intent(in) :: ua (lia,lja)
82 real(
rp),
intent(in) :: va (lia,lja)
83 real(
rp),
intent(in) :: rhoa(lia,lja)
84 real(
rp),
intent(in) :: qva (lia,lja)
85 real(
rp),
intent(in) :: z1 (lia,lja)
86 real(
rp),
intent(in) :: pbl (lia,lja)
87 real(
rp),
intent(in) :: rhos(lia,lja)
88 real(
rp),
intent(in) :: prss(lia,lja)
90 real(
rp),
intent(in) :: lst1 (lia,lja)
91 real(
rp),
intent(in) :: qvef (lia,lja)
93 real(
rp),
intent(in) :: z0m (lia,lja)
94 real(
rp),
intent(in) :: z0h (lia,lja)
95 real(
rp),
intent(in) :: z0e (lia,lja)
97 real(
rp),
intent(out) :: zmflx(lia,lja)
98 real(
rp),
intent(out) :: xmflx(lia,lja)
99 real(
rp),
intent(out) :: ymflx(lia,lja)
100 real(
rp),
intent(out) :: ustar(lia,lja)
101 real(
rp),
intent(out) :: tstar(lia,lja)
102 real(
rp),
intent(out) :: qstar(lia,lja)
103 real(
rp),
intent(out) :: wstar(lia,lja)
104 real(
rp),
intent(out) :: rlmo (lia,lja)
105 real(
rp),
intent(out) :: u10 (lia,lja)
106 real(
rp),
intent(out) :: v10 (lia,lja)
107 real(
rp),
intent(out) :: t2 (lia,lja)
108 real(
rp),
intent(out) :: q2 (lia,lja)
116 real(
rp) :: qvs(lia,lja)
120 real(
rp) :: fracu10(lia,lja)
121 real(
rp) :: fract2 (lia,lja)
122 real(
rp) :: fracq2 (lia,lja)
126 logical :: calc_flag(lia,lja)
131 log_info(
"LAND_PHY_SNOW_DIAGS",*)
'Snow surface diagnostic'
139 if( snow_frac(i,j) > 0.0_rp )
then
141 calc_flag(i,j) = .true.
148 call qsat( lst1(i,j), rhos(i,j), &
151 qvs(i,j) = ( 1.0_rp - qvef(i,j) ) * qva(i,j) + qvef(i,j) * qvsat
153 uabs = sqrt( wa(i,j)**2 + ua(i,j)**2 + va(i,j)**2 )
155 call bulkflux( tmpa(i,j), lst1(i,j), &
156 prsa(i,j), prss(i,j), &
157 qva(i,j), qvs(i,j), &
158 uabs, z1(i,j), pbl(i,j), &
159 z0m(i,j), z0h(i,j), z0e(i,j), &
160 ustar(i,j), tstar(i,j), qstar(i,j), &
161 wstar(i,j), rlmo(i,j), ra, &
162 fracu10(i,j), fract2(i,j), fracq2(i,j) )
164 if ( uabs < eps )
then
169 mflux = - rhos(i,j) * ustar(i,j)**2
170 zmflx(i,j) = mflux * wa(i,j) / uabs
171 xmflx(i,j) = mflux * ua(i,j) / uabs
172 ymflx(i,j) = mflux * va(i,j) / uabs
179 calc_flag(i,j) = .false.
199 call bulkflux_diagnose_surface( lia, lis, lie, lja, ljs, lje, &
201 tmpa(:,:), qva(:,:), &
202 lst1(:,:), qvs(:,:), &
203 z1(:,:), z0m(:,:), z0h(:,:), z0e(:,:), &
204 u10(:,:), v10(:,:), t2(:,:), q2(:,:), &
205 mask = calc_flag(:,:), &
206 fracu10 = fracu10(:,:), &
207 fract2 = fract2(:,:), &
208 fracq2 = fracq2(:,:) )