Changeset 5099 for LMDZ6/branches/Amaury_dev/libf/phylmd/radlwsw_m.F90
- Timestamp:
- Jul 22, 2024, 9:29:09 PM (4 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/radlwsw_m.F90
r5087 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 module radlwsw_m 5 5 … … 119 119 ! droplet concentration, thus larger droplets, thus generally cdltaupi cldtaupd 120 120 ! it is needed for the diagnostics of the aerosol indirect radiative forcing 121 ! 121 122 122 ! OUTPUTS 123 123 ! heat-----output-R- echauffement atmospherique (visible) (K/jour) … … 133 133 ! solswai---output-R- ray. solaire net absorbe a la surface (aerosol ind) 134 134 ! topswai---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol ind) 135 ! 135 136 136 ! heat_volc-----output-R- echauffement atmospherique du au forcage volcanique (visible) (K/s) 137 137 ! cool_volc-----output-R- refroidissement dans l'IR du au forcage volcanique (K/s) 138 ! 138 139 139 ! ATTENTION: swai and swad have to be interpreted in the following manner: 140 140 ! --------- … … 146 146 ! ok_ade=T & ok_aie=T -aerosol indirect forcing is F_{AI} = topsw-topswai 147 147 ! aerosol direct forcing is F_{AD} = topswai-topswad 148 ! 148 149 149 ! --------- RRTM: output RECMWFL 150 150 ! ZEMTD (KPROMA,KLEV+1) ; TOTAL DOWNWARD LONGWAVE EMISSIVITY … … 185 185 ! 8 = SS 186 186 ! 9 = NO3 187 ! 187 188 188 ! ==================================================================== 189 189 … … 511 511 ZSOLSWCF_AERO(:,:) =0. !ym missing init 512 512 513 !514 513 ! AI 02.2021 515 514 #ifdef CPP_ECRAD … … 555 554 ENDDO 556 555 ENDDO 557 ! 556 558 557 zdist = dist 559 ! 558 560 559 PSCT = solaire/zdist/zdist 561 560 … … 592 591 PALBP_NEW(i,kk)=alb_dir(iof+i,kk) 593 592 ENDDO 594 ! 593 595 594 ENDIF 596 595 !albedo SB <<< … … 636 635 ! present-day aerosol concentrations whereas the quantities without the 637 636 ! "A" at the end are for pre-industial (natural-only) aerosol concentrations 638 ! 637 639 638 PTAUA(i,1,k) = MAX(cldtaupd(iof+i,k), 1.0e-05)! 1e-12 serait instable 640 639 PTAUA(i,2,k) = MAX(cldtaupd(iof+i,k), 1.0e-05)! pour 32-bit machines … … 650 649 #endif 651 650 ENDIF 652 ! 651 653 652 DO k = 1, kflev+1 654 653 DO i = 1, kdlon … … 656 655 ENDDO 657 656 ENDDO 658 ! 657 659 658 !!!!! Modif MPL 6.01.09 avec RRTM, on passe de 5 a 6 660 659 DO kk = 1, 6 … … 675 674 ENDDO 676 675 ENDDO 677 ! 676 678 677 !===== iflag_rrtm ================================================ 679 ! 678 680 679 IF (iflag_rrtm == 0) THEN !!!! remettre 0 juste pour tester l'ancien rayt via rrtm 681 ! 680 682 681 !--- Mise a zero des tableaux output du rayonnement LW-AR4 ---------- 683 682 DO k = 1, kflev+1 … … 800 799 ENDDO 801 800 ENDDO 802 ! 801 803 802 ELSE IF (iflag_rrtm == 1) then 804 803 #ifdef CPP_RRTM … … 828 827 ENDDO 829 828 ENDDO 830 ! 829 831 830 !--OB 832 831 !--aerosol TOT - anthropogenic+natural - index 2 833 832 !--aerosol NAT - natural only - index 1 834 ! 833 835 834 DO i = 1, kdlon 836 835 DO k = 1, kflev 837 836 DO kk=1, NSW 838 ! 837 839 838 PTAU_TOT(i,kflev+1-k,kk)=tau_aero_sw_rrtm(i,k,2,kk) 840 839 PPIZA_TOT(i,kflev+1-k,kk)=piz_aero_sw_rrtm(i,k,2,kk) 841 840 PCGA_TOT(i,kflev+1-k,kk)=cg_aero_sw_rrtm(i,k,2,kk) 842 ! 841 843 842 PTAU_NAT(i,kflev+1-k,kk)=tau_aero_sw_rrtm(i,k,1,kk) 844 843 PPIZA_NAT(i,kflev+1-k,kk)=piz_aero_sw_rrtm(i,k,1,kk) 845 844 PCGA_NAT(i,kflev+1-k,kk)=cg_aero_sw_rrtm(i,k,1,kk) 846 ! 845 847 846 ENDDO 848 847 ENDDO 849 848 ENDDO 850 849 !-end OB 851 ! 850 852 851 !--C. Kleinschmitt 853 852 !--aerosol TOT - anthropogenic+natural - index 2 854 853 !--aerosol NAT - natural only - index 1 855 ! 854 856 855 DO i = 1, kdlon 857 856 DO k = 1, kflev 858 857 DO kk=1, NLW 859 ! 858 860 859 PTAU_LW_TOT(i,kflev+1-k,kk)=tau_aero_lw_rrtm(i,k,2,kk) 861 860 PTAU_LW_NAT(i,kflev+1-k,kk)=tau_aero_lw_rrtm(i,k,1,kk) 862 ! 861 863 862 ENDDO 864 863 ENDDO 865 864 ENDDO 866 865 !-end C. Kleinschmitt 867 ! 866 868 867 DO i = 1, kdlon 869 868 ZCTRSO(i,1)=0. … … 939 938 ! s ZFLUX_i , ZFLUC_i , ZFSDWN_i, ZFSUP_i , ZFCDWN_i,ZFCUP_i) 940 939 ! s 'RECMWF ') 941 ! 940 942 941 IF (lldebug) THEN 943 942 CALL writefield_phy('paprs_i',paprs_i,klev+1) … … 1098 1097 ENDIF 1099 1098 ENDDO 1100 ! 1099 1101 1100 DO i = 1, kdlon 1102 1101 zsolsw(i) = ZSWFT(i,1) … … 1106 1105 ztopsw0(i) = ZSWFT0_i(i,klev+1) 1107 1106 ! ztopsw0(i) = ZFSDN0(i,klev+1)-ZFSUP0(i,klev+1) 1108 ! 1107 1109 1108 ! zsollw(i) = ZFLDN(i,1) -ZFLUP(i,1) 1110 1109 ! zsollw0(i) = ZFLDN0(i,1) -ZFLUP0(i,1) … … 1115 1114 ztoplw(i) = ZLWFT(i,klev+1)*(-1) 1116 1115 ztoplw0(i) = ZLWFT0_i(i,klev+1)*(-1) 1117 ! 1116 1118 1117 IF (fract(i) == 0.) THEN 1119 1118 !!!!! A REVOIR MPL (20090630) ca n a pas de sens quand fract=0 … … 1191 1190 ENDDO 1192 1191 ENDDO 1193 ! 1192 1194 1193 ! AI ATTENTION Aerosols A REVOIR 1195 1194 DO i = 1, kdlon … … 1197 1196 DO kk= 1, naero_spc 1198 1197 ! DO kk=1, NSW 1199 ! 1198 1200 1199 ! PTAU_TOT(i,kflev+1-k,kk)=tau_aero_sw_rrtm(i,k,2,kk) 1201 1200 ! PPIZA_TOT(i,kflev+1-k,kk)=piz_aero_sw_rrtm(i,k,2,kk) 1202 1201 ! PCGA_TOT(i,kflev+1-k,kk)=cg_aero_sw_rrtm(i,k,2,kk) 1203 ! 1202 1204 1203 ! PTAU_NAT(i,kflev+1-k,kk)=tau_aero_sw_rrtm(i,k,1,kk) 1205 1204 ! PPIZA_NAT(i,kflev+1-k,kk)=piz_aero_sw_rrtm(i,k,1,kk) … … 1207 1206 ! ZAEROSOL(i,kflev+1-k,kk)=m_allaer(i,k,kk) 1208 1207 ZAEROSOL(i,kflev+1-k,kk)=m_allaer(i,k,kk) 1209 ! 1208 1210 1209 ENDDO 1211 1210 ENDDO 1212 1211 ENDDO 1213 1212 !-end OB 1214 ! 1213 1215 1214 ! DO i = 1, kdlon 1216 1215 ! DO k = 1, kflev 1217 1216 ! DO kk=1, NLW 1218 ! 1217 1219 1218 ! PTAU_LW_TOT(i,kflev+1-k,kk)=tau_aero_lw_rrtm(i,k,2,kk) 1220 1219 ! PTAU_LW_NAT(i,kflev+1-k,kk)=tau_aero_lw_rrtm(i,k,1,kk) 1221 ! 1220 1222 1221 ! ENDDO 1223 1222 ! ENDDO 1224 1223 ! ENDDO 1225 1224 !-end C. Kleinschmitt 1226 ! 1225 1227 1226 DO i = 1, kdlon 1228 1227 ZCTRSO(i,1)=0. … … 1485 1484 ZSWFT0_i(i,k+1) = ZSWFT0_ii(i,klev+1-k)*fract(i) 1486 1485 ZLWFT0_i(i,k+1) = ZLWFT0_ii(i,klev+1-k) 1487 ! 1486 1488 1487 ZFLUP(i,k+1) = ZFLUX_i(i,1,klev+1-k) 1489 1488 ZFLDN(i,k+1) = -1.*ZFLUX_i(i,2,klev+1-k) … … 1540 1539 ENDIF 1541 1540 ENDDO 1542 ! 1541 1543 1542 DO i = 1, kdlon 1544 1543 zsolsw(i) = ZSWFT(i,1) … … 1550 1549 ztoplw(i) = ZLWFT(i,klev+1)*(-1) 1551 1550 ztoplw0(i) = ZLWFT0_i(i,klev+1)*(-1) 1552 ! 1551 1553 1552 zsollwdown(i)= -1.*ZFLDN(i,1) 1554 1553 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.