Changeset 1807 for LMDZ5/trunk
- Timestamp:
- Jul 19, 2013, 4:32:37 PM (11 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/iophy.F90
r1797 r1807 2 2 ! $Header$ 3 3 ! 4 module iophy 5 4 MODULE iophy 5 6 USE phys_output_var_mod 7 6 8 ! abd REAL,private,allocatable,DIMENSION(:),save :: io_lat 7 9 ! abd REAL,private,allocatable,DIMENSION(:),save :: io_lon … … 331 333 332 334 end SUBROUTINE histbeg_phy_points 335 336 337 SUBROUTINE histdef2d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 338 339 USE ioipsl 340 USE dimphy 341 USE mod_phys_lmdz_para 342 343 IMPLICIT NONE 344 345 INCLUDE "dimensions.h" 346 INCLUDE "temps.h" 347 INCLUDE "clesphys.h" 348 349 INTEGER :: iff 350 LOGICAL :: lpoint 351 INTEGER, DIMENSION(nfiles) :: flag_var 352 CHARACTER(LEN=20) :: nomvar 353 CHARACTER(LEN=*) :: titrevar 354 CHARACTER(LEN=*) :: unitvar 355 356 REAL zstophym 357 358 IF (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') THEN 359 zstophym=zoutm(iff) 360 ELSE 361 zstophym=zdtime_moy 362 ENDIF 363 364 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 365 CALL conf_physoutputs(nomvar,flag_var) 366 367 IF(.NOT.lpoint) THEN 368 IF ( flag_var(iff)<=lev_files(iff) ) THEN 369 CALL histdef (nid_files(iff),nomvar,titrevar,unitvar, & 370 iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & 371 type_ecri(iff), zstophym,zoutm(iff)) 372 ENDIF 373 ELSE 374 IF ( flag_var(iff)<=lev_files(iff) ) THEN 375 CALL histdef (nid_files(iff),nomvar,titrevar,unitvar, & 376 npstn,1,nhorim(iff), 1,1,1, -99, 32, & 377 type_ecri(iff), zstophym,zoutm(iff)) 378 ENDIF 379 ENDIF 380 381 ! Set swaero_diag=true if at least one of the concerned variables are defined 382 IF (nomvar=='topswad' .OR. nomvar=='topswai' .OR. nomvar=='solswad' .OR. nomvar=='solswai' ) THEN 383 IF ( flag_var(iff)<=lev_files(iff) ) THEN 384 swaero_diag=.TRUE. 385 END IF 386 END IF 387 END SUBROUTINE histdef2d_old 388 389 390 391 SUBROUTINE histdef3d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 392 393 USE ioipsl 394 USE dimphy 395 USE mod_phys_lmdz_para 396 397 IMPLICIT NONE 398 399 INCLUDE "dimensions.h" 400 INCLUDE "temps.h" 401 ! INCLUDE "indicesol.h" 402 INCLUDE "clesphys.h" 403 404 INTEGER :: iff 405 LOGICAL :: lpoint 406 INTEGER, DIMENSION(nfiles) :: flag_var 407 CHARACTER(LEN=20) :: nomvar 408 CHARACTER(LEN=*) :: titrevar 409 CHARACTER(LEN=*) :: unitvar 410 411 REAL zstophym 412 413 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 414 CALL conf_physoutputs(nomvar,flag_var) 415 416 IF (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') THEN 417 zstophym=zoutm(iff) 418 ELSE 419 zstophym=zdtime_moy 420 ENDIF 421 422 IF(.NOT.lpoint) THEN 423 IF ( flag_var(iff)<=lev_files(iff) ) THEN 424 CALL histdef (nid_files(iff), nomvar, titrevar, unitvar, & 425 iim, jj_nb, nhorim(iff), klev, levmin(iff), & 426 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, type_ecri(iff), & 427 zstophym, zoutm(iff)) 428 ENDIF 429 ELSE 430 IF ( flag_var(iff)<=lev_files(iff) ) THEN 431 CALL histdef (nid_files(iff), nomvar, titrevar, unitvar, & 432 npstn,1,nhorim(iff), klev, levmin(iff), & 433 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, & 434 type_ecri(iff), zstophym,zoutm(iff)) 435 ENDIF 436 ENDIF 437 END SUBROUTINE histdef3d_old 438 439 440 441 442 443 444 445 446 SUBROUTINE histdef2d (iff,var) 447 448 USE ioipsl 449 USE dimphy 450 USE mod_phys_lmdz_para 451 452 IMPLICIT NONE 453 454 INCLUDE "dimensions.h" 455 INCLUDE "temps.h" 456 INCLUDE "clesphys.h" 457 458 INTEGER :: iff 459 TYPE(ctrl_out) :: var 460 461 REAL zstophym 462 CHARACTER(LEN=20) :: typeecrit 463 464 465 ! ug On récupère le type écrit de la structure: 466 ! Assez moche, à refaire si meilleure méthode... 467 IF (INDEX(var%type_ecrit(iff), "once") > 0) THEN 468 typeecrit = 'once' 469 ELSE IF(INDEX(var%type_ecrit(iff), "t_min") > 0) THEN 470 typeecrit = 't_min(X)' 471 ELSE IF(INDEX(var%type_ecrit(iff), "t_max") > 0) THEN 472 typeecrit = 't_max(X)' 473 ELSE IF(INDEX(var%type_ecrit(iff), "inst") > 0) THEN 474 typeecrit = 'inst(X)' 475 ELSE 476 typeecrit = type_ecri_files(iff) 477 ENDIF 478 479 IF (typeecrit=='inst(X)'.OR.typeecrit=='once') THEN 480 zstophym=zoutm(iff) 481 ELSE 482 zstophym=zdtime_moy 483 ENDIF 484 485 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 486 CALL conf_physoutputs(var%name, var%flag) 487 488 IF(.NOT.clef_stations(iff)) THEN 489 IF ( var%flag(iff)<=lev_files(iff) ) THEN 490 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 491 iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & 492 typeecrit, zstophym,zoutm(iff)) 493 ENDIF 494 ELSE 495 IF ( var%flag(iff)<=lev_files(iff)) THEN 496 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 497 npstn,1,nhorim(iff), 1,1,1, -99, 32, & 498 typeecrit, zstophym,zoutm(iff)) 499 ENDIF 500 ENDIF 501 502 ! Set swaero_diag=true if at least one of the concerned variables are defined 503 IF (var%name=='topswad' .OR. var%name=='topswai' .OR. var%name=='solswad' .OR. var%name=='solswai' ) THEN 504 IF ( var%flag(iff)<=lev_files(iff) ) THEN 505 swaero_diag=.TRUE. 506 END IF 507 END IF 508 END SUBROUTINE histdef2d 509 SUBROUTINE histdef3d (iff,var) 510 511 USE ioipsl 512 USE dimphy 513 USE mod_phys_lmdz_para 514 515 IMPLICIT NONE 516 517 INCLUDE "dimensions.h" 518 INCLUDE "temps.h" 519 INCLUDE "clesphys.h" 520 521 INTEGER :: iff 522 TYPE(ctrl_out) :: var 523 524 REAL zstophym 525 CHARACTER(LEN=20) :: typeecrit 526 527 ! ug On récupère le type écrit de la structure: 528 ! Assez moche, à refaire si meilleure méthode... 529 IF (INDEX(var%type_ecrit(iff), "once") > 0) THEN 530 typeecrit = 'once' 531 ELSE IF(INDEX(var%type_ecrit(iff), "t_min") > 0) THEN 532 typeecrit = 't_min(X)' 533 ELSE IF(INDEX(var%type_ecrit(iff), "t_max") > 0) THEN 534 typeecrit = 't_max(X)' 535 ELSE IF(INDEX(var%type_ecrit(iff), "inst") > 0) THEN 536 typeecrit = 'inst(X)' 537 ELSE 538 typeecrit = type_ecri_files(iff) 539 ENDIF 540 541 542 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 543 CALL conf_physoutputs(var%name,var%flag) 544 545 IF (typeecrit=='inst(X)'.OR.typeecrit=='once') THEN 546 zstophym=zoutm(iff) 547 ELSE 548 zstophym=zdtime_moy 549 ENDIF 550 551 IF(.NOT.clef_stations(iff)) THEN 552 IF ( var%flag(iff)<=lev_files(iff) ) THEN 553 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 554 iim, jj_nb, nhorim(iff), klev, levmin(iff), & 555 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, typeecrit, & 556 zstophym, zoutm(iff)) 557 ENDIF 558 ELSE 559 IF ( var%flag(iff)<=lev_files(iff)) THEN 560 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 561 npstn,1,nhorim(iff), klev, levmin(iff), & 562 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, & 563 typeecrit, zstophym,zoutm(iff)) 564 ENDIF 565 ENDIF 566 END SUBROUTINE histdef3d 567 568 SUBROUTINE conf_physoutputs(nam_var,flag_var) 569 !!! Lecture des noms et niveau de sortie des variables dans output.def 570 ! en utilisant les routines getin de IOIPSL 571 use ioipsl 572 573 IMPLICIT NONE 574 575 include 'iniprint.h' 576 577 CHARACTER(LEN=20) :: nam_var 578 INTEGER, DIMENSION(nfiles) :: flag_var 579 580 IF(prt_level>10) WRITE(lunout,*)'Avant getin: nam_var flag_var ',nam_var,flag_var(:) 581 CALL getin('flag_'//nam_var,flag_var) 582 CALL getin('name_'//nam_var,nam_var) 583 IF(prt_level>10) WRITE(lunout,*)'Apres getin: nam_var flag_var ',nam_var,flag_var(:) 584 585 END SUBROUTINE conf_physoutputs 586 587 333 588 334 589 SUBROUTINE histwrite2d_phy_old(nid,lpoint,name,itau,field) 335 590 USE dimphy 336 591 USE mod_phys_lmdz_para 337 USE phys_output_var_mod338 592 USE ioipsl 339 593 IMPLICIT NONE … … 399 653 USE dimphy 400 654 USE mod_phys_lmdz_para 401 USE phys_output_var_mod402 655 403 656 use ioipsl … … 470 723 471 724 725 726 472 727 ! ug NOUVELLE VERSION DES WRITE AVEC LA BOUCLE DO RENTREE 473 728 SUBROUTINE histwrite2d_phy(var,field, STD_iff) … … 475 730 USE mod_phys_lmdz_para 476 731 USE ioipsl 477 !Pour avoir nfiles, nidfiles tout ça tout ça...478 USE phys_output_var_mod479 732 480 733 481 734 482 735 #ifdef CPP_XIOS … … 485 738 486 739 IMPLICIT NONE 487 include 'dimensions.h' 488 489 ! integer,INTENT(IN) :: nid 490 ! logical,INTENT(IN) :: lpoint 491 ! character*(*), INTENT(IN) :: name 492 ! integer, INTENT(IN) :: itau 493 ! REAL,DIMENSION(:),INTENT(IN) :: field 494 495 TYPE(ctrl_out), INTENT(IN) :: var 496 REAL, DIMENSION(:), INTENT(IN) :: field 497 INTEGER, INTENT(IN), OPTIONAL :: STD_iff ! ug RUSTINE POUR LES STD LEVS..... 740 INCLUDE 'dimensions.h' 741 INCLUDE 'iniprint.h' 742 743 TYPE(ctrl_out), INTENT(IN) :: var 744 REAL, DIMENSION(:), INTENT(IN) :: field 745 INTEGER, INTENT(IN), OPTIONAL :: STD_iff ! ug RUSTINE POUR LES STD LEVS..... 498 746 499 747 INTEGER :: iff, iff_beg, iff_end 500 748 501 749 REAL,DIMENSION(klon_mpi) :: buffer_omp … … 505 753 INTEGER :: ip 506 754 REAL, ALLOCATABLE, DIMENSION(:) :: fieldok 755 756 IF (prt_level >= 9) WRITE(lunout,*)'Begin histrwrite2d ',var%name 507 757 508 758 ! ug RUSTINE POUR LES STD LEVS..... … … 515 765 END IF 516 766 517 IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first DIMENSION not equal to klon',1) 767 ! On regarde si on est dans la phase de définition ou d'écriture: 768 IF(.NOT.vars_defined) THEN 769 770 !Si phase de définition.... on définit 771 DO iff=iff_beg, iff_end 772 IF (clef_files(iff)) THEN 773 CALL histdef2d(iff, var) 774 ENDIF 775 ENDDO 776 ELSE 777 778 !Et sinon on.... écrit 779 IF (SIZE(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first DIMENSION not equal to klon',1) 518 780 519 781 CALL Gather_omp(field,buffer_omp) … … 540 802 541 803 IF (is_sequential) THEN 542 ! klon_mpi_begin=1543 ! klon_mpi_end=klon544 804 DO ip=1, npstn 545 805 fieldok(ip)=buffer_omp(nptabij(ip)) … … 547 807 ELSE 548 808 DO ip=1, npstn 549 ! print*,'histwrite2d is_sequential npstn ip name nptabij',npstn,ip,name,nptabij(ip)809 PRINT*,'histwrite2d is_sequential npstn ip namenptabij',npstn,ip,var%name,nptabij(ip) 550 810 IF(nptabij(ip).GE.klon_mpi_begin.AND. & 551 811 nptabij(ip).LE.klon_mpi_end) THEN … … 563 823 ENDDO 564 824 !$OMP END MASTER 565 825 ENDIF ! vars_defined 826 IF (prt_level >= 9) WRITE(lunout,*)'End histrwrite2d ',var%name 566 827 END SUBROUTINE histwrite2d_phy 567 828 568 829 569 830 ! ug NOUVELLE VERSION DES WRITE AVEC LA BOUCLE DO RENTREE 570 SUBROUTINE histwrite3d_phy(var, field )831 SUBROUTINE histwrite3d_phy(var, field, STD_iff) 571 832 USE dimphy 572 833 USE mod_phys_lmdz_para 573 574 use ioipsl 575 !Pour avoir nfiles, nidfiles tout ça tout ça... 576 USE phys_output_var_mod 834 USE ioipsl 577 835 578 836 … … 583 841 584 842 IMPLICIT NONE 585 include 'dimensions.h' 586 587 ! integer,INTENT(IN) :: nid 588 ! logical,INTENT(IN) :: lpoint 589 ! character*(*), INTENT(IN) :: name 590 ! integer, INTENT(IN) :: itau 591 ! REAL,DIMENSION(:,:),INTENT(IN) :: field ! --> field(klon,:) 592 593 TYPE(ctrl_out), INTENT(IN) :: var 594 REAL, DIMENSION(:,:), INTENT(IN) :: field ! --> field(klon,:) 595 843 INCLUDE 'dimensions.h' 844 INCLUDE 'iniprint.h' 845 846 TYPE(ctrl_out), INTENT(IN) :: var 847 REAL, DIMENSION(:,:), INTENT(IN) :: field ! --> field(klon,:) 848 INTEGER, INTENT(IN), OPTIONAL :: STD_iff ! ug RUSTINE POUR LES STD LEVS..... 849 850 INTEGER :: iff 596 851 597 852 REAL,DIMENSION(klon_mpi,SIZE(field,2)) :: buffer_omp 598 853 REAL :: Field3d(iim,jj_nb,SIZE(field,2)) 599 INTEGER :: ip, n, nlev , iff854 INTEGER :: ip, n, nlev 600 855 INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d 601 856 REAL,ALLOCATABLE, DIMENSION(:,:) :: fieldok 602 857 603 IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1) 604 nlev=size(field,2) 605 606 ! print*,'hist3d_phy mpi_rank npstn=',mpi_rank,npstn 607 608 ! DO ip=1, npstn 609 ! print*,'hist3d_phy mpi_rank nptabij',mpi_rank,nptabij(ip) 610 ! ENDDO 858 IF (prt_level >= 9) write(lunout,*)'Begin histrwrite3d ',var%name 859 860 ! On regarde si on est dans la phase de définition ou d'écriture: 861 IF(.NOT.vars_defined) THEN 862 !Si phase de définition.... on définit 863 DO iff=1, nfiles 864 IF (clef_files(iff)) THEN 865 CALL histdef3d(iff, var) 866 ENDIF 867 ENDDO 868 ELSE 869 !Et sinon on.... écrit 870 IF (SIZE(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1) 871 nlev=SIZE(field,2) 872 611 873 612 874 CALL Gather_omp(field,buffer_omp) … … 634 896 635 897 IF (is_sequential) THEN 636 ! klon_mpi_begin=1637 ! klon_mpi_end=klon638 898 DO n=1, nlev 639 899 DO ip=1, npstn … … 658 918 ENDDO 659 919 !$OMP END MASTER 920 ENDIF ! vars_defined 921 IF (prt_level >= 9) write(lunout,*)'End histrwrite3d ',var%name 660 922 END SUBROUTINE histwrite3d_phy 661 923 -
LMDZ5/trunk/libf/phylmd/phys_output_mod.F90
r1791 r1807 13 13 USE indice_sol_mod 14 14 USE phys_output_var_mod 15 USE phys_output_ctrlout_mod16 15 USE aero_mod, only : naero_spc,name_aero 17 16 18 17 IMPLICIT NONE 19 20 PRIVATE histdef2d, histdef3d, conf_physoutputs21 22 REAL, PRIVATE, SAVE :: zdtime23 !$OMP THREADPRIVATE(zdtime)24 25 26 18 27 19 CONTAINS … … 38 30 ok_hf,ok_instan,ok_LES,ok_ade,ok_aie, read_climoz, & 39 31 phys_out_filestations, & 40 new_aod, aerosol_couple, flag_aerosol_strat) 32 new_aod, aerosol_couple, flag_aerosol_strat, & 33 pdtphys, paprs, pphis, pplay, lmax_th, ptconv, ptconvth, ivap, & 34 d_t, qx, d_qx, zmasse, ok_sync) 41 35 42 36 USE iophy … … 47 41 USE mod_phys_lmdz_para 48 42 USE aero_mod, only : naero_spc,name_aero 43 USE phys_output_write_mod 44 USE phys_output_ctrlout_mod 49 45 50 46 IMPLICIT NONE … … 56 52 include "iniprint.h" 57 53 58 real,dimension(klon),intent(in) :: rlon 59 real,dimension(klon),intent(in) :: rlat 60 INTEGER, intent(in) :: pim 54 ! ug Nouveaux arguments nécessaires au histwrite_mod: 55 INTEGER, INTENT(IN) :: ivap 56 INTEGER, DIMENSION(klon), INTENT(IN) :: lmax_th 57 LOGICAL, INTENT(IN) :: ok_sync 58 LOGICAL, DIMENSION(klon, klev), INTENT(IN) :: ptconv, ptconvth 59 REAL, INTENT(IN) :: pdtphys 60 REAL, DIMENSION(klon), INTENT(IN) :: pphis 61 REAL, DIMENSION(klon, klev), INTENT(IN) :: pplay, d_t 62 REAL, DIMENSION(klon, klev+1), INTENT(IN) :: paprs 63 REAL, DIMENSION(klon,klev,nqtot), INTENT(IN):: qx, d_qx 64 REAL, DIMENSION(klon, llm), INTENT(IN) :: zmasse 65 66 67 REAL,DIMENSION(klon),INTENT(IN) :: rlon 68 REAL,DIMENSION(klon),INTENT(IN) :: rlat 69 INTEGER, INTENT(IN) :: pim 61 70 INTEGER, DIMENSION(pim) :: tabij 62 INTEGER, dimension(pim), intent(in) :: ipt, jpt63 REAL, dimension(pim), intent(in) :: plat, plon64 REAL, dimension(pim,2) :: plat_bounds, plon_bounds71 INTEGER,DIMENSION(pim), INTENT(IN) :: ipt, jpt 72 REAL,DIMENSION(pim), INTENT(IN) :: plat, plon 73 REAL,DIMENSION(pim,2) :: plat_bounds, plon_bounds 65 74 66 75 INTEGER :: jjmp1 … … 69 78 LOGICAL :: ok_LES,ok_ade,ok_aie,flag_aerosol_strat 70 79 LOGICAL :: new_aod, aerosol_couple 71 INTEGER, intent(in):: read_climoz ! read ozone climatology80 INTEGER, INTENT(IN):: read_climoz ! read ozone climatology 72 81 ! Allowed values are 0, 1 and 2 73 82 ! 0: do not read an ozone climatology … … 200 209 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 201 210 202 zdtime = dtime ! Frequence ou l on moyenne211 zdtime_moy = dtime ! Frequence ou l on moyenne 203 212 204 213 ! Calcul des Ahyb, Bhyb et Alt … … 302 311 ! ENDIF 303 312 ! 304 !!!! Compos entes de la coordonnee sigma-hybride313 !!!! Composantes de la coordonnee sigma-hybride 305 314 CALL histvert(nid_files(iff), "Ahyb","Ahyb comp of Hyb Cord ", "Pa", & 306 315 levmax(iff) - levmin(iff) + 1,Ahyb,nvertap(iff)) … … 314 323 ! CALL histvert(nid_files(iff), "preff","Reference pressure", "Pa", & 315 324 ! 1,preff,nvertp0(iff)) 316 !!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!317 CALL histdef2d(iff,o_aire)318 CALL histdef2d(iff,o_contfracATM)319 320 !!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!321 CALL histdef2d(iff,o_phis)322 CALL histdef2d(iff,o_contfracOR)323 CALL histdef2d(iff,o_aireTER)324 CALL histdef2d(iff,o_flat)325 CALL histdef2d(iff,o_slp)326 CALL histdef2d(iff,o_tsol)327 CALL histdef2d(iff,o_t2m)328 CALL histdef2d(iff,o_t2m_min)329 CALL histdef2d(iff,o_t2m_max)330 CALL histdef2d(iff,o_wind10m)331 CALL histdef2d(iff,o_wind10max)332 CALL histdef2d(iff,o_sicf)333 CALL histdef2d(iff,o_q2m)334 CALL histdef2d(iff,o_ustar)335 CALL histdef2d(iff,o_u10m)336 CALL histdef2d(iff,o_v10m)337 CALL histdef2d(iff,o_psol)338 CALL histdef2d(iff,o_qsurf)339 340 IF (.NOT. ok_veget) THEN341 CALL histdef2d(iff,o_qsol)342 ENDIF343 CALL histdef2d(iff,o_ndayrain)344 CALL histdef2d(iff,o_precip)345 CALL histdef2d(iff,o_plul)346 CALL histdef2d(iff,o_pluc)347 CALL histdef2d(iff,o_snow)348 CALL histdef2d(iff,o_msnow)349 CALL histdef2d(iff,o_fsnow)350 CALL histdef2d(iff,o_evap)351 CALL histdef2d(iff,o_tops)352 CALL histdef2d(iff,o_tops0)353 CALL histdef2d(iff,o_topl)354 CALL histdef2d(iff,o_topl0)355 CALL histdef2d(iff,o_SWupTOA)356 CALL histdef2d(iff,o_SWupTOAclr)357 CALL histdef2d(iff,o_SWdnTOA)358 CALL histdef2d(iff,o_SWdnTOAclr)359 CALL histdef2d(iff,o_nettop)360 CALL histdef2d(iff,o_SWup200)361 CALL histdef2d(iff,o_SWup200clr)362 CALL histdef2d(iff,o_SWdn200)363 CALL histdef2d(iff,o_SWdn200clr)364 CALL histdef2d(iff,o_LWup200)365 CALL histdef2d(iff,o_LWup200clr)366 CALL histdef2d(iff,o_LWdn200)367 CALL histdef2d(iff,o_LWdn200clr)368 CALL histdef2d(iff,o_sols)369 CALL histdef2d(iff,o_sols0)370 CALL histdef2d(iff,o_soll)371 CALL histdef2d(iff,o_radsol)372 CALL histdef2d(iff,o_soll0)373 CALL histdef2d(iff,o_SWupSFC)374 CALL histdef2d(iff,o_SWupSFCclr)375 CALL histdef2d(iff,o_SWdnSFC)376 CALL histdef2d(iff,o_SWdnSFCclr)377 CALL histdef2d(iff,o_LWupSFC)378 CALL histdef2d(iff,o_LWdnSFC)379 CALL histdef2d(iff,o_LWupSFCclr)380 CALL histdef2d(iff,o_LWdnSFCclr)381 CALL histdef2d(iff,o_bils)382 CALL histdef2d(iff,o_bils_ec)383 CALL histdef2d(iff,o_bils_tke)384 CALL histdef2d(iff,o_bils_diss)385 CALL histdef2d(iff,o_bils_kinetic)386 CALL histdef2d(iff,o_bils_enthalp)387 CALL histdef2d(iff,o_bils_latent)388 CALL histdef2d(iff,o_sens)389 CALL histdef2d(iff,o_fder)390 CALL histdef2d(iff,o_ffonte)391 CALL histdef2d(iff,o_fqcalving)392 CALL histdef2d(iff,o_fqfonte)393 CALL histdef2d(iff,o_taux)394 CALL histdef2d(iff,o_tauy)395 396 DO nsrf = 1, nbsrf397 CALL histdef2d(iff,o_pourc_srf(nsrf))398 CALL histdef2d(iff,o_fract_srf(nsrf))399 CALL histdef2d(iff, o_taux_srf(nsrf))400 CALL histdef2d(iff, o_tauy_srf(nsrf))401 CALL histdef2d(iff, o_tsol_srf(nsrf))402 CALL histdef2d(iff, o_evappot_srf(nsrf))403 CALL histdef2d(iff, o_ustar_srf(nsrf))404 CALL histdef2d(iff, o_u10m_srf(nsrf))405 CALL histdef2d(iff, o_evap_srf(nsrf))406 CALL histdef2d(iff, o_v10m_srf(nsrf))407 CALL histdef2d(iff, o_t2m_srf(nsrf))408 CALL histdef2d(iff, o_sens_srf(nsrf))409 CALL histdef2d(iff, o_lat_srf(nsrf))410 CALL histdef2d(iff, o_flw_srf(nsrf))411 CALL histdef2d(iff, o_fsw_srf(nsrf))412 CALL histdef2d(iff, o_wbils_srf(nsrf))413 CALL histdef2d(iff, o_wbilo_srf(nsrf))414 IF (iflag_pbl>1 ) then415 CALL histdef2d(iff, o_tke_srf(nsrf))416 CALL histdef2d(iff, o_tke_max_srf(nsrf))417 ENDIF418 419 CALL histdef2d(iff, o_albe_srf(nsrf))420 CALL histdef2d(iff, o_rugs_srf(nsrf))421 CALL histdef2d(iff, o_ages_srf(nsrf))422 END DO423 424 IF (new_aod .AND. (.NOT. aerosol_couple)) THEN425 IF (ok_ade.OR.ok_aie) THEN426 CALL histdef2d(iff,o_od550aer)427 CALL histdef2d(iff,o_od865aer)428 CALL histdef2d(iff,o_absvisaer)429 CALL histdef2d(iff,o_od550lt1aer)430 CALL histdef2d(iff,o_sconcso4)431 CALL histdef2d(iff,o_sconcoa)432 CALL histdef2d(iff,o_sconcbc)433 CALL histdef2d(iff,o_sconcss)434 CALL histdef2d(iff,o_sconcdust)435 CALL histdef3d(iff,o_concso4)436 CALL histdef3d(iff,o_concoa)437 CALL histdef3d(iff,o_concbc)438 CALL histdef3d(iff,o_concss)439 CALL histdef3d(iff,o_concdust)440 CALL histdef2d(iff,o_loadso4)441 CALL histdef2d(iff,o_loadoa)442 CALL histdef2d(iff,o_loadbc)443 CALL histdef2d(iff,o_loadss)444 CALL histdef2d(iff,o_loaddust)445 !--STRAT AER446 ENDIF447 IF (ok_ade.OR.ok_aie.OR.flag_aerosol_strat) THEN448 DO naero = 1, naero_spc449 CALL histdef2d(iff, o_tausumaero(naero))450 END DO451 ENDIF452 ENDIF453 454 IF (ok_ade) THEN455 CALL histdef2d(iff,o_topswad)456 CALL histdef2d(iff,o_topswad0)457 CALL histdef2d(iff,o_solswad)458 CALL histdef2d(iff,o_solswad0)459 CALL histdef2d(iff,o_swtoaas_nat)460 CALL histdef2d(iff,o_swsrfas_nat)461 CALL histdef2d(iff,o_swtoacs_nat)462 CALL histdef2d(iff,o_swsrfcs_nat)463 CALL histdef2d(iff,o_swtoaas_ant)464 CALL histdef2d(iff,o_swsrfas_ant)465 CALL histdef2d(iff,o_swtoacs_ant)466 CALL histdef2d(iff,o_swsrfcs_ant)467 468 IF (.NOT. aerosol_couple) THEN469 CALL histdef2d(iff,o_swtoacf_nat)470 CALL histdef2d(iff,o_swsrfcf_nat)471 CALL histdef2d(iff,o_swtoacf_ant)472 CALL histdef2d(iff,o_swsrfcf_ant)473 CALL histdef2d(iff,o_swtoacf_zero)474 CALL histdef2d(iff,o_swsrfcf_zero)475 ENDIF476 ENDIF477 478 IF (ok_aie) THEN479 CALL histdef2d(iff,o_topswai)480 CALL histdef2d(iff,o_solswai)481 !Cloud droplet number concentration482 CALL histdef3d(iff,o_scdnc)483 CALL histdef2d(iff,o_cldncl)484 CALL histdef3d(iff,o_reffclws)485 CALL histdef3d(iff,o_reffclwc)486 CALL histdef2d(iff,o_cldnvi)487 CALL histdef3d(iff,o_lcc3d)488 CALL histdef3d(iff,o_lcc3dcon)489 CALL histdef3d(iff,o_lcc3dstra)490 CALL histdef2d(iff,o_lcc)491 CALL histdef2d(iff,o_reffclwtop)492 ENDIF493 CALL histdef2d(iff,o_alb1)494 CALL histdef2d(iff,o_alb2)495 CALL histdef2d(iff,o_cdrm)496 CALL histdef2d(iff,o_cdrh)497 CALL histdef2d(iff,o_cldl)498 CALL histdef2d(iff,o_cldm)499 CALL histdef2d(iff,o_cldh)500 CALL histdef2d(iff,o_cldt)501 CALL histdef2d(iff,o_cldq)502 CALL histdef2d(iff,o_lwp)503 CALL histdef2d(iff,o_iwp)504 CALL histdef2d(iff,o_ue)505 CALL histdef2d(iff,o_ve)506 CALL histdef2d(iff,o_uq)507 CALL histdef2d(iff,o_vq)508 509 IF(iflag_con.GE.3) THEN ! sb510 CALL histdef2d(iff,o_cape)511 CALL histdef2d(iff,o_pbase)512 CALL histdef2d(iff,o_ptop)513 CALL histdef2d(iff,o_fbase)514 IF (iflag_con /= 30) THEN515 CALL histdef2d(iff,o_plcl)516 CALL histdef2d(iff,o_plfc)517 CALL histdef2d(iff,o_wbeff)518 ENDIF519 CALL histdef2d(iff,o_cape_max)520 CALL histdef3d(iff,o_upwd)521 CALL histdef3d(iff,o_Ma)522 CALL histdef3d(iff,o_dnwd)523 CALL histdef3d(iff,o_dnwd0)524 CALL histdef3d(iff,o_mc)525 CALL histdef2d(iff,o_ftime_con)526 ENDIF !iflag_con .GE. 3527 CALL histdef2d(iff,o_prw)528 CALL histdef2d(iff,o_s_pblh)529 CALL histdef2d(iff,o_s_pblt)530 CALL histdef2d(iff,o_s_lcl)531 CALL histdef2d(iff,o_s_therm)532 !IM : Les champs suivants (s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F533 !CALL histdef2d(iff, &534 !o_s_capCL%flag,o_s_capCL%name, "Conv avlbl pot enerfor ABL", "J/m2" )535 !CALL histdef2d(iff, &536 !o_s_oliqCL%flag,o_s_oliqCL%name, "Liq Water in BL", "kg/m2")537 !CALL histdef2d(iff, &538 !o_s_cteiCL%flag,o_s_cteiCL%name, "Instability criteria(ABL)", "K")539 !CALL histdef2d(iff, &540 !o_s_trmb1%flag,o_s_trmb1%name, "deep_cape(HBTM2)", "J/m2")541 !CALL histdef2d(iff, &542 !o_s_trmb2%flag,o_s_trmb2%name, "inhibition (HBTM2)", "J/m2")543 !CALL histdef2d(iff, &544 !o_s_trmb3%flag,o_s_trmb3%name, "Point Omega (HBTM2)", "m")545 546 ! Champs interpolles sur des niveaux de pression547 548 ! Attention a reverifier549 550 ilev=0551 DO k=1, nlevSTD552 bb2=clevSTD(k)553 IF(bb2.EQ."850".OR.bb2.EQ."700".OR.bb2.EQ."500".OR.bb2.EQ."200" &554 .OR.bb2.EQ."100".OR.bb2.EQ."50".OR.bb2.EQ."10")THEN555 ilev=ilev+1556 ! print*,'ilev k bb2 flag name ',ilev,k, bb2,o_uSTDlevs(ilev)%flag,o_uSTDlevs(ilev)%name557 CALL histdef2d(iff,o_uSTDlevs(ilev))558 CALL histdef2d(iff,o_vSTDlevs(ilev))559 CALL histdef2d(iff,o_wSTDlevs(ilev))560 CALL histdef2d(iff,o_zSTDlevs(ilev))561 CALL histdef2d(iff,o_qSTDlevs(ilev))562 CALL histdef2d(iff,o_tSTDlevs(ilev))563 ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR."500".OR.bb2.EQ."200".OR.bb2.EQ."50".OR.bb2.EQ."10")564 ENDDO565 566 CALL histdef2d(iff,o_t_oce_sic)567 568 IF (type_ocean=='slab') THEN569 CALL histdef2d(iff,o_slab_bils)570 ENDIF571 572 ! Couplage conv-CL573 IF (iflag_con.GE.3) THEN574 IF (iflag_coupl>=1) THEN575 CALL histdef2d(iff,o_ale_bl)576 CALL histdef2d(iff,o_alp_bl)577 ENDIF578 ENDIF !(iflag_con.GE.3)579 580 CALL histdef2d(iff,o_weakinv)581 CALL histdef2d(iff,o_dthmin)582 583 CALL histdef2d(iff,o_rh2m)584 CALL histdef2d(iff,o_rh2m_min)585 CALL histdef2d(iff,o_rh2m_max)586 587 CALL histdef2d(iff,o_qsat2m)588 CALL histdef2d(iff,o_tpot)589 CALL histdef2d(iff,o_tpote)590 CALL histdef2d(iff,o_SWnetOR)591 CALL histdef2d(iff,o_SWdownOR)592 CALL histdef2d(iff,o_LWdownOR)593 CALL histdef2d(iff,o_snowl)594 CALL histdef2d(iff,o_solldown)595 CALL histdef2d(iff,o_dtsvdfo)596 CALL histdef2d(iff,o_dtsvdft)597 CALL histdef2d(iff,o_dtsvdfg)598 CALL histdef2d(iff,o_dtsvdfi)599 CALL histdef2d(iff,o_rugs)600 601 ! Champs 3D:602 CALL histdef3d(iff,o_ec550aer)603 CALL histdef3d(iff,o_lwcon)604 CALL histdef3d(iff,o_iwcon)605 CALL histdef3d(iff,o_temp)606 CALL histdef3d(iff,o_theta)607 CALL histdef3d(iff,o_ovap)608 CALL histdef3d(iff,o_oliq)609 CALL histdef3d(iff,o_ovapinit)610 CALL histdef3d(iff,o_geop)611 CALL histdef3d(iff,o_vitu)612 CALL histdef3d(iff,o_vitv)613 CALL histdef3d(iff,o_vitw)614 CALL histdef3d(iff,o_pres)615 CALL histdef3d(iff,o_paprs)616 CALL histdef3d(iff,o_mass)617 CALL histdef3d(iff,o_zfull)618 CALL histdef3d(iff,o_zhalf)619 CALL histdef3d(iff,o_rneb)620 CALL histdef3d(iff,o_rnebcon)621 CALL histdef3d(iff,o_rnebls)622 CALL histdef3d(iff,o_rhum)623 CALL histdef3d(iff,o_ozone)624 625 IF (read_climoz == 2) THEN626 CALL histdef3d(iff,o_ozone_light)627 END IF628 629 CALL histdef3d(iff,o_dtphy)630 CALL histdef3d(iff,o_dqphy)631 CALL histdef3d(iff,o_cldtau)632 CALL histdef3d(iff,o_cldemi)633 !IM: bug ?? dimensionnement variables (klon,klev+1) pmflxr, pmflxs, prfl, psfl634 CALL histdef3d(iff,o_pr_con_l)635 CALL histdef3d(iff,o_pr_con_i)636 CALL histdef3d(iff,o_pr_lsc_l)637 CALL histdef3d(iff,o_pr_lsc_i)638 !Cloud droplet effective radius639 CALL histdef3d(iff,o_re)640 CALL histdef3d(iff,o_fl)641 !FH Sorties pour la couche limite642 IF (iflag_pbl>1) THEN643 CALL histdef3d(iff,o_tke)644 CALL histdef3d(iff,o_tke_max)645 ENDIF646 CALL histdef3d(iff,o_kz)647 CALL histdef3d(iff,o_kz_max)648 CALL histdef3d(iff,o_clwcon)649 CALL histdef3d(iff,o_dtdyn)650 CALL histdef3d(iff,o_dqdyn)651 CALL histdef3d(iff,o_dudyn)652 CALL histdef3d(iff,o_dvdyn)653 CALL histdef3d(iff,o_dtcon)654 CALL histdef3d(iff,o_ducon)655 CALL histdef3d(iff,o_dvcon)656 CALL histdef3d(iff,o_dqcon)657 658 ! Wakes659 IF(iflag_con.EQ.3) THEN660 IF (iflag_wake >= 1) THEN661 CALL histdef2d(iff,o_ale_wk)662 CALL histdef2d(iff,o_alp_wk)663 CALL histdef2d(iff,o_ale)664 CALL histdef2d(iff,o_alp)665 CALL histdef2d(iff,o_cin)666 CALL histdef2d(iff,o_wape)667 CALL histdef2d(iff,o_wake_h)668 CALL histdef2d(iff,o_wake_s)669 CALL histdef3d(iff,o_dtwak)670 CALL histdef3d(iff,o_dqwak)671 CALL histdef3d(iff,o_wake_deltat)672 CALL histdef3d(iff,o_wake_deltaq)673 CALL histdef3d(iff,o_wake_omg)674 ENDIF675 !!! RomP CALL histdef3d(iff,o_Vprecip%flag,o_Vprecip%name, "precipitation vertical profile", "-")676 CALL histdef3d(iff,o_ftd)677 CALL histdef3d(iff,o_fqd)678 ENDIF !(iflag_con.EQ.3)679 680 IF(iflag_con.GE.3) THEN ! RomP >>>681 CALL histdef3d(iff,o_wdtrainA)682 CALL histdef3d(iff,o_wdtrainM)683 CALL histdef3d(iff,o_Vprecip)684 ENDIF !(iflag_con.GE.3) ! <<< RomP685 686 !!! nrlmd le 10/04/2012687 688 IF (iflag_trig_bl>=1) THEN689 CALL histdef2d(iff,o_n2)690 CALL histdef2d(iff,o_s2)691 CALL histdef2d(iff,o_proba_notrig)692 CALL histdef2d(iff,o_random_notrig)693 CALL histdef2d(iff,o_ale_bl_trig)694 CALL histdef2d(iff,o_ale_bl_stat)695 ENDIF !(iflag_trig_bl>=1)696 697 IF (iflag_clos_bl>=1) THEN698 CALL histdef2d(iff,o_alp_bl_det)699 CALL histdef2d(iff,o_alp_bl_fluct_m)700 CALL histdef2d(iff,o_alp_bl_fluct_tke)701 CALL histdef2d(iff,o_alp_bl_conv)702 CALL histdef2d(iff,o_alp_bl_stat)703 ENDIF !(iflag_clos_bl>=1)704 705 !!! fin nrlmd le 10/04/2012706 CALL histdef3d(iff,o_dtlsc)707 CALL histdef3d(iff,o_dtlschr)708 CALL histdef3d(iff,o_dqlsc)709 CALL histdef3d(iff,o_beta_prec)710 CALL histdef3d(iff,o_dtvdf)711 CALL histdef3d(iff,o_dtdis)712 CALL histdef3d(iff,o_dqvdf)713 CALL histdef3d(iff,o_dteva)714 CALL histdef3d(iff,o_dqeva)715 CALL histdef3d(iff,o_ptconv)716 CALL histdef3d(iff,o_ratqs)717 CALL histdef3d(iff,o_dtthe)718 719 IF (iflag_thermals.ge.1) THEN720 CALL histdef3d(iff,o_dqlscth)721 CALL histdef3d(iff,o_dqlscst)722 CALL histdef3d(iff,o_dtlscth)723 CALL histdef3d(iff,o_dtlscst)724 CALL histdef2d(iff,o_plulth)725 CALL histdef2d(iff,o_plulst)726 CALL histdef2d(iff,o_lmaxth)727 CALL histdef3d(iff,o_ptconvth)728 CALL histdef3d(iff,o_f_th)729 CALL histdef3d(iff,o_e_th)730 CALL histdef3d(iff,o_w_th)731 CALL histdef3d(iff,o_lambda_th)732 CALL histdef2d(iff,o_ftime_th)733 CALL histdef3d(iff,o_q_th)734 CALL histdef3d(iff,o_a_th)735 CALL histdef3d(iff,o_d_th)736 CALL histdef2d(iff,o_f0_th)737 CALL histdef2d(iff,o_zmax_th)738 CALL histdef3d(iff,o_dqthe)739 ENDIF !iflag_thermals.ge.1740 741 CALL histdef3d(iff,o_dtajs)742 CALL histdef3d(iff,o_dqajs)743 CALL histdef3d(iff,o_dtswr)744 CALL histdef3d(iff,o_dtsw0)745 CALL histdef3d(iff,o_dtlwr)746 CALL histdef3d(iff,o_dtlw0)747 CALL histdef3d(iff,o_dtec)748 CALL histdef3d(iff,o_duvdf)749 CALL histdef3d(iff,o_dvvdf)750 751 IF (ok_orodr) THEN752 CALL histdef3d(iff,o_duoro)753 CALL histdef3d(iff,o_dvoro)754 CALL histdef3d(iff,o_dtoro)755 ENDIF756 757 IF (ok_orolf) THEN758 CALL histdef3d(iff,o_dulif)759 CALL histdef3d(iff,o_dvlif)760 CALL histdef3d(iff,o_dtlif)761 ENDIF762 763 IF (ok_hines) then764 CALL histdef3d(iff,o_duhin)765 CALL histdef3d(iff,o_dvhin)766 CALL histdef3d(iff,o_dthin)767 ENDIF768 769 CALL histdef3d(iff,o_rsu)770 CALL histdef3d(iff,o_rsd)771 CALL histdef3d(iff,o_rlu)772 CALL histdef3d(iff,o_rld)773 CALL histdef3d(iff,o_rsucs)774 CALL histdef3d(iff,o_rsdcs)775 CALL histdef3d(iff,o_rlucs)776 CALL histdef3d(iff,o_rldcs)777 CALL histdef3d(iff,o_tnt)778 CALL histdef3d(iff,o_tntc)779 CALL histdef3d(iff,o_tntr)780 CALL histdef3d(iff,o_tntscpbl)781 CALL histdef3d(iff,o_tnhus)782 CALL histdef3d(iff,o_tnhusc)783 CALL histdef3d(iff,o_tnhusscpbl)784 CALL histdef3d(iff,o_evu)785 CALL histdef3d(iff,o_h2o)786 CALL histdef3d(iff,o_mcd)787 CALL histdef3d(iff,o_dmc)788 CALL histdef3d(iff,o_ref_liq)789 CALL histdef3d(iff,o_ref_ice)790 791 IF (RCO2_per.NE.RCO2_act.OR.RCH4_per.NE.RCH4_act.OR. &792 RN2O_per.NE.RN2O_act.OR.RCFC11_per.NE.RCFC11_act.OR. &793 RCFC12_per.NE.RCFC12_act) THEN794 CALL histdef2d(iff,o_rsut4co2)795 CALL histdef2d(iff,o_rlut4co2)796 CALL histdef2d(iff,o_rsutcs4co2)797 CALL histdef2d(iff,o_rlutcs4co2)798 CALL histdef3d(iff,o_rsu4co2)799 CALL histdef3d(iff,o_rlu4co2)800 CALL histdef3d(iff,o_rsucs4co2)801 CALL histdef3d(iff,o_rlucs4co2)802 CALL histdef3d(iff,o_rsd4co2)803 CALL histdef3d(iff,o_rld4co2)804 CALL histdef3d(iff,o_rsdcs4co2)805 CALL histdef3d(iff,o_rldcs4co2)806 807 ENDIF808 325 809 326 … … 813 330 o_trac(iq-2) = ctrl_out((/ 4, 5, 1, 1, 1, 10 /),tname(iiq),'Tracer '//ttext(iiq), "-",& 814 331 (/ '', '', '', '', '', '' /)) 815 CALL histdef3d(iff, o_trac(iq-2))816 332 o_trac_cum(iq-2) = ctrl_out((/ 3, 4, 10, 10, 10, 10 /),'cum'//tname(iiq),& 817 333 'Cumulated tracer '//ttext(iiq), "-", (/ '', '', '', '', '', '' /)) 818 CALL histdef2d(iff, o_trac_cum(iq-2))819 334 ENDDO 820 335 ENDIF 821 336 822 CALL histend(nid_files(iff))823 824 ndex2d = 0825 ndex3d = 0826 827 337 ENDIF ! clef_files 828 338 339 ENDDO ! iff 340 341 !On déclare les sorties avec un premier appel à phys_output_write: 342 343 CALL phys_output_write(0, pdtphys, paprs, pphis, & 344 & pplay, lmax_th, aerosol_couple, & 345 & ok_ade, ok_aie, ivap, new_aod, ok_sync, & 346 & ptconv, read_climoz, clevSTD, ptconvth, & 347 & d_t, qx, d_qx, zmasse, flag_aerosol_strat) 348 349 DO iff=1,nfiles 350 IF (clef_files(iff)) THEN 351 CALL histend(nid_files(iff)) 352 353 ndex2d = 0 354 ndex3d = 0 355 356 ENDIF ! clef_files 829 357 ENDDO ! iff 830 358 … … 842 370 end SUBROUTINE phys_output_open 843 371 844 SUBROUTINE histdef2d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 845 846 USE ioipsl 847 USE dimphy 848 USE mod_phys_lmdz_para 849 USE iophy 850 851 IMPLICIT NONE 852 853 INCLUDE "dimensions.h" 854 INCLUDE "temps.h" 855 INCLUDE "clesphys.h" 856 857 INTEGER :: iff 858 LOGICAL :: lpoint 859 INTEGER, DIMENSION(nfiles) :: flag_var 860 CHARACTER(LEN=20) :: nomvar 861 CHARACTER(LEN=*) :: titrevar 862 CHARACTER(LEN=*) :: unitvar 863 864 REAL zstophym 865 866 IF (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') THEN 867 zstophym=zoutm(iff) 868 ELSE 869 zstophym=zdtime 870 ENDIF 871 872 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 873 CALL conf_physoutputs(nomvar,flag_var) 874 875 IF(.NOT.lpoint) THEN 876 IF ( flag_var(iff)<=lev_files(iff) ) THEN 877 CALL histdef (nid_files(iff),nomvar,titrevar,unitvar, & 878 iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & 879 type_ecri(iff), zstophym,zoutm(iff)) 880 ENDIF 881 ELSE 882 IF ( flag_var(iff)<=lev_files(iff) ) THEN 883 CALL histdef (nid_files(iff),nomvar,titrevar,unitvar, & 884 npstn,1,nhorim(iff), 1,1,1, -99, 32, & 885 type_ecri(iff), zstophym,zoutm(iff)) 886 ENDIF 887 ENDIF 888 889 ! Set swaero_diag=true if at least one of the concerned variables are defined 890 IF (nomvar=='topswad' .OR. nomvar=='topswai' .OR. nomvar=='solswad' .OR. nomvar=='solswai' ) THEN 891 IF ( flag_var(iff)<=lev_files(iff) ) THEN 892 swaero_diag=.TRUE. 893 END IF 894 END IF 895 END SUBROUTINE histdef2d_old 896 897 SUBROUTINE histdef2d (iff,var) 898 899 USE ioipsl 900 USE dimphy 901 USE mod_phys_lmdz_para 902 USE iophy 903 904 IMPLICIT NONE 905 906 INCLUDE "dimensions.h" 907 INCLUDE "temps.h" 908 INCLUDE "clesphys.h" 909 910 INTEGER :: iff 911 TYPE(ctrl_out) :: var 912 913 REAL zstophym 914 CHARACTER(LEN=20) :: typeecrit 915 916 ! ug On récupère le type écrit de la structure: 917 ! Assez moche, à refaire si meilleure méthode... 918 IF (INDEX(var%type_ecrit(iff), "once") > 0) THEN 919 typeecrit = 'once' 920 ELSE IF(INDEX(var%type_ecrit(iff), "t_min") > 0) THEN 921 typeecrit = 't_min(X)' 922 ELSE IF(INDEX(var%type_ecrit(iff), "t_max") > 0) THEN 923 typeecrit = 't_max(X)' 924 ELSE IF(INDEX(var%type_ecrit(iff), "inst") > 0) THEN 925 typeecrit = 'inst(X)' 926 ELSE 927 typeecrit = type_ecri_files(iff) 928 ENDIF 929 930 IF (typeecrit=='inst(X)'.OR.typeecrit=='once') THEN 931 zstophym=zoutm(iff) 932 ELSE 933 zstophym=zdtime 934 ENDIF 935 936 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 937 CALL conf_physoutputs(var%name, var%flag) 938 939 IF(.NOT.clef_stations(iff)) THEN 940 IF ( var%flag(iff)<=lev_files(iff) ) THEN 941 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 942 iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & 943 typeecrit, zstophym,zoutm(iff)) 944 ENDIF 945 ELSE 946 IF ( var%flag(iff)<=lev_files(iff)) THEN 947 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 948 npstn,1,nhorim(iff), 1,1,1, -99, 32, & 949 typeecrit, zstophym,zoutm(iff)) 950 ENDIF 951 ENDIF 952 953 ! Set swaero_diag=true if at least one of the concerned variables are defined 954 IF (var%name=='topswad' .OR. var%name=='topswai' .OR. var%name=='solswad' .OR. var%name=='solswai' ) THEN 955 IF ( var%flag(iff)<=lev_files(iff) ) THEN 956 swaero_diag=.TRUE. 957 END IF 958 END IF 959 END SUBROUTINE histdef2d 960 961 SUBROUTINE histdef3d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 962 963 USE ioipsl 964 USE dimphy 965 USE mod_phys_lmdz_para 966 USE iophy 967 968 IMPLICIT NONE 969 970 INCLUDE "dimensions.h" 971 INCLUDE "temps.h" 972 ! INCLUDE "indicesol.h" 973 INCLUDE "clesphys.h" 974 975 INTEGER :: iff 976 LOGICAL :: lpoint 977 INTEGER, DIMENSION(nfiles) :: flag_var 978 CHARACTER(LEN=20) :: nomvar 979 CHARACTER(LEN=*) :: titrevar 980 CHARACTER(LEN=*) :: unitvar 981 982 REAL zstophym 983 984 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 985 CALL conf_physoutputs(nomvar,flag_var) 986 987 IF (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') THEN 988 zstophym=zoutm(iff) 989 ELSE 990 zstophym=zdtime 991 ENDIF 992 993 IF(.NOT.lpoint) THEN 994 IF ( flag_var(iff)<=lev_files(iff) ) THEN 995 CALL histdef (nid_files(iff), nomvar, titrevar, unitvar, & 996 iim, jj_nb, nhorim(iff), klev, levmin(iff), & 997 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, type_ecri(iff), & 998 zstophym, zoutm(iff)) 999 ENDIF 1000 ELSE 1001 IF ( flag_var(iff)<=lev_files(iff) ) THEN 1002 CALL histdef (nid_files(iff), nomvar, titrevar, unitvar, & 1003 npstn,1,nhorim(iff), klev, levmin(iff), & 1004 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, & 1005 type_ecri(iff), zstophym,zoutm(iff)) 1006 ENDIF 1007 ENDIF 1008 END SUBROUTINE histdef3d_old 1009 1010 SUBROUTINE histdef3d (iff,var) 1011 1012 USE ioipsl 1013 USE dimphy 1014 USE mod_phys_lmdz_para 1015 USE iophy 1016 1017 IMPLICIT NONE 1018 1019 INCLUDE "dimensions.h" 1020 INCLUDE "temps.h" 1021 INCLUDE "clesphys.h" 1022 1023 INTEGER :: iff 1024 TYPE(ctrl_out) :: var 1025 1026 REAL zstophym 1027 CHARACTER(LEN=20) :: typeecrit 1028 1029 ! ug On récupère le type écrit de la structure: 1030 ! Assez moche, à refaire si meilleure méthode... 1031 IF (INDEX(var%type_ecrit(iff), "once") > 0) THEN 1032 typeecrit = 'once' 1033 ELSE IF(INDEX(var%type_ecrit(iff), "t_min") > 0) THEN 1034 typeecrit = 't_min(X)' 1035 ELSE IF(INDEX(var%type_ecrit(iff), "t_max") > 0) THEN 1036 typeecrit = 't_max(X)' 1037 ELSE IF(INDEX(var%type_ecrit(iff), "inst") > 0) THEN 1038 typeecrit = 'inst(X)' 1039 ELSE 1040 typeecrit = type_ecri_files(iff) 1041 ENDIF 1042 1043 1044 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 1045 CALL conf_physoutputs(var%name,var%flag) 1046 1047 IF (typeecrit=='inst(X)'.OR.typeecrit=='once') THEN 1048 zstophym=zoutm(iff) 1049 ELSE 1050 zstophym=zdtime 1051 ENDIF 1052 1053 IF(.NOT.clef_stations(iff)) THEN 1054 IF ( var%flag(iff)<=lev_files(iff) ) THEN 1055 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 1056 iim, jj_nb, nhorim(iff), klev, levmin(iff), & 1057 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, typeecrit, & 1058 zstophym, zoutm(iff)) 1059 ENDIF 1060 ELSE 1061 IF ( var%flag(iff)<=lev_files(iff)) THEN 1062 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 1063 npstn,1,nhorim(iff), klev, levmin(iff), & 1064 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, & 1065 typeecrit, zstophym,zoutm(iff)) 1066 ENDIF 1067 ENDIF 1068 END SUBROUTINE histdef3d 1069 1070 SUBROUTINE conf_physoutputs(nam_var,flag_var) 1071 !!! Lecture des noms et niveau de sortie des variables dans output.def 1072 ! en utilisant les routines getin de IOIPSL 1073 use ioipsl 1074 1075 IMPLICIT NONE 1076 1077 include 'iniprint.h' 1078 1079 CHARACTER(LEN=20) :: nam_var 1080 INTEGER, DIMENSION(nfiles) :: flag_var 1081 1082 IF(prt_level>10) WRITE(lunout,*)'Avant getin: nam_var flag_var ',nam_var,flag_var(:) 1083 CALL getin('flag_'//nam_var,flag_var) 1084 CALL getin('name_'//nam_var,nam_var) 1085 IF(prt_level>10) WRITE(lunout,*)'Apres getin: nam_var flag_var ',nam_var,flag_var(:) 1086 1087 END SUBROUTINE conf_physoutputs 372 1088 373 1089 374 SUBROUTINE convers_timesteps(str,dtime,timestep) -
LMDZ5/trunk/libf/phylmd/phys_output_var_mod.F90
r1797 r1807 50 50 !$OMP THREADPRIVATE(levmin, levmax) 51 51 52 LOGICAL, SAVE :: vars_defined = .TRUE. 53 !$OMP THREADPRIVATE(vars_defined) 52 REAL, SAVE :: zdtime_moy 53 !$OMP THREADPRIVATE(zdtime_moy) 54 55 LOGICAL, SAVE :: vars_defined = .FALSE. ! ug PAS THREADPRIVATE ET C'EST NORMAL 54 56 55 57 TYPE ctrl_out -
LMDZ5/trunk/libf/phylmd/phys_output_write_F90.h
r1798 r1807 1 1 2 ndex2d = 03 ndex3d = 04 2 5 3 !!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6 4 CALL histwrite_phy(o_phis, pphis) 7 IF (.TRUE.) THEN8 5 CALL histwrite_phy(o_aire, airephy) 9 6 DO i=1, klon … … 11 8 ENDDO 12 9 CALL histwrite_phy(o_contfracATM, zx_tmp_fi2d) 13 ENDIF14 10 CALL histwrite_phy(o_contfracOR, pctsrf(:,is_ter)) 15 11 CALL histwrite_phy(o_aireTER, paire_ter) … … 19 15 CALL histwrite_phy(o_tsol, zxtsol) 20 16 CALL histwrite_phy(o_t2m, zt2m) 21 IF (.TRUE.) THEN22 17 CALL histwrite_phy(o_t2m_min, zt2m) 23 18 CALL histwrite_phy(o_t2m_max, zt2m) 24 ENDIF 19 25 20 DO i=1, klon 26 21 zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i)) 27 22 ENDDO 28 23 CALL histwrite_phy(o_wind10m, zx_tmp_fi2d) 29 IF (.TRUE.) THEN 24 30 25 DO i=1, klon 31 26 zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i)) 32 27 ENDDO 33 28 CALL histwrite_phy(o_wind10max, zx_tmp_fi2d) 34 ENDIF 29 35 30 DO i = 1, klon 36 31 zx_tmp_fi2d(i) = pctsrf(i,is_sic) … … 179 174 pbl_tke(:,1:klev,nsrf)) 180 175 181 IF (.TRUE.) THEN 176 182 177 CALL histwrite_phy(o_tke_max_srf(nsrf), & 183 178 pbl_tke(:,1:klev,nsrf)) 184 ENDIF 179 185 180 ENDIF 186 181 … … 211 206 CALL histwrite_phy(o_wbeff, wbeff) 212 207 end if 213 IF (.TRUE.) THEN 208 214 209 CALL histwrite_phy(o_cape_max, cape) 215 ENDIF 210 216 211 CALL histwrite_phy(o_upwd, upwd) 217 212 CALL histwrite_phy(o_Ma, Ma) … … 353 348 ENDIF !(iflag_clos_bl>=1) 354 349 !!! fin nrlmd le 10/04/2012 355 WRITE(*,*) "TOTOTYPE OCEAN=",type_ocean356 350 IF (type_ocean=='slab ') THEN 357 WRITE(*,*) "TOTOTYPE OCEAN=slab "358 351 CALL histwrite_phy(o_slab_bils, slab_wfbils) 359 352 ENDIF !type_ocean == force/slab … … 372 365 ENDDO 373 366 CALL histwrite_phy(o_rh2m, zx_tmp_fi2d) 374 IF (.TRUE.) THEN 367 375 368 DO i=1, klon 376 369 zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.) … … 381 374 ENDDO 382 375 CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d) 383 ENDIF 376 384 377 CALL histwrite_phy(o_qsat2m, qsat2m) 385 378 CALL histwrite_phy(o_tpot, tpot) … … 548 541 enddo 549 542 CALL histwrite_phy(o_tke, zx_tmp_fi3d) 550 IF (.TRUE.) THEN 543 551 544 CALL histwrite_phy(o_tke_max, zx_tmp_fi3d) 552 545 ENDIF 553 endif 546 554 547 CALL histwrite_phy(o_kz, coefh(:,:,is_ave)) 555 IF (.TRUE.) THEN 548 556 549 CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave)) 557 ENDIF 550 558 551 CALL histwrite_phy(o_clwcon, clwcon0) 559 552 CALL histwrite_phy(o_dtdyn, d_t_dyn) … … 579 572 zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys 580 573 CALL histwrite_phy(o_dqcon, zx_tmp_fi3d) 581 if(iflag_thermals.eq.1)then 582 zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys 583 CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d) 584 else if(iflag_thermals.gt.1.and.iflag_wake.EQ.1)then 585 zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + & 586 d_q_ajs(1:klon,1:klev)/pdtphys + & 587 d_q_wake(1:klon,1:klev)/pdtphys 588 CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d) 589 endif 574 575 IF(iflag_thermals.EQ.1) THEN 576 zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys 577 CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d) 578 ELSE IF(iflag_thermals.GT.1.AND.iflag_wake.EQ.1) THEN 579 zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + & 580 d_q_ajs(1:klon,1:klev)/pdtphys + & 581 d_q_wake(1:klon,1:klev)/pdtphys 582 CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d) 583 ENDIF 584 590 585 zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys 591 586 CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d) … … 763 758 CALL histwrite_phy(o_rsdcs4co2, swdn0p) 764 759 CALL histwrite_phy(o_rldcs4co2, lwdn0p) 765 endif766 if(nqtot.GE.3) THEN760 ENDIF 761 IF (nqtot.GE.3) THEN 767 762 DO iq=3,nqtot 768 CALL histwrite_phy(o_trac(iq-2), qx(:,:,iq))763 CALL histwrite_phy(o_trac(iq-2), qx(:,:,iq)) 769 764 ENDDO 770 765 DO iq=3,nqtot 771 766 zx_tmp_fi2d=0. 772 dok=1,klev767 DO k=1,klev 773 768 zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*qx(:,k,iq) 774 enddo775 CALL histwrite_phy(o_trac_cum(iq-2), zx_tmp_fi2d)776 ENDDO 777 endif778 769 ENDDO 770 CALL histwrite_phy(o_trac_cum(iq-2), zx_tmp_fi2d) 771 ENDDO 772 ENDIF 773 -
LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90
r1798 r1807 8 8 ! Author: Ulysse GERARD (effective implementation) 9 9 10 USE phys_output_var_mod11 10 12 11 CONTAINS … … 91 90 ENDIF 92 91 END DO 92 93 ELSE 94 vars_defined = .TRUE. 93 95 ENDIF 94 96 95 97 96 vars_defined = .TRUE. 98 97 99 98 100 END SUBROUTINE phys_output_write -
LMDZ5/trunk/libf/phylmd/physiq.F
r1798 r1807 1517 1517 & read_climoz, phys_out_filestations, 1518 1518 & new_aod, aerosol_couple, 1519 & flag_aerosol_strat ) 1519 & flag_aerosol_strat, pdtphys, paprs, pphis, 1520 & pplay, lmax_th, ptconv, ptconvth, ivap, 1521 & d_t, qx, d_qx, zmasse, ok_sync) 1520 1522 c$OMP END MASTER 1521 1523 c$OMP BARRIER
Note: See TracChangeset
for help on using the changeset viewer.