Changeset 1337 for LMDZ4/trunk
- Timestamp:
- Apr 2, 2010, 1:31:05 PM (15 years ago)
- Location:
- LMDZ4/trunk/libf/phylmd
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/phylmd/aeropt_2bands.F90
r1279 r1337 10 10 USE dimphy 11 11 USE aero_mod 12 USE phys_local_var_mod, only: absvisaer 12 13 13 14 ! Yves Balkanski le 12 avril 2006 … … 1119 1120 ENDDO 1120 1121 ENDDO 1122 1123 1124 inu=1 1125 DO i=1, KLON 1126 absvisaer(i)=SUM((1-piz_allaer(i,:,:,inu))*tau_allaer(i,:,:,inu)) 1127 END DO 1121 1128 1122 1129 DEALLOCATE(aerosol_name) -
LMDZ4/trunk/libf/phylmd/aeropt_5wv.F90
r1279 r1337 11 11 USE DIMPHY 12 12 USE aero_mod 13 USE phys_local_var_mod, only: od550aer,od865aer,ec550aer,od550lt1aer 13 14 14 15 ! … … 141 142 REAL :: tau3d(KLON,KLEV), piz3d(KLON,KLEV), cg3d(KLON,KLEV) 142 143 REAL :: abs3d(KLON,KLEV) ! epaisseur optique d'absorption 143 144 REAL :: dh(KLON,KLEV) 144 145 145 146 REAL :: alpha_aers_5wv(nbre_RH,las,naero_soluble) ! ext. coeff. Soluble comp. units *** m2/g … … 624 625 ! IF (pplay(i,k).EQ.0) stop 'stop aeropt_5wv p ' 625 626 zrho=pplay(i,k)/t_seri(i,k)/RD ! kg/m3 627 dh(i,k)=pdel(i,k)/(gravit*zrho) 626 628 !CDIR UNROLL=naero_spc 627 629 mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9 … … 848 850 ! ENDDO 849 851 852 DO i=1, klon 853 od550aer(i)=SUM(tausum(i,2,:)) 854 od865aer(i)=SUM(tausum(i,5,:)) 855 DO k=1, KLEV 856 ec550aer(i,k)=SUM(tau(i,k,2,:))/dh(i,k) 857 END DO 858 END DO 859 od550lt1aer(:)=tausum(:,2,id_ASSO4M)+tausum(:,2,id_ASBCM)+tausum(:,2,id_AIBCM)+ & 860 tausum(:,2,id_ASPOMM)+tausum(:,2,id_AIPOMM)+tausum(:,2,id_ASSSM)+ & 861 0.03*tausum(:,2,id_CSSSM)+0.4*tausum(:,2,id_CIDUSTM) 862 863 864 850 865 DEALLOCATE(aerosol_name) 851 866 -
LMDZ4/trunk/libf/phylmd/newmicro.F
r1334 r1337 11 11 12 12 USE dimphy 13 USE phys_local_var_mod, only: scdnc,cldncl,reffclwtop,lcc, 14 . reffclws,reffclwc,cldnvi,lcc3d, 15 . lcc3dcon,lcc3dstra 16 USE phys_state_var_mod, only: rnebcon,clwcon 13 17 IMPLICIT none 14 18 c====================================================================== … … 46 50 #include "radepsi.h" 47 51 #include "radopt.h" 52 c choix de l'hypothese de recouvrememnt nuageuse 53 LOGICAL RANDOM,MAXIMUM_RANDOM,MAXIMUM,FIRST 54 parameter (RANDOM=.FALSE., MAXIMUM_RANDOM=.TRUE., MAXIMUM=.FALSE.) 55 c Hypoyhese de recouvrement : MAXIMUM_RANDOM 56 INTEGER flag_max 57 REAL phase3d(klon, klev),dh(klon, klev),pdel(klon, klev), 58 . zrho(klon, klev) 59 REAL tcc(klon), ftmp(klon), lcc_integrat(klon), height(klon) 60 REAL thres_tau,thres_neb 61 PARAMETER (thres_tau=0.3, thres_neb=0.001) 62 REAL t_tmp 63 REAL gravit 64 PARAMETER (gravit=9.80616) !m/s2 65 REAL pqlwpcon(klon, klev), pqlwpstra(klon, klev) 66 c 48 67 REAL paprs(klon,klev+1), pplay(klon,klev) 49 68 REAL t(klon,klev) … … 475 494 pcl(i)=1.-pcl(i) 476 495 ENDDO 477 496 497 c ======================================================== 498 ! DIAGNOSTICS CALCULATION FOR CMIP5 PROTOCOL 499 c ======================================================== 500 !! change by Nicolas Yan (LSCE) 501 !! Cloud Droplet Number Concentration (CDNC) : 3D variable 502 !! Fractionnal cover by liquid water cloud (LCC3D) : 3D variable 503 !! Cloud Droplet Number Concentration at top of cloud (CLDNCL) : 2D variable 504 !! Droplet effective radius at top of cloud (REFFCLWTOP) : 2D variable 505 !! Fractionnal cover by liquid water at top of clouds (LCC) : 2D variable 506 IF (ok_newmicro) THEN 507 IF (ok_aie) THEN 508 DO k = 1, klev 509 DO i = 1, klon 510 phase3d(i,k)=1-zfice2(i,k) 511 IF (pclc(i,k) .LE. seuil_neb) THEN 512 lcc3d(i,k)=seuil_neb*phase3d(i,k) 513 ELSE 514 lcc3d(i,k)=pclc(i,k)*phase3d(i,k) 515 ENDIF 516 scdnc(i,k)=lcc3d(i,k)*cdnc(i,k) ! m-3 517 ENDDO 518 ENDDO 519 520 DO i=1,klon 521 lcc(i)=0. 522 reffclwtop(i)=0. 523 cldncl(i)=0. 524 IF(RANDOM .OR. MAXIMUM_RANDOM) tcc(i) = 1. 525 IF(MAXIMUM) tcc(i) = 0. 526 ENDDO 527 528 FIRST=.TRUE. 529 530 DO i=1,klon 531 DO k=klev-1,1,-1 !From TOA down 532 533 534 ! Test, if the cloud optical depth exceeds the necessary 535 ! threshold: 536 537 IF (pcltau(i,k).GT.thres_tau .AND. pclc(i,k).GT.thres_neb) 538 . THEN 539 ! To calculate the right Temperature at cloud top, 540 ! interpolate it between layers: 541 t_tmp = t(i,k) + 542 . (paprs(i,k+1)-pplay(i,k))/(pplay(i,k+1)-pplay(i,k)) 543 . * ( t(i,k+1) - t(i,k) ) 544 545 IF(MAXIMUM) THEN 546 IF(FIRST) THEN 547 write(*,*)'Hypothese de recouvrement: MAXIMUM' 548 FIRST=.FALSE. 549 ENDIF 550 flag_max= -1. 551 ftmp(i) = MAX(tcc(i),pclc(i,k)) 552 ENDIF 553 554 IF(RANDOM) THEN 555 IF(FIRST) THEN 556 write(*,*)'Hypothese de recouvrement: RANDOM' 557 FIRST=.FALSE. 558 ENDIF 559 flag_max= 1. 560 ftmp(i) = tcc(i) * (1-pclc(i,k)) 561 ENDIF 562 563 IF(MAXIMUM_RANDOM) THEN 564 IF(FIRST) THEN 565 write(*,*)'Hypothese de recouvrement: MAXIMUM_ 566 . RANDOM' 567 FIRST=.FALSE. 568 ENDIF 569 flag_max= 1. 570 ftmp(i) = tcc(i) * 571 . (1. - MAX(pclc(i,k),pclc(i,k+1))) / 572 . (1. - MIN(pclc(i,k+1),1.-thres_neb)) 573 ENDIF 574 c Effective radius of cloud droplet at top of cloud (m) 575 reffclwtop(i) = reffclwtop(i) + rad_chaud_tab(i,k) * 576 . 1.0E-06 * phase3d(i,k) * ( tcc(i) - ftmp(i))*flag_max 577 c CDNC at top of cloud (m-3) 578 cldncl(i) = cldncl(i) + cdnc(i,k) * phase3d(i,k) * 579 . (tcc(i) - ftmp(i))*flag_max 580 c Liquid Cloud Content at top of cloud 581 lcc(i) = lcc(i) + phase3d(i,k) * (tcc(i)-ftmp(i))* 582 . flag_max 583 c Total Cloud Content at top of cloud 584 tcc(i)=ftmp(i) 585 586 ENDIF ! is there a visible, not-too-small cloud? 587 ENDDO ! loop over k 588 589 IF(RANDOM .OR. MAXIMUM_RANDOM) tcc(i)=1.-tcc(i) 590 ENDDO ! loop over i 591 592 !! Convective and Stratiform Cloud Droplet Effective Radius (REFFCLWC REFFCLWS) 593 DO i = 1, klon 594 DO k = 1, klev 595 pqlwpcon(i,k)=rnebcon(i,k)*clwcon(i,k) ! fraction eau liquide convective 596 pqlwpstra(i,k)=pclc(i,k)*phase3d(i,k)-pqlwpcon(i,k) ! fraction eau liquide stratiforme 597 IF (pqlwpstra(i,k) .LE. 0.0) pqlwpstra(i,k)=0.0 598 ! Convective Cloud Droplet Effective Radius (REFFCLWC) : variable 3D 599 reffclwc(i,k)=1.1 600 & *((pqlwpcon(i,k)*pplay(i,k)/(RD * T(i,k))) 601 & /(4./3*RPI*1000.*cdnc(i,k)) )**(1./3.) 602 reffclwc(i,k) = MAX(reffclwc(i,k) * 1e6, 5.) 603 604 ! Stratiform Cloud Droplet Effective Radius (REFFCLWS) : variable 3D 605 IF ((pclc(i,k)-rnebcon(i,k)) .LE. seuil_neb) THEN ! tout sous la forme convective 606 reffclws(i,k)=0.0 607 lcc3dstra(i,k)= 0.0 608 ELSE 609 reffclws(i,k) = (pclc(i,k)*phase3d(i,k)* 610 & rad_chaud_tab(i,k)- 611 & pqlwpcon(i,k)*reffclwc(i,k)) 612 IF(reffclws(i,k) .LE. 0.0) reffclws(i,k)=0.0 613 lcc3dstra(i,k)=pqlwpstra(i,k) 614 ENDIF 615 !Convertion from um to m 616 IF(rnebcon(i,k). LE. seuil_neb) THEN 617 reffclwc(i,k) = reffclwc(i,k)*seuil_neb*clwcon(i,k) 618 & *1.0E-06 619 lcc3dcon(i,k)= seuil_neb*clwcon(i,k) 620 ELSE 621 reffclwc(i,k) = reffclwc(i,k)*pqlwpcon(i,k) 622 & *1.0E-06 623 lcc3dcon(i,k) = pqlwpcon(i,k) 624 ENDIF 625 626 reffclws(i,k) = reffclws(i,k)*1.0E-06 627 628 ENDDO !klev 629 ENDDO !klon 630 631 !! Column Integrated Cloud Droplet Number (CLDNVI) : variable 2D 632 DO k = 1, klev 633 DO i = 1, klon 634 pdel(i,k) = paprs(i,k)-paprs(i,k+1) 635 zrho(i,k)=pplay(i,k)/t(i,k)/RD ! kg/m3 636 dh(i,k)=pdel(i,k)/(gravit*zrho(i,k)) ! hauteur de chaque boite (m) 637 ENDDO 638 ENDDO 639 c 640 DO i = 1, klon 641 cldnvi(i)=0. 642 lcc_integrat(i)=0. 643 height(i)=0. 644 DO k = 1, klev 645 cldnvi(i)=cldnvi(i)+cdnc(i,k)*lcc3d(i,k)*dh(i,k) 646 lcc_integrat(i)=lcc_integrat(i)+lcc3d(i,k)*dh(i,k) 647 height(i)=height(i)+dh(i,k) 648 ENDDO ! klev 649 lcc_integrat(i)=lcc_integrat(i)/height(i) 650 IF (lcc_integrat(i) .LE. 1.0E-03) THEN 651 cldnvi(i)=cldnvi(i)*lcc(i)/seuil_neb 652 ELSE 653 cldnvi(i)=cldnvi(i)*lcc(i)/lcc_integrat(i) 654 ENDIF 655 ENDDO ! klon 656 657 DO i = 1, klon 658 DO k = 1, klev 659 IF (scdnc(i,k) .LE. 0.0) scdnc(i,k)=0.0 660 IF (reffclws(i,k) .LE. 0.0) reffclws(i,k)=0.0 661 IF (reffclwc(i,k) .LE. 0.0) reffclwc(i,k)=0.0 662 IF (lcc3d(i,k) .LE. 0.0) lcc3d(i,k)=0.0 663 IF (lcc3dcon(i,k) .LE. 0.0) lcc3dcon(i,k)=0.0 664 IF (lcc3dstra(i,k) .LE. 0.0) lcc3dstra(i,k)=0.0 665 ENDDO 666 IF (reffclwtop(i) .LE. 0.0) reffclwtop(i)=0.0 667 IF (cldncl(i) .LE. 0.0) cldncl(i)=0.0 668 IF (cldnvi(i) .LE. 0.0) cldnvi(i)=0.0 669 IF (lcc(i) .LE. 0.0) lcc(i)=0.0 670 ENDDO 671 672 ENDIF !ok_aie 673 ENDIF !ok newmicro 674 c 478 675 C 479 676 RETURN -
LMDZ4/trunk/libf/phylmd/phys_local_var_mod.F90
r1279 r1337 88 88 REAL, SAVE, ALLOCATABLE :: tau3d_aero(:,:,:,:) 89 89 !$OMP THREADPRIVATE(tau3d_aero) 90 REAL, SAVE, ALLOCATABLE :: scdnc(:,:) 91 !$OMP THREADPRIVATE(scdnc) 92 REAL, SAVE, ALLOCATABLE :: cldncl(:) 93 !$OMP THREADPRIVATE(cldncl) 94 REAL, SAVE, ALLOCATABLE :: reffclwtop(:) 95 !$OMP THREADPRIVATE(reffclwtop) 96 REAL, SAVE, ALLOCATABLE :: lcc(:) 97 !$OMP THREADPRIVATE(lcc) 98 REAL, SAVE, ALLOCATABLE :: reffclws(:,:) 99 !$OMP THREADPRIVATE(reffclws) 100 REAL, SAVE, ALLOCATABLE :: reffclwc(:,:) 101 !$OMP THREADPRIVATE(reffclwc) 102 REAL, SAVE, ALLOCATABLE :: cldnvi(:) 103 !$OMP THREADPRIVATE(cldnvi) 104 REAL, SAVE, ALLOCATABLE :: lcc3d(:,:) 105 !$OMP THREADPRIVATE(lcc3d) 106 REAL, SAVE, ALLOCATABLE :: lcc3dcon(:,:) 107 !$OMP THREADPRIVATE(lcc3dcon) 108 REAL, SAVE, ALLOCATABLE :: lcc3dstra(:,:) 109 !$OMP THREADPRIVATE(lcc3dstra) 110 REAL, SAVE, ALLOCATABLE :: od550aer(:) 111 !$OMP THREADPRIVATE(od550aer) 112 REAL, SAVE, ALLOCATABLE :: absvisaer(:) 113 !$OMP THREADPRIVATE(absvisaer) 114 REAL, SAVE, ALLOCATABLE :: od865aer(:) 115 !$OMP THREADPRIVATE(od865aer) 116 REAL, SAVE, ALLOCATABLE :: ec550aer(:,:) 117 !$OMP THREADPRIVATE(ec550aer) 118 REAL, SAVE, ALLOCATABLE :: od550lt1aer(:) 119 !$OMP THREADPRIVATE(od550lt1aer) 120 REAL, SAVE, ALLOCATABLE :: sconcso4(:) 121 !$OMP THREADPRIVATE(sconcso4) 122 REAL, SAVE, ALLOCATABLE :: sconcoa(:) 123 !$OMP THREADPRIVATE(sconcoa) 124 REAL, SAVE, ALLOCATABLE :: sconcbc(:) 125 !$OMP THREADPRIVATE(sconcbc) 126 REAL, SAVE, ALLOCATABLE :: sconcss(:) 127 !$OMP THREADPRIVATE(sconcss) 128 REAL, SAVE, ALLOCATABLE :: sconcdust(:) 129 !$OMP THREADPRIVATE(sconcdust) 130 REAL, SAVE, ALLOCATABLE :: concso4(:,:) 131 !$OMP THREADPRIVATE(concso4) 132 REAL, SAVE, ALLOCATABLE :: concoa(:,:) 133 !$OMP THREADPRIVATE(concoa) 134 REAL, SAVE, ALLOCATABLE :: concbc(:,:) 135 !$OMP THREADPRIVATE(concbc) 136 REAL, SAVE, ALLOCATABLE :: concss(:,:) 137 !$OMP THREADPRIVATE(concss) 138 REAL, SAVE, ALLOCATABLE :: concdust(:,:) 139 !$OMP THREADPRIVATE(concdust) 140 REAL, SAVE, ALLOCATABLE :: loadso4(:) 141 !$OMP THREADPRIVATE(loadso4) 142 REAL, SAVE, ALLOCATABLE :: loadoa(:) 143 !$OMP THREADPRIVATE(loadoa) 144 REAL, SAVE, ALLOCATABLE :: loadbc(:) 145 !$OMP THREADPRIVATE(loadbc) 146 REAL, SAVE, ALLOCATABLE :: loadss(:) 147 !$OMP THREADPRIVATE(loadss) 148 REAL, SAVE, ALLOCATABLE :: loaddust(:) 149 !$OMP THREADPRIVATE(loaddust) 150 REAL, SAVE, ALLOCATABLE :: load_tmp1(:) 151 !$OMP THREADPRIVATE(load_tmp1) 152 REAL, SAVE, ALLOCATABLE :: load_tmp2(:) 153 !$OMP THREADPRIVATE(load_tmp2) 154 REAL, SAVE, ALLOCATABLE :: load_tmp3(:) 155 !$OMP THREADPRIVATE(load_tmp3) 156 REAL, SAVE, ALLOCATABLE :: load_tmp4(:) 157 !$OMP THREADPRIVATE(load_tmp4) 158 REAL, SAVE, ALLOCATABLE :: load_tmp5(:) 159 !$OMP THREADPRIVATE(load_tmp5) 160 REAL, SAVE, ALLOCATABLE :: load_tmp6(:) 161 !$OMP THREADPRIVATE(load_tmp6) 162 REAL, SAVE, ALLOCATABLE :: load_tmp7(:) 163 !$OMP THREADPRIVATE(load_tmp7) 90 164 91 165 CONTAINS … … 131 205 allocate(tausum_aero(klon,nwave,naero_spc)) 132 206 allocate(tau3d_aero(klon,klev,nwave,naero_spc)) 207 allocate(scdnc(klon, klev)) 208 allocate(cldncl(klon)) 209 allocate(reffclwtop(klon)) 210 allocate(lcc(klon)) 211 allocate(reffclws(klon, klev)) 212 allocate(reffclwc(klon, klev)) 213 allocate(cldnvi(klon)) 214 allocate(lcc3d(klon, klev)) 215 allocate(lcc3dcon(klon, klev)) 216 allocate(lcc3dstra(klon, klev)) 217 allocate(od550aer(klon)) 218 allocate(od865aer(klon)) 219 allocate(absvisaer(klon)) 220 allocate(ec550aer(klon,klev)) 221 allocate(od550lt1aer(klon)) 222 allocate(sconcso4(klon)) 223 allocate(sconcoa(klon)) 224 allocate(sconcbc(klon)) 225 allocate(sconcss(klon)) 226 allocate(sconcdust(klon)) 227 allocate(concso4(klon,klev)) 228 allocate(concoa(klon,klev)) 229 allocate(concbc(klon,klev)) 230 allocate(concss(klon,klev)) 231 allocate(concdust(klon,klev)) 232 allocate(loadso4(klon)) 233 allocate(loadoa(klon)) 234 allocate(loadbc(klon)) 235 allocate(loadss(klon)) 236 allocate(loaddust(klon)) 237 allocate(load_tmp1(klon)) 238 allocate(load_tmp2(klon)) 239 allocate(load_tmp3(klon)) 240 allocate(load_tmp4(klon)) 241 allocate(load_tmp5(klon)) 242 allocate(load_tmp6(klon)) 243 allocate(load_tmp7(klon)) 133 244 134 245 END SUBROUTINE phys_local_var_init … … 170 281 deallocate(tausum_aero) 171 282 deallocate(tau3d_aero) 283 deallocate(scdnc) 284 deallocate(cldncl) 285 deallocate(reffclwtop) 286 deallocate(lcc) 287 deallocate(reffclws) 288 deallocate(reffclwc) 289 deallocate(cldnvi) 290 deallocate(lcc3d) 291 deallocate(lcc3dcon) 292 deallocate(lcc3dstra) 293 deallocate(od550aer) 294 deallocate(od865aer) 295 deallocate(absvisaer) 296 deallocate(ec550aer) 297 deallocate(od550lt1aer) 298 deallocate(sconcso4) 299 deallocate(sconcoa) 300 deallocate(sconcbc) 301 deallocate(sconcss) 302 deallocate(sconcdust) 303 deallocate(concso4) 304 deallocate(concoa) 305 deallocate(concbc) 306 deallocate(concss) 307 deallocate(concdust) 308 deallocate(loadso4) 309 deallocate(loadoa) 310 deallocate(loadbc) 311 deallocate(loadss) 312 deallocate(loaddust) 313 deallocate(load_tmp1) 314 deallocate(load_tmp2) 315 deallocate(load_tmp3) 316 deallocate(load_tmp4) 317 deallocate(load_tmp5) 318 deallocate(load_tmp6) 319 deallocate(load_tmp7) 172 320 deallocate(d_u_hin,d_v_hin,d_t_hin) 173 321 -
LMDZ4/trunk/libf/phylmd/phys_output_mod.F90
r1334 r1337 356 356 type(ctrl_out),save :: o_solswai = ctrl_out((/ 2, 10, 10, 10, 10 /),'solswai') 357 357 358 type(ctrl_out),save,dimension(10) :: o_tausumaero = (/ ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_ASBCM'), & 359 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_ASPOMM'), & 360 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_ASSO4M'), & 361 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_CSSO4M'), & 362 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_SSSSM'), & 363 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_ASSSM'), & 364 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_CSSSM'), & 365 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_CIDUSTM'), & 366 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_AIBCM'), & 367 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_AIPOMM') /) 368 369 type(ctrl_out),save :: o_swtoaas_nat = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoaas_nat') 370 type(ctrl_out),save :: o_swsrfas_nat = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfas_nat') 371 type(ctrl_out),save :: o_swtoacs_nat = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacs_nat') 372 type(ctrl_out),save :: o_swsrfcs_nat = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcs_nat') 373 374 type(ctrl_out),save :: o_swtoaas_ant = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoaas_ant') 375 type(ctrl_out),save :: o_swsrfas_ant = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfas_ant') 376 type(ctrl_out),save :: o_swtoacs_ant = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacs_ant') 377 type(ctrl_out),save :: o_swsrfcs_ant = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcs_ant') 378 379 type(ctrl_out),save :: o_swtoacf_nat = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacf_nat') 380 type(ctrl_out),save :: o_swsrfcf_nat = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcf_nat') 381 type(ctrl_out),save :: o_swtoacf_ant = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacf_ant') 382 type(ctrl_out),save :: o_swsrfcf_ant = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcf_ant') 383 type(ctrl_out),save :: o_swtoacf_zero = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacf_zero') 384 type(ctrl_out),save :: o_swsrfcf_zero = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcf_zero') 358 type(ctrl_out),save,dimension(10) :: o_tausumaero = (/ ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_ASBCM'), & 359 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_ASPOMM'), & 360 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_ASSO4M'), & 361 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_CSSO4M'), & 362 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_SSSSM'), & 363 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_ASSSM'), & 364 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_CSSSM'), & 365 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_CIDUSTM'), & 366 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_AIBCM'), & 367 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_AIPOMM') /) 368 369 type(ctrl_out),save :: o_od550aer = ctrl_out((/ 4, 4, 10, 10, 10 /),'od550aer') 370 type(ctrl_out),save :: o_od865aer = ctrl_out((/ 4, 4, 10, 10, 10 /),'od865aer') 371 type(ctrl_out),save :: o_absvisaer = ctrl_out((/ 4, 4, 10, 10, 10 /),'absvisaer') 372 type(ctrl_out),save :: o_od550lt1aer = ctrl_out((/ 4, 4, 10, 10, 10 /),'od550lt1aer') 373 374 type(ctrl_out),save :: o_sconcso4 = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcso4') 375 type(ctrl_out),save :: o_sconcoa = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcoa') 376 type(ctrl_out),save :: o_sconcbc = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcbc') 377 type(ctrl_out),save :: o_sconcss = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcss') 378 type(ctrl_out),save :: o_sconcdust = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcdust') 379 type(ctrl_out),save :: o_concso4 = ctrl_out((/ 4, 4, 10, 10, 10 /),'concso4') 380 type(ctrl_out),save :: o_concoa = ctrl_out((/ 4, 4, 10, 10, 10 /),'concoa') 381 type(ctrl_out),save :: o_concbc = ctrl_out((/ 4, 4, 10, 10, 10 /),'concbc') 382 type(ctrl_out),save :: o_concss = ctrl_out((/ 4, 4, 10, 10, 10 /),'concss') 383 type(ctrl_out),save :: o_concdust = ctrl_out((/ 4, 4, 10, 10, 10 /),'concdust') 384 type(ctrl_out),save :: o_loadso4 = ctrl_out((/ 4, 4, 10, 10, 10 /),'loadso4') 385 type(ctrl_out),save :: o_loadoa = ctrl_out((/ 4, 4, 10, 10, 10 /),'loadoa') 386 type(ctrl_out),save :: o_loadbc = ctrl_out((/ 4, 4, 10, 10, 10 /),'loadbc') 387 type(ctrl_out),save :: o_loadss = ctrl_out((/ 4, 4, 10, 10, 10 /),'loadss') 388 type(ctrl_out),save :: o_loaddust = ctrl_out((/ 4, 4, 10, 10, 10 /),'loaddust') 389 390 type(ctrl_out),save :: o_swtoaas_nat = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoaas_nat') 391 type(ctrl_out),save :: o_swsrfas_nat = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfas_nat') 392 type(ctrl_out),save :: o_swtoacs_nat = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacs_nat') 393 type(ctrl_out),save :: o_swsrfcs_nat = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcs_nat') 394 395 type(ctrl_out),save :: o_swtoaas_ant = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoaas_ant') 396 type(ctrl_out),save :: o_swsrfas_ant = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfas_ant') 397 type(ctrl_out),save :: o_swtoacs_ant = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacs_ant') 398 type(ctrl_out),save :: o_swsrfcs_ant = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcs_ant') 399 400 type(ctrl_out),save :: o_swtoacf_nat = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacf_nat') 401 type(ctrl_out),save :: o_swsrfcf_nat = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcf_nat') 402 type(ctrl_out),save :: o_swtoacf_ant = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacf_ant') 403 type(ctrl_out),save :: o_swsrfcf_ant = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcf_ant') 404 type(ctrl_out),save :: o_swtoacf_zero = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacf_zero') 405 type(ctrl_out),save :: o_swsrfcf_zero = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcf_zero') 406 407 type(ctrl_out),save :: o_cldncl = ctrl_out((/ 4, 4, 10, 10, 10 /),'cldncl') 408 type(ctrl_out),save :: o_reffclwtop = ctrl_out((/ 4, 4, 10, 10, 10 /),'reffclwtop') 409 type(ctrl_out),save :: o_cldnvi = ctrl_out((/ 4, 4, 10, 10, 10 /),'cldnvi') 410 type(ctrl_out),save :: o_lcc = ctrl_out((/ 4, 4, 10, 10, 10 /),'lcc') 385 411 386 412 387 413 !!!!!!!!!!!!!!!!!!!!!! 3D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 414 type(ctrl_out),save :: o_ec550aer = ctrl_out((/ 4, 4, 10, 10, 1 /),'ec550aer') 388 415 type(ctrl_out),save :: o_lwcon = ctrl_out((/ 2, 5, 10, 10, 1 /),'lwcon') 389 416 type(ctrl_out),save :: o_iwcon = ctrl_out((/ 2, 5, 10, 10, 10 /),'iwcon') … … 413 440 type(ctrl_out),save :: o_re =ctrl_out((/ 5, 10, 10, 10, 10 /),'re') 414 441 type(ctrl_out),save :: o_fl =ctrl_out((/ 5, 10, 10, 10, 10 /),'fl') 442 type(ctrl_out),save :: o_scdnc =ctrl_out((/ 4, 4, 10, 10, 1 /),'scdnc') 443 type(ctrl_out),save :: o_reffclws =ctrl_out((/ 4, 4, 10, 10, 1 /),'reffclws') 444 type(ctrl_out),save :: o_reffclwc =ctrl_out((/ 4, 4, 10, 10, 1 /),'reffclwc') 445 type(ctrl_out),save :: o_lcc3d =ctrl_out((/ 4, 4, 10, 10, 1 /),'lcc3d') 446 type(ctrl_out),save :: o_lcc3dcon =ctrl_out((/ 4, 4, 10, 10, 1 /),'lcc3dcon') 447 type(ctrl_out),save :: o_lcc3dstra =ctrl_out((/ 4, 4, 10, 10, 1 /),'lcc3dstra') 415 448 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 416 449 … … 863 896 864 897 IF (new_aod .AND. (.NOT. aerosol_couple)) THEN 898 899 CALL histdef2d(iff,o_od550aer%flag,o_od550aer%name, "Total aerosol optical depth at 550nm", "-") 900 CALL histdef2d(iff,o_od865aer%flag,o_od865aer%name, "Total aerosol optical depth at 870nm", "-") 901 CALL histdef2d(iff,o_absvisaer%flag,o_absvisaer%name, "Absorption aerosol visible optical depth", "-") 902 CALL histdef2d(iff,o_od550lt1aer%flag,o_od550lt1aer%name, "Fine mode optical depth", "-") 903 904 905 CALL histdef2d(iff,o_sconcso4%flag,o_sconcso4%name,"Surface Concentration of Sulfate ","kg/m3") 906 CALL histdef2d(iff,o_sconcoa%flag,o_sconcoa%name,"Surface Concentration of Organic Aerosol ","kg/m3") 907 CALL histdef2d(iff,o_sconcbc%flag,o_sconcbc%name,"Surface Concentration of Black Carbon ","kg/m3") 908 CALL histdef2d(iff,o_sconcss%flag,o_sconcss%name,"Surface Concentration of Sea Salt ","kg/m3") 909 CALL histdef2d(iff,o_sconcdust%flag,o_sconcdust%name,"Surface Concentration of Dust ","kg/m3") 910 CALL histdef3d(iff,o_concso4%flag,o_concso4%name,"Concentration of Sulfate ","kg/m3") 911 CALL histdef3d(iff,o_concoa%flag,o_concoa%name,"Concentration of Organic Aerosol ","kg/m3") 912 CALL histdef3d(iff,o_concbc%flag,o_concbc%name,"Concentration of Black Carbon ","kg/m3") 913 CALL histdef3d(iff,o_concss%flag,o_concss%name,"Concentration of Sea Salt ","kg/m3") 914 CALL histdef3d(iff,o_concdust%flag,o_concdust%name,"Concentration of Dust ","kg/m3") 915 CALL histdef2d(iff,o_loadso4%flag,o_loadso4%name,"Column Load of Sulfate ","kg/m2") 916 CALL histdef2d(iff,o_loadoa%flag,o_loadoa%name,"Column Load of Organic Aerosol ","kg/m2") 917 CALL histdef2d(iff,o_loadbc%flag,o_loadbc%name,"Column Load of Black Carbon ","kg/m2") 918 CALL histdef2d(iff,o_loadss%flag,o_loadss%name,"Column Load of Sea Salt ","kg/m2") 919 CALL histdef2d(iff,o_loaddust%flag,o_loaddust%name,"Column Load of Dust ","kg/m2") 920 865 921 DO naero = 1, naero_spc 866 922 CALL histdef2d(iff,o_tausumaero(naero)%flag,o_tausumaero(naero)%name,"Aerosol Optical depth at 550 nm "//name_aero(naero),"1") … … 896 952 CALL histdef2d(iff,o_topswai%flag,o_topswai%name, "AIE at TOA", "W/m2") 897 953 CALL histdef2d(iff,o_solswai%flag,o_solswai%name, "AIE at SFR", "W/m2") 954 !Cloud droplet number concentration 955 CALL histdef3d(iff,o_scdnc%flag,o_scdnc%name, "Cloud droplet number concentration","m-3") 956 CALL histdef2d(iff,o_cldncl%flag,o_cldncl%name, "CDNC at top of liquid water cloud", "m-3") 957 CALL histdef3d(iff,o_reffclws%flag,o_reffclws%name, "Stratiform Cloud Droplet Effective Radius","m") 958 CALL histdef3d(iff,o_reffclwc%flag,o_reffclwc%name, "Convective Cloud Droplet Effective Radius","m") 959 CALL histdef2d(iff,o_cldnvi%flag,o_cldnvi%name, "Column Integrated Cloud Droplet Number", "m-2") 960 CALL histdef3d(iff,o_lcc3d%flag,o_lcc3d%name, "Cloud liquid fraction","1") 961 CALL histdef3d(iff,o_lcc3dcon%flag,o_lcc3dcon%name, "Convective cloud liquid fraction","1") 962 CALL histdef3d(iff,o_lcc3dstra%flag,o_lcc3dstra%name, "Stratiform cloud liquid fraction","1") 963 CALL histdef2d(iff,o_lcc%flag,o_lcc%name, "Cloud liquid fraction at top of cloud","1") 964 CALL histdef2d(iff,o_reffclwtop%flag,o_reffclwtop%name, "Droplet effective radius at top of liquid water cloud", "m") 898 965 ENDIF 899 966 … … 1025 1092 1026 1093 ! Champs 3D: 1094 CALL histdef3d(iff,o_ec550aer%flag,o_ec550aer%name, "Extinction at 550nm", "m^-1") 1027 1095 CALL histdef3d(iff,o_lwcon%flag,o_lwcon%name, "Cloud liquid water content", "kg/kg") 1028 1096 CALL histdef3d(iff,o_iwcon%flag,o_iwcon%name, "Cloud ice water content", "kg/kg") -
LMDZ4/trunk/libf/phylmd/phys_output_write.h
r1334 r1337 914 914 ! OD550 per species 915 915 IF (new_aod .and. (.not. aerosol_couple)) THEN 916 917 IF (o_od550aer%flag(iff)<=lev_files(iff)) THEN 918 CALL histwrite_phy(nid_files(iff),o_od550aer%name,itau_w, 919 $ od550aer) 920 ENDIF 921 IF (o_od865aer%flag(iff)<=lev_files(iff)) THEN 922 CALL histwrite_phy(nid_files(iff),o_od865aer%name,itau_w, 923 $ od865aer) 924 ENDIF 925 IF (o_absvisaer%flag(iff)<=lev_files(iff)) THEN 926 CALL histwrite_phy(nid_files(iff),o_absvisaer%name,itau_w, 927 $ absvisaer) 928 ENDIF 929 IF (o_od550lt1aer%flag(iff)<=lev_files(iff)) THEN 930 CALL histwrite_phy(nid_files(iff),o_od550lt1aer%name,itau_w, 931 $ od550lt1aer) 932 ENDIF 933 934 IF (o_sconcso4%flag(iff)<=lev_files(iff)) THEN 935 CALL histwrite_phy(nid_files(iff),o_sconcso4%name,itau_w, 936 $ sconcso4) 937 ENDIF 938 IF (o_sconcoa%flag(iff)<=lev_files(iff)) THEN 939 CALL histwrite_phy(nid_files(iff),o_sconcoa%name,itau_w, 940 $ sconcoa) 941 ENDIF 942 IF (o_sconcbc%flag(iff)<=lev_files(iff)) THEN 943 CALL histwrite_phy(nid_files(iff),o_sconcbc%name,itau_w, 944 $ sconcbc) 945 ENDIF 946 IF (o_sconcss%flag(iff)<=lev_files(iff)) THEN 947 CALL histwrite_phy(nid_files(iff),o_sconcss%name,itau_w, 948 $ sconcss) 949 ENDIF 950 IF (o_sconcdust%flag(iff)<=lev_files(iff)) THEN 951 CALL histwrite_phy(nid_files(iff),o_sconcdust%name,itau_w, 952 $ sconcdust) 953 ENDIF 954 955 IF (o_concso4%flag(iff)<=lev_files(iff)) THEN 956 CALL histwrite_phy(nid_files(iff),o_concso4%name,itau_w, 957 $ concso4) 958 ENDIF 959 IF (o_concoa%flag(iff)<=lev_files(iff)) THEN 960 CALL histwrite_phy(nid_files(iff),o_concoa%name,itau_w, 961 $ concoa) 962 ENDIF 963 IF (o_concbc%flag(iff)<=lev_files(iff)) THEN 964 CALL histwrite_phy(nid_files(iff),o_concbc%name,itau_w, 965 $ concbc) 966 ENDIF 967 IF (o_concss%flag(iff)<=lev_files(iff)) THEN 968 CALL histwrite_phy(nid_files(iff),o_concss%name,itau_w, 969 $ concss) 970 ENDIF 971 IF (o_concdust%flag(iff)<=lev_files(iff)) THEN 972 CALL histwrite_phy(nid_files(iff),o_concdust%name,itau_w, 973 $ concdust) 974 ENDIF 975 976 IF (o_loadso4%flag(iff)<=lev_files(iff)) THEN 977 CALL histwrite_phy(nid_files(iff),o_loadso4%name,itau_w, 978 $ loadso4) 979 ENDIF 980 IF (o_loadoa%flag(iff)<=lev_files(iff)) THEN 981 CALL histwrite_phy(nid_files(iff),o_loadoa%name,itau_w, 982 $ loadoa) 983 ENDIF 984 IF (o_loadbc%flag(iff)<=lev_files(iff)) THEN 985 CALL histwrite_phy(nid_files(iff),o_loadbc%name,itau_w, 986 $ loadbc) 987 ENDIF 988 IF (o_loadss%flag(iff)<=lev_files(iff)) THEN 989 CALL histwrite_phy(nid_files(iff),o_loadss%name,itau_w, 990 $ loadss) 991 ENDIF 992 IF (o_loaddust%flag(iff)<=lev_files(iff)) THEN 993 CALL histwrite_phy(nid_files(iff),o_loaddust%name,itau_w, 994 $ loaddust) 995 ENDIF 996 916 997 DO naero = 1, naero_spc 917 998 IF (o_tausumaero(naero)%flag(iff)<=lev_files(iff)) THEN … … 1024 1105 $ solswai_aero) 1025 1106 ENDIF 1107 IF (o_scdnc%flag(iff)<=lev_files(iff)) THEN 1108 CALL histwrite_phy(nid_files(iff),o_scdnc%name,itau_w, 1109 $ scdnc) 1110 ENDIF 1111 IF (o_cldncl%flag(iff)<=lev_files(iff)) THEN 1112 CALL histwrite_phy(nid_files(iff),o_cldncl%name,itau_w, 1113 $ cldncl) 1114 ENDIF 1115 IF (o_reffclws%flag(iff)<=lev_files(iff)) THEN 1116 CALL histwrite_phy(nid_files(iff),o_reffclws%name,itau_w, 1117 $ reffclws) 1118 ENDIF 1119 IF (o_reffclwc%flag(iff)<=lev_files(iff)) THEN 1120 CALL histwrite_phy(nid_files(iff),o_reffclwc%name,itau_w, 1121 $ reffclwc) 1122 ENDIF 1123 IF (o_cldnvi%flag(iff)<=lev_files(iff)) THEN 1124 CALL histwrite_phy(nid_files(iff),o_cldnvi%name,itau_w, 1125 $ cldnvi) 1126 ENDIF 1127 IF (o_lcc%flag(iff)<=lev_files(iff)) THEN 1128 CALL histwrite_phy(nid_files(iff),o_lcc%name,itau_w, 1129 $ lcc) 1130 ENDIF 1131 IF (o_lcc3d%flag(iff)<=lev_files(iff)) THEN 1132 CALL histwrite_phy(nid_files(iff),o_lcc3d%name,itau_w, 1133 $ lcc3d) 1134 ENDIF 1135 IF (o_lcc3dcon%flag(iff)<=lev_files(iff)) THEN 1136 CALL histwrite_phy(nid_files(iff),o_lcc3dcon%name,itau_w, 1137 $ lcc3dcon) 1138 ENDIF 1139 IF (o_lcc3dstra%flag(iff)<=lev_files(iff)) THEN 1140 CALL histwrite_phy(nid_files(iff),o_lcc3dstra%name,itau_w, 1141 $ lcc3dstra) 1142 ENDIF 1143 IF (o_reffclwtop%flag(iff)<=lev_files(iff)) THEN 1144 CALL histwrite_phy(nid_files(iff),o_reffclwtop%name,itau_w, 1145 $ reffclwtop) 1146 ENDIF 1026 1147 ENDIF 1027 1148 1028 1149 ! Champs 3D: 1150 IF (o_ec550aer%flag(iff)<=lev_files(iff)) THEN 1151 CALL histwrite_phy(nid_files(iff),o_ec550aer%name,itau_w,ec550aer) 1152 ENDIF 1153 1029 1154 IF (o_lwcon%flag(iff)<=lev_files(iff)) THEN 1030 1155 CALL histwrite_phy(nid_files(iff),o_lwcon%name,itau_w,flwc) -
LMDZ4/trunk/libf/phylmd/readaerosol_interp.F90
r1279 r1337 1 1 ! $Id$ 2 2 ! 3 SUBROUTINE readaerosol_interp(id_aero, itap, pdtphys, r_day, first, pplay, paprs, t_seri, mass_out, pi_mass_out )3 SUBROUTINE readaerosol_interp(id_aero, itap, pdtphys, r_day, first, pplay, paprs, t_seri, mass_out, pi_mass_out, load_src) 4 4 ! 5 5 ! This routine will return the mass concentration at actual day(mass_out) and … … 46 46 REAL, INTENT(OUT) :: mass_out(klon,klev) ! Mass of aerosol (monthly mean data,from file) [ug AIBCM/m3] 47 47 REAL, INTENT(OUT) :: pi_mass_out(klon,klev) ! Mass of preindustrial aerosol (monthly mean data,from file) [ug AIBCM/m3] 48 REAL, INTENT(OUT) :: load_src(klon) ! Load of aerosol (monthly mean data,from file) [kg/m3] 48 49 ! 49 50 ! Local Variables: … … 61 62 REAL :: volm ! Volyme de melange [kg/kg] 62 63 REAL, DIMENSION(klon) :: psurf_day, pi_psurf_day 63 REAL, DIMENSION(klon) :: load_src,pi_load_src ! Mass load at source grid64 REAL, DIMENSION(klon) :: pi_load_src ! Mass load at source grid 64 65 REAL, DIMENSION(klon) :: load_tgt, load_tgt_test 65 66 REAL, DIMENSION(klon,klev) :: delp ! pressure difference in each model layer -
LMDZ4/trunk/libf/phylmd/readaerosol_optic.F90
r1279 r1337 14 14 USE dimphy 15 15 USE aero_mod 16 USE phys_local_var_mod, only: sconcso4,sconcoa,sconcbc,sconcss,sconcdust, & 17 concso4,concoa,concbc,concss,concdust,loadso4,loadoa,loadbc,loadss,loaddust, & 18 load_tmp1,load_tmp2,load_tmp3,load_tmp4,load_tmp5,load_tmp6,load_tmp7 16 19 IMPLICIT NONE 17 20 … … 76 79 flag_aerosol .EQ. 6 ) THEN 77 80 78 CALL readaerosol_interp(id_ASSO4M, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sulfate, sulfate_pi )81 CALL readaerosol_interp(id_ASSO4M, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sulfate, sulfate_pi,loadso4) 79 82 ELSE 80 83 sulfate(:,:) = 0. ; sulfate_pi(:,:) = 0. 84 loadso4=0. 81 85 END IF 82 86 … … 86 90 87 91 ! Get bc aerosol distribution 88 CALL readaerosol_interp(id_ASBCM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcsol, bcsol_pi ) 89 CALL readaerosol_interp(id_AIBCM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcins, bcins_pi ) 92 CALL readaerosol_interp(id_ASBCM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcsol, bcsol_pi, load_tmp1 ) 93 CALL readaerosol_interp(id_AIBCM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcins, bcins_pi, load_tmp2 ) 94 loadbc(:)=load_tmp1(:)+load_tmp2(:) 90 95 ELSE 91 96 bcsol(:,:) = 0. ; bcsol_pi(:,:) = 0. 92 97 bcins(:,:) = 0. ; bcins_pi(:,:) = 0. 98 loadbc=0. 93 99 END IF 94 100 … … 98 104 flag_aerosol .EQ. 6 ) THEN 99 105 100 CALL readaerosol_interp(id_ASPOMM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi) 101 CALL readaerosol_interp(id_AIPOMM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi) 106 CALL readaerosol_interp(id_ASPOMM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi, load_tmp3) 107 CALL readaerosol_interp(id_AIPOMM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi, load_tmp4) 108 loadoa(:)=load_tmp3(:)+load_tmp4(:) 102 109 ELSE 103 110 pomsol(:,:) = 0. ; pomsol_pi(:,:) = 0. 104 111 pomins(:,:) = 0. ; pomins_pi(:,:) = 0. 112 loadoa=0. 105 113 END IF 106 114 … … 110 118 flag_aerosol .EQ. 6 ) THEN 111 119 112 CALL readaerosol_interp(id_SSSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sssupco, sssupco_pi )113 CALL readaerosol_interp(id_CSSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi )114 CALL readaerosol_interp(id_ASSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, ssacu, ssacu_pi )115 120 CALL readaerosol_interp(id_SSSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sssupco, sssupco_pi, load_tmp5) 121 CALL readaerosol_interp(id_CSSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi, load_tmp6) 122 CALL readaerosol_interp(id_ASSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, ssacu, ssacu_pi, load_tmp7) 123 loadss(:)=load_tmp5(:)+load_tmp6(:)+load_tmp7(:) 116 124 ELSE 117 125 sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0. 118 126 ssacu(:,:) = 0. ; ssacu_pi(:,:) = 0. 119 127 sssupco(:,:) = 0. ; sssupco_pi = 0. 128 loadss=0. 120 129 ENDIF 121 130 … … 124 133 flag_aerosol .EQ. 6 ) THEN 125 134 126 CALL readaerosol_interp(id_CIDUSTM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, cidust, cidust_pi )135 CALL readaerosol_interp(id_CIDUSTM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, cidust, cidust_pi, loaddust) 127 136 128 137 ELSE 129 138 cidust(:,:) = 0. ; cidust_pi(:,:) = 0. 139 loaddust=0. 130 140 ENDIF 131 141 … … 198 208 END IF 199 209 210 211 ! Diagnostics calculation for CMIP5 protocol 212 sconcso4(:)=m_allaer(:,1,id_ASSO4M)*1.e-9 213 sconcoa(:)=(m_allaer(:,1,id_ASPOMM)+m_allaer(:,1,id_AIPOMM))*1.e-9 214 sconcbc(:)=(m_allaer(:,1,id_ASBCM)+m_allaer(:,1,id_AIBCM))*1.e-9 215 sconcss(:)=(m_allaer(:,1,id_ASSSM)+m_allaer(:,1,id_CSSSM)+m_allaer(:,1,id_SSSSM))*1.e-9 216 sconcdust(:)=m_allaer(:,1,id_CIDUSTM)*1.e-9 217 concso4(:,:)=m_allaer(:,:,id_ASSO4M)*1.e-9 218 concoa(:,:)=(m_allaer(:,:,id_ASPOMM)+m_allaer(:,:,id_AIPOMM))*1.e-9 219 concbc(:,:)=(m_allaer(:,:,id_ASBCM)+m_allaer(:,:,id_AIBCM))*1.e-9 220 concss(:,:)=(m_allaer(:,:,id_ASSSM)+m_allaer(:,:,id_CSSSM)+m_allaer(:,:,id_SSSSM))*1.e-9 221 concdust(:,:)=m_allaer(:,:,id_CIDUSTM)*1.e-9 222 223 200 224 END SUBROUTINE readaerosol_optic
Note: See TracChangeset
for help on using the changeset viewer.