Changeset 3951 for LMDZ6/trunk/libf/phylmd
- Timestamp:
- Jul 2, 2021, 3:25:47 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/radlwsw_m.F90
r3918 r3951 302 302 ! ATTENTION les dimensions klon, kdlon ??? 303 303 ! INPUTS 304 REAL, DIMENSION(kdlon,kflev+1) :: ZSWFT0_ii, ZLWFT0_ii 304 305 REAL(KIND=8) ZEMISW(klon), & ! LW emissivity inside the window region 305 306 ZEMIS(klon) ! LW emissivity outside the window region … … 313 314 ZCFC12(klon,klev), & ! CFC12 314 315 ZHCFC22(klon,klev), & ! HCFC22 315 ZCCL4(klon,klev) , &! CCL4316 ZO3_DP(klon,klev), ZO3_DP_i(klon,klev) ! Ozone316 ZCCL4(klon,klev) ! CCL4 317 ! ZO3_DP(klon,klev), ZO3_DP_i(klon,klev) ! Ozone 317 318 REAL(KIND=8) ZQ_RAIN(klon,klev), & ! Rain cloud mass mixing ratio (kg/kg) ? 318 319 ZQ_SNOW(klon,klev) ! Snow cloud mass mixing ratio (kg/kg) ? … … 567 568 POZON(i,k, :) = wo(iof+i, k, :) * RG * dobson_u * 1e3 & 568 569 / (paprs(iof+i, k) - paprs(iof+i, k+1)) 569 #ifdef CPP_ECRAD570 ZO3_DP(i,k) = wo(iof+i, k, 1) * RG * dobson_u * 1e3571 #endif572 570 ! A activer pour CCMVAL on prend l'ozone impose (MPL 07042010) 573 571 ! POZON(i,k,:) = wo(i,k,:) … … 897 895 ! RII0 = RIP0M15 ! =rip0m if Morcrette non-each time step call. 898 896 RII0=solaire/zdist/zdist 899 !print*,'+++ radlwsw: solaire ,RII0',solaire,RII0900 897 ! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 901 898 ! Ancien appel a RECMWF (celui du cy25) … … 928 925 ! Nouvel appel a RECMWF (celui du cy32t0) 929 926 CALL RECMWF_AERO (ist , iend, klon , ktdia , klev , kmode ,& 930 ! KST, KEND, KPROMA, KTDIA , KLEV, KMODE931 927 PALBD_NEW,PALBP_NEW, paprs_i , pplay_i , RCO2 , cldfra_i,& 932 ! PALBD , PALBP , PAPRS , PAPRSF , PCCO2 , PCLFR933 928 POZON_i , PAER_i , PDP_i , PEMIS , rmu0 ,& 934 ! PQO3 , PAER , PDP , PEMIS , PMU0 935 q_i , qsat_i , fiwc_i , flwc_i , zmasq , t_i ,tsol,& 936 ! PQ , PQS , PQIWP , PQLWP , PSLM , PT , PTS, 929 q_i , qsat_i , fiwc_i , flwc_i , zmasq , t_i ,tsol,& 937 930 ref_liq_i, ref_ice_i, & 938 ! PREF_LIQ, PREF_ICE939 931 ref_liq_pi_i, ref_ice_pi_i, & ! rajoute par OB pour diagnostiquer effet indirect 940 ! PREF_LIQ_PI, PREF_ICE_PI941 932 ZEMTD_i , ZEMTU_i , ZTRSO_i ,& 942 ! PEMTD , PEMTU , PTRSO943 933 ZTH_i , ZCTRSO , ZCEMTR , ZTRSOD ,& 944 ! PTH , PCTRSO, PCEMTR, PTRSOD945 934 ZLWFC , ZLWFT_i , ZSWFC , ZSWFT_i ,& 946 ! PLWFC, PLWFT, PSWFC, PSWFT,947 935 PSFSWDIR , PSFSWDIF, PFSDNN , PFSDNV ,& 948 ! PSFSWDIR, PSFSWDIF, PFSDNN, PFSDNV949 936 PPIZA_TOT, PCGA_TOT,PTAU_TOT,& 950 ! PPIZA_TOT, PCGA_TOT,PTAU_TOT951 937 PPIZA_NAT, PCGA_NAT,PTAU_NAT, & ! rajoute par OB pour diagnostiquer effet direct 952 ! PPIZA_NAT,PCGA_NAT,PTAU_NAT953 938 PTAU_LW_TOT, PTAU_LW_NAT, & ! rajoute par C. Kleinschmitt 954 ! PTAU_LW_TOT, PTAU_LW_NAT,955 939 ZFLUX_i , ZFLUC_i ,& 956 ! PFLUX, PFLUC957 940 ZFSDWN_i , ZFSUP_i , ZFCDWN_i, ZFCUP_i, ZFCCDWN_i, ZFCCUP_i, ZFLCCDWN_i, ZFLCCUP_i, & 958 ! PFSDN , PFSUP , PFSCDN , PFSCUP, PFSCCDN, PFSCCUP, PFLCCDN, PFLCCUP959 941 ZTOPSWADAERO,ZSOLSWADAERO,& ! rajoute par OB pour diagnostics 960 ! PTOPSWADAERO,PSOLSWADAERO961 942 ZTOPSWAD0AERO,ZSOLSWAD0AERO,& 962 943 ZTOPSWAIAERO,ZSOLSWAIAERO, & … … 1010 991 CALL writefield_phy('zfcup_i',ZFCUP_i,klev+1) 1011 992 ENDIF 1012 ! --------- output RECMWFL 1013 ! ZEMTD (KPROMA,KLEV+1) ; TOTAL DOWNWARD LONGWAVE EMISSIVITY 1014 ! ZEMTU (KPROMA,KLEV+1) ; TOTAL UPWARD LONGWAVE EMISSIVITY 1015 ! ZTRSO (KPROMA,KLEV+1) ; TOTAL SHORTWAVE TRANSMISSIVITY 1016 ! ZTH (KPROMA,KLEV+1) ; HALF LEVEL TEMPERATURE 1017 ! ZCTRSO (KPROMA,2) ; CLEAR-SKY SHORTWAVE TRANSMISSIVITY 1018 ! ZCEMTR (KPROMA,2) ; CLEAR-SKY NET LONGWAVE EMISSIVITY 1019 ! ZTRSOD (KPROMA) ; TOTAL-SKY SURFACE SW TRANSMISSITY 1020 ! ZLWFC (KPROMA,2) ; CLEAR-SKY LONGWAVE FLUXES 1021 ! ZLWFT (KPROMA,KLEV+1) ; TOTAL-SKY LONGWAVE FLUXES 1022 ! ZSWFC (KPROMA,2) ; CLEAR-SKY SHORTWAVE FLUXES 1023 ! ZSWFT (KPROMA,KLEV+1) ; TOTAL-SKY SHORTWAVE FLUXES 1024 ! PPIZA_TOT (KPROMA,KLEV,NSW); Single scattering albedo of total aerosols 1025 ! PCGA_TOT (KPROMA,KLEV,NSW); Assymetry factor for total aerosols 1026 ! PTAU_TOT (KPROMA,KLEV,NSW); Optical depth of total aerosols 1027 ! PPIZA_NAT (KPROMA,KLEV,NSW); Single scattering albedo of natural aerosols 1028 ! PCGA_NAT (KPROMA,KLEV,NSW); Assymetry factor for natural aerosols 1029 ! PTAU_NAT (KPROMA,KLEV,NSW); Optical depth of natiral aerosols 1030 ! PTAU_LW_TOT (KPROMA,KLEV,NLW); LW Optical depth of total aerosols 1031 ! PTAU_LW_NAT (KPROMA,KLEV,NLW); LW Optical depth of natural aerosols 1032 ! PSFSWDIR (KPROMA,NSW) ; 1033 ! PSFSWDIF (KPROMA,NSW) ; 1034 ! PFSDNN (KPROMA) ; 1035 ! PFSDNV (KPROMA) ; 993 1036 994 ! --------- 1037 995 ! --------- … … 1091 1049 ZSOLSWCF_AERO(:,3)=ZSOLSWCF_AERO(:,3)*fract(:) 1092 1050 1093 ! print*,'SW_RRTM ZFSDN0 1 , klev:',ZFSDN0(1:klon,1),ZFSDN0(1:klon,klev)1094 ! print*,'SW_RRTM ZFSUP0 1 , klev:',ZFSUP0(1:klon,1),ZFSUP0(1:klon,klev)1095 ! print*,'SW_RRTM ZFSDN 1 , klev:',ZFSDN(1:klon,1),ZFSDN(1:klon,klev)1096 ! print*,'SW_RRTM ZFSUP 1 , klev:',ZFSUP(1:klon,1),ZFSUP(1:klon,klev)1097 ! print*,'OK1'1098 1051 ! --------- 1099 1052 ! --------- … … 1198 1151 ENDDO 1199 1152 ! 1200 ! A erosols A REVOIR1153 ! AI ATTENTION Aerosols A REVOIR 1201 1154 ! DO i = 1, kdlon 1202 1155 ! DO k = 1, kflev … … 1267 1220 ENDDO 1268 1221 DO k=1,kflev 1269 ZO3_DP_i(1:klon,k)=ZO3_DP(1:klon,kflev+1-k) 1270 DO i=1,6 1271 PAER_i(1:klon,k,i)=PAER(1:klon,kflev+1-k,i) 1272 ENDDO 1222 POZON_i(1:klon,k,:)=POZON(1:klon,kflev+1-k,:) 1223 ! ZO3_DP_i(1:klon,k)=ZO3_DP(1:klon,kflev+1-k) 1224 ! DO i=1,6 1225 PAER_i(1:klon,k,:)=PAER(1:klon,kflev+1-k,:) 1226 ! ENDDO 1273 1227 ENDDO 1274 1228 ! AI 02.2021 1275 ! Calcul of ZTH_i1229 ! Calcul de ZTH_i (temp aux interfaces 1:klev+1) 1276 1230 DO K=2,KLEV 1277 1231 ZTH_i(:,K)=& … … 1306 1260 CALL writefield_phy('palbd_new',PALBD_NEW,NSW) 1307 1261 CALL writefield_phy('palbp_new',PALBP_NEW,NSW) 1308 CALL writefield_phy('ZO3_DP',ZO3_DP,klev)1262 ! CALL writefield_phy('ZO3_DP',ZO3_DP,klev) 1309 1263 ENDIF 1310 1264 … … 1316 1270 & rmu0, tsol, PALBD_NEW,PALBP_NEW, & 1317 1271 ! PEMIS_WINDOW (???), & 1318 & 1272 & ZEMIS, ZEMISW, & 1319 1273 ! PCCN_LAND, PCCN_SEA, & ??? 1320 1274 & pctsrf(:,is_ter), pctsrf(:,is_oce), & … … 1326 1280 & paprs_i, ZTH_i, q_i, qsat_i, & 1327 1281 ! Gas 1328 & ZCO2, ZCH4, ZN2O, ZNO2, ZCFC11, ZCFC12, ZHCFC22, ZCCL4, ZO3_DP_i, &1329 ! 1282 & ZCO2, ZCH4, ZN2O, ZNO2, ZCFC11, ZCFC12, ZHCFC22, ZCCL4, POZON_i(:,:,1), & 1283 ! nuages : 1330 1284 & cldfra_i, flwc_i, fiwc_i, ZQ_RAIN, ZQ_SNOW, & 1331 1285 & ref_liq_i, ref_ice_i, & … … 1333 1287 & ZAEROSOL_OLD, ZAEROSOL, & 1334 1288 ! Outputs 1335 ! Net flux 1336 & ZSWFT_i, ZLWFT_i, ZSWFT0_i , ZLWFT0_i, &1337 ! D N flux1289 ! Net flux : 1290 & ZSWFT_i, ZLWFT_i, ZSWFT0_ii, ZLWFT0_ii, & 1291 ! DWN flux : 1338 1292 & ZFSDWN_i, ZFLUX_i(:,2,:), ZFCDWN_i, ZFLUC_i(:,2,:), & 1339 ! UP flux 1293 ! UP flux : 1340 1294 & ZFSUP_i, ZFLUX_i(:,1,:), ZFCUP_i, ZFLUC_i(:,1,:), & 1341 ! Surf Direct flux 1295 ! Surf Direct flux : ATTENTION 1342 1296 & ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_INTO_SUN, & 1343 1297 ! UV and para flux … … 1348 1302 1349 1303 print *,'========= RADLWSW: apres RADIATION_SCHEME ==================== ' 1350 IF (lldebug) THEN1351 if (0.eq.0) then1352 print *,' Net Flux '1353 print *,'ZSWFT_i =', ZSWFT_i1354 print *,'ZLWFT_i =', ZLWFT_i1355 print *,'ZSWFT0_i =', ZSWFT0_i1356 print*,'ZLWFT0_i =', ZLWFT0_i1357 1358 print*,'DN Flux '1359 print*,'ZFSDWN_i =', ZFSDWN_i1360 print*,'ZFLUX_i(:,2,:)', ZFLUX_i(:,2,:)1361 print*,'ZFCDWN_i =', ZFCDWN_i1362 print*,'ZFLUC_i(:,2,:) =', ZFLUC_i(:,2,:)1363 1364 print*,'UP Flux '1365 print*,'ZFSUP_i =', ZFSUP_i1366 print*,'ZFLUX_i(:,1,:) =', ZFLUX_i(:,1,:)1367 print*,'ZFCUP_i =', ZFCUP_i1368 print*,'ZFLUC_i(:,1,:) =', ZFLUC_i(:,1,:)1369 1370 print*,'UV and para flux '1371 print*,'ZFLUX_DIR =', ZFLUX_DIR1372 print*,'ZFLUX_DIR_CLEAR', ZFLUX_DIR_CLEAR1373 print*,'ZFLUX_DIR_INTO_SUN', ZFLUX_DIR_INTO_SUN1374 endif1375 ENDIF1376 1304 1377 1305 IF (lldebug) THEN 1378 1306 CALL writefield_phy('zlwft_i',ZLWFT_i,klev+1) 1379 CALL writefield_phy('zlwft0_i ',ZLWFT0_i,klev+1)1307 CALL writefield_phy('zlwft0_ii',ZLWFT0_ii,klev+1) 1380 1308 CALL writefield_phy('zswft_i',ZSWFT_i,klev+1) 1381 CALL writefield_phy('zswft0_i',ZSWFT0_i,klev+1) 1309 CALL writefield_phy('zswft0_i',ZSWFT0_ii,klev+1) 1310 CALL writefield_phy('zfsdwn_i',ZFSDWN_i,klev+1) 1311 CALL writefield_phy('zflux2_i',ZFLUX_i(:,2,:),klev+1) 1312 CALL writefield_phy('zfcdwn_i',ZFCDWN_i,klev+1) 1313 CALL writefield_phy('zfluc2_i',ZFLUC_i(:,2,:),klev+1) 1382 1314 CALL writefield_phy('psfswdir',PSFSWDIR,6) 1383 1315 CALL writefield_phy('psfswdif',PSFSWDIF,6) 1384 CALL writefield_phy('zflux_i',ZFLUX_i,klev+1) 1385 CALL writefield_phy('zfluc_i',ZFLUC_i,klev+1) 1386 CALL writefield_phy('zfsdwn_i',ZFSDWN_i,klev+1) 1316 CALL writefield_phy('zflux1_i',ZFLUX_i(:,1,:),klev+1) 1317 CALL writefield_phy('zfluc1_i',ZFLUC_i(:,1,:),klev+1) 1387 1318 CALL writefield_phy('zfsup_i',ZFSUP_i,klev+1) 1388 CALL writefield_phy('zfcdwn_i',ZFCDWN_i,klev+1)1389 1319 CALL writefield_phy('zfcup_i',ZFCUP_i,klev+1) 1390 1320 ENDIF … … 1394 1324 ! avec l ancien rayonnement AR4. Si nuit, fract=0 donc pas de 1395 1325 ! rayonnement SW. (MPL 260609) 1396 print*,'On retablit ordre des niveaux verticaux'1397 print*,'On multiplie les flux SW par fract ?'1326 print*,'On retablit l ordre des niveaux verticaux pour LMDZ' 1327 print*,'On multiplie les flux SW par fract et LW dwn par -1' 1398 1328 DO k=0,klev 1399 1329 DO i=1,klon … … 1405 1335 ZLWFT(i,k+1) = ZLWFT_i(i,klev+1-k) 1406 1336 ZSWFT(i,k+1) = ZSWFT_i(i,klev+1-k)*fract(i) 1407 ZSWFT0_i(i,k+1) = ZSWFT0_i(i,klev+1-k)*fract(i) 1337 ZSWFT0_i(i,k+1) = ZSWFT0_ii(i,klev+1-k)*fract(i) 1338 ZLWFT0_i(i,k+1) = ZLWFT0_ii(i,klev+1-k) 1408 1339 ! 1409 1340 ZFLUP(i,k+1) = ZFLUX_i(i,1,klev+1-k) 1410 ZFLDN(i,k+1) = ZFLUX_i(i,2,klev+1-k)1341 ZFLDN(i,k+1) = -1.*ZFLUX_i(i,2,klev+1-k) 1411 1342 ZFLUP0(i,k+1) = ZFLUC_i(i,1,klev+1-k) 1412 ZFLDN0(i,k+1) = ZFLUC_i(i,2,klev+1-k)1343 ZFLDN0(i,k+1) = -1.*ZFLUC_i(i,2,klev+1-k) 1413 1344 ZFSDN(i,k+1) = ZFSDWN_i(i,klev+1-k)*fract(i) 1414 1345 ZFSDN0(i,k+1) = ZFCDWN_i(i,klev+1-k)*fract(i) … … 1417 1348 ZFSUP0(i,k+1) = ZFCUP_i(i,klev+1-k)*fract(i) 1418 1349 ZFSUPC0(i,k+1)= ZFCCUP_i(i,klev+1-k)*fract(i) 1419 ZFLDNC0(i,k+1)= ZFLCCDWN_i(i,klev+1-k)1350 ZFLDNC0(i,k+1)= -1.*ZFLCCDWN_i(i,klev+1-k) 1420 1351 ZFLUPC0(i,k+1)= ZFLCCUP_i(i,klev+1-k) 1421 1352 IF (ok_volcan) THEN … … 1596 1527 ENDDO ! j = 1, nb_gr 1597 1528 1598 !IF (lldebug) THEN 1599 ! print*,'================== Sortie de radlw =================' 1600 ! print*,'cool = ', cool 1601 ! print*,'heat = ', heat 1602 ! print*,'topsw = ', topsw 1603 ! print*,'toplw = ', toplw 1604 ! print*,'sollw = ', sollw 1605 ! print*,'solsw = ', solsw 1606 ! print*,'lwdn = ', lwdn 1607 ! print*,'lwup = ', lwup 1608 ! print*,'swdn = ', swdn 1609 ! print*,'swup =', swup 1610 !ENDIF 1529 IF (lldebug) THEN 1530 if (0.eq.1) then 1531 ! Verifs dans le cas 1D 1532 print*,'================== Sortie de radlw =================' 1533 print*,'******** LW LW LW *******************' 1534 print*,'ZLWFT =',ZLWFT 1535 print*,'ZLWFT0_i =',ZLWFT0_i 1536 print*,'ZFLUP0 =',ZFLUP0 1537 print*,'ZFLDN0 =',ZFLDN0 1538 print*,'ZFLDNC0 =',ZFLDNC0 1539 print*,'ZFLUPC0 =',ZFLUPC0 1540 1541 print*,'******** SW SW SW *******************' 1542 print*,'ZSWFT =',ZSWFT 1543 print*,'ZSWFT0_i =',ZSWFT0_i 1544 print*,'ZFSDN =',ZFSDN 1545 print*,'ZFSDN0 =',ZFSDN0 1546 print*,'ZFSDNC0 =',ZFSDNC0 1547 print*,'ZFSUP =',ZFSUP 1548 print*,'ZFSUP0 =',ZFSUP0 1549 print*,'ZFSUPC0 =',ZFSUPC0 1550 1551 print*,'******** LMDZ *******************' 1552 print*,'cool = ', cool 1553 print*,'heat = ', heat 1554 print*,'topsw = ', topsw 1555 print*,'toplw = ', toplw 1556 print*,'sollw = ', sollw 1557 print*,'solsw = ', solsw 1558 print*,'lwdn = ', lwdn 1559 print*,'lwup = ', lwup 1560 print*,'swdn = ', swdn 1561 print*,'swup =', swup 1562 endif 1563 ENDIF 1611 1564 1612 1565 END SUBROUTINE radlwsw
Note: See TracChangeset
for help on using the changeset viewer.