Changeset 1347 for LMDZ4


Ignore:
Timestamp:
Apr 13, 2010, 5:12:56 PM (15 years ago)
Author:
Laurent Fairhead
Message:

Additions to aerosol outputs for CMIP5 exercise
(Needed because of chageset r1346 LF)


Additions aux sorties aérosols pour l'exercice CMIP5
(Nécessaires suite au changeset r1346 LF)

Michael, Anne

Location:
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/aeropt_2bands.F90

    r1279 r1347  
    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/branches/LMDZ4V5.0-dev/libf/phylmd/aeropt_5wv.F90

    r1299 r1347  
    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
     
    621622  DO k=1, klev
    622623    DO i=1, klon
     624!      IF (t_seri(i,k).EQ.0) stop 'stop aeropt_5wv T '
     625!      IF (pplay(i,k).EQ.0) stop  'stop aeropt_5wv p '
    623626      zrho=pplay(i,k)/t_seri(i,k)/RD                  ! kg/m3
     627      dh(i,k)=pdel(i,k)/(gravit*zrho)
    624628!CDIR UNROLL=naero_spc
    625629      mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9
     
    846850!  ENDDO
    847851
     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
    848865  DEALLOCATE(aerosol_name)
    849866 
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/newmicro.F

    r1306 r1347  
    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)
     
    131150      xflwc = 0.d0
    132151      xfiwc = 0.d0
     152
     153! Initialisation
     154      reliq=0.
     155      reice=0.
    133156
    134157      DO k = 1, klev
     
    471494         pcl(i)=1.-pcl(i)
    472495      ENDDO
    473      
     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
    474675C
    475676      RETURN
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/phys_local_var_mod.F90

    r1279 r1347  
    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/branches/LMDZ4V5.0-dev/libf/phylmd/phys_output_mod.F90

    r1308 r1347  
    5454
    5555!!! 1D
    56   type(ctrl_out),save :: o_phis         = ctrl_out((/ 1, 1, 10, 1, 1 /), 'phis')
    57   type(ctrl_out),save :: o_aire         = ctrl_out((/ 1, 1, 10,  1, 1 /),'aire')
     56  type(ctrl_out),save :: o_phis         = ctrl_out((/ 1, 1, 10, 5, 1 /), 'phis')
     57  type(ctrl_out),save :: o_aire         = ctrl_out((/ 1, 1, 10,  10, 1 /),'aire')
    5858  type(ctrl_out),save :: o_contfracATM  = ctrl_out((/ 10, 1,  1, 10, 10 /),'contfracATM')
    5959  type(ctrl_out),save :: o_contfracOR   = ctrl_out((/ 10, 1,  1, 10, 10 /),'contfracOR')
     
    6161 
    6262!!! 2D
    63   type(ctrl_out),save :: o_flat         = ctrl_out((/ 10, 1, 10, 10, 1 /),'flat')
     63  type(ctrl_out),save :: o_flat         = ctrl_out((/ 5, 1, 10, 5, 1 /),'flat')
    6464  type(ctrl_out),save :: o_slp          = ctrl_out((/ 1, 1, 1, 10, 1 /),'slp')
    65   type(ctrl_out),save :: o_tsol         = ctrl_out((/ 1, 1, 1, 1, 1 /),'tsol')
    66   type(ctrl_out),save :: o_t2m          = ctrl_out((/ 1, 1, 1, 1, 1 /),'t2m')
     65  type(ctrl_out),save :: o_tsol         = ctrl_out((/ 1, 1, 1, 5, 1 /),'tsol')
     66  type(ctrl_out),save :: o_t2m          = ctrl_out((/ 1, 1, 1, 5, 1 /),'t2m')
    6767  type(ctrl_out),save :: o_t2m_min      = ctrl_out((/ 1, 1, 10, 10, 10 /),'t2m_min')
    6868  type(ctrl_out),save :: o_t2m_max      = ctrl_out((/ 1, 1, 10, 10, 10 /),'t2m_max')
     
    7575  type(ctrl_out),save :: o_wind10max    = ctrl_out((/ 10, 1, 10, 10, 10 /),'wind10max')
    7676  type(ctrl_out),save :: o_sicf         = ctrl_out((/ 1, 1, 10, 10, 10 /),'sicf')
    77   type(ctrl_out),save :: o_q2m          = ctrl_out((/ 1, 1, 1, 1, 1 /),'q2m')
    78   type(ctrl_out),save :: o_u10m         = ctrl_out((/ 1, 1, 1, 1, 1 /),'u10m')
    79   type(ctrl_out),save :: o_v10m         = ctrl_out((/ 1, 1, 1, 1, 1 /),'v10m')
    80   type(ctrl_out),save :: o_psol         = ctrl_out((/ 1, 1, 1, 1, 1 /),'psol')
     77  type(ctrl_out),save :: o_q2m          = ctrl_out((/ 1, 1, 1, 5, 1 /),'q2m')
     78  type(ctrl_out),save :: o_u10m         = ctrl_out((/ 1, 1, 1, 5, 1 /),'u10m')
     79  type(ctrl_out),save :: o_v10m         = ctrl_out((/ 1, 1, 1, 5, 1 /),'v10m')
     80  type(ctrl_out),save :: o_psol         = ctrl_out((/ 1, 1, 1, 5, 1 /),'psol')
    8181  type(ctrl_out),save :: o_qsurf        = ctrl_out((/ 1, 10, 10, 10, 10 /),'qsurf')
    8282
     
    9191                                              ctrl_out((/ 10, 4, 10, 10, 10 /),'v10m_sic') /)
    9292
    93   type(ctrl_out),save :: o_qsol         = ctrl_out((/ 1, 10, 10, 1, 1 /),'qsol')
     93  type(ctrl_out),save :: o_qsol         = ctrl_out((/ 1, 10, 10, 10, 10 /),'qsol')
    9494
    9595  type(ctrl_out),save :: o_ndayrain     = ctrl_out((/ 1, 10, 10, 10, 10 /),'ndayrain')
    96   type(ctrl_out),save :: o_precip       = ctrl_out((/ 1, 1, 1, 1, 1 /),'precip')
    97   type(ctrl_out),save :: o_plul         = ctrl_out((/ 1, 1, 1, 1, 10 /),'plul')
    98 
    99   type(ctrl_out),save :: o_pluc         = ctrl_out((/ 1, 1, 1, 1, 10 /),'pluc')
    100   type(ctrl_out),save :: o_snow         = ctrl_out((/ 1, 1, 10, 1, 10 /),'snow')
    101   type(ctrl_out),save :: o_evap         = ctrl_out((/ 1, 1, 10, 1, 10 /),'evap')
     96  type(ctrl_out),save :: o_precip       = ctrl_out((/ 1, 1, 1, 5, 10 /),'precip')
     97  type(ctrl_out),save :: o_plul         = ctrl_out((/ 1, 1, 1, 10, 10 /),'plul')
     98
     99  type(ctrl_out),save :: o_pluc         = ctrl_out((/ 1, 1, 1, 5, 10 /),'pluc')
     100  type(ctrl_out),save :: o_snow         = ctrl_out((/ 1, 1, 10, 5, 10 /),'snow')
     101  type(ctrl_out),save :: o_evap         = ctrl_out((/ 1, 1, 10, 10, 10 /),'evap')
     102  type(ctrl_out),save,dimension(4) :: o_evap_srf     = (/ ctrl_out((/ 1, 1, 10, 10, 10 /),'evap_ter'), &
     103                                           ctrl_out((/ 1, 1, 10, 10, 10 /),'evap_lic'), &
     104                                           ctrl_out((/ 1, 1, 10, 10, 10 /),'evap_oce'), &
     105                                           ctrl_out((/ 1, 1, 10, 10, 10 /),'evap_sic') /)
     106  type(ctrl_out),save :: o_msnow       = ctrl_out((/ 1, 10, 10, 10, 10 /),'msnow')
     107  type(ctrl_out),save :: o_fsnow       = ctrl_out((/ 1, 10, 10, 10, 10 /),'fsnow')
     108
    102109  type(ctrl_out),save :: o_tops         = ctrl_out((/ 1, 1, 10, 10, 10 /),'tops')
    103110  type(ctrl_out),save :: o_tops0        = ctrl_out((/ 1, 5, 10, 10, 10 /),'tops0')
    104   type(ctrl_out),save :: o_topl         = ctrl_out((/ 1, 1, 10, 1, 10 /),'topl')
     111  type(ctrl_out),save :: o_topl         = ctrl_out((/ 1, 1, 10, 5, 10 /),'topl')
    105112  type(ctrl_out),save :: o_topl0        = ctrl_out((/ 1, 5, 10, 10, 10 /),'topl0')
    106113  type(ctrl_out),save :: o_SWupTOA      = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWupTOA')
     
    108115  type(ctrl_out),save :: o_SWdnTOA      = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWdnTOA')
    109116  type(ctrl_out),save :: o_SWdnTOAclr   = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWdnTOAclr')
     117  type(ctrl_out),save :: o_nettop       = ctrl_out((/ 1, 4, 10, 10, 10 /),'nettop')
     118
    110119  type(ctrl_out),save :: o_SWup200      = ctrl_out((/ 1, 10, 10, 10, 10 /),'SWup200')
    111120  type(ctrl_out),save :: o_SWup200clr   = ctrl_out((/ 10, 1, 10, 10, 10 /),'SWup200clr')
     
    123132  type(ctrl_out),save :: o_LWdn200      = ctrl_out((/ 1, 10, 10, 10, 10 /),'LWdn200')
    124133  type(ctrl_out),save :: o_LWdn200clr   = ctrl_out((/ 1, 10, 10, 10, 10 /),'LWdn200clr')
    125   type(ctrl_out),save :: o_sols         = ctrl_out((/ 1, 1, 10, 1, 10 /),'sols')
     134  type(ctrl_out),save :: o_sols         = ctrl_out((/ 1, 1, 10, 10, 10 /),'sols')
    126135  type(ctrl_out),save :: o_sols0        = ctrl_out((/ 1, 5, 10, 10, 10 /),'sols0')
    127   type(ctrl_out),save :: o_soll         = ctrl_out((/ 1, 1, 10, 1, 10 /),'soll')
     136  type(ctrl_out),save :: o_soll         = ctrl_out((/ 1, 1, 10, 10, 10 /),'soll')
    128137  type(ctrl_out),save :: o_soll0        = ctrl_out((/ 1, 5, 10, 10, 10 /),'soll0')
    129138  type(ctrl_out),save :: o_radsol       = ctrl_out((/ 1, 1, 10, 10, 10 /),'radsol')
    130   type(ctrl_out),save :: o_SWupSFC      = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWupSFC')
     139  type(ctrl_out),save :: o_SWupSFC      = ctrl_out((/ 1, 4, 10, 5, 10 /),'SWupSFC')
    131140  type(ctrl_out),save :: o_SWupSFCclr   = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWupSFCclr')
    132   type(ctrl_out),save :: o_SWdnSFC      = ctrl_out((/ 1, 1, 10, 10, 10 /),'SWdnSFC')
    133   type(ctrl_out),save :: o_SWdnSFCclr   = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWdnSFCclr')
     141  type(ctrl_out),save :: o_SWdnSFC      = ctrl_out((/ 1, 1, 10, 5, 10 /),'SWdnSFC')
     142  type(ctrl_out),save :: o_SWdnSFCclr   = ctrl_out((/ 1, 4, 10, 5, 10 /),'SWdnSFCclr')
    134143  type(ctrl_out),save :: o_LWupSFC      = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWupSFC')
    135   type(ctrl_out),save :: o_LWupSFCclr   = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWupSFCclr')
    136   type(ctrl_out),save :: o_LWdnSFC      = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWdnSFC')
    137   type(ctrl_out),save :: o_LWdnSFCclr   = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWdnSFCclr')
    138   type(ctrl_out),save :: o_bils         = ctrl_out((/ 1, 2, 10, 1, 10 /),'bils')
    139   type(ctrl_out),save :: o_sens         = ctrl_out((/ 1, 1, 10, 1, 1 /),'sens')
    140   type(ctrl_out),save :: o_fder         = ctrl_out((/ 1, 2, 10, 1, 10 /),'fder')
     144  type(ctrl_out),save :: o_LWupSFCclr   = ctrl_out((/ 1, 4, 10, 5, 10 /),'LWupSFCclr')
     145  type(ctrl_out),save :: o_LWdnSFC      = ctrl_out((/ 1, 4, 10, 5, 10 /),'LWdnSFC')
     146  type(ctrl_out),save :: o_LWdnSFCclr   = ctrl_out((/ 1, 4, 10, 5, 10 /),'LWdnSFCclr')
     147  type(ctrl_out),save :: o_bils         = ctrl_out((/ 1, 2, 10, 5, 10 /),'bils')
     148  type(ctrl_out),save :: o_sens         = ctrl_out((/ 1, 1, 10, 5, 10 /),'sens')
     149  type(ctrl_out),save :: o_fder         = ctrl_out((/ 1, 2, 10, 10, 10 /),'fder')
    141150  type(ctrl_out),save :: o_ffonte       = ctrl_out((/ 1, 10, 10, 10, 10 /),'ffonte')
    142151  type(ctrl_out),save :: o_fqcalving    = ctrl_out((/ 1, 10, 10, 10, 10 /),'fqcalving')
    143152  type(ctrl_out),save :: o_fqfonte      = ctrl_out((/ 1, 10, 10, 10, 10 /),'fqfonte')
    144153
    145   type(ctrl_out),save,dimension(4) :: o_taux_srf     = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'taux_ter'), &
    146                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'taux_lic'), &
    147                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'taux_oce'), &
    148                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'taux_sic') /)
    149 
    150   type(ctrl_out),save,dimension(4) :: o_tauy_srf     = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'tauy_ter'), &
    151                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'tauy_lic'), &
    152                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'tauy_oce'), &
    153                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'tauy_sic') /)
    154 
    155 
    156   type(ctrl_out),save,dimension(4) :: o_pourc_srf    = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'pourc_ter'), &
    157                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'pourc_lic'), &
    158                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'pourc_oce'), &
    159                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'pourc_sic') /)     
    160 
    161   type(ctrl_out),save,dimension(4) :: o_fract_srf    = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'fract_ter'), &
    162                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'fract_lic'), &
    163                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'fract_oce'), &
    164                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'fract_sic') /)
    165 
    166   type(ctrl_out),save,dimension(4) :: o_tsol_srf     = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'tsol_ter'), &
    167                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'tsol_lic'), &
    168                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'tsol_oce'), &
    169                                                  ctrl_out((/ 1, 4, 10, 1, 10 /),'tsol_sic') /)
     154  type(ctrl_out),save :: o_taux         = ctrl_out((/ 1, 10, 10, 10, 10 /),'taux')
     155  type(ctrl_out),save :: o_tauy         = ctrl_out((/ 1, 10, 10, 10, 10 /),'tauy')
     156  type(ctrl_out),save,dimension(4) :: o_taux_srf     = (/ ctrl_out((/ 1, 4, 10, 10, 10 /),'taux_ter'), &
     157                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'taux_lic'), &
     158                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'taux_oce'), &
     159                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'taux_sic') /)
     160
     161  type(ctrl_out),save,dimension(4) :: o_tauy_srf     = (/ ctrl_out((/ 1, 4, 10, 10, 10 /),'tauy_ter'), &
     162                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'tauy_lic'), &
     163                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'tauy_oce'), &
     164                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'tauy_sic') /)
     165
     166
     167  type(ctrl_out),save,dimension(4) :: o_pourc_srf    = (/ ctrl_out((/ 1, 4, 10, 10, 10 /),'pourc_ter'), &
     168                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'pourc_lic'), &
     169                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'pourc_oce'), &
     170                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'pourc_sic') /)     
     171
     172  type(ctrl_out),save,dimension(4) :: o_fract_srf    = (/ ctrl_out((/ 1, 4, 10, 10, 10 /),'fract_ter'), &
     173                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'fract_lic'), &
     174                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'fract_oce'), &
     175                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'fract_sic') /)
     176
     177  type(ctrl_out),save,dimension(4) :: o_tsol_srf     = (/ ctrl_out((/ 1, 4, 10, 10, 10 /),'tsol_ter'), &
     178                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'tsol_lic'), &
     179                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'tsol_oce'), &
     180                                                 ctrl_out((/ 1, 4, 10, 10, 10 /),'tsol_sic') /)
    170181
    171182  type(ctrl_out),save,dimension(4) :: o_sens_srf     = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'sens_ter'), &
     
    200211
    201212
    202   type(ctrl_out),save :: o_cdrm         = ctrl_out((/ 1, 10, 10, 1, 10 /),'cdrm')
     213  type(ctrl_out),save :: o_cdrm         = ctrl_out((/ 1, 10, 10, 10, 10 /),'cdrm')
    203214  type(ctrl_out),save :: o_cdrh         = ctrl_out((/ 1, 10, 10, 1, 10 /),'cdrh')
    204215  type(ctrl_out),save :: o_cldl         = ctrl_out((/ 1, 1, 10, 10, 10 /),'cldl')
    205216  type(ctrl_out),save :: o_cldm         = ctrl_out((/ 1, 1, 10, 10, 10 /),'cldm')
    206217  type(ctrl_out),save :: o_cldh         = ctrl_out((/ 1, 1, 10, 10, 10 /),'cldh')
    207   type(ctrl_out),save :: o_cldt         = ctrl_out((/ 1, 1, 2, 10, 10 /),'cldt')
     218  type(ctrl_out),save :: o_cldt         = ctrl_out((/ 1, 1, 2, 5, 10 /),'cldt')
    208219  type(ctrl_out),save :: o_cldq         = ctrl_out((/ 1, 1, 10, 10, 10 /),'cldq')
    209220  type(ctrl_out),save :: o_lwp          = ctrl_out((/ 1, 5, 10, 10, 10 /),'lwp')
     
    215226 
    216227  type(ctrl_out),save :: o_cape         = ctrl_out((/ 1, 10, 10, 10, 10 /),'cape')
    217   type(ctrl_out),save :: o_pbase        = ctrl_out((/ 1, 10, 10, 10, 10 /),'pbase')
    218   type(ctrl_out),save :: o_ptop         = ctrl_out((/ 1, 4, 10, 10, 10 /),'ptop')
     228  type(ctrl_out),save :: o_pbase        = ctrl_out((/ 1, 5, 10, 10, 10 /),'pbase')
     229  type(ctrl_out),save :: o_ptop         = ctrl_out((/ 1, 5, 10, 10, 10 /),'ptop')
    219230  type(ctrl_out),save :: o_fbase        = ctrl_out((/ 1, 10, 10, 10, 10 /),'fbase')
    220231  type(ctrl_out),save :: o_prw          = ctrl_out((/ 1, 1, 10, 10, 10 /),'prw')
    221232
    222   type(ctrl_out),save :: o_s_pblh       = ctrl_out((/ 1, 10, 10, 1, 1 /),'s_pblh')
    223   type(ctrl_out),save :: o_s_pblt       = ctrl_out((/ 1, 10, 10, 1, 1 /),'s_pblt')
    224   type(ctrl_out),save :: o_s_lcl        = ctrl_out((/ 1, 10, 10, 1, 10 /),'s_lcl')
    225   type(ctrl_out),save :: o_s_capCL      = ctrl_out((/ 1, 10, 10, 1, 10 /),'s_capCL')
    226   type(ctrl_out),save :: o_s_oliqCL     = ctrl_out((/ 1, 10, 10, 1, 10 /),'s_oliqCL')
    227   type(ctrl_out),save :: o_s_cteiCL     = ctrl_out((/ 1, 10, 10, 1, 1 /),'s_cteiCL')
    228   type(ctrl_out),save :: o_s_therm      = ctrl_out((/ 1, 10, 10, 1, 1 /),'s_therm')
    229   type(ctrl_out),save :: o_s_trmb1      = ctrl_out((/ 1, 10, 10, 1, 10 /),'s_trmb1')
    230   type(ctrl_out),save :: o_s_trmb2      = ctrl_out((/ 1, 10, 10, 1, 10 /),'s_trmb2')
    231   type(ctrl_out),save :: o_s_trmb3      = ctrl_out((/ 1, 10, 10, 1, 10 /),'s_trmb3')
     233  type(ctrl_out),save :: o_s_pblh       = ctrl_out((/ 1, 10, 10, 10, 1 /),'s_pblh')
     234  type(ctrl_out),save :: o_s_pblt       = ctrl_out((/ 1, 10, 10, 10, 1 /),'s_pblt')
     235  type(ctrl_out),save :: o_s_lcl        = ctrl_out((/ 1, 10, 10, 10, 10 /),'s_lcl')
     236  type(ctrl_out),save :: o_s_capCL      = ctrl_out((/ 1, 10, 10, 10, 10 /),'s_capCL')
     237  type(ctrl_out),save :: o_s_oliqCL     = ctrl_out((/ 1, 10, 10, 10, 10 /),'s_oliqCL')
     238  type(ctrl_out),save :: o_s_cteiCL     = ctrl_out((/ 1, 10, 10, 10, 1 /),'s_cteiCL')
     239  type(ctrl_out),save :: o_s_therm      = ctrl_out((/ 1, 10, 10, 10, 1 /),'s_therm')
     240  type(ctrl_out),save :: o_s_trmb1      = ctrl_out((/ 1, 10, 10, 10, 10 /),'s_trmb1')
     241  type(ctrl_out),save :: o_s_trmb2      = ctrl_out((/ 1, 10, 10, 10, 10 /),'s_trmb2')
     242  type(ctrl_out),save :: o_s_trmb3      = ctrl_out((/ 1, 10, 10, 10, 10 /),'s_trmb3')
    232243
    233244  type(ctrl_out),save :: o_slab_bils    = ctrl_out((/ 1, 1, 10, 10, 10 /),'slab_bils_oce')
    234245
    235   type(ctrl_out),save :: o_ale_bl       = ctrl_out((/ 1, 1, 1, 1, 10 /),'ale_bl')
    236   type(ctrl_out),save :: o_alp_bl       = ctrl_out((/ 1, 1, 1, 1, 10 /),'alp_bl')
    237   type(ctrl_out),save :: o_ale_wk       = ctrl_out((/ 1, 1, 1, 1, 10 /),'ale_wk')
    238   type(ctrl_out),save :: o_alp_wk       = ctrl_out((/ 1, 1, 1, 1, 10 /),'alp_wk')
    239 
    240   type(ctrl_out),save :: o_ale          = ctrl_out((/ 1, 1, 1, 1, 10 /),'ale')
    241   type(ctrl_out),save :: o_alp          = ctrl_out((/ 1, 1, 1, 1, 10 /),'alp')
    242   type(ctrl_out),save :: o_cin          = ctrl_out((/ 1, 1, 1, 1, 10 /),'cin')
    243   type(ctrl_out),save :: o_wape         = ctrl_out((/ 1, 1, 1, 1, 10 /),'wape')
     246  type(ctrl_out),save :: o_ale_bl       = ctrl_out((/ 1, 1, 1, 10, 10 /),'ale_bl')
     247  type(ctrl_out),save :: o_alp_bl       = ctrl_out((/ 1, 1, 1, 10, 10 /),'alp_bl')
     248  type(ctrl_out),save :: o_ale_wk       = ctrl_out((/ 1, 1, 1, 10, 10 /),'ale_wk')
     249  type(ctrl_out),save :: o_alp_wk       = ctrl_out((/ 1, 1, 1, 10, 10 /),'alp_wk')
     250
     251  type(ctrl_out),save :: o_ale          = ctrl_out((/ 1, 1, 1, 10, 10 /),'ale')
     252  type(ctrl_out),save :: o_alp          = ctrl_out((/ 1, 1, 1, 10, 10 /),'alp')
     253  type(ctrl_out),save :: o_cin          = ctrl_out((/ 1, 1, 1, 10, 10 /),'cin')
     254  type(ctrl_out),save :: o_wape         = ctrl_out((/ 1, 1, 1, 10, 10 /),'wape')
    244255
    245256
     
    306317  type(ctrl_out),save :: o_cldtau       = ctrl_out((/ 10, 5, 10, 10, 10 /),'cldtau')                     
    307318  type(ctrl_out),save :: o_cldemi       = ctrl_out((/ 10, 5, 10, 10, 10 /),'cldemi')
    308   type(ctrl_out),save :: o_rh2m         = ctrl_out((/ 10, 5, 10, 10, 10 /),'rh2m')
     319  type(ctrl_out),save :: o_rh2m         = ctrl_out((/ 5, 5, 10, 10, 10 /),'rh2m')
     320  type(ctrl_out),save :: o_rh2m_min     = ctrl_out((/ 10, 5, 10, 10, 10 /),'rh2m_min')
     321  type(ctrl_out),save :: o_rh2m_max     = ctrl_out((/ 10, 5, 10, 10, 10 /),'rh2m_max')
    309322  type(ctrl_out),save :: o_qsat2m       = ctrl_out((/ 10, 5, 10, 10, 10 /),'qsat2m')
    310323  type(ctrl_out),save :: o_tpot         = ctrl_out((/ 10, 5, 10, 10, 10 /),'tpot')
     
    331344  type(ctrl_out),save :: o_snowl        = ctrl_out((/ 10, 1, 10, 10, 10 /),'snowl')
    332345  type(ctrl_out),save :: o_cape_max     = ctrl_out((/ 10, 1, 10, 10, 10 /),'cape_max')
    333   type(ctrl_out),save :: o_solldown     = ctrl_out((/ 10, 1, 10, 1, 10 /),'solldown')
    334 
    335   type(ctrl_out),save :: o_dtsvdfo      = ctrl_out((/ 10, 10, 10, 1, 10 /),'dtsvdfo')
    336   type(ctrl_out),save :: o_dtsvdft      = ctrl_out((/ 10, 10, 10, 1, 10 /),'dtsvdft')
    337   type(ctrl_out),save :: o_dtsvdfg      = ctrl_out((/ 10, 10, 10, 1, 10 /),'dtsvdfg')
    338   type(ctrl_out),save :: o_dtsvdfi      = ctrl_out((/ 10, 10, 10, 1, 10 /),'dtsvdfi')
    339   type(ctrl_out),save :: o_rugs         = ctrl_out((/ 10, 10, 10, 1, 1 /),'rugs')
     346  type(ctrl_out),save :: o_solldown     = ctrl_out((/ 10, 1, 10, 10, 10 /),'solldown')
     347
     348  type(ctrl_out),save :: o_dtsvdfo      = ctrl_out((/ 10, 10, 10, 10, 10 /),'dtsvdfo')
     349  type(ctrl_out),save :: o_dtsvdft      = ctrl_out((/ 10, 10, 10, 10, 10 /),'dtsvdft')
     350  type(ctrl_out),save :: o_dtsvdfg      = ctrl_out((/ 10, 10, 10, 10, 10 /),'dtsvdfg')
     351  type(ctrl_out),save :: o_dtsvdfi      = ctrl_out((/ 10, 10, 10, 10, 10 /),'dtsvdfi')
     352  type(ctrl_out),save :: o_rugs         = ctrl_out((/ 10, 10, 10, 10, 10 /),'rugs')
    340353
    341354  type(ctrl_out),save :: o_topswad      = ctrl_out((/ 2, 10, 10, 10, 10 /),'topswad')
     
    344357  type(ctrl_out),save :: o_solswai      = ctrl_out((/ 2, 10, 10, 10, 10 /),'solswai')
    345358
    346   type(ctrl_out),save,dimension(10) :: o_tausumaero  = (/ ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_ASBCM'), &
    347                                                      ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_ASPOMM'), &
    348                                                      ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_ASSO4M'), &
    349                                                      ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_CSSO4M'), &
    350                                                      ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_SSSSM'), &
    351                                                      ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_ASSSM'), &
    352                                                      ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_CSSSM'), &
    353                                                      ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_CIDUSTM'), &
    354                                                      ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_AIBCM'), &
    355                                                      ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_AIPOMM') /)
    356 
    357   type(ctrl_out),save :: o_swtoaas_nat      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoaas_nat')
    358   type(ctrl_out),save :: o_swsrfas_nat      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfas_nat')
    359   type(ctrl_out),save :: o_swtoacs_nat      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacs_nat')
    360   type(ctrl_out),save :: o_swsrfcs_nat      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcs_nat')
    361 
    362   type(ctrl_out),save :: o_swtoaas_ant      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoaas_ant')
    363   type(ctrl_out),save :: o_swsrfas_ant      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfas_ant')
    364   type(ctrl_out),save :: o_swtoacs_ant      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacs_ant')
    365   type(ctrl_out),save :: o_swsrfcs_ant      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcs_ant')
    366 
    367   type(ctrl_out),save :: o_swtoacf_nat      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacf_nat')
    368   type(ctrl_out),save :: o_swsrfcf_nat      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcf_nat')
    369   type(ctrl_out),save :: o_swtoacf_ant      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacf_ant')
    370   type(ctrl_out),save :: o_swsrfcf_ant      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcf_ant')
    371   type(ctrl_out),save :: o_swtoacf_zero      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacf_zero')
    372   type(ctrl_out),save :: o_swsrfcf_zero      = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcf_zero')
     359  type(ctrl_out),save,dimension(10) :: o_tausumaero  = (/ ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_ASBCM'), &
     360                                                     ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_ASPOMM'), &
     361                                                     ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_ASSO4M'), &
     362                                                     ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_CSSO4M'), &
     363                                                     ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_SSSSM'), &
     364                                                     ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_ASSSM'), &
     365                                                     ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_CSSSM'), &
     366                                                     ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_CIDUSTM'), &
     367                                                     ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_AIBCM'), &
     368                                                     ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_AIPOMM') /)
     369
     370  type(ctrl_out),save :: o_od550aer         = ctrl_out((/ 4, 4, 10, 10, 10 /),'od550aer')
     371  type(ctrl_out),save :: o_od865aer         = ctrl_out((/ 4, 4, 10, 10, 10 /),'od865aer')
     372  type(ctrl_out),save :: o_absvisaer        = ctrl_out((/ 4, 4, 10, 10, 10 /),'absvisaer')
     373  type(ctrl_out),save :: o_od550lt1aer      = ctrl_out((/ 4, 4, 10, 10, 10 /),'od550lt1aer')
     374
     375  type(ctrl_out),save :: o_sconcso4         = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcso4')
     376  type(ctrl_out),save :: o_sconcoa          = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcoa')
     377  type(ctrl_out),save :: o_sconcbc          = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcbc')
     378  type(ctrl_out),save :: o_sconcss          = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcss')
     379  type(ctrl_out),save :: o_sconcdust        = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcdust')
     380  type(ctrl_out),save :: o_concso4          = ctrl_out((/ 4, 4, 10, 10, 10 /),'concso4')
     381  type(ctrl_out),save :: o_concoa           = ctrl_out((/ 4, 4, 10, 10, 10 /),'concoa')
     382  type(ctrl_out),save :: o_concbc           = ctrl_out((/ 4, 4, 10, 10, 10 /),'concbc')
     383  type(ctrl_out),save :: o_concss           = ctrl_out((/ 4, 4, 10, 10, 10 /),'concss')
     384  type(ctrl_out),save :: o_concdust         = ctrl_out((/ 4, 4, 10, 10, 10 /),'concdust')
     385  type(ctrl_out),save :: o_loadso4          = ctrl_out((/ 4, 4, 10, 10, 10 /),'loadso4')
     386  type(ctrl_out),save :: o_loadoa           = ctrl_out((/ 4, 4, 10, 10, 10 /),'loadoa')
     387  type(ctrl_out),save :: o_loadbc           = ctrl_out((/ 4, 4, 10, 10, 10 /),'loadbc')
     388  type(ctrl_out),save :: o_loadss           = ctrl_out((/ 4, 4, 10, 10, 10 /),'loadss')
     389  type(ctrl_out),save :: o_loaddust         = ctrl_out((/ 4, 4, 10, 10, 10 /),'loaddust')
     390
     391  type(ctrl_out),save :: o_swtoaas_nat      = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoaas_nat')
     392  type(ctrl_out),save :: o_swsrfas_nat      = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfas_nat')
     393  type(ctrl_out),save :: o_swtoacs_nat      = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacs_nat')
     394  type(ctrl_out),save :: o_swsrfcs_nat      = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcs_nat')
     395
     396  type(ctrl_out),save :: o_swtoaas_ant      = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoaas_ant')
     397  type(ctrl_out),save :: o_swsrfas_ant      = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfas_ant')
     398  type(ctrl_out),save :: o_swtoacs_ant      = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacs_ant')
     399  type(ctrl_out),save :: o_swsrfcs_ant      = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcs_ant')
     400
     401  type(ctrl_out),save :: o_swtoacf_nat      = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacf_nat')
     402  type(ctrl_out),save :: o_swsrfcf_nat      = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcf_nat')
     403  type(ctrl_out),save :: o_swtoacf_ant      = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacf_ant')
     404  type(ctrl_out),save :: o_swsrfcf_ant      = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcf_ant')
     405  type(ctrl_out),save :: o_swtoacf_zero     = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacf_zero')
     406  type(ctrl_out),save :: o_swsrfcf_zero     = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcf_zero')
     407
     408  type(ctrl_out),save :: o_cldncl          = ctrl_out((/ 4, 4, 10, 10, 10 /),'cldncl')
     409  type(ctrl_out),save :: o_reffclwtop      = ctrl_out((/ 4, 4, 10, 10, 10 /),'reffclwtop')
     410  type(ctrl_out),save :: o_cldnvi          = ctrl_out((/ 4, 4, 10, 10, 10 /),'cldnvi')
     411  type(ctrl_out),save :: o_lcc             = ctrl_out((/ 4, 4, 10, 10, 10 /),'lcc')
    373412
    374413
    375414!!!!!!!!!!!!!!!!!!!!!! 3D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     415  type(ctrl_out),save :: o_ec550aer     = ctrl_out((/ 4,  4, 10, 10, 1 /),'ec550aer')
    376416  type(ctrl_out),save :: o_lwcon        = ctrl_out((/ 2, 5, 10, 10, 1 /),'lwcon')
    377417  type(ctrl_out),save :: o_iwcon        = ctrl_out((/ 2, 5, 10, 10, 10 /),'iwcon')
    378   type(ctrl_out),save :: o_temp         = ctrl_out((/ 2, 3, 4, 1, 1 /),'temp')
    379   type(ctrl_out),save :: o_theta        = ctrl_out((/ 2, 3, 4, 1, 1 /),'theta')
    380   type(ctrl_out),save :: o_ovap         = ctrl_out((/ 2, 3, 4, 1, 1 /),'ovap')
    381   type(ctrl_out),save :: o_ovapinit         = ctrl_out((/ 2, 3, 4, 1, 1 /),'ovapinit')
     418  type(ctrl_out),save :: o_temp         = ctrl_out((/ 2, 3, 4, 10, 1 /),'temp')
     419  type(ctrl_out),save :: o_theta        = ctrl_out((/ 2, 3, 4, 10, 1 /),'theta')
     420  type(ctrl_out),save :: o_ovap         = ctrl_out((/ 2, 3, 4, 10, 1 /),'ovap')
     421  type(ctrl_out),save :: o_ovapinit         = ctrl_out((/ 2, 3, 10, 10, 1 /),'ovapinit')
    382422  type(ctrl_out),save :: o_wvapp        = ctrl_out((/ 2, 10, 10, 10, 10 /),'wvapp')
    383   type(ctrl_out),save :: o_geop         = ctrl_out((/ 2, 3, 10, 1, 1 /),'geop')
    384   type(ctrl_out),save :: o_vitu         = ctrl_out((/ 2, 3, 4, 1, 1 /),'vitu')
    385   type(ctrl_out),save :: o_vitv         = ctrl_out((/ 2, 3, 4, 1, 1 /),'vitv')
    386   type(ctrl_out),save :: o_vitw         = ctrl_out((/ 2, 3, 10, 10, 1 /),'vitw')
    387   type(ctrl_out),save :: o_pres         = ctrl_out((/ 2, 3, 10, 1, 1 /),'pres')
     423  type(ctrl_out),save :: o_geop         = ctrl_out((/ 2, 3, 10, 10, 1 /),'geop')
     424  type(ctrl_out),save :: o_vitu         = ctrl_out((/ 2, 3, 4, 5, 1 /),'vitu')
     425  type(ctrl_out),save :: o_vitv         = ctrl_out((/ 2, 3, 4, 5, 1 /),'vitv')
     426  type(ctrl_out),save :: o_vitw         = ctrl_out((/ 2, 3, 10, 5, 1 /),'vitw')
     427  type(ctrl_out),save :: o_pres         = ctrl_out((/ 2, 3, 10, 10, 1 /),'pres')
     428  type(ctrl_out),save :: o_paprs        = ctrl_out((/ 2, 3, 10, 10, 1 /),'paprs')
    388429  type(ctrl_out),save :: o_rneb         = ctrl_out((/ 2, 5, 10, 10, 1 /),'rneb')
    389430  type(ctrl_out),save :: o_rnebcon      = ctrl_out((/ 2, 5, 10, 10, 1 /),'rnebcon')
    390   type(ctrl_out),save :: o_rhum         = ctrl_out((/ 2, 10, 10, 10, 10 /),'rhum')
     431  type(ctrl_out),save :: o_rhum         = ctrl_out((/ 2, 5, 10, 10, 10 /),'rhum')
    391432  type(ctrl_out),save :: o_ozone        = ctrl_out((/ 2, 10, 10, 10, 10 /),'ozone')
    392433  type(ctrl_out),save :: o_ozone_light        = ctrl_out((/ 2, 10, 10, 10, 10 /),'ozone_daylight')
     
    400441  type(ctrl_out),save :: o_re           =ctrl_out((/ 5, 10, 10, 10, 10 /),'re')
    401442  type(ctrl_out),save :: o_fl           =ctrl_out((/ 5, 10, 10, 10, 10 /),'fl')
     443  type(ctrl_out),save :: o_scdnc        =ctrl_out((/ 4,  4, 10, 10, 1 /),'scdnc')
     444  type(ctrl_out),save :: o_reffclws     =ctrl_out((/ 4,  4, 10, 10, 1 /),'reffclws')
     445  type(ctrl_out),save :: o_reffclwc     =ctrl_out((/ 4,  4, 10, 10, 1 /),'reffclwc')
     446  type(ctrl_out),save :: o_lcc3d        =ctrl_out((/ 4,  4, 10, 10, 1 /),'lcc3d')
     447  type(ctrl_out),save :: o_lcc3dcon     =ctrl_out((/ 4,  4, 10, 10, 1 /),'lcc3dcon')
     448  type(ctrl_out),save :: o_lcc3dstra    =ctrl_out((/ 4,  4, 10, 10, 1 /),'lcc3dstra')
    402449!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    403450
     
    412459                                                     ctrl_out((/ 3, 10, 10, 10, 10 /),'ages_sic') /)
    413460
    414   type(ctrl_out),save,dimension(4) :: o_rugs_srf     = (/ ctrl_out((/ 3, 4, 10, 1, 10 /),'rugs_ter'), &
    415                                                      ctrl_out((/ 3, 4, 10, 1, 10 /),'rugs_lic'), &
    416                                                      ctrl_out((/ 3, 4, 10, 1, 10 /),'rugs_oce'), &
    417                                                      ctrl_out((/ 3, 4, 10, 1, 10 /),'rugs_sic') /)
    418 
    419   type(ctrl_out),save :: o_albs         = ctrl_out((/ 3, 10, 10, 1, 10 /),'albs')
    420   type(ctrl_out),save :: o_albslw       = ctrl_out((/ 3, 10, 10, 1, 10 /),'albslw')
     461  type(ctrl_out),save,dimension(4) :: o_rugs_srf     = (/ ctrl_out((/ 3, 4, 10, 10, 10 /),'rugs_ter'), &
     462                                                     ctrl_out((/ 3, 4, 10, 10, 10 /),'rugs_lic'), &
     463                                                     ctrl_out((/ 3, 4, 10, 10, 10 /),'rugs_oce'), &
     464                                                     ctrl_out((/ 3, 4, 10, 10, 10 /),'rugs_sic') /)
     465
     466  type(ctrl_out),save :: o_albs         = ctrl_out((/ 3, 10, 10, 10, 10 /),'albs')
     467  type(ctrl_out),save :: o_albslw       = ctrl_out((/ 3, 10, 10, 10, 10 /),'albslw')
    421468
    422469  type(ctrl_out),save :: o_clwcon       = ctrl_out((/ 4, 10, 10, 10, 10 /),'clwcon')
     
    424471  type(ctrl_out),save :: o_dnwd         = ctrl_out((/ 4, 10, 10, 10, 10 /),'dnwd')
    425472  type(ctrl_out),save :: o_dnwd0        = ctrl_out((/ 4, 10, 10, 10, 10 /),'dnwd0')
     473  type(ctrl_out),save :: o_mc           = ctrl_out((/ 4, 10, 10, 10, 10 /),'mc')
     474  type(ctrl_out),save :: o_ftime_con    = ctrl_out((/ 4, 10, 10, 10, 10 /),'ftime_con')
    426475  type(ctrl_out),save :: o_dtdyn        = ctrl_out((/ 4, 10, 10, 10, 1 /),'dtdyn')
    427476  type(ctrl_out),save :: o_dqdyn        = ctrl_out((/ 4, 10, 10, 10, 1 /),'dqdyn')
     
    444493  type(ctrl_out),save :: o_dtlschr      = ctrl_out((/ 4, 10, 10, 10, 10 /),'dtlschr')
    445494  type(ctrl_out),save :: o_dqlsc        = ctrl_out((/ 4, 10, 10, 10, 10 /),'dqlsc')
    446   type(ctrl_out),save :: o_dtvdf        = ctrl_out((/ 4, 10, 10, 1, 10 /),'dtvdf')
    447   type(ctrl_out),save :: o_dqvdf        = ctrl_out((/ 4, 10, 10, 1, 10 /),'dqvdf')
     495  type(ctrl_out),save :: o_dtvdf        = ctrl_out((/ 4, 10, 10, 10, 10 /),'dtvdf')
     496  type(ctrl_out),save :: o_dqvdf        = ctrl_out((/ 4, 10, 10, 10, 10 /),'dqvdf')
    448497  type(ctrl_out),save :: o_dteva        = ctrl_out((/ 4, 10, 10, 10, 10 /),'dteva')
    449498  type(ctrl_out),save :: o_dqeva        = ctrl_out((/ 4, 10, 10, 10, 10 /),'dqeva')
     
    455504  type(ctrl_out),save :: o_w_th         = ctrl_out((/ 4, 10, 10, 10, 10 /),'w_th')
    456505  type(ctrl_out),save :: o_lambda_th    = ctrl_out((/ 10, 10, 10, 10, 10 /),'lambda_th')
     506  type(ctrl_out),save :: o_ftime_th     = ctrl_out((/ 10, 10, 10, 10, 10 /),'ftime_th')
    457507  type(ctrl_out),save :: o_q_th         = ctrl_out((/ 4, 10, 10, 10, 10 /),'q_th')
    458508  type(ctrl_out),save :: o_a_th         = ctrl_out((/ 4, 10, 10, 10, 10 /),'a_th')
     
    772822 CALL histdef2d(iff,o_pluc%flag,o_pluc%name, "Convective Precip.", "kg/(s*m2)")
    773823 CALL histdef2d(iff,o_snow%flag,o_snow%name, "Snow fall", "kg/(s*m2)" )
     824 CALL histdef2d(iff,o_msnow%flag,o_msnow%name, "Surface snow amount", "kg/m2" )
     825 CALL histdef2d(iff,o_fsnow%flag,o_fsnow%name, "Surface snow area fraction", "-" )
    774826 CALL histdef2d(iff,o_evap%flag,o_evap%name, "Evaporat", "kg/(s*m2)" )
    775827 CALL histdef2d(iff,o_tops%flag,o_tops%name, "Solar rad. at TOA", "W/m2")
     
    781833 CALL histdef2d(iff,o_SWdnTOA%flag,o_SWdnTOA%name, "SWdn at TOA", "W/m2" )
    782834 CALL histdef2d(iff,o_SWdnTOAclr%flag,o_SWdnTOAclr%name, "SWdn clear sky at TOA", "W/m2")
     835 CALL histdef2d(iff,o_nettop%flag,o_nettop%name, "Net dn radiatif flux at TOA", "W/m2")
    783836 CALL histdef2d(iff,o_SWup200%flag,o_SWup200%name, "SWup at 200mb", "W/m2" )
    784837 CALL histdef2d(iff,o_SWup200clr%flag,o_SWup200clr%name, "SWup clear sky at 200mb", "W/m2")
     
    809862 CALL histdef2d(iff,o_fqfonte%flag,o_fqfonte%name, "Land ice melt", "kg/m2/s")
    810863
     864 CALL histdef2d(iff,o_taux%flag,o_taux%name, "Zonal wind stress","Pa")
     865 CALL histdef2d(iff,o_tauy%flag,o_tauy%name, "Meridional wind stress","Pa")
     866
    811867     DO nsrf = 1, nbsrf
    812868 CALL histdef2d(iff,o_pourc_srf(nsrf)%flag,o_pourc_srf(nsrf)%name,"% "//clnsurf(nsrf),"%")
     
    816872 CALL histdef2d(iff,o_tsol_srf(nsrf)%flag,o_tsol_srf(nsrf)%name,"Temperature "//clnsurf(nsrf),"K")
    817873 CALL histdef2d(iff,o_u10m_srf(nsrf)%flag,o_u10m_srf(nsrf)%name,"Vent Zonal 10m "//clnsurf(nsrf),"m/s")
     874 CALL histdef2d(iff,o_evap_srf(nsrf)%flag,o_evap_srf(nsrf)%name,"evaporation at surface "//clnsurf(nsrf),"kg/(s*m2)")
    818875 CALL histdef2d(iff,o_v10m_srf(nsrf)%flag,o_v10m_srf(nsrf)%name,"Vent meredien 10m "//clnsurf(nsrf),"m/s")
    819876 CALL histdef2d(iff,o_t2m_srf(nsrf)%flag,o_t2m_srf(nsrf)%name,"Temp 2m "//clnsurf(nsrf),"K")
     
    840897
    841898IF (new_aod .AND. (.NOT. aerosol_couple)) THEN
     899
     900  CALL histdef2d(iff,o_od550aer%flag,o_od550aer%name, "Total aerosol optical depth at 550nm", "-")
     901  CALL histdef2d(iff,o_od865aer%flag,o_od865aer%name, "Total aerosol optical depth at 870nm", "-")
     902  CALL histdef2d(iff,o_absvisaer%flag,o_absvisaer%name, "Absorption aerosol visible optical depth", "-")
     903  CALL histdef2d(iff,o_od550lt1aer%flag,o_od550lt1aer%name, "Fine mode optical depth", "-")
     904
     905
     906  CALL histdef2d(iff,o_sconcso4%flag,o_sconcso4%name,"Surface Concentration of Sulfate ","kg/m3")
     907  CALL histdef2d(iff,o_sconcoa%flag,o_sconcoa%name,"Surface Concentration of Organic Aerosol ","kg/m3")
     908  CALL histdef2d(iff,o_sconcbc%flag,o_sconcbc%name,"Surface Concentration of Black Carbon ","kg/m3")
     909  CALL histdef2d(iff,o_sconcss%flag,o_sconcss%name,"Surface Concentration of Sea Salt ","kg/m3")
     910  CALL histdef2d(iff,o_sconcdust%flag,o_sconcdust%name,"Surface Concentration of Dust ","kg/m3")
     911  CALL histdef3d(iff,o_concso4%flag,o_concso4%name,"Concentration of Sulfate ","kg/m3")
     912  CALL histdef3d(iff,o_concoa%flag,o_concoa%name,"Concentration of Organic Aerosol ","kg/m3")
     913  CALL histdef3d(iff,o_concbc%flag,o_concbc%name,"Concentration of Black Carbon ","kg/m3")
     914  CALL histdef3d(iff,o_concss%flag,o_concss%name,"Concentration of Sea Salt ","kg/m3")
     915  CALL histdef3d(iff,o_concdust%flag,o_concdust%name,"Concentration of Dust ","kg/m3")
     916  CALL histdef2d(iff,o_loadso4%flag,o_loadso4%name,"Column Load of Sulfate ","kg/m2")
     917  CALL histdef2d(iff,o_loadoa%flag,o_loadoa%name,"Column Load of Organic Aerosol ","kg/m2")
     918  CALL histdef2d(iff,o_loadbc%flag,o_loadbc%name,"Column Load of Black Carbon ","kg/m2")
     919  CALL histdef2d(iff,o_loadss%flag,o_loadss%name,"Column Load of Sea Salt ","kg/m2")
     920  CALL histdef2d(iff,o_loaddust%flag,o_loaddust%name,"Column Load of Dust ","kg/m2")
     921
    842922  DO naero = 1, naero_spc
    843923  CALL histdef2d(iff,o_tausumaero(naero)%flag,o_tausumaero(naero)%name,"Aerosol Optical depth at 550 nm "//name_aero(naero),"1")
     
    873953  CALL histdef2d(iff,o_topswai%flag,o_topswai%name, "AIE at TOA", "W/m2")
    874954  CALL histdef2d(iff,o_solswai%flag,o_solswai%name, "AIE at SFR", "W/m2")
     955!Cloud droplet number concentration
     956  CALL histdef3d(iff,o_scdnc%flag,o_scdnc%name, "Cloud droplet number concentration","m-3")
     957  CALL histdef2d(iff,o_cldncl%flag,o_cldncl%name, "CDNC at top of liquid water cloud", "m-3")
     958  CALL histdef3d(iff,o_reffclws%flag,o_reffclws%name, "Stratiform Cloud Droplet Effective Radius","m")
     959  CALL histdef3d(iff,o_reffclwc%flag,o_reffclwc%name, "Convective Cloud Droplet Effective Radius","m")
     960  CALL histdef2d(iff,o_cldnvi%flag,o_cldnvi%name, "Column Integrated Cloud Droplet Number", "m-2")
     961  CALL histdef3d(iff,o_lcc3d%flag,o_lcc3d%name, "Cloud liquid fraction","1")
     962  CALL histdef3d(iff,o_lcc3dcon%flag,o_lcc3dcon%name, "Convective cloud liquid fraction","1")
     963  CALL histdef3d(iff,o_lcc3dstra%flag,o_lcc3dstra%name, "Stratiform cloud liquid fraction","1")
     964  CALL histdef2d(iff,o_lcc%flag,o_lcc%name, "Cloud liquid fraction at top of cloud","1")
     965  CALL histdef2d(iff,o_reffclwtop%flag,o_reffclwtop%name, "Droplet effective radius at top of liquid water cloud", "m")
    875966 ENDIF
    876967
     
    9091000 CALL histdef3d(iff,o_dnwd%flag,o_dnwd%name, "saturated downdraft", "kg/m2/s")
    9101001 CALL histdef3d(iff,o_dnwd0%flag,o_dnwd0%name, "unsat. downdraft", "kg/m2/s")
     1002 CALL histdef3d(iff,o_mc%flag,o_mc%name, "Convective mass flux", "kg/m2/s")
     1003   type_ecri(1) = 'inst(X)'
     1004   type_ecri(2) = 'inst(X)'
     1005   type_ecri(3) = 'inst(X)'
     1006   type_ecri(4) = 'inst(X)'
     1007   type_ecri(5) = 'inst(X)'
     1008 CALL histdef2d(iff,o_ftime_con%flag,o_ftime_con%name, "Fraction of time convection Occurs", " ")
     1009   type_ecri(:) = type_ecri_files(:)
    9111010     ENDIF !iflag_con .GE. 3
    9121011
     
    9651064 CALL histdef2d(iff,o_dthmin%flag,o_dthmin%name, "dTheta mini", "K/m")
    9661065 CALL histdef2d(iff,o_rh2m%flag,o_rh2m%name, "Relative humidity at 2m", "%" )
     1066   type_ecri(1) = 't_min(X)'
     1067   type_ecri(2) = 't_min(X)'
     1068   type_ecri(3) = 't_min(X)'
     1069   type_ecri(4) = 't_min(X)'
     1070   type_ecri(5) = 't_min(X)'
     1071 CALL histdef2d(iff,o_rh2m_min%flag,o_rh2m_min%name, "Min Relative humidity at 2m", "%" )
     1072   type_ecri(1) = 't_max(X)'
     1073   type_ecri(2) = 't_max(X)'
     1074   type_ecri(3) = 't_max(X)'
     1075   type_ecri(4) = 't_max(X)'
     1076   type_ecri(5) = 't_max(X)'
     1077 CALL histdef2d(iff,o_rh2m_max%flag,o_rh2m_max%name, "Max Relative humidity at 2m", "%" )
     1078   type_ecri(:) = type_ecri_files(:)
    9671079 CALL histdef2d(iff,o_qsat2m%flag,o_qsat2m%name, "Saturant humidity at 2m", "%")
    9681080 CALL histdef2d(iff,o_tpot%flag,o_tpot%name, "Surface air potential temperature", "K")
     
    9811093
    9821094! Champs 3D:
     1095 CALL histdef3d(iff,o_ec550aer%flag,o_ec550aer%name, "Extinction at 550nm", "m^-1")
    9831096 CALL histdef3d(iff,o_lwcon%flag,o_lwcon%name, "Cloud liquid water content", "kg/kg")
    9841097 CALL histdef3d(iff,o_iwcon%flag,o_iwcon%name, "Cloud ice water content", "kg/kg")
     
    9921105 CALL histdef3d(iff,o_vitw%flag,o_vitw%name, "Vertical wind", "Pa/s" )
    9931106 CALL histdef3d(iff,o_pres%flag,o_pres%name, "Air pressure", "Pa" )
     1107 CALL histdef3d(iff,o_paprs%flag,o_paprs%name, "Air pressure Inter-Couches", "Pa" )
    9941108 CALL histdef3d(iff,o_rneb%flag,o_rneb%name, "Cloud fraction", "-")
    9951109 CALL histdef3d(iff,o_rnebcon%flag,o_rnebcon%name, "Convective Cloud Fraction", "-")
     
    10781192 CALL histdef3d(iff,o_w_th%flag,o_w_th%name,"Thermal plume vertical velocity","m/s")
    10791193 CALL histdef3d(iff,o_lambda_th%flag,o_lambda_th%name,"Thermal plume vertical velocity","m/s")
     1194 CALL histdef2d(iff,o_ftime_th%flag,o_ftime_th%name,"Fraction of time Shallow convection occurs"," ")
    10801195 CALL histdef3d(iff,o_q_th%flag,o_q_th%name, "Thermal plume total humidity", "kg/kg")
    10811196 CALL histdef3d(iff,o_a_th%flag,o_a_th%name, "Thermal plume fraction", "")
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/phys_output_write.h

    r1346 r1347  
    146146       ENDIF
    147147
     148       IF (o_msnow%flag(iff)<=lev_files(iff)) THEN
     149      CALL histwrite_phy(nid_files(iff),o_msnow%name,itau_w,snow_o)
     150       ENDIF
     151
     152       IF (o_fsnow%flag(iff)<=lev_files(iff)) THEN
     153      CALL histwrite_phy(nid_files(iff),o_fsnow%name,itau_w,zfra_o)
     154       ENDIF
     155
    148156       IF (o_evap%flag(iff)<=lev_files(iff)) THEN
    149157      CALL histwrite_phy(nid_files(iff),o_evap%name,itau_w,evap)
     
    190198       ENDIF
    191199
     200       IF (o_nettop%flag(iff)<=lev_files(iff)) THEN
     201      zx_tmp_fi2d(:) = topsw(:)-toplw(:)
     202      CALL histwrite_phy(nid_files(iff),
     203     $                  o_nettop%name,itau_w,zx_tmp_fi2d)
     204       ENDIF
     205
    192206       IF (o_SWup200%flag(iff)<=lev_files(iff)) THEN
    193207      CALL histwrite_phy(nid_files(iff),o_SWup200%name,itau_w,SWup200)
     
    319333       CALL histwrite_phy(nid_files(iff),
    320334     $                   o_fqfonte%name,itau_w,zxfqfonte)
     335       ENDIF
     336
     337       IF (o_taux%flag(iff)<=lev_files(iff)) THEN
     338         zx_tmp_fi2d=0.
     339         do nsrf=1,nbsrf
     340          zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
     341         enddo
     342         CALL histwrite_phy(nid_files(iff),
     343     $                   o_taux%name,itau_w,zx_tmp_fi2d)
     344       ENDIF
     345
     346       IF (o_tauy%flag(iff)<=lev_files(iff)) THEN
     347         zx_tmp_fi2d=0.
     348         do nsrf=1,nbsrf
     349          zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
     350         enddo
     351         CALL histwrite_phy(nid_files(iff),
     352     $                   o_tauy%name,itau_w,zx_tmp_fi2d)
    321353       ENDIF
    322354
     
    377409      ENDIF
    378410
     411      IF (o_evap_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
     412      zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
     413      CALL histwrite_phy(nid_files(iff),o_evap_srf(nsrf)%name,
     414     $           itau_w,zx_tmp_fi2d)
     415      ENDIF
     416
    379417       IF (o_sens_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
    380418       zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
     
    532570       ENDIF
    533571
     572       IF (o_ftime_con%flag(iff)<=lev_files(iff)) THEN
     573        zx_tmp_fi2d=float(itau_con)/float(itap)
     574      CALL histwrite_phy(nid_files(iff),o_ftime_con%name,
     575     s                   itau_w,zx_tmp_fi2d)
     576       ENDIF
     577
     578       IF (o_mc%flag(iff)<=lev_files(iff)) THEN
     579        if(iflag_thermals.gt.1)then
     580         zx_tmp_fi3d=dnwd+dnwd0+upwd+fm_therm
     581        else
     582         zx_tmp_fi3d=dnwd+dnwd0+upwd
     583        endif
     584      CALL histwrite_phy(nid_files(iff),o_mc%name,itau_w,zx_tmp_fi3d)
     585       ENDIF
     586     
    534587      ENDIF !iflag_con .GE. 3
    535588
     
    780833      ENDIF
    781834
     835      IF (o_rh2m_min%flag(iff)<=lev_files(iff)) THEN
     836      DO i=1, klon
     837       zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
     838      ENDDO
     839      CALL histwrite_phy(nid_files(iff),o_rh2m_min%name,
     840     s               itau_w,zx_tmp_fi2d)
     841      ENDIF
     842
     843      IF (o_rh2m_max%flag(iff)<=lev_files(iff)) THEN
     844      DO i=1, klon
     845       zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
     846      ENDDO
     847      CALL histwrite_phy(nid_files(iff),o_rh2m_max%name,
     848     s              itau_w,zx_tmp_fi2d)
     849      ENDIF
     850
     851
    782852      IF (o_qsat2m%flag(iff)<=lev_files(iff)) THEN
    783853      CALL histwrite_phy(nid_files(iff),o_qsat2m%name,itau_w,qsat2m)
     
    11271197        IF (o_pres%flag(iff)<=lev_files(iff)) THEN
    11281198      CALL histwrite_phy(nid_files(iff),o_pres%name,itau_w,pplay)
     1199        ENDIF
     1200
     1201        IF (o_paprs%flag(iff)<=lev_files(iff)) THEN
     1202      CALL histwrite_phy(nid_files(iff),o_paprs%name,
     1203     s                    itau_w,paprs(:,1:klev))
    11291204        ENDIF
    11301205
     
    13071382
    13081383       IF (iflag_thermals.gt.1) THEN
     1384        IF (o_ftime_th%flag(iff)<=lev_files(iff)) THEN
     1385! Pour l instant 0 a y reflichir pour les thermiques
     1386         zx_tmp_fi2d=0.
     1387        CALL histwrite_phy(nid_files(iff),o_ftime_th%name,
     1388     s                     itau_w,zx_tmp_fi2d)
     1389        ENDIF
     1390
    13091391        IF (o_f_th%flag(iff)<=lev_files(iff)) THEN
    13101392        CALL histwrite_phy(nid_files(iff),o_f_th%name,itau_w,fm_therm)
     
    13361418       ENDIF
    13371419
    1338        ENDIF !iflag_thermals
     1420      ENDIF !iflag_thermals
    13391421
    13401422       IF (o_f0_th%flag(iff)<=lev_files(iff)) THEN
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/physiq.F

    r1341 r1347  
    2929      USE phys_local_var_mod ! Variables internes non sauvegardees de la physique
    3030      USE phys_state_var_mod ! Variables sauvegardees de la physique
     31      USE phys_output_var_mod ! Variables pour les ecritures des sorties
    3132      USE fonte_neige_mod, ONLY  : fonte_neige_get_vars
    3233      USE phys_output_mod
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/readaerosol_interp.F90

    r1299 r1347  
    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/branches/LMDZ4V5.0-dev/libf/phylmd/readaerosol_optic.F90

    r1279 r1347  
    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.