Changeset 2932 for trunk


Ignore:
Timestamp:
Apr 3, 2023, 6:17:05 PM (20 months ago)
Author:
romain.vande
Message:

Mars PCM:
Add a new routine to write output called write_output.
It needs to be imported (for example : use write_output_mod, only: write_output)
Then, it requires only 4 arguments : the name of the variable, its title, its units and the variable itself.
It detects the dimension of the variable and decide to output either in diagfi or diagsoil.
It is also compatible with XIOS (xml file needs to be adapted)
Writediagfi and writediagsoil routines are still available in case.
RV

Location:
trunk/LMDZ.MARS
Files:
1 added
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/README

    r2931 r2932  
    39823982==03/04/2023 == RV
    39833983Remove the test ngrid==1 for writediagfi. The routine can handle well the 1D case.
     3984
     3985==03/04/2023 == RV
     3986Add a new routine to write output called write_output.
     3987It needs to be imported (for example : use write_output_mod, only: write_output)
     3988Then, it requires only 4 arguments : the name of the variable, its title, its units and the variable itself.
     3989It detects the dimension of the variable and decide to output either in diagfi or diagsoil.
     3990It is also compatible with XIOS (xml file needs to be adapted)
     3991Writediagfi and writediagsoil routines are still available in case.
  • trunk/LMDZ.MARS/libf/phymars/aeroptproperties.F

    r2584 r2932  
    88     &                QIRsQREF, omegaIR, gIR, QREFvis, QREFir,
    99     &                omegaREFvis, omegaREFir
     10      use write_output_mod, only: write_output
    1011      IMPLICIT NONE
    1112c     =============================================================
     
    216217
    217218      INTEGER, PARAMETER :: out_iaer = 2
    218       INTEGER :: out_ndim
    219219      REAL :: out_qext(ngrid,nlayer)
    220220      REAL :: out_omeg(ngrid,nlayer)
     
    12911291      IF (out_qwg) THEN
    12921292c     -------------------------------------------------------------
    1293         IF (ngrid.NE.1) THEN
    1294           out_ndim = 3
    1295         ELSE
    1296           out_ndim = 1
    1297         ENDIF
    1298 c     -------------------------------------------------------------
    12991293        DO out_nchannel = 1, 2
    13001294c     -------------------------------------------------------------
     
    13111305#ifndef MESOSCALE
    13121306          write(out_str(1:1),'(i1.1)') out_nchannel
    1313           call WRITEDIAGFI(ngrid,'qextvis'//out_str,"Ext.efficiency","",
    1314      &                     out_ndim,out_qext)
    1315           call WRITEDIAGFI(ngrid,'omegvis'//out_str,"Sing.Scat.Alb.","",
    1316      &                     out_ndim,out_omeg)
    1317           call WRITEDIAGFI(ngrid,'gvis'//out_str,"Asym.Factor","",
    1318      &                     out_ndim,out_g)
     1307          call write_output('qextvis'//out_str,"Ext.efficiency",""
     1308     &                     ,out_qext(:,:))
     1309          call write_output('omegvis'//out_str,"Sing.Scat.Alb.","",
     1310     &                     out_omeg(:,:))
     1311          call write_output('gvis'//out_str,"Asym.Factor","",
     1312     &                     out_g(:,:))
    13191313#endif
    13201314c     -------------------------------------------------------------
     
    13341328#ifndef MESOSCALE
    13351329          write(out_str(1:1),'(i1.1)') out_nchannel
    1336        call WRITEDIAGFI(ngrid,'qextir'//out_str,"Ext.efficiency","",
    1337      &                     out_ndim,out_qext)
    1338        call WRITEDIAGFI(ngrid,'omegir'//out_str,"Sing.Scat.Alb.","",
    1339      &                     out_ndim,out_omeg)
    1340        call WRITEDIAGFI(ngrid,'gir'//out_str,"Asym.Factor","",
    1341      &                     out_ndim,out_g)
     1330       call write_output('qextir'//out_str,"Ext.efficiency","",
     1331     &                     out_qext(:,:))
     1332       call write_output('omegir'//out_str,"Sing.Scat.Alb.","",
     1333     &                     out_omeg(:,:))
     1334       call write_output('gir'//out_str,"Asym.Factor","",
     1335     &                     out_g(:,:))
    13421336#endif
    13431337c     -------------------------------------------------------------
    13441338        ENDDO ! out_nchannel
    13451339#ifndef MESOSCALE
    1346         call WRITEDIAGFI(ngrid,"omegvisref","Sing.Scat.Alb.","",
    1347      &                   out_ndim,omegaREFvis3d(1,1,out_iaer))
    1348         call WRITEDIAGFI(ngrid,"omegirref","Sing.Scat.Alb.","",
    1349      &                   out_ndim,omegaREFir3d(1,1,out_iaer))
     1340        call write_output("omegvisref","Sing.Scat.Alb.","",
     1341     &                   omegaREFvis3d(:,:,out_iaer))
     1342        call write_output("omegirref","Sing.Scat.Alb.","",
     1343     &                   omegaREFir3d(:,:,out_iaer))
    13501344#endif
    13511345      ENDIF ! out_qwg
  • trunk/LMDZ.MARS/libf/phymars/co2cloud.F90

    r2826 r2932  
    108108
    109109  use improvedCO2clouds_mod, only: improvedCO2clouds
    110 
     110  use write_output_mod, only: write_output
    111111#ifndef MESOSCALE
    112112  use vertical_layers_mod, only: ap, bp
     
    494494
    495495      ! Write outputs in diagfi.nc
    496       call WRITEDIAGFI(ngrid, "SatIndex", "SatIndex", " ", 3, SatIndex)
    497 
    498       call WRITEDIAGFI(ngrid, "SatIndexmap", "SatIndexmap", "km", 2, SatIndexmap)
     496      call write_output( "SatIndex", "SatIndex", " ", SatIndex(:,:))
     497
     498      call write_output( "SatIndexmap", "SatIndexmap", "km", SatIndexmap(:))
    499499    !------------------------------------------------------------------------------------------------------------------!
    500500    ! if saturation index co2 is false, set saturation index to 0.05
     
    11841184! 11. Write outputs in diagfi.nc
    11851185!----------------------------------------------------------------------------------------------------------------------!
    1186   call WRITEDIAGFI(ngrid, "satuco2", "vap in satu", " ", 3, satuco2)
    1187 
    1188   call WRITEDIAGFI(ngrid, "precip_co2_ice_rate", "surface deposition rate of co2 ice", "kg.m-2.s-1", 2, pdqs_sedco2(:))
    1189 
    1190   call WRITEDIAGFI(ngrid, "co2ice_cond_rate", "CO2 condensation rate in atm layers", "kg.kg-1.s-1", 3, pcondicea)
    1191 
    1192   call WRITEDIAGFI(ngrid, "pdtcloudco2", "temperature variation of CO2 latent heat", "K.s-1", 3, pdtcloudco2)
    1193 
    1194   call writediagfi(ngrid, "riceco2", "ice radius", "m", 3, riceco2)
    1195 
    1196   call WRITEDIAGFI(ngrid, "Tau3D1mic", " co2 ice opacities", " ", 3, Qext1bins2)
    1197 
    1198   call WRITEDIAGFI(ngrid, "tau1mic", "co2 ice opacity 1 micron", " ", 2, tau1mic)
     1186  call write_output( "satuco2", "vap in satu", " ", satuco2(:,:))
     1187
     1188  call write_output( "precip_co2_ice_rate", "surface deposition rate of co2 ice", "kg.m-2.s-1", pdqs_sedco2(:))
     1189
     1190  call write_output( "co2ice_cond_rate", "CO2 condensation rate in atm layers", "kg.kg-1.s-1", pcondicea(:,:))
     1191
     1192  call write_output( "pdtcloudco2", "temperature variation of CO2 latent heat", "K.s-1", pdtcloudco2(:,:))
     1193
     1194  call write_output( "riceco2", "ice radius", "m", riceco2(:,:))
     1195
     1196  call write_output( "Tau3D1mic", " co2 ice opacities", " ", Qext1bins2(:,:))
     1197
     1198  call write_output( "tau1mic", "co2 ice opacity 1 micron", " ", tau1mic(:))
    11991199
    12001200  if (CLFvaryingCO2) then
    1201     call WRITEDIAGFI(ngrid, "co2cloudfrac", "co2 cloud fraction", " ", 3, co2cloudfrac)
     1201    call write_output( "co2cloudfrac", "co2 cloud fraction", " ", co2cloudfrac(:,:))
    12021202  end if
    12031203!======================================================================================================================!
  • trunk/LMDZ.MARS/libf/phymars/co2condens_mod.F

    r2903 r2932  
    3030       use comcstfi_h, only: cpp, g, r, pi
    3131       use dust_param_mod, only: freedust
    32 
     32       use write_output_mod, only: write_output
    3333#ifndef MESOSCALE
    3434       USE vertical_layers_mod, ONLY: ap, bp
     
    332332     &                       rdust,zcondicea,zfallice,zdq_scav,pdqsc)
    333333      endif
    334              call WRITEdiagfi(ngrid,"zfallice",
     334             call write_output("zfallice",
    335335     &         "",
    336      &         " ",2,zfallice(ngrid,1))
     336     &         " ",zfallice(:,1))
    337337      ELSE ! if co2 clouds
    338338        condens_layer(:,:) = 0.
     
    349349          piceco2(ig) = piceco2(ig) + zdqssed_co2(ig)*ptimestep
    350350        ENDDO
    351        call WRITEdiagfi(ngrid,"zfallice",
     351       call write_output("zfallice",
    352352     &         "",
    353      &         " ",2,zdqssed_co2) ! otherwise we have not 1 day(1proc) = 1 day (24procs) test
     353     &         " ",zdqssed_co2(:)) ! otherwise we have not 1 day(1proc) = 1 day (24procs) test
    354354      ENDIF ! end of if co2clouds
    355355
    356       call WRITEdiagfi(ngrid,"pdtc_atm",
     356      call write_output("pdtc_atm",
    357357     &         "temperature tendency due to CO2 condensation",
    358      &         " ",3,pdtc)
     358     &         " ",pdtc(:,:))
    359359     
    360        call WRITEdiagfi(ngrid,"condens_layer",
     360       call write_output("condens_layer",
    361361     &         "",
    362      &         " ",3,condens_layer)
     362     &         " ",condens_layer(:,:))
    363363
    364364c     *************************
     
    716716c        END DO
    717717c     END DO
    718 c     call WRITEDIAGFI(ngrid,'tconda1',
     718c     call write_output('tconda1',
    719719c    &'Taux de condensation CO2 atmospherique /Pa',
    720 c    & 'kg.m-2.Pa-1.s-1',3,tconda1)
    721 c     call WRITEDIAGFI(ngrid,'tconda2',
     720c    & 'kg.m-2.Pa-1.s-1',tconda1)
     721c     call write_output('tconda2',
    722722c    &'Taux de condensation CO2 atmospherique /m',
    723 c    & 'kg.m-3.s-1',3,tconda2)
     723c    & 'kg.m-3.s-1',tconda2)
    724724
    725725! output falling co2 ice in 1st layer:
    726 !      call WRITEDIAGFI(ngrid,'fallice',
     726!      call write_output('fallice',
    727727!     &'Precipitation of co2 ice',
    728 !     & 'kg.m-2.s-1',2,zfallice(1,1))
     728!     & 'kg.m-2.s-1',zfallice(1,1))
    729729
    730730#ifndef MESOSCALE
  • trunk/LMDZ.MARS/libf/phymars/compute_dtau_mod.F90

    r2643 r2932  
    2525        USE dust_param_mod, only: odpref, t_scenario_sol
    2626        USE read_dust_scenario_mod, only: read_dust_scenario
     27        use write_output_mod, only: write_output
    2728       
    2829        IMPLICIT NONE
     
    8081        endif
    8182       ! for diagnostics
    82         call WRITEDIAGFI(ngrid,"tau_pref_target", &
     83        call write_output("tau_pref_target", &
    8384                          "target visible dust opacity column at 610Pa", &
    84                           "",2,tau_pref_target)
     85                          "",tau_pref_target(:))
    8586
    8687        ! 2. Compute dtau() and dustliftday()
     
    102103
    103104       ! for diagnostics
    104         call WRITEDIAGFI(ngrid,"dtau","opacity difference wrt scenario",&
    105                           "",2,dtau)
    106         call WRITEDIAGFI(ngrid,"dustliftday","dust injection rate",     &
    107                           "s-1",2,dustliftday)
     105        call write_output("dtau","opacity difference wrt scenario",&
     106                          "",dtau(:))
     107        call write_output("dustliftday","dust injection rate",     &
     108                          "s-1",dustliftday(:))
    108109         
    109110        ! 4. Save local time
  • trunk/LMDZ.MARS/libf/phymars/dustdevil.F

    r2608 r2932  
    233233c      end do
    234234
    235 c       call WRITEDIAGFI(ngrid,'dqs_dev','dqs devil',
    236 c    &               'kg.m-2.s-1',2,pdqs_dev)
    237 c       call WRITEDIAGFI(ngrid,'wind','wind',
    238 c    &               'm.s-1',2,magwind)
    239 c       call WRITEDIAGFI(ngrid,'ztop','top pbl',
    240 c    &               'km',2,ztop)
    241 c       call WRITEDIAGFI(ngrid,'tsurf','tsurf',
    242 c    &               'K',2,ptsurf)
    243 c       call WRITEDIAGFI(ngrid,'T1','T(1)',
    244 c    &               'K',2,t1)
    245 c       call WRITEDIAGFI(ngrid,'b','b',
    246 c    &               ' ',2,b_diag)
     235c       call write_output('dqs_dev','dqs devil',
     236c    &               'kg.m-2.s-1',pdqs_dev)
     237c       call write_output('wind','wind',
     238c    &               'm.s-1',magwind)
     239c       call write_output('ztop','top pbl',
     240c    &               'km',ztop)
     241c       call write_output('tsurf','tsurf',
     242c    &               'K',ptsurf)
     243c       call write_output('T1','T(1)',
     244c    &               'K',t1)
     245c       call write_output('b','b',
     246c    &               ' ',b_diag)
    247247c     END If
    248248c *********************************************************     
  • trunk/LMDZ.MARS/libf/phymars/dyn1d/testphys1d.F

    r2926 r2932  
    4141     &                  nf90_strerror
    4242      use iostart, only: open_startphy,get_var, close_startphy
     43      use write_output_mod, only: write_output
    4344      IMPLICIT NONE
    4445
     
    852853          ENDIF  !((iq.eq.igcm_h2o_vap).and.(atm_wat_profile.eq.2)) THEN
    853854        ENDDO
    854         CALL WRITEDIAGFI(ngrid,'qsat',
     855        CALL write_output('qsat',
    855856     &                         'qsat',
    856      &                         'kg/kg',1,zqsat)
     857     &                         'kg/kg',zqsat(:))
    857858
    858859
  • trunk/LMDZ.MARS/libf/phymars/hdo_surfex_mod.F

    r2593 r2932  
    1616      use geometry_mod, only: longitude_deg,latitude_deg
    1717      use comcstfi_h, only: pi
     18      use write_output_mod, only: write_output
    1819
    1920      implicit none
     
    155156        ENDDO ! of DO ig=1,ngrid
    156157
    157 c           CALL WRITEDIAGFI(ngrid,'extrasublim',
     158c           CALL write_output('extrasublim',
    158159c    &                       'extrasublimation',
    159 c    &                       ' ',2,tmpratio)
    160 c           CALL WRITEDIAGFI(ngrid,'alpha_c_s',
     160c    &                       ' ',tmpratio)
     161c           CALL write_output('alpha_c_s',
    161162c    &                       'alpha_c_s',
    162 c    &                       ' ',2,alpha_c)
     163c    &                       ' ',alpha_c)
    163164
    164165       return
  • trunk/LMDZ.MARS/libf/phymars/improvedclouds_mod.F

    r2801 r2932  
    1919      use conc_mod, only: mmean
    2020      use comcstfi_h, only: pi, cpp
     21      use write_output_mod, only: write_output
    2122      implicit none
    2223     
     
    540541#ifndef MESOSCALE
    541542!      IF (ngrid.ne.1) THEN ! 3D
    542 !         call WRITEDIAGFI(ngrid,"satu","ratio saturation","",3,
     543!         call write_output("satu","ratio saturation","",
    543544!     &                    satu_out)
    544 !         call WRITEDIAGFI(ngrid,"dM","ccn variation","kg/kg",3,
     545!         call write_output("dM","ccn variation","kg/kg",
    545546!     &                    dM_out)
    546 !         call WRITEDIAGFI(ngrid,"dN","ccn variation","#",3,
     547!         call write_output("dN","ccn variation","#",
    547548!     &                    dN_out)
    548 !         call WRITEDIAGFI(ngrid,"error","dichotomy max error","%",2,
     549!         call write_output("error","dichotomy max error","%",
    549550!     &                    error2d)
    550 !         call WRITEDIAGFI(ngrid,"zqsat","zqsat","kg",3,
     551!         call write_output("zqsat","zqsat","kg",
    551552!     &                    zqsat)
    552553!      ENDIF
    553554
    554555!      IF (ngrid.eq.1) THEN ! 1D
    555 !         call WRITEDIAGFI(ngrid,"error","incertitude sur glace","%",1,
     556!         call write_output("error","incertitude sur glace","%",
    556557!     &                    error_out)
    557          call WRITEdiagfi(ngrid,"resist","resistance","s/m2",1,
    558      &                    res_out)
    559          call WRITEdiagfi(ngrid,"satu_bf","satu before","kg/kg",1,
    560      &                    satubf)
    561          call WRITEdiagfi(ngrid,"satu_af","satu after","kg/kg",1,
    562      &                    satuaf)
    563          call WRITEdiagfi(ngrid,"vapbf","h2ovap before","kg/kg",1,
    564      &                    zq0(1,1,igcm_h2o_vap))
    565          call WRITEdiagfi(ngrid,"vapaf","h2ovap after","kg/kg",1,
    566      &                    zq(1,1,igcm_h2o_vap))
    567          call WRITEdiagfi(ngrid,"icebf","h2oice before","kg/kg",1,
    568      &                    zq0(1,1,igcm_h2o_ice))
    569          call WRITEdiagfi(ngrid,"iceaf","h2oice after","kg/kg",1,
    570      &                    zq(1,1,igcm_h2o_ice))
    571          call WRITEdiagfi(ngrid,"ccnbf","ccn before","/kg",1,
    572      &                    zq0(1,1,igcm_ccn_number))
    573          call WRITEdiagfi(ngrid,"ccnaf","ccn after","/kg",1,
    574      &                    zq(1,1,igcm_ccn_number))
    575 c         call WRITEDIAGFI(ngrid,"growthrate","growth rate","m^2/s",1,
     558         call write_output("resist","resistance","s/m2",
     559     &                    res_out(:,:))
     560         call write_output("satu_bf","satu before","kg/kg",
     561     &                    satubf(:,:))
     562         call write_output("satu_af","satu after","kg/kg",
     563     &                    satuaf(:,:))
     564         call write_output("vapbf","h2ovap before","kg/kg",
     565     &                    zq0(:,:,igcm_h2o_vap))
     566         call write_output("vapaf","h2ovap after","kg/kg",
     567     &                    zq(:,:,igcm_h2o_vap))
     568         call write_output("icebf","h2oice before","kg/kg",
     569     &                    zq0(:,:,igcm_h2o_ice))
     570         call write_output("iceaf","h2oice after","kg/kg",
     571     &                    zq(:,:,igcm_h2o_ice))
     572         call write_output("ccnbf","ccn before","/kg",
     573     &                    zq0(:,:,igcm_ccn_number))
     574         call write_output("ccnaf","ccn after","/kg",
     575     &                    zq(:,:,igcm_ccn_number))
     576c         call write_output("growthrate","growth rate","m^2/s",
    576577c     &                    gr_out)
    577 c         call WRITEDIAGFI(ngrid,"nuclearate","nucleation rate","",1,
     578c         call write_output("nuclearate","nucleation rate","",
    578579c     &                    rate_out)
    579 c         call WRITEDIAGFI(ngrid,"dM","ccn variation","kg",1,
     580c         call write_output("dM","ccn variation","kg",
    580581c     &                    dM_out)
    581 c         call WRITEDIAGFI(ngrid,"dN","ccn variation","#",1,
     582c         call write_output("dN","ccn variation","#",
    582583c     &                    dN_out)
    583          call WRITEdiagfi(ngrid,"zqsat","p vap sat","kg/kg",1,
    584      &                    zqsat)
    585 !         call WRITEDIAGFI(ngrid,"satu","ratio saturation","",1,
    586 !     &                    satu_out)
    587          call WRITEdiagfi(ngrid,"rice","ice radius","m",1,
    588      &                    rice)
    589 !         call WRITEDIAGFI(ngrid,"rdust_sca","rdust","m",1,
     584         call write_output("zqsat","p vap sat","kg/kg",
     585     &                    zqsat(:,:))
     586!         call write_output("satu","ratio saturation","",
     587!     &                    satu_out(:,:))
     588         call write_output("rice","ice radius","m",
     589     &                    rice(:,:))
     590!         call write_output("rdust_sca","rdust","m",
    590591!     &                    rdust)
    591 !         call WRITEDIAGFI(ngrid,"rsedcloud","rsedcloud","m",1,
     592!         call write_output("rsedcloud","rsedcloud","m",
    592593!     &                    rsedcloud)
    593 !         call WRITEDIAGFI(ngrid,"rhocloud","rhocloud","kg.m-3",1,
     594!         call write_output("rhocloud","rhocloud","kg.m-3",
    594595!     &                    rhocloud)
    595596!      ENDIF
  • trunk/LMDZ.MARS/libf/phymars/nonoro_gwd_ran_mod.F90

    r2682 r2932  
    4747      use vertical_layers_mod, only : presnivs
    4848      use geometry_mod, only: cell_area
     49      use write_output_mod, only: write_output
    4950#ifdef CPP_XIOS
    5051     use xios_output_mod, only: send_xios_field
     
    222223    PH(:, 1) = 2. * PP(:, 1) - PH(:, 2)
    223224
    224     call writediagfi(ngrid,'nonoro_pp','nonoro_pp', 'm',3,PP(:,1:nlayer))
    225     call writediagfi(ngrid,'nonoro_ph','nonoro_ph', 'm',3,PH(:,1:nlayer))
     225    call write_output('nonoro_pp','nonoro_pp', 'm',PP(:,:))
     226    call write_output('nonoro_ph','nonoro_ph', 'm',PH(:,:))
    226227
    227228    ! Launching level for reproductible case
     
    250251        ZH(:, 1) = H0 * LOG(PR / (PH(:, 1) + PSEC))
    251252
    252     call writediagfi(ngrid,'nonoro_zh','nonoro_zh', 'm',3,ZH(:,2:nlayer+1))
     253    call write_output('nonoro_zh','nonoro_zh', 'm',ZH(:,2:nlayer+1))
    253254
    254255    ! Winds and Brunt Vaisala frequency
     
    275276       MAX_K(II)=MAX(kmin,kstar)
    276277    ENDDO
    277     call writediagfi(ngrid,'nonoro_bv','nonoro_bv', 'm',3,BV(:,2:nlayer+1))
     278    call write_output('nonoro_bv','nonoro_bv', 'm',BV(:,2:nlayer+1))
    278279
    279280!-----------------------------------------------------------------------------------------------------------------------
     
    444445    ! (upward) that should be compensated by circulation
    445446    ! and induce additional friction at the surface
    446     call writediagfi(ngrid,'nonoro_u_epflux_tot','nonoro_u_epflux_tot', '',3,u_epflux_tot(:,2:nlayer+1))
    447     call writediagfi(ngrid,'nonoro_v_epflux_tot','nonoro_v_epflux_tot', '',3,v_epflux_tot(:,2:nlayer+1))
     447    call write_output('nonoro_u_epflux_tot','nonoro_u_epflux_tot', '',u_epflux_tot(:,2:nlayer+1))
     448    call write_output('nonoro_v_epflux_tot','nonoro_v_epflux_tot', '',v_epflux_tot(:,2:nlayer+1))
    448449
    449450    ! 5.2 AR-1 RECURSIVE FORMULA (13) IN VERSION 4
     
    457458    ENDDO
    458459    d_t(:,:) = 0.
    459     call writediagfi(ngrid,'nonoro_d_u','nonoro_d_u', '',3,d_u)
    460     call writediagfi(ngrid,'nonoro_d_v','nonoro_d_v', '',3,d_v)
     460    call write_output('nonoro_d_u','nonoro_d_u', '',d_u(:,:))
     461    call write_output('nonoro_d_v','nonoro_d_v', '',d_v(:,:))
    461462
    462463    ! 5.3 Update tendency of wind with the previous (and saved) values
     
    469470    dv_nonoro_gwd(:,:) = d_v(:,:)
    470471
    471     call writediagfi(ngrid,'du_nonoro_gwd','du_nonoro_gwd', '',3,du_nonoro_gwd)
    472     call writediagfi(ngrid,'dv_nonoro_gwd','dv_nonoro_gwd', '',3,dv_nonoro_gwd)
     472    call write_output('du_nonoro_gwd','du_nonoro_gwd', '',du_nonoro_gwd(:,:))
     473    call write_output('dv_nonoro_gwd','dv_nonoro_gwd', '',dv_nonoro_gwd(:,:))
    473474   
    474475    ! Cosmetic: evaluation of the cumulated stress
  • trunk/LMDZ.MARS/libf/phymars/pbl_parameters.F

    r2586 r2932  
    33     & T_out,u_out,ustar,tstar,L_mo,vhf,vvv)
    44      USE comcstfi_h
     5      use write_output_mod, only: write_output
    56      IMPLICIT NONE
    67!=======================================================================
     
    361362
    362363#ifndef MESOSCALE
    363             call WRITEDIAGFI(ngrid,'rib_pbl',
    364      &   'Richardson in pbl parameter','m/s',2,rib)
    365             call WRITEDIAGFI(ngrid,'cdn_pbl',
    366      &   'neutral momentum coef','m/s',2,cdn)
    367             call WRITEDIAGFI(ngrid,'fm_pbl',
    368      &   'momentum stab function','m/s',2,fm)
    369             call WRITEDIAGFI(ngrid,'uv',
    370      &   'wind norm first layer','m/s',2,sqrt(zu2))
    371             call WRITEDIAGFI(ngrid,'uvtrue',
    372      &   'wind norm first layer','m/s',2,sqrt(pu(:,1)**2+pv(:,1)**2))
    373             call WRITEDIAGFI(ngrid,'chn_pbl',
    374      &   'neutral momentum coef','m/s',2,chn)
    375             call WRITEDIAGFI(ngrid,'fh_pbl',
    376      &   'momentum stab function','m/s',2,fh)
    377             call WRITEDIAGFI(ngrid,'B_pbl',
    378      &   'buoyancy','m/',2,(ph(:,1)-pts(:))/pts(:))
    379             call WRITEDIAGFI(ngrid,'zot_pbl',
    380      &   'buoyancy','ms',2,pz0tcomp)
    381        call WRITEDIAGFI(ngrid,'zz1','buoyancy','m',2,zzlay(:,1))
     364            call write_output('rib_pbl',
     365     &   'Richardson in pbl parameter','m/s',rib(:))
     366            call write_output('cdn_pbl',
     367     &   'neutral momentum coef','m/s',cdn(:))
     368            call write_output('fm_pbl',
     369     &   'momentum stab function','m/s',fm(:))
     370            call write_output('uv',
     371     &   'wind norm first layer','m/s',sqrt(zu2(:)))
     372            call write_output('uvtrue',
     373     &   'wind norm first layer','m/s',sqrt(pu(:,1)**2+pv(:,1)**2))
     374            call write_output('chn_pbl',
     375     &   'neutral momentum coef','m/s',chn(:))
     376            call write_output('fh_pbl',
     377     &   'momentum stab function','m/s',fh(:))
     378            call write_output('B_pbl',
     379     &   'buoyancy','m/',(ph(:,1)-pts(:))/pts(:))
     380            call write_output('zot_pbl',
     381     &   'buoyancy','ms',pz0tcomp(:))
     382       call write_output('zz1','buoyancy','m',zzlay(:,1))
    382383#endif
    383384
  • trunk/LMDZ.MARS/libf/phymars/physiq_mod.F

    r2931 r2932  
    9090      use phyetat0_mod, only: phyetat0, tab_cntrl_mod
    9191      use wstats_mod, only: callstats, wstats, mkstats
    92       use writediagsoil_mod, only: writediagsoil
    9392      use eofdump_mod, only: eofdump
    9493      USE vertical_layers_mod, ONLY: ap,bp,aps,bps,presnivs,pseudoalt
     
    110109     &                        ini_comslope_h
    111110      USE ioipsl_getincom, only: getin
     111      use write_output_mod, only: write_output
    112112      IMPLICIT NONE
    113113c=======================================================================
     
    13031303           enddo
    13041304         enddo
    1305          call writediagfi(ngrid,'qdustrds0','qdust before rds',
    1306      &           'kg/kg ',3,qdustrds0)
    1307          call writediagfi(ngrid,'qstormrds0','qstorm before rds',
    1308      &           'kg/kg ',3,qstormrds0)
     1305         call write_output('qdustrds0','qdust before rds',
     1306     &           'kg/kg ',qdustrds0(:,:))
     1307         call write_output('qstormrds0','qstorm before rds',
     1308     &           'kg/kg ',qstormrds0(:,:))
    13091309
    13101310         CALL rocketduststorm(ngrid,nlayer,nq,ptime,ptimestep,
     
    13551355
    13561356c        for diagnostics
    1357          call writediagfi(ngrid,'qdustrds1','qdust after rds',
    1358      &           'kg/kg ',3,qdustrds1)
    1359          call writediagfi(ngrid,'qstormrds1','qstorm after rds',
    1360      &           'kg/kg ',3,qstormrds1)
     1357         call write_output('qdustrds1','qdust after rds',
     1358     &           'kg/kg ',qdustrds1(:,:))
     1359         call write_output('qstormrds1','qstorm after rds',
     1360     &           'kg/kg ',qstormrds1(:,:))
    13611361         
    1362          call writediagfi(ngrid,'qdusttotal0','q sum before rds',
    1363      &           'kg/m2 ',2,qdusttotal0)
    1364          call writediagfi(ngrid,'qdusttotal1','q sum after rds',
    1365      &           'kg/m2 ',2,qdusttotal1)
     1362         call write_output('qdusttotal0','q sum before rds',
     1363     &           'kg/m2 ',qdusttotal0(:))
     1364         call write_output('qdusttotal1','q sum after rds',
     1365     &           'kg/m2 ',qdusttotal1(:))
    13661366
    13671367      ENDIF ! end of if(rdstorm)
     
    25142514            DO n=1,n_out
    25152515               write(zstring, '(F8.6)') z_out(n)
    2516                call WRITEDIAGFI(ngrid,'T_out_'//trim(zstring),
    2517      &   'potential temperature at z_out','K',2,T_out(:,n))
    2518                call WRITEDIAGFI(ngrid,'u_out_'//trim(zstring),
    2519      &   'horizontal velocity norm at z_out','m/s',2,u_out(:,n))
     2516               call write_output('T_out_'//trim(zstring),
     2517     &   'potential temperature at z_out','K',T_out(:,n))
     2518               call write_output('u_out_'//trim(zstring),
     2519     &   'horizontal velocity norm at z_out','m/s',u_out(:,n))
    25202520            ENDDO
    2521             call WRITEDIAGFI(ngrid,'u_star',
    2522      &   'friction velocity','m/s',2,ustar)
    2523             call WRITEDIAGFI(ngrid,'teta_star',
    2524      &   'friction potential temperature','K',2,tstar)
    2525             call WRITEDIAGFI(ngrid,'vvv',
    2526      &   'Vertical velocity variance at zout','m',2,vvv)
    2527             call WRITEDIAGFI(ngrid,'vhf',
    2528      &   'Vertical heat flux at zout','m',2,vhf)
     2521            call write_output('u_star',
     2522     &   'friction velocity','m/s',ustar)
     2523            call write_output('teta_star',
     2524     &   'friction potential temperature','K',tstar)
     2525            call write_output('vvv',
     2526     &   'Vertical velocity variance at zout','m',vvv)
     2527            call write_output('vhf',
     2528     &   'Vertical heat flux at zout','m',vhf)
    25292529#else
    25302530         T_out1(:)=T_out(:,1)
     
    30053005     $             .or. (noms(iq).eq."o2")
    30063006     $             .or. (noms(iq).eq."h2o_vap") ) then
    3007                       call writediagfi(ngrid,"vmr_"//trim(noms(iq)),
    3008      $                         "Volume mixing ratio","mol/mol",3,vmr)
     3007                      call write_output("vmr_"//trim(noms(iq)),
     3008     $                         "Volume mixing ratio","mol/mol",vmr(:,:))
    30093009                    end if
    30103010
     
    30173017                   call wstats(ngrid,"num_"//trim(noms(iq)),
    30183018     $                   "Number density","cm-3",3,rhopart)
    3019                    call writediagfi(ngrid,"num_"//trim(noms(iq)),
    3020      $                  "Number density","cm-3",3,rhopart)
     3019                   call write_output("num_"//trim(noms(iq)),
     3020     $                  "Number density","cm-3",rhopart(:,:))
    30213021
    30223022!                   vertical column (molecule.cm-2)
     
    30353035                    call wstats(ngrid,"c_"//trim(noms(iq)),           
    30363036     $                          "column","mol cm-2",2,colden(1,iq)) 
    3037                     call writediagfi(ngrid,"c_"//trim(noms(iq)),
    3038      $                          "column","mol cm-2",2,colden(1,iq))
     3037                    call write_output("c_"//trim(noms(iq)),
     3038     $                          "column","mol cm-2",colden(:,iq))
    30393039
    30403040!                   global mass (g)
     
    30433043     $                            *mmol(iq)*1.e4*cell_area(:),mass(iq))
    30443044
    3045                     call writediagfi(ngrid,"mass_"//trim(noms(iq)),
    3046      $                              "global mass","g",0,mass(iq))
     3045                    call write_output("mass_"//trim(noms(iq)),
     3046     $                              "global mass","g",mass(iq))
    30473047
    30483048                 end if ! of if (noms(iq) .ne. "dust_mass" ...)
     
    31333133c        WRITEDIAGFI can ALSO be called from any other subroutines
    31343134c        for any variables !!
    3135          call WRITEDIAGFI(ngrid,"emis","Surface emissivity","w.m-1",2,
     3135         call write_output("emis","Surface emissivity","w.m-1",
    31363136     &                  emis(:,iflat))
    31373137         do islope=1,nslope
    31383138           write(str2(1:2),'(i2.2)') islope
    3139            call WRITEDIAGFI(ngrid,"emis_slope"//str2,
    3140      &    "Surface emissivity","w.m-1",2, emis(:,islope))
     3139           call write_output("emis_slope"//str2,
     3140     &    "Surface emissivity","w.m-1",emis(:,islope))
    31413141         ENDDO
    3142          call WRITEDIAGFI(ngrid,"zzlev","Interlayer altitude",
    3143      &                    "m",3,zzlev(:,1:nlayer))
    3144          call writediagfi(ngrid,"pphi","Geopotential","m2s-2",3,
    3145      &                    pphi)
    3146          call writediagfi(ngrid,"phisfi","Surface geopotential",
    3147      &                    "m2s-2",2,phisfi)
    3148          call WRITEDIAGFI(ngrid,"tsurf","Surface temperature","K",2,
     3142         call write_output("zzlev","Interlayer altitude",
     3143     &                    "m",zzlev(:,1:nlayer))
     3144         call write_output("pphi","Geopotential","m2s-2",
     3145     &                    pphi(:,:))
     3146         call write_output("phisfi","Surface geopotential",
     3147     &                    "m2s-2",phisfi(:))
     3148         call write_output("tsurf","Surface temperature","K",
    31493149     &                  tsurf(:,iflat))
    31503150         do islope=1,nslope
    31513151          write(str2(1:2),'(i2.2)') islope
    3152          call WRITEDIAGFI(ngrid,"tsurf_slope"//str2,
    3153      &            "Surface temperature","K",2,
     3152         call write_output("tsurf_slope"//str2,
     3153     &            "Surface temperature","K",
    31543154     &                  tsurf(:,islope))
    31553155         ENDDO
    3156          call WRITEDIAGFI(ngrid,"ps","surface pressure","Pa",2,ps)
    3157          call WRITEDIAGFI(ngrid,"co2ice","co2 ice thickness"
    3158      &                              ,"kg.m-2",2,qsurf(:,igcm_co2,iflat))
     3156         call write_output("ps","surface pressure","Pa",ps(:))
     3157         call write_output("co2ice","co2 ice thickness"
     3158     &                              ,"kg.m-2",qsurf(:,igcm_co2,iflat))
    31593159         do islope=1,nslope
    31603160          write(str2(1:2),'(i2.2)') islope
    3161          call WRITEDIAGFI(ngrid,"co2ice_slope"//str2,"co2 ice thickness"
    3162      &              ,"kg.m-2",2,qsurf(:,igcm_co2,islope))
     3161         call write_output("co2ice_slope"//str2,"co2 ice thickness"
     3162     &              ,"kg.m-2",qsurf(:,igcm_co2,islope))
    31633163         ENDDO
    3164          call WRITEDIAGFI(ngrid,"watercap","Water ice thickness"
    3165      &         ,"kg.m-2",2,watercap(:,iflat))
     3164         call write_output("watercap","Water ice thickness"
     3165     &         ,"kg.m-2",watercap(:,iflat))
    31663166         do islope=1,nslope
    31673167          write(str2(1:2),'(i2.2)') islope
    3168          call WRITEDIAGFI(ngrid,"watercap_slope"//str2,
     3168         call write_output("watercap_slope"//str2,
    31693169     &         "Water ice thickness"
    3170      &         ,"kg.m-2",2,watercap(:,islope))
     3170     &         ,"kg.m-2",watercap(:,islope))
    31713171         ENDDO
    3172          call WRITEDIAGFI(ngrid,"temp_layer1","temperature in layer 1",
    3173      &                  "K",2,zt(1,1))
    3174          call WRITEDIAGFI(ngrid,"temp7","temperature in layer 7",
    3175      &                  "K",2,zt(1,7))
    3176          call WRITEDIAGFI(ngrid,"fluxsurf_lw","fluxsurf_lw","W.m-2",2,
     3172         call write_output("temp_layer1","temperature in layer 1",
     3173     &                  "K",zt(:,1))
     3174         call write_output("temp7","temperature in layer 7",
     3175     &                  "K",zt(:,7))
     3176         call write_output("fluxsurf_lw","fluxsurf_lw","W.m-2",
    31773177     &                  fluxsurf_lw(:,iflat))
    31783178         do islope=1,nslope
    31793179          write(str2(1:2),'(i2.2)') islope
    3180          call WRITEDIAGFI(ngrid,"fluxsurf_lw_slope"//str2,
    3181      &              "fluxsurf_lw","W.m-2",2,
     3180         call write_output("fluxsurf_lw_slope"//str2,
     3181     &              "fluxsurf_lw","W.m-2",
    31823182     &                  fluxsurf_lw(:,islope))
    31833183         ENDDO
    3184          call WRITEDIAGFI(ngrid,"fluxsurf_dn_sw","fluxsurf_dn_sw",
    3185      &                  "W.m-2",2,fluxsurf_dn_sw_tot(:,iflat))
     3184         call write_output("fluxsurf_dn_sw","fluxsurf_dn_sw",
     3185     &                  "W.m-2",fluxsurf_dn_sw_tot(:,iflat))
    31863186         do islope=1,nslope
    31873187          write(str2(1:2),'(i2.2)') islope
    3188          call WRITEDIAGFI(ngrid,"fluxsurf_dn_sw_slope"//str2,
     3188         call write_output("fluxsurf_dn_sw_slope"//str2,
    31893189     &                  "fluxsurf_dn_sw",
    3190      &                  "W.m-2",2,fluxsurf_dn_sw_tot(:,islope))
     3190     &                  "W.m-2",fluxsurf_dn_sw_tot(:,islope))
    31913191         ENDDO
    3192          call WRITEDIAGFI(ngrid,"fluxtop_lw","fluxtop_lw","W.m-2",2,
    3193      &                  fluxtop_lw)
    3194          call WRITEDIAGFI(ngrid,"fluxtop_up_sw","fluxtop_up_sw","W.m-2",
    3195      &                  2,fluxtop_up_sw_tot)
    3196          call WRITEDIAGFI(ngrid,"temp","temperature","K",3,zt)
    3197          call WRITEDIAGFI(ngrid,"Sols","Time","sols",0,[zday])
    3198          call WRITEDIAGFI(ngrid,"Ls","Solar longitude","deg",
    3199      &                    0,[zls*180./pi])
    3200          call WRITEDIAGFI(ngrid,"u","Zonal wind","m.s-1",3,zu)
    3201          call WRITEDIAGFI(ngrid,"v","Meridional wind","m.s-1",3,zv)
    3202          call WRITEDIAGFI(ngrid,"w","Vertical wind","m.s-1",3,pw)
    3203          call WRITEDIAGFI(ngrid,"rho","density","kg.m-3",3,rho)
    3204          call WRITEDIAGFI(ngrid,"pressure","Pressure","Pa",3,zplay)
    3205          call WRITEDIAGFI(ngrid,"pplev","Pressure","Pa",3,zplev)
    3206         call WRITEDIAGFI(ngrid,'sw_htrt','sw heat. rate',
    3207      &                   'K/s',3,zdtsw)
    3208         call WRITEDIAGFI(ngrid,'lw_htrt','lw heat. rate',
    3209      &                   'K/s',3,zdtlw)
    3210         call writediagfi(ngrid,"local_time","Local time",
    3211      &                   'sol',2,local_time)
     3192         call write_output("fluxtop_lw","fluxtop_lw","W.m-2",
     3193     &                  fluxtop_lw(:))
     3194         call write_output("fluxtop_up_sw","fluxtop_up_sw","W.m-2",
     3195     &                  fluxtop_up_sw_tot(:))
     3196         call write_output("temp","temperature","K",zt(:,:))
     3197         call write_output("Sols","Time","sols",zday)
     3198         call write_output("Ls","Solar longitude","deg",
     3199     &                    zls*180./pi)
     3200         call write_output("u","Zonal wind","m.s-1",zu(:,:))
     3201         call write_output("v","Meridional wind","m.s-1",zv(:,:))
     3202         call write_output("w","Vertical wind","m.s-1",pw(:,:))
     3203         call write_output("rho","density","kg.m-3",rho(:,:))
     3204         call write_output("pressure","Pressure","Pa",zplay(:,:))
     3205         call write_output("pplev","Pressure","Pa",zplev(:,:))
     3206        call write_output('sw_htrt','sw heat. rate',
     3207     &                   'K/s',zdtsw(:,:))
     3208        call write_output('lw_htrt','lw heat. rate',
     3209     &                   'K/s',zdtlw(:,:))
     3210        call write_output("local_time","Local time",
     3211     &                   'sol',local_time(:))
    32123212            if (.not.activice) then
    3213                CALL WRITEDIAGFI(ngrid,'tauTESap',
     3213               CALL write_output('tauTESap',
    32143214     &                         'tau abs 825 cm-1',
    3215      &                         '',2,tauTES)
     3215     &                         '',tauTES(:))
    32163216             else
    3217                CALL WRITEDIAGFI(ngrid,'tauTES',
     3217               CALL write_output('tauTES',
    32183218     &                         'tau abs 825 cm-1',
    3219      &                         '',2,taucloudtes)
     3219     &                         '',taucloudtes(:))
    32203220             endif
    32213221#else
    32223222      !!! this is to ensure correct initialisation of mesoscale model
    3223       call WRITEDIAGFI(ngrid,"tsurf","Surface temperature","K",2,
     3223      call write_output("tsurf","Surface temperature","K",
    32243224     &                 tsurf(:,iflat))
    3225       call WRITEDIAGFI(ngrid,"ps","surface pressure","Pa",2,ps)
    3226       call WRITEDIAGFI(ngrid,"co2ice","co2 ice thickness","kg.m-2",2,
     3225      call write_output("ps","surface pressure","Pa",ps(:))
     3226      call write_output("co2ice","co2 ice thickness","kg.m-2",
    32273227     &                 qsurf(:,igcm_co2,iflat))
    3228       call WRITEDIAGFI(ngrid,"temp","temperature","K",3,zt)
    3229       call WRITEDIAGFI(ngrid,"u","Zonal wind","m.s-1",3,zu)
    3230       call WRITEDIAGFI(ngrid,"v","Meridional wind","m.s-1",3,zv)
    3231       call WRITEDIAGFI(ngrid,"emis","Surface emissivity","w.m-1",2,
    3232      &                 emis)
    3233       call WRITEDIAGFI(ngrid,"tsoil","Soil temperature",
    3234      &                 "K",3,tsoil(:,:,iflat))
    3235       call WRITEDIAGFI(ngrid,"inertiedat","Soil inertia",
    3236      &                 "K",3,inertiedat)
     3228      call write_output("temp","temperature","K",zt(:,:))
     3229      call write_output("u","Zonal wind","m.s-1",zu(:,:))
     3230      call write_output("v","Meridional wind","m.s-1",zv(:,:))
     3231      call write_output("emis","Surface emissivity","w.m-1",
     3232     &                 emis(:,iflat))
     3233      call write_output("tsoil","Soil temperature",
     3234     &                 "K",tsoil(:,:,iflat))
     3235      call write_output("inertiedat","Soil inertia",
     3236     &                 "K",inertiedat(:,:))
    32373237#endif
    32383238
     
    32423242
    32433243      if (igcm_co2.ne.0) then
    3244         call WRITEDIAGFI(ngrid,"co2","co2 mass mixing ratio",
    3245      &                   "kg.kg-1",3,zq(:,:,igcm_co2))
     3244        call write_output("co2","co2 mass mixing ratio",
     3245     &                   "kg.kg-1",zq(:,:,igcm_co2))
    32463246
    32473247        if (co2clouds) then
    3248           call WRITEDIAGFI(ngrid,'ccnqco2','CCNco2 mmr',
    3249      &                     'kg.kg-1',3,zq(:,:,igcm_ccnco2_mass))
    3250 
    3251           call WRITEDIAGFI(ngrid,'ccnNco2','CCNco2 number',
    3252      &                     'part.kg-1',3,zq(:,:,igcm_ccnco2_number))
    3253 
    3254           call WRITEDIAGFI(ngrid,'co2_ice','co2_ice mmr in atm',
    3255      &                     'kg.kg-1', 3, zq(:,:,igcm_co2_ice))
    3256 
    3257          call WRITEDIAGFI(ngrid,"mtotco2","total mass atm of co2",
    3258      &                    "kg.m-2",2, mtotco2)
    3259          call WRITEDIAGFI(ngrid,"icetotco2","total mass atm of co2 ice",
    3260      &                    "kg.m-2", 2, icetotco2)
    3261          call WRITEDIAGFI(ngrid,"vaptotco2","total mass atm of co2 "//
    3262      &                    "vapor","kg.m-2", 2, vaptotco2)
    3263          call WRITEDIAGFI(ngrid,"emis","Surface emissivity","w.m-1",2,
    3264      &                  emis)
     3248          call write_output('ccnqco2','CCNco2 mmr',
     3249     &                     'kg.kg-1',zq(:,:,igcm_ccnco2_mass))
     3250
     3251          call write_output('ccnNco2','CCNco2 number',
     3252     &                     'part.kg-1',zq(:,:,igcm_ccnco2_number))
     3253
     3254          call write_output('co2_ice','co2_ice mmr in atm',
     3255     &                     'kg.kg-1',zq(:,:,igcm_co2_ice))
     3256
     3257         call write_output("mtotco2","total mass atm of co2",
     3258     &                    "kg.m-2",mtotco2(:))
     3259         call write_output("icetotco2","total mass atm of co2 ice",
     3260     &                    "kg.m-2", icetotco2(:))
     3261         call write_output("vaptotco2","total mass atm of co2 "//
     3262     &                    "vapor","kg.m-2", vaptotco2(:))
    32653263         if (co2useh2o) then
    3266            call WRITEDIAGFI(ngrid,'ccnqco2_h2o_m_ice',
     3264           call write_output('ccnqco2_h2o_m_ice',
    32673265     &                      'CCNco2_h2o_mass_ice mmr',
    3268      &                    'kg.kg-1',3,zq(:,:,igcm_ccnco2_h2o_mass_ice))
    3269 
    3270            call WRITEDIAGFI(ngrid,'ccnqco2_h2o_m_ccn',
     3266     &                    'kg.kg-1',zq(:,:,igcm_ccnco2_h2o_mass_ice))
     3267
     3268           call write_output('ccnqco2_h2o_m_ccn',
    32713269     &                      'CCNco2_h2o_mass_ccn mmr',
    3272      &                   'kg.kg-1',3,zq(:,:,igcm_ccnco2_h2o_mass_ccn))
    3273 
    3274            call WRITEDIAGFI(ngrid,'ccnNco2_h2o','CCNco2_h2o number',
    3275      &                   'part.kg-1',3,zq(:,:,igcm_ccnco2_h2o_number))
     3270     &                   'kg.kg-1',zq(:,:,igcm_ccnco2_h2o_mass_ccn))
     3271
     3272           call write_output('ccnNco2_h2o','CCNco2_h2o number',
     3273     &                   'part.kg-1',zq(:,:,igcm_ccnco2_h2o_number))
    32763274         end if
    32773275
    32783276           if (meteo_flux) then
    3279           call WRITEDIAGFI(ngrid,'ccnqco2_meteor','CCNco2_meteor mmr',
    3280      &                  'kg.kg-1',3,zq(:,:,igcm_ccnco2_meteor_mass))
    3281 
    3282         call WRITEDIAGFI(ngrid,'ccnNco2_meteor','CCNco2_meteor number',
    3283      &                'part.kg-1',3,zq(:,:,igcm_ccnco2_meteor_number))
     3277          call write_output('ccnqco2_meteor','CCNco2_meteor mmr',
     3278     &                  'kg.kg-1',zq(:,:,igcm_ccnco2_meteor_mass))
     3279
     3280        call write_output('ccnNco2_meteor','CCNco2_meteor number',
     3281     &                'part.kg-1',zq(:,:,igcm_ccnco2_meteor_number))
    32843282           end if
    32853283
     
    32893287      ! Output He tracer, if there is one
    32903288      if (igcm_he.ne.0) then
    3291         call WRITEDIAGFI(ngrid,"he","helium mass mixing ratio",
    3292      &                   "kg/kg",3,zq(1,1,igcm_he))
     3289        call write_output("he","helium mass mixing ratio",
     3290     &                   "kg/kg",zq(:,:,igcm_he))
    32933291        vmr = zq(1:ngrid,1:nlayer,igcm_he)
    32943292     &        * mmean(1:ngrid,1:nlayer)/mmol(igcm_he)
    3295         call WRITEDIAGFI(ngrid,'vmr_he','helium vol. mixing ratio',
    3296      &                   'mol/mol',3,vmr)
     3293        call write_output('vmr_he','helium vol. mixing ratio',
     3294     &                   'mol/mol',vmr(:,:))
    32973295      end if
    32983296
     
    33033301#ifdef MESOINI
    33043302            !!!! waterice = q01, voir readmeteo.F90
    3305           call WRITEDIAGFI(ngrid,'q01',noms(igcm_h2o_ice),
    3306      &                     'kg/kg',3,
    3307      &                     zq(1:ngrid,1:nlayer,igcm_h2o_ice))
     3303          call write_output('q01',noms(igcm_h2o_ice),
     3304     &                     'kg/kg',
     3305     &                     zq(:,:,igcm_h2o_ice))
    33083306            !!!! watervapor = q02, voir readmeteo.F90
    3309           call WRITEDIAGFI(ngrid,'q02',noms(igcm_h2o_vap),
    3310      &                     'kg/kg',3,
    3311      &                     zq(1:ngrid,1:nlayer,igcm_h2o_vap))
     3307          call write_output('q02',noms(igcm_h2o_vap),
     3308     &                     'kg/kg',
     3309     &                     zq(:,:,igcm_h2o_vap))
    33123310            !!!! surface waterice qsurf02 (voir readmeteo)
    3313           call WRITEDIAGFI(ngrid,'qsurf02','surface tracer',
    3314      &                     'kg.m-2',2,
    3315      &                     qsurf(1:ngrid,igcm_h2o_ice,iflat))
     3311          call write_output('qsurf02','surface tracer',
     3312     &                     'kg.m-2',
     3313     &                     qsurf(:,igcm_h2o_ice,iflat))
    33163314         do islope=1,nslope
    33173315          write(str2(1:2),'(i2.2)') islope
    3318           call WRITEDIAGFI(ngrid,'qsurf02_slope'//str2,
    3319      &         'surface tracer','kg.m-2',2,
    3320      &                     qsurf(1:ngrid,igcm_h2o_ice,islope))
     3316          call write_output('qsurf02_slope'//str2,
     3317     &         'surface tracer','kg.m-2',
     3318     &                     qsurf(:,igcm_h2o_ice,islope))
    33213319         ENDDO
    33223320#endif
    3323           call WRITEDIAGFI(ngrid,'mtot',
     3321          call write_output('mtot',
    33243322     &                     'total mass of water vapor',
    3325      &                     'kg/m2',2,mtot)
    3326           call WRITEDIAGFI(ngrid,'icetot',
     3323     &                     'kg/m2',mtot(:))
     3324          call write_output('icetot',
    33273325     &                     'total mass of water ice',
    3328      &                     'kg/m2',2,icetot)
     3326     &                     'kg/m2',icetot(:))
    33293327          vmr = zq(1:ngrid,1:nlayer,igcm_h2o_ice)
    33303328     &          * mmean(1:ngrid,1:nlayer)/mmol(igcm_h2o_ice)
    3331           call WRITEDIAGFI(ngrid,'vmr_h2oice','h2o ice vmr',
    3332      &                     'mol/mol',3,vmr)
     3329          call write_output('vmr_h2oice','h2o ice vmr',
     3330     &                     'mol/mol',vmr(:,:))
    33333331          vmr = zq(1:ngrid,1:nlayer,igcm_h2o_vap)
    33343332     &          * mmean(1:ngrid,1:nlayer)/mmol(igcm_h2o_vap)
    3335           call WRITEDIAGFI(ngrid,'vmr_h2ovap','h2o vap vmr',
    3336      &                     'mol/mol',3,vmr)
    3337           call WRITEDIAGFI(ngrid,'reffice',
     3333          call write_output('vmr_h2ovap','h2o vap vmr',
     3334     &                     'mol/mol',vmr(:,:))
     3335          call write_output('reffice',
    33383336     &                     'Mean reff',
    3339      &                     'm',2,rave)
    3340           call WRITEDIAGFI(ngrid,'h2o_ice','h2o_ice','kg/kg',
    3341      &                     3,zq(:,:,igcm_h2o_ice))
    3342           call WRITEDIAGFI(ngrid,'h2o_vap','h2o_vap','kg/kg',
    3343      &                     3,zq(:,:,igcm_h2o_vap))
     3337     &                     'm',rave(:))
     3338          call write_output('h2o_ice','h2o_ice','kg/kg',
     3339     &                     zq(:,:,igcm_h2o_ice))
     3340          call write_output('h2o_vap','h2o_vap','kg/kg',
     3341     &                     zq(:,:,igcm_h2o_vap))
    33443342
    33453343            if (hdo) then
    33463344            vmr=zq(1:ngrid,1:nlayer,igcm_hdo_ice)
    33473345     &      *mmean(1:ngrid,1:nlayer)/mmol(igcm_hdo_ice)
    3348             CALL WRITEDIAGFI(ngrid,'vmr_hdoice','hdo ice vmr',
    3349      &                       'mol/mol',3,vmr)
     3346            CALL write_output('vmr_hdoice','hdo ice vmr',
     3347     &                       'mol/mol',vmr(:,:))
    33503348            vmr=zq(1:ngrid,1:nlayer,igcm_hdo_vap)
    33513349     &      *mmean(1:ngrid,1:nlayer)/mmol(igcm_hdo_vap)
    3352             CALL WRITEDIAGFI(ngrid,'vmr_hdovap','hdo vap vmr',
    3353      &                       'mol/mol',3,vmr)
    3354             call WRITEDIAGFI(ngrid,'hdo_ice','hdo_ice','kg/kg',
    3355      &             3,zq(:,:,igcm_hdo_ice))
    3356             call WRITEDIAGFI(ngrid,'hdo_vap','hdo_vap','kg/kg',
    3357      &             3,zq(:,:,igcm_hdo_vap))
    3358 
    3359             CALL WRITEDIAGFI(ngrid,'mtotD',
     3350            CALL write_output('vmr_hdovap','hdo vap vmr',
     3351     &                       'mol/mol',vmr(:,:))
     3352            call write_output('hdo_ice','hdo_ice','kg/kg',
     3353     &             zq(:,:,igcm_hdo_ice))
     3354            call write_output('hdo_vap','hdo_vap','kg/kg',
     3355     &             zq(:,:,igcm_hdo_vap))
     3356
     3357            CALL write_output('mtotD',
    33603358     &                       'total mass of HDO vapor',
    3361      &                       'kg/m2',2,mtotD)
    3362             CALL WRITEDIAGFI(ngrid,'icetotD',
     3359     &                       'kg/m2',mtotD(:))
     3360            CALL write_output('icetotD',
    33633361     &                       'total mass of HDO ice',
    3364      &                       'kg/m2',2,icetotD)
     3362     &                       'kg/m2',icetotD(:))
    33653363
    33663364C           Calculation of the D/H ratio
     
    33873385            enddo
    33883386
    3389             CALL WRITEDIAGFI(ngrid,'DoH_vap',
     3387            CALL write_output('DoH_vap',
    33903388     &                       'D/H ratio in vapor',
    3391      &                       ' ',3,DoH_vap)
    3392             CALL WRITEDIAGFI(ngrid,'DoH_ice',
     3389     &                       ' ',DoH_vap(:,:))
     3390            CALL write_output('DoH_ice',
    33933391     &                       'D/H ratio in ice',
    3394      &                       '',3,DoH_ice)
     3392     &                       '',DoH_ice(:,:))
    33953393
    33963394            endif !hdo
    33973395
    33983396!A. Pottier
    3399              CALL WRITEDIAGFI(ngrid,'rmoym',
     3397             CALL write_output('rmoym',
    34003398     &                      'alternative reffice',
    3401      &                      'm',2,rave2)
    3402             call WRITEDIAGFI(ngrid,'saturation',
    3403      &           'h2o vap saturation ratio','dimless',3,satu)
     3399     &                      'm',rave2(:))
     3400            call write_output('saturation',
     3401     &           'h2o vap saturation ratio','dimless',satu(:,:))
    34043402            if (scavenging) then
    3405               CALL WRITEDIAGFI(ngrid,"Nccntot",
     3403              CALL write_output("Nccntot",
    34063404     &                    "condensation nuclei","Nbr/m2",
    3407      &                    2,Nccntot)
    3408               CALL WRITEDIAGFI(ngrid,"Mccntot",
     3405     &                    Nccntot(:))
     3406              CALL write_output("Mccntot",
    34093407     &                    "mass condensation nuclei","kg/m2",
    3410      &                    2,Mccntot)
     3408     &                    Mccntot(:))
    34113409            endif
    3412             call WRITEDIAGFI(ngrid,'rice','Ice particle size',
    3413      &                       'm',3,rice)
    3414             call WRITEDIAGFI(ngrid,'h2o_ice_s',
     3410            call write_output('rice','Ice particle size',
     3411     &                       'm',rice(:,:))
     3412            call write_output('h2o_ice_s',
    34153413     &                       'surface h2o_ice',
    3416      &            'kg.m-2',2,qsurf(1,igcm_h2o_ice,iflat))
     3414     &            'kg.m-2',qsurf(:,igcm_h2o_ice,iflat))
    34173415         do islope=1,nslope
    34183416          write(str2(1:2),'(i2.2)') islope
    3419             call WRITEDIAGFI(ngrid,'h2o_ice_s_slope'//str2,
     3417            call write_output('h2o_ice_s_slope'//str2,
    34203418     &                       'surface h2o_ice',
    3421      &             'kg.m-2',2,qsurf(1,igcm_h2o_ice,islope))
     3419     &             'kg.m-2',qsurf(:,igcm_h2o_ice,islope))
    34223420         ENDDO
    34233421            if (hdo) then
    3424             call WRITEDIAGFI(ngrid,'hdo_ice_s',
     3422            call write_output('hdo_ice_s',
    34253423     &                       'surface hdo_ice',
    3426      &           'kg.m-2',2,qsurf(1,igcm_hdo_ice,iflat))
     3424     &           'kg.m-2',qsurf(:,igcm_hdo_ice,iflat))
    34273425         do islope=1,nslope
    34283426          write(str2(1:2),'(i2.2)') islope
    3429             call WRITEDIAGFI(ngrid,'hdo_ice_s_slope'//str2,
     3427            call write_output('hdo_ice_s_slope'//str2,
    34303428     &                       'surface hdo_ice',
    3431      &           'kg.m-2',2,qsurf(1,igcm_hdo_ice,islope))
     3429     &           'kg.m-2',qsurf(:,igcm_hdo_ice,islope))
    34323430         ENDDO
    34333431
     
    34413439                enddo
    34423440
    3443             call WRITEDIAGFI(ngrid,'DoH_surf',
     3441            call write_output('DoH_surf',
    34443442     &                       'surface D/H',
    3445      &                       '',2,DoH_surf)
     3443     &                       '',DoH_surf(:))
    34463444            endif ! hdo
    34473445
    3448             CALL WRITEDIAGFI(ngrid,'albedo',
     3446            CALL write_output('albedo',
    34493447     &                         'albedo',
    3450      &                         '',2,albedo(1,1,iflat))
     3448     &                         '',albedo(:,1,iflat))
    34513449         do islope=1,nslope
    34523450          write(str2(1:2),'(i2.2)') islope
    3453             CALL WRITEDIAGFI(ngrid,'albedo_slope'//str2,
     3451            CALL write_output('albedo_slope'//str2,
    34543452     &                         'albedo',
    3455      &                         '',2,albedo(1,1,islope))
     3453     &                         '',albedo(:,1,islope))
    34563454         ENDDO
    34573455              if (tifeedback) then
    3458                  call WRITEDIAGSOIL(ngrid,"soiltemp",
     3456                 call write_output("soiltemp",
    34593457     &                              "Soil temperature","K",
    3460      &                              3,tsoil)
    3461                  call WRITEDIAGSOIL(ngrid,'soilti',
     3458     &                              tsoil(:,:,iflat))
     3459                 call write_output('soilti',
    34623460     &                       'Soil Thermal Inertia',
    3463      &         'J.s-1/2.m-2.K-1',3,inertiesoil(:,:,iflat))
     3461     &         'J.s-1/2.m-2.K-1',inertiesoil(:,:,iflat))
    34643462         do islope=1,nslope
    34653463          write(str2(1:2),'(i2.2)') islope
    3466                  call WRITEDIAGSOIL(ngrid,'soilti_slope'//str2,
     3464                 call write_output('soilti_slope'//str2,
    34673465     &                       'Soil Thermal Inertia',
    3468      &          'J.s-1/2.m-2.K-1',3,inertiesoil(:,:,islope))
     3466     &          'J.s-1/2.m-2.K-1',inertiesoil(:,:,islope))
    34693467         ENDDO
    34703468              endif
    34713469!A. Pottier
    34723470          if (CLFvarying) then !AP14 nebulosity
    3473             call WRITEDIAGFI(ngrid,'totcloudfrac',
     3471            call write_output('totcloudfrac',
    34743472     &                       'Total cloud fraction',
    3475      &                       ' ',2,totcloudfrac)
     3473     &                       ' ',totcloudfrac(:))
    34763474          end if !clf varying
    34773475        end if !(water)
     
    34813479c        ----------------------------------------------------------
    34823480
    3483       call WRITEDIAGFI(ngrid,'tau_pref_scenario',
     3481      call write_output('tau_pref_scenario',
    34843482     &                 'Prescribed visible dust optical depth at 610Pa',
    3485      &                 'NU',2,tau_pref_scenario)
    3486 
    3487       call WRITEDIAGFI(ngrid,'tau_pref_gcm',
     3483     &                 'NU',tau_pref_scenario(:))
     3484
     3485      call write_output('tau_pref_gcm',
    34883486     &                 'Visible dust optical depth at 610Pa in the GCM',
    3489      &                 'NU',2,tau_pref_gcm)
     3487     &                 'NU',tau_pref_gcm(:))
    34903488     
    34913489      if (reff_driven_IRtoVIS_scenario) then
    3492              call WRITEDIAGFI(ngrid,'IRtoVIScoef',
     3490             call write_output('IRtoVIScoef',
    34933491     &  'conversion coeff for dust tau from abs9.3um to ext0.67um',
    3494      &                        '/',2,IRtoVIScoef)
     3492     &                        '/',IRtoVIScoef(:))
    34953493      endif
    34963494
    34973495      if (dustbin.ne.0) then
    34983496
    3499         call WRITEDIAGFI(ngrid,'tau','taudust','SI',2,tau(1,1))
     3497        call write_output('tau','taudust','SI',tau(:,1))
    35003498
    35013499#ifndef MESOINI
    35023500           if (doubleq) then
    3503              call WRITEDIAGFI(ngrid,'dqsdust',
     3501             call write_output('dqsdust',
    35043502     &                        'deposited surface dust mass',
    3505      &                        'kg.m-2.s-1',2,dqdustsurf)
    3506              call WRITEDIAGFI(ngrid,'dqndust',
     3503     &                        'kg.m-2.s-1',dqdustsurf(:))
     3504             call write_output('dqndust',
    35073505     &                        'deposited surface dust number',
    3508      &                        'number.m-2.s-1',2,dndustsurf)
    3509              call WRITEDIAGFI(ngrid,'reffdust','reffdust',
    3510      &                        'm',3,rdust*ref_r0)
    3511              call WRITEDIAGFI(ngrid,'dustq','Dust mass mr',
    3512      &                        'kg/kg',3,qdust)
    3513              call WRITEDIAGFI(ngrid,'dustN','Dust number',
    3514      &                        'part/kg',3,ndust)
     3506     &                        'number.m-2.s-1',dndustsurf(:))
     3507             call write_output('reffdust','reffdust',
     3508     &                        'm',rdust(:,:)*ref_r0)
     3509             call write_output('dustq','Dust mass mr',
     3510     &                        'kg/kg',qdust(:,:))
     3511             call write_output('dustN','Dust number',
     3512     &                        'part/kg',ndust(:,:))
    35153513
    35163514             select case (trim(dustiropacity))
    35173515              case ("tes")
    3518                call WRITEDIAGFI(ngrid,'dsodust',
     3516               call write_output('dsodust',
    35193517     &  'density scaled extinction opacity of std dust at 9.3um(TES)',
    3520      &         'm2.kg-1',3,dsodust)
    3521                call WRITEDIAGFI(ngrid,'dso',
     3518     &         'm2.kg-1',dsodust(:,:))
     3519               call write_output('dso',
    35223520     &  'density scaled extinction opacity of all dust at 9.3um(TES)',
    3523      &         'm2.kg-1',3,dsodust+dsords+dsotop)
     3521     &         'm2.kg-1',dsodust(:,:)+dsords(:,:)+dsotop(:,:))
    35243522              case ("mcs")
    3525                call WRITEDIAGFI(ngrid,'dsodust',
     3523               call write_output('dsodust',
    35263524     &  'density scaled extinction opacity of std dust at 21.6um(MCS)',
    3527      &         'm2.kg-1',3,dsodust)
    3528                call WRITEDIAGFI(ngrid,'dso',
     3525     &         'm2.kg-1',dsodust(:,:))
     3526               call write_output('dso',
    35293527     &  'density scaled extinction opacity of all dust at 21.6um(MCS)',
    3530      &         'm2.kg-1',3,dsodust+dsords+dsotop)
     3528     &         'm2.kg-1',dsodust(:,:)+dsords(:,:)+dsotop(:,:))
    35313529             end select
    35323530           else ! (doubleq=.false.)
    35333531             do iq=1,dustbin
    35343532               write(str2(1:2),'(i2.2)') iq
    3535                call WRITEDIAGFI(ngrid,'q'//str2,'mix. ratio',
    3536      &                         'kg/kg',3,zq(1,1,iq))
    3537                call WRITEDIAGFI(ngrid,'qsurf'//str2,'qsurf',
    3538      &                         'kg.m-2',2,qsurf(1,iq,iflat))
     3533               call write_output('q'//str2,'mix. ratio',
     3534     &                         'kg/kg',zq(:,:,iq))
     3535               call write_output('qsurf'//str2,'qsurf',
     3536     &                         'kg.m-2',qsurf(:,iq,iflat))
    35393537         do islope=1,nslope
    35403538          write(str2(1:2),'(i2.2)') islope
    3541                call WRITEDIAGFI(ngrid,'qsurf_slope'//str2,'qsurf',
    3542      &                         'kg.m-2',2,qsurf(1,iq,islope))
     3539               call write_output('qsurf_slope'//str2,'qsurf',
     3540     &                         'kg.m-2',qsurf(:,iq,islope))
    35433541         ENDDO
    35443542             end do
     
    35463544
    35473545           if (rdstorm) then  ! writediagfi tendencies stormdust tracers
    3548              call WRITEDIAGFI(ngrid,'reffstormdust','reffstormdust',
    3549      &                        'm',3,rstormdust*ref_r0)
    3550              call WRITEDIAGFI(ngrid,'mstormdtot',
     3546             call write_output('reffstormdust','reffstormdust',
     3547     &                        'm',rstormdust(:,:)*ref_r0)
     3548             call write_output('mstormdtot',
    35513549     &                        'total mass of stormdust only',
    3552      &                        'kg.m-2',2,mstormdtot)
    3553              call WRITEDIAGFI(ngrid,'mdusttot',
     3550     &                        'kg.m-2',mstormdtot(:))
     3551             call write_output('mdusttot',
    35543552     &                        'total mass of dust only',
    3555      &                        'kg.m-2',2,mdusttot)
    3556              call WRITEDIAGFI(ngrid,'rdsdqsdust',
     3553     &                        'kg.m-2',mdusttot(:))
     3554             call write_output('rdsdqsdust',
    35573555     &                        'deposited surface stormdust mass',
    3558      &                        'kg.m-2.s-1',2,rdsdqdustsurf)
    3559              call WRITEDIAGFI(ngrid,'rdsdustq','storm Dust mass mr',
    3560      &                        'kg/kg',3,rdsqdust)
    3561              call WRITEDIAGFI(ngrid,'rdsdustqmodel','storm Dust massmr',
    3562      &                        'kg/kg',3,pq(:,:,igcm_stormdust_mass))
    3563              call WRITEDIAGFI(ngrid,'rdsdustN','storm Dust number',
    3564      &                        'part/kg',3,rdsndust)
    3565              call WRITEDIAGFI(ngrid,"stormfract",
     3556     &                        'kg.m-2.s-1',rdsdqdustsurf(:))
     3557             call write_output('rdsdustq','storm Dust mass mr',
     3558     &                        'kg/kg',rdsqdust(:,:))
     3559             call write_output('rdsdustqmodel','storm Dust massmr',
     3560     &                        'kg/kg',pq(:,:,igcm_stormdust_mass))
     3561             call write_output('rdsdustN','storm Dust number',
     3562     &                        'part/kg',rdsndust(:,:))
     3563             call write_output("stormfract",
    35663564     &                "fraction of the mesh, with stormdust","none",
    3567      &                                               2,totstormfract)
    3568              call WRITEDIAGFI(ngrid,'qsurf',
     3565     &                                         totstormfract(:))
     3566             call write_output('qsurf',
    35693567     &                 'stormdust injection',
    3570      &                 'kg.m-2',2,qsurf(:,igcm_stormdust_mass,iflat))
     3568     &                 'kg.m-2',qsurf(:,igcm_stormdust_mass,iflat))
    35713569         do islope=1,nslope
    35723570          write(str2(1:2),'(i2.2)') islope
    3573              call WRITEDIAGFI(ngrid,'qsurf_slope'//str2,
     3571             call write_output('qsurf_slope'//str2,
    35743572     &                 'stormdust injection',
    3575      &          'kg.m-2',2,qsurf(:,igcm_stormdust_mass,islope))
     3573     &          'kg.m-2',qsurf(:,igcm_stormdust_mass,islope))
    35763574         ENDDO
    3577              call WRITEDIAGFI(ngrid,'pdqsurf',
     3575             call write_output('pdqsurf',
    35783576     &                  'tendancy stormdust mass at surface',
    3579      &          'kg.m-2',2,dqsurf(:,igcm_stormdust_mass,iflat))
     3577     &          'kg.m-2',dqsurf(:,igcm_stormdust_mass,iflat))
    35803578         do islope=1,nslope
    35813579          write(str2(1:2),'(i2.2)') islope
    3582              call WRITEDIAGFI(ngrid,'pdqsurf_slope'//str2,
     3580             call write_output('pdqsurf_slope'//str2,
    35833581     &                  'tendancy stormdust mass at surface',
    3584      &            'kg.m-2',2,dqsurf(:,igcm_stormdust_mass,islope))
     3582     &            'kg.m-2',dqsurf(:,igcm_stormdust_mass,islope))
    35853583         ENDDO
    3586              call WRITEDIAGFI(ngrid,'wspeed','vertical speed stormdust',
    3587      &                        'm/s',3,wspeed(:,1:nlayer))
    3588              call WRITEDIAGFI(ngrid,'zdqsed_dustq'
    3589      &          ,'sedimentation q','kg.m-2.s-1',3,
     3584             call write_output('wspeed','vertical speed stormdust',
     3585     &                        'm/s',wspeed(:,:))
     3586             call write_output('zdqsed_dustq'
     3587     &          ,'sedimentation q','kg.m-2.s-1',
    35903588     &          zdqsed(:,:,igcm_dust_mass))
    3591              call WRITEDIAGFI(ngrid,'zdqssed_dustq'
    3592      &          ,'sedimentation q','kg.m-2.s-1',2,
     3589             call write_output('zdqssed_dustq'
     3590     &          ,'sedimentation q','kg.m-2.s-1',
    35933591     &          zdqssed(:,igcm_dust_mass))
    3594              call WRITEDIAGFI(ngrid,'zdqsed_rdsq'
    3595      &          ,'sedimentation q','kg.m-2.s-1',3,
     3592             call write_output('zdqsed_rdsq'
     3593     &          ,'sedimentation q','kg.m-2.s-1',
    35963594     &          zdqsed(:,:,igcm_stormdust_mass))
    3597              call WRITEDIAGFI(ngrid,'zdqsed_dustN'
    3598      &          ,'sedimentation N','Nbr.m-2.s-1',3,
     3595             call write_output('zdqsed_dustN'
     3596     &          ,'sedimentation N','Nbr.m-2.s-1',
    35993597     &          zdqsed(:,:,igcm_dust_number))
    3600              call WRITEDIAGFI(ngrid,'rdust','rdust',
    3601      &                        'm',3,rdust)
    3602              call WRITEDIAGFI(ngrid,'rstormdust','rstormdust',
    3603      &                        'm',3,rstormdust)
    3604              call WRITEDIAGFI(ngrid,'totaldustq','total dust mass',
    3605      &                        'kg/kg',3,qdusttotal)
     3598             call write_output('rdust','rdust',
     3599     &                        'm',rdust(:,:))
     3600             call write_output('rstormdust','rstormdust',
     3601     &                        'm',rstormdust(:,:))
     3602             call write_output('totaldustq','total dust mass',
     3603     &                        'kg/kg',qdusttotal(:,:))
    36063604
    36073605             select case (trim(dustiropacity))
    36083606              case ("tes")
    3609                call WRITEDIAGFI(ngrid,'dsords',
     3607               call write_output('dsords',
    36103608     &  'density scaled extinction opacity of stormdust at 9.3um(TES)',
    3611      &         'm2.kg-1',3,dsords)
     3609     &         'm2.kg-1',dsords(:,:))
    36123610              case ("mcs")
    3613                call WRITEDIAGFI(ngrid,'dsords',
     3611               call write_output('dsords',
    36143612     &  'density scaled extinction opacity of stormdust at 21.6um(MCS)',
    3615      &         'm2.kg-1',3,dsords)
     3613     &         'm2.kg-1',dsords(:,:))
    36163614             end select
    36173615           endif ! (rdstorm)
    36183616
    36193617           if (topflows) then
    3620              call WRITEDIAGFI(ngrid,'refftopdust','refftopdust',
    3621      &                        'm',3,rtopdust*ref_r0)
    3622              call WRITEDIAGFI(ngrid,'topdustq','top Dust mass mr',
    3623      &                        'kg/kg',3,pq(:,:,igcm_topdust_mass))
    3624              call WRITEDIAGFI(ngrid,'topdustN','top Dust number',
    3625      &                        'part/kg',3,pq(:,:,igcm_topdust_number))
     3618             call write_output('refftopdust','refftopdust',
     3619     &                        'm',rtopdust(:,:)*ref_r0)
     3620             call write_output('topdustq','top Dust mass mr',
     3621     &                        'kg/kg',pq(:,:,igcm_topdust_mass))
     3622             call write_output('topdustN','top Dust number',
     3623     &                        'part/kg',pq(:,:,igcm_topdust_number))
    36263624             select case (trim(dustiropacity))
    36273625              case ("tes")
    3628                call WRITEDIAGFI(ngrid,'dsotop',
     3626               call write_output('dsotop',
    36293627     &  'density scaled extinction opacity of topdust at 9.3um(TES)',
    3630      &         'm2.kg-1',3,dsotop)
     3628     &         'm2.kg-1',dsotop(:,:))
    36313629              case ("mcs")
    3632                call WRITEDIAGFI(ngrid,'dsotop',
     3630               call write_output('dsotop',
    36333631     &  'density scaled extinction opacity of topdust at 21.6um(MCS)',
    3634      &         'm2.kg-1',3,dsotop)
     3632     &         'm2.kg-1',dsotop(:,:))
    36353633             end select
    36363634           endif ! (topflows)
    36373635
    36383636           if (dustscaling_mode==2) then
    3639              call writediagfi(ngrid,"dust_rad_adjust",
     3637             call write_output("dust_rad_adjust",
    36403638     &            "radiative adjustment coefficient for dust",
    3641      &                        "",2,dust_rad_adjust)
     3639     &                        "",dust_rad_adjust(:))
    36423640           endif
    36433641
    36443642           if (scavenging) then
    3645              call WRITEDIAGFI(ngrid,'ccnq','CCN mass mr',
    3646      &                        'kg/kg',3,qccn)
    3647              call WRITEDIAGFI(ngrid,'ccnN','CCN number',
    3648      &                        'part/kg',3,nccn)
    3649              call WRITEDIAGFI(ngrid,'surfccnq','Surf nuclei mass mr',
    3650      &                        'kg.m-2',2,qsurf(1,igcm_ccn_mass,iflat))
     3643             call write_output('ccnq','CCN mass mr',
     3644     &                        'kg/kg',qccn(:,:))
     3645             call write_output('ccnN','CCN number',
     3646     &                        'part/kg',nccn(:,:))
     3647             call write_output('surfccnq','Surf nuclei mass mr',
     3648     &                        'kg.m-2',qsurf(:,igcm_ccn_mass,iflat))
    36513649         do islope=1,nslope
    36523650          write(str2(1:2),'(i2.2)') islope
    3653              call WRITEDIAGFI(ngrid,'surfccnq_slope'//str2,
     3651             call write_output('surfccnq_slope'//str2,
    36543652     &               'Surf nuclei mass mr',
    3655      &               'kg.m-2',2,qsurf(1,igcm_ccn_mass,islope))
     3653     &               'kg.m-2',qsurf(:,igcm_ccn_mass,islope))
    36563654         ENDDO
    3657              call WRITEDIAGFI(ngrid,'surfccnN','Surf nuclei number',
    3658      &                        'kg.m-2',2,qsurf(1,igcm_ccn_number,iflat))
     3655             call write_output('surfccnN','Surf nuclei number',
     3656     &                        'kg.m-2',qsurf(:,igcm_ccn_number,iflat))
    36593657         do islope=1,nslope
    36603658          write(str2(1:2),'(i2.2)') islope
    3661              call WRITEDIAGFI(ngrid,'surfccnN_slope'//str2,
     3659             call write_output('surfccnN_slope'//str2,
    36623660     &                 'Surf nuclei number',
    3663      &                 'kg.m-2',2,qsurf(1,igcm_ccn_number,islope))
     3661     &                 'kg.m-2',qsurf(:,igcm_ccn_number,islope))
    36643662         ENDDO
    36653663           endif ! (scavenging)
     
    36683666!     !!! to initialize mesoscale we need scaled variables
    36693667!     !!! because this must correspond to starting point for tracers
    3670 !             call WRITEDIAGFI(ngrid,'dustq','Dust mass mr',
     3668!             call write_output('dustq','Dust mass mr',
    36713669!     &           'kg/kg',3,pq(1:ngrid,1:nlayer,igcm_dust_mass))
    3672 !             call WRITEDIAGFI(ngrid,'dustN','Dust number',
     3670!             call write_output('dustN','Dust number',
    36733671!     &           'part/kg',3,pq(1:ngrid,1:nlayer,igcm_dust_number))
    3674 !             call WRITEDIAGFI(ngrid,'ccn','Nuclei mass mr',
     3672!             call write_output('ccn','Nuclei mass mr',
    36753673!     &           'kg/kg',3,pq(1:ngrid,1:nlayer,igcm_ccn_mass))
    3676 !             call WRITEDIAGFI(ngrid,'ccnN','Nuclei number',
     3674!             call write_output('ccnN','Nuclei number',
    36773675!     &           'part/kg',3,pq(1:ngrid,1:nlayer,igcm_ccn_number))
    36783676      if (freedust) then
    3679              call WRITEDIAGFI(ngrid,'dustq','Dust mass mr',
    3680      &                        'kg/kg',3,qdust)
    3681              call WRITEDIAGFI(ngrid,'dustN','Dust number',
    3682      &                        'part/kg',3,ndust)
    3683              call WRITEDIAGFI(ngrid,'ccn','CCN mass mr',
    3684      &                        'kg/kg',3,qccn)
    3685              call WRITEDIAGFI(ngrid,'ccnN','CCN number',
    3686      &                        'part/kg',3,nccn)
     3677             call write_output('dustq','Dust mass mr',
     3678     &                        'kg/kg',qdust)
     3679             call write_output('dustN','Dust number',
     3680     &                        'part/kg',ndust)
     3681             call write_output('ccn','CCN mass mr',
     3682     &                        'kg/kg',qccn)
     3683             call write_output('ccnN','CCN number',
     3684     &                        'part/kg',nccn)
    36873685      else
    3688              call WRITEDIAGFI(ngrid,'dustq','Dust mass mr',
    3689      &                        'kg/kg',3,pq(1,1,igcm_dust_mass))
    3690              call WRITEDIAGFI(ngrid,'dustN','Dust number',
    3691      &                        'part/kg',3,pq(1,1,igcm_dust_number))
    3692              call WRITEDIAGFI(ngrid,'ccn','Nuclei mass mr',
    3693      &                        'kg/kg',3,pq(1,1,igcm_ccn_mass))
    3694              call WRITEDIAGFI(ngrid,'ccnN','Nuclei number',
    3695      &                        'part/kg',3,pq(1,1,igcm_ccn_number))
     3686             call write_output('dustq','Dust mass mr',
     3687     &                        'kg/kg',pq(:,:,igcm_dust_mass))
     3688             call write_output('dustN','Dust number',
     3689     &                        'part/kg',pq(:,:,igcm_dust_number))
     3690             call write_output('ccn','Nuclei mass mr',
     3691     &                        'kg/kg',pq(:,:,igcm_ccn_mass))
     3692             call write_output('ccnN','Nuclei number',
     3693     &                        'part/kg',pq(:,:,igcm_ccn_number))
    36963694      endif
    36973695#endif
     
    37043702
    37053703         if(calllott_nonoro) then
    3706            call WRITEDIAGFI(ngrid,"dugwno","GW non-oro dU","m/s2",
    3707      $           3,d_u_hin/ptimestep)
    3708            call WRITEDIAGFI(ngrid,"dvgwno","GW non-oro dV","m/s2",
    3709      $           3,d_v_hin/ptimestep)
     3704           call write_output("dugwno","GW non-oro dU","m/s2",
     3705     $           d_u_hin(:,:)/ptimestep)
     3706           call write_output("dvgwno","GW non-oro dV","m/s2",
     3707     $           d_v_hin(:,:)/ptimestep)
    37103708         endif                  !(calllott_nonoro)
    37113709
     
    37163714         if(callthermos) then
    37173715
    3718             call WRITEDIAGFI(ngrid,"q15um","15 um cooling","K/s",
    3719      $           3,zdtnlte)
    3720             call WRITEDIAGFI(ngrid,"quv","UV heating","K/s",
    3721      $           3,zdteuv)
    3722             call WRITEDIAGFI(ngrid,"cond","Thermal conduction","K/s",
    3723      $           3,zdtconduc)
    3724             call WRITEDIAGFI(ngrid,"qnir","NIR heating","K/s",
    3725      $           3,zdtnirco2)
     3716            call write_output("q15um","15 um cooling","K/s",
     3717     $           zdtnlte(:,:))
     3718            call write_output("quv","UV heating","K/s",
     3719     $           zdteuv(:,:))
     3720            call write_output("cond","Thermal conduction","K/s",
     3721     $           zdtconduc(:,:))
     3722            call write_output("qnir","NIR heating","K/s",
     3723     $           zdtnirco2(:,:))
    37263724
    37273725            !H, H2 and D escape fluxes
    37283726
    3729             call WRITEDIAGFI(ngrid,"PhiH","H escape flux","s-1",
    3730      $           0,[PhiEscH])
    3731             call WRITEDIAGFI(ngrid,"PhiH2","H2 escape flux","s-1",
    3732      $           0,[PhiEscH2])
    3733             call WRITEDIAGFI(ngrid,"PhiD","D escape flux","s-1",
    3734      $           0,[PhiEscD])
     3727            call write_output("PhiH","H escape flux","s-1",
     3728     $           PhiEscH)
     3729            call write_output("PhiH2","H2 escape flux","s-1",
     3730     $           PhiEscH2)
     3731            call write_output("PhiD","D escape flux","s-1",
     3732     $           PhiEscD)
    37353733
    37363734         endif  !(callthermos)
    37373735
    3738             call WRITEDIAGFI(ngrid,"q15um","15 um cooling","K/s",
    3739      $           3,zdtnlte)
    3740             call WRITEDIAGFI(ngrid,"qnir","NIR heating","K/s",
    3741      $           3,zdtnirco2)
     3736            call write_output("q15um","15 um cooling","K/s",
     3737     $           zdtnlte(:,:))
     3738            call write_output("qnir","NIR heating","K/s",
     3739     $           zdtnirco2(:,:))
    37423740
    37433741c        ----------------------------------------------------------
     
    37513749c        ----------------------------------------------------------
    37523750      if (calltherm) then
    3753         call WRITEDIAGFI(ngrid,'lmax_th',
     3751        call write_output('lmax_th',
    37543752     &              'hauteur du thermique','point',
    3755      &                         2,lmax_th_out)
    3756         call WRITEDIAGFI(ngrid,'zmax_th',
     3753     &                         lmax_th_out(:))
     3754        call write_output('zmax_th',
    37573755     &                   'hauteur du thermique','m',
    3758      &                    2,zmax_th)
    3759         call WRITEDIAGFI(ngrid,'hfmax_th',
     3756     &                    zmax_th(:))
     3757        call write_output('hfmax_th',
    37603758     &                   'maximum TH heat flux','K.m/s',
    3761      &                   2,hfmax_th)
    3762         call WRITEDIAGFI(ngrid,'wstar',
     3759     &                   hfmax_th(:))
     3760        call write_output('wstar',
    37633761     &                   'maximum TH vertical velocity','m/s',
    3764      &                   2,wstar)
     3762     &                   wstar(:))
    37653763      end if
    37663764
     
    37783776
    37793777         ! Write soil temperature
    3780         call writediagsoil(ngrid,"soiltemp","Soil temperature","K",
    3781      &                     3,tsoil(:,:,iflat))
     3778        call write_output("soiltemp","Soil temperature","K",
     3779     &                     tsoil(:,:,iflat))
    37823780         do islope=1,nslope
    37833781          write(str2(1:2),'(i2.2)') islope
    3784         call writediagsoil(ngrid,"soiltemp_slope"//str2,
     3782        call write_output("soiltemp_slope"//str2,
    37853783     &                     "Soil temperature","K",
    3786      &                     3,tsoil(:,:,islope))
     3784     &                     tsoil(:,:,islope))
    37873785         ENDDO
    37883786
    37893787!PREVIOUSLY IN 1D ONLY
    3790          call WRITEDIAGFI(ngrid,"dtrad","rad. heat. rate",
    3791      &              "K.s-1",3,dtrad)
     3788         call write_output("dtrad","rad. heat. rate",
     3789     &              "K.s-1",dtrad(:,:))
    37923790
    37933791           if (rdstorm) then
    3794              call writediagfi(1,'aerosol_dust','opacity of env. dust',''
    3795      &                        ,3,aerosol(:,:,iaer_dust_doubleq))
    3796              call writediagfi(1,'aerosol_stormdust',
     3792             call write_output('aerosol_dust','opacity of env. dust',''
     3793     &                        ,aerosol(:,:,iaer_dust_doubleq))
     3794             call write_output('aerosol_stormdust',
    37973795     &                         'opacity of storm dust',''
    3798      &                        ,3,aerosol(:,:,iaer_stormdust_doubleq))
    3799              call WRITEDIAGFI(ngrid,'dqsdifdustq','diffusion',
    3800      &          'kg.m-2.s-1',2,zdqsdif(:,igcm_dust_mass,iflat))
     3796     &                        ,aerosol(:,:,iaer_stormdust_doubleq))
     3797             call write_output('dqsdifdustq','diffusion',
     3798     &          'kg.m-2.s-1',zdqsdif(:,igcm_dust_mass,iflat))
    38013799         do islope=1,nslope
    38023800          write(str2(1:2),'(i2.2)') islope
    3803              call WRITEDIAGFI(ngrid,'dqsdifdustq_slope'//str2,
     3801             call write_output('dqsdifdustq_slope'//str2,
    38043802     &             'diffusion',
    3805      &          'kg.m-2.s-1',2,zdqsdif(:,igcm_dust_mass,islope))
     3803     &          'kg.m-2.s-1',zdqsdif(:,igcm_dust_mass,islope))
    38063804         ENDDO
    3807              call WRITEDIAGFI(ngrid,'dqsdifrdsq','diffusion',
    3808      &          'kg.m-2.s-1',2,zdqsdif(:,igcm_stormdust_mass,iflat))
     3805             call write_output('dqsdifrdsq','diffusion',
     3806     &          'kg.m-2.s-1',zdqsdif(:,igcm_stormdust_mass,iflat))
    38093807         do islope=1,nslope
    38103808          write(str2(1:2),'(i2.2)') islope
    3811              call WRITEDIAGFI(ngrid,'dqsdifrdsq_slope'//str2,
     3809             call write_output('dqsdifrdsq_slope'//str2,
    38123810     &           'diffusion',
    3813      &          'kg.m-2.s-1',2,zdqsdif(:,igcm_stormdust_mass,islope))
     3811     &          'kg.m-2.s-1',zdqsdif(:,igcm_stormdust_mass,islope))
    38143812         ENDDO
    38153813          endif !(rdstorm)
     
    38173815         if(water) then
    38183816           if (.not.scavenging) then
    3819         call WRITEDIAGFI(ngrid,'zdqcloud_ice','cloud ice',
    3820      &            'kg.m-2.s-1',1,zdqcloud(1,:,igcm_h2o_ice))
    3821         call WRITEDIAGFI(ngrid,'zdqcloud_vap','cloud vap',
    3822      &            'kg.m-2.s-1',1,zdqcloud(1,:,igcm_h2o_vap))
    3823         call WRITEDIAGFI(ngrid,'zdqcloud','cloud ice',
    3824      &            'kg.m-2.s-1',1,zdqcloud(1,:,igcm_h2o_ice)
    3825      &                          +zdqcloud(1,:,igcm_h2o_vap))
     3817        call write_output('zdqcloud_ice','cloud ice',
     3818     &            'kg.m-2.s-1',zdqcloud(:,:,igcm_h2o_ice))
     3819        call write_output('zdqcloud_vap','cloud vap',
     3820     &            'kg.m-2.s-1',zdqcloud(:,:,igcm_h2o_vap))
     3821        call write_output('zdqcloud','cloud ice',
     3822     &            'kg.m-2.s-1',zdqcloud(:,:,igcm_h2o_ice)
     3823     &                          +zdqcloud(:,:,igcm_h2o_vap))
    38263824        IF (hdo) THEN
    3827         call WRITEDIAGFI(ngrid,'zdqcloud_iceD','cloud ice hdo',
    3828      &            'kg.m-2.s-1',1,zdqcloud(1,:,igcm_hdo_ice))
    3829         call WRITEDIAGFI(ngrid,'zdqcloud_vapD','cloud vap hdo',
    3830      &            'kg.m-2.s-1',1,zdqcloud(1,:,igcm_hdo_vap))
     3825        call write_output('zdqcloud_iceD','cloud ice hdo',
     3826     &            'kg.m-2.s-1',zdqcloud(:,:,igcm_hdo_ice))
     3827        call write_output('zdqcloud_vapD','cloud vap hdo',
     3828     &            'kg.m-2.s-1',zdqcloud(:,:,igcm_hdo_vap))
    38313829        ENDIF ! hdo
    38323830           endif !not.scavenging
     
    38733871      endif ! of if (igcm_co2_ice.ne.0)
    38743872      co2conservation = (co2totA-co2totB)/co2totA
    3875         call WRITEDIAGFI(ngrid, 'co2conservation',
     3873        call write_output( 'co2conservation',
    38763874     &                     'Total CO2 mass conservation in physic',
    3877      &                     ' ', 0, co2conservation)
     3875     &                     ' ', co2conservation)
    38783876! XIOS outputs
    38793877#ifdef CPP_XIOS     
  • trunk/LMDZ.MARS/libf/phymars/rocketduststorm_mod.F90

    r2826 r2932  
    4444      USE surfdat_h, only: emis,zmea, zstd, zsig, hmons
    4545      USE callradite_mod, only: callradite
     46      use write_output_mod, only: write_output
    4647      IMPLICIT NONE
    4748
     
    525526! WRITEDIAGFI
    526527
    527         call WRITEDIAGFI(ngrid,'lapserate','lapse rate in the storm', &
    528            &                        'k/m',3,lapserate)
    529         call WRITEDIAGFI(ngrid,'deltahr','extra heating rates', &
    530            &                        'K/s',3,deltahr)
    531         call writediagfi(ngrid,'scheme','which scheme',&
    532                                                    ' ',2,real(scheme))
     528        call write_output('lapserate','lapse rate in the storm', &
     529           &                        'k/m',lapserate(:,:))
     530        call write_output('deltahr','extra heating rates', &
     531           &                        'K/s',deltahr(:,:))
     532        call write_output('scheme','which scheme',&
     533                                                   ' ',real(scheme(:)))
    533534
    534535        END SUBROUTINE rocketduststorm
  • trunk/LMDZ.MARS/libf/phymars/topmons_mod.F90

    r2931 r2932  
    4242                           hsummit,contains_mons
    4343      USE callradite_mod, only: callradite
     44      use write_output_mod, only: write_output
    4445
    4546      IMPLICIT NONE
     
    642643! WRITEDIAGFI
    643644! **********************************************************************
    644                CALL WRITEDIAGFI(ngrid,'wup_top', &
    645                 'wup_top','',3,wup(:,:))
    646                CALL WRITEDIAGFI(ngrid,'wlwmax_top', &
    647                 'wlwmax_top','',2,wup(:,lwmax(1)))
    648                CALL WRITEDIAGFI(ngrid,'w0_top', &
    649                 'w0_top','',2,wup(:,lsummit(1)+1))
    650                CALL WRITEDIAGFI(ngrid,'wup2_top', &
    651                 'wup2_top','',3,wup2(:,:))
    652                CALL WRITEDIAGFI(ngrid,'wrad_top', &
    653                 'wrad_top','',3,wrad(:,:))
    654                CALL WRITEDIAGFI(ngrid,'wfin_top', &
    655                 'wfin_top','',3,wfin(:,:))
    656                CALL WRITEDIAGFI(ngrid,'hmons', &
    657                 'hmons','',2,hmons)
    658                CALL WRITEDIAGFI(ngrid,'hsummit', &
    659                 'hsummit','',2,hsummit)
    660                CALL WRITEDIAGFI(ngrid,'alpha_hmons', &
    661                 'alpha_hmons','',2,alpha_hmons)
    662                CALL WRITEDIAGFI(ngrid,'zt_top', &
    663                 'zt_top','',3,t_top(:,:))
    664                CALL WRITEDIAGFI(ngrid,'dt_top', &
    665                 'dt_top','',2,dt_top(:))
    666                CALL WRITEDIAGFI(ngrid,'ztemp', &
    667                 'envtemp','',3,zt(:,:))
    668                CALL WRITEDIAGFI(ngrid,'zt_env', &
    669                 't_env','',3,t_env(:,:))
    670                CALL WRITEDIAGFI(ngrid,'zdtvert_top', &
    671                 'zdtvert_top','',3,zdtvert(:,:))
    672                CALL WRITEDIAGFI(ngrid,'newzt_top', &
    673                 'newzt_top','',3,newzt(:,:))
    674                CALL WRITEDIAGFI(ngrid,'deltahr_top', &
    675                 'deltahr_top','',3,deltahr(:,:))
    676                CALL WRITEDIAGFI(ngrid,'rhobarz', &
    677                 'rhobarz','',3,rhobarz(:,:))
    678                CALL WRITEDIAGFI(ngrid,'zlwmax', &
    679                 'zlwmax','',2,zlaywmax(:))
    680                CALL WRITEDIAGFI(ngrid,'coefdetrain', &
    681                 'coefdetrain','',3,coefdetrain(:,:))
    682                CALL WRITEDIAGFI(ngrid,'detrain_rate', &
     645               CALL write_output('wup_top', &
     646                'wup_top','',wup(:,:))
     647               CALL write_output('wlwmax_top', &
     648                'wlwmax_top','',wup(:,lwmax(1)))
     649               CALL write_output('w0_top', &
     650                'w0_top','',wup(:,lsummit(1)+1))
     651               CALL write_output('wup2_top', &
     652                'wup2_top','',wup2(:,:))
     653               CALL write_output('wrad_top', &
     654                'wrad_top','',wrad(:,:))
     655               CALL write_output('wfin_top', &
     656                'wfin_top','',wfin(:,:))
     657               CALL write_output('hmons', &
     658                'hmons','',hmons(:))
     659               CALL write_output('hsummit', &
     660                'hsummit','',hsummit(:))
     661               CALL write_output('alpha_hmons', &
     662                'alpha_hmons','',alpha_hmons(:))
     663               CALL write_output('zt_top', &
     664                'zt_top','',t_top(:,:))
     665               CALL write_output('dt_top', &
     666                'dt_top','',dt_top(:))
     667               CALL write_output('ztemp', &
     668                'envtemp','',zt(:,:))
     669               CALL write_output('zt_env', &
     670                't_env','',t_env(:,:))
     671               CALL write_output('zdtvert_top', &
     672                'zdtvert_top','',zdtvert(:,:))
     673               CALL write_output('newzt_top', &
     674                'newzt_top','',newzt(:,:))
     675               CALL write_output('deltahr_top', &
     676                'deltahr_top','',deltahr(:,:))
     677               CALL write_output('rhobarz', &
     678                'rhobarz','',rhobarz(:,:))
     679               CALL write_output('zlwmax', &
     680                'zlwmax','',zlaywmax(:))
     681               CALL write_output('coefdetrain', &
     682                'coefdetrain','',coefdetrain(:,:))
     683               CALL write_output('detrain_rate', &
    683684                              'detrain_rate', &
    684                               '',3,detrain_rate(:,:))
    685                CALL WRITEDIAGFI(ngrid,'rholev', &
    686                 'rholev','',3,rho(:,:))
    687                CALL WRITEDIAGFI(ngrid,'zlsummit', &
    688                 'zlsummit','',2,pzlay(:,lsummit(1)))
    689                CALL WRITEDIAGFI(ngrid,'pzlev_top', &
    690                 'pzlev_top','',3,pzlev(:,:))
    691                CALL WRITEDIAGFI(ngrid,'entr', &
    692                 'entr','',2,entr(:))
     685                              '',detrain_rate(:,:))
     686               CALL write_output('rholev', &
     687                'rholev','',rho(:,:))
     688               CALL write_output('zlsummit', &
     689                'zlsummit','',pzlay(:,lsummit(1)))
     690               CALL write_output('pzlev_top', &
     691                'pzlev_top','',pzlev(:,:))
     692               CALL write_output('entr', &
     693                'entr','',entr(:))
    693694       
    694695        END SUBROUTINE topmons
  • trunk/LMDZ.MARS/libf/phymars/vdifc_mod.F

    r2840 r2932  
    2828c      use geometry_mod, only: longitude_deg,latitude_deg !  Joseph
    2929      use dust_param_mod, only: doubleq, submicron, lifting
     30      use write_output_mod, only: write_output
    3031
    3132      IMPLICIT NONE
     
    395396! Some usefull diagnostics for the new surface layer parametrization :
    396397
    397 !        call WRITEDIAGFI(ngrid,'vdifc_zcdv_true',
     398!        call write_output('vdifc_zcdv_true',
    398399!     &              'momentum drag','no units',
    399 !     &                         2,zcdv_true)
    400 !        call WRITEDIAGFI(ngrid,'vdifc_zcdh_true',
     400!     &                         zcdv_true(:))
     401!        call write_output('vdifc_zcdh_true',
    401402!     &              'heat drag','no units',
    402 !     &                         2,zcdh_true)
    403 !        call WRITEDIAGFI(ngrid,'vdifc_ust',
    404 !     &              'friction velocity','m/s',2,ust)
    405 !       call WRITEDIAGFI(ngrid,'vdifc_tst',
    406 !     &              'friction temperature','K',2,tst)
    407 !        call WRITEDIAGFI(ngrid,'vdifc_zcdv',
     403!     &                         zcdh_true(:))
     404!        call write_output('vdifc_ust',
     405!     &              'friction velocity','m/s',ust(:))
     406!       call write_output('vdifc_tst',
     407!     &              'friction temperature','K',tst(:))
     408!        call write_output('vdifc_zcdv',
    408409!     &              'aerodyn momentum conductance','m/s',
    409 !     &                         2,zcdv)
    410 !        call WRITEDIAGFI(ngrid,'vdifc_zcdh',
     410!     &                         zcdv(:))
     411!        call write_output('vdifc_zcdh',
    411412!     &              'aerodyn heat conductance','m/s',
    412 !     &                         2,zcdh)
     413!     &                         zcdh(:))
    413414
    414415c    ** schema de diffusion turbulente dans la couche limite
     
    10571058c --------- end of tracers  ----------------------------
    10581059
    1059          call WRITEDIAGFI(ngrid,"surf_h2o_lh",
     1060         call write_output("surf_h2o_lh",
    10601061     &                          "Ground ice latent heat flux",
    1061      &                               "W.m-2",2,surf_h2o_lh(:))
     1062     &                               "W.m-2",surf_h2o_lh(:))
    10621063
    10631064C       Diagnostic output for HDO
    10641065        if (hdo) then
    1065             CALL WRITEDIAGFI(ngrid,'hdoflux',
     1066            CALL write_output('hdoflux',
    10661067     &                       'hdoflux',
    1067      &                       ' ',2,hdoflux
    1068             CALL WRITEDIAGFI(ngrid,'h2oflux',
     1068     &                       ' ',hdoflux(:)
     1069            CALL write_output('h2oflux',
    10691070     &                       'h2oflux',
    1070      &                       ' ',2,h2oflux)
     1071     &                       ' ',h2oflux(:))
    10711072        endif
    10721073
  • trunk/LMDZ.MARS/libf/phymars/watercloud_mod.F

    r2801 r2932  
    2727     &                      qperemin
    2828      use dimradmars_mod, only: naerkind
     29      use write_output_mod, only: write_output
    2930      IMPLICIT NONE
    3031
     
    268269     &                           cloudfrac(:,:)
    269270      !! CLFvarying outputs
    270       CALL WRITEDIAGFI(ngrid,'pqeffice','pqeffice',
    271      &             'kg/kg',3,pqeff(:,:,igcm_h2o_ice))
    272       CALL WRITEDIAGFI(ngrid,'pteff','pteff',
    273      &             'K',3,pteff(:,:))
    274       CALL WRITEDIAGFI(ngrid,'tcond','tcond',
    275      &             'K',3,tcond(:,:))
    276       CALL WRITEDIAGFI(ngrid,'cloudfrac','cloudfrac',
    277      &             'K',3,cloudfrac(:,:))
     271      CALL write_output('pqeffice','pqeffice',
     272     &             'kg/kg',pqeff(:,:,igcm_h2o_ice))
     273      CALL write_output('pteff','pteff',
     274     &             'K',pteff(:,:))
     275      CALL write_output('tcond','tcond',
     276     &             'K',tcond(:,:))
     277      CALL write_output('cloudfrac','cloudfrac',
     278     &             'K',cloudfrac(:,:))
    278279      END IF ! end if (CLFvarying)
    279280c------------------------------------------------------------------
     
    713714#ifndef MESOSCALE
    714715c=======================================================================
    715       call WRITEDIAGFI(ngrid,"pdqice2","pdqcloudice apres microphysique"
    716      &      ,"kg/kg.s-1",3,pdqcloud(1:ngrid,1:nlay,igcm_h2o_ice))
    717       call WRITEDIAGFI(ngrid,"pdqvap2","pdqcloudvap apres microphysique"
    718      &      ,"kg/kg.s-1",3,pdqcloud(1:ngrid,1:nlay,
     716      call write_output("pdqice2","pdqcloudice apres microphysique"
     717     &      ,"kg/kg.s-1",pdqcloud(:,:,igcm_h2o_ice))
     718      call write_output("pdqvap2","pdqcloudvap apres microphysique"
     719     &      ,"kg/kg.s-1",pdqcloud(:,:,
    719720     &      igcm_h2o_vap))
    720721      if (hdo) then
    721       call WRITEDIAGFI(ngrid,"pdqiceD","pdqiceD apres microphysique"
    722      &      ,"kg/kg.s-1",3,pdqcloud(1:ngrid,1:nlay,igcm_hdo_ice))
    723       call WRITEDIAGFI(ngrid,"pdqvapD","pdqvapD apres microphysique"
    724      &      ,"kg/kg.s-1",3,pdqcloud(1:ngrid,1:nlay,
     722      call write_output("pdqiceD","pdqiceD apres microphysique"
     723     &      ,"kg/kg.s-1",pdqcloud(:,:,igcm_hdo_ice))
     724      call write_output("pdqvapD","pdqvapD apres microphysique"
     725     &      ,"kg/kg.s-1",pdqcloud(:,:,
    725726     &      igcm_hdo_vap))
    726727      endif
    727       call WRITEDIAGFI(ngrid,"pdqccn2","pdqcloudccn apres microphysique"
    728      &      ,"kg/kg.s-1",3,pdqcloud(1:ngrid,1:nlay,
     728      call write_output("pdqccn2","pdqcloudccn apres microphysique"
     729     &      ,"kg/kg.s-1",pdqcloud(:,:,
    729730     &      igcm_ccn_mass))
    730       call WRITEDIAGFI(ngrid,"pdqccnN2","pdqcloudccnN apres "//
    731      &      "microphysique","nb/kg.s-1",3,pdqcloud(1:ngrid,1:nlay,
     731      call write_output("pdqccnN2","pdqcloudccnN apres "//
     732     &      "microphysique","nb/kg.s-1",pdqcloud(:,:,
    732733     &      igcm_ccn_number))
    733       call WRITEDIAGFI(ngrid,"pdqdust2", "pdqclouddust apres "//
    734      &      "microphysique","kg/kg.s-1",3,pdqcloud(1:ngrid,1:nlay,
     734      call write_output("pdqdust2", "pdqclouddust apres "//
     735     &      "microphysique","kg/kg.s-1",pdqcloud(:,:,
    735736     &      igcm_dust_mass))
    736       call WRITEDIAGFI(ngrid,"pdqdustN2", "pdqclouddustN apres "//
    737      &      "microphysique","nb/kg.s-1",3,pdqcloud(1:ngrid,1:nlay,
     737      call write_output("pdqdustN2", "pdqclouddustN apres "//
     738     &      "microphysique","nb/kg.s-1",pdqcloud(:,:,
    738739     &      igcm_dust_number))
    739740c=======================================================================
Note: See TracChangeset for help on using the changeset viewer.