Changeset 1337 for LMDZ4/trunk


Ignore:
Timestamp:
Apr 2, 2010, 1:31:05 PM (15 years ago)
Author:
Laurent Fairhead
Message:

Additions to aerosol outputs for CMIP5 exercise


Additions aux sorties aérosols pour l'exercice CMIP5

Michael, Anne

Location:
LMDZ4/trunk/libf/phylmd
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk/libf/phylmd/aeropt_2bands.F90

    r1279 r1337  
    1010  USE dimphy
    1111  USE aero_mod
     12  USE phys_local_var_mod, only: absvisaer
    1213
    1314  !    Yves Balkanski le 12 avril 2006
     
    11191120    ENDDO
    11201121  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       
    11211128
    11221129  DEALLOCATE(aerosol_name)
  • LMDZ4/trunk/libf/phylmd/aeropt_5wv.F90

    r1279 r1337  
    1111  USE DIMPHY
    1212  USE aero_mod
     13  USE phys_local_var_mod, only: od550aer,od865aer,ec550aer,od550lt1aer
    1314
    1415  !
     
    141142  REAL :: tau3d(KLON,KLEV), piz3d(KLON,KLEV), cg3d(KLON,KLEV)
    142143  REAL :: abs3d(KLON,KLEV)     ! epaisseur optique d'absorption
    143 
     144  REAL :: dh(KLON,KLEV)
    144145 
    145146  REAL :: alpha_aers_5wv(nbre_RH,las,naero_soluble)   ! ext. coeff. Soluble comp. units *** m2/g
     
    624625!      IF (pplay(i,k).EQ.0) stop  'stop aeropt_5wv p '
    625626      zrho=pplay(i,k)/t_seri(i,k)/RD                  ! kg/m3
     627      dh(i,k)=pdel(i,k)/(gravit*zrho)
    626628!CDIR UNROLL=naero_spc
    627629      mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9
     
    848850!  ENDDO
    849851
     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
    850865  DEALLOCATE(aerosol_name)
    851866 
  • LMDZ4/trunk/libf/phylmd/newmicro.F

    r1334 r1337  
    1111
    1212      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
    1317      IMPLICIT none
    1418c======================================================================
     
    4650#include "radepsi.h"
    4751#include "radopt.h"
     52c choix de l'hypothese de recouvrememnt nuageuse
     53      LOGICAL RANDOM,MAXIMUM_RANDOM,MAXIMUM,FIRST
     54      parameter (RANDOM=.FALSE., MAXIMUM_RANDOM=.TRUE., MAXIMUM=.FALSE.)
     55c 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)
     66c
    4867      REAL paprs(klon,klev+1), pplay(klon,klev)
    4968      REAL t(klon,klev)
     
    475494         pcl(i)=1.-pcl(i)
    476495      ENDDO
    477      
     496
     497c ========================================================
     498! DIAGNOSTICS CALCULATION FOR CMIP5 PROTOCOL
     499c ========================================================
     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
     574c 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
     577c 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
     580c Liquid Cloud Content at top of cloud
     581                  lcc(i) = lcc(i) + phase3d(i,k) * (tcc(i)-ftmp(i))*
     582     .                    flag_max
     583c 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
     639c
     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
     674c
    478675C
    479676      RETURN
  • LMDZ4/trunk/libf/phylmd/phys_local_var_mod.F90

    r1279 r1337  
    8888      REAL, SAVE, ALLOCATABLE :: tau3d_aero(:,:,:,:)
    8989      !$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)
    90164
    91165CONTAINS
     
    131205      allocate(tausum_aero(klon,nwave,naero_spc))
    132206      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))
    133244
    134245END SUBROUTINE phys_local_var_init
     
    170281      deallocate(tausum_aero)
    171282      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)
    172320      deallocate(d_u_hin,d_v_hin,d_t_hin)
    173321
  • LMDZ4/trunk/libf/phylmd/phys_output_mod.F90

    r1334 r1337  
    356356  type(ctrl_out),save :: o_solswai      = ctrl_out((/ 2, 10, 10, 10, 10 /),'solswai')
    357357
    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')
    385411
    386412
    387413!!!!!!!!!!!!!!!!!!!!!! 3D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     414  type(ctrl_out),save :: o_ec550aer     = ctrl_out((/ 4,  4, 10, 10, 1 /),'ec550aer')
    388415  type(ctrl_out),save :: o_lwcon        = ctrl_out((/ 2, 5, 10, 10, 1 /),'lwcon')
    389416  type(ctrl_out),save :: o_iwcon        = ctrl_out((/ 2, 5, 10, 10, 10 /),'iwcon')
     
    413440  type(ctrl_out),save :: o_re           =ctrl_out((/ 5, 10, 10, 10, 10 /),'re')
    414441  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')
    415448!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    416449
     
    863896
    864897IF (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
    865921  DO naero = 1, naero_spc
    866922  CALL histdef2d(iff,o_tausumaero(naero)%flag,o_tausumaero(naero)%name,"Aerosol Optical depth at 550 nm "//name_aero(naero),"1")
     
    896952  CALL histdef2d(iff,o_topswai%flag,o_topswai%name, "AIE at TOA", "W/m2")
    897953  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")
    898965 ENDIF
    899966
     
    10251092
    10261093! Champs 3D:
     1094 CALL histdef3d(iff,o_ec550aer%flag,o_ec550aer%name, "Extinction at 550nm", "m^-1")
    10271095 CALL histdef3d(iff,o_lwcon%flag,o_lwcon%name, "Cloud liquid water content", "kg/kg")
    10281096 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  
    914914! OD550 per species
    915915      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
    916997      DO naero = 1, naero_spc
    917998          IF (o_tausumaero(naero)%flag(iff)<=lev_files(iff)) THEN
     
    10241105     $            solswai_aero)
    10251106          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
    10261147       ENDIF
    10271148
    10281149! 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
    10291154       IF (o_lwcon%flag(iff)<=lev_files(iff)) THEN
    10301155      CALL histwrite_phy(nid_files(iff),o_lwcon%name,itau_w,flwc)
  • LMDZ4/trunk/libf/phylmd/readaerosol_interp.F90

    r1279 r1337  
    11! $Id$
    22!
    3 SUBROUTINE readaerosol_interp(id_aero, itap, pdtphys, r_day, first, pplay, paprs, t_seri, mass_out, pi_mass_out)
     3SUBROUTINE readaerosol_interp(id_aero, itap, pdtphys, r_day, first, pplay, paprs, t_seri, mass_out, pi_mass_out, load_src)
    44!
    55! This routine will return the mass concentration at actual day(mass_out) and
     
    4646  REAL, INTENT(OUT) :: mass_out(klon,klev)    ! Mass of aerosol (monthly mean data,from file) [ug AIBCM/m3]
    4747  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]
    4849!     
    4950! Local Variables:
     
    6162  REAL                              :: volm      ! Volyme de melange [kg/kg]
    6263  REAL, DIMENSION(klon)             :: psurf_day, pi_psurf_day
    63   REAL, DIMENSION(klon)             :: load_src, pi_load_src  ! Mass load at source grid
     64  REAL, DIMENSION(klon)             :: pi_load_src  ! Mass load at source grid
    6465  REAL, DIMENSION(klon)             :: load_tgt, load_tgt_test
    6566  REAL, DIMENSION(klon,klev)        :: delp ! pressure difference in each model layer
  • LMDZ4/trunk/libf/phylmd/readaerosol_optic.F90

    r1279 r1337  
    1414  USE dimphy
    1515  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
    1619  IMPLICIT NONE
    1720
     
    7679       flag_aerosol .EQ. 6 ) THEN
    7780
    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)
    7982  ELSE
    8083     sulfate(:,:) = 0. ; sulfate_pi(:,:) = 0.
     84     loadso4=0.
    8185  END IF
    8286
     
    8690
    8791     ! 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(:)
    9095  ELSE
    9196     bcsol(:,:) = 0. ; bcsol_pi(:,:) = 0.
    9297     bcins(:,:) = 0. ; bcins_pi(:,:) = 0.
     98     loadbc=0.
    9399  END IF
    94100
     
    98104       flag_aerosol .EQ. 6 ) THEN
    99105
    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(:)
    102109  ELSE
    103110     pomsol(:,:) = 0. ; pomsol_pi(:,:) = 0.
    104111     pomins(:,:) = 0. ; pomins_pi(:,:) = 0.
     112     loadoa=0.
    105113  END IF
    106114
     
    110118      flag_aerosol .EQ. 6 ) THEN
    111119
    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(:)
    116124  ELSE
    117125     sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0.
    118126     ssacu(:,:)    = 0. ; ssacu_pi(:,:) = 0.
    119127     sssupco(:,:)  = 0. ; sssupco_pi = 0.
     128     loadss=0.
    120129  ENDIF
    121130
     
    124133      flag_aerosol .EQ. 6 ) THEN
    125134
    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)
    127136
    128137  ELSE
    129138      cidust(:,:) = 0. ; cidust_pi(:,:) = 0.
     139      loaddust=0.
    130140  ENDIF
    131141
     
    198208  END IF
    199209
     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
    200224END SUBROUTINE readaerosol_optic
Note: See TracChangeset for help on using the changeset viewer.