Changeset 3605 for LMDZ6/branches/Ocean_skin/libf/phylmd/radlwsw_m.F90
- Timestamp:
- Nov 21, 2019, 4:43:45 PM (5 years ago)
- Location:
- LMDZ6/branches/Ocean_skin
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Ocean_skin
-
LMDZ6/branches/Ocean_skin/libf/phylmd/radlwsw_m.F90
r3412 r3605 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, flag_aer_feedback, & 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) … … 120 122 ! solswai---output-R- ray. solaire net absorbe a la surface (aerosol ind) 121 123 ! topswai---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol ind) 124 ! 125 ! heat_volc-----output-R- echauffement atmospherique du au forcage volcanique (visible) (K/s) 126 ! cool_volc-----output-R- refroidissement dans l'IR du au forcage volcanique (K/s) 122 127 ! 123 128 ! ATTENTION: swai and swad have to be interpreted in the following manner: … … 193 198 194 199 LOGICAL, INTENT(in) :: ok_ade, ok_aie ! switches whether to use aerosol direct (indirect) effects or not 200 LOGICAL, INTENT(in) :: ok_volcan ! produce volcanic diags (SW/LW heat flux and rate) 195 201 LOGICAL :: lldebug 196 202 INTEGER, INTENT(in) :: flag_aerosol ! takes value 0 (no aerosol) or 1 to 6 (aerosols) … … 228 234 REAL, INTENT(out) :: heat(KLON,KLEV), cool(KLON,KLEV) 229 235 REAL, INTENT(out) :: heat0(KLON,KLEV), cool0(KLON,KLEV) 236 REAL, INTENT(out) :: heat_volc(KLON,KLEV), cool_volc(KLON,KLEV) !NL 230 237 REAL, INTENT(out) :: topsw(KLON), toplw(KLON) 231 238 REAL, INTENT(out) :: solsw(KLON), sollw(KLON), albpla(KLON) … … 294 301 REAL(KIND=8) zheat(kdlon,kflev), zcool(kdlon,kflev) 295 302 REAL(KIND=8) zheat0(kdlon,kflev), zcool0(kdlon,kflev) 303 REAL(KIND=8) zheat_volc(kdlon,kflev), zcool_volc(kdlon,kflev) !NL 296 304 REAL(KIND=8) ztopsw(kdlon), ztoplw(kdlon) 297 305 REAL(KIND=8) zsolsw(kdlon), zsollw(kdlon), zalbpla(kdlon) … … 308 316 REAL(KIND=8) ztopswad0aero(kdlon), zsolswad0aero(kdlon) ! Aerosol direct forcing at TOAand surface 309 317 REAL(KIND=8) ztopswaiaero(kdlon), zsolswaiaero(kdlon) ! dito, indirect 318 !--NL 319 REAL(KIND=8) zswadaero(kdlon,kflev+1) ! SW Aerosol direct forcing 320 REAL(KIND=8) zlwadaero(kdlon,kflev+1) ! LW Aerosol direct forcing 310 321 !-LW by CK 311 322 REAL(KIND=8) ztoplwadaero(kdlon), zsollwadaero(kdlon) ! LW Aerosol direct forcing at TOAand surface … … 398 409 cgaero(:,:,:,:)=0. 399 410 lldebug=.FALSE. 400 411 412 ztopsw_aero(:,:) = 0. !ym missing init : warning : not initialized in SW_AEROAR4 413 ztopsw0_aero(:,:) = 0. !ym missing init : warning : not initialized in SW_AEROAR4 414 zsolsw_aero(:,:) = 0. !ym missing init : warning : not initialized in SW_AEROAR4 415 zsolsw0_aero(:,:) = 0. !ym missing init : warning : not initialized in SW_AEROAR4 416 417 418 ZTOPSWADAERO(:) = 0. !ym missing init 419 ZSOLSWADAERO(:) = 0. !ym missing init 420 ZTOPSWAD0AERO(:) = 0. !ym missing init 421 ZSOLSWAD0AERO(:) = 0. !ym missing init 422 ZTOPSWAIAERO(:) = 0. !ym missing init 423 ZSOLSWAIAERO(:) = 0. !ym missing init 424 ZTOPSWCF_AERO(:,:)= 0.!ym missing init 425 ZSOLSWCF_AERO(:,:) =0. !ym missing init 426 401 427 ! 402 428 !------------------------------------------- … … 415 441 heat(i,k)=0. 416 442 cool(i,k)=0. 443 heat_volc(i,k)=0. !NL 444 cool_volc(i,k)=0. !NL 417 445 heat0(i,k)=0. 418 446 cool0(i,k)=0. … … 558 586 ENDDO 559 587 DO k = 1, kflev 560 DO i = 1, kdlon 561 zcool(i,k)=0. 562 zcool0(i,k)=0. 563 ENDDO 588 DO i = 1, kdlon 589 zcool(i,k)=0. 590 zcool_volc(i,k)=0. !NL 591 zcool0(i,k)=0. 592 ENDDO 564 593 ENDDO 565 594 DO i = 1, kdlon … … 584 613 !----- Mise a zero des tableaux output du rayonnement SW-AR4 585 614 DO k = 1, kflev+1 586 DO i = 1, kdlon 587 ZFSUP(i,k)=0. 588 ZFSDN(i,k)=0. 589 ZFSUP0(i,k)=0. 590 ZFSDN0(i,k)=0. 591 ZFSUPC0(i,k)=0. 592 ZFSDNC0(i,k)=0. 593 ZFLUPC0(i,k)=0. 594 ZFLDNC0(i,k)=0. 595 ZSWFT0_i(i,k)=0. 596 ZFCUP_i(i,k)=0. 597 ZFCDWN_i(i,k)=0. 598 ZFCCUP_i(i,k)=0. 599 ZFCCDWN_i(i,k)=0. 600 ZFLCCUP_i(i,k)=0. 601 ZFLCCDWN_i(i,k)=0. 602 ENDDO 615 DO i = 1, kdlon 616 ZFSUP(i,k)=0. 617 ZFSDN(i,k)=0. 618 ZFSUP0(i,k)=0. 619 ZFSDN0(i,k)=0. 620 ZFSUPC0(i,k)=0. 621 ZFSDNC0(i,k)=0. 622 ZFLUPC0(i,k)=0. 623 ZFLDNC0(i,k)=0. 624 ZSWFT0_i(i,k)=0. 625 ZFCUP_i(i,k)=0. 626 ZFCDWN_i(i,k)=0. 627 ZFCCUP_i(i,k)=0. 628 ZFCCDWN_i(i,k)=0. 629 ZFLCCUP_i(i,k)=0. 630 ZFLCCDWN_i(i,k)=0. 631 zswadaero(i,k)=0. !--NL 632 ENDDO 603 633 ENDDO 604 634 DO k = 1, kflev 605 DO i = 1, kdlon 606 zheat(i,k)=0. 607 zheat0(i,k)=0. 608 ENDDO 635 DO i = 1, kdlon 636 zheat(i,k)=0. 637 zheat_volc(i,k)=0. 638 zheat0(i,k)=0. 639 ENDDO 609 640 ENDDO 610 641 DO i = 1, kdlon … … 708 739 ! 709 740 !--OB 710 !--aerosol TOT - anthropogenic+natural 711 !--aerosol NAT - natural only 741 !--aerosol TOT - anthropogenic+natural - index 2 742 !--aerosol NAT - natural only - index 1 712 743 ! 713 744 DO i = 1, kdlon … … 729 760 ! 730 761 !--C. Kleinschmitt 731 !--aerosol TOT - anthropogenic+natural 732 !--aerosol NAT - natural only 762 !--aerosol TOT - anthropogenic+natural - index 2 763 !--aerosol NAT - natural only - index 1 733 764 ! 734 765 DO i = 1, kdlon … … 854 885 ZTOPSWAIAERO,ZSOLSWAIAERO, & 855 886 ZTOPSWCF_AERO,ZSOLSWCF_AERO, & 887 ZSWADAERO, & !--NL 856 888 ZTOPLWADAERO,ZSOLLWADAERO,& ! rajoute par C. Kleinscmitt pour LW diagnostics 857 889 ZTOPLWAD0AERO,ZSOLLWAD0AERO,& 858 890 ZTOPLWAIAERO,ZSOLLWAIAERO, & 859 ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat, flag_aer_feedback) ! flags aerosols 891 ZLWADAERO, & !--NL 892 ok_ade, ok_aie, ok_volcan, flag_aerosol,flag_aerosol_strat, flag_aer_feedback) ! flags aerosols 860 893 861 894 ! print *,'RADLWSW: apres RECMWF' … … 936 969 ZFLDNC0(i,k+1)= ZFLCCDWN_i(i,k+1) 937 970 ZFLUPC0(i,k+1)= ZFLCCUP_i(i,k+1) 971 IF(ok_volcan) THEN 972 ZSWADAERO(i,k+1)=ZSWADAERO(i,k+1)*fract(i) !--NL 973 ENDIF 974 938 975 ! Nouveau calcul car visiblement ZSWFT et ZSWFC sont nuls dans RRTM cy32 939 976 ! en sortie de radlsw.F90 - MPL 7.01.09 … … 1016 1053 zcool(i,k)=(ZLWFT(i,k)-ZLWFT(i,k+1))*RDAY*RG/RCPD/PDP(i,k) 1017 1054 zcool0(i,k)=(ZLWFT0_i(i,k)-ZLWFT0_i(i,k+1))*RDAY*RG/RCPD/PDP(i,k) 1055 IF(ok_volcan) THEN 1056 zheat_volc(i,k)=(ZSWADAERO(i,k+1)-ZSWADAERO(i,k))*RG/RCPD/PDP(i,k) !NL 1057 zcool_volc(i,k)=(ZLWADAERO(i,k)-ZLWADAERO(i,k+1))*RG/RCPD/PDP(i,k) !NL 1058 ENDIF 1018 1059 ! print *,'heat cool heat0 cool0 ',zheat(i,k),zcool(i,k),zheat0(i,k),zcool0(i,k) 1019 1060 ! ZFLUCUP_i(i,k)=ZFLUC_i(i,1,k) … … 1125 1166 heat0(iof+i,k) = zheat0(i,k)/zznormcp 1126 1167 cool0(iof+i,k) = zcool0(i,k)/zznormcp 1168 IF(ok_volcan) THEN !NL 1169 heat_volc(iof+i,k) = zheat_volc(i,k)/zznormcp 1170 cool_volc(iof+i,k) = zcool_volc(i,k)/zznormcp 1171 ENDIF 1127 1172 ENDDO 1128 1173 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.