Changeset 2704 for LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90
- Timestamp:
- Nov 20, 2016, 2:15:32 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90
r2690 r2704 6 6 USE phytrac_mod, ONLY : d_tr_cl, d_tr_th, d_tr_cv, d_tr_lessi_impa, & 7 7 d_tr_lessi_nucl, d_tr_insc, d_tr_bcscav, d_tr_evapls, d_tr_ls, & 8 d_tr_trsp, d_tr_sscav, d_tr_sat, d_tr_uscav 8 d_tr_trsp, d_tr_sscav, d_tr_sat, d_tr_uscav, flux_tr_dry 9 9 10 10 ! Author: Abderrahmane IDELKADI (original include file) … … 24 24 ! defined and initialised in phys_output_mod.F90 25 25 26 USE dimphy, only: klon, klev, klevp1 26 USE dimphy, ONLY: klon, klev, klevp1 27 USE infotrac, ONLY: nbtr 27 28 USE mod_phys_lmdz_para, ONLY: is_north_pole_phy,is_south_pole_phy 28 29 USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat 29 USE time_phylmdz_mod, only: day_step_phy, start_time, itau_phy30 USE phys_output_ctrlout_mod, only: o_phis, o_aire, is_ter, is_lic, is_oce, &30 USE time_phylmdz_mod, ONLY: day_step_phy, start_time, itau_phy 31 USE phys_output_ctrlout_mod, ONLY: o_phis, o_aire, is_ter, is_lic, is_oce, & 31 32 is_ave, is_sic, o_contfracATM, o_contfracOR, & 32 33 o_aireTER, o_flat, o_slp, o_ptstar, o_pt0, o_tsol, & … … 163 164 o_dtr_lessi_impa, o_dtr_lessi_nucl, & 164 165 o_dtr_insc, o_dtr_bcscav, o_dtr_evapls, & 165 o_dtr_ls, o_dtr_trsp, o_dtr_sscav, &166 o_dtr_ls, o_dtr_trsp, o_dtr_sscav, o_dtr_dry, & 166 167 o_dtr_sat, o_dtr_uscav, o_trac_cum, o_du_gwd_rando, o_dv_gwd_rando, & 167 168 o_ustr_gwd_hines,o_vstr_gwd_hines,o_ustr_gwd_rando,o_vstr_gwd_rando, & … … 183 184 184 185 #ifdef CPP_StratAer 185 USE phys_output_ctrlout_mod, only: &186 USE phys_output_ctrlout_mod, ONLY: & 186 187 o_sulf_convert, o_sulf_nucl, o_sulf_cond_evap, o_ocs_convert, & 187 188 o_sfluxaer, o_R2SO4, o_OCS_lifetime, o_SO2_lifetime, & … … 191 192 #endif 192 193 193 USE phys_state_var_mod, only: pctsrf, paire_ter, rain_fall, snow_fall, &194 USE phys_state_var_mod, ONLY: pctsrf, paire_ter, rain_fall, snow_fall, & 194 195 qsol, z0m, z0h, fevap, agesno, & 195 196 nday_rain, rain_con, snow_con, & … … 218 219 vphiSTD, wTSTD, u2STD, v2STD, T2STD, missing_val_nf90 219 220 220 USE phys_local_var_mod, only: zxfluxlat, slp, ptstar, pt0, zxtsol, zt2m, &221 USE phys_local_var_mod, ONLY: zxfluxlat, slp, ptstar, pt0, zxtsol, zt2m, & 221 222 t2m_min_mon, t2m_max_mon, evap, & 222 223 l_mixmin,l_mix, & … … 282 283 283 284 #ifdef CPP_StratAer 284 USE phys_local_var_mod, only: &285 USE phys_local_var_mod, ONLY: & 285 286 sulf_convert, sulf_nucl, sulf_cond_evap, ocs_convert, & 286 287 sfluxaer, R2SO4, OCS_lifetime, SO2_lifetime, & … … 290 291 #endif 291 292 292 USE phys_output_var_mod, only: vars_defined, snow_o, zfra_o, bils_diss, &293 USE phys_output_var_mod, ONLY: vars_defined, snow_o, zfra_o, bils_diss, & 293 294 bils_ec,bils_ech, bils_tke, bils_kinetic, bils_latent, bils_enthalp, & 294 295 itau_con, nfiles, clef_files, nid_files, & … … 309 310 alt_tropo 310 311 311 USE ocean_slab_mod, only: nslay, tslab, slab_bils, slab_bilg, tice, &312 USE ocean_slab_mod, ONLY: nslay, tslab, slab_bils, slab_bilg, tice, & 312 313 seaice, slab_ekman,slab_hdiff, dt_ekman, dt_hdiff 313 USE pbl_surface_mod, only: snow314 USE indice_sol_mod, only: nbsrf315 USE infotrac_phy, only: nqtot, nqo, type_trac316 USE geometry_mod, only: cell_area317 USE surface_data, only: type_ocean, version_ocean, ok_veget, ok_snow318 ! USE aero_mod, only: naero_spc319 USE aero_mod, only: naero_tot, id_STRAT_phy320 USE ioipsl, only: histend, histsync321 USE iophy, only: set_itau_iophy, histwrite_phy322 USE netcdf, only: nf90_fill_real314 USE pbl_surface_mod, ONLY: snow 315 USE indice_sol_mod, ONLY: nbsrf 316 USE infotrac_phy, ONLY: nqtot, nqo, type_trac, tname, niadv 317 USE geometry_mod, ONLY: cell_area 318 USE surface_data, ONLY: type_ocean, version_ocean, ok_veget, ok_snow 319 ! USE aero_mod, ONLY: naero_spc 320 USE aero_mod, ONLY: naero_tot, id_STRAT_phy 321 USE ioipsl, ONLY: histend, histsync 322 USE iophy, ONLY: set_itau_iophy, histwrite_phy 323 USE netcdf, ONLY: nf90_fill_real 323 324 USE print_control_mod, ONLY: prt_level,lunout 324 325 … … 326 327 #ifdef CPP_XIOS 327 328 ! ug Pour les sorties XIOS 328 USE xios , ONLY: xios_update_calendar329 USE wxios, only: wxios_closedef, missing_val330 #endif 331 USE phys_cal_mod, only: mth_len329 USE xios 330 USE wxios, ONLY: wxios_closedef, missing_val 331 #endif 332 USE phys_cal_mod, ONLY : mth_len 332 333 333 334 #ifdef CPP_RRTM … … 336 337 337 338 IMPLICIT NONE 338 339 339 340 340 INCLUDE "clesphys.h" … … 364 364 ! Local 365 365 INTEGER :: itau_w 366 INTEGER :: i, iinit, iinitend=1, iff, iq, nsrf, k, ll, naero366 INTEGER :: i, iinit, iinitend=1, iff, iq, iiq, nsrf, k, ll, naero 367 367 REAL, DIMENSION (klon) :: zx_tmp_fi2d 368 368 REAL, DIMENSION (klon,klev) :: zx_tmp_fi3d, zpt_conv … … 379 379 INTEGER ISW 380 380 CHARACTER*1 ch1 381 CHARACTER*20 varname 382 383 #ifdef CPP_XIOS 384 TYPE(xios_fieldgroup) :: group_handle 385 TYPE(xios_field) :: child 386 #endif 381 387 382 388 ! On calcul le nouveau tau: … … 390 396 iinitend = 1 391 397 ENDIF 398 399 #ifdef CPP_XIOS 400 #ifdef CPP_StratAer 401 IF (.NOT.vars_defined) THEN 402 !On ajoute les variables 3D traceurs par l interface fortran 403 CALL xios_get_handle("fields_strataer_trac_3D", group_handle) 404 ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs 405 DO iq=nqo+1, nqtot 406 iiq=niadv(iq) 407 varname=trim(tname(iiq)) 408 WRITE (lunout,*) 'XIOS var=', nqo, iq, varname 409 CALL xios_add_child(group_handle, child, varname) 410 CALL xios_set_attr(child, name=varname, unit="kg kg-1") 411 varname='d'//trim(tname(iiq))//'_vdf' 412 CALL xios_add_child(group_handle, child, varname) 413 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 414 varname='d'//trim(tname(iiq))//'_the' 415 CALL xios_add_child(group_handle, child, varname) 416 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 417 varname='d'//trim(tname(iiq))//'_con' 418 CALL xios_add_child(group_handle, child, varname) 419 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 420 varname='d'//trim(tname(iiq))//'_lessi_impa' 421 CALL xios_add_child(group_handle, child, varname) 422 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 423 varname='d'//trim(tname(iiq))//'_lessi_nucl' 424 CALL xios_add_child(group_handle, child, varname) 425 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 426 varname='d'//trim(tname(iiq))//'_insc' 427 CALL xios_add_child(group_handle, child, varname) 428 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 429 varname='d'//trim(tname(iiq))//'_bcscav' 430 CALL xios_add_child(group_handle, child, varname) 431 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 432 varname='d'//trim(tname(iiq))//'_evapls' 433 CALL xios_add_child(group_handle, child, varname) 434 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 435 varname='d'//trim(tname(iiq))//'_ls' 436 CALL xios_add_child(group_handle, child, varname) 437 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 438 varname='d'//trim(tname(iiq))//'_trsp' 439 CALL xios_add_child(group_handle, child, varname) 440 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 441 varname='d'//trim(tname(iiq))//'_sscav' 442 CALL xios_add_child(group_handle, child, varname) 443 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 444 varname='d'//trim(tname(iiq))//'_sat' 445 CALL xios_add_child(group_handle, child, varname) 446 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 447 varname='d'//trim(tname(iiq))//'_uscav' 448 CALL xios_add_child(group_handle, child, varname) 449 CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1") 450 ENDDO 451 !On ajoute les variables 2D traceurs par l interface fortran 452 CALL xios_get_handle("fields_strataer_trac_2D", group_handle) 453 ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs 454 DO iq=nqo+1, nqtot 455 iiq=niadv(iq) 456 varname='cum'//trim(tname(iiq)) 457 WRITE (lunout,*) 'XIOS var=', iq, varname 458 CALL xios_add_child(group_handle, child, varname) 459 CALL xios_set_attr(child, name=varname, unit="kg m-2") 460 varname='cumd'//trim(tname(iiq))//'_dry' 461 CALL xios_add_child(group_handle, child, varname) 462 CALL xios_set_attr(child, name=varname, unit="kg m-2 s-1") 463 ENDDO 464 ENDIF 465 #endif 466 #endif 392 467 393 468 ! ug la boucle qui suit ne sert qu'une fois, pour l'initialisation, sinon il n'y a toujours qu'un seul passage: … … 1785 1860 #endif 1786 1861 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1787 1788 DO iq=nqo+1, nqtot1862 IF (nqtot.GE.nqo+1) THEN 1863 DO iq=nqo+1, nqtot 1789 1864 IF (type_trac == 'lmdz' .OR. type_trac == 'repr' .OR. type_trac == 'coag') THEN 1865 !--3D fields 1790 1866 CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo)) 1791 1867 CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo)) … … 1802 1878 CALL histwrite_phy(o_dtr_sat(iq-nqo),d_tr_sat(:,:,iq-nqo)) 1803 1879 CALL histwrite_phy(o_dtr_uscav(iq-nqo),d_tr_uscav(:,:,iq-nqo)) 1880 !--2D fields 1881 CALL histwrite_phy(o_dtr_dry(iq-nqo), flux_tr_dry(:,iq-nqo)) 1804 1882 zx_tmp_fi2d=0. 1805 1883 IF (vars_defined) THEN … … 1821 1899 ndex2d = 0 1822 1900 ndex3d = 0 1823 1824 1901 ENDIF ! clef_files 1825 1902 ENDDO ! iff … … 1832 1909 !$OMP BARRIER 1833 1910 vars_defined = .TRUE. 1834 ENDIF 1911 1912 ENDIF !--.NOT.vars_defined 1835 1913 1836 1914 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.