Changeset 2932 for trunk/LMDZ.MARS/libf
- Timestamp:
- Apr 3, 2023, 6:17:05 PM (20 months ago)
- Location:
- trunk/LMDZ.MARS/libf/phymars
- Files:
-
- 1 added
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/aeroptproperties.F
r2584 r2932 8 8 & QIRsQREF, omegaIR, gIR, QREFvis, QREFir, 9 9 & omegaREFvis, omegaREFir 10 use write_output_mod, only: write_output 10 11 IMPLICIT NONE 11 12 c ============================================================= … … 216 217 217 218 INTEGER, PARAMETER :: out_iaer = 2 218 INTEGER :: out_ndim219 219 REAL :: out_qext(ngrid,nlayer) 220 220 REAL :: out_omeg(ngrid,nlayer) … … 1291 1291 IF (out_qwg) THEN 1292 1292 c ------------------------------------------------------------- 1293 IF (ngrid.NE.1) THEN1294 out_ndim = 31295 ELSE1296 out_ndim = 11297 ENDIF1298 c -------------------------------------------------------------1299 1293 DO out_nchannel = 1, 2 1300 1294 c ------------------------------------------------------------- … … 1311 1305 #ifndef MESOSCALE 1312 1306 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(:,:)) 1319 1313 #endif 1320 1314 c ------------------------------------------------------------- … … 1334 1328 #ifndef MESOSCALE 1335 1329 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(:,:)) 1342 1336 #endif 1343 1337 c ------------------------------------------------------------- 1344 1338 ENDDO ! out_nchannel 1345 1339 #ifndef MESOSCALE 1346 call WRITEDIAGFI(ngrid,"omegvisref","Sing.Scat.Alb.","",1347 & o ut_ndim,omegaREFvis3d(1,1,out_iaer))1348 call WRITEDIAGFI(ngrid,"omegirref","Sing.Scat.Alb.","",1349 & o ut_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)) 1350 1344 #endif 1351 1345 ENDIF ! out_qwg -
trunk/LMDZ.MARS/libf/phymars/co2cloud.F90
r2826 r2932 108 108 109 109 use improvedCO2clouds_mod, only: improvedCO2clouds 110 110 use write_output_mod, only: write_output 111 111 #ifndef MESOSCALE 112 112 use vertical_layers_mod, only: ap, bp … … 494 494 495 495 ! 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(:)) 499 499 !------------------------------------------------------------------------------------------------------------------! 500 500 ! if saturation index co2 is false, set saturation index to 0.05 … … 1184 1184 ! 11. Write outputs in diagfi.nc 1185 1185 !----------------------------------------------------------------------------------------------------------------------! 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 write diagfi(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(:)) 1199 1199 1200 1200 if (CLFvaryingCO2) then 1201 call WRITEDIAGFI(ngrid, "co2cloudfrac", "co2 cloud fraction", " ", 3, co2cloudfrac)1201 call write_output( "co2cloudfrac", "co2 cloud fraction", " ", co2cloudfrac(:,:)) 1202 1202 end if 1203 1203 !======================================================================================================================! -
trunk/LMDZ.MARS/libf/phymars/co2condens_mod.F
r2903 r2932 30 30 use comcstfi_h, only: cpp, g, r, pi 31 31 use dust_param_mod, only: freedust 32 32 use write_output_mod, only: write_output 33 33 #ifndef MESOSCALE 34 34 USE vertical_layers_mod, ONLY: ap, bp … … 332 332 & rdust,zcondicea,zfallice,zdq_scav,pdqsc) 333 333 endif 334 call WRITEdiagfi(ngrid,"zfallice",334 call write_output("zfallice", 335 335 & "", 336 & " ", 2,zfallice(ngrid,1))336 & " ",zfallice(:,1)) 337 337 ELSE ! if co2 clouds 338 338 condens_layer(:,:) = 0. … … 349 349 piceco2(ig) = piceco2(ig) + zdqssed_co2(ig)*ptimestep 350 350 ENDDO 351 call WRITEdiagfi(ngrid,"zfallice",351 call write_output("zfallice", 352 352 & "", 353 & " ", 2,zdqssed_co2) ! otherwise we have not 1 day(1proc) = 1 day (24procs) test353 & " ",zdqssed_co2(:)) ! otherwise we have not 1 day(1proc) = 1 day (24procs) test 354 354 ENDIF ! end of if co2clouds 355 355 356 call WRITEdiagfi(ngrid,"pdtc_atm",356 call write_output("pdtc_atm", 357 357 & "temperature tendency due to CO2 condensation", 358 & " ", 3,pdtc)358 & " ",pdtc(:,:)) 359 359 360 call WRITEdiagfi(ngrid,"condens_layer",360 call write_output("condens_layer", 361 361 & "", 362 & " ", 3,condens_layer)362 & " ",condens_layer(:,:)) 363 363 364 364 c ************************* … … 716 716 c END DO 717 717 c END DO 718 c call WRITEDIAGFI(ngrid,'tconda1',718 c call write_output('tconda1', 719 719 c &'Taux de condensation CO2 atmospherique /Pa', 720 c & 'kg.m-2.Pa-1.s-1', 3,tconda1)721 c call WRITEDIAGFI(ngrid,'tconda2',720 c & 'kg.m-2.Pa-1.s-1',tconda1) 721 c call write_output('tconda2', 722 722 c &'Taux de condensation CO2 atmospherique /m', 723 c & 'kg.m-3.s-1', 3,tconda2)723 c & 'kg.m-3.s-1',tconda2) 724 724 725 725 ! output falling co2 ice in 1st layer: 726 ! call WRITEDIAGFI(ngrid,'fallice',726 ! call write_output('fallice', 727 727 ! &'Precipitation of co2 ice', 728 ! & 'kg.m-2.s-1', 2,zfallice(1,1))728 ! & 'kg.m-2.s-1',zfallice(1,1)) 729 729 730 730 #ifndef MESOSCALE -
trunk/LMDZ.MARS/libf/phymars/compute_dtau_mod.F90
r2643 r2932 25 25 USE dust_param_mod, only: odpref, t_scenario_sol 26 26 USE read_dust_scenario_mod, only: read_dust_scenario 27 use write_output_mod, only: write_output 27 28 28 29 IMPLICIT NONE … … 80 81 endif 81 82 ! for diagnostics 82 call WRITEDIAGFI(ngrid,"tau_pref_target", &83 call write_output("tau_pref_target", & 83 84 "target visible dust opacity column at 610Pa", & 84 "", 2,tau_pref_target)85 "",tau_pref_target(:)) 85 86 86 87 ! 2. Compute dtau() and dustliftday() … … 102 103 103 104 ! 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(:)) 108 109 109 110 ! 4. Save local time -
trunk/LMDZ.MARS/libf/phymars/dustdevil.F
r2608 r2932 233 233 c end do 234 234 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)235 c call write_output('dqs_dev','dqs devil', 236 c & 'kg.m-2.s-1',pdqs_dev) 237 c call write_output('wind','wind', 238 c & 'm.s-1',magwind) 239 c call write_output('ztop','top pbl', 240 c & 'km',ztop) 241 c call write_output('tsurf','tsurf', 242 c & 'K',ptsurf) 243 c call write_output('T1','T(1)', 244 c & 'K',t1) 245 c call write_output('b','b', 246 c & ' ',b_diag) 247 247 c END If 248 248 c ********************************************************* -
trunk/LMDZ.MARS/libf/phymars/dyn1d/testphys1d.F
r2926 r2932 41 41 & nf90_strerror 42 42 use iostart, only: open_startphy,get_var, close_startphy 43 use write_output_mod, only: write_output 43 44 IMPLICIT NONE 44 45 … … 852 853 ENDIF !((iq.eq.igcm_h2o_vap).and.(atm_wat_profile.eq.2)) THEN 853 854 ENDDO 854 CALL WRITEDIAGFI(ngrid,'qsat',855 CALL write_output('qsat', 855 856 & 'qsat', 856 & 'kg/kg', 1,zqsat)857 & 'kg/kg',zqsat(:)) 857 858 858 859 -
trunk/LMDZ.MARS/libf/phymars/hdo_surfex_mod.F
r2593 r2932 16 16 use geometry_mod, only: longitude_deg,latitude_deg 17 17 use comcstfi_h, only: pi 18 use write_output_mod, only: write_output 18 19 19 20 implicit none … … 155 156 ENDDO ! of DO ig=1,ngrid 156 157 157 c CALL WRITEDIAGFI(ngrid,'extrasublim',158 c CALL write_output('extrasublim', 158 159 c & 'extrasublimation', 159 c & ' ', 2,tmpratio)160 c CALL WRITEDIAGFI(ngrid,'alpha_c_s',160 c & ' ',tmpratio) 161 c CALL write_output('alpha_c_s', 161 162 c & 'alpha_c_s', 162 c & ' ', 2,alpha_c)163 c & ' ',alpha_c) 163 164 164 165 return -
trunk/LMDZ.MARS/libf/phymars/improvedclouds_mod.F
r2801 r2932 19 19 use conc_mod, only: mmean 20 20 use comcstfi_h, only: pi, cpp 21 use write_output_mod, only: write_output 21 22 implicit none 22 23 … … 540 541 #ifndef MESOSCALE 541 542 ! IF (ngrid.ne.1) THEN ! 3D 542 ! call WRITEDIAGFI(ngrid,"satu","ratio saturation","",3,543 ! call write_output("satu","ratio saturation","", 543 544 ! & satu_out) 544 ! call WRITEDIAGFI(ngrid,"dM","ccn variation","kg/kg",3,545 ! call write_output("dM","ccn variation","kg/kg", 545 546 ! & dM_out) 546 ! call WRITEDIAGFI(ngrid,"dN","ccn variation","#",3,547 ! call write_output("dN","ccn variation","#", 547 548 ! & dN_out) 548 ! call WRITEDIAGFI(ngrid,"error","dichotomy max error","%",2,549 ! call write_output("error","dichotomy max error","%", 549 550 ! & error2d) 550 ! call WRITEDIAGFI(ngrid,"zqsat","zqsat","kg",3,551 ! call write_output("zqsat","zqsat","kg", 551 552 ! & zqsat) 552 553 ! ENDIF 553 554 554 555 ! IF (ngrid.eq.1) THEN ! 1D 555 ! call WRITEDIAGFI(ngrid,"error","incertitude sur glace","%",1,556 ! call write_output("error","incertitude sur glace","%", 556 557 ! & 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)) 576 c call write_output("growthrate","growth rate","m^2/s", 576 577 c & gr_out) 577 c call WRITEDIAGFI(ngrid,"nuclearate","nucleation rate","",1,578 c call write_output("nuclearate","nucleation rate","", 578 579 c & rate_out) 579 c call WRITEDIAGFI(ngrid,"dM","ccn variation","kg",1,580 c call write_output("dM","ccn variation","kg", 580 581 c & dM_out) 581 c call WRITEDIAGFI(ngrid,"dN","ccn variation","#",1,582 c call write_output("dN","ccn variation","#", 582 583 c & 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", 590 591 ! & rdust) 591 ! call WRITEDIAGFI(ngrid,"rsedcloud","rsedcloud","m",1,592 ! call write_output("rsedcloud","rsedcloud","m", 592 593 ! & rsedcloud) 593 ! call WRITEDIAGFI(ngrid,"rhocloud","rhocloud","kg.m-3",1,594 ! call write_output("rhocloud","rhocloud","kg.m-3", 594 595 ! & rhocloud) 595 596 ! ENDIF -
trunk/LMDZ.MARS/libf/phymars/nonoro_gwd_ran_mod.F90
r2682 r2932 47 47 use vertical_layers_mod, only : presnivs 48 48 use geometry_mod, only: cell_area 49 use write_output_mod, only: write_output 49 50 #ifdef CPP_XIOS 50 51 use xios_output_mod, only: send_xios_field … … 222 223 PH(:, 1) = 2. * PP(:, 1) - PH(:, 2) 223 224 224 call write diagfi(ngrid,'nonoro_pp','nonoro_pp', 'm',3,PP(:,1:nlayer))225 call write diagfi(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(:,:)) 226 227 227 228 ! Launching level for reproductible case … … 250 251 ZH(:, 1) = H0 * LOG(PR / (PH(:, 1) + PSEC)) 251 252 252 call write diagfi(ngrid,'nonoro_zh','nonoro_zh', 'm',3,ZH(:,2:nlayer+1))253 call write_output('nonoro_zh','nonoro_zh', 'm',ZH(:,2:nlayer+1)) 253 254 254 255 ! Winds and Brunt Vaisala frequency … … 275 276 MAX_K(II)=MAX(kmin,kstar) 276 277 ENDDO 277 call write diagfi(ngrid,'nonoro_bv','nonoro_bv', 'm',3,BV(:,2:nlayer+1))278 call write_output('nonoro_bv','nonoro_bv', 'm',BV(:,2:nlayer+1)) 278 279 279 280 !----------------------------------------------------------------------------------------------------------------------- … … 444 445 ! (upward) that should be compensated by circulation 445 446 ! and induce additional friction at the surface 446 call write diagfi(ngrid,'nonoro_u_epflux_tot','nonoro_u_epflux_tot', '',3,u_epflux_tot(:,2:nlayer+1))447 call write diagfi(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)) 448 449 449 450 ! 5.2 AR-1 RECURSIVE FORMULA (13) IN VERSION 4 … … 457 458 ENDDO 458 459 d_t(:,:) = 0. 459 call write diagfi(ngrid,'nonoro_d_u','nonoro_d_u', '',3,d_u)460 call write diagfi(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(:,:)) 461 462 462 463 ! 5.3 Update tendency of wind with the previous (and saved) values … … 469 470 dv_nonoro_gwd(:,:) = d_v(:,:) 470 471 471 call write diagfi(ngrid,'du_nonoro_gwd','du_nonoro_gwd', '',3,du_nonoro_gwd)472 call write diagfi(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(:,:)) 473 474 474 475 ! Cosmetic: evaluation of the cumulated stress -
trunk/LMDZ.MARS/libf/phymars/pbl_parameters.F
r2586 r2932 3 3 & T_out,u_out,ustar,tstar,L_mo,vhf,vvv) 4 4 USE comcstfi_h 5 use write_output_mod, only: write_output 5 6 IMPLICIT NONE 6 7 !======================================================================= … … 361 362 362 363 #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)) 382 383 #endif 383 384 -
trunk/LMDZ.MARS/libf/phymars/physiq_mod.F
r2931 r2932 90 90 use phyetat0_mod, only: phyetat0, tab_cntrl_mod 91 91 use wstats_mod, only: callstats, wstats, mkstats 92 use writediagsoil_mod, only: writediagsoil93 92 use eofdump_mod, only: eofdump 94 93 USE vertical_layers_mod, ONLY: ap,bp,aps,bps,presnivs,pseudoalt … … 110 109 & ini_comslope_h 111 110 USE ioipsl_getincom, only: getin 111 use write_output_mod, only: write_output 112 112 IMPLICIT NONE 113 113 c======================================================================= … … 1303 1303 enddo 1304 1304 enddo 1305 call write diagfi(ngrid,'qdustrds0','qdust before rds',1306 & 'kg/kg ', 3,qdustrds0)1307 call write diagfi(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(:,:)) 1309 1309 1310 1310 CALL rocketduststorm(ngrid,nlayer,nq,ptime,ptimestep, … … 1355 1355 1356 1356 c for diagnostics 1357 call write diagfi(ngrid,'qdustrds1','qdust after rds',1358 & 'kg/kg ', 3,qdustrds1)1359 call write diagfi(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(:,:)) 1361 1361 1362 call write diagfi(ngrid,'qdusttotal0','q sum before rds',1363 & 'kg/m2 ', 2,qdusttotal0)1364 call write diagfi(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(:)) 1366 1366 1367 1367 ENDIF ! end of if(rdstorm) … … 2514 2514 DO n=1,n_out 2515 2515 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)) 2520 2520 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) 2529 2529 #else 2530 2530 T_out1(:)=T_out(:,1) … … 3005 3005 $ .or. (noms(iq).eq."o2") 3006 3006 $ .or. (noms(iq).eq."h2o_vap") ) then 3007 call write diagfi(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(:,:)) 3009 3009 end if 3010 3010 … … 3017 3017 call wstats(ngrid,"num_"//trim(noms(iq)), 3018 3018 $ "Number density","cm-3",3,rhopart) 3019 call write diagfi(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(:,:)) 3021 3021 3022 3022 ! vertical column (molecule.cm-2) … … 3035 3035 call wstats(ngrid,"c_"//trim(noms(iq)), 3036 3036 $ "column","mol cm-2",2,colden(1,iq)) 3037 call write diagfi(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)) 3039 3039 3040 3040 ! global mass (g) … … 3043 3043 $ *mmol(iq)*1.e4*cell_area(:),mass(iq)) 3044 3044 3045 call write diagfi(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)) 3047 3047 3048 3048 end if ! of if (noms(iq) .ne. "dust_mass" ...) … … 3133 3133 c WRITEDIAGFI can ALSO be called from any other subroutines 3134 3134 c for any variables !! 3135 call WRITEDIAGFI(ngrid,"emis","Surface emissivity","w.m-1",2,3135 call write_output("emis","Surface emissivity","w.m-1", 3136 3136 & emis(:,iflat)) 3137 3137 do islope=1,nslope 3138 3138 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)) 3141 3141 ENDDO 3142 call WRITEDIAGFI(ngrid,"zzlev","Interlayer altitude",3143 & "m", 3,zzlev(:,1:nlayer))3144 call write diagfi(ngrid,"pphi","Geopotential","m2s-2",3,3145 & pphi )3146 call write diagfi(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", 3149 3149 & tsurf(:,iflat)) 3150 3150 do islope=1,nslope 3151 3151 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", 3154 3154 & tsurf(:,islope)) 3155 3155 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)) 3159 3159 do islope=1,nslope 3160 3160 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)) 3163 3163 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)) 3166 3166 do islope=1,nslope 3167 3167 write(str2(1:2),'(i2.2)') islope 3168 call WRITEDIAGFI(ngrid,"watercap_slope"//str2,3168 call write_output("watercap_slope"//str2, 3169 3169 & "Water ice thickness" 3170 & ,"kg.m-2", 2,watercap(:,islope))3170 & ,"kg.m-2",watercap(:,islope)) 3171 3171 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", 3177 3177 & fluxsurf_lw(:,iflat)) 3178 3178 do islope=1,nslope 3179 3179 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", 3182 3182 & fluxsurf_lw(:,islope)) 3183 3183 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)) 3186 3186 do islope=1,nslope 3187 3187 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, 3189 3189 & "fluxsurf_dn_sw", 3190 & "W.m-2", 2,fluxsurf_dn_sw_tot(:,islope))3190 & "W.m-2",fluxsurf_dn_sw_tot(:,islope)) 3191 3191 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 write diagfi(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(:)) 3212 3212 if (.not.activice) then 3213 CALL WRITEDIAGFI(ngrid,'tauTESap',3213 CALL write_output('tauTESap', 3214 3214 & 'tau abs 825 cm-1', 3215 & '', 2,tauTES)3215 & '',tauTES(:)) 3216 3216 else 3217 CALL WRITEDIAGFI(ngrid,'tauTES',3217 CALL write_output('tauTES', 3218 3218 & 'tau abs 825 cm-1', 3219 & '', 2,taucloudtes)3219 & '',taucloudtes(:)) 3220 3220 endif 3221 3221 #else 3222 3222 !!! 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", 3224 3224 & 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", 3227 3227 & 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(:,:)) 3237 3237 #endif 3238 3238 … … 3242 3242 3243 3243 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)) 3246 3246 3247 3247 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(:)) 3265 3263 if (co2useh2o) then 3266 call WRITEDIAGFI(ngrid,'ccnqco2_h2o_m_ice',3264 call write_output('ccnqco2_h2o_m_ice', 3267 3265 & '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', 3271 3269 & '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)) 3276 3274 end if 3277 3275 3278 3276 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)) 3284 3282 end if 3285 3283 … … 3289 3287 ! Output He tracer, if there is one 3290 3288 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)) 3293 3291 vmr = zq(1:ngrid,1:nlayer,igcm_he) 3294 3292 & * 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(:,:)) 3297 3295 end if 3298 3296 … … 3303 3301 #ifdef MESOINI 3304 3302 !!!! 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)) 3308 3306 !!!! 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)) 3312 3310 !!!! 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)) 3316 3314 do islope=1,nslope 3317 3315 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)) 3321 3319 ENDDO 3322 3320 #endif 3323 call WRITEDIAGFI(ngrid,'mtot',3321 call write_output('mtot', 3324 3322 & 'total mass of water vapor', 3325 & 'kg/m2', 2,mtot)3326 call WRITEDIAGFI(ngrid,'icetot',3323 & 'kg/m2',mtot(:)) 3324 call write_output('icetot', 3327 3325 & 'total mass of water ice', 3328 & 'kg/m2', 2,icetot)3326 & 'kg/m2',icetot(:)) 3329 3327 vmr = zq(1:ngrid,1:nlayer,igcm_h2o_ice) 3330 3328 & * 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(:,:)) 3333 3331 vmr = zq(1:ngrid,1:nlayer,igcm_h2o_vap) 3334 3332 & * 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', 3338 3336 & '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)) 3344 3342 3345 3343 if (hdo) then 3346 3344 vmr=zq(1:ngrid,1:nlayer,igcm_hdo_ice) 3347 3345 & *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(:,:)) 3350 3348 vmr=zq(1:ngrid,1:nlayer,igcm_hdo_vap) 3351 3349 & *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', 3360 3358 & 'total mass of HDO vapor', 3361 & 'kg/m2', 2,mtotD)3362 CALL WRITEDIAGFI(ngrid,'icetotD',3359 & 'kg/m2',mtotD(:)) 3360 CALL write_output('icetotD', 3363 3361 & 'total mass of HDO ice', 3364 & 'kg/m2', 2,icetotD)3362 & 'kg/m2',icetotD(:)) 3365 3363 3366 3364 C Calculation of the D/H ratio … … 3387 3385 enddo 3388 3386 3389 CALL WRITEDIAGFI(ngrid,'DoH_vap',3387 CALL write_output('DoH_vap', 3390 3388 & 'D/H ratio in vapor', 3391 & ' ', 3,DoH_vap)3392 CALL WRITEDIAGFI(ngrid,'DoH_ice',3389 & ' ',DoH_vap(:,:)) 3390 CALL write_output('DoH_ice', 3393 3391 & 'D/H ratio in ice', 3394 & '', 3,DoH_ice)3392 & '',DoH_ice(:,:)) 3395 3393 3396 3394 endif !hdo 3397 3395 3398 3396 !A. Pottier 3399 CALL WRITEDIAGFI(ngrid,'rmoym',3397 CALL write_output('rmoym', 3400 3398 & '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(:,:)) 3404 3402 if (scavenging) then 3405 CALL WRITEDIAGFI(ngrid,"Nccntot",3403 CALL write_output("Nccntot", 3406 3404 & "condensation nuclei","Nbr/m2", 3407 & 2,Nccntot)3408 CALL WRITEDIAGFI(ngrid,"Mccntot",3405 & Nccntot(:)) 3406 CALL write_output("Mccntot", 3409 3407 & "mass condensation nuclei","kg/m2", 3410 & 2,Mccntot)3408 & Mccntot(:)) 3411 3409 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', 3415 3413 & 'surface h2o_ice', 3416 & 'kg.m-2', 2,qsurf(1,igcm_h2o_ice,iflat))3414 & 'kg.m-2',qsurf(:,igcm_h2o_ice,iflat)) 3417 3415 do islope=1,nslope 3418 3416 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, 3420 3418 & 'surface h2o_ice', 3421 & 'kg.m-2', 2,qsurf(1,igcm_h2o_ice,islope))3419 & 'kg.m-2',qsurf(:,igcm_h2o_ice,islope)) 3422 3420 ENDDO 3423 3421 if (hdo) then 3424 call WRITEDIAGFI(ngrid,'hdo_ice_s',3422 call write_output('hdo_ice_s', 3425 3423 & 'surface hdo_ice', 3426 & 'kg.m-2', 2,qsurf(1,igcm_hdo_ice,iflat))3424 & 'kg.m-2',qsurf(:,igcm_hdo_ice,iflat)) 3427 3425 do islope=1,nslope 3428 3426 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, 3430 3428 & 'surface hdo_ice', 3431 & 'kg.m-2', 2,qsurf(1,igcm_hdo_ice,islope))3429 & 'kg.m-2',qsurf(:,igcm_hdo_ice,islope)) 3432 3430 ENDDO 3433 3431 … … 3441 3439 enddo 3442 3440 3443 call WRITEDIAGFI(ngrid,'DoH_surf',3441 call write_output('DoH_surf', 3444 3442 & 'surface D/H', 3445 & '', 2,DoH_surf)3443 & '',DoH_surf(:)) 3446 3444 endif ! hdo 3447 3445 3448 CALL WRITEDIAGFI(ngrid,'albedo',3446 CALL write_output('albedo', 3449 3447 & 'albedo', 3450 & '', 2,albedo(1,1,iflat))3448 & '',albedo(:,1,iflat)) 3451 3449 do islope=1,nslope 3452 3450 write(str2(1:2),'(i2.2)') islope 3453 CALL WRITEDIAGFI(ngrid,'albedo_slope'//str2,3451 CALL write_output('albedo_slope'//str2, 3454 3452 & 'albedo', 3455 & '', 2,albedo(1,1,islope))3453 & '',albedo(:,1,islope)) 3456 3454 ENDDO 3457 3455 if (tifeedback) then 3458 call WRITEDIAGSOIL(ngrid,"soiltemp",3456 call write_output("soiltemp", 3459 3457 & "Soil temperature","K", 3460 & 3,tsoil)3461 call WRITEDIAGSOIL(ngrid,'soilti',3458 & tsoil(:,:,iflat)) 3459 call write_output('soilti', 3462 3460 & '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)) 3464 3462 do islope=1,nslope 3465 3463 write(str2(1:2),'(i2.2)') islope 3466 call WRITEDIAGSOIL(ngrid,'soilti_slope'//str2,3464 call write_output('soilti_slope'//str2, 3467 3465 & '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)) 3469 3467 ENDDO 3470 3468 endif 3471 3469 !A. Pottier 3472 3470 if (CLFvarying) then !AP14 nebulosity 3473 call WRITEDIAGFI(ngrid,'totcloudfrac',3471 call write_output('totcloudfrac', 3474 3472 & 'Total cloud fraction', 3475 & ' ', 2,totcloudfrac)3473 & ' ',totcloudfrac(:)) 3476 3474 end if !clf varying 3477 3475 end if !(water) … … 3481 3479 c ---------------------------------------------------------- 3482 3480 3483 call WRITEDIAGFI(ngrid,'tau_pref_scenario',3481 call write_output('tau_pref_scenario', 3484 3482 & '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', 3488 3486 & 'Visible dust optical depth at 610Pa in the GCM', 3489 & 'NU', 2,tau_pref_gcm)3487 & 'NU',tau_pref_gcm(:)) 3490 3488 3491 3489 if (reff_driven_IRtoVIS_scenario) then 3492 call WRITEDIAGFI(ngrid,'IRtoVIScoef',3490 call write_output('IRtoVIScoef', 3493 3491 & 'conversion coeff for dust tau from abs9.3um to ext0.67um', 3494 & '/', 2,IRtoVIScoef)3492 & '/',IRtoVIScoef(:)) 3495 3493 endif 3496 3494 3497 3495 if (dustbin.ne.0) then 3498 3496 3499 call WRITEDIAGFI(ngrid,'tau','taudust','SI',2,tau(1,1))3497 call write_output('tau','taudust','SI',tau(:,1)) 3500 3498 3501 3499 #ifndef MESOINI 3502 3500 if (doubleq) then 3503 call WRITEDIAGFI(ngrid,'dqsdust',3501 call write_output('dqsdust', 3504 3502 & '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', 3507 3505 & '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(:,:)) 3515 3513 3516 3514 select case (trim(dustiropacity)) 3517 3515 case ("tes") 3518 call WRITEDIAGFI(ngrid,'dsodust',3516 call write_output('dsodust', 3519 3517 & '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', 3522 3520 & '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(:,:)) 3524 3522 case ("mcs") 3525 call WRITEDIAGFI(ngrid,'dsodust',3523 call write_output('dsodust', 3526 3524 & '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', 3529 3527 & '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(:,:)) 3531 3529 end select 3532 3530 else ! (doubleq=.false.) 3533 3531 do iq=1,dustbin 3534 3532 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)) 3539 3537 do islope=1,nslope 3540 3538 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)) 3543 3541 ENDDO 3544 3542 end do … … 3546 3544 3547 3545 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', 3551 3549 & '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', 3554 3552 & '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', 3557 3555 & '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", 3566 3564 & "fraction of the mesh, with stormdust","none", 3567 & 2,totstormfract)3568 call WRITEDIAGFI(ngrid,'qsurf',3565 & totstormfract(:)) 3566 call write_output('qsurf', 3569 3567 & 'stormdust injection', 3570 & 'kg.m-2', 2,qsurf(:,igcm_stormdust_mass,iflat))3568 & 'kg.m-2',qsurf(:,igcm_stormdust_mass,iflat)) 3571 3569 do islope=1,nslope 3572 3570 write(str2(1:2),'(i2.2)') islope 3573 call WRITEDIAGFI(ngrid,'qsurf_slope'//str2,3571 call write_output('qsurf_slope'//str2, 3574 3572 & 'stormdust injection', 3575 & 'kg.m-2', 2,qsurf(:,igcm_stormdust_mass,islope))3573 & 'kg.m-2',qsurf(:,igcm_stormdust_mass,islope)) 3576 3574 ENDDO 3577 call WRITEDIAGFI(ngrid,'pdqsurf',3575 call write_output('pdqsurf', 3578 3576 & 'tendancy stormdust mass at surface', 3579 & 'kg.m-2', 2,dqsurf(:,igcm_stormdust_mass,iflat))3577 & 'kg.m-2',dqsurf(:,igcm_stormdust_mass,iflat)) 3580 3578 do islope=1,nslope 3581 3579 write(str2(1:2),'(i2.2)') islope 3582 call WRITEDIAGFI(ngrid,'pdqsurf_slope'//str2,3580 call write_output('pdqsurf_slope'//str2, 3583 3581 & 'tendancy stormdust mass at surface', 3584 & 'kg.m-2', 2,dqsurf(:,igcm_stormdust_mass,islope))3582 & 'kg.m-2',dqsurf(:,igcm_stormdust_mass,islope)) 3585 3583 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', 3590 3588 & 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', 3593 3591 & 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', 3596 3594 & 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', 3599 3597 & 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(:,:)) 3606 3604 3607 3605 select case (trim(dustiropacity)) 3608 3606 case ("tes") 3609 call WRITEDIAGFI(ngrid,'dsords',3607 call write_output('dsords', 3610 3608 & 'density scaled extinction opacity of stormdust at 9.3um(TES)', 3611 & 'm2.kg-1', 3,dsords)3609 & 'm2.kg-1',dsords(:,:)) 3612 3610 case ("mcs") 3613 call WRITEDIAGFI(ngrid,'dsords',3611 call write_output('dsords', 3614 3612 & 'density scaled extinction opacity of stormdust at 21.6um(MCS)', 3615 & 'm2.kg-1', 3,dsords)3613 & 'm2.kg-1',dsords(:,:)) 3616 3614 end select 3617 3615 endif ! (rdstorm) 3618 3616 3619 3617 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)) 3626 3624 select case (trim(dustiropacity)) 3627 3625 case ("tes") 3628 call WRITEDIAGFI(ngrid,'dsotop',3626 call write_output('dsotop', 3629 3627 & 'density scaled extinction opacity of topdust at 9.3um(TES)', 3630 & 'm2.kg-1', 3,dsotop)3628 & 'm2.kg-1',dsotop(:,:)) 3631 3629 case ("mcs") 3632 call WRITEDIAGFI(ngrid,'dsotop',3630 call write_output('dsotop', 3633 3631 & 'density scaled extinction opacity of topdust at 21.6um(MCS)', 3634 & 'm2.kg-1', 3,dsotop)3632 & 'm2.kg-1',dsotop(:,:)) 3635 3633 end select 3636 3634 endif ! (topflows) 3637 3635 3638 3636 if (dustscaling_mode==2) then 3639 call write diagfi(ngrid,"dust_rad_adjust",3637 call write_output("dust_rad_adjust", 3640 3638 & "radiative adjustment coefficient for dust", 3641 & "", 2,dust_rad_adjust)3639 & "",dust_rad_adjust(:)) 3642 3640 endif 3643 3641 3644 3642 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)) 3651 3649 do islope=1,nslope 3652 3650 write(str2(1:2),'(i2.2)') islope 3653 call WRITEDIAGFI(ngrid,'surfccnq_slope'//str2,3651 call write_output('surfccnq_slope'//str2, 3654 3652 & 'Surf nuclei mass mr', 3655 & 'kg.m-2', 2,qsurf(1,igcm_ccn_mass,islope))3653 & 'kg.m-2',qsurf(:,igcm_ccn_mass,islope)) 3656 3654 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)) 3659 3657 do islope=1,nslope 3660 3658 write(str2(1:2),'(i2.2)') islope 3661 call WRITEDIAGFI(ngrid,'surfccnN_slope'//str2,3659 call write_output('surfccnN_slope'//str2, 3662 3660 & 'Surf nuclei number', 3663 & 'kg.m-2', 2,qsurf(1,igcm_ccn_number,islope))3661 & 'kg.m-2',qsurf(:,igcm_ccn_number,islope)) 3664 3662 ENDDO 3665 3663 endif ! (scavenging) … … 3668 3666 ! !!! to initialize mesoscale we need scaled variables 3669 3667 ! !!! 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', 3671 3669 ! & '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', 3673 3671 ! & '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', 3675 3673 ! & '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', 3677 3675 ! & 'part/kg',3,pq(1:ngrid,1:nlayer,igcm_ccn_number)) 3678 3676 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) 3687 3685 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)) 3696 3694 endif 3697 3695 #endif … … 3704 3702 3705 3703 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) 3710 3708 endif !(calllott_nonoro) 3711 3709 … … 3716 3714 if(callthermos) then 3717 3715 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(:,:)) 3726 3724 3727 3725 !H, H2 and D escape fluxes 3728 3726 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) 3735 3733 3736 3734 endif !(callthermos) 3737 3735 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(:,:)) 3742 3740 3743 3741 c ---------------------------------------------------------- … … 3751 3749 c ---------------------------------------------------------- 3752 3750 if (calltherm) then 3753 call WRITEDIAGFI(ngrid,'lmax_th',3751 call write_output('lmax_th', 3754 3752 & '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', 3757 3755 & 'hauteur du thermique','m', 3758 & 2,zmax_th)3759 call WRITEDIAGFI(ngrid,'hfmax_th',3756 & zmax_th(:)) 3757 call write_output('hfmax_th', 3760 3758 & 'maximum TH heat flux','K.m/s', 3761 & 2,hfmax_th)3762 call WRITEDIAGFI(ngrid,'wstar',3759 & hfmax_th(:)) 3760 call write_output('wstar', 3763 3761 & 'maximum TH vertical velocity','m/s', 3764 & 2,wstar)3762 & wstar(:)) 3765 3763 end if 3766 3764 … … 3778 3776 3779 3777 ! Write soil temperature 3780 call write diagsoil(ngrid,"soiltemp","Soil temperature","K",3781 & 3,tsoil(:,:,iflat))3778 call write_output("soiltemp","Soil temperature","K", 3779 & tsoil(:,:,iflat)) 3782 3780 do islope=1,nslope 3783 3781 write(str2(1:2),'(i2.2)') islope 3784 call write diagsoil(ngrid,"soiltemp_slope"//str2,3782 call write_output("soiltemp_slope"//str2, 3785 3783 & "Soil temperature","K", 3786 & 3,tsoil(:,:,islope))3784 & tsoil(:,:,islope)) 3787 3785 ENDDO 3788 3786 3789 3787 !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(:,:)) 3792 3790 3793 3791 if (rdstorm) then 3794 call write diagfi(1,'aerosol_dust','opacity of env. dust',''3795 & , 3,aerosol(:,:,iaer_dust_doubleq))3796 call write diagfi(1,'aerosol_stormdust',3792 call write_output('aerosol_dust','opacity of env. dust','' 3793 & ,aerosol(:,:,iaer_dust_doubleq)) 3794 call write_output('aerosol_stormdust', 3797 3795 & '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)) 3801 3799 do islope=1,nslope 3802 3800 write(str2(1:2),'(i2.2)') islope 3803 call WRITEDIAGFI(ngrid,'dqsdifdustq_slope'//str2,3801 call write_output('dqsdifdustq_slope'//str2, 3804 3802 & 'diffusion', 3805 & 'kg.m-2.s-1', 2,zdqsdif(:,igcm_dust_mass,islope))3803 & 'kg.m-2.s-1',zdqsdif(:,igcm_dust_mass,islope)) 3806 3804 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)) 3809 3807 do islope=1,nslope 3810 3808 write(str2(1:2),'(i2.2)') islope 3811 call WRITEDIAGFI(ngrid,'dqsdifrdsq_slope'//str2,3809 call write_output('dqsdifrdsq_slope'//str2, 3812 3810 & 'diffusion', 3813 & 'kg.m-2.s-1', 2,zdqsdif(:,igcm_stormdust_mass,islope))3811 & 'kg.m-2.s-1',zdqsdif(:,igcm_stormdust_mass,islope)) 3814 3812 ENDDO 3815 3813 endif !(rdstorm) … … 3817 3815 if(water) then 3818 3816 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)) 3826 3824 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)) 3831 3829 ENDIF ! hdo 3832 3830 endif !not.scavenging … … 3873 3871 endif ! of if (igcm_co2_ice.ne.0) 3874 3872 co2conservation = (co2totA-co2totB)/co2totA 3875 call WRITEDIAGFI(ngrid,'co2conservation',3873 call write_output( 'co2conservation', 3876 3874 & 'Total CO2 mass conservation in physic', 3877 & ' ', 0,co2conservation)3875 & ' ', co2conservation) 3878 3876 ! XIOS outputs 3879 3877 #ifdef CPP_XIOS -
trunk/LMDZ.MARS/libf/phymars/rocketduststorm_mod.F90
r2826 r2932 44 44 USE surfdat_h, only: emis,zmea, zstd, zsig, hmons 45 45 USE callradite_mod, only: callradite 46 use write_output_mod, only: write_output 46 47 IMPLICIT NONE 47 48 … … 525 526 ! WRITEDIAGFI 526 527 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 write diagfi(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(:))) 533 534 534 535 END SUBROUTINE rocketduststorm -
trunk/LMDZ.MARS/libf/phymars/topmons_mod.F90
r2931 r2932 42 42 hsummit,contains_mons 43 43 USE callradite_mod, only: callradite 44 use write_output_mod, only: write_output 44 45 45 46 IMPLICIT NONE … … 642 643 ! WRITEDIAGFI 643 644 ! ********************************************************************** 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', & 683 684 '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(:)) 693 694 694 695 END SUBROUTINE topmons -
trunk/LMDZ.MARS/libf/phymars/vdifc_mod.F
r2840 r2932 28 28 c use geometry_mod, only: longitude_deg,latitude_deg ! Joseph 29 29 use dust_param_mod, only: doubleq, submicron, lifting 30 use write_output_mod, only: write_output 30 31 31 32 IMPLICIT NONE … … 395 396 ! Some usefull diagnostics for the new surface layer parametrization : 396 397 397 ! call WRITEDIAGFI(ngrid,'vdifc_zcdv_true',398 ! call write_output('vdifc_zcdv_true', 398 399 ! & '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', 401 402 ! & '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', 408 409 ! & 'aerodyn momentum conductance','m/s', 409 ! & 2,zcdv)410 ! call WRITEDIAGFI(ngrid,'vdifc_zcdh',410 ! & zcdv(:)) 411 ! call write_output('vdifc_zcdh', 411 412 ! & 'aerodyn heat conductance','m/s', 412 ! & 2,zcdh)413 ! & zcdh(:)) 413 414 414 415 c ** schema de diffusion turbulente dans la couche limite … … 1057 1058 c --------- end of tracers ---------------------------- 1058 1059 1059 call WRITEDIAGFI(ngrid,"surf_h2o_lh",1060 call write_output("surf_h2o_lh", 1060 1061 & "Ground ice latent heat flux", 1061 & "W.m-2", 2,surf_h2o_lh(:))1062 & "W.m-2",surf_h2o_lh(:)) 1062 1063 1063 1064 C Diagnostic output for HDO 1064 1065 if (hdo) then 1065 CALL WRITEDIAGFI(ngrid,'hdoflux',1066 CALL write_output('hdoflux', 1066 1067 & 'hdoflux', 1067 & ' ', 2,hdoflux)1068 CALL WRITEDIAGFI(ngrid,'h2oflux',1068 & ' ',hdoflux(:)) 1069 CALL write_output('h2oflux', 1069 1070 & 'h2oflux', 1070 & ' ', 2,h2oflux)1071 & ' ',h2oflux(:)) 1071 1072 endif 1072 1073 -
trunk/LMDZ.MARS/libf/phymars/watercloud_mod.F
r2801 r2932 27 27 & qperemin 28 28 use dimradmars_mod, only: naerkind 29 use write_output_mod, only: write_output 29 30 IMPLICIT NONE 30 31 … … 268 269 & cloudfrac(:,:) 269 270 !! 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(:,:)) 278 279 END IF ! end if (CLFvarying) 279 280 c------------------------------------------------------------------ … … 713 714 #ifndef MESOSCALE 714 715 c======================================================================= 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(:,:, 719 720 & igcm_h2o_vap)) 720 721 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(:,:, 725 726 & igcm_hdo_vap)) 726 727 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(:,:, 729 730 & 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(:,:, 732 733 & 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(:,:, 735 736 & 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(:,:, 738 739 & igcm_dust_number)) 739 740 c=======================================================================
Note: See TracChangeset
for help on using the changeset viewer.