119 SUBROUTINE glt_precip_r( orain,osnow,tpmxl,tpatm,tpsit,tpsil,tptfl,tpdia, &
126 USE modi_glt_updtfl_r
130 LOGICAL,
DIMENSION(np),
INTENT(in) :: &
132 TYPE(t_mxl),
DIMENSION(np),
INTENT(in) :: &
134 TYPE(t_atm),
DIMENSION(np),
INTENT(in) :: &
136 TYPE(t_sit),
DIMENSION(nt,np),
INTENT(inout) :: &
138 TYPE(t_vtp),
DIMENSION(nl,nt,np),
INTENT(inout) :: &
140 TYPE(t_tfl),
DIMENSION(np),
INTENT(inout) :: &
142 TYPE(t_dia),
DIMENSION(np),
INTENT(inout) :: &
144 REAL,
DIMENSION(nt,np),
INTENT(inout) :: &
149 INTEGER,
PARAMETER :: &
151 REAL,
DIMENSION(np) :: &
152 zpcps,zpcpr,zfsit,zwork,zqm
153 REAL,
DIMENSION(nt,np) :: &
154 zrsn,zhsn,zmsn,zt,zdmwat,zent,zentsn,zsalt
155 real,
dimension(np) :: zei1,zei2,zes1,zes2
185 zrsn(:,:) = tpsit(:,:)%rsn
191 zentsn(:,:) = tpsil(nl,:,:)%ent
193 WHERE( tpsit(:,:)%esi .AND. tpsit(:,:)%hsn<epsil1 )
194 tpsil(jl,:,:)%ent = zentsn(:,:)
205 WHERE ( tpsit(:,:)%esi )
206 tpsit(:,:)%rsn = rhosnwmax + &
207 (tpsit(:,:)%rsn-rhosnwmax)*exp(-tauf*dtt/xday2sec)
209 tpsit(:,:)%hsn * zrsn(:,:) / tpsit(:,:)%rsn
212 WHERE ( .NOT.tpsit(:,:)%esi )
213 tpsit(:,:)%rsn = rhosnwmin
225 zpcps(:) = dtt * tpatm(:)%sop
226 zpcpr(:) = dtt * tpatm(:)%lip
244 zhsn(jk,:) = tpsit(jk,:)%hsn
245 zrsn(jk,:) = tpsit(jk,:)%rsn
246 zmsn(jk,:) = zhsn(jk,:)*zrsn(jk,:)
250 WHERE ( orain(:) .AND. tpsit(jk,:)%esi .AND. &
255 ( zmsn(jk,:) + zpcpr(:) ) / zhsn(jk,:)
256 zwork(:) = zpcpr(:)*tpsit(jk,:)%fsi / dtt
260 tpdia(:)%o_pr = tpdia(:)%o_pr + zpcpr(:)*tpsit(jk,:)%fsi / dtt - zwork(:)
261 tpdia(:)%s_pr = tpdia(:)%s_pr + zwork(:)
268 WHERE ( orain(:) .AND. tpsit(jk,:)%esi .AND. &
270 tptfl(:)%wlo = tptfl(:)%wlo + &
271 tpsit(jk,:)%fsi*zpcpr(:)/dtt
288 IF ( nrn2ice == 1 )
THEN
290 WHERE ( orain(:) .AND. tpsit(jk,:)%esi .AND. &
291 tpsit(jk,:)%hsn>epsil1 .AND. &
292 tpsit(jk,:)%rsn>rhosnwmax .AND. tpsit(jk,:)%rsn<rhoice )
293 tpsit(jk,:)%hsi = tpsit(jk,:)%hsi + tpsit(jk,:)%hsn* &
294 (tpsit(jk,:)%rsn-rhosnwmax)/(rhoice-rhosnwmax)
295 tpsit(jk,:)%hsn = tpsit(jk,:)%hsn* &
296 (rhoice-tpsit(jk,:)%rsn)/(rhoice-rhosnwmax)
297 tpsit(jk,:)%rsn = rhosnwmax
303 WHERE ( orain(:) .AND. tpsit(jk,:)%esi .AND. &
304 tpsit(jk,:)%hsn>epsil1 .AND. tpsit(jk,:)%rsn>rhoice )
305 tpsit(jk,:)%hsi = tpsit(jk,:)%hsi + tpsit(jk,:)%hsn
307 tpsit(jk,:)%rsn = rhosnwmin
313 WHERE ( orain(:) .AND. tpsit(jk,:)%esi .AND. pqmelt(jk,:)>0. )
314 tpsit(jk,:)%hsn = tpsit(jk,:)%hsn - &
315 dtt*pqmelt(jk,:) / ( xmhofusn0*tpsit(jk,:)%rsn )
316 pqmelt(jk,:) = -amin1( 0.,tpsit(jk,:)%hsn )* &
317 xmhofusn0*tpsit(jk,:)%rsn / dtt
323 WHERE ( orain(:) .AND. &
324 (.NOT. tpsit(jk,:)%esi .OR. tpsit(jk,:)%hsn<epsil1) )
326 tpsit(jk,:)%rsn = rhosnwmin
337 WHERE ( orain(:) .AND. tpsit(jk,:)%esi .AND. &
338 tpsit(jk,:)%hsn>epsil1 .AND. tpsit(jk,:)%rsn>rhosnwmax )
339 zdmwat(jk,:) = -zhsn(jk,:)*tpsit(jk,:)%fsi* &
340 ( tpsit(jk,:)%rsn-rhosnwmax )
341 tpsit(jk,:)%rsn = rhosnwmax
346 tpdia(:)%s_pr = tpdia(:)%s_pr + zdmwat(jk,:) / dtt
347 tpdia(:)%o_pr = tpdia(:)%o_pr - zdmwat(jk,:) / dtt
356 WHERE ( osnow(:) .AND. tpsit(jk,:)%esi )
360 tpsit(jk,:)%hsn*tpsit(jk,:)%rsn + zpcps(:)
364 tpsit(jk,:)%hsn + zpcps(:)/rhosnwmin
368 zqm(:) / tpsit(jk,:)%hsn
369 zwork(:) = zpcps(:) * tpsit(jk,:)%fsi / dtt
371 tpdia(:)%s_prsn = tpdia(:)%s_prsn + zwork(:)
374 WHERE ( osnow(:) .AND. .NOT.tpsit(jk,:)%esi )
376 tpsit(jk,:)%rsn = rhosnwmin
377 zwork(:) = zpcps(:) * tpsit(jk,:)%fsi / dtt
379 tpdia(:)%o_prsn = tpdia(:)%o_prsn + zwork(:)
388 if ( orain(jp) .AND. tpsit(jk,jp)%esi .AND. &
389 tpsit(jk,jp)%hsn>epsil1 )
then
397 tpsil(jl,jk,jp)%ent = &
398 tpsil(jl,jk,jp)%ent* ( zmsn(jk,jp) + zpcps(jp) ) / &
399 ( tpsit(jk,jp)%rsn * tpsit(jk,jp)%hsn )
430 IF ( nrn2ice==0 )
THEN
438 zt(:,:) = tpsit(:,:)%rsn
439 tpsit(:,:)%rsn = amax1( zt(:,:),rhosnwmin )
440 zt(:,:) = tpsit(:,:)%rsn
441 tpsit(:,:)%rsn = amin1( zt(:,:),rhosnwmax )
442 zt(:,:) = tpsit(:,:)%hsn
443 tpsit(:,:)%hsn = amax1( zt(:,:),0. )
451 zfsit(:) = sum( tpsit(:,:)%fsi ,dim=1 )
455 tpdia(:)%lip = zfsit(:)*tpatm(:)%lip
459 tpdia(:)%sop = zfsit(:)*tpatm(:)%sop
subroutine glt_updtfl_r(hflag, tpmxl, tptfl, pdmass, pent, psalt)
subroutine glt_precip_r(orain, osnow, tpmxl, tpatm, tpsit, tpsil, tptfl, tpdia, pqmelt)