Changeset 3408 for LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/radlwsw_m.F90
- Timestamp:
- Oct 25, 2018, 5:23:18 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/radlwsw_m.F90
r3117 r3408 16 16 t,q,wo,& 17 17 cldfra, cldemi, cldtaupd,& 18 ok_ade, ok_aie, flag_aerosol,&18 ok_ade, ok_aie, ok_volcan, flag_aerosol,& 19 19 flag_aerosol_strat,& 20 20 tau_aero, piz_aero, cg_aero,& … … 25 25 ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, & 26 26 heat,heat0,cool,cool0,albpla,& 27 heat_volc, cool_volc,& 27 28 topsw,toplw,solsw,sollw,& 28 29 sollwdown,& … … 100 101 ! ok_ade---input-L- apply the Aerosol Direct Effect or not? 101 102 ! ok_aie---input-L- apply the Aerosol Indirect Effect or not? 103 ! ok_volcan-input-L- activate volcanic diags (SW heat & LW cool rate, SW & LW flux) 102 104 ! flag_aerosol-input-I- aerosol flag from 0 to 6 103 105 ! flag_aerosol_strat-input-I- use stratospheric aerosols flag (0, 1, 2) … … 119 121 ! solswai---output-R- ray. solaire net absorbe a la surface (aerosol ind) 120 122 ! topswai---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol ind) 123 ! 124 ! heat_volc-----output-R- echauffement atmospherique du au forcage volcanique (visible) (K/s) 125 ! cool_volc-----output-R- refroidissement dans l'IR du au forcage volcanique (K/s) 121 126 ! 122 127 ! ATTENTION: swai and swad have to be interpreted in the following manner: … … 192 197 193 198 LOGICAL, INTENT(in) :: ok_ade, ok_aie ! switches whether to use aerosol direct (indirect) effects or not 199 LOGICAL, INTENT(in) :: ok_volcan ! produce volcanic diags (SW/LW heat flux and rate) 194 200 LOGICAL :: lldebug 195 201 INTEGER, INTENT(in) :: flag_aerosol ! takes value 0 (no aerosol) or 1 to 6 (aerosols) … … 226 232 REAL, INTENT(out) :: heat(KLON,KLEV), cool(KLON,KLEV) 227 233 REAL, INTENT(out) :: heat0(KLON,KLEV), cool0(KLON,KLEV) 234 REAL, INTENT(out) :: heat_volc(KLON,KLEV), cool_volc(KLON,KLEV) !NL 228 235 REAL, INTENT(out) :: topsw(KLON), toplw(KLON) 229 236 REAL, INTENT(out) :: solsw(KLON), sollw(KLON), albpla(KLON) … … 292 299 REAL(KIND=8) zheat(kdlon,kflev), zcool(kdlon,kflev) 293 300 REAL(KIND=8) zheat0(kdlon,kflev), zcool0(kdlon,kflev) 301 REAL(KIND=8) zheat_volc(kdlon,kflev), zcool_volc(kdlon,kflev) !NL 294 302 REAL(KIND=8) ztopsw(kdlon), ztoplw(kdlon) 295 303 REAL(KIND=8) zsolsw(kdlon), zsollw(kdlon), zalbpla(kdlon) … … 306 314 REAL(KIND=8) ztopswad0aero(kdlon), zsolswad0aero(kdlon) ! Aerosol direct forcing at TOAand surface 307 315 REAL(KIND=8) ztopswaiaero(kdlon), zsolswaiaero(kdlon) ! dito, indirect 316 !--NL 317 REAL(KIND=8) zswadaero(kdlon,kflev+1) ! SW Aerosol direct forcing 318 REAL(KIND=8) zlwadaero(kdlon,kflev+1) ! LW Aerosol direct forcing 308 319 !-LW by CK 309 320 REAL(KIND=8) ztoplwadaero(kdlon), zsollwadaero(kdlon) ! LW Aerosol direct forcing at TOAand surface … … 413 424 heat(i,k)=0. 414 425 cool(i,k)=0. 426 heat_volc(i,k)=0. !NL 427 cool_volc(i,k)=0. !NL 415 428 heat0(i,k)=0. 416 429 cool0(i,k)=0. … … 544 557 !--- Mise a zero des tableaux output du rayonnement LW-AR4 ---------- 545 558 DO k = 1, kflev+1 559 DO i = 1, kdlon 560 ! print *,'RADLWSW: boucle mise a zero i k',i,k 561 ZFLUP(i,k)=0. 562 ZFLDN(i,k)=0. 563 ZFLUP0(i,k)=0. 564 ZFLDN0(i,k)=0. 565 ZLWFT0_i(i,k)=0. 566 ZFLUCUP_i(i,k)=0. 567 ZFLUCDWN_i(i,k)=0. 568 ENDDO 569 ENDDO 570 DO k = 1, kflev 571 DO i = 1, kdlon 572 zcool(i,k)=0. 573 zcool_volc(i,k)=0. !NL 574 zcool0(i,k)=0. 575 ENDDO 576 ENDDO 546 577 DO i = 1, kdlon 547 ! print *,'RADLWSW: boucle mise a zero i k',i,k 548 ZFLUP(i,k)=0. 549 ZFLDN(i,k)=0. 550 ZFLUP0(i,k)=0. 551 ZFLDN0(i,k)=0. 552 ZLWFT0_i(i,k)=0. 553 ZFLUCUP_i(i,k)=0. 554 ZFLUCDWN_i(i,k)=0. 555 ENDDO 556 ENDDO 557 DO k = 1, kflev 558 DO i = 1, kdlon 559 zcool(i,k)=0. 560 zcool0(i,k)=0. 561 ENDDO 562 ENDDO 563 DO i = 1, kdlon 564 ztoplw(i)=0. 565 zsollw(i)=0. 566 ztoplw0(i)=0. 567 zsollw0(i)=0. 568 zsollwdown(i)=0. 578 ztoplw(i)=0. 579 zsollw(i)=0. 580 ztoplw0(i)=0. 581 zsollw0(i)=0. 582 zsollwdown(i)=0. 569 583 ENDDO 570 584 ! Old radiation scheme, used for AR4 runs … … 582 596 !----- Mise a zero des tableaux output du rayonnement SW-AR4 583 597 DO k = 1, kflev+1 584 DO i = 1, kdlon 585 ZFSUP(i,k)=0. 586 ZFSDN(i,k)=0. 587 ZFSUP0(i,k)=0. 588 ZFSDN0(i,k)=0. 589 ZFSUPC0(i,k)=0. 590 ZFSDNC0(i,k)=0. 591 ZFLUPC0(i,k)=0. 592 ZFLDNC0(i,k)=0. 593 ZSWFT0_i(i,k)=0. 594 ZFCUP_i(i,k)=0. 595 ZFCDWN_i(i,k)=0. 596 ZFCCUP_i(i,k)=0. 597 ZFCCDWN_i(i,k)=0. 598 ZFLCCUP_i(i,k)=0. 599 ZFLCCDWN_i(i,k)=0. 600 ENDDO 598 DO i = 1, kdlon 599 ZFSUP(i,k)=0. 600 ZFSDN(i,k)=0. 601 ZFSUP0(i,k)=0. 602 ZFSDN0(i,k)=0. 603 ZFSUPC0(i,k)=0. 604 ZFSDNC0(i,k)=0. 605 ZFLUPC0(i,k)=0. 606 ZFLDNC0(i,k)=0. 607 ZSWFT0_i(i,k)=0. 608 ZFCUP_i(i,k)=0. 609 ZFCDWN_i(i,k)=0. 610 ZFCCUP_i(i,k)=0. 611 ZFCCDWN_i(i,k)=0. 612 ZFLCCUP_i(i,k)=0. 613 ZFLCCDWN_i(i,k)=0. 614 zswadaero(i,k)=0. !--NL 615 ENDDO 601 616 ENDDO 602 617 DO k = 1, kflev 603 DO i = 1, kdlon 604 zheat(i,k)=0. 605 zheat0(i,k)=0. 606 ENDDO 618 DO i = 1, kdlon 619 zheat(i,k)=0. 620 zheat_volc(i,k)=0. 621 zheat0(i,k)=0. 622 ENDDO 607 623 ENDDO 608 624 DO i = 1, kdlon … … 852 868 ZTOPSWAIAERO,ZSOLSWAIAERO, & 853 869 ZTOPSWCF_AERO,ZSOLSWCF_AERO, & 870 ZSWADAERO, & !--NL 854 871 ZTOPLWADAERO,ZSOLLWADAERO,& ! rajoute par C. Kleinscmitt pour LW diagnostics 855 872 ZTOPLWAD0AERO,ZSOLLWAD0AERO,& 856 873 ZTOPLWAIAERO,ZSOLLWAIAERO, & 857 ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat) ! flags aerosols 874 ZLWADAERO, & !--NL 875 ok_ade, ok_aie, ok_volcan, flag_aerosol,flag_aerosol_strat) ! flags aerosols 858 876 859 877 ! print *,'RADLWSW: apres RECMWF' … … 934 952 ZFLDNC0(i,k+1)= ZFLCCDWN_i(i,k+1) 935 953 ZFLUPC0(i,k+1)= ZFLCCUP_i(i,k+1) 954 IF(ok_volcan) THEN 955 ZSWADAERO(i,k+1)=ZSWADAERO(i,k+1)*fract(i) !--NL 956 ENDIF 957 936 958 ! Nouveau calcul car visiblement ZSWFT et ZSWFC sont nuls dans RRTM cy32 937 959 ! en sortie de radlsw.F90 - MPL 7.01.09 … … 1014 1036 zcool(i,k)=(ZLWFT(i,k)-ZLWFT(i,k+1))*RDAY*RG/RCPD/PDP(i,k) 1015 1037 zcool0(i,k)=(ZLWFT0_i(i,k)-ZLWFT0_i(i,k+1))*RDAY*RG/RCPD/PDP(i,k) 1038 IF(ok_volcan) THEN 1039 zheat_volc(i,k)=(ZSWADAERO(i,k+1)-ZSWADAERO(i,k))*RDAY*RG/RCPD/PDP(i,k) !NL 1040 zcool_volc(i,k)=(ZLWADAERO(i,k)-ZLWADAERO(i,k+1))*RDAY*RG/RCPD/PDP(i,k) !NL 1041 ENDIF 1016 1042 ! print *,'heat cool heat0 cool0 ',zheat(i,k),zcool(i,k),zheat0(i,k),zcool0(i,k) 1017 1043 ! ZFLUCUP_i(i,k)=ZFLUC_i(i,1,k) … … 1123 1149 heat0(iof+i,k) = zheat0(i,k)/zznormcp 1124 1150 cool0(iof+i,k) = zcool0(i,k)/zznormcp 1151 IF(ok_volcan) THEN !NL 1152 heat_volc(iof+i,k) = zheat_volc(i,k)/zznormcp 1153 cool_volc(iof+i,k) = zcool_volc(i,k)/zznormcp 1154 ENDIF 1125 1155 ENDDO 1126 1156 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.