- Timestamp:
- Feb 22, 2021, 12:44:07 PM (4 years ago)
- Location:
- LMDZ6/branches/LMDZ-tracers
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/LMDZ-tracers
- Property svn:mergeinfo changed
-
LMDZ6/branches/LMDZ-tracers/libf/phylmd/Dust/phytracr_spl_mod.F90
r2648 r3851 3 3 4 4 MODULE phytracr_spl_mod 5 6 5 7 6 ! Recuperation des morceaux de la physique de Jeronimo specifiques … … 35 34 CHARACTER*800 fileregionsdimsbb 36 35 CHARACTER*800 fileregionsdimswstar 37 ! CHARACTER*800 filescaleparamsind38 ! CHARACTER*800 filescaleparamsdust39 ! CHARACTER*800 filescaleparamsbb40 36 CHARACTER*100 paramname_ind 41 37 CHARACTER*100 paramname_bb … … 424 420 !$OMP THREADPRIVATE(flux_sparam_sscoa,u10m_ss,v10m_ss) 425 421 426 ! Select dust emission scheme ver the Sahara:422 ! Select dust emission scheme for the Sahara: 427 423 ! LOGICAL,PARAMETER,SAVE :: ok_chimeredust=.FALSE. 428 424 LOGICAL,PARAMETER :: ok_chimeredust=.TRUE. 429 425 !!!!!! !$OMP THREADPRIVATE(ok_chimeredust) 430 426 431 !OH REAL,SAVE :: scale_param_ssacc !Scaling parameter for Fine Sea Salt432 !OH REAL,SAVE :: scale_param_sscoa !Scaling parameter for Coarse Sea Salt433 !OH REAL,ALLOCATABLE,SAVE :: scale_param_ind(nbreg_ind) !Scaling parameter for industrial emissionsi of SO2434 !OH REAL,ALLOCATABLE,SAVE :: scale_param_bb(nbreg_bb) !Scaling parameter for biomas burning (SO2, BC & OM)435 !OH REAL,ALLOCATABLE,SAVE :: scale_param_ff(nbreg_ind) !Scaling parameter for industrial emissions (fossil fuel)436 !OH REAL,ALLOCATABLE,SAVE :: scale_param_dustacc(nbreg_dust) !Scaling parameter for Fine Dust437 !OH REAL,ALLOCATABLE,SAVE :: scale_param_dustcoa(nbreg_dust) !Scaling parameter for Coarse Dust438 !OH REAL,ALLOCATABLE,SAVE :: scale_param_dustsco(nbreg_dust) !Scaling parameter for SCoarse Dust439 !OH REAL,ALLOCATABLE,SAVE :: param_wstarBLperregion(nbreg_wstardust)440 !OH REAL,ALLOCATABLE,SAVE :: param_wstarWAKEperregion(nbreg_wstardust)441 !!!! !$OMP THREADPRIVATE( scale_param_ssacc, scale_param_sscoa, scale_param_ind, scale_param_bb, scale_param_ff, scale_param_dustacc, scale_param_dustcoa, scale_param_dustsco, param_wstarBLperregion, param_wstarWAKEperregion)442 443 427 444 428 CONTAINS 445 429 ! 446 430 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 447 SUBROUTINE phytracr_spl_ ini(klon,nbreg_ind,nbreg_bb,nbreg_dust,nbreg_wstardust)431 SUBROUTINE phytracr_spl_out_init() 448 432 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 449 450 451 IMPLICIT NONE 452 INTEGER klon,nbreg_ind,nbreg_bb,nbreg_dust,nbreg_wstardust 453 454 ALLOCATE( tsol(klon) ) 455 fileregionsdimsind='regions_ind_meta' 456 fileregionsdimsdust='regions_dustacc_meta' 457 ! fileregionsdimsdust='regions_dust_meta' 458 fileregionsdimsbb='regions_bb_meta' 459 fileregionsdimswstar='regions_pwstarwake_meta' 460 call readregionsdims2_spl(nbreg_ind,fileregionsdimsind) 461 call readregionsdims2_spl(nbreg_dust,fileregionsdimsdust) 462 call readregionsdims2_spl(nbreg_bb,fileregionsdimsbb) 463 call readregionsdims2_spl(nbreg_wstardust,fileregionsdimswstar) 464 465 !readregions_spl() 466 467 ALLOCATE(scale_param_ind(nbreg_ind)) 468 ALLOCATE(scale_param_bb(nbreg_bb)) 469 ALLOCATE(scale_param_ff(nbreg_ind)) 470 ALLOCATE(scale_param_dustacc(nbreg_dust)) 471 ALLOCATE(scale_param_dustcoa(nbreg_dust)) 472 ALLOCATE(scale_param_dustsco(nbreg_dust)) 473 ALLOCATE(param_wstarBLperregion(nbreg_wstardust)) 474 ALLOCATE(param_wstarWAKEperregion(nbreg_wstardust)) 475 ALLOCATE( dust_ec(klon) ) 476 ALLOCATE( u10m_ec(klon) ) 477 ALLOCATE( v10m_ec(klon) ) 478 ALLOCATE( lmt_so2volc_cont(klon) ) 479 ALLOCATE( lmt_altvolc_cont(klon) ) 480 ALLOCATE( lmt_so2volc_expl(klon) ) 481 ALLOCATE( lmt_altvolc_expl(klon) ) 482 ALLOCATE( lmt_so2ff_l(klon) ) 483 ALLOCATE( lmt_so2ff_h(klon) ) 484 ALLOCATE( lmt_so2nff(klon) ) 485 ALLOCATE( lmt_so2ba(klon) ) 486 ALLOCATE( lmt_so2bb_l(klon) ) 487 ALLOCATE( lmt_so2bb_h(klon) ) 488 ALLOCATE( lmt_dmsconc(klon) ) 489 ALLOCATE( lmt_dmsbio(klon) ) 490 ALLOCATE( lmt_h2sbio(klon) ) 491 ALLOCATE( lmt_bcff(klon) ) 492 ALLOCATE( lmt_bcnff(klon) ) 493 ALLOCATE( lmt_bcbb_l(klon) ) 494 ALLOCATE( lmt_bcbb_h(klon) ) 495 ALLOCATE( lmt_bcba(klon) ) 496 ALLOCATE( lmt_omff(klon) ) 497 ALLOCATE( lmt_omnff(klon) ) 498 ALLOCATE( lmt_ombb_l(klon) ) 499 ALLOCATE( lmt_ombb_h(klon) ) 500 ALLOCATE( lmt_omnat(klon) ) 501 ALLOCATE( lmt_omba(klon) ) 502 ALLOCATE(lmt_sea_salt(klon,ss_bins)) 503 504 505 506 507 !temporal hardcoded null inicialization of assimilation emmision factors 508 scale_param_ssacc=1. 509 scale_param_sscoa=1. 510 scale_param_ind(:)=1. 511 scale_param_bb(:)=1. 512 scale_param_ff(:)=1. 513 scale_param_dustacc(:)=1. 514 scale_param_dustcoa(:)=1. 515 scale_param_dustsco(:)=1. 516 param_wstarBLperregion(:)=0. 517 param_wstarWAKEperregion(:)=0. 518 519 520 521 RETURN 522 END SUBROUTINE phytracr_spl_ini 523 524 525 526 527 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 528 SUBROUTINE phytracr_spl ( debutphy,lafin,jD_cur,jH_cur,iflag_conv, & ! I 529 pdtphys,ftsol, & ! I 530 t_seri,q_seri,paprs,pplay,RHcl, & ! I 531 pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, & ! I 532 coefh, cdragh, cdragm, yu1, yv1, & ! I 533 u_seri, v_seri, rlat,rlon, & ! I 534 pphis,pctsrf,pmflxr,pmflxs,prfl,psfl, & ! I 535 da,phi,phi2,d1a,dam,mp,ep,sigd,sij,clw,elij, & ! I 536 epmlmMm,eplaMm,upwd,dnwd,itop_con,ibas_con, & ! I 537 evapls,wdtrainA, wdtrainM,wght_cvfd, & ! I 538 fm_therm, entr_therm, rneb, & ! I 539 beta_fisrt,beta_v1, & ! I 540 zu10m,zv10m,wstar,ale_bl,ale_wake, & ! I 541 d_tr_dyn,tr_seri) ! O 542 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 543 544 USE mod_grid_phy_lmdz 545 USE mod_phys_lmdz_para 546 USE IOIPSL 547 USE dimphy 548 USE infotrac 549 USE indice_sol_mod 550 USE write_field_phy 551 552 553 USE mod_phys_lmdz_transfert_para 554 555 USE phys_cal_mod, only: jD_1jan,year_len, mth_len, days_elapsed, jh_1jan, year_cur, & 556 mth_cur, phys_cal_update 557 558 ! 559 IMPLICIT none 560 ! 561 562 !====================================================================== 563 ! Auteur(s) FH 564 ! Objet: Moniteur general des tendances traceurs 565 ! 566 ! Remarques en vrac: 567 ! ------------------ 568 ! 1/ le call phytrac se fait avec nqmax-2 donc nous avons bien 569 ! les vrais traceurs (nbtr) dans phytrac (pas la vapeur ni eau liquide) 570 !====================================================================== 571 #include "dimensions.h" 572 #include "chem.h" 573 #include "chem_spla.h" 574 #include "YOMCST.h" 575 #include "YOETHF.h" 576 #include "paramet.h" 577 #include "thermcell.h" 578 579 !====================================================================== 580 581 ! Arguments: 582 ! 583 ! EN ENTREE: 584 ! ========== 585 ! 586 ! divers: 587 ! ------- 588 ! 589 real,intent(in) :: pdtphys ! pas d'integration pour la physique (seconde) 590 REAL, intent(in):: jD_cur, jH_cur 591 real, intent(in) :: ftsol(klon,nbsrf) ! temperature du sol par type 592 real, intent(in) :: t_seri(klon,klev) ! temperature 593 real, intent(in) :: u_seri(klon,klev) ! vent 594 real , intent(in) :: v_seri(klon,klev) ! vent 595 real , intent(in) :: q_seri(klon,klev) ! vapeur d eau kg/kg 596 597 LOGICAL, INTENT(IN) :: lafin 598 599 real tr_seri(klon,klev,nbtr) ! traceur 600 real tmp_var(klon,klev) ! auxiliary variable to replace traceur 601 real tmp_var2(klon,nbtr) ! auxiliary variable to replace source 602 real tmp_var3(klon,klev,nbtr) ! auxiliary variable 3D 603 real dummy1d ! JE auxiliary variable 604 real aux_var2(klon) ! auxiliary variable to replace traceur 605 real aux_var3(klon,klev) ! auxiliary variable to replace traceur 606 real d_tr(klon,klev,nbtr) ! traceur tendance 607 real sconc_seri(klon,nbtr) ! surface concentration of traceur 608 ! 609 integer nbjour 610 save nbjour 611 !$OMP THREADPRIVATE(nbjour) 612 ! 613 INTEGER masque_aqua_cur(klon) 614 INTEGER masque_terra_cur(klon) 615 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: masque_aqua !mask for 1 day 616 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: masque_terra ! 617 !$OMP THREADPRIVATE(masque_aqua,masque_terra) 618 !!$OMP THREADPRIVATE(aod550_aqua,aod550_terra,aod670_aqua,aod670_terra) 619 !!$OMP THREADPRIVATE(aod865_aqua,aod865_terra) 620 621 INTEGER, SAVE :: nbreg_dust, nbreg_ind, nbreg_bb, nbreg_ss,nbreg_wstardust 622 !$OMP THREADPRIVATE(nbreg_dust, nbreg_ind, nbreg_bb,nbreg_ss,nbreg_wstardust) 623 624 625 626 REAL lmt_dms(klon) ! emissions de dms 627 628 !JE20150518<< 629 REAL, DIMENSION(klon_glo) :: aod550_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 630 REAL, DIMENSION(klon_glo) :: aod550_tr2_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 631 REAL, DIMENSION(klon_glo) :: aod550_ss_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 632 REAL, DIMENSION(klon_glo) :: aod550_dust_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 633 REAL, DIMENSION(klon_glo) :: aod550_dustsco_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 634 REAL, DIMENSION(klon_glo) :: aod670_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 635 REAL, DIMENSION(klon_glo) :: aod670_tr2_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 636 REAL, DIMENSION(klon_glo) :: aod670_ss_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 637 REAL, DIMENSION(klon_glo) :: aod670_dust_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 638 REAL, DIMENSION(klon_glo) :: aod670_dustsco_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 639 REAL, DIMENSION(klon_glo) :: aod865_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 640 REAL, DIMENSION(klon_glo) :: aod865_tr2_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 641 REAL, DIMENSION(klon_glo) :: aod865_ss_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 642 REAL, DIMENSION(klon_glo) :: aod865_dust_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 643 REAL, DIMENSION(klon_glo) :: aod865_dustsco_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 644 645 REAL, DIMENSION(klon_glo) :: aod550_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 646 REAL, DIMENSION(klon_glo) :: aod550_tr2_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 647 REAL, DIMENSION(klon_glo) :: aod550_ss_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 648 REAL, DIMENSION(klon_glo) :: aod550_dust_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 649 REAL, DIMENSION(klon_glo) :: aod550_dustsco_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 650 REAL, DIMENSION(klon_glo) :: aod670_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 651 REAL, DIMENSION(klon_glo) :: aod670_tr2_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 652 REAL, DIMENSION(klon_glo) :: aod670_ss_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 653 REAL, DIMENSION(klon_glo) :: aod670_dust_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 654 REAL, DIMENSION(klon_glo) :: aod670_dustsco_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 655 REAL, DIMENSION(klon_glo) :: aod865_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 656 REAL, DIMENSION(klon_glo) :: aod865_tr2_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 657 REAL, DIMENSION(klon_glo) :: aod865_ss_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 658 REAL, DIMENSION(klon_glo) :: aod865_dust_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 659 REAL, DIMENSION(klon_glo) :: aod865_dustsco_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 660 !!!!!!!!!!!!! 661 !JE20150518>> 662 663 664 665 666 real , intent(in) :: paprs(klon,klev+1) ! pression pour chaque inter-couche (en Pa) 667 real , intent(in) :: pplay(klon,klev) ! pression pour le mileu de chaque couche (en Pa) 668 real , intent(in) :: RHcl(klon,klev) ! humidite relativen ciel clair 669 real znivsig(klev) ! indice des couches 670 real paire(klon) 671 real, intent(in) :: pphis(klon) 672 real, intent(in) :: pctsrf(klon,nbsrf) 673 logical , intent(in) :: debutphy ! le flag de l'initialisation de la physique 674 ! 675 ! Scaling Parameters: 676 ! ---------------------- 677 ! 678 CHARACTER*50 c_Directory 679 CHARACTER*80 c_FileName1 680 CHARACTER*80 c_FileName2 681 CHARACTER*130 c_FullName1 682 CHARACTER*130 c_FullName2 683 INTEGER :: xidx, yidx 684 INTEGER,DIMENSION(klon) :: mask_bbreg 685 INTEGER,DIMENSION(klon) :: mask_ffso2reg 686 INTEGER :: aux_mask1 687 INTEGER :: aux_mask2 688 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_so4 !Defines regions for SO4 689 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_ind !Defines regions for SO2, BC & OM 690 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_bb !Defines regions for SO2, BC & OM 691 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_dust !Defines dust regions 692 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_wstardust !Defines dust regions 693 !$OMP THREADPRIVATE(iregion_so4,iregion_ind,iregion_bb,iregion_dust,iregion_wstardust) 694 695 ! Emissions: 696 697 ! 698 !---------------------------- SEA SALT & DUST emissions ------------------------ 699 REAL lmt_sea_salt(klon,ss_bins) !Sea salt 0.03-8.0 um 700 REAL u10m_ec1(klon),v10m_ec1(klon) 701 REAL u10m_ec2(klon),v10m_ec2(klon),dust_ec2(klon) 702 REAL dust_ec(klon) 703 ! new dust emission chimere je20140522 704 REAL,DIMENSION(klon),INTENT(IN) :: zu10m 705 REAL,DIMENSION(klon),INTENT(IN) :: zv10m 706 REAL,DIMENSION(klon),INTENT(IN) :: wstar,ale_bl,ale_wake 707 708 709 ! 710 ! Rem : nbtr : nombre de vrais traceurs est defini dans dimphy.h 711 712 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 713 !Dynamique 714 !-------- 715 REAL,DIMENSION(klon,klev,nbtr),INTENT(IN) :: d_tr_dyn 716 717 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 718 ! convection: 719 ! ----------- 720 ! 721 REAL , intent(in) :: pmfu(klon,klev) ! flux de masse dans le panache montant 722 REAL , intent(in) :: pmfd(klon,klev) ! flux de masse dans le panache descendant 723 REAL, intent(in) :: pen_u(klon,klev) ! flux entraine dans le panache montant 724 REAL, intent(in) :: pde_u(klon,klev) ! flux detraine dans le panache montant 725 REAL, intent(in) :: pen_d(klon,klev) ! flux entraine dans le panache descendant 726 REAL, intent(in) :: pde_d(klon,klev) ! flux detraine dans le panache descendant 727 ! 728 ! Convection KE scheme: 729 ! --------------------- 730 ! 731 !! Variables pour le lessivage convectif 732 REAL,DIMENSION(klon,klev),INTENT(IN) :: da 733 REAL,DIMENSION(klon,klev,klev),INTENT(IN):: phi 734 REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: phi2 735 REAL,DIMENSION(klon,klev),INTENT(IN) :: d1a,dam 736 REAL,DIMENSION(klon,klev),INTENT(IN) :: mp 737 REAL,DIMENSION(klon,klev),INTENT(IN) :: upwd ! saturated 738 ! updraft mass flux 739 REAL,DIMENSION(klon,klev),INTENT(IN) :: dnwd ! saturated 740 ! downdraft mass flux 741 INTEGER,DIMENSION(klon),INTENT(IN) :: itop_con 742 INTEGER,DIMENSION(klon),INTENT(IN) :: ibas_con 743 REAL,DIMENSION(klon,klev) :: evapls 744 REAL,DIMENSION(klon,klev),INTENT(IN) :: wdtrainA 745 REAL,DIMENSION(klon,klev),INTENT(IN) :: wdtrainM 746 747 748 REAL,DIMENSION(klon,klev),INTENT(IN) :: ep 749 REAL,DIMENSION(klon),INTENT(IN) :: sigd 750 REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: sij 751 REAL,DIMENSION(klon,klev),INTENT(IN) :: clw 752 REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: elij 753 REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: epmlmMm 754 REAL,DIMENSION(klon,klev),INTENT(IN) :: eplaMm 755 REAL,DIMENSION(klon,klev),INTENT(IN) :: wght_cvfd !RL 756 757 758 ! KE: Tendances de traceurs (Td) et flux de traceurs: 759 ! ------------------------ 760 REAL,DIMENSION(klon,klev) :: Mint 761 REAL,DIMENSION(klon,klev,nbtr) :: zmfd1a 762 REAL,DIMENSION(klon,klev,nbtr) :: zmfdam 763 REAL,DIMENSION(klon,klev,nbtr) :: zmfphi2 764 765 ! !tra dans pluie LS a la surf. 766 ! outputs for cvltr_spl 767 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_cv_o 768 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_trsp_o 769 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_sscav_o 770 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_sat_o 771 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_uscav_o 772 !!!!!!!!!!!!!!!!! 773 !!!!!!!!!!!!!!!!! 774 !!!!!!!!!!!!!!!!! 775 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_insc_o 776 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_bcscav_o 777 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_evapls_o 778 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_ls_o 779 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_dyn_o 780 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_cl_o 781 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_th_o 782 !!!!!!!!!!!!!!!!! 783 !!!!!!!!!!!!!!!!! 784 !!!!!!!!!!!!!!!!! 785 786 !$OMP THREADPRIVATE(d_tr_cv_o,d_tr_trsp_o,d_tr_sscav_o,d_tr_sat_o,d_tr_uscav_o) 787 !$OMP THREADPRIVATE(d_tr_insc_o,d_tr_bcscav_o,d_tr_evapls_o,d_tr_ls_o) 788 !$OMP THREADPRIVATE(d_tr_dyn_o,d_tr_cl_o,d_tr_th_o) 789 790 791 INTEGER :: nsplit 792 ! 793 794 795 796 ! 797 ! Lessivage 798 ! --------- 799 ! 800 REAL, intent(in) :: pmflxr(klon,klev+1), pmflxs(klon,klev+1) !--convection 801 REAL, intent(in) :: prfl(klon,klev+1), psfl(klon,klev+1) !--large-scale 802 ! JE REAL pmflxr(klon,klev), pmflxs(klon,klev) !--convection ! Titane 803 ! JE REAL prfl(klon,klev), psfl(klon,klev) !--large-scale ! Titane 804 REAL :: ql_incl ! contenu en eau liquide nuageuse dans le nuage ! ql_incl=oliq/rneb 805 REAL :: ql_incloud_ref ! ref value of in-cloud condensed water content 806 807 REAL,DIMENSION(klon,klev),INTENT(IN) :: rneb ! fraction nuageuse (grande echelle) 808 ! 809 810 REAL,DIMENSION(klon,klev) :: beta_fisrt ! taux de conversion 811 ! ! de l'eau cond (de fisrtilp) 812 REAL,DIMENSION(klon,klev) :: beta_v1 ! -- (originale version) 813 INTEGER,SAVE :: iflag_lscav_omp,iflag_lscav 814 !$OMP THREADPRIVATE(iflag_lscav_omp,iflag_lscav) 815 816 817 818 819 !Thermiques: 820 !---------- 821 REAL,DIMENSION(klon,klev+1),INTENT(IN) :: fm_therm 822 REAL,DIMENSION(klon,klev),INTENT(IN) :: entr_therm 823 824 825 ! 826 ! Couche limite: 827 ! -------------- 828 ! 829 REAL , intent(in) :: coefh(klon,klev) ! coeff melange CL 830 REAL , intent(in) :: cdragh(klon), cdragm(klon) 831 REAL, intent(in) :: yu1(klon) ! vent dans la 1iere couche 832 REAL, intent(in) :: yv1(klon) ! vent dans la 1iere couche 833 ! 834 ! 835 !---------------------------------------------------------------------- 836 REAL his_ds(klon,nbtr) 837 REAL his_dh(klon,nbtr) 838 REAL his_dhlsc(klon,nbtr) ! in-cloud scavenging lsc 839 REAL his_dhcon(klon,nbtr) ! in-cloud scavenging con 840 REAL his_dhbclsc(klon,nbtr) ! below-cloud scavenging lsc 841 REAL his_dhbccon(klon,nbtr) ! below-cloud scavenging con 842 REAL trm(klon,nbtr) 843 ! 844 REAL u10m_ec(klon), v10m_ec(klon) 845 ! 846 REAL his_th(klon,nbtr) 847 REAL his_dhkecv(klon,nbtr) 848 REAL his_dhkelsc(klon,nbtr) 849 850 851 ! 852 ! Coordonnees 853 ! ----------- 854 ! 855 REAL, intent(in) :: rlat(klon) ! latitudes pour chaque point 856 REAL, intent(in) :: rlon(klon) ! longitudes pour chaque point 857 ! 858 INTEGER i, k, it, j, ig 859 ! 860 ! DEFINITION OF DIAGNOSTIC VARIABLES 861 ! 862 REAL diag_trm(nbtr), diag_drydep(nbtr) 863 REAL diag_wetdep(nbtr), diag_cvtdep(nbtr) 864 REAL diag_emissn(nbtr), diag_g2part 865 REAL diag_sedimt 866 REAL trm_aux(nbtr), src_aux(nbtr) 867 ! 868 ! Variables locales pour effectuer les appels en serie 869 !---------------------------------------------------- 870 REAL source_tr(klon,nbtr) 871 REAL flux_tr(klon,nbtr) 872 REAL m_conc(klon,klev) 873 ! REAL sed_ss(klon) ! corresponds to tracer 3 874 ! REAL sed_dust(klon) ! corresponds to tracer 4 875 ! REAL sed_dustsco(klon) ! corresponds to tracer 4 876 REAL henry(nbtr) !--cste de Henry mol/l/atm 877 REAL kk(nbtr) !--coefficient de var avec T (K) 878 REAL alpha_r(nbtr)!--coefficient d'impaction pour la pluie 879 REAL alpha_s(nbtr)!--coefficient d'impaction pour la neige 880 REAL vdep_oce(nbtr), vdep_sic(nbtr) 881 REAL vdep_ter(nbtr), vdep_lic(nbtr) 882 REAL ccntrAA_spla(nbtr) 883 REAL ccntrENV_spla(nbtr) 884 REAL coefcoli_spla(nbtr) 885 REAL dtrconv(klon,nbtr) 886 REAL zrho(klon,klev), zdz(klon,klev) 887 REAL zalt(klon,klev) 888 REAL,DIMENSION(klon,klev) :: zmasse ! densité atmosphérique 889 ! . Kg/m2 890 REAL,DIMENSION(klon,klev) :: ztra_th 891 REAL qmin, qmax, aux 892 ! PARAMETER (qmin=0.0, qmax=1.e33) 893 PARAMETER (qmin=1.e33, qmax=-1.e33) 894 895 ! Variables to save data into file 896 !---------------------------------- 897 898 CHARACTER*2 str2 899 LOGICAL ok_histrac 900 !JE2014124 PARAMETER (ok_histrac=.true.) 901 PARAMETER (ok_histrac=.false.) 902 ! PARAMETER (ok_chimeredust=.false.) 903 ! PARAMETER (ok_chimeredust=.true.) 904 INTEGER ndex2d(iim*(jjm+1)), ndex3d(iim*(jjm+1)*klev) 905 INTEGER nhori1, nhori2, nhori3, nhori4, nhori5, nvert 906 INTEGER nid_tra1, nid_tra2, nid_tra3, nid_tra4, nid_tra5 907 SAVE nid_tra1, nid_tra2, nid_tra3, nid_tra4, nid_tra5 908 !$OMP THREADPRIVATE(nid_tra1, nid_tra2, nid_tra3, nid_tra4, nid_tra5) 909 INTEGER itra 910 SAVE itra ! compteur pour la physique 911 !$OMP THREADPRIVATE(itra) 912 INTEGER ecrit_tra, ecrit_tra_h, ecrit_tra_m 913 SAVE ecrit_tra, ecrit_tra_h, ecrit_tra_m 914 !$OMP THREADPRIVATE(ecrit_tra, ecrit_tra_h, ecrit_tra_m) 915 REAL presnivs(klev) ! pressions approximat. des milieux couches ( en PA) 916 REAL zx_tmp_2d(iim,jjm+1), zx_tmp_3d(iim,jjm+1,klev) 917 REAL zx_tmp_fi2d(klon), zx_tmp_fi3d(klon, klev) 918 ! REAL zx_lon(iim,jjm+1), zx_lat(iim,jjm+1) 919 REAL zx_lon_glo(nbp_lon,nbp_lat), zx_lat_glo(nbp_lon,nbp_lat) 920 REAL zsto, zout, zout_h, zout_m, zjulian 921 922 !------Molar Masses 923 REAL masse(nbtr) 924 ! 925 REAL fracso2emis !--fraction so2 emis en so2 926 PARAMETER (fracso2emis=0.95) 927 REAL frach2sofso2 !--fraction h2s from so2 928 PARAMETER (frach2sofso2=0.0426) 929 ! 930 ! Controles 931 !------------- 932 LOGICAL convection,lessivage,lminmax,lcheckmass 933 DATA convection,lessivage,lminmax,lcheckmass & 934 /.true.,.true.,.true.,.false./ 935 ! 936 REAL xconv(nbtr) 937 ! 938 LOGICAL anthropo, bateau, edgar 939 DATA anthropo,bateau,edgar/.true.,.true.,.true./ 940 ! 941 !c bc_source 942 INTEGER kminbc, kmaxbc 943 !JE20150715 PARAMETER (kminbc=3, kmaxbc=5) 944 PARAMETER (kminbc=4, kmaxbc=7) 945 ! 946 REAL tr1_cont, tr2_cont, tr3_cont, tr4_cont 947 ! 948 ! JE for updating in cltrac 949 REAL,DIMENSION(klon,klev) :: delp ! epaisseur de couche (Pa) 950 !JE20140507 REAL,DIMENSION(klon,nbtr) :: d_tr_dry ! Td depot sec/traceur (1st layer),ALLOCATABLE,SAVE jyg 951 !JE20140507 REAL,DIMENSION(klon,nbtr) :: flux_tr_dry 952 ! SAVE d_tr_dry 953 !! JE for include gas to particle conversion in output 954 ! REAL his_g2pgas(klon) ! gastoparticle in gas units (check!) 955 ! REAL his_g2paer(klon) ! gastoparticle in aerosol units (check!) 956 ! 957 INTEGER ,intent(in) :: iflag_conv 958 LOGICAL iscm3 ! debug variable. for checkmass ! JE 959 960 !------------------------------------------------------------------------ 961 ! only to compute time consumption of each process 962 !---- 963 INTEGER clock_start,clock_end,clock_rate,clock_start_spla 964 INTEGER clock_end_outphytracr,clock_start_outphytracr 965 INTEGER ti_init,dife,ti_inittype,ti_inittwrite 966 INTEGER ti_spla,ti_emis,ti_depo,ti_cltr,ti_ther 967 INTEGER ti_sedi,ti_gasp,ti_wetap,ti_cvltr,ti_lscs,ti_brop,ti_outs 968 INTEGER ti_nophytracr,clock_per_max 969 REAL tia_init,tia_inittype,tia_inittwrite 970 REAL tia_spla,tia_emis,tia_depo,tia_cltr,tia_ther 971 REAL tia_sedi,tia_gasp,tia_wetap,tia_cvltr,tia_lscs 972 REAL tia_brop,tia_outs 973 REAL tia_nophytracr 974 975 SAVE tia_init,tia_inittype,tia_inittwrite 976 SAVE tia_spla,tia_emis,tia_depo,tia_cltr,tia_ther 977 SAVE tia_sedi,tia_gasp,tia_wetap,tia_cvltr,tia_lscs 978 SAVE tia_brop,tia_outs 979 SAVE ti_nophytracr 980 SAVE tia_nophytracr 981 SAVE clock_end_outphytracr,clock_start_outphytracr 982 SAVE clock_per_max 983 LOGICAL logitime 984 !$OMP THREADPRIVATE(tia_init,tia_inittype,tia_inittwrite) 985 !$OMP THREADPRIVATE(tia_spla,tia_emis,tia_depo,tia_cltr,tia_ther) 986 !$OMP THREADPRIVATE(tia_sedi,tia_gasp,tia_wetap,tia_cvltr,tia_lscs) 987 !$OMP THREADPRIVATE(tia_brop,tia_outs) 988 !$OMP THREADPRIVATE(ti_nophytracr) 989 !$OMP THREADPRIVATE(tia_nophytracr) 990 !$OMP THREADPRIVATE(clock_end_outphytracr,clock_start_outphytracr) 991 !$OMP THREADPRIVATE(clock_per_max) 992 993 ! utils parallelization 994 REAL :: auxklon_glo(klon_glo) 995 INTEGER :: iauxklon_glo(klon_glo) 996 REAL, DIMENSION(klon_glo,nbp_lev) :: auxklonnbp_lev 997 REAL, DIMENSION(klon_glo,nbp_lev,nbtr) :: auxklonklevnbtr_glo 998 REAL,DIMENSION(nbp_lon,nbp_lat) :: zx_tmp_2d_glo 999 REAL,DIMENSION(nbp_lon,nbp_lat,nbp_lev) :: zx_tmp_3d_glo 1000 REAL,DIMENSION(klon_glo) :: zx_tmp_fi2d_glo 1001 REAL,DIMENSION(klon_glo , nbp_lev) :: zx_tmp_fi3d_glo 1002 REAL,DIMENSION(klon_glo,nbtr) :: auxklonnbtr_glo 1003 1004 1005 1006 source_tr=0. 1007 1008 1009 1010 if (debutphy) then 1011 #ifdef IOPHYS_DUST 1012 CALL iophys_ini 1013 #endif 1014 nbreg_ind=1 1015 nbreg_bb=1 1016 nbreg_dust=1 1017 nbreg_wstardust=1 1018 CALL phytracr_spl_ini(klon,nbreg_ind,nbreg_bb,nbreg_dust,nbreg_wstardust) 1019 endif 1020 1021 1022 #ifdef IOPHYS_DUST 1023 do it=1,nbtr 1024 write(str2,'(i2.2)') it 1025 call iophys_ecrit('TRA'//str2,klev,'SOURCE','',tr_seri(:,:,it)) 1026 enddo 1027 #endif 1028 1029 1030 1031 1032 ijulday=jD_cur-jD_1jan+1 1033 nbjour = 1 1034 1035 paramname_ind='ind' 1036 paramname_bb='bb' 1037 paramname_ff='ind' 1038 paramname_dustacc='dustacc' 1039 paramname_dustcoa='dustcoasco' 1040 paramname_dustsco='dustcoasco' 1041 ! paramname_dustacc='dust' 1042 ! paramname_dustcoa='dust' 1043 ! paramname_dustsco='dust' 1044 paramname_wstarBL='pwstarbl' 1045 paramname_wstarWAKE='pwstarwake' 1046 paramname_ssacc='ssacc' 1047 paramname_sscoa='sscoa' 1048 1049 filescaleparams='modvalues.nc' 1050 CALL readscaleparamsnc_spl(scale_param_ind, & 1051 nbreg_ind, paramname_ind, & 1052 scale_param_ff, nbreg_ind,paramname_ff, & 1053 scale_param_bb, nbreg_bb,paramname_bb, & 1054 scale_param_dustacc, nbreg_dust,paramname_dustacc, & 1055 scale_param_dustcoa, nbreg_dust,paramname_dustcoa, & 1056 scale_param_dustsco, nbreg_dust,paramname_dustsco, & 1057 param_wstarBLperregion, nbreg_wstardust, paramname_wstarBL, & 1058 param_wstarWAKEperregion, nbreg_wstardust, paramname_wstarWAKE, & 1059 scale_param_ssacc , paramname_ssacc, & 1060 scale_param_sscoa , paramname_sscoa, & 1061 filescaleparams,ijulday,jH_cur, pdtphys,debutphy) 1062 ! add seasalt 1063 1064 print *,'JE : check scale_params' 1065 1066 print *, 'nbreg_ind', nbreg_ind 1067 print *, 'nbreg_dust', nbreg_dust 1068 print *, 'nbreg_bb', nbreg_bb 1069 print *, 'ind', scale_param_ind 1070 print *, 'dustacc', scale_param_dustacc 1071 print *, 'dustcoa', scale_param_dustcoa 1072 print *, 'dustsco', scale_param_dustsco 1073 print *, 'wstardustBL', param_wstarBLperregion 1074 print *, 'wstardustWAKE', param_wstarWAKEperregion 1075 print *, 'ff', scale_param_ff 1076 print *, 'bb', scale_param_bb 1077 print *, 'ssacc', scale_param_ssacc 1078 print *, 'sscoa', scale_param_sscoa 1079 1080 print *,'JE: before read_newemissions ' 1081 print *,'JE: jD_cur:',jD_cur,' ijulday:',ijulday,' jH_cur:',jH_cur,' pdtphys:',pdtphys 1082 print *,'JE: now read_newemissions:' 1083 print *,'lmt_so2ff_l AVANT' , MINVAL(lmt_so2ff_l), MAXVAL(lmt_so2ff_l) 1084 call read_newemissions(ijulday,jH_cur ,edgar, flag_dms,debutphy, & !I 1085 pdtphys, lafin, nbjour, pctsrf, & !I 1086 t_seri, rlat, rlon, & !I 1087 pmflxr, pmflxs, prfl, psfl, & !I 1088 u10m_ec, v10m_ec, dust_ec, & !O 1089 lmt_sea_salt, lmt_so2ff_l, & !O 1090 lmt_so2ff_h, lmt_so2nff, & !O 1091 lmt_so2ba, lmt_so2bb_l, lmt_so2bb_h, & !O 1092 lmt_so2volc_cont, lmt_altvolc_cont, & !O 1093 lmt_so2volc_expl, lmt_altvolc_expl, & !O 1094 lmt_dmsbio, lmt_h2sbio, lmt_dmsconc, & !O 1095 lmt_bcff, lmt_bcnff, lmt_bcbb_l, & !O 1096 lmt_bcbb_h, lmt_bcba, lmt_omff, & !O 1097 lmt_omnff, lmt_ombb_l, lmt_ombb_h, & !O 1098 lmt_omnat, lmt_omba) !O 1099 1100 1101 print *,'Check emissions' 1102 print *,'lmt_so2ff_l' , MINVAL(lmt_so2ff_l), MAXVAL(lmt_so2ff_l) 1103 print *,'lmt_so2ff_h' , MINVAL(lmt_so2ff_h), MAXVAL(lmt_so2ff_h) 1104 print *,'lmt_so2nff' , MINVAL(lmt_so2nff), MAXVAL(lmt_so2nff) 1105 print *,'lmt_so2ba' , MINVAL(lmt_so2ba), MAXVAL(lmt_so2ba) 1106 print *,'lmt_so2bb_l' , MINVAL(lmt_so2bb_l), MAXVAL(lmt_so2bb_l) 1107 print *,'lmt_so2bb_h' , MINVAL(lmt_so2bb_h), MAXVAL(lmt_so2bb_h) 1108 print *,'lmt_so2volc_cont' , MINVAL(lmt_so2volc_cont), MAXVAL(lmt_so2volc_cont) 1109 print *,'lmt_altvolc_cont' , MINVAL(lmt_altvolc_cont), MAXVAL(lmt_altvolc_cont) 1110 print *,'lmt_so2volc_expl' , MINVAL(lmt_so2volc_expl), MAXVAL(lmt_so2volc_expl) 1111 print *,'lmt_altvolc_expl' , MINVAL(lmt_altvolc_expl), MAXVAL(lmt_altvolc_expl) 1112 print *,'lmt_dmsbio' , MINVAL(lmt_dmsbio), MAXVAL(lmt_dmsbio) 1113 print *,'lmt_h2sbio' , MINVAL(lmt_h2sbio), MAXVAL(lmt_h2sbio) 1114 print *,'lmt_dmsconc' , MINVAL(lmt_dmsconc), MAXVAL(lmt_dmsconc) 1115 print *,'lmt_bcff' , MINVAL(lmt_bcff), MAXVAL(lmt_bcff) 1116 print *,'lmt_bcnff' , MINVAL(lmt_bcnff), MAXVAL(lmt_bcnff) 1117 print *,'lmt_bcbb_l' , MINVAL(lmt_bcbb_l), MAXVAL(lmt_bcbb_l) 1118 print *,'lmt_bcbb_h' , MINVAL(lmt_bcbb_h), MAXVAL(lmt_bcbb_h) 1119 print *,'lmt_bcba' , MINVAL(lmt_bcba), MAXVAL(lmt_bcba) 1120 print *,'lmt_omff' , MINVAL(lmt_omff), MAXVAL(lmt_omff) 1121 print *,'lmt_omnff' , MINVAL(lmt_omnff), MAXVAL(lmt_omnff) 1122 print *,'lmt_ombb_l' , MINVAL(lmt_ombb_l), MAXVAL(lmt_ombb_l) 1123 print *,'lmt_ombb_h' , MINVAL(lmt_ombb_h), MAXVAL(lmt_ombb_h) 1124 print *,'lmt_omnat' , MINVAL(lmt_omnat), MAXVAL(lmt_omnat) 1125 print *,'lmt_omba' , MINVAL(lmt_omba), MAXVAL(lmt_omba) 1126 print *,'JE iflag_con',iflag_conv 1127 1128 1129 !JE_dbg 1130 do i=1,klon 1131 tsol(i)=0.0 1132 do j=1,nbsrf 1133 tsol(i)=tsol(i)+ftsol(i,j)*pctsrf(i,j) 1134 enddo 1135 enddo 1136 1137 1138 !====================================================================== 1139 ! INITIALISATIONS 1140 !====================================================================== 1141 ! CALL checknanqfi(da(:,:),1.,-1.,' da_ before 1142 ! . phytracr_inphytracr') 1143 1144 ! 1145 ! computing time 1146 ! logitime=.true. 1147 logitime=.false. 1148 IF (logitime) THEN 1149 clock_start=0 1150 clock_end=0 1151 clock_rate=0 1152 CALL SYSTEM_CLOCK(COUNT_RATE=clock_rate,COUNT_MAX=clock_per_max) 1153 CALL SYSTEM_CLOCK(COUNT=clock_start_spla) 1154 clock_start=clock_start_spla 1155 clock_end_outphytracr=clock_start_spla 1156 ENDIF 1157 1158 1159 ! Definition of tracers index. 1160 print*,'OK ON PASSSE BIEN LA' 1161 CALL minmaxsource(source_tr,qmin,qmax,'A1 maxsource init phytracr') 1162 1163 1164 IF (debutphy) THEN 1165 id_prec=-1 1166 id_fine=-1 1167 id_coss=-1 1168 id_codu=-1 1169 id_scdu=-1 1170 !print *,nbtr 1171 do it=1,nbtr 1172 print *, it, tname(it+nqo) 1173 if (tname(it+nqo) == 'PREC' ) then 1174 id_prec=it 1175 endif 1176 if (tname(it+nqo) == 'FINE' ) then 1177 id_fine=it 1178 endif 1179 if (tname(it+nqo) == 'COSS' ) then 1180 id_coss=it 1181 endif 1182 if (tname(it+nqo) == 'CODU' ) then 1183 id_codu=it 1184 endif 1185 if (tname(it+nqo) == 'SCDU' ) then 1186 id_scdu=it 1187 endif 1188 enddo 1189 ! check consistency with dust emission scheme: 1190 if (ok_chimeredust) then 1191 if (.not.( id_scdu>0 .and. id_codu>0 .and. id_fine>0)) then 1192 call abort_gcm('phytracr_mod', 'pb in ok_chimdust 0',1) 1193 endif 1194 else 1195 if (id_scdu>0) then 1196 call abort_gcm('phytracr_mod', 'pb in ok_chimdust 1 SCDU',1) 1197 endif 1198 if ( (id_codu .le. 0) .or. ( id_fine.le.0) ) then 1199 call abort_gcm('phytracr_mod', 'pb in ok_chimdust 1',1) 1200 endif 1201 endif 1202 1203 1204 !print *,id_prec,id_fine,id_coss,id_codu,id_scdu 1205 ENDIF 1206 1207 1208 1209 1210 1211 1212 !---fraction of tracer that is convected (Tiedke) 1213 xconv(:)=0. 1214 if(id_prec>0) xconv(id_prec)=0.8 1215 if(id_fine>0) xconv(id_fine)=0.5 1216 if(id_coss>0) xconv(id_coss)=0.5 1217 if(id_codu>0) xconv(id_codu)=0.6 1218 if(id_scdu>0) xconv(id_scdu)=0.6 !!JE fix 1219 1220 masse(:)=1. 1221 if(id_prec>0) masse(id_prec)=32. 1222 if(id_fine>0) masse(id_fine)=6.02e23 1223 if(id_coss>0) masse(id_coss)=6.02e23 1224 if(id_codu>0) masse(id_codu)=6.02e23 1225 if(id_scdu>0) masse(id_scdu)=6.02e23 1226 1227 henry(:)=0. 1228 if(id_prec>0) henry(id_prec)=1.4 1229 if(id_fine>0) henry(id_fine)=0.0 1230 if(id_coss>0) henry(id_coss)=0.0 1231 if(id_codu>0) henry(id_codu)=0.0 1232 if(id_scdu>0) henry(id_scdu)=0.0 1233 !henry= (/1.4, 0.0, 0.0, 0.0/) 1234 kk(:)=0. 1235 if(id_prec>0) kk(id_prec)=2900. 1236 if(id_fine>0) kk(id_fine)=0.0 1237 if(id_coss>0) kk(id_coss)=0.0 1238 if(id_codu>0) kk(id_codu)=0.0 1239 if(id_scdu>0) kk(id_scdu)=0.0 1240 !kk = (/2900., 0., 0., 0./) 1241 alpha_r(:)=0. 1242 if(id_prec>0) alpha_r(id_prec)=0.0 1243 if(id_fine>0) alpha_r(id_fine)=0.001 1244 if(id_coss>0) alpha_r(id_coss)=0.001 1245 if(id_codu>0) alpha_r(id_codu)=0.001 1246 if(id_scdu>0) alpha_r(id_scdu)=0.001 !JE fix 1247 alpha_s(:)=0. 1248 if(id_prec>0) alpha_s(id_prec)=0.0 1249 if(id_fine>0) alpha_s(id_fine)=0.01 1250 if(id_coss>0) alpha_s(id_coss)=0.01 1251 if(id_codu>0) alpha_s(id_codu)=0.01 1252 if(id_scdu>0) alpha_s(id_scdu)=0.01 !JE fix 1253 1254 ! alpha_r = (/0., 0.001, 0.001, 0.001/) 1255 ! alpha_s = (/0., 0.01, 0.01, 0.01/) 1256 1257 ! nhl DATA vdep_oce /0.7, 0.05, 1.2, 1.2/ 1258 ! nhl vdep_oce for tr1 is a weighted average of dms and so2 dep velocities 1259 !vdep_oce = (/0.28, 0.28, 1.2, 1.2/) 1260 vdep_oce(:)=0. 1261 if(id_prec>0) vdep_oce(id_prec) = 0.28 1262 if(id_fine>0) vdep_oce(id_fine) = 0.28 1263 if(id_coss>0) vdep_oce(id_coss) = 1.2 1264 if(id_codu>0) vdep_oce(id_codu) = 1.2 1265 if(id_scdu>0) vdep_oce(id_scdu) = 1.2 1266 vdep_sic(:)=0. 1267 if(id_prec>0) vdep_sic(id_prec) = 0.2 1268 if(id_fine>0) vdep_sic(id_fine) = 0.17 1269 if(id_coss>0) vdep_sic(id_coss) = 1.2 1270 if(id_codu>0) vdep_sic(id_codu) = 1.2 1271 if(id_scdu>0) vdep_sic(id_scdu) = 1.2 1272 1273 !vdep_sic = (/0.2, 0.17, 1.2, 1.2/) 1274 !vdep_ter = (/0.3, 0.14, 1.2, 1.2/) 1275 vdep_ter(:)=0. 1276 if(id_prec>0) vdep_ter(id_prec) = 0.3 1277 if(id_fine>0) vdep_ter(id_fine) = 0.14 1278 if(id_coss>0) vdep_ter(id_coss) = 1.2 1279 if(id_codu>0) vdep_ter(id_codu) = 1.2 1280 if(id_scdu>0) vdep_ter(id_scdu) = 1.2 1281 1282 vdep_lic(:)=0. 1283 if(id_prec>0) vdep_lic(id_prec) = 0.2 1284 if(id_fine>0) vdep_lic(id_fine) = 0.17 1285 if(id_coss>0) vdep_lic(id_coss) = 1.2 1286 if(id_codu>0) vdep_lic(id_codu) = 1.2 1287 if(id_scdu>0) vdep_lic(id_scdu) = 1.2 1288 1289 1290 ! convective KE lessivage aer params: 1291 ccntrAA_spla(:)=0. 1292 if(id_prec>0) ccntrAA_spla(id_prec)=-9999. 1293 if(id_fine>0) ccntrAA_spla(id_fine)=0.7 1294 if(id_coss>0) ccntrAA_spla(id_coss)=1.0 1295 if(id_codu>0) ccntrAA_spla(id_codu)=0.7 1296 if(id_scdu>0) ccntrAA_spla(id_scdu)=0.7 1297 1298 ccntrENV_spla(:)=0. 1299 if(id_prec>0) ccntrENV_spla(id_prec)=-9999. 1300 if(id_fine>0) ccntrENV_spla(id_fine)=0.7 1301 if(id_coss>0) ccntrENV_spla(id_coss)=1.0 1302 if(id_codu>0) ccntrENV_spla(id_codu)=0.7 1303 if(id_scdu>0) ccntrENV_spla(id_scdu)=0.7 1304 1305 coefcoli_spla(:)=0. 1306 if(id_prec>0) coefcoli_spla(id_prec)=-9999. 1307 if(id_fine>0) coefcoli_spla(id_fine)=0.001 1308 if(id_coss>0) coefcoli_spla(id_coss)=0.001 1309 if(id_codu>0) coefcoli_spla(id_codu)=0.001 1310 if(id_scdu>0) coefcoli_spla(id_scdu)=0.001 1311 1312 !vdep_lic = (/0.2, 0.17, 1.2, 1.2/) 1313 ! 1314 1315 iscm3=.false. 1316 if (debutphy) then 1317 !$OMP MASTER 1318 CALL suphel 1319 print *, 'let s check nbtr=', nbtr 1320 ! JE before put in zero 1321 IF (lminmax) THEN 1322 DO it=1,nbtr 1323 CALL checknanqfi(tr_seri(:,:,it),qmin,qmax,'nan init phytracr') 1324 ENDDO 1325 DO it=1,nbtr 1326 CALL minmaxqfi2(tr_seri(:,:,it),qmin,qmax,'minmax init phytracr') 1327 ENDDO 1328 CALL minmaxsource(source_tr,qmin,qmax,'maxsource init phytracr') 1329 ENDIF 1330 ! JE initializon to cero the tracers 1331 ! DO it=1, nbtr 1332 ! tr_seri(:,:,it)=0.0 1333 ! ENDDO 1334 ! JE end 1335 ! Initializing to zero tr_seri for comparison purposes 1336 ! tr_seri(:,:,:)=0.0 1337 ! 1338 ! DO it=1,nbtr 1339 ! trm_aux(it)=0.0 1340 ! src_aux(it)=0.0 1341 ! diag_trm(it)=0.0 1342 ! diag_drydep(it)=0.0 1343 ! diag_wetdep(it)=0.0 1344 ! diag_cvtdep(it)=0.0 1345 ! diag_emissn(it)=0.0 1346 ! ENDDO 1347 ! diag_g2part=0.0 1348 print *,'PREPARE FILES TO SAVE VARIABLES' 1349 ! 1350 nbjour=30 1351 ecrit_tra = NINT(86400./pdtphys) !--1-day average 1352 ecrit_tra_h = NINT(86400./pdtphys*0.25) !--6-hour average 1353 ecrit_tra_m = NINT(86400./pdtphys*FLOAT(nbjour)) !--1-mth average 1354 print *,'ecrit_tra=', pdtphys, ecrit_tra 1355 1356 IF (ok_histrac) THEN 1357 IF (is_mpi_root .AND. is_omp_root) THEN 1358 1359 itra=0 1360 ! 1361 CALL ymds2ju(1900, 1, 1, 0.0, zjulian) 1362 ! 1363 ! print *, 'klon,iim,jjm+1 = ',klon,iim,jjm+1 1364 print *, 'glo klon,iim,jjm+1 = ',klon_glo,nbp_lon,nbp_lat 1365 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,rlon,zx_lon_glo) 1366 ! 1367 ! DO i = 1, iim 1368 DO i = 1, nbp_lon 1369 zx_lon_glo(i,1) = rlon(i+1) 1370 zx_lon_glo(i,nbp_lat) = rlon(i+1) 1371 ENDDO 1372 ! 1373 CALL histbeg("histrac_spl", nbp_lon,zx_lon_glo, & 1374 nbp_lat,zx_lat_glo, & 1375 1,nbp_lon,1,nbp_lat, 0, zjulian, pdtphys, & 1376 nhori1, nid_tra1) 1377 ! 1378 CALL histbeg("lessivage_spl", nbp_lon,zx_lon_glo, & 1379 nbp_lat,zx_lat_glo, & 1380 1,nbp_lon,1,nbp_lat, 0, zjulian, pdtphys, & 1381 nhori2, nid_tra2) 1382 ! 1383 CALL histbeg("traceur_spl", nbp_lon,zx_lon_glo, & 1384 nbp_lat,zx_lat_glo, & 1385 1,nbp_lon,1,nbp_lat, 0, zjulian, pdtphys, & 1386 nhori3, nid_tra3) 1387 ! 1388 CALL histvert(nid_tra1, "presnivs", "Vertical levels", "mb", & 1389 nbp_lev, presnivs, nvert) 1390 ! 1391 CALL histvert(nid_tra2, "presnivs", "Vertical levels", "mb", & 1392 nbp_lev, presnivs, nvert) 1393 ! 1394 CALL histvert(nid_tra3, "presnivs", "Vertical levels", "mb", & 1395 nbp_lev, presnivs, nvert) 1396 ! 1397 zsto = pdtphys 1398 zout = pdtphys * FLOAT(ecrit_tra) 1399 zout_h = pdtphys * FLOAT(ecrit_tra_h) 1400 zout_m = pdtphys * FLOAT(ecrit_tra_m) 1401 print *,'zsto zout=', zsto, zout 1402 1403 ! 1404 !----------------- HISTORY FILES OF TRACER EMISSIONS ------------------- 1405 ! 1406 ! HISTRAC 1407 ! 1408 CALL histdef(nid_tra1, "fluxbb", "Flux BB", "mg/m2/s", & 1409 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1410 "ave(X)", zsto,zout) 1411 ! 1412 CALL histdef(nid_tra1, "fluxff", "Flux FF", "mg/m2/s", & 1413 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1414 "ave(X)", zsto,zout) 1415 ! 1416 CALL histdef(nid_tra1, "fluxbcbb", "Flux BC-BB", "mg/m2/s", & 1417 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1418 "ave(X)", zsto,zout) 1419 ! 1420 CALL histdef(nid_tra1, "fluxbcff", "Flux BC-FF", "mg/m2/s", & 1421 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1422 "ave(X)", zsto,zout) 1423 ! 1424 CALL histdef(nid_tra1, "fluxbcnff", "Flux BC-NFF", "mg/m2/s", & 1425 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1426 "ave(X)", zsto,zout) 1427 ! 1428 CALL histdef(nid_tra1, "fluxbcba", "Flux BC-BA", "mg/m2/s", & 1429 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1430 "ave(X)", zsto,zout) 1431 ! 1432 CALL histdef(nid_tra1, "fluxbc", "Flux BC", "mg/m2/s", & 1433 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1434 "ave(X)", zsto,zout) 1435 ! 1436 CALL histdef(nid_tra1, "fluxombb", "Flux OM-BB", "mg/m2/s" , & 1437 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1438 "ave(X)", zsto,zout) 1439 ! 1440 CALL histdef(nid_tra1, "fluxomff", "Flux OM-FF", "mg/m2/s", & 1441 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1442 "ave(X)", zsto,zout) 1443 ! 1444 CALL histdef(nid_tra1, "fluxomnff", "Flux OM-NFF", "mg/m2/s", & 1445 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1446 "ave(X)", zsto,zout) 1447 ! 1448 CALL histdef(nid_tra1, "fluxomba", "Flux OM-BA", "mg/m2/s", & 1449 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1450 "ave(X)", zsto,zout) 1451 ! 1452 CALL histdef(nid_tra1, "fluxomnat", "Flux OM-NT", "mg/m2/s", & 1453 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1454 "ave(X)", zsto,zout) 1455 ! 1456 CALL histdef(nid_tra1, "fluxom", "Flux OM", "mg/m2/s", & 1457 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1458 "ave(X)", zsto,zout) 1459 ! 1460 CALL histdef(nid_tra1,"fluxh2sff","Flux H2S FF","mgS/m2/s", & 1461 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1462 "ave(X)", zsto,zout) 1463 ! 1464 CALL histdef(nid_tra1,"fluxh2snff","Flux H2S non-FF", & 1465 "mgS/m2/s",nbp_lon,nbp_lat,nhori1, 1,1,1, & 1466 -99, 32, & 1467 "ave(X)", zsto,zout) 1468 ! 1469 CALL histdef(nid_tra1,"fluxso2ff","Flux SO2 FF","mgS/m2/s", & 1470 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1471 "ave(X)", zsto,zout) 1472 ! 1473 CALL histdef(nid_tra1,"fluxso2nff","Flux SO2 non-FF", & 1474 "mgS/m2/s",nbp_lon,nbp_lat,nhori1, 1,1,1, & 1475 -99, 32, & 1476 "ave(X)", zsto,zout) 1477 ! 1478 CALL histdef(nid_tra1, "fluxso2bb", "Flux SO2 BB","mgS/m2/s", & 1479 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1480 "ave(X)", zsto,zout) 1481 ! 1482 CALL histdef(nid_tra1,"fluxso2vol","Flux SO2 Vol","mgS/m2/s", & 1483 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1484 "ave(X)", zsto,zout) 1485 ! 1486 CALL histdef(nid_tra1, "fluxso2ba", "Flux SO2 Ba","mgS/m2/s", & 1487 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1488 "ave(X)", zsto,zout) 1489 ! 1490 CALL histdef(nid_tra1, "fluxso2", "Flux SO2","mgS/m2/s", & 1491 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1492 "ave(X)", zsto,zout) 1493 ! 1494 CALL histdef(nid_tra1,"fluxso4ff","Flux SO4 FF","mgS/m2/s", & 1495 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1496 "ave(X)", zsto,zout) 1497 ! 1498 CALL histdef(nid_tra1,"fluxso4nff","Flux SO4 non-FF", & 1499 "mgS/m2/s", nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1500 "ave(X)", zsto,zout) 1501 ! 1502 CALL histdef(nid_tra1, "fluxso4bb", "Flux SO4 BB","mgS/m2/s", & 1503 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1504 "ave(X)", zsto,zout) 1505 ! 1506 CALL histdef(nid_tra1, "fluxso4ba", "Flux SO4 Ba","mgS/m2/s", & 1507 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1508 "ave(X)", zsto,zout) 1509 ! 1510 CALL histdef(nid_tra1, "fluxso4", "Flux SO4","mgS/m2/s", & 1511 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1512 "ave(X)", zsto,zout) 1513 ! 1514 CALL histdef(nid_tra1, "fluxdms", "Flux DMS", "mgS/m2/s", & 1515 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1516 "ave(X)", zsto,zout) 1517 ! 1518 CALL histdef(nid_tra1,"fluxh2sbio","Flux H2S Bio","mgS/m2/s", & 1519 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1520 "ave(X)", zsto,zout) 1521 ! 1522 CALL histdef(nid_tra1, "fluxdustec", & 1523 "Flux Dust EC", "mg/m2/s", & 1524 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1525 "ave(X)", zsto,zout) 1526 ! 1527 CALL histdef(nid_tra1,"fluxddfine","DD Fine Mode","mg/m2/s", & 1528 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1529 "ave(X)", zsto,zout) 1530 ! 1531 CALL histdef(nid_tra1,"fluxddcoa","DD Coarse Mode","mg/m2/s", & 1532 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1533 "ave(X)", zsto,zout) 1534 ! 1535 CALL histdef(nid_tra1,"fluxddsco","DD SCoarse Mode","mg/m2/s", & 1536 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1537 "ave(X)", zsto,zout) 1538 ! 1539 CALL histdef(nid_tra1,"fluxdd","Flux DD","mg/m2/s", & 1540 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1541 "ave(X)", zsto,zout) 1542 ! 1543 CALL histdef(nid_tra1,"fluxssfine","SS Fine Mode","mg/m2/s", & 1544 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1545 "ave(X)", zsto,zout) 1546 ! 1547 CALL histdef(nid_tra1,"fluxsscoa","SS Coarse Mode","mg/m2/s", & 1548 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1549 "ave(X)", zsto,zout) 1550 ! 1551 CALL histdef(nid_tra1,"fluxss","Flux SS","mg/m2/s", & 1552 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1553 "ave(X)", zsto,zout) 1554 ! 1555 !nhl CALL histdef(nid_tra1,"fluxso4chem","SO4 chem prod", 1556 !nhl . "gAer/kgAir", 1557 !nhl . nbp_lon,nbp_lat,nhori1, nbp_lev,1,nbp_lev,nvert, 32, 1558 !nhl . "ave(X)", zsto,zout) 1559 ! 1560 CALL histdef(nid_tra1,"flux_sparam_ind","Ind emiss", & 1561 "mg/m2/s", & 1562 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1563 "ave(X)", zsto,zout) 1564 ! 1565 CALL histdef(nid_tra1,"flux_sparam_bb","BB emiss", & 1566 "mg/m2/s", & 1567 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1568 "ave(X)", zsto,zout) 1569 ! 1570 CALL histdef(nid_tra1,"flux_sparam_ff","FF emiss", & 1571 "mg/m2/s", & 1572 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1573 "ave(X)", zsto,zout) 1574 ! 1575 CALL histdef(nid_tra1,"flux_sparam_ddfine","DD fine emiss", & 1576 "mg/m2/s", & 1577 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1578 "ave(X)", zsto,zout) 1579 ! 1580 CALL histdef(nid_tra1,"flux_sparam_ddcoa","DD coarse emiss", & 1581 "mg/m2/s", & 1582 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1583 "ave(X)", zsto,zout) 1584 ! 1585 CALL histdef(nid_tra1,"flux_sparam_ddsco","DD Scoarse emiss", & 1586 "mg/m2/s", & 1587 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1588 "ave(X)", zsto,zout) 1589 ! 1590 CALL histdef(nid_tra1,"flux_sparam_ssfine","SS fine emiss", & 1591 "mg/m2/s", & 1592 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1593 "ave(X)", zsto,zout) 1594 ! 1595 CALL histdef(nid_tra1,"flux_sparam_sscoa","SS coarse emiss", & 1596 "mg/m2/s", & 1597 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1598 "ave(X)", zsto,zout) 1599 ! 1600 CALL histdef(nid_tra1,"u10m","Zonal wind at 10 m", & 1601 "m/s", & 1602 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1603 "ave(X)", zsto,zout) 1604 ! 1605 CALL histdef(nid_tra1,"v10m","Meridional wind at 10 m", & 1606 "m/s", & 1607 nbp_lon,nbp_lat,nhori1, 1,1,1, -99, 32, & 1608 "ave(X)", zsto,zout) 1609 ! 1610 !nhl CALL histdef(nid_tra1,"flux_sparam_sulf","SO4 chem prod", 1611 !nhl . "gAer/kgAir", 1612 !nhl . nbp_lon,nbp_lat,nhori1, nbp_lev,1,nbp_lev,nvert, 32, 1613 !nhl . "ave(X)", zsto,zout) 1614 ! 1615 ! TRACEUR 1616 ! 1617 CALL histdef(nid_tra3, "taue550", "Tau ext 550", " ", & 1618 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1619 "ave(X)", zsto,zout) 1620 ! 1621 CALL histdef(nid_tra3, "taue670", "Tau ext 670", " ", & 1622 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1623 "ave(X)", zsto,zout) 1624 ! 1625 CALL histdef(nid_tra3, "taue865", "Tau ext 865", " ", & 1626 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1627 "ave(X)", zsto,zout) 1628 ! 1629 CALL histdef(nid_tra3, "taue550_tr2", "Tau ext 550tr2", " ", & 1630 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1631 "ave(X)", zsto,zout) 1632 ! 1633 CALL histdef(nid_tra3, "taue670_tr2", "Tau ext 670tr2", " ", & 1634 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1635 "ave(X)", zsto,zout) 1636 ! 1637 CALL histdef(nid_tra3, "taue865_tr2", "Tau ext 865tr2", " ", & 1638 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1639 "ave(X)", zsto,zout) 1640 ! 1641 CALL histdef(nid_tra3, "taue550_ss", "Tau ext 550ss", " ", & 1642 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1643 "ave(X)", zsto,zout) 1644 ! 1645 CALL histdef(nid_tra3, "taue670_ss", "Tau ext 670ss", " ", & 1646 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1647 "ave(X)", zsto,zout) 1648 ! 1649 CALL histdef(nid_tra3, "taue865_ss", "Tau ext 865ss", " ", & 1650 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1651 "ave(X)", zsto,zout) 1652 ! 1653 CALL histdef(nid_tra3, "taue550_dust", "Tau ext 550dust", " " & 1654 ,nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1655 "ave(X)", zsto,zout) 1656 ! 1657 CALL histdef(nid_tra3, "taue670_dust", "Tau ext 670dust", " " & 1658 ,nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1659 "ave(X)", zsto,zout) 1660 ! 1661 CALL histdef(nid_tra3, "taue865_dust", "Tau ext 865dust", " " & 1662 ,nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1663 "ave(X)", zsto,zout) 1664 1665 CALL histdef(nid_tra3, "taue550_dustsco", & 1666 "Tau ext 550dustsco", " " & 1667 ,nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1668 "ave(X)", zsto,zout) 1669 ! 1670 CALL histdef(nid_tra3, "taue670_dustsco", & 1671 "Tau ext 670dustsco", " " & 1672 ,nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1673 "ave(X)", zsto,zout) 1674 ! 1675 CALL histdef(nid_tra3, "taue865_dustsco", & 1676 "Tau ext 865dustsco", " " & 1677 ,nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1678 "ave(X)", zsto,zout) 1679 1680 1681 CALL histdef(nid_tra3, "taue550_aqua", "Tau ext 550 aqua", " ", & 1682 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1683 "inst(X)", zout,zout) 1684 CALL histdef(nid_tra3, "taue550_terra", "Tau ext 550 terra", " ", & 1685 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1686 "inst(X)", zout,zout) 1687 CALL histdef(nid_tra3, "taue670_aqua", "Tau ext 670 aqua", " ", & 1688 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1689 "inst(X)", zout,zout) 1690 CALL histdef(nid_tra3, "taue670_terra", "Tau ext 670 terra", " ", & 1691 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1692 "inst(X)", zout,zout) 1693 CALL histdef(nid_tra3, "taue865_aqua", "Tau ext 865 aqua", " ", & 1694 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1695 "inst(X)", zout,zout) 1696 CALL histdef(nid_tra3, "taue865_terra", "Tau ext 865 terra", " ", & 1697 nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1698 "inst(X)", zout,zout) 1699 1700 1701 DO it=1, nbtr 1702 ! 1703 WRITE(str2,'(i2.2)') it 1704 ! 1705 CALL histdef(nid_tra3, "trm"//str2, "Burden No."//str2, & 1706 "mgS/m2", nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1707 "ave(X)", zsto,zout) 1708 ! 1709 CALL histdef(nid_tra3, "sconc"//str2, "Surf Conc. No."//str2, & 1710 "mg/m3", nbp_lon,nbp_lat,nhori3, 1,1,1, -99, 32, & 1711 "ave(X)", zsto,zout) 1712 ! 1713 ! LESSIVAGE 1714 ! 1715 CALL histdef(nid_tra2, "flux"//str2, "emission"//str2, & 1716 "mgS/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1, -99, 32, & 1717 "ave(X)", zsto,zout) 1718 ! 1719 CALL histdef(nid_tra2, "ds"//str2, "Depot sec No."//str2, & 1720 "mgS/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1, -99, 32, & 1721 "ave(X)", zsto,zout) 1722 ! 1723 CALL histdef(nid_tra2,"dh"//str2, & 1724 "Depot hum No."//str2, & 1725 "mgS/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1, -99, 32, & 1726 "ave(X)", zsto,zout) 1727 ! 1728 CALL histdef(nid_tra2,"dtrconv"//str2, & 1729 "Tiedke convective"//str2, & 1730 "mgS/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1, -99, 32, & 1731 "ave(X)", zsto,zout) 1732 1733 CALL histdef(nid_tra2,"dtherm"//str2, & 1734 "Thermals dtracer"//str2, & 1735 "mgS/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1, -99, 32, & 1736 "ave(X)", zsto,zout) 1737 1738 CALL histdef(nid_tra2,"dhkecv"//str2, & 1739 "KE dep hum convective"//str2, & 1740 "mgS/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1, -99, 32, & 1741 "ave(X)", zsto,zout) 1742 CALL histdef(nid_tra2,"dhkelsc"//str2, & 1743 "KE dep hum large scale"//str2, & 1744 "mgS/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1, -99, 32, & 1745 "ave(X)", zsto,zout) 1746 1747 1748 CALL histdef(nid_tra2,"d_tr_ds"//str2, & 1749 " Tendance dep sec"//str2, & 1750 "mgS/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1, -99, 32, & 1751 "ave(X)", zsto,zout) 1752 1753 1754 CALL histdef(nid_tra2,"d_tr_cv"//str2, & 1755 "cvltr d_tr_cv"//str2, & 1756 "mgS/m2/s", & 1757 nbp_lon,nbp_lat,nhori2, nbp_lev,1,nbp_lev,nvert, 32, & 1758 "ave(X)", zsto,zout) 1759 CALL histdef(nid_tra2,"d_tr_trsp"//str2 & 1760 ,"cvltr d_tr_trsp"//str2, & 1761 "mgS/m2/s", & 1762 nbp_lon,nbp_lat,nhori2, nbp_lev,1,nbp_lev,nvert, 32, & 1763 "ave(X)", zsto,zout) 1764 CALL histdef(nid_tra2,"d_tr_sscav"//str2 & 1765 ,"cvltr d_tr_sscav"//str2,"mgS/m2/s", & 1766 nbp_lon,nbp_lat,nhori2, nbp_lev,1,nbp_lev,nvert, 32, & 1767 "ave(X)", zsto,zout) 1768 CALL histdef(nid_tra2,"d_tr_sat"//str2 & 1769 ,"cvltr d_tr_sat"//str2, & 1770 "mgS/m2/s", & 1771 nbp_lon,nbp_lat,nhori2, nbp_lev,1,nbp_lev,nvert, 32, & 1772 "ave(X)", zsto,zout) 1773 CALL histdef(nid_tra2,"d_tr_uscav"//str2, & 1774 "cvltr d_tr_uscav"//str2, & 1775 "mgS/m2/s", & 1776 nbp_lon,nbp_lat,nhori2, nbp_lev,1,nbp_lev,nvert, 32, & 1777 "ave(X)", zsto,zout) 1778 CALL histdef(nid_tra2,"d_tr_insc"//str2, & !!! 1779 "cvltr d_tr_insc"//str2, & 1780 "mgS/m2/s", & 1781 nbp_lon,nbp_lat,nhori2, nbp_lev,1,nbp_lev,nvert, 32, & 1782 "ave(X)", zsto,zout) 1783 CALL histdef(nid_tra2,"d_tr_bcscav"//str2, & 1784 "cvltr d_tr_bcscav"//str2, & 1785 "mgS/m2/s", & 1786 nbp_lon,nbp_lat,nhori2, nbp_lev,1,nbp_lev,nvert, 32, & 1787 "ave(X)", zsto,zout) 1788 CALL histdef(nid_tra2,"d_tr_evapls"//str2, & 1789 "cvltr d_tr_evapls"//str2, & 1790 "mgS/m2/s", & 1791 nbp_lon,nbp_lat,nhori2, nbp_lev,1,nbp_lev,nvert, 32, & 1792 "ave(X)", zsto,zout) 1793 CALL histdef(nid_tra2,"d_tr_ls"//str2, & 1794 "cvltr d_tr_ls"//str2, & 1795 "mgS/m2/s", & 1796 nbp_lon,nbp_lat,nhori2, nbp_lev,1,nbp_lev,nvert, 32, & 1797 "ave(X)", zsto,zout) !! 1798 CALL histdef(nid_tra2,"d_tr_dyn"//str2, & 1799 "large-scale d_tr_dyn"//str2, & 1800 "mgS/m2/s", & 1801 nbp_lon,nbp_lat,nhori2, nbp_lev,1,nbp_lev,nvert, 32, & 1802 "ave(X)", zsto,zout) !! 1803 CALL histdef(nid_tra2,"d_tr_cl"//str2, & 1804 "cvltr d_tr_cl"//str2, & 1805 "mgS/m2/s", & 1806 nbp_lon,nbp_lat,nhori2, nbp_lev,1,nbp_lev,nvert, 32, & 1807 "ave(X)", zsto,zout) !! 1808 CALL histdef(nid_tra2,"d_tr_th"//str2, & 1809 "cvltr d_tr_th"//str2, & 1810 "mgS/m2/s", & 1811 nbp_lon,nbp_lat,nhori2, nbp_lev,1,nbp_lev,nvert, 32, & 1812 "ave(X)", zsto,zout) !! 1813 1814 1815 1816 ! 1817 ENDDO 1818 ! 1819 CALL histdef(nid_tra2, "sed_ss", "Sedmet. Tr3", & 1820 "mg/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1, -99, & 1821 32, & 1822 "ave(X)", zsto,zout) 1823 ! 1824 CALL histdef(nid_tra2, "sed_dust", "Sedmet. Tr4", & 1825 "mg/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1, & 1826 -99, 32, & 1827 "ave(X)", zsto,zout) 1828 ! 1829 CALL histdef(nid_tra2, "sed_dustsco", "Sedmet. Tr5", & 1830 "mg/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1, & 1831 -99, 32, & 1832 "ave(X)", zsto,zout) 1833 ! 1834 CALL histdef(nid_tra2, "g2p_gas", "Gas2particle gas sink", & 1835 "mg-S/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1,-99, 32, & 1836 "ave(X)", zsto,zout) 1837 ! 1838 CALL histdef(nid_tra2, "g2p_aer", "Gas2particle tr2 src", & 1839 "mg/m2/s", nbp_lon,nbp_lat,nhori2, 1,1,1,-99,32, & 1840 "ave(X)", zsto,zout) 1841 ! 1842 !------------------------------------------------------------------- 1843 ! 1844 CALL histend(nid_tra1) 1845 ! 1846 CALL histend(nid_tra2) 1847 ! 1848 CALL histend(nid_tra3) 1849 ! 1850 !------------------------------------------------------------------- 1851 1852 ! nbjour=1 1853 ENDIF ! mpi root 1854 ENDIF !--ok_histrac 1855 1856 ! 1857 ! IF (.NOT.edgar.AND.bateau) THEN 1858 ! PRINT *,'ATTENTION risque de compter double les bateaux' 1859 ! STOP 1860 ! ENDIF 1861 ! 1862 ! 1863 ! 1864 !$OMP END MASTER 1865 !$OMP BARRIER 1866 endif ! debutphy 1867 ! 1868 !====================================================================== 1869 ! Initialisations 1870 !====================================================================== 1871 ! 1872 ! 1873 ! je KE init 1874 IF (debutphy) THEN 1875 !$OMP MASTER 1876 1877 ALLOCATE(d_tr_cl(klon,klev,nbtr),d_tr_dry(klon,nbtr)) 1878 ALLOCATE(flux_tr_dry(klon,nbtr),d_tr_dec(klon,klev,nbtr)) 1879 ALLOCATE(d_tr_cv(klon,klev,nbtr)) 1880 ALLOCATE(d_tr_insc(klon,klev,nbtr),d_tr_bcscav(klon,klev,nbtr)) 1881 ALLOCATE(d_tr_evapls(klon,klev,nbtr),d_tr_ls(klon,klev,nbtr)) 1882 ALLOCATE(qPrls(klon,nbtr),d_tr_trsp(klon,klev,nbtr)) 1883 ALLOCATE(d_tr_sscav(klon,klev,nbtr),d_tr_sat(klon,klev,nbtr)) 1884 ALLOCATE(d_tr_uscav(klon,klev,nbtr),qPr(klon,klev,nbtr)) 1885 ALLOCATE(qDi(klon,klev,nbtr)) 1886 ALLOCATE(qPa(klon,klev,nbtr),qMel(klon,klev,nbtr)) 1887 ALLOCATE(qTrdi(klon,klev,nbtr),dtrcvMA(klon,klev,nbtr)) 1888 ALLOCATE(d_tr_th(klon,klev,nbtr)) 1889 ALLOCATE(d_tr_lessi_impa(klon,klev,nbtr)) 1890 ALLOCATE(d_tr_lessi_nucl(klon,klev,nbtr)) 1891 433 !AS : This subroutine centralises the ALLOCATE needed for the 1st call of 434 ! phys_output_write_spl in physiq 435 436 USE dimphy 437 USE infotrac_phy, ONLY: nbtr 438 USE dustemission_mod, ONLY : dustemis_out_init 439 440 ! pour les variables m[1-3]dflux 441 CALL dustemis_out_init() 442 443 !traceur 1892 444 ALLOCATE( diff_aod550_tot(klon) ) 1893 445 ALLOCATE( diag_aod670_tot(klon) ) … … 1905 457 ALLOCATE( diag_aod670_dustsco(klon) ) 1906 458 ALLOCATE( diag_aod865_dustsco(klon) ) 1907 459 !AS: les 15 vars _terra et 15 _aqua suivantes sont groupees differemment dans spla_output_write.h 460 ALLOCATE( aod550_terra(klon)) 461 ALLOCATE( aod550_tr2_terra(klon)) 462 ALLOCATE( aod550_ss_terra(klon)) 463 ALLOCATE( aod550_dust_terra(klon)) 464 ALLOCATE( aod550_dustsco_terra(klon)) 465 ALLOCATE( aod670_terra(klon)) 466 ALLOCATE( aod670_tr2_terra(klon)) 467 ALLOCATE( aod670_ss_terra(klon)) 468 ALLOCATE( aod670_dust_terra(klon)) 469 ALLOCATE( aod670_dustsco_terra(klon)) 470 ALLOCATE( aod865_terra(klon)) 471 ALLOCATE( aod865_tr2_terra(klon)) 472 ALLOCATE( aod865_ss_terra(klon)) 473 ALLOCATE( aod865_dust_terra(klon)) 474 ALLOCATE( aod865_dustsco_terra(klon)) 475 476 ALLOCATE( aod550_aqua(klon)) 477 ALLOCATE( aod550_tr2_aqua(klon)) 478 ALLOCATE( aod550_ss_aqua(klon)) 479 ALLOCATE( aod550_dust_aqua(klon)) 480 ALLOCATE( aod550_dustsco_aqua(klon)) 481 ALLOCATE( aod670_aqua(klon)) 482 ALLOCATE( aod670_tr2_aqua(klon)) 483 ALLOCATE( aod670_ss_aqua(klon)) 484 ALLOCATE( aod670_dust_aqua(klon)) 485 ALLOCATE( aod670_dustsco_aqua(klon)) 486 ALLOCATE( aod865_aqua(klon)) 487 ALLOCATE( aod865_tr2_aqua(klon)) 488 ALLOCATE( aod865_ss_aqua(klon)) 489 ALLOCATE( aod865_dust_aqua(klon)) 490 ALLOCATE( aod865_dustsco_aqua(klon)) 1908 491 1909 492 ALLOCATE( sconc01(klon) ) … … 1918 501 ALLOCATE( trm05(klon) ) 1919 502 1920 503 ! Lessivage 1921 504 ALLOCATE( flux01(klon) ) 1922 505 ALLOCATE( flux02(klon) ) … … 1984 567 ALLOCATE( d_tr_uscav04(klon,klev)) 1985 568 ALLOCATE( d_tr_uscav05(klon,klev)) 1986 1987 569 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1988 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1989 570 ALLOCATE( d_tr_insc01(klon,klev)) 1990 571 ALLOCATE( d_tr_insc02(klon,klev)) … … 2007 588 ALLOCATE( d_tr_ls04(klon,klev)) 2008 589 ALLOCATE( d_tr_ls05(klon,klev)) 590 2009 591 ALLOCATE( d_tr_dyn01(klon,klev)) 2010 592 ALLOCATE( d_tr_dyn02(klon,klev)) … … 2012 594 ALLOCATE( d_tr_dyn04(klon,klev)) 2013 595 ALLOCATE( d_tr_dyn05(klon,klev)) 596 2014 597 ALLOCATE( d_tr_cl01(klon,klev)) 2015 598 ALLOCATE( d_tr_cl02(klon,klev)) … … 2023 606 ALLOCATE( d_tr_th05(klon,klev)) 2024 607 2025 ALLOCATE( sed_ss3D(klon,klev))2026 ALLOCATE( sed_dust3D(klon,klev))2027 ALLOCATE( sed_dustsco3D(klon,klev))2028 2029 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2030 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2031 2032 608 ALLOCATE( sed_ss(klon)) 2033 609 ALLOCATE( sed_dust(klon)) … … 2036 612 ALLOCATE( his_g2paer(klon)) 2037 613 614 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 615 ALLOCATE( sed_ss3D(klon,klev)) 616 ALLOCATE( sed_dust3D(klon,klev)) 617 ALLOCATE( sed_dustsco3D(klon,klev)) 618 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 619 620 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 621 ! histrac_spl 622 ! 2038 623 ALLOCATE( fluxbb(klon)) 2039 624 ALLOCATE( fluxff(klon)) … … 2083 668 ALLOCATE( v10m_ss(klon)) 2084 669 2085 670 !AS: in phys_output_write_spl, but not in spla_output_write.h 671 !------------------------------------------------------ 672 ALLOCATE(d_tr_cl(klon,klev,nbtr)) 673 ALLOCATE(d_tr_th(klon,klev,nbtr)) 674 ALLOCATE(d_tr_cv(klon,klev,nbtr)) 675 ALLOCATE(d_tr_lessi_impa(klon,klev,nbtr)) 676 ALLOCATE(d_tr_lessi_nucl(klon,klev,nbtr)) 677 ALLOCATE(d_tr_insc(klon,klev,nbtr)) 678 ALLOCATE(d_tr_bcscav(klon,klev,nbtr)) 679 ALLOCATE(d_tr_evapls(klon,klev,nbtr)) 680 ALLOCATE(d_tr_ls(klon,klev,nbtr)) 681 ALLOCATE(d_tr_trsp(klon,klev,nbtr)) 682 ALLOCATE(d_tr_sscav(klon,klev,nbtr)) 683 ALLOCATE(d_tr_sat(klon,klev,nbtr)) 684 ALLOCATE(d_tr_uscav(klon,klev,nbtr)) 685 686 END SUBROUTINE phytracr_spl_out_init 687 688 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 689 SUBROUTINE phytracr_spl_ini(klon,nbreg_ind,nbreg_bb,nbreg_dust,nbreg_wstardust) 690 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 691 692 693 IMPLICIT NONE 694 INTEGER klon,nbreg_ind,nbreg_bb,nbreg_dust,nbreg_wstardust 695 696 ALLOCATE( tsol(klon) ) 697 698 !AS: IF permettant le debranchage des coefs de Jeronimo Escribano: fichiers *_meta 699 ! nbreg_* sont initialisés à 1 dans phytracr_spl, if debutphy, 700 ! avant d'appeler la subroutine presente, phytracr_spl_ini 701 ! (phytracr_spl_ini appele readregionsdims2_spl, 702 ! qui lit et fait "bcast" de nbreg_ind,_bb,_dust,_wstardust dans fichiers regions_*_meta) 703 IF("ASSIM"=="YES") THEN 704 fileregionsdimsind='regions_ind_meta' 705 fileregionsdimsdust='regions_dustacc_meta' 706 ! fileregionsdimsdust='regions_dust_meta' 707 fileregionsdimsbb='regions_bb_meta' 708 fileregionsdimswstar='regions_pwstarwake_meta' 709 call readregionsdims2_spl(nbreg_ind,fileregionsdimsind) 710 call readregionsdims2_spl(nbreg_dust,fileregionsdimsdust) 711 call readregionsdims2_spl(nbreg_bb,fileregionsdimsbb) 712 call readregionsdims2_spl(nbreg_wstardust,fileregionsdimswstar) 713 ENDIF ! ASSIM 714 ! fin debranchage 715 716 !readregions_spl() 717 718 ALLOCATE(scale_param_ind(nbreg_ind)) 719 ALLOCATE(scale_param_bb(nbreg_bb)) 720 ALLOCATE(scale_param_ff(nbreg_ind)) 721 ALLOCATE(scale_param_dustacc(nbreg_dust)) 722 ALLOCATE(scale_param_dustcoa(nbreg_dust)) 723 ALLOCATE(scale_param_dustsco(nbreg_dust)) 724 ALLOCATE(param_wstarBLperregion(nbreg_wstardust)) 725 ALLOCATE(param_wstarWAKEperregion(nbreg_wstardust)) 726 ALLOCATE( dust_ec(klon) ) 727 ALLOCATE( u10m_ec(klon) ) 728 ALLOCATE( v10m_ec(klon) ) 729 ALLOCATE( lmt_so2volc_cont(klon) ) 730 ALLOCATE( lmt_altvolc_cont(klon) ) 731 ALLOCATE( lmt_so2volc_expl(klon) ) 732 ALLOCATE( lmt_altvolc_expl(klon) ) 733 ALLOCATE( lmt_so2ff_l(klon) ) 734 ALLOCATE( lmt_so2ff_h(klon) ) 735 ALLOCATE( lmt_so2nff(klon) ) 736 ALLOCATE( lmt_so2ba(klon) ) 737 ALLOCATE( lmt_so2bb_l(klon) ) 738 ALLOCATE( lmt_so2bb_h(klon) ) 739 ALLOCATE( lmt_dmsconc(klon) ) 740 ALLOCATE( lmt_dmsbio(klon) ) 741 ALLOCATE( lmt_h2sbio(klon) ) 742 ALLOCATE( lmt_bcff(klon) ) 743 ALLOCATE( lmt_bcnff(klon) ) 744 ALLOCATE( lmt_bcbb_l(klon) ) 745 ALLOCATE( lmt_bcbb_h(klon) ) 746 ALLOCATE( lmt_bcba(klon) ) 747 ALLOCATE( lmt_omff(klon) ) 748 ALLOCATE( lmt_omnff(klon) ) 749 ALLOCATE( lmt_ombb_l(klon) ) 750 ALLOCATE( lmt_ombb_h(klon) ) 751 ALLOCATE( lmt_omnat(klon) ) 752 ALLOCATE( lmt_omba(klon) ) 753 ALLOCATE(lmt_sea_salt(klon,ss_bins)) 754 755 756 757 758 !temporal hardcoded null inicialization of assimilation emmision factors 759 !AS: scale_param sont ensuite lus dans modvalues.nc 760 ! par la subroutine read_scalenc, appelee par readscaleparamsnc_spl 761 scale_param_ssacc=1. 762 scale_param_sscoa=1. 763 scale_param_ind(:)=1. 764 scale_param_bb(:)=1. 765 scale_param_ff(:)=1. 766 scale_param_dustacc(:)=1. 767 scale_param_dustcoa(:)=1. 768 scale_param_dustsco(:)=1. 769 param_wstarBLperregion(:)=0. 770 param_wstarWAKEperregion(:)=0. 771 772 773 RETURN 774 END SUBROUTINE phytracr_spl_ini 775 776 777 778 779 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 780 SUBROUTINE phytracr_spl ( debutphy,lafin,jD_cur,jH_cur,iflag_conv, & ! I 781 pdtphys,ftsol, & ! I 782 t_seri,q_seri,paprs,pplay,RHcl, & ! I 783 pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, & ! I 784 coefh, cdragh, cdragm, yu1, yv1, & ! I 785 u_seri, v_seri, rlat,rlon, & ! I 786 pphis,pctsrf,pmflxr,pmflxs,prfl,psfl, & ! I 787 da,phi,phi2,d1a,dam,mp,ep,sigd,sij,clw,elij, & ! I 788 epmlmMm,eplaMm,upwd,dnwd,itop_con,ibas_con, & ! I 789 evapls,wdtrainA, wdtrainM,wght_cvfd, & ! I 790 fm_therm, entr_therm, rneb, & ! I 791 beta_fisrt,beta_v1, & ! I 792 zu10m,zv10m,wstar,ale_bl,ale_wake, & ! I 793 d_tr_dyn,tr_seri) ! O 794 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 795 796 USE mod_grid_phy_lmdz 797 USE mod_phys_lmdz_para 798 USE IOIPSL 799 USE dimphy 800 USE infotrac 801 USE indice_sol_mod 802 USE write_field_phy 803 804 805 USE mod_phys_lmdz_transfert_para 806 807 USE phys_cal_mod, only: jD_1jan,year_len, mth_len, days_elapsed, jh_1jan, year_cur, & 808 mth_cur, phys_cal_update 809 810 ! 811 IMPLICIT none 812 ! 813 814 !====================================================================== 815 ! Auteur(s) FH 816 ! Objet: Moniteur general des tendances traceurs 817 ! 818 ! Remarques en vrac: 819 ! ------------------ 820 ! 1/ le call phytrac se fait avec nqmax-2 donc nous avons bien 821 ! les vrais traceurs (nbtr) dans phytrac (pas la vapeur ni eau liquide) 822 !====================================================================== 823 #include "dimensions.h" 824 #include "chem.h" 825 #include "chem_spla.h" 826 #include "YOMCST.h" 827 #include "YOETHF.h" 828 #include "paramet.h" 829 #include "thermcell.h" 830 831 !====================================================================== 832 833 ! Arguments: 834 ! 835 ! EN ENTREE: 836 ! ========== 837 ! 838 ! divers: 839 ! ------- 840 ! 841 real,intent(in) :: pdtphys ! pas d'integration pour la physique (seconde) 842 REAL, intent(in):: jD_cur, jH_cur 843 real, intent(in) :: ftsol(klon,nbsrf) ! temperature du sol par type 844 real, intent(in) :: t_seri(klon,klev) ! temperature 845 real, intent(in) :: u_seri(klon,klev) ! vent 846 real , intent(in) :: v_seri(klon,klev) ! vent 847 real , intent(in) :: q_seri(klon,klev) ! vapeur d eau kg/kg 848 849 LOGICAL, INTENT(IN) :: lafin 850 851 real tr_seri(klon,klev,nbtr) ! traceur 852 real tmp_var(klon,klev) ! auxiliary variable to replace traceur 853 real tmp_var2(klon,nbtr) ! auxiliary variable to replace source 854 real tmp_var3(klon,klev,nbtr) ! auxiliary variable 3D 855 real dummy1d ! JE auxiliary variable 856 real aux_var2(klon) ! auxiliary variable to replace traceur 857 real aux_var3(klon,klev) ! auxiliary variable to replace traceur 858 real d_tr(klon,klev,nbtr) ! traceur tendance 859 real sconc_seri(klon,nbtr) ! surface concentration of traceur 860 ! 861 integer nbjour 862 save nbjour 863 !$OMP THREADPRIVATE(nbjour) 864 ! 865 INTEGER masque_aqua_cur(klon) 866 INTEGER masque_terra_cur(klon) 867 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: masque_aqua !mask for 1 day 868 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: masque_terra ! 869 !$OMP THREADPRIVATE(masque_aqua,masque_terra) 870 871 INTEGER, SAVE :: nbreg_dust, nbreg_ind, nbreg_bb, nbreg_ss,nbreg_wstardust 872 !$OMP THREADPRIVATE(nbreg_dust, nbreg_ind, nbreg_bb,nbreg_ss,nbreg_wstardust) 873 874 875 876 REAL lmt_dms(klon) ! emissions de dms 877 878 !JE20150518<< 879 REAL, DIMENSION(klon_glo) :: aod550_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 880 REAL, DIMENSION(klon_glo) :: aod550_tr2_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 881 REAL, DIMENSION(klon_glo) :: aod550_ss_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 882 REAL, DIMENSION(klon_glo) :: aod550_dust_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 883 REAL, DIMENSION(klon_glo) :: aod550_dustsco_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 884 REAL, DIMENSION(klon_glo) :: aod670_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 885 REAL, DIMENSION(klon_glo) :: aod670_tr2_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 886 REAL, DIMENSION(klon_glo) :: aod670_ss_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 887 REAL, DIMENSION(klon_glo) :: aod670_dust_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 888 REAL, DIMENSION(klon_glo) :: aod670_dustsco_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 889 REAL, DIMENSION(klon_glo) :: aod865_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 890 REAL, DIMENSION(klon_glo) :: aod865_tr2_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 891 REAL, DIMENSION(klon_glo) :: aod865_ss_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 892 REAL, DIMENSION(klon_glo) :: aod865_dust_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 893 REAL, DIMENSION(klon_glo) :: aod865_dustsco_terra_glo ! AOD at terra overpass time ( 10.30 local hour) 894 895 REAL, DIMENSION(klon_glo) :: aod550_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 896 REAL, DIMENSION(klon_glo) :: aod550_tr2_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 897 REAL, DIMENSION(klon_glo) :: aod550_ss_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 898 REAL, DIMENSION(klon_glo) :: aod550_dust_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 899 REAL, DIMENSION(klon_glo) :: aod550_dustsco_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 900 REAL, DIMENSION(klon_glo) :: aod670_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 901 REAL, DIMENSION(klon_glo) :: aod670_tr2_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 902 REAL, DIMENSION(klon_glo) :: aod670_ss_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 903 REAL, DIMENSION(klon_glo) :: aod670_dust_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 904 REAL, DIMENSION(klon_glo) :: aod670_dustsco_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 905 REAL, DIMENSION(klon_glo) :: aod865_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 906 REAL, DIMENSION(klon_glo) :: aod865_tr2_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 907 REAL, DIMENSION(klon_glo) :: aod865_ss_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 908 REAL, DIMENSION(klon_glo) :: aod865_dust_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 909 REAL, DIMENSION(klon_glo) :: aod865_dustsco_aqua_glo ! AOD at aqua overpass time ( 13.30 local hour) 910 !!!!!!!!!!!!! 911 !JE20150518>> 912 913 914 915 916 real , intent(in) :: paprs(klon,klev+1) ! pression pour chaque inter-couche (en Pa) 917 real , intent(in) :: pplay(klon,klev) ! pression pour le mileu de chaque couche (en Pa) 918 real , intent(in) :: RHcl(klon,klev) ! humidite relativen ciel clair 919 real znivsig(klev) ! indice des couches 920 real paire(klon) 921 real, intent(in) :: pphis(klon) 922 real, intent(in) :: pctsrf(klon,nbsrf) 923 logical , intent(in) :: debutphy ! le flag de l'initialisation de la physique 924 ! 925 ! Scaling Parameters: 926 ! ---------------------- 927 ! 928 CHARACTER*50 c_Directory 929 CHARACTER*80 c_FileName1 930 CHARACTER*80 c_FileName2 931 CHARACTER*130 c_FullName1 932 CHARACTER*130 c_FullName2 933 INTEGER :: xidx, yidx 934 INTEGER,DIMENSION(klon) :: mask_bbreg 935 INTEGER,DIMENSION(klon) :: mask_ffso2reg 936 INTEGER :: aux_mask1 937 INTEGER :: aux_mask2 938 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_so4 !Defines regions for SO4 ; AS: PAS UTILISE! 939 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_ind !Defines regions for SO2, BC & OM 940 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_bb !Defines regions for SO2, BC & OM 941 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_dust !Defines dust regions 942 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_wstardust !Defines dust regions 943 !$OMP THREADPRIVATE(iregion_so4,iregion_ind,iregion_bb,iregion_dust,iregion_wstardust) 944 945 ! Emissions: 946 947 ! 948 !---------------------------- SEA SALT & DUST emissions ------------------------ 949 REAL lmt_sea_salt(klon,ss_bins) !Sea salt 0.03-8.0 um 950 REAL u10m_ec1(klon),v10m_ec1(klon) 951 REAL u10m_ec2(klon),v10m_ec2(klon),dust_ec2(klon) 952 REAL dust_ec(klon) 953 ! new dust emission chimere je20140522 954 REAL,DIMENSION(klon),INTENT(IN) :: zu10m 955 REAL,DIMENSION(klon),INTENT(IN) :: zv10m 956 REAL,DIMENSION(klon),INTENT(IN) :: wstar,ale_bl,ale_wake 957 958 959 ! 960 ! Rem : nbtr : nombre de vrais traceurs est defini dans dimphy.h 961 962 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 963 !Dynamique 964 !-------- 965 REAL,DIMENSION(klon,klev,nbtr),INTENT(IN) :: d_tr_dyn 966 967 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 968 ! convection: 969 ! ----------- 970 ! 971 REAL , intent(in) :: pmfu(klon,klev) ! flux de masse dans le panache montant 972 REAL , intent(in) :: pmfd(klon,klev) ! flux de masse dans le panache descendant 973 REAL, intent(in) :: pen_u(klon,klev) ! flux entraine dans le panache montant 974 REAL, intent(in) :: pde_u(klon,klev) ! flux detraine dans le panache montant 975 REAL, intent(in) :: pen_d(klon,klev) ! flux entraine dans le panache descendant 976 REAL, intent(in) :: pde_d(klon,klev) ! flux detraine dans le panache descendant 977 ! 978 ! Convection KE scheme: 979 ! --------------------- 980 ! 981 !! Variables pour le lessivage convectif 982 REAL,DIMENSION(klon,klev),INTENT(IN) :: da 983 REAL,DIMENSION(klon,klev,klev),INTENT(IN):: phi 984 REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: phi2 985 REAL,DIMENSION(klon,klev),INTENT(IN) :: d1a,dam 986 REAL,DIMENSION(klon,klev),INTENT(IN) :: mp 987 REAL,DIMENSION(klon,klev),INTENT(IN) :: upwd ! saturated 988 ! updraft mass flux 989 REAL,DIMENSION(klon,klev),INTENT(IN) :: dnwd ! saturated 990 ! downdraft mass flux 991 INTEGER,DIMENSION(klon),INTENT(IN) :: itop_con 992 INTEGER,DIMENSION(klon),INTENT(IN) :: ibas_con 993 REAL,DIMENSION(klon,klev) :: evapls 994 REAL,DIMENSION(klon,klev),INTENT(IN) :: wdtrainA 995 REAL,DIMENSION(klon,klev),INTENT(IN) :: wdtrainM 996 997 998 REAL,DIMENSION(klon,klev),INTENT(IN) :: ep 999 REAL,DIMENSION(klon),INTENT(IN) :: sigd 1000 REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: sij 1001 REAL,DIMENSION(klon,klev),INTENT(IN) :: clw 1002 REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: elij 1003 REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: epmlmMm 1004 REAL,DIMENSION(klon,klev),INTENT(IN) :: eplaMm 1005 REAL,DIMENSION(klon,klev),INTENT(IN) :: wght_cvfd !RL 1006 1007 1008 ! KE: Tendances de traceurs (Td) et flux de traceurs: 1009 ! ------------------------ 1010 REAL,DIMENSION(klon,klev) :: Mint 1011 REAL,DIMENSION(klon,klev,nbtr) :: zmfd1a 1012 REAL,DIMENSION(klon,klev,nbtr) :: zmfdam 1013 REAL,DIMENSION(klon,klev,nbtr) :: zmfphi2 1014 1015 ! !tra dans pluie LS a la surf. 1016 ! outputs for cvltr_spl 1017 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_cv_o 1018 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_trsp_o 1019 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_sscav_o 1020 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_sat_o 1021 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_uscav_o 1022 !!!!!!!!!!!!!!!!! 1023 !!!!!!!!!!!!!!!!! 1024 !!!!!!!!!!!!!!!!! 1025 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_insc_o 1026 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_bcscav_o 1027 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_evapls_o 1028 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_ls_o 1029 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_dyn_o 1030 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_cl_o 1031 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_th_o 1032 !!!!!!!!!!!!!!!!! 1033 !!!!!!!!!!!!!!!!! 1034 !!!!!!!!!!!!!!!!! 1035 1036 !$OMP THREADPRIVATE(d_tr_cv_o,d_tr_trsp_o,d_tr_sscav_o,d_tr_sat_o,d_tr_uscav_o) 1037 !$OMP THREADPRIVATE(d_tr_insc_o,d_tr_bcscav_o,d_tr_evapls_o,d_tr_ls_o) 1038 !$OMP THREADPRIVATE(d_tr_dyn_o,d_tr_cl_o,d_tr_th_o) 1039 1040 1041 INTEGER :: nsplit 1042 ! 1043 1044 1045 1046 ! 1047 ! Lessivage 1048 ! --------- 1049 ! 1050 REAL, intent(in) :: pmflxr(klon,klev+1), pmflxs(klon,klev+1) !--convection 1051 REAL, intent(in) :: prfl(klon,klev+1), psfl(klon,klev+1) !--large-scale 1052 REAL :: ql_incl ! contenu en eau liquide nuageuse dans le nuage ! ql_incl=oliq/rneb 1053 REAL :: ql_incloud_ref ! ref value of in-cloud condensed water content 1054 1055 REAL,DIMENSION(klon,klev),INTENT(IN) :: rneb ! fraction nuageuse (grande echelle) 1056 ! 1057 1058 REAL,DIMENSION(klon,klev) :: beta_fisrt ! taux de conversion 1059 ! ! de l'eau cond (de fisrtilp) 1060 REAL,DIMENSION(klon,klev) :: beta_v1 ! -- (originale version) 1061 INTEGER,SAVE :: iflag_lscav_omp,iflag_lscav 1062 !$OMP THREADPRIVATE(iflag_lscav_omp,iflag_lscav) 1063 1064 1065 1066 1067 !Thermiques: 1068 !---------- 1069 REAL,DIMENSION(klon,klev+1),INTENT(IN) :: fm_therm 1070 REAL,DIMENSION(klon,klev),INTENT(IN) :: entr_therm 1071 1072 1073 ! 1074 ! Couche limite: 1075 ! -------------- 1076 ! 1077 REAL , intent(in) :: coefh(klon,klev) ! coeff melange CL 1078 REAL , intent(in) :: cdragh(klon), cdragm(klon) 1079 REAL, intent(in) :: yu1(klon) ! vent dans la 1iere couche 1080 REAL, intent(in) :: yv1(klon) ! vent dans la 1iere couche 1081 ! 1082 ! 1083 !---------------------------------------------------------------------- 1084 REAL his_ds(klon,nbtr) 1085 REAL his_dh(klon,nbtr) 1086 REAL his_dhlsc(klon,nbtr) ! in-cloud scavenging lsc 1087 REAL his_dhcon(klon,nbtr) ! in-cloud scavenging con 1088 REAL his_dhbclsc(klon,nbtr) ! below-cloud scavenging lsc 1089 REAL his_dhbccon(klon,nbtr) ! below-cloud scavenging con 1090 REAL trm(klon,nbtr) 1091 ! 1092 REAL u10m_ec(klon), v10m_ec(klon) 1093 ! 1094 REAL his_th(klon,nbtr) 1095 REAL his_dhkecv(klon,nbtr) 1096 REAL his_dhkelsc(klon,nbtr) 1097 1098 1099 ! 1100 ! Coordonnees 1101 ! ----------- 1102 ! 1103 REAL, intent(in) :: rlat(klon) ! latitudes pour chaque point 1104 REAL, intent(in) :: rlon(klon) ! longitudes pour chaque point 1105 ! 1106 INTEGER i, k, it, j, ig 1107 ! 1108 ! DEFINITION OF DIAGNOSTIC VARIABLES 1109 ! 1110 REAL diag_trm(nbtr), diag_drydep(nbtr) 1111 REAL diag_wetdep(nbtr), diag_cvtdep(nbtr) 1112 REAL diag_emissn(nbtr), diag_g2part 1113 REAL diag_sedimt 1114 REAL trm_aux(nbtr), src_aux(nbtr) 1115 ! 1116 ! Variables locales pour effectuer les appels en serie 1117 !---------------------------------------------------- 1118 REAL source_tr(klon,nbtr) 1119 REAL flux_tr(klon,nbtr) 1120 REAL m_conc(klon,klev) 1121 REAL henry(nbtr) !--cste de Henry mol/l/atm 1122 REAL kk(nbtr) !--coefficient de var avec T (K) 1123 REAL alpha_r(nbtr)!--coefficient d'impaction pour la pluie 1124 REAL alpha_s(nbtr)!--coefficient d'impaction pour la neige 1125 REAL vdep_oce(nbtr), vdep_sic(nbtr) 1126 REAL vdep_ter(nbtr), vdep_lic(nbtr) 1127 REAL ccntrAA_spla(nbtr) 1128 REAL ccntrENV_spla(nbtr) 1129 REAL coefcoli_spla(nbtr) 1130 REAL dtrconv(klon,nbtr) 1131 REAL zrho(klon,klev), zdz(klon,klev) 1132 REAL zalt(klon,klev) 1133 REAL,DIMENSION(klon,klev) :: zmasse ! densité atmosphérique 1134 ! . Kg/m2 1135 REAL,DIMENSION(klon,klev) :: ztra_th 1136 REAL qmin, qmax, aux 1137 ! PARAMETER (qmin=0.0, qmax=1.e33) 1138 PARAMETER (qmin=1.e33, qmax=-1.e33) 1139 1140 ! Variables to save data into file 1141 !---------------------------------- 1142 1143 CHARACTER*2 str2 1144 !!AS: LOGICAL ok_histrac 1145 !!!JE2014124 PARAMETER (ok_histrac=.true.) 1146 !! PARAMETER (ok_histrac=.false.) 1147 INTEGER ndex2d(iim*(jjm+1)), ndex3d(iim*(jjm+1)*klev) 1148 INTEGER nhori1, nhori2, nhori3, nhori4, nhori5, nvert 1149 INTEGER nid_tra1, nid_tra2, nid_tra3, nid_tra4, nid_tra5 1150 SAVE nid_tra1, nid_tra2, nid_tra3, nid_tra4, nid_tra5 1151 !$OMP THREADPRIVATE(nid_tra1, nid_tra2, nid_tra3, nid_tra4, nid_tra5) 1152 INTEGER itra 1153 SAVE itra ! compteur pour la physique 1154 !$OMP THREADPRIVATE(itra) 1155 INTEGER ecrit_tra, ecrit_tra_h, ecrit_tra_m 1156 SAVE ecrit_tra, ecrit_tra_h, ecrit_tra_m 1157 !$OMP THREADPRIVATE(ecrit_tra, ecrit_tra_h, ecrit_tra_m) 1158 REAL presnivs(klev) ! pressions approximat. des milieux couches ( en PA) 1159 REAL zx_tmp_2d(iim,jjm+1), zx_tmp_3d(iim,jjm+1,klev) 1160 REAL zx_tmp_fi2d(klon), zx_tmp_fi3d(klon, klev) 1161 REAL zx_lon_glo(nbp_lon,nbp_lat), zx_lat_glo(nbp_lon,nbp_lat) 1162 REAL zsto, zout, zout_h, zout_m, zjulian 1163 1164 !------Molar Masses 1165 REAL masse(nbtr) 1166 ! 1167 REAL fracso2emis !--fraction so2 emis en so2 1168 PARAMETER (fracso2emis=0.95) 1169 REAL frach2sofso2 !--fraction h2s from so2 1170 PARAMETER (frach2sofso2=0.0426) 1171 ! 1172 ! Controles 1173 !------------- 1174 LOGICAL convection,lessivage,lminmax,lcheckmass 1175 DATA convection,lessivage,lminmax,lcheckmass & 1176 /.true.,.true.,.true.,.false./ 1177 ! 1178 REAL xconv(nbtr) 1179 ! 1180 LOGICAL anthropo, bateau, edgar 1181 DATA anthropo,bateau,edgar/.true.,.true.,.true./ 1182 ! 1183 !c bc_source 1184 INTEGER kminbc, kmaxbc 1185 !JE20150715 PARAMETER (kminbc=3, kmaxbc=5) 1186 PARAMETER (kminbc=4, kmaxbc=7) 1187 ! 1188 REAL tr1_cont, tr2_cont, tr3_cont, tr4_cont 1189 ! 1190 ! JE for updating in cltrac 1191 REAL,DIMENSION(klon,klev) :: delp ! epaisseur de couche (Pa) 1192 !! JE for include gas to particle conversion in output 1193 ! REAL his_g2pgas(klon) ! gastoparticle in gas units (check!) 1194 ! REAL his_g2paer(klon) ! gastoparticle in aerosol units (check!) 1195 ! 1196 INTEGER ,intent(in) :: iflag_conv 1197 LOGICAL iscm3 ! debug variable. for checkmass ! JE 1198 1199 !------------------------------------------------------------------------ 1200 ! only to compute time consumption of each process 1201 !---- 1202 INTEGER clock_start,clock_end,clock_rate,clock_start_spla 1203 INTEGER clock_end_outphytracr,clock_start_outphytracr 1204 INTEGER ti_init,dife,ti_inittype,ti_inittwrite 1205 INTEGER ti_spla,ti_emis,ti_depo,ti_cltr,ti_ther 1206 INTEGER ti_sedi,ti_gasp,ti_wetap,ti_cvltr,ti_lscs,ti_brop,ti_outs 1207 INTEGER ti_nophytracr,clock_per_max 1208 REAL tia_init,tia_inittype,tia_inittwrite 1209 REAL tia_spla,tia_emis,tia_depo,tia_cltr,tia_ther 1210 REAL tia_sedi,tia_gasp,tia_wetap,tia_cvltr,tia_lscs 1211 REAL tia_brop,tia_outs 1212 REAL tia_nophytracr 1213 1214 SAVE tia_init,tia_inittype,tia_inittwrite 1215 SAVE tia_spla,tia_emis,tia_depo,tia_cltr,tia_ther 1216 SAVE tia_sedi,tia_gasp,tia_wetap,tia_cvltr,tia_lscs 1217 SAVE tia_brop,tia_outs 1218 SAVE ti_nophytracr 1219 SAVE tia_nophytracr 1220 SAVE clock_end_outphytracr,clock_start_outphytracr 1221 SAVE clock_per_max 1222 LOGICAL logitime 1223 !$OMP THREADPRIVATE(tia_init,tia_inittype,tia_inittwrite) 1224 !$OMP THREADPRIVATE(tia_spla,tia_emis,tia_depo,tia_cltr,tia_ther) 1225 !$OMP THREADPRIVATE(tia_sedi,tia_gasp,tia_wetap,tia_cvltr,tia_lscs) 1226 !$OMP THREADPRIVATE(tia_brop,tia_outs) 1227 !$OMP THREADPRIVATE(ti_nophytracr) 1228 !$OMP THREADPRIVATE(tia_nophytracr) 1229 !$OMP THREADPRIVATE(clock_end_outphytracr,clock_start_outphytracr) 1230 !$OMP THREADPRIVATE(clock_per_max) 1231 1232 ! utils parallelization 1233 REAL :: auxklon_glo(klon_glo) 1234 INTEGER :: iauxklon_glo(klon_glo) 1235 REAL, DIMENSION(klon_glo,nbp_lev) :: auxklonnbp_lev 1236 REAL, DIMENSION(klon_glo,nbp_lev,nbtr) :: auxklonklevnbtr_glo 1237 REAL,DIMENSION(nbp_lon,nbp_lat) :: zx_tmp_2d_glo 1238 REAL,DIMENSION(nbp_lon,nbp_lat,nbp_lev) :: zx_tmp_3d_glo 1239 REAL,DIMENSION(klon_glo) :: zx_tmp_fi2d_glo 1240 REAL,DIMENSION(klon_glo , nbp_lev) :: zx_tmp_fi3d_glo 1241 REAL,DIMENSION(klon_glo,nbtr) :: auxklonnbtr_glo 1242 1243 1244 1245 source_tr=0. 1246 1247 1248 1249 if (debutphy) then 1250 #ifdef IOPHYS_DUST 1251 CALL iophys_ini 1252 #endif 1253 nbreg_ind=1 1254 nbreg_bb=1 1255 nbreg_dust=1 1256 nbreg_wstardust=1 1257 CALL phytracr_spl_ini(klon,nbreg_ind,nbreg_bb,nbreg_dust,nbreg_wstardust) 1258 endif 1259 1260 1261 #ifdef IOPHYS_DUST 1262 do it=1,nbtr 1263 write(str2,'(i2.2)') it 1264 call iophys_ecrit('TRA'//str2,klev,'SOURCE','',tr_seri(:,:,it)) 1265 enddo 1266 #endif 1267 1268 1269 1270 1271 ijulday=jD_cur-jD_1jan+1 1272 nbjour = 1 1273 1274 paramname_ind='ind' 1275 paramname_bb='bb' 1276 paramname_ff='ind' 1277 paramname_dustacc='dustacc' 1278 paramname_dustcoa='dustcoasco' 1279 paramname_dustsco='dustcoasco' 1280 ! paramname_dustacc='dust' 1281 ! paramname_dustcoa='dust' 1282 ! paramname_dustsco='dust' 1283 paramname_wstarBL='pwstarbl' 1284 paramname_wstarWAKE='pwstarwake' 1285 paramname_ssacc='ssacc' 1286 paramname_sscoa='sscoa' 1287 1288 filescaleparams='modvalues.nc' 1289 !AS: debranchage de lecture des coefs d'assmilation de Jeronimo Escribano 1290 IF("ASSIM"=="YES") THEN 1291 CALL readscaleparamsnc_spl(scale_param_ind, & 1292 nbreg_ind, paramname_ind, & 1293 scale_param_ff, nbreg_ind,paramname_ff, & 1294 scale_param_bb, nbreg_bb,paramname_bb, & 1295 scale_param_dustacc, nbreg_dust,paramname_dustacc, & 1296 scale_param_dustcoa, nbreg_dust,paramname_dustcoa, & 1297 scale_param_dustsco, nbreg_dust,paramname_dustsco, & 1298 param_wstarBLperregion, nbreg_wstardust, paramname_wstarBL, & 1299 param_wstarWAKEperregion, nbreg_wstardust, paramname_wstarWAKE, & 1300 scale_param_ssacc , paramname_ssacc, & 1301 scale_param_sscoa , paramname_sscoa, & 1302 filescaleparams,ijulday,jH_cur, pdtphys,debutphy) 1303 ENDIF ! ASSIM 1304 !AS: le commentaire suivant "add seasalt" ne semble pas avoir ete mis en pratique. 1305 ! Des fichiers regions_ssacc et _sscoa existent mais ne semblent pas lus. 1306 ! Ca reste donc aux valeurs initialisées: nbreg_ss=1, scale_param_ss*=1, cf fichiers ss et modvalues 1307 !! add seasalt 1308 1309 print *,'JE : check scale_params' 1310 1311 print *, 'nbreg_ind', nbreg_ind 1312 print *, 'nbreg_dust', nbreg_dust 1313 print *, 'nbreg_bb', nbreg_bb 1314 print *, 'ind', scale_param_ind 1315 print *, 'dustacc', scale_param_dustacc 1316 print *, 'dustcoa', scale_param_dustcoa 1317 print *, 'dustsco', scale_param_dustsco 1318 print *, 'wstardustBL', param_wstarBLperregion 1319 print *, 'wstardustWAKE', param_wstarWAKEperregion 1320 print *, 'ff', scale_param_ff 1321 print *, 'bb', scale_param_bb 1322 print *, 'ssacc', scale_param_ssacc 1323 print *, 'sscoa', scale_param_sscoa 1324 1325 print *,'JE: before read_newemissions ' 1326 print *,'JE: jD_cur:',jD_cur,' ijulday:',ijulday,' jH_cur:',jH_cur,' pdtphys:',pdtphys 1327 print *,'JE: now read_newemissions:' 1328 !AS: La ligne suivante fait planter a l'execution : lmt_so2ff_l pas initialise 1329 ! print *,'lmt_so2ff_l AVANT' , MINVAL(lmt_so2ff_l), MAXVAL(lmt_so2ff_l) 1330 call read_newemissions(ijulday,jH_cur ,edgar, flag_dms,debutphy, & !I 1331 pdtphys, lafin, nbjour, pctsrf, & !I 1332 t_seri, rlat, rlon, & !I 1333 pmflxr, pmflxs, prfl, psfl, & !I 1334 u10m_ec, v10m_ec, dust_ec, & !O 1335 lmt_sea_salt, lmt_so2ff_l, & !O 1336 lmt_so2ff_h, lmt_so2nff, & !O 1337 lmt_so2ba, lmt_so2bb_l, lmt_so2bb_h, & !O 1338 lmt_so2volc_cont, lmt_altvolc_cont, & !O 1339 lmt_so2volc_expl, lmt_altvolc_expl, & !O 1340 lmt_dmsbio, lmt_h2sbio, lmt_dmsconc, & !O 1341 lmt_bcff, lmt_bcnff, lmt_bcbb_l, & !O 1342 lmt_bcbb_h, lmt_bcba, lmt_omff, & !O 1343 lmt_omnff, lmt_ombb_l, lmt_ombb_h, & !O 1344 lmt_omnat, lmt_omba) !O 1345 1346 1347 print *,'Check emissions' 1348 print *,'lmt_so2ff_l' , MINVAL(lmt_so2ff_l), MAXVAL(lmt_so2ff_l) 1349 print *,'lmt_so2ff_h' , MINVAL(lmt_so2ff_h), MAXVAL(lmt_so2ff_h) 1350 print *,'lmt_so2nff' , MINVAL(lmt_so2nff), MAXVAL(lmt_so2nff) 1351 print *,'lmt_so2ba' , MINVAL(lmt_so2ba), MAXVAL(lmt_so2ba) 1352 print *,'lmt_so2bb_l' , MINVAL(lmt_so2bb_l), MAXVAL(lmt_so2bb_l) 1353 print *,'lmt_so2bb_h' , MINVAL(lmt_so2bb_h), MAXVAL(lmt_so2bb_h) 1354 print *,'lmt_so2volc_cont' , MINVAL(lmt_so2volc_cont), MAXVAL(lmt_so2volc_cont) 1355 print *,'lmt_altvolc_cont' , MINVAL(lmt_altvolc_cont), MAXVAL(lmt_altvolc_cont) 1356 print *,'lmt_so2volc_expl' , MINVAL(lmt_so2volc_expl), MAXVAL(lmt_so2volc_expl) 1357 print *,'lmt_altvolc_expl' , MINVAL(lmt_altvolc_expl), MAXVAL(lmt_altvolc_expl) 1358 print *,'lmt_dmsbio' , MINVAL(lmt_dmsbio), MAXVAL(lmt_dmsbio) 1359 print *,'lmt_h2sbio' , MINVAL(lmt_h2sbio), MAXVAL(lmt_h2sbio) 1360 print *,'lmt_dmsconc' , MINVAL(lmt_dmsconc), MAXVAL(lmt_dmsconc) 1361 print *,'lmt_bcff' , MINVAL(lmt_bcff), MAXVAL(lmt_bcff) 1362 print *,'lmt_bcnff' , MINVAL(lmt_bcnff), MAXVAL(lmt_bcnff) 1363 print *,'lmt_bcbb_l' , MINVAL(lmt_bcbb_l), MAXVAL(lmt_bcbb_l) 1364 print *,'lmt_bcbb_h' , MINVAL(lmt_bcbb_h), MAXVAL(lmt_bcbb_h) 1365 print *,'lmt_bcba' , MINVAL(lmt_bcba), MAXVAL(lmt_bcba) 1366 print *,'lmt_omff' , MINVAL(lmt_omff), MAXVAL(lmt_omff) 1367 print *,'lmt_omnff' , MINVAL(lmt_omnff), MAXVAL(lmt_omnff) 1368 print *,'lmt_ombb_l' , MINVAL(lmt_ombb_l), MAXVAL(lmt_ombb_l) 1369 print *,'lmt_ombb_h' , MINVAL(lmt_ombb_h), MAXVAL(lmt_ombb_h) 1370 print *,'lmt_omnat' , MINVAL(lmt_omnat), MAXVAL(lmt_omnat) 1371 print *,'lmt_omba' , MINVAL(lmt_omba), MAXVAL(lmt_omba) 1372 print *,'JE iflag_con',iflag_conv 1373 1374 1375 !JE_dbg 1376 do i=1,klon 1377 tsol(i)=0.0 1378 do j=1,nbsrf 1379 tsol(i)=tsol(i)+ftsol(i,j)*pctsrf(i,j) 1380 enddo 1381 enddo 1382 1383 1384 !====================================================================== 1385 ! INITIALISATIONS 1386 !====================================================================== 1387 ! CALL checknanqfi(da(:,:),1.,-1.,' da_ before 1388 ! . phytracr_inphytracr') 1389 1390 ! 1391 ! computing time 1392 ! logitime=.true. 1393 logitime=.false. 1394 IF (logitime) THEN 1395 clock_start=0 1396 clock_end=0 1397 clock_rate=0 1398 CALL SYSTEM_CLOCK(COUNT_RATE=clock_rate,COUNT_MAX=clock_per_max) 1399 CALL SYSTEM_CLOCK(COUNT=clock_start_spla) 1400 clock_start=clock_start_spla 1401 clock_end_outphytracr=clock_start_spla 1402 ENDIF 1403 1404 1405 ! Definition of tracers index. 1406 print*,'OK ON PASSSE BIEN LA' 1407 CALL minmaxsource(source_tr,qmin,qmax,'A1 maxsource init phytracr') 1408 1409 1410 IF (debutphy) THEN 1411 id_prec=-1 1412 id_fine=-1 1413 id_coss=-1 1414 id_codu=-1 1415 id_scdu=-1 1416 !print *,nbtr 1417 do it=1,nbtr 1418 print *, it, tname(it+nqo) 1419 if (tname(it+nqo) == 'PREC' ) then 1420 id_prec=it 1421 endif 1422 if (tname(it+nqo) == 'FINE' ) then 1423 id_fine=it 1424 endif 1425 if (tname(it+nqo) == 'COSS' ) then 1426 id_coss=it 1427 endif 1428 if (tname(it+nqo) == 'CODU' ) then 1429 id_codu=it 1430 endif 1431 if (tname(it+nqo) == 'SCDU' ) then 1432 id_scdu=it 1433 endif 1434 enddo 1435 ! check consistency with dust emission scheme: 1436 if (ok_chimeredust) then 1437 if (.not.( id_scdu>0 .and. id_codu>0 .and. id_fine>0)) then 1438 call abort_gcm('phytracr_mod', 'pb in ok_chimdust 0',1) 1439 endif 1440 else 1441 if (id_scdu>0) then 1442 call abort_gcm('phytracr_mod', 'pb in ok_chimdust 1 SCDU',1) 1443 endif 1444 if ( (id_codu .le. 0) .or. ( id_fine.le.0) ) then 1445 call abort_gcm('phytracr_mod', 'pb in ok_chimdust 1',1) 1446 endif 1447 endif 1448 1449 1450 !print *,id_prec,id_fine,id_coss,id_codu,id_scdu 1451 ENDIF 1452 1453 1454 1455 1456 1457 1458 !---fraction of tracer that is convected (Tiedke) 1459 xconv(:)=0. 1460 if(id_prec>0) xconv(id_prec)=0.8 1461 if(id_fine>0) xconv(id_fine)=0.5 1462 if(id_coss>0) xconv(id_coss)=0.5 1463 if(id_codu>0) xconv(id_codu)=0.6 1464 if(id_scdu>0) xconv(id_scdu)=0.6 !!JE fix 1465 1466 masse(:)=1. 1467 if(id_prec>0) masse(id_prec)=32. 1468 if(id_fine>0) masse(id_fine)=6.02e23 1469 if(id_coss>0) masse(id_coss)=6.02e23 1470 if(id_codu>0) masse(id_codu)=6.02e23 1471 if(id_scdu>0) masse(id_scdu)=6.02e23 1472 1473 henry(:)=0. 1474 if(id_prec>0) henry(id_prec)=1.4 1475 if(id_fine>0) henry(id_fine)=0.0 1476 if(id_coss>0) henry(id_coss)=0.0 1477 if(id_codu>0) henry(id_codu)=0.0 1478 if(id_scdu>0) henry(id_scdu)=0.0 1479 !henry= (/1.4, 0.0, 0.0, 0.0/) 1480 kk(:)=0. 1481 if(id_prec>0) kk(id_prec)=2900. 1482 if(id_fine>0) kk(id_fine)=0.0 1483 if(id_coss>0) kk(id_coss)=0.0 1484 if(id_codu>0) kk(id_codu)=0.0 1485 if(id_scdu>0) kk(id_scdu)=0.0 1486 !kk = (/2900., 0., 0., 0./) 1487 alpha_r(:)=0. 1488 if(id_prec>0) alpha_r(id_prec)=0.0 1489 if(id_fine>0) alpha_r(id_fine)=0.001 1490 if(id_coss>0) alpha_r(id_coss)=0.001 1491 if(id_codu>0) alpha_r(id_codu)=0.001 1492 if(id_scdu>0) alpha_r(id_scdu)=0.001 !JE fix 1493 alpha_s(:)=0. 1494 if(id_prec>0) alpha_s(id_prec)=0.0 1495 if(id_fine>0) alpha_s(id_fine)=0.01 1496 if(id_coss>0) alpha_s(id_coss)=0.01 1497 if(id_codu>0) alpha_s(id_codu)=0.01 1498 if(id_scdu>0) alpha_s(id_scdu)=0.01 !JE fix 1499 1500 ! alpha_r = (/0., 0.001, 0.001, 0.001/) 1501 ! alpha_s = (/0., 0.01, 0.01, 0.01/) 1502 1503 ! nhl DATA vdep_oce /0.7, 0.05, 1.2, 1.2/ 1504 ! nhl vdep_oce for tr1 is a weighted average of dms and so2 dep velocities 1505 !vdep_oce = (/0.28, 0.28, 1.2, 1.2/) 1506 vdep_oce(:)=0. 1507 if(id_prec>0) vdep_oce(id_prec) = 0.28 1508 if(id_fine>0) vdep_oce(id_fine) = 0.28 1509 if(id_coss>0) vdep_oce(id_coss) = 1.2 1510 if(id_codu>0) vdep_oce(id_codu) = 1.2 1511 if(id_scdu>0) vdep_oce(id_scdu) = 1.2 1512 vdep_sic(:)=0. 1513 if(id_prec>0) vdep_sic(id_prec) = 0.2 1514 if(id_fine>0) vdep_sic(id_fine) = 0.17 1515 if(id_coss>0) vdep_sic(id_coss) = 1.2 1516 if(id_codu>0) vdep_sic(id_codu) = 1.2 1517 if(id_scdu>0) vdep_sic(id_scdu) = 1.2 1518 1519 !vdep_sic = (/0.2, 0.17, 1.2, 1.2/) 1520 !vdep_ter = (/0.3, 0.14, 1.2, 1.2/) 1521 vdep_ter(:)=0. 1522 if(id_prec>0) vdep_ter(id_prec) = 0.3 1523 if(id_fine>0) vdep_ter(id_fine) = 0.14 1524 if(id_coss>0) vdep_ter(id_coss) = 1.2 1525 if(id_codu>0) vdep_ter(id_codu) = 1.2 1526 if(id_scdu>0) vdep_ter(id_scdu) = 1.2 1527 1528 vdep_lic(:)=0. 1529 if(id_prec>0) vdep_lic(id_prec) = 0.2 1530 if(id_fine>0) vdep_lic(id_fine) = 0.17 1531 if(id_coss>0) vdep_lic(id_coss) = 1.2 1532 if(id_codu>0) vdep_lic(id_codu) = 1.2 1533 if(id_scdu>0) vdep_lic(id_scdu) = 1.2 1534 1535 1536 ! convective KE lessivage aer params: 1537 ! AS: #DFB (Binta) a aussi teste ccntrAA_spla=ccntrENV_spla=0.9/1.0/0.9/0.9 1538 ! mais effet negligeable sur l'AOD 1539 ccntrAA_spla(:)=0. 1540 if(id_prec>0) ccntrAA_spla(id_prec)=-9999. 1541 if(id_fine>0) ccntrAA_spla(id_fine)=0.7 1542 if(id_coss>0) ccntrAA_spla(id_coss)=1.0 1543 if(id_codu>0) ccntrAA_spla(id_codu)=0.7 1544 if(id_scdu>0) ccntrAA_spla(id_scdu)=0.7 1545 1546 ccntrENV_spla(:)=0. 1547 if(id_prec>0) ccntrENV_spla(id_prec)=-9999. 1548 if(id_fine>0) ccntrENV_spla(id_fine)=0.7 1549 if(id_coss>0) ccntrENV_spla(id_coss)=1.0 1550 if(id_codu>0) ccntrENV_spla(id_codu)=0.7 1551 if(id_scdu>0) ccntrENV_spla(id_scdu)=0.7 1552 ! #DFB 1553 coefcoli_spla(:)=0. 1554 if(id_prec>0) coefcoli_spla(id_prec)=-9999. 1555 if(id_fine>0) coefcoli_spla(id_fine)=0.001 1556 if(id_coss>0) coefcoli_spla(id_coss)=0.001 1557 if(id_codu>0) coefcoli_spla(id_codu)=0.001 1558 if(id_scdu>0) coefcoli_spla(id_scdu)=0.001 1559 1560 !vdep_lic = (/0.2, 0.17, 1.2, 1.2/) 1561 ! 1562 1563 iscm3=.false. 1564 if (debutphy) then 1565 !$OMP MASTER 1566 CALL suphel 1567 print *, 'let s check nbtr=', nbtr 1568 ! JE before put in zero 1569 IF (lminmax) THEN 1570 DO it=1,nbtr 1571 CALL checknanqfi(tr_seri(:,:,it),qmin,qmax,'nan init phytracr') 1572 ENDDO 1573 DO it=1,nbtr 1574 CALL minmaxqfi2(tr_seri(:,:,it),qmin,qmax,'minmax init phytracr') 1575 ENDDO 1576 CALL minmaxsource(source_tr,qmin,qmax,'maxsource init phytracr') 1577 ENDIF 1578 ! JE initializon to cero the tracers 1579 ! DO it=1, nbtr 1580 ! tr_seri(:,:,it)=0.0 1581 ! ENDDO 1582 ! JE end 1583 ! Initializing to zero tr_seri for comparison purposes 1584 ! tr_seri(:,:,:)=0.0 1585 ! 1586 ! DO it=1,nbtr 1587 ! trm_aux(it)=0.0 1588 ! src_aux(it)=0.0 1589 ! diag_trm(it)=0.0 1590 ! diag_drydep(it)=0.0 1591 ! diag_wetdep(it)=0.0 1592 ! diag_cvtdep(it)=0.0 1593 ! diag_emissn(it)=0.0 1594 ! ENDDO 1595 ! diag_g2part=0.0 1596 print *,'PREPARE FILES TO SAVE VARIABLES' 1597 ! 1598 nbjour=30 1599 ecrit_tra = NINT(86400./pdtphys) !--1-day average 1600 ecrit_tra_h = NINT(86400./pdtphys*0.25) !--6-hour average 1601 ecrit_tra_m = NINT(86400./pdtphys*FLOAT(nbjour)) !--1-mth average 1602 print *,'ecrit_tra=', pdtphys, ecrit_tra 1603 1604 !!AS deleting lines 1605 !! IF (ok_histrac) THEN 1606 !! IF (is_mpi_root .AND. is_omp_root) THEN 1607 !!-----many deleted lines---- 1608 !!! nbjour=1 1609 !! ENDIF ! mpi root 1610 !! ENDIF !--ok_histrac 1611 1612 !$OMP END MASTER 1613 !$OMP BARRIER 1614 endif ! debutphy 1615 ! 1616 !====================================================================== 1617 ! Initialisations 1618 !====================================================================== 1619 ! 1620 ! 1621 ! je KE init 1622 IF (debutphy) THEN 1623 !$OMP MASTER 1624 1625 ALLOCATE(d_tr_dry(klon,nbtr)) 1626 ALLOCATE(flux_tr_dry(klon,nbtr),d_tr_dec(klon,klev,nbtr)) 1627 ALLOCATE(qPrls(klon,nbtr),qPr(klon,klev,nbtr)) 1628 ALLOCATE(qDi(klon,klev,nbtr)) 1629 ALLOCATE(qPa(klon,klev,nbtr),qMel(klon,klev,nbtr)) 1630 ALLOCATE(qTrdi(klon,klev,nbtr),dtrcvMA(klon,klev,nbtr)) 1631 1632 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1633 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2086 1634 ALLOCATE(d_tr_cv_o(klon,klev,nbtr)) 2087 1635 ALLOCATE(d_tr_trsp_o(klon,klev,nbtr)) … … 2110 1658 ALLOCATE(masque_aqua(klon)) 2111 1659 ALLOCATE(masque_terra(klon)) 2112 ! ALLOCATE(aod550_aqua(klon))2113 ! ALLOCATE(aod550_terra(klon))2114 ! ALLOCATE(aod670_aqua(klon))2115 ! ALLOCATE(aod670_terra(klon))2116 ! ALLOCATE(aod865_aqua(klon))2117 ! ALLOCATE(aod865_terra(klon))2118 2119 ALLOCATE( aod550_terra(klon))2120 ALLOCATE( aod550_tr2_terra(klon))2121 ALLOCATE( aod550_ss_terra(klon))2122 ALLOCATE( aod550_dust_terra(klon))2123 ALLOCATE( aod550_dustsco_terra(klon))2124 ALLOCATE( aod670_terra(klon))2125 ALLOCATE( aod670_tr2_terra(klon))2126 ALLOCATE( aod670_ss_terra(klon))2127 ALLOCATE( aod670_dust_terra(klon))2128 ALLOCATE( aod670_dustsco_terra(klon))2129 ALLOCATE( aod865_terra(klon))2130 ALLOCATE( aod865_tr2_terra(klon))2131 ALLOCATE( aod865_ss_terra(klon))2132 ALLOCATE( aod865_dust_terra(klon))2133 ALLOCATE( aod865_dustsco_terra(klon))2134 2135 ALLOCATE( aod550_aqua(klon))2136 ALLOCATE( aod550_tr2_aqua(klon))2137 ALLOCATE( aod550_ss_aqua(klon))2138 ALLOCATE( aod550_dust_aqua(klon))2139 ALLOCATE( aod550_dustsco_aqua(klon))2140 ALLOCATE( aod670_aqua(klon))2141 ALLOCATE( aod670_tr2_aqua(klon))2142 ALLOCATE( aod670_ss_aqua(klon))2143 ALLOCATE( aod670_dust_aqua(klon))2144 ALLOCATE( aod670_dustsco_aqua(klon))2145 ALLOCATE( aod865_aqua(klon))2146 ALLOCATE( aod865_tr2_aqua(klon))2147 ALLOCATE( aod865_ss_aqua(klon))2148 ALLOCATE( aod865_dust_aqua(klon))2149 ALLOCATE( aod865_dustsco_aqua(klon))2150 1660 2151 1661 2152 1662 masque_aqua(:)=0 2153 1663 masque_terra(:)=0 2154 ! aod550_aqua(:)=0.2155 ! aod550_terra(:)=0.2156 ! aod670_aqua(:)=0.2157 ! aod670_terra(:)=0.2158 ! aod865_aqua(:)=0.2159 ! aod865_terra(:)=0.2160 1664 2161 1665 aod550_terra(:)=0. … … 2365 1869 2366 1870 2367 2368 IF (debutphy) then 2369 1871 IF (debutphy) then 1872 1873 ! AS: initialisation des indices par point de grille physique iregion_* 1874 ! (variables tenant de l'assimilation, a eliminer dans un 2eme temps) 1875 iregion_dust(:)=1 1876 iregion_ind(:)=1 1877 iregion_bb(:)=1 1878 iregion_wstardust(:)=1 1879 1880 !AS: lecture des indices dans fichiers "regions_*" eliminee par IF("ASSIM"="YES") (faux donc) 1881 IF("ASSIM"=="YES") THEN 2370 1882 c_FullName1='regions_dustacc' 2371 1883 !c_FullName1='regions_dust' … … 2450 1962 CLOSE(76) 2451 1963 CLOSE(77) 1964 CLOSE(95) 2452 1965 2453 1966 ENDIF ! mpi root 2454 1967 !$OMP END MASTER 2455 1968 !$OMP BARRIER 1969 1970 ENDIF ! ASSIM 2456 1971 2457 1972 ENDIF ! debutphy … … 3682 3197 ! choix du lessivage 3683 3198 IF (iflag_lscav .EQ. 3 .OR. iflag_lscav .EQ. 4) THEN 3684 print *,'JE iflag_lscav',iflag_lscav 3685 DO it = 1, nbtr 3199 !IF (.false.) THEN ! test #DFB (Binta) sans lsc_scav_spl 3200 print *,'JE iflag_lscav',iflag_lscav 3201 DO it = 1, nbtr 3686 3202 3687 3203 ! incloud scavenging and removal by large scale rain ! orig : ql_incl … … 3694 3210 ! . t_seri,tr_seri,d_tr_insc, 3695 3211 ! . d_tr_bcscav,d_tr_evapls,qPrls) 3696 CALL lsc_scav_spl(pdtphys,it,iflag_lscav,ql_incl,prfl,psfl, &3212 CALL lsc_scav_spl(pdtphys,it,iflag_lscav,ql_incl,prfl,psfl, & 3697 3213 rneb,beta_fisrt, beta_v1,pplay,paprs, & 3698 3214 t_seri,tr_seri,d_tr_insc, & … … 3702 3218 3703 3219 !large scale scavenging tendency 3704 DO k = 1, klev3705 DO i = 1, klon3706 d_tr_ls(i,k,it)=d_tr_insc(i,k,it)+d_tr_bcscav(i,k,it) &3220 DO k = 1, klev 3221 DO i = 1, klon 3222 d_tr_ls(i,k,it)=d_tr_insc(i,k,it)+d_tr_bcscav(i,k,it) & 3707 3223 +d_tr_evapls(i,k,it) 3708 tr_seri(i,k,it)=tr_seri(i,k,it)+d_tr_ls(i,k,it) 3709 tmp_var(i,k)=d_tr_ls(i,k,it) 3710 ENDDO 3711 ENDDO 3712 3713 CALL kg_to_cm3(pplay,t_seri,tmp_var) 3714 DO k=1,klev 3715 DO i=1,klon 3224 tr_seri(i,k,it)=tr_seri(i,k,it)+d_tr_ls(i,k,it) 3225 tmp_var(i,k)=d_tr_ls(i,k,it) 3226 ENDDO 3227 ENDDO 3228 3229 CALL kg_to_cm3(pplay,t_seri,tmp_var) 3230 3231 DO k=1,klev 3232 DO i=1,klon 3716 3233 his_dhkelsc(i,it)=his_dhkelsc(i,it)-tmp_var(i,k) & 3717 3234 /RNAVO*masse(it)*1.e3*1.e6*zdz(i,k)/pdtphys 3718 3235 3719 END DO 3720 END DO 3721 3722 END DO !tr 3236 END DO 3237 END DO 3238 3239 END DO !it=1,nbtr 3240 3723 3241 ELSE 3724 his_dhkelsc(i,it)=0.03725 3242 print *,'WARNING: NO lsc_scav, Please choose iflag_lscav=3 or 4' 3726 ENDIF !iflag_lscav 3243 DO it = 1, nbtr 3244 DO i=1,klon 3245 his_dhkelsc(i,it)=0.0 3246 END DO ! klon 3247 END DO !it=1,nbtr 3248 ENDIF !iflag_lscav 3727 3249 3728 3250 print *,' AFTER lsc_scav ' … … 3844 3366 !new utc day: put in 0 everything 3845 3367 !JE20150518<< 3846 ! aod550_aqua(:) =0.3847 ! aod550_terra(:) =0.3848 ! aod670_aqua(:) =0.3849 ! aod670_terra(:) =0.3850 ! aod865_aqua(:) =0.3851 ! aod865_terra(:) =0.3852 3368 masque_aqua(:) =0 3853 3369 masque_terra(:) =0 … … 3886 3402 3887 3403 DO i=1,klon 3888 ! aod550_aqua(i)=aod550_aqua(i)+ &3889 ! masque_aqua_cur(i)*diff_aod550_tot(i)3890 ! aod670_aqua(i)=aod670_aqua(i)+ &3891 ! masque_aqua_cur(i)*diag_aod670_tot(i)3892 ! aod865_aqua(i)=aod865_aqua(i)+ &3893 ! masque_aqua_cur(i)*diag_aod865_tot(i)3894 3404 3895 3405 aod550_terra(i)=aod550_terra(i)+ & … … 3956 3466 aod865_dustsco_aqua(i)= aod865_dustsco_aqua(i) + & 3957 3467 masque_aqua_cur(i)*diag_aod865_dustsco(i) 3958 ! aod550_terra(i)=aod550_terra(i)+ & 3959 ! masque_terra_cur(i)*diff_aod550_tot(i) 3960 ! aod670_terra(i)=aod670_terra(i)+ & 3961 ! masque_terra_cur(i)*diag_aod670_tot(i) 3962 ! aod865_terra(i)=aod865_terra(i)+ & 3963 ! masque_terra_cur(i)*diag_aod865_tot(i) 3964 masque_aqua(i)=masque_aqua(i)+masque_aqua_cur(i) 3468 3469 masque_aqua(i)=masque_aqua(i)+masque_aqua_cur(i) 3965 3470 masque_terra(i)=masque_terra(i)+masque_terra_cur(i) 3966 3471 ENDDO … … 4035 3540 aod865_dustsco_terra(i)= -999. 4036 3541 ENDIF 4037 ! IF (masque_terra(i).GT. 0) THEN4038 ! aod550_terra(i) = aod550_terra(i)/masque_terra(i)4039 ! aod670_terra(i)=aod670_terra(i)/masque_terra(i)4040 ! aod865_terra(i)=aod865_terra(i)/masque_terra(i)4041 !4042 ! ELSE4043 ! aod550_terra(i) = -999.4044 ! aod670_terra(i) = -999.4045 ! aod865_terra(i) = -999.4046 ! ENDIF4047 3542 ENDDO 4048 ! !write dbg 4049 ! CALL writefield_phy("aod550_aqua",aod550_aqua,1) 4050 ! CALL writefield_phy("aod550_terra",aod550_terra,1) 4051 ! CALL writefield_phy("masque_aqua",float(masque_aqua),1) 4052 ! CALL writefield_phy("masque_terra",float(masque_terra),1) 4053 4054 4055 IF (ok_histrac) THEN 4056 ! write in output file 4057 call gather(aod550_aqua,aod550_aqua_glo) 4058 call gather(aod550_terra,aod550_terra_glo) 4059 call gather(aod670_aqua,aod670_aqua_glo) 4060 call gather(aod670_terra,aod670_terra_glo) 4061 call gather(aod865_aqua,aod865_aqua_glo) 4062 call gather(aod865_terra,aod865_terra_glo) 4063 4064 !$OMP MASTER 4065 IF (is_mpi_root .AND. is_omp_root) THEN 4066 4067 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, aod550_aqua_glo ,zx_tmp_2d) 4068 CALL histwrite(nid_tra3,"taue550_aqua",itra,zx_tmp_2d, & 4069 nbp_lon*(nbp_lat),ndex2d) 4070 4071 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, aod550_terra_glo ,zx_tmp_2d) 4072 CALL histwrite(nid_tra3,"taue550_terra",itra,zx_tmp_2d, & 4073 nbp_lon*(nbp_lat),ndex2d) 4074 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, aod670_aqua_glo ,zx_tmp_2d) 4075 CALL histwrite(nid_tra3,"taue670_aqua",itra,zx_tmp_2d, & 4076 nbp_lon*(nbp_lat),ndex2d) 4077 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, aod670_terra_glo ,zx_tmp_2d) 4078 CALL histwrite(nid_tra3,"taue670_terra",itra,zx_tmp_2d, & 4079 nbp_lon*(nbp_lat),ndex2d) 4080 4081 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, aod865_aqua_glo ,zx_tmp_2d) 4082 CALL histwrite(nid_tra3,"taue865_aqua",itra,zx_tmp_2d, & 4083 nbp_lon*(nbp_lat),ndex2d) 4084 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, aod865_terra_glo ,zx_tmp_2d) 4085 CALL histwrite(nid_tra3,"taue865_terra",itra,zx_tmp_2d, & 4086 nbp_lon*(nbp_lat),ndex2d) 4087 ENDIF 4088 !$OMP END MASTER 4089 !$OMP BARRIER 4090 ENDIF 4091 ! !put in 0 everything 4092 ! aod550_aqua(:) =0. 4093 ! aod550_terra(:) =0. 4094 ! aod670_aqua(:) =0. 4095 ! aod670_terra(:) =0. 4096 ! aod865_aqua(:) =0. 4097 ! aod865_terra(:) =0. 4098 ! masque_aqua(:) =0 4099 ! masque_terra(:) =0 4100 ENDIF 3543 3544 !!AS deleting lines 3545 !! IF (ok_histrac) THEN 3546 !!!! write in output file 3547 !!----many deleted lines 3548 !! ENDIF !mpi_root 3549 !!!$OMP END MASTER 3550 !!!$OMP BARRIER 3551 !! ENDIF !--ok_histrac 3552 3553 ENDIF ! jH_cur... 4101 3554 4102 3555 … … 4138 3591 ! SAVING AEROSOL RELATED VARIABLES INTO FILE 4139 3592 !====================================================================== 4140 !4141 !JE20141224 IF (ok_histrac) THEN4142 3593 ! 4143 3594 ndex2d = 0 … … 4275 3726 fluxss(i)=fluxssfine(i)+fluxsscoa(i) 4276 3727 ENDDO 3728 4277 3729 ! prepare outputs cvltr 4278 3730 … … 4471 3923 ENDDO 4472 3924 4473 IF (ok_histrac) THEN 4474 ! 4475 ! SAVING VARIABLES IN TRACEUR 4476 ! 4477 call gather(diff_aod550_tot ,auxklon_glo ) 4478 !$OMP MASTER 4479 IF (is_mpi_root .AND. is_omp_root) THEN 4480 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo ,zx_tmp_2d_glo) 4481 CALL histwrite(nid_tra3,"taue550",itra,zx_tmp_2d_glo, & 4482 nbp_lon*(nbp_lat),ndex2d) 4483 ENDIF ! mpi root 4484 !$OMP END MASTER 4485 !$OMP BARRIER 4486 call gather( diag_aod670_tot , auxklon_glo ) 4487 !$OMP MASTER 4488 IF (is_mpi_root .AND. is_omp_root) THEN 4489 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo,zx_tmp_2d_glo) 4490 CALL histwrite(nid_tra3,"taue670",itra,zx_tmp_2d_glo, & 4491 nbp_lon*(nbp_lat),ndex2d) 4492 ! 4493 ENDIF ! mpi root 4494 !$OMP END MASTER 4495 !$OMP BARRIER 4496 call gather( diag_aod865_tot , auxklon_glo ) 4497 !$OMP MASTER 4498 IF (is_mpi_root .AND. is_omp_root) THEN 4499 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo,zx_tmp_2d_glo) 4500 CALL histwrite(nid_tra3,"taue865",itra,zx_tmp_2d_glo, & 4501 nbp_lon*(nbp_lat),ndex2d) 4502 ! 4503 ENDIF ! mpi root 4504 !$OMP END MASTER 4505 !$OMP BARRIER 4506 call gather( diff_aod550_tr2 , auxklon_glo ) 4507 !$OMP MASTER 4508 IF (is_mpi_root .AND. is_omp_root) THEN 4509 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo,zx_tmp_2d_glo) 4510 CALL histwrite(nid_tra3,"taue550_tr2",itra,zx_tmp_2d_glo, & 4511 nbp_lon*(nbp_lat),ndex2d) 4512 ! 4513 ENDIF ! mpi root 4514 !$OMP END MASTER 4515 !$OMP BARRIER 4516 call gather( diag_aod670_tr2 , auxklon_glo ) 4517 !$OMP MASTER 4518 IF (is_mpi_root .AND. is_omp_root) THEN 4519 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo,zx_tmp_2d_glo) 4520 CALL histwrite(nid_tra3,"taue670_tr2",itra,zx_tmp_2d_glo, & 4521 nbp_lon*(nbp_lat),ndex2d) 4522 ! 4523 ENDIF ! mpi root 4524 !$OMP END MASTER 4525 !$OMP BARRIER 4526 call gather( diag_aod865_tr2 , auxklon_glo ) 4527 !$OMP MASTER 4528 IF (is_mpi_root .AND. is_omp_root) THEN 4529 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo,zx_tmp_2d_glo) 4530 CALL histwrite(nid_tra3,"taue865_tr2",itra,zx_tmp_2d_glo, & 4531 nbp_lon*(nbp_lat),ndex2d) 4532 ! 4533 ENDIF ! mpi root 4534 !$OMP END MASTER 4535 !$OMP BARRIER 4536 call gather( diag_aod550_ss, auxklon_glo ) 4537 !$OMP MASTER 4538 IF (is_mpi_root .AND. is_omp_root) THEN 4539 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo ,zx_tmp_2d_glo) 4540 CALL histwrite(nid_tra3,"taue550_ss",itra,zx_tmp_2d_glo, & 4541 nbp_lon*(nbp_lat),ndex2d) 4542 ! 4543 ENDIF ! mpi root 4544 !$OMP END MASTER 4545 !$OMP BARRIER 4546 call gather( diag_aod670_ss , auxklon_glo ) 4547 !$OMP MASTER 4548 IF (is_mpi_root .AND. is_omp_root) THEN 4549 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo ,zx_tmp_2d_glo) 4550 CALL histwrite(nid_tra3,"taue670_ss",itra,zx_tmp_2d_glo, & 4551 nbp_lon*(nbp_lat),ndex2d) 4552 ! 4553 ENDIF ! mpi root 4554 !$OMP END MASTER 4555 !$OMP BARRIER 4556 call gather( diag_aod865_ss, auxklon_glo ) 4557 !$OMP MASTER 4558 IF (is_mpi_root .AND. is_omp_root) THEN 4559 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo ,zx_tmp_2d_glo) 4560 CALL histwrite(nid_tra3,"taue865_ss",itra,zx_tmp_2d_glo, & 4561 nbp_lon*(nbp_lat),ndex2d) 4562 ! 4563 ENDIF ! mpi root 4564 !$OMP END MASTER 4565 !$OMP BARRIER 4566 call gather( diag_aod550_dust, auxklon_glo ) 4567 !$OMP MASTER 4568 IF (is_mpi_root .AND. is_omp_root) THEN 4569 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo ,zx_tmp_2d_glo) 4570 CALL histwrite(nid_tra3,"taue550_dust",itra,zx_tmp_2d_glo, & 4571 nbp_lon*(nbp_lat),ndex2d) 4572 ! 4573 ENDIF ! mpi root 4574 !$OMP END MASTER 4575 !$OMP BARRIER 4576 call gather( diag_aod670_dust, auxklon_glo ) 4577 !$OMP MASTER 4578 IF (is_mpi_root .AND. is_omp_root) THEN 4579 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo ,zx_tmp_2d_glo) 4580 CALL histwrite(nid_tra3,"taue670_dust",itra,zx_tmp_2d_glo, & 4581 nbp_lon*(nbp_lat),ndex2d) 4582 ! 4583 ENDIF ! mpi root 4584 !$OMP END MASTER 4585 !$OMP BARRIER 4586 call gather( diag_aod865_dust, auxklon_glo ) 4587 !$OMP MASTER 4588 IF (is_mpi_root .AND. is_omp_root) THEN 4589 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo ,zx_tmp_2d_glo) 4590 CALL histwrite(nid_tra3,"taue865_dust",itra,zx_tmp_2d_glo, & 4591 nbp_lon*(nbp_lat),ndex2d) 4592 ! 4593 ENDIF ! mpi root 4594 !$OMP END MASTER 4595 !$OMP BARRIER 4596 call gather( diag_aod550_dustsco, auxklon_glo ) 4597 !$OMP MASTER 4598 IF (is_mpi_root .AND. is_omp_root) THEN 4599 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo ,zx_tmp_2d_glo) 4600 CALL histwrite(nid_tra3,"taue550_dustsco",itra,zx_tmp_2d_glo, & 4601 nbp_lon*(nbp_lat),ndex2d) 4602 ! 4603 ENDIF ! mpi root 4604 !$OMP END MASTER 4605 !$OMP BARRIER 4606 call gather( diag_aod670_dustsco, auxklon_glo ) 4607 !$OMP MASTER 4608 IF (is_mpi_root .AND. is_omp_root) THEN 4609 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo ,zx_tmp_2d_glo) 4610 CALL histwrite(nid_tra3,"taue670_dustsco",itra,zx_tmp_2d_glo, & 4611 nbp_lon*(nbp_lat),ndex2d) 4612 ! 4613 ENDIF ! mpi root 4614 !$OMP END MASTER 4615 !$OMP BARRIER 4616 call gather( diag_aod865_dustsco, auxklon_glo ) 4617 !$OMP MASTER 4618 IF (is_mpi_root .AND. is_omp_root) THEN 4619 CALL gr_fi_ecrit(1, klon_glo,nbp_lon,nbp_lat, auxklon_glo ,zx_tmp_2d_glo) 4620 CALL histwrite(nid_tra3,"taue865_dustsco",itra,zx_tmp_2d_glo, & 4621 nbp_lon*(nbp_lat),ndex2d) 4622 ENDIF ! mpi root 4623 !$OMP END MASTER 4624 !$OMP BARRIER 4625 4626 !$OMP MASTER 4627 DO it=1,nbtr 4628 ! 4629 WRITE(str2,'(i2.2)') it 4630 ! 4631 call gather( trm, auxklonnbtr_glo ) 4632 ! !$OMP MASTER 4633 IF (is_mpi_root .AND. is_omp_root) THEN 4634 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklonnbtr_glo(1,it) , zx_tmp_2d_glo) 4635 CALL histwrite(nid_tra3,"trm"//str2,itra,zx_tmp_2d_glo, & 4636 nbp_lon*(nbp_lat),ndex2d) 4637 ! 4638 ENDIF ! mpi root 4639 ! !$OMP END MASTER 4640 ! !$OMP BARRIER 4641 call gather( sconc_seri, auxklonnbtr_glo ) 4642 ! !$OMP MASTER 4643 IF (is_mpi_root .AND. is_omp_root) THEN 4644 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklonnbtr_glo(1,it) ,zx_tmp_2d_glo) 4645 CALL histwrite(nid_tra3,"sconc"//str2,itra,zx_tmp_2d_glo, & 4646 nbp_lon*(nbp_lat),ndex2d) 4647 ENDIF ! mpi root 4648 ! !$OMP END MASTER 4649 ! !$OMP BARRIER 4650 ! 4651 ! SAVING VARIABLES IN LESSIVAGE 4652 ! 4653 call gather( flux_tr, auxklonnbtr_glo ) 4654 ! !$OMP MASTER 4655 IF (is_mpi_root .AND. is_omp_root) THEN 4656 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklonnbtr_glo(1,it) ,zx_tmp_2d_glo) 4657 CALL histwrite(nid_tra2,"flux"//str2,itra,zx_tmp_2d_glo, & 4658 nbp_lon*(nbp_lat),ndex2d) 4659 ! 4660 ENDIF ! mpi root 4661 ! !$OMP END MASTER 4662 ! !$OMP BARRIER 4663 call gather( his_ds, auxklonnbtr_glo ) 4664 !! $OMP MASTER 4665 IF (is_mpi_root .AND. is_omp_root) THEN 4666 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklonnbtr_glo(1,it) ,zx_tmp_2d_glo) 4667 CALL histwrite(nid_tra2,"ds"//str2,itra,zx_tmp_2d_glo, & 4668 nbp_lon*(nbp_lat),ndex2d) 4669 ! 4670 ENDIF 4671 ! !$OMP END MASTER 4672 ! !$OMP BARRIER 4673 ENDDO 4674 4675 DO it=1,nbtr 4676 WRITE(str2,'(i2.2)') it 4677 DO i=1, klon 4678 zx_tmp_fi2d(i) = his_dhlsc(i,it)+his_dhcon(i,it)+ & 4679 his_dhbclsc(i,it)+his_dhbccon(i,it) 4680 his_dh(i,it)= his_dhlsc(i,it)+his_dhcon(i,it)+ & 4681 his_dhbclsc(i,it)+his_dhbccon(i,it) 4682 4683 ENDDO 4684 ! 4685 call gather( zx_tmp_fi2d, auxklon_glo ) 4686 ! !$OMP MASTER 4687 IF (is_mpi_root .AND. is_omp_root) THEN 4688 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 4689 CALL histwrite(nid_tra2,"dh"//str2,itra,zx_tmp_2d_glo, & 4690 nbp_lon*(nbp_lat),ndex2d) 4691 ! 4692 ENDIF ! mpi root 4693 ! !$OMP END MASTER 4694 ! !$OMP BARRIER 4695 call gather( his_dhkecv, auxklonnbtr_glo ) 4696 ! !$OMP MASTER 4697 IF (is_mpi_root .AND. is_omp_root) THEN 4698 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklonnbtr_glo(1,it) ,zx_tmp_2d_glo) 4699 CALL histwrite(nid_tra2,"dhkecv"//str2,itra,zx_tmp_2d_glo, & 4700 nbp_lon*(nbp_lat),ndex2d) 4701 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4702 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4703 ! 4704 ENDIF ! mpi root 4705 ! !$OMP END MASTER 4706 ! !$OMP BARRIER 4707 call gather( his_dhkelsc, auxklonnbtr_glo ) 4708 ! !$OMP MASTER 4709 IF (is_mpi_root .AND. is_omp_root) THEN 4710 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklonnbtr_glo(1,it) ,zx_tmp_2d_glo) 4711 CALL histwrite(nid_tra2,"dhkelsc"//str2,itra,zx_tmp_2d_glo, & 4712 nbp_lon*(nbp_lat),ndex2d) 4713 ! 4714 4715 ENDIF ! mpi root 4716 ! !$OMP END MASTER 4717 ! !$OMP BARRIER 4718 ! call gather( d_tr_cv_o, auxklonklevnbtr_glo ) 4719 call gather( d_tr_cv, auxklonklevnbtr_glo ) 4720 ! !$OMP MASTER 4721 IF (is_mpi_root .AND. is_omp_root) THEN 4722 CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,auxklonklevnbtr_glo(1,1,it) , & 4723 zx_tmp_3d_glo) 4724 CALL histwrite(nid_tra2,"d_tr_cv"//str2,itra,zx_tmp_3d_glo, & 4725 nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 4726 ! 4727 ENDIF ! mpi root 4728 ! !$OMP END MASTER 4729 ! !$OMP BARRIER 4730 call gather( d_tr_trsp_o, auxklonklevnbtr_glo ) 4731 ! !$OMP MASTER 4732 IF (is_mpi_root .AND. is_omp_root) THEN 4733 CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,auxklonklevnbtr_glo(1,1,it) , & 4734 zx_tmp_3d_glo) 4735 CALL histwrite(nid_tra2,"d_tr_trsp"//str2,itra,zx_tmp_3d_glo, & 4736 nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 4737 ! 4738 ENDIF ! mpi root 4739 ! !$OMP END MASTER 4740 ! !$OMP BARRIER 4741 call gather( d_tr_sscav_o, auxklonklevnbtr_glo ) 4742 ! !$OMP MASTER 4743 IF (is_mpi_root .AND. is_omp_root) THEN 4744 CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,auxklonklevnbtr_glo(1,1,it) , & 4745 zx_tmp_3d_glo) 4746 CALL histwrite(nid_tra2,"d_tr_sscav"//str2,itra,zx_tmp_3d_glo, & 4747 nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 4748 ! 4749 ENDIF ! mpi root 4750 ! !$OMP END MASTER 4751 ! !$OMP BARRIER 4752 call gather( d_tr_sat_o, auxklonklevnbtr_glo ) 4753 ! !$OMP MASTER 4754 IF (is_mpi_root .AND. is_omp_root) THEN 4755 CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,auxklonklevnbtr_glo(1,1,it) , & 4756 zx_tmp_3d_glo) 4757 CALL histwrite(nid_tra2,"d_tr_sat"//str2,itra,zx_tmp_3d_glo, & 4758 nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 4759 ! 4760 ENDIF ! mpi root 4761 ! !$OMP END MASTER 4762 ! !$OMP BARRIER 4763 call gather( d_tr_uscav_o, auxklonklevnbtr_glo ) 4764 ! !$OMP MASTER 4765 IF (is_mpi_root .AND. is_omp_root) THEN 4766 CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,auxklonklevnbtr_glo(1,1,it) , & 4767 zx_tmp_3d_glo) 4768 CALL histwrite(nid_tra2,"d_tr_uscav"//str2,itra,zx_tmp_3d_glo, & 4769 nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 4770 ! 4771 ENDIF ! mpi root 4772 ! !$OMP END MASTER 4773 ! !$OMP BARRIER 4774 4775 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4776 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4777 call gather( d_tr_insc_o, auxklonklevnbtr_glo ) 4778 ! !$OMP MASTER 4779 IF (is_mpi_root .AND. is_omp_root) THEN 4780 CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,auxklonklevnbtr_glo(1,1,it) , & 4781 zx_tmp_3d_glo) 4782 CALL histwrite(nid_tra2,"d_tr_insc"//str2,itra,zx_tmp_3d_glo, & 4783 nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 4784 ! 4785 ENDIF ! mpi root 4786 ! !$OMP END MASTER 4787 ! !$OMP BARRIER 4788 4789 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4790 call gather( d_tr_bcscav_o, auxklonklevnbtr_glo ) 4791 ! !$OMP MASTER 4792 IF (is_mpi_root .AND. is_omp_root) THEN 4793 CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,auxklonklevnbtr_glo(1,1,it) , & 4794 zx_tmp_3d_glo) 4795 CALL histwrite(nid_tra2,"d_tr_bcscav"//str2,itra,zx_tmp_3d_glo, & 4796 nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 4797 ! 4798 ENDIF ! mpi root 4799 ! !$OMP END MASTER 4800 ! !$OMP BARRIER 4801 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4802 call gather( d_tr_evapls_o, auxklonklevnbtr_glo ) 4803 ! !$OMP MASTER 4804 IF (is_mpi_root .AND. is_omp_root) THEN 4805 CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,auxklonklevnbtr_glo(1,1,it) , & 4806 zx_tmp_3d_glo) 4807 CALL histwrite(nid_tra2,"d_tr_evapls"//str2,itra,zx_tmp_3d_glo, & 4808 nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 4809 ! 4810 ENDIF ! mpi root 4811 ! !$OMP END MASTER 4812 ! !$OMP BARRIER 4813 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4814 ! call gather( d_tr_ls_o, auxklonklevnbtr_glo ) 4815 call gather( d_tr_ls, auxklonklevnbtr_glo ) 4816 ! !$OMP MASTER 4817 IF (is_mpi_root .AND. is_omp_root) THEN 4818 CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,auxklonklevnbtr_glo(1,1,it) , & 4819 zx_tmp_3d_glo) 4820 CALL histwrite(nid_tra2,"d_tr_ls"//str2,itra,zx_tmp_3d_glo, & 4821 nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 4822 4823 ENDIF ! mpi root 4824 ! !$OMP END MASTER 4825 ! !$OMP BARRIER 4826 4827 4828 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4829 ! call gather( d_tr_dyn_o, auxklonklevnbtr_glo ) 4830 call gather( d_tr_dyn, auxklonklevnbtr_glo ) 4831 ! !$OMP MASTER 4832 IF (is_mpi_root .AND. is_omp_root) THEN 4833 CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,auxklonklevnbtr_glo(1,1,it) , & 4834 zx_tmp_3d_glo) 4835 CALL histwrite(nid_tra2,"d_tr_dyn"//str2,itra,zx_tmp_3d_glo, & 4836 nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 4837 4838 print*,'ECRTIURES TENDANCES MODIFIEES NON MAIS' 4839 ENDIF ! mpi root 4840 ! !$OMP END MASTER 4841 ! !$OMP BARRIER 4842 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4843 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4844 ! call gather( d_tr_cl_o, auxklonklevnbtr_glo ) 4845 call gather( d_tr_cl, auxklonklevnbtr_glo ) 4846 ! !$OMP MASTER 4847 IF (is_mpi_root .AND. is_omp_root) THEN 4848 CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,auxklonklevnbtr_glo(1,1,it) , & 4849 zx_tmp_3d_glo) 4850 CALL histwrite(nid_tra2,"d_tr_cl"//str2,itra,zx_tmp_3d_glo, & 4851 nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 4852 4853 ENDIF ! mpi root 4854 ! !$OMP END MASTER 4855 ! !$OMP BARRIER 4856 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4857 ! call gather( d_tr_th_o, auxklonklevnbtr_glo ) 4858 call gather( d_tr_th, auxklonklevnbtr_glo ) 4859 ! !$OMP MASTER 4860 IF (is_mpi_root .AND. is_omp_root) THEN 4861 CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,auxklonklevnbtr_glo(1,1,it) , & 4862 zx_tmp_3d_glo) 4863 CALL histwrite(nid_tra2,"d_tr_th"//str2,itra,zx_tmp_3d_glo, & 4864 nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 4865 4866 ENDIF ! mpi root 4867 ! !$OMP END MASTER 4868 ! !$OMP BARRIER 4869 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4870 call gather( dtrconv,auxklonnbtr_glo ) 4871 ! !$OMP MASTER 4872 IF (is_mpi_root .AND. is_omp_root) THEN 4873 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklonnbtr_glo(1,it) ,zx_tmp_2d_glo) 4874 CALL histwrite(nid_tra2,"dtrconv"//str2,itra,zx_tmp_2d_glo, & 4875 nbp_lon*(nbp_lat),ndex2d) 4876 ! 4877 ENDIF ! mpi root 4878 ! !$OMP END MASTER 4879 ! !$OMP BARRIER 4880 call gather( his_th, auxklonnbtr_glo ) 4881 ! !$OMP MASTER 4882 IF (is_mpi_root .AND. is_omp_root) THEN 4883 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklonnbtr_glo(1,it) ,zx_tmp_2d_glo) 4884 CALL histwrite(nid_tra2,"dtherm"//str2,itra,zx_tmp_2d_glo, & 4885 nbp_lon*(nbp_lat),ndex2d) 4886 ENDIF ! mpi root 4887 ! !$OMP END MASTER 4888 ! !$OMP BARRIER 4889 ! 4890 4891 ENDDO 4892 ! 4893 !$OMP END MASTER 4894 !$OMP BARRIER 4895 call gather( sed_ss, auxklon_glo ) 4896 !$OMP MASTER 4897 IF (is_mpi_root .AND. is_omp_root) THEN 4898 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 4899 CALL histwrite(nid_tra2,"sed_ss",itra,zx_tmp_2d_glo, & 4900 nbp_lon*(nbp_lat),ndex2d) 4901 ! 4902 ENDIF ! mpi root 4903 !$OMP END MASTER 4904 !$OMP BARRIER 4905 call gather( sed_dust, auxklon_glo ) 4906 !$OMP MASTER 4907 IF (is_mpi_root .AND. is_omp_root) THEN 4908 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 4909 CALL histwrite(nid_tra2,"sed_dust",itra,zx_tmp_2d_glo, & 4910 nbp_lon*(nbp_lat),ndex2d) 4911 ! 4912 ENDIF ! mpi root 4913 !$OMP END MASTER 4914 !$OMP BARRIER 4915 call gather( sed_dustsco, auxklon_glo ) 4916 !$OMP MASTER 4917 IF (is_mpi_root .AND. is_omp_root) THEN 4918 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 4919 CALL histwrite(nid_tra2,"sed_dustsco",itra,zx_tmp_2d_glo, & 4920 nbp_lon*(nbp_lat),ndex2d) 4921 ! 4922 ENDIF ! mpi root 4923 !$OMP END MASTER 4924 !$OMP BARRIER 4925 call gather( his_g2pgas, auxklon_glo ) 4926 !$OMP MASTER 4927 IF (is_mpi_root .AND. is_omp_root) THEN 4928 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 4929 CALL histwrite(nid_tra2,"g2p_gas",itra,zx_tmp_2d_glo, & 4930 nbp_lon*(nbp_lat),ndex2d) 4931 ! 4932 ENDIF ! mpi root 4933 !$OMP END MASTER 4934 !$OMP BARRIER 4935 call gather( his_g2paer, auxklon_glo ) 4936 !$OMP MASTER 4937 IF (is_mpi_root .AND. is_omp_root) THEN 4938 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 4939 CALL histwrite(nid_tra2,"g2p_aer",itra,zx_tmp_2d_glo, & 4940 nbp_lon*(nbp_lat),ndex2d) 4941 ! SAVING VARIABLES IN HISTRAC 4942 ! 4943 ENDIF ! mpi root 4944 !$OMP END MASTER 4945 !$OMP BARRIER 4946 call gather( fluxbb, auxklon_glo ) 4947 !$OMP MASTER 4948 IF (is_mpi_root .AND. is_omp_root) THEN 4949 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 4950 CALL histwrite(nid_tra1,"fluxbb",itra,zx_tmp_2d_glo, & 4951 nbp_lon*(nbp_lat),ndex2d) 4952 ! 4953 ENDIF ! mpi root 4954 !$OMP END MASTER 4955 !$OMP BARRIER 4956 call gather( fluxff, auxklon_glo ) 4957 !$OMP MASTER 4958 IF (is_mpi_root .AND. is_omp_root) THEN 4959 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 4960 CALL histwrite(nid_tra1,"fluxff",itra,zx_tmp_2d_glo, & 4961 nbp_lon*(nbp_lat),ndex2d) 4962 ! 4963 ! ======================== BC ============================= 4964 ENDIF ! mpi root 4965 !$OMP END MASTER 4966 !$OMP BARRIER 4967 call gather( fluxbcbb, auxklon_glo ) 4968 !$OMP MASTER 4969 IF (is_mpi_root .AND. is_omp_root) THEN 4970 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 4971 CALL histwrite(nid_tra1,"fluxbcbb",itra,zx_tmp_2d_glo, & 4972 nbp_lon*(nbp_lat),ndex2d) 4973 ! 4974 ENDIF ! mpi root 4975 !$OMP END MASTER 4976 !$OMP BARRIER 4977 call gather( fluxbcff, auxklon_glo ) 4978 !$OMP MASTER 4979 IF (is_mpi_root .AND. is_omp_root) THEN 4980 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 4981 CALL histwrite(nid_tra1,"fluxbcff",itra,zx_tmp_2d_glo, & 4982 nbp_lon*(nbp_lat),ndex2d) 4983 ! 4984 ENDIF ! mpi root 4985 !$OMP END MASTER 4986 !$OMP BARRIER 4987 call gather( fluxbcnff, auxklon_glo ) 4988 !$OMP MASTER 4989 IF (is_mpi_root .AND. is_omp_root) THEN 4990 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 4991 CALL histwrite(nid_tra1,"fluxbcnff",itra,zx_tmp_2d_glo, & 4992 nbp_lon*(nbp_lat),ndex2d) 4993 ! 4994 ENDIF ! mpi root 4995 !$OMP END MASTER 4996 !$OMP BARRIER 4997 call gather( fluxbcba, auxklon_glo ) 4998 !$OMP MASTER 4999 IF (is_mpi_root .AND. is_omp_root) THEN 5000 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5001 CALL histwrite(nid_tra1,"fluxbcba",itra,zx_tmp_2d_glo, & 5002 nbp_lon*(nbp_lat),ndex2d) 5003 ! 5004 ENDIF ! mpi root 5005 !$OMP END MASTER 5006 !$OMP BARRIER 5007 call gather( fluxbc, auxklon_glo ) 5008 !$OMP MASTER 5009 IF (is_mpi_root .AND. is_omp_root) THEN 5010 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5011 CALL histwrite(nid_tra1,"fluxbc",itra,zx_tmp_2d_glo, & 5012 nbp_lon*(nbp_lat),ndex2d) 5013 ! ======================== OM ============================= 5014 ENDIF ! mpi root 5015 !$OMP END MASTER 5016 !$OMP BARRIER 5017 call gather( fluxombb, auxklon_glo ) 5018 !$OMP MASTER 5019 IF (is_mpi_root .AND. is_omp_root) THEN 5020 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5021 CALL histwrite(nid_tra1,"fluxombb",itra,zx_tmp_2d_glo, & 5022 nbp_lon*(nbp_lat),ndex2d) 5023 ! 5024 ENDIF ! mpi root 5025 !$OMP END MASTER 5026 !$OMP BARRIER 5027 call gather( fluxomff, auxklon_glo ) 5028 !$OMP MASTER 5029 IF (is_mpi_root .AND. is_omp_root) THEN 5030 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5031 CALL histwrite(nid_tra1,"fluxomff",itra,zx_tmp_2d_glo, & 5032 nbp_lon*(nbp_lat),ndex2d) 5033 ! 5034 ENDIF ! mpi root 5035 !$OMP END MASTER 5036 !$OMP BARRIER 5037 call gather( fluxomnff, auxklon_glo ) 5038 !$OMP MASTER 5039 IF (is_mpi_root .AND. is_omp_root) THEN 5040 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5041 CALL histwrite(nid_tra1,"fluxomnff",itra,zx_tmp_2d_glo, & 5042 nbp_lon*(nbp_lat),ndex2d) 5043 ! 5044 ENDIF ! mpi root 5045 !$OMP END MASTER 5046 !$OMP BARRIER 5047 call gather( fluxomba, auxklon_glo ) 5048 !$OMP MASTER 5049 IF (is_mpi_root .AND. is_omp_root) THEN 5050 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5051 CALL histwrite(nid_tra1,"fluxomba",itra,zx_tmp_2d_glo, & 5052 nbp_lon*(nbp_lat),ndex2d) 5053 ! 5054 ENDIF ! mpi root 5055 !$OMP END MASTER 5056 !$OMP BARRIER 5057 call gather( fluxomnat, auxklon_glo ) 5058 !$OMP MASTER 5059 IF (is_mpi_root .AND. is_omp_root) THEN 5060 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5061 CALL histwrite(nid_tra1,"fluxomnat",itra,zx_tmp_2d_glo, & 5062 nbp_lon*(nbp_lat),ndex2d) 5063 ! 5064 ENDIF ! mpi root 5065 !$OMP END MASTER 5066 !$OMP BARRIER 5067 call gather( fluxom, auxklon_glo ) 5068 !$OMP MASTER 5069 IF (is_mpi_root .AND. is_omp_root) THEN 5070 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5071 CALL histwrite(nid_tra1,"fluxom",itra,zx_tmp_2d_glo, & 5072 nbp_lon*(nbp_lat),ndex2d) 5073 ! ======================== SO4 ============================= 5074 ENDIF ! mpi root 5075 !$OMP END MASTER 5076 !$OMP BARRIER 5077 call gather( fluxso4ff, auxklon_glo ) 5078 !$OMP MASTER 5079 IF (is_mpi_root .AND. is_omp_root) THEN 5080 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5081 CALL histwrite(nid_tra1,"fluxso4ff",itra,zx_tmp_2d_glo, & 5082 nbp_lon*(nbp_lat),ndex2d) 5083 ! 5084 ENDIF ! mpi root 5085 !$OMP END MASTER 5086 !$OMP BARRIER 5087 call gather( fluxso4nff, auxklon_glo ) 5088 !$OMP MASTER 5089 IF (is_mpi_root .AND. is_omp_root) THEN 5090 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5091 CALL histwrite(nid_tra1,"fluxso4nff",itra,zx_tmp_2d_glo, & 5092 nbp_lon*(nbp_lat),ndex2d) 5093 ! 5094 ENDIF ! mpi root 5095 !$OMP END MASTER 5096 !$OMP BARRIER 5097 call gather( fluxso4bb, auxklon_glo ) 5098 !$OMP MASTER 5099 IF (is_mpi_root .AND. is_omp_root) THEN 5100 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5101 CALL histwrite(nid_tra1,"fluxso4bb",itra,zx_tmp_2d_glo, & 5102 nbp_lon*(nbp_lat),ndex2d) 5103 ! 5104 ENDIF ! mpi root 5105 !$OMP END MASTER 5106 !$OMP BARRIER 5107 call gather( fluxso4ba, auxklon_glo ) 5108 !$OMP MASTER 5109 IF (is_mpi_root .AND. is_omp_root) THEN 5110 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5111 CALL histwrite(nid_tra1,"fluxso4ba",itra,zx_tmp_2d_glo, & 5112 nbp_lon*(nbp_lat),ndex2d) 5113 ! 5114 ENDIF ! mpi root 5115 !$OMP END MASTER 5116 !$OMP BARRIER 5117 call gather( fluxso4, auxklon_glo ) 5118 !$OMP MASTER 5119 IF (is_mpi_root .AND. is_omp_root) THEN 5120 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo ,zx_tmp_2d_glo) 5121 CALL histwrite(nid_tra1,"fluxso4",itra,zx_tmp_2d_glo, & 5122 nbp_lon*(nbp_lat),ndex2d) 5123 ! ======================== H2S ============================= 5124 ENDIF ! mpi root 5125 !$OMP END MASTER 5126 !$OMP BARRIER 5127 call gather( fluxh2sff, auxklon_glo ) 5128 !$OMP MASTER 5129 IF (is_mpi_root .AND. is_omp_root) THEN 5130 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5131 CALL histwrite(nid_tra1,"fluxh2sff",itra,zx_tmp_2d_glo, & 5132 nbp_lon*(nbp_lat),ndex2d) 5133 ! 5134 ENDIF ! mpi root 5135 !$OMP END MASTER 5136 !$OMP BARRIER 5137 call gather( fluxh2snff, auxklon_glo ) 5138 !$OMP MASTER 5139 IF (is_mpi_root .AND. is_omp_root) THEN 5140 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5141 CALL histwrite(nid_tra1,"fluxh2snff",itra,zx_tmp_2d_glo, & 5142 nbp_lon*(nbp_lat),ndex2d) 5143 ! 5144 ENDIF ! mpi root 5145 !$OMP END MASTER 5146 !$OMP BARRIER 5147 call gather( fluxh2sbio, auxklon_glo ) 5148 !$OMP MASTER 5149 IF (is_mpi_root .AND. is_omp_root) THEN 5150 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5151 CALL histwrite(nid_tra1,"fluxh2sbio",itra,zx_tmp_2d_glo, & 5152 nbp_lon*(nbp_lat),ndex2d) 5153 ! ======================== SO2 ============================= 5154 ENDIF ! mpi root 5155 !$OMP END MASTER 5156 !$OMP BARRIER 5157 call gather( fluxso2ff, auxklon_glo ) 5158 !$OMP MASTER 5159 IF (is_mpi_root .AND. is_omp_root) THEN 5160 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5161 CALL histwrite(nid_tra1,"fluxso2ff",itra,zx_tmp_2d_glo, & 5162 nbp_lon*(nbp_lat),ndex2d) 5163 ! 5164 ENDIF ! mpi root 5165 !$OMP END MASTER 5166 !$OMP BARRIER 5167 call gather( fluxso2nff, auxklon_glo ) 5168 !$OMP MASTER 5169 IF (is_mpi_root .AND. is_omp_root) THEN 5170 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5171 CALL histwrite(nid_tra1,"fluxso2nff",itra,zx_tmp_2d_glo, & 5172 nbp_lon*(nbp_lat),ndex2d) 5173 ! 5174 ENDIF ! mpi root 5175 !$OMP END MASTER 5176 !$OMP BARRIER 5177 call gather( fluxso2bb, auxklon_glo ) 5178 !$OMP MASTER 5179 IF (is_mpi_root .AND. is_omp_root) THEN 5180 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5181 CALL histwrite(nid_tra1,"fluxso2bb",itra,zx_tmp_2d_glo, & 5182 nbp_lon*(nbp_lat),ndex2d) 5183 ! 5184 ENDIF ! mpi root 5185 !$OMP END MASTER 5186 !$OMP BARRIER 5187 call gather( fluxso2vol, auxklon_glo ) 5188 !$OMP MASTER 5189 IF (is_mpi_root .AND. is_omp_root) THEN 5190 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5191 CALL histwrite(nid_tra1,"fluxso2vol",itra,zx_tmp_2d_glo, & 5192 nbp_lon*(nbp_lat),ndex2d) 5193 ! 5194 ENDIF ! mpi root 5195 !$OMP END MASTER 5196 !$OMP BARRIER 5197 call gather( fluxso2ba, auxklon_glo ) 5198 !$OMP MASTER 5199 IF (is_mpi_root .AND. is_omp_root) THEN 5200 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5201 CALL histwrite(nid_tra1,"fluxso2ba",itra,zx_tmp_2d_glo, & 5202 nbp_lon*(nbp_lat),ndex2d) 5203 ! 5204 ENDIF ! mpi root 5205 !$OMP END MASTER 5206 !$OMP BARRIER 5207 call gather( fluxso2, auxklon_glo ) 5208 !$OMP MASTER 5209 IF (is_mpi_root .AND. is_omp_root) THEN 5210 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5211 CALL histwrite(nid_tra1,"fluxso2",itra,zx_tmp_2d_glo, & 5212 nbp_lon*(nbp_lat),ndex2d) 5213 ! 5214 ENDIF ! mpi root 5215 !$OMP END MASTER 5216 !$OMP BARRIER 5217 call gather( fluxdms, auxklon_glo ) 5218 !$OMP MASTER 5219 IF (is_mpi_root .AND. is_omp_root) THEN 5220 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5221 CALL histwrite(nid_tra1,"fluxdms",itra,zx_tmp_2d_glo, & 5222 nbp_lon*(nbp_lat),ndex2d) 5223 ! ======================== DD ============================= 5224 ENDIF ! mpi root 5225 !$OMP END MASTER 5226 !$OMP BARRIER 5227 call gather( fluxdustec, auxklon_glo ) 5228 !$OMP MASTER 5229 IF (is_mpi_root .AND. is_omp_root) THEN 5230 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5231 CALL histwrite(nid_tra1,"fluxdustec",itra,zx_tmp_2d_glo, & 5232 nbp_lon*(nbp_lat),ndex2d) 5233 ! 5234 ENDIF ! mpi root 5235 !$OMP END MASTER 5236 !$OMP BARRIER 5237 call gather( fluxddfine, auxklon_glo ) 5238 !$OMP MASTER 5239 IF (is_mpi_root .AND. is_omp_root) THEN 5240 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5241 CALL histwrite(nid_tra1,"fluxddfine",itra,zx_tmp_2d_glo, & 5242 nbp_lon*(nbp_lat),ndex2d) 5243 ! 5244 ENDIF ! mpi root 5245 !$OMP END MASTER 5246 !$OMP BARRIER 5247 call gather( fluxddcoa, auxklon_glo ) 5248 !$OMP MASTER 5249 IF (is_mpi_root .AND. is_omp_root) THEN 5250 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5251 CALL histwrite(nid_tra1,"fluxddcoa",itra,zx_tmp_2d_glo, & 5252 nbp_lon*(nbp_lat),ndex2d) 5253 ! 5254 ENDIF ! mpi root 5255 !$OMP END MASTER 5256 !$OMP BARRIER 5257 call gather( fluxddsco, auxklon_glo ) 5258 !$OMP MASTER 5259 IF (is_mpi_root .AND. is_omp_root) THEN 5260 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5261 CALL histwrite(nid_tra1,"fluxddsco",itra,zx_tmp_2d_glo, & 5262 nbp_lon*(nbp_lat),ndex2d) 5263 ! 5264 ENDIF ! mpi root 5265 !$OMP END MASTER 5266 !$OMP BARRIER 5267 call gather( fluxdd, auxklon_glo ) 5268 !$OMP MASTER 5269 IF (is_mpi_root .AND. is_omp_root) THEN 5270 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5271 CALL histwrite(nid_tra1,"fluxdd",itra,zx_tmp_2d_glo, & 5272 nbp_lon*(nbp_lat),ndex2d) 5273 ! ======================== SS ============================= 5274 ENDIF ! mpi root 5275 !$OMP END MASTER 5276 !$OMP BARRIER 5277 call gather( fluxssfine, auxklon_glo ) 5278 !$OMP MASTER 5279 IF (is_mpi_root .AND. is_omp_root) THEN 5280 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5281 CALL histwrite(nid_tra1,"fluxssfine",itra,zx_tmp_2d_glo, & 5282 nbp_lon*(nbp_lat),ndex2d) 5283 ! 5284 ENDIF ! mpi root 5285 !$OMP END MASTER 5286 !$OMP BARRIER 5287 call gather( fluxsscoa, auxklon_glo ) 5288 !$OMP MASTER 5289 IF (is_mpi_root .AND. is_omp_root) THEN 5290 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5291 CALL histwrite(nid_tra1,"fluxsscoa",itra,zx_tmp_2d_glo, & 5292 nbp_lon*(nbp_lat),ndex2d) 5293 ! 5294 ENDIF ! mpi root 5295 !$OMP END MASTER 5296 !$OMP BARRIER 5297 call gather( fluxss, auxklon_glo ) 5298 !$OMP MASTER 5299 IF (is_mpi_root .AND. is_omp_root) THEN 5300 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5301 CALL histwrite(nid_tra1,"fluxss",itra,zx_tmp_2d_glo, & 5302 nbp_lon*(nbp_lat),ndex2d) 5303 ! 5304 ENDIF ! mpi root 5305 !$OMP END MASTER 5306 !$OMP BARRIER 5307 5308 ! call gather( , auxklon_glo ) 5309 !!!! IF (is_mpi_root .AND. is_omp_root) THEN 5310 !nhl CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,fluxso4chem,zx_tmp_3d_glo) 5311 !nhl CALL histwrite(nid_tra1,"fluxso4chem",itra,zx_tmp_3d_glo, & 5312 !nhl . nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 5313 ! 5314 call gather( flux_sparam_ind, auxklon_glo ) 5315 !$OMP MASTER 5316 IF (is_mpi_root .AND. is_omp_root) THEN 5317 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5318 CALL histwrite(nid_tra1,"flux_sparam_ind",itra,zx_tmp_2d_glo, & 5319 nbp_lon*(nbp_lat),ndex2d) 5320 ! 5321 ENDIF ! mpi root 5322 !$OMP END MASTER 5323 !$OMP BARRIER 5324 call gather( flux_sparam_bb, auxklon_glo ) 5325 !$OMP MASTER 5326 IF (is_mpi_root .AND. is_omp_root) THEN 5327 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5328 CALL histwrite(nid_tra1,"flux_sparam_bb",itra,zx_tmp_2d_glo, & 5329 nbp_lon*(nbp_lat),ndex2d) 5330 ! 5331 ENDIF ! mpi root 5332 !$OMP END MASTER 5333 !$OMP BARRIER 5334 call gather( flux_sparam_ff, auxklon_glo ) 5335 !$OMP MASTER 5336 IF (is_mpi_root .AND. is_omp_root) THEN 5337 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5338 CALL histwrite(nid_tra1,"flux_sparam_ff",itra,zx_tmp_2d_glo, & 5339 nbp_lon*(nbp_lat),ndex2d) 5340 ! 5341 ENDIF ! mpi root 5342 !$OMP END MASTER 5343 !$OMP BARRIER 5344 call gather( flux_sparam_ddfine, auxklon_glo ) 5345 !$OMP MASTER 5346 IF (is_mpi_root .AND. is_omp_root) THEN 5347 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5348 CALL histwrite(nid_tra1,"flux_sparam_ddfine",itra,zx_tmp_2d_glo, & 5349 nbp_lon*(nbp_lat),ndex2d) 5350 ! 5351 ENDIF ! mpi root 5352 !$OMP END MASTER 5353 !$OMP BARRIER 5354 call gather( flux_sparam_ddcoa, auxklon_glo ) 5355 !$OMP MASTER 5356 IF (is_mpi_root .AND. is_omp_root) THEN 5357 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5358 CALL histwrite(nid_tra1,"flux_sparam_ddcoa",itra,zx_tmp_2d_glo, & 5359 nbp_lon*(nbp_lat),ndex2d) 5360 ! 5361 ENDIF ! mpi root 5362 !$OMP END MASTER 5363 !$OMP BARRIER 5364 call gather( flux_sparam_ddsco, auxklon_glo ) 5365 !$OMP MASTER 5366 IF (is_mpi_root .AND. is_omp_root) THEN 5367 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5368 CALL histwrite(nid_tra1,"flux_sparam_ddsco",itra,zx_tmp_2d_glo, & 5369 nbp_lon*(nbp_lat),ndex2d) 5370 ! 5371 ENDIF ! mpi root 5372 !$OMP END MASTER 5373 !$OMP BARRIER 5374 call gather( flux_sparam_ssfine, auxklon_glo ) 5375 !$OMP MASTER 5376 IF (is_mpi_root .AND. is_omp_root) THEN 5377 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5378 CALL histwrite(nid_tra1,"flux_sparam_ssfine",itra,zx_tmp_2d_glo, & 5379 nbp_lon*(nbp_lat),ndex2d) 5380 ! 5381 ENDIF ! mpi root 5382 !$OMP END MASTER 5383 !$OMP BARRIER 5384 call gather( flux_sparam_sscoa, auxklon_glo ) 5385 !$OMP MASTER 5386 IF (is_mpi_root .AND. is_omp_root) THEN 5387 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5388 CALL histwrite(nid_tra1,"flux_sparam_sscoa",itra,zx_tmp_2d_glo, & 5389 nbp_lon*(nbp_lat),ndex2d) 5390 ! 5391 ENDIF ! mpi root 5392 !$OMP END MASTER 5393 !$OMP BARRIER 5394 call gather( u10m_ec, auxklon_glo ) 5395 !$OMP MASTER 5396 IF (is_mpi_root .AND. is_omp_root) THEN 5397 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5398 CALL histwrite(nid_tra1,"u10m",itra,zx_tmp_2d_glo, & 5399 nbp_lon*(nbp_lat),ndex2d) 5400 ! 5401 ENDIF ! mpi root 5402 !$OMP END MASTER 5403 !$OMP BARRIER 5404 call gather( v10m_ec, auxklon_glo ) 5405 !$OMP MASTER 5406 IF (is_mpi_root .AND. is_omp_root) THEN 5407 CALL gr_fi_ecrit(1,klon_glo,nbp_lon,nbp_lat,auxklon_glo,zx_tmp_2d_glo) 5408 CALL histwrite(nid_tra1,"v10m",itra,zx_tmp_2d_glo, & 5409 nbp_lon*(nbp_lat),ndex2d) 5410 ! 5411 ! call gather( , auxklon_glo ) 5412 !!! !$OMP MASTER 5413 ! IF (is_mpi_root .AND. is_omp_root) THEN 5414 !nhl CALL gr_fi_ecrit(nbp_lev,klon_glo,nbp_lon,nbp_lat,flux_sparam_sulf,zx_tmp_3d_glo) 5415 !nhl CALL histwrite(nid_tra1,"flux_sparam_sulf",itra,zx_tmp_3d_glo, & 5416 !nhl . nbp_lon*(nbp_lat)*nbp_lev,ndex3d) 5417 ! 5418 ENDIF ! mpi root 5419 !$OMP END MASTER 5420 !$OMP BARRIER 5421 5422 ENDIF ! ok_histrac 3925 !AS: commenting out and deleting lines 3926 !! IF (ok_histrac) THEN 3927 !! 3928 !! SAVING VARIABLES IN TRACEUR 3929 !!----- many lines deleted---- 3930 !! ENDIF ! ok_histrac 5423 3931 5424 3932 … … 5479 3987 dhkelsc04(i)=0. 5480 3988 dhkelsc05(i)=0. 5481 ! u10m_ss(i)=u10m_ec(i)5482 ! v10m_ss(i)=v10m_ec(i)5483 3989 !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 5484 3990 … … 5599 4105 d_tr_th04(i,k)=0. 5600 4106 d_tr_th05(i,k)=0.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4107 ENDDO 4108 ENDDO 4109 4110 IF(1==0) THEN 4111 ! calcul in original trunk version; problem: budget not closed. Corrected in "ELSE" 4112 DO i=1, klon 4113 DO k=1,klev 4114 5601 4115 if(id_prec>0) d_tr_cv01(i,k) =d_tr_cv_o(i,k,id_prec) 5602 4116 if(id_fine>0) d_tr_cv02(i,k) =d_tr_cv_o(i,k,id_fine) … … 5641 4155 ENDDO 5642 4156 ENDDO 5643 IF(1==0) THEN 4157 ELSE ! correction pour fermeture de bilan, par FH dans les simus de Binta pour Habib 4158 DO i=1, klon 4159 DO k=1,klev 4160 if(id_prec>0) d_tr_cv01(i,k) =d_tr_cv(i,k,id_prec)/pdtphys 4161 if(id_fine>0) d_tr_cv02(i,k) =d_tr_cv(i,k,id_fine)/pdtphys 4162 if(id_coss>0) d_tr_cv03(i,k) =d_tr_cv(i,k,id_coss)/pdtphys 4163 if(id_codu>0) d_tr_cv04(i,k) =d_tr_cv(i,k,id_codu)/pdtphys 4164 if(id_scdu>0) d_tr_cv05(i,k) =d_tr_cv(i,k,id_scdu)/pdtphys 4165 if(id_prec>0) d_tr_trsp01(i,k) =d_tr_trsp(i,k,id_prec)/pdtphys 4166 if(id_fine>0) d_tr_trsp02(i,k) =d_tr_trsp(i,k,id_fine)/pdtphys 4167 if(id_coss>0) d_tr_trsp03(i,k) =d_tr_trsp(i,k,id_coss)/pdtphys 4168 if(id_codu>0) d_tr_trsp04(i,k) =d_tr_trsp(i,k,id_codu)/pdtphys 4169 if(id_scdu>0) d_tr_trsp05(i,k) =d_tr_trsp(i,k,id_scdu)/pdtphys 4170 if(id_prec>0) d_tr_sscav01(i,k)=d_tr_sscav(i,k,id_prec)/pdtphys 4171 if(id_fine>0) d_tr_sscav02(i,k)=d_tr_sscav(i,k,id_fine)/pdtphys 4172 if(id_coss>0) d_tr_sscav03(i,k)=d_tr_sscav(i,k,id_coss)/pdtphys 4173 if(id_codu>0) d_tr_sscav04(i,k)=d_tr_sscav(i,k,id_codu)/pdtphys 4174 if(id_scdu>0) d_tr_sscav05(i,k)=d_tr_sscav(i,k,id_scdu)/pdtphys 4175 if(id_prec>0) d_tr_sat01(i,k) =d_tr_sat(i,k,id_prec)/pdtphys 4176 if(id_fine>0) d_tr_sat02(i,k) =d_tr_sat(i,k,id_fine)/pdtphys 4177 if(id_coss>0) d_tr_sat03(i,k) =d_tr_sat(i,k,id_coss)/pdtphys 4178 if(id_codu>0) d_tr_sat04(i,k) =d_tr_sat(i,k,id_codu)/pdtphys 4179 if(id_scdu>0) d_tr_sat05(i,k) =d_tr_sat(i,k,id_scdu)/pdtphys 4180 if(id_prec>0) d_tr_uscav01(i,k)=d_tr_uscav(i,k,id_prec)/pdtphys 4181 if(id_fine>0) d_tr_uscav02(i,k)=d_tr_uscav(i,k,id_fine)/pdtphys 4182 if(id_coss>0) d_tr_uscav03(i,k)=d_tr_uscav(i,k,id_coss)/pdtphys 4183 if(id_codu>0) d_tr_uscav04(i,k)=d_tr_uscav(i,k,id_codu)/pdtphys 4184 if(id_scdu>0) d_tr_uscav05(i,k)=d_tr_uscav(i,k,id_scdu)/pdtphys 4185 if(id_prec>0) d_tr_insc01(i,k)=d_tr_insc(i,k,id_prec)/pdtphys 4186 if(id_fine>0) d_tr_insc02(i,k)=d_tr_insc(i,k,id_fine)/pdtphys 4187 if(id_coss>0) d_tr_insc03(i,k)=d_tr_insc(i,k,id_coss)/pdtphys 4188 if(id_codu>0) d_tr_insc04(i,k)=d_tr_insc(i,k,id_codu)/pdtphys 4189 if(id_scdu>0) d_tr_insc05(i,k)=d_tr_insc(i,k,id_scdu)/pdtphys 4190 if(id_prec>0) d_tr_bcscav01(i,k)=d_tr_bcscav(i,k,id_prec)/pdtphys 4191 if(id_fine>0) d_tr_bcscav02(i,k)=d_tr_bcscav(i,k,id_fine)/pdtphys 4192 if(id_coss>0) d_tr_bcscav03(i,k)=d_tr_bcscav(i,k,id_coss)/pdtphys 4193 if(id_codu>0) d_tr_bcscav04(i,k)=d_tr_bcscav(i,k,id_codu)/pdtphys 4194 if(id_scdu>0) d_tr_bcscav05(i,k)=d_tr_bcscav(i,k,id_scdu)/pdtphys 4195 if(id_prec>0) d_tr_evapls01(i,k)=d_tr_evapls(i,k,id_prec)/pdtphys 4196 if(id_fine>0) d_tr_evapls02(i,k)=d_tr_evapls(i,k,id_fine)/pdtphys 4197 if(id_coss>0) d_tr_evapls03(i,k)=d_tr_evapls(i,k,id_coss)/pdtphys 4198 if(id_codu>0) d_tr_evapls04(i,k)=d_tr_evapls(i,k,id_codu)/pdtphys 4199 if(id_scdu>0) d_tr_evapls05(i,k)=d_tr_evapls(i,k,id_scdu)/pdtphys 4200 ENDDO 4201 ENDDO 4202 ENDIF 4203 4204 IF(1==0) THEN ! This "if" is as in original trunk 5644 4205 DO i=1, klon 5645 4206 DO k=1,klev … … 5865 4426 END SUBROUTINE readregions_spl 5866 4427 4428 !! AS: SUBROUTINE readscaleparams_spl pas appellee 5867 4429 SUBROUTINE readscaleparams_spl(scale_param, nbreg, & 5868 4430 filescaleparams)
Note: See TracChangeset
for help on using the changeset viewer.