2 &, od,tausf1,clfnet,clhtr,fnet,htr,totdfluc,totdflux,totufluc,totuflux &
3 &, tavel,pz,tz,tbound,pfrac,semiss,semislw,ireflect)
39 integer_m :: icldlyr(
jplay)
40 real_b :: cldfrac(
jplay)
45 real_b :: clfnet(0:
jplay)
46 real_b :: clhtr(0:
jplay)
47 real_b :: fnet(0:
jplay)
48 real_b :: htr(0:
jplay)
49 real_b :: totdfluc(0:
jplay)
50 real_b :: totdflux(0:
jplay)
51 real_b :: totufluc(0:
jplay)
52 real_b :: totuflux(0:
jplay)
55 real_b :: tavel(
jplay)
72 real_b :: bglev(
jpgpt)
107 integer_m :: iband, iclddn, ient, indbound, index, ipr, lay, lev, nbi
110 real_b :: bbd, bbdtot, bglay, cldsrc, dbdtlay, dbdtlev,&
111 &delbgdn, delbgup, drad1, dradcl1, factot1, &
112 &fmax, fmin, gassrc, odsm, plankbnd, radcld, &
113 &radclu, radd, radmod, radu, rat1, rat2, sumpl, &
114 &sumplem, tbndfrac, trns, ttot, urad1, uradcl1
197 IF (tbound < 339._jprb .AND. tbound >= 160._jprb )
THEN
198 indbound = tbound - 159._jprb
199 tbndfrac = tbound - int(tbound)
200 ELSE IF (tbound >= 339._jprb )
THEN
202 tbndfrac = tbound - 339._jprb
203 ELSE IF (tbound < 160._jprb )
THEN
205 tbndfrac = tbound - 160._jprb
210 totufluc(lay) = _zero_
211 totdfluc(lay) = _zero_
212 totuflux(lay) = _zero_
213 totdflux(lay) = _zero_
215 IF (tz(lay) < 339._jprb .AND. tz(lay) >= 160._jprb )
THEN
216 indlev(lay) = tz(lay) - 159._jprb
217 tlevfrac(lay) = tz(lay) - int(tz(lay))
218 ELSE IF (tz(lay) >= 339._jprb )
THEN
220 tlevfrac(lay) = tz(lay) - 339._jprb
221 ELSE IF (tz(lay) < 160._jprb )
THEN
223 tlevfrac(lay) = tz(lay) - 160._jprb
230 faccld1(lev+1) = _zero_
231 faccld2(lev+1) = _zero_
232 facclr1(lev+1) = _zero_
233 facclr2(lev+1) = _zero_
234 faccmb1(lev+1) = _zero_
235 faccmb2(lev+1) = _zero_
236 faccld1d(lev) = _zero_
237 faccld2d(lev) = _zero_
238 facclr1d(lev) = _zero_
239 facclr2d(lev) = _zero_
240 faccmb1d(lev) = _zero_
241 faccmb2d(lev) = _zero_
258 IF (tavel(lev) < 339._jprb .AND. tavel(lev) >= 160._jprb )
THEN
259 indlay(lev) = tavel(lev) - 159._jprb
260 tlayfrac(lev) = tavel(lev) - int(tavel(lev))
261 ELSE IF (tavel(lev) >= 339._jprb )
THEN
263 tlayfrac(lev) = tavel(lev) - 339._jprb
264 ELSE IF (tavel(lev) < 160._jprb )
THEN
266 tlayfrac(lev) = tavel(lev) - 160._jprb
276 IF (icldlyr(lev) == 1)
THEN
280 IF (lev ==
klev)
THEN
281 faccld1(lev+1) = _zero_
282 faccld2(lev+1) = _zero_
283 facclr1(lev+1) = _zero_
284 facclr2(lev+1) = _zero_
289 ELSEIF (cldfrac(lev+1) >= cldfrac(lev))
THEN
290 faccld1(lev+1) = _zero_
291 faccld2(lev+1) = _zero_
292 IF (istcld(lev) == 1)
THEN
294 facclr1(lev+1) = _zero_
296 facclr2(lev+1) = _zero_
297 IF (cldfrac(lev) < _one_)
THEN
298 facclr2(lev+1) = (cldfrac(lev+1)-cldfrac(lev))/&
299 &(_one_-cldfrac(lev))
302 fmax = max(cldfrac(lev),cldfrac(lev-1))
304 IF (cldfrac(lev+1) > fmax)
THEN
305 facclr1(lev+1) = rat2
306 facclr2(lev+1) = (cldfrac(lev+1)-fmax)/(_one_-fmax)
308 ELSE IF (cldfrac(lev+1) < fmax)
THEN
309 facclr1(lev+1) = (cldfrac(lev+1)-cldfrac(lev))/&
310 &(cldfrac(lev-1)-cldfrac(lev))
311 facclr2(lev+1) = _zero_
314 facclr1(lev+1) = rat2
315 facclr2(lev+1) = _zero_
318 IF (facclr1(lev+1) > _zero_ .OR. facclr2(lev+1) > _zero_)
THEN
323 facclr1(lev+1) = _zero_
324 facclr2(lev+1) = _zero_
325 IF (istcld(lev) == 1)
THEN
327 faccld1(lev+1) = _zero_
328 faccld2(lev+1) = (cldfrac(lev)-cldfrac(lev+1))/cldfrac(lev)
330 fmin = min(cldfrac(lev),cldfrac(lev-1))
331 IF (cldfrac(lev+1) <= fmin)
THEN
332 faccld1(lev+1) = rat1
333 faccld2(lev+1) = (fmin-cldfrac(lev+1))/fmin
335 faccld1(lev+1) = (cldfrac(lev)-cldfrac(lev+1))/&
337 faccld2(lev+1) = _zero_
340 IF (faccld1(lev+1) > _zero_ .OR. faccld2(lev+1) > _zero_)
THEN
348 faccmb2(lev+1) = faccld1(lev+1) * facclr2(lev)
350 faccmb1(lev+1) = facclr1(lev+1) * faccld2(lev) *cldfrac(lev-1)
351 faccmb2(lev+1) = faccld1(lev+1) * facclr2(lev) *&
352 &(_one_ - cldfrac(lev-1))
370 IF (icldlyr(lev) == 1)
THEN
374 faccld1d(lev-1) = _zero_
375 faccld2d(lev-1) = _zero_
376 facclr1d(lev-1) = _zero_
377 facclr2d(lev-1) = _zero_
378 faccmb1d(lev-1) = _zero_
379 faccmb2d(lev-1) = _zero_
381 ELSEIF (cldfrac(lev-1) >= cldfrac(lev))
THEN
382 faccld1d(lev-1) = _zero_
383 faccld2d(lev-1) = _zero_
384 IF (istcldd(lev) == 1)
THEN
386 facclr1d(lev-1) = _zero_
387 facclr2d(lev-1) = _zero_
388 IF (cldfrac(lev) < _one_)
THEN
389 facclr2d(lev-1) = (cldfrac(lev-1)-cldfrac(lev))/&
390 &(_one_-cldfrac(lev))
393 fmax = max(cldfrac(lev),cldfrac(lev+1))
395 IF (cldfrac(lev-1) > fmax)
THEN
396 facclr1d(lev-1) = rat2
397 facclr2d(lev-1) = (cldfrac(lev-1)-fmax)/(_one_-fmax)
399 ELSE IF (cldfrac(lev-1) < fmax)
THEN
400 facclr1d(lev-1) = (cldfrac(lev-1)-cldfrac(lev))/&
401 &(cldfrac(lev+1)-cldfrac(lev))
402 facclr2d(lev-1) = _zero_
405 facclr1d(lev-1) = rat2
406 facclr2d(lev-1) = _zero_
409 IF (facclr1d(lev-1) > _zero_ .OR. facclr2d(lev-1) > _zero_)
THEN
414 facclr1d(lev-1) = _zero_
415 facclr2d(lev-1) = _zero_
416 IF (istcldd(lev) == 1)
THEN
418 faccld1d(lev-1) = _zero_
419 faccld2d(lev-1) = (cldfrac(lev)-cldfrac(lev-1))/cldfrac(lev)
421 fmin = min(cldfrac(lev),cldfrac(lev+1))
422 IF (cldfrac(lev-1) <= fmin)
THEN
423 faccld1d(lev-1) = rat1
424 faccld2d(lev-1) = (fmin-cldfrac(lev-1))/fmin
426 faccld1d(lev-1) = (cldfrac(lev)-cldfrac(lev-1))/&
428 faccld2d(lev-1) = _zero_
431 IF (faccld1d(lev-1) > _zero_ .OR. faccld2d(lev-1) > _zero_)
THEN
436 faccmb1d(lev-1) = facclr1d(lev-1) * faccld2d(lev) *cldfrac(lev+1)
437 faccmb2d(lev-1) = faccld1d(lev-1) * facclr2d(lev) *&
438 &(_one_ - cldfrac(lev+1))
447 DO iband = istart, iend
449 plankbnd =
delwave(iband) * (
totplnk(indbound,iband) + tbndfrac * dbdtlev)
452 plvl(0,iband) =
delwave(iband)&
453 &* (
totplnk(indlev(0),iband) + tlevfrac(0)*dbdtlev)
455 surfemis(iband) = semiss(iband)
456 plnkemit(iband) = surfemis(iband) * plankbnd
457 sumplem = sumplem + plnkemit(iband)
458 sumpl = sumpl + plankbnd
464 DO iband = istart, iend
470 dbdtlev =
totplnk(indlev(lev)+1,iband) -
totplnk(indlev(lev),iband)
471 dbdtlay =
totplnk(indlay(lev)+1,iband) -
totplnk(indlay(lev),iband)
474 &*(
totplnk(indlay(lev),iband)+tlayfrac(lev)*dbdtlay)
475 plvl(lev,iband) =
delwave(iband)&
476 &*(
totplnk(indlev(lev),iband)+tlevfrac(lev)*dbdtlev)
477 IF (icldlyr(lev) > 0)
THEN
478 trncld(lev,iband) = exp(-taucld(lev,iband))
485 semislw = sumplem / sumpl
492 zplay(ipr,lev) =
play(lev,nbi)
493 zplvl(ipr,lev) = plvl(lev-1,nbi)
494 ztaucld(ipr,lev) = taucld(lev,nbi)
495 ztrncld(ipr,lev) = trncld(lev,nbi)
503 IF (icldlyr(lev) > 0)
THEN
507 odcldnw(ipr,lev) = ztaucld(ipr,lev)
508 abscldnw(ipr,lev) = _one_ - ztrncld(ipr,lev)
517 radclrd1(ipr) = _zero_
520 semis(ipr) = surfemis(nbi)
521 raduemit(ipr) = pfrac(ipr,1) * plnkemit(nbi)
523 bglev(ipr) = pfrac(ipr,
klev) * plvl(
klev,nbi)
535 IF (icldlyr(lev) == 1)
THEN
539 ient =
jpgpt * (lev-1)
544 bglay = pfrac(ipr,lev) * zplay(ipr,lev)
546 delbgup = bglev(ipr) - bglay
547 bbu1(index) = bglay + tausf1(index) * delbgup
549 bglev(ipr) = pfrac(ipr,lev) * zplvl(ipr,lev)
551 delbgdn = bglev(ipr) - bglay
552 bbd = bglay + tausf1(index) * delbgdn
554 odsm = od(ipr,lev) + odcldnw(ipr,lev)
555 factot1 = odsm / (
bpade + odsm)
556 bbutot1(index) = bglay + factot1 * delbgup
557 atot1(index) = abss1(index) + abscldnw(ipr,lev)&
558 &- abss1(index) * abscldnw(ipr,lev)
559 bbdtot = bglay + factot1 * delbgdn
560 gassrc = bbd * abss1(index)
562 IF (istcldd(lev) == 1)
THEN
563 cldradd(ipr) = cldfrac(lev) * radld1(ipr)
564 clrradd(ipr) = radld1(ipr) - cldradd(ipr)
565 oldcld(ipr) = cldradd(ipr)
566 oldclr(ipr) = clrradd(ipr)
569 ttot = _one_ - atot1(index)
570 cldsrc = bbdtot * atot1(index)
573 cldradd(ipr) = cldradd(ipr) * ttot + cldfrac(lev) * cldsrc
574 clrradd(ipr) = clrradd(ipr) * (_one_-abss1(index)) +&
575 &(_one_ - cldfrac(lev)) * gassrc
578 radld1(ipr) = cldradd(ipr) + clrradd(ipr)
579 drad1 = drad1 + radld1(ipr)
582 radclrd1(ipr) = radclrd1(ipr)+(bbd-radclrd1(ipr))*abss1(index)
583 dradcl1 = dradcl1 + radclrd1(ipr)
588 radmod =
rad(ipr) * (facclr1d(lev-1) * (_one_-abss1(index)) +&
589 &faccld1d(lev-1) * ttot) - &
590 &faccmb1d(lev-1) * gassrc + &
591 &faccmb2d(lev-1) * cldsrc
595 oldcld(ipr) = cldradd(ipr) - radmod
596 oldclr(ipr) = clrradd(ipr) + radmod
599 rad(ipr) = -radmod + facclr2d(lev-1)*oldclr(ipr) -&
600 &faccld2d(lev-1)*oldcld(ipr)
601 cldradd(ipr) = cldradd(ipr) +
rad(ipr)
602 clrradd(ipr) = clrradd(ipr) -
rad(ipr)
613 ient =
jpgpt * (lev-1)
614 IF (iclddn == 1)
THEN
619 bglay = pfrac(ipr,lev) * zplay(ipr,lev)
621 delbgup = bglev(ipr) - bglay
622 bbu1(index) = bglay + tausf1(index) * delbgup
624 bglev(ipr) = pfrac(ipr,lev) * zplvl(ipr,lev)
626 delbgdn = bglev(ipr) - bglay
627 bbd = bglay + tausf1(index) * delbgdn
630 radld1(ipr) = radld1(ipr)+(bbd-radld1(ipr))*abss1(index)
631 drad1 = drad1 + radld1(ipr)
636 radclrd1(ipr) = radclrd1(ipr)+(bbd-radclrd1(ipr))*abss1(index)
637 dradcl1 = dradcl1 + radclrd1(ipr)
646 bglay = pfrac(ipr,lev) * zplay(ipr,lev)
648 delbgup = bglev(ipr) - bglay
649 bbu1(index) = bglay + tausf1(index) * delbgup
651 bglev(ipr) = pfrac(ipr,lev) * zplvl(ipr,lev)
653 delbgdn = bglev(ipr) - bglay
654 bbd = bglay + tausf1(index) * delbgdn
656 radld1(ipr) = radld1(ipr)+(bbd-radld1(ipr))*abss1(index)
657 drad1 = drad1 + radld1(ipr)
661 radclrd1(ipr) = radld1(ipr)
668 totdfluc(lev-1) = dradcl1 * wtnum(1)
669 totdflux(lev-1) = drad1 * wtnum(1)
692 radcld = radclrd1(ipr)
693 radclru1(ipr) = raduemit(ipr) + (_one_ - semis(ipr)) * radcld
694 uradcl1 = uradcl1 + radclru1(ipr)
699 radlu1(ipr) = raduemit(ipr) + (_one_ - semis(ipr)) * radd
700 urad1 = urad1 + radlu1(ipr)
702 totufluc(0) = uradcl1 * _half_
703 totuflux(0) = urad1 * _half_
727 IF (icldlyr(lev) == 1)
THEN
730 ient =
jpgpt * (lev-1)
734 gassrc = bbu1(index) * abss1(index)
738 IF (istcld(lev) == 1)
THEN
739 cldradu(ipr) = cldfrac(lev) * radlu1(ipr)
740 clrradu(ipr) = radlu1(ipr) - cldradu(ipr)
741 oldcld(ipr) = cldradu(ipr)
742 oldclr(ipr) = clrradu(ipr)
745 ttot = _one_ - atot1(index)
746 trns = _one_ - abss1(index)
747 cldsrc = bbutot1(index) * atot1(index)
750 cldradu(ipr) = cldradu(ipr) * ttot + cldfrac(lev) * cldsrc
751 clrradu(ipr) = clrradu(ipr) * trns +(_one_ - cldfrac(lev)) * gassrc
755 radlu1(ipr) = cldradu(ipr) + clrradu(ipr)
756 urad1 = urad1 + radlu1(ipr)
759 radclru1(ipr) = radclru1(ipr) + (bbu1(index)-radclru1(ipr))&
761 uradcl1 = uradcl1 + radclru1(ipr)
766 radmod =
rad(ipr) * (facclr1(lev+1) * trns +&
767 &faccld1(lev+1) * ttot) - &
768 &faccmb1(lev+1) * gassrc + &
769 &faccmb2(lev+1) * cldsrc
773 oldcld(ipr) = cldradu(ipr) - radmod
774 oldclr(ipr) = clrradu(ipr) + radmod
777 rad(ipr) = -radmod + facclr2(lev+1)*oldclr(ipr) -&
778 &faccld2(lev+1)*oldcld(ipr)
779 cldradu(ipr) = cldradu(ipr) +
rad(ipr)
780 clrradu(ipr) = clrradu(ipr) -
rad(ipr)
787 ient =
jpgpt * (lev-1)
791 radlu1(ipr) = radlu1(ipr)+(bbu1(index)-radlu1(ipr))*abss1(index)
792 urad1 = urad1 + radlu1(ipr)
796 radclru1(ipr) = radclru1(ipr)+(bbu1(index)-radclru1(ipr))*abss1(index)
797 uradcl1 = uradcl1 + radclru1(ipr)
802 totufluc(lev) = uradcl1 * wtnum(1)
803 totuflux(lev) = urad1 * wtnum(1)
integer(kind=jpim), dimension(jpgpt) ngb
integer(kind=jpim), parameter jpgpt
integer(kind=jpim), parameter jpband
!$Id mode_top_bound COMMON comconstr rad
real(kind=jprb), dimension(181, 16) totplnk
integer(kind=jpim), parameter jplay
real(kind=jprb), dimension(16) delwave
!$Id Turb_fcg!implicit none!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc!cette routine permet d obtenir hq et ainsi de!pouvoir calculer la convergence et le cisaillement dans la physiq!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc INTEGER klev REAL in CHARACTER file_fordat COMMON com1_phys_gcss play
subroutine rrtm_rtrn1a_140gp(KLEV, K_ISTART, K_IEND, K_ICLDLYR, P_CLDFRAC, P_TAUCLD, P_ABSS1, P_OD, P_TAUSF1, P_CLFNET, P_CLHTR, P_FNET, P_HTR, P_TOTDFLUC, P_TOTDFLUX, P_TOTUFLUC, P_TOTUFLUX, P_TAVEL, PZ, P_TZ, P_TBOUND, PFRAC, P_SEMISS, P_SEMISLW, K_IREFLECT)