Changeset 3331 for LMDZ5/branches/IPSLCM5A2.1_ISO/libf/dyn3d_common
- Timestamp:
- May 22, 2018, 4:30:21 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/IPSLCM5A2.1_ISO/libf/dyn3d_common/infotrac.F90
r2567 r3331 11 11 ! number of tracers used in the physics 12 12 INTEGER, SAVE :: nbtr 13 14 ! CRisi: on retranche les isotopes des traceurs habituels 15 ! On fait un tableaux d'indices des traceurs qui passeront dans phytrac 16 INTEGER, SAVE :: nqtottr 17 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: itr_indice 13 18 14 19 ! CRisi: nb traceurs pères= directement advectés par l'air … … 98 103 99 104 INTEGER :: nqtrue ! number of tracers read from tracer.def, without higer order of moment 100 INTEGER :: iq, new_iq, iiq, jq, ierr 105 INTEGER :: iq, new_iq, iiq, jq, ierr,itr 101 106 INTEGER :: ifils,ipere,generation ! CRisi 102 107 LOGICAL :: continu,nouveau_traceurdef 103 108 INTEGER :: IOstatus ! gestion de la retrocompatibilite de traceur.def 104 CHARACTER(len= 15) :: tchaine109 CHARACTER(len=30) :: tchaine 105 110 106 111 character(len=*),parameter :: modname="infotrac_init" … … 203 208 CALL abort_gcm('infotrac_init','Bad number of water phases',1) 204 209 END IF 205 ! nbtr has been read from INCA by init_const_lmdz() in gcm.F 206 #ifdef INCA 207 CALL Init_chem_inca_trac(nbtr) 208 #endif 209 nqtrue=nbtr+nqo 210 211 ALLOCATE(hadv_inca(nbtr), vadv_inca(nbtr)) 210 ! On déplace ce qui suit plus bas, une fois qu'on connait nbtr retranché des 211 ! isotopes 212 ! ! nbtr has been read from INCA by init_const_lmdz() in gcm.F 213 !#ifdef INCA 214 ! CALL Init_chem_inca_trac(nbtr) 215 !#endif 216 ! nqtrue=nbtr+nqo 217 ! 218 ! ALLOCATE(hadv_inca(nbtr), vadv_inca(nbtr)) 212 219 213 220 END IF ! type_trac … … 300 307 write(lunout,*) 'C''est la nouvelle version de traceur.def' 301 308 tnom_0(iq)=tchaine(1:iiq-1) 302 tnom_transp(iq)=tchaine(iiq+1: 15)309 tnom_transp(iq)=tchaine(iiq+1:LEN_TRIM(tchaine)) 303 310 else 304 311 write(lunout,*) 'C''est l''ancienne version de traceur.def' … … 364 371 !jyg< 365 372 ! 366 ! Transfert number of tracers to Reprobus 367 IF (type_trac == 'repr') THEN 368 #ifdef REPROBUS 369 CALL Init_chem_rep_trac(nbtr) 370 #endif 371 END IF 373 ! On déplace ce qui suit plus bas une fois qu'on a retranché les isotopes de 374 ! nbtr 375 !! Transfert number of tracers to Reprobus 376 ! IF (type_trac == 'repr') THEN 377 !#ifdef REPROBUS 378 ! CALL Init_chem_rep_trac(nbtr) 379 !#endif 380 ! END IF 372 381 ! 373 382 ! Allocate variables depending on nbtr 374 383 ! 375 ALLOCATE(conv_flg(nbtr), pbl_flg(nbtr), solsym(nbtr))376 conv_flg(:) = 1 ! convection activated for all tracers377 pbl_flg(:) = 1 ! boundary layer activated for all tracers384 ! ALLOCATE(conv_flg(nbtr), pbl_flg(nbtr), solsym(nbtr)) 385 ! conv_flg(:) = 1 ! convection activated for all tracers 386 ! pbl_flg(:) = 1 ! boundary layer activated for all tracers 378 387 ! 379 388 !! ELSE ! type_trac=inca : config_inca='aero' ou 'chem' … … 416 425 write(lunout,*) 'C''est la nouvelle version de traceur.def' 417 426 tnom_0(iq)=tchaine(1:iiq-1) 418 tnom_transp(iq)=tchaine(iiq+1: 15)427 tnom_transp(iq)=tchaine(iiq+1:LEN_TRIM(tchaine)) 419 428 else 420 429 write(lunout,*) 'C''est l''ancienne version de traceur.def' … … 423 432 tnom_transp(iq) = 'air' 424 433 endif 425 write(lunout,*) ' tnom_0(iq)=<',trim(tnom_0(iq)),'>'434 write(lunout,*) 'infotrac 426: tnom_0(iq)=<',trim(tnom_0(iq)),'>' 426 435 write(lunout,*) 'tnom_transp(iq)=<',trim(tnom_transp(iq)),'>' 427 436 … … 607 616 continu=.true. 608 617 ipere=1 609 do while (continu) 618 do while (continu) 619 write(lunout,*) 'infotrac 610: ipere,tnom_0(ipere)=',ipere,tnom_0(ipere) 620 write(lunout,*) 'tnom_transp(iq)=',tnom_transp(iq) 610 621 if (tnom_transp(iq) == tnom_0(ipere)) then 611 622 ! Son père est ipere 612 623 WRITE(lunout,*) 'Le traceur',iq,'appele ', & 613 624 & trim(tnom_0(iq)),' est le fils de ',ipere,'appele ',trim(tnom_0(ipere)) 625 if (iq.eq.ipere) then 626 CALL abort_gcm('infotrac_init','Un fils est son propre pere',1) 627 endif 614 628 nqfils(ipere)=nqfils(ipere)+1 615 629 iqfils(nqfils(ipere),ipere)=iq … … 621 635 WRITE(lunout,*) 'Le traceur',iq,'appele ', & 622 636 & trim(tnom_0(iq)),', est orpelin.' 637 write(lunout,*) 'ipere,nqtot=',ipere,nqtot 623 638 CALL abort_gcm('infotrac_init','Un traceur est orphelin',1) 624 639 endif !if (ipere.gt.nqtot) then … … 676 691 ! detecter quels sont les traceurs isotopiques parmi des traceurs 677 692 call infotrac_isoinit(tnom_0,nqtrue) 693 694 if (ntraciso.gt.0) then 695 ! retrancher les traceurs isotopiques de la liste des traceurs qui passent dans 696 ! phytrac 697 nbtr=nbtr-nqo*ntraciso 698 699 ! faire un tableau d'indice des traceurs qui passeront dans phytrac 700 nqtottr=nqtot-nqo*(1+ntraciso) 701 write(*,*) 'infotrac 704: nqtottr,nqtot,nqo=',nqtottr,nqtot,nqo 702 ! Rq: nqtottr n'est pas forcément égal à nbtr dans le cas où new_iq /= nqtrue 703 ALLOCATE (itr_indice(nqtot)) 704 itr_indice(:)=0 705 itr=0 706 do iq=nqo+1, nqtot 707 if (iso_num(iq).eq.0) then 708 itr=itr+1 709 write(*,*) 'itr=',itr 710 itr_indice(itr)=iq 711 endif !if (iso_num(iq).eq.0) then 712 enddo 713 if (itr.ne.nqtottr) then 714 CALL abort_gcm('infotrac_init','pb dans le calcul de nqtottr',1) 715 endif 716 endif !if (ntraciso.gt.0) then 717 718 ! on déplace les initialisations de REPROBUS ou INCA ici, avec la nouvelle 719 ! valeur de nbtr 720 721 if (type_trac == 'inca') then 722 ! nbtr has been read from INCA by init_const_lmdz() in gcm.F 723 #ifdef INCA 724 CALL Init_chem_inca_trac(nbtr) 725 #endif 726 nqtrue=nbtr+nqo 727 728 ALLOCATE(hadv_inca(nbtr), vadv_inca(nbtr)) 729 endif 730 731 ! Transfert number of tracers to Reprobus 732 IF (type_trac == 'repr') THEN 733 #ifdef REPROBUS 734 CALL Init_chem_rep_trac(nbtr) 735 #endif 736 END IF 737 ! 738 ! Allocate variables depending on nbtr 739 ! 740 ALLOCATE(conv_flg(nbtr), pbl_flg(nbtr), solsym(nbtr)) 741 conv_flg(:) = 1 ! convection activated for all tracers 742 pbl_flg(:) = 1 ! boundary layer activated for all tracers 743 678 744 679 745 !----------------------------------------------------------------------- … … 732 798 733 799 do iq=nqo+1,nqtot 734 !write(lunout,*) 'infotrac 569: iq,tnom_0(iq)=',iq,tnom_0(iq)800 write(lunout,*) 'infotrac 569: iq,tnom_0(iq)=',iq,tnom_0(iq) 735 801 do phase=1,nqo 736 802 do ixt= 1,niso_possibles 737 803 tnom_trac=trim(tnom_0(phase))//'_' 738 804 tnom_trac=trim(tnom_trac)//trim(tnom_iso(ixt)) 739 !write(*,*) 'phase,ixt,tnom_trac=',phase,ixt,tnom_trac805 write(*,*) 'phase,ixt,tnom_trac=',phase,ixt,tnom_trac 740 806 IF (tnom_0(iq) == tnom_trac) then 741 !write(lunout,*) 'Ce traceur est un isotope'807 write(lunout,*) 'Ce traceur est un isotope' 742 808 nb_iso(ixt,phase)=nb_iso(ixt,phase)+1 743 809 nb_isoind(phase)=nb_isoind(phase)+1 … … 746 812 indnum_fn_num(ixt)=iso_indnum(iq) 747 813 phase_num(iq)=phase 748 !write(lunout,*) 'iso_num(iq)=',iso_num(iq)749 !write(lunout,*) 'iso_indnum(iq)=',iso_indnum(iq)750 !write(lunout,*) 'indnum_fn_num(ixt)=',indnum_fn_num(ixt)751 !write(lunout,*) 'phase_num(iq)=',phase_num(iq)814 write(lunout,*) 'iso_num(iq)=',iso_num(iq) 815 write(lunout,*) 'iso_indnum(iq)=',iso_indnum(iq) 816 write(lunout,*) 'indnum_fn_num(ixt)=',indnum_fn_num(ixt) 817 write(lunout,*) 'phase_num(iq)=',phase_num(iq) 752 818 goto 20 753 819 else if (iqpere(iq).gt.0) then 754 820 if (tnom_0(iqpere(iq)) == tnom_trac) then 755 !write(lunout,*) 'Ce traceur est le fils d''un isotope'821 write(lunout,*) 'Ce traceur est le fils d''un isotope' 756 822 ! c'est un traceur d'isotope 757 823 nb_traciso(ixt,phase)=nb_traciso(ixt,phase)+1 … … 760 826 zone_num(iq)=nb_traciso(ixt,phase) 761 827 phase_num(iq)=phase 762 !write(lunout,*) 'iso_num(iq)=',iso_num(iq)763 !write(lunout,*) 'phase_num(iq)=',phase_num(iq)764 !write(lunout,*) 'zone_num(iq)=',zone_num(iq)828 write(lunout,*) 'iso_num(iq)=',iso_num(iq) 829 write(lunout,*) 'phase_num(iq)=',phase_num(iq) 830 write(lunout,*) 'zone_num(iq)=',zone_num(iq) 765 831 goto 20 766 832 endif !if (tnom_0(iqpere(iq)) == trim(tnom_0(phase))//trim(tnom_iso(ixt))) then … … 771 837 enddo !do iq=1,nqtot 772 838 773 ! write(lunout,*) 'iso_num=',iso_num 774 ! write(lunout,*) 'iso_indnum=',iso_indnum 775 ! write(lunout,*) 'zone_num=',zone_num 776 ! write(lunout,*) 'phase_num=',phase_num 777 ! write(lunout,*) 'indnum_fn_num=',indnum_fn_num 839 write(lunout,*) 'iso_num=',iso_num 840 write(lunout,*) 'iso_indnum=',iso_indnum 841 write(lunout,*) 'zone_num=',zone_num 842 write(lunout,*) 'phase_num=',phase_num 843 write(lunout,*) 'indnum_fn_num=',indnum_fn_num 844 write(lunout,*) 'nb_iso=',nb_iso 778 845 779 846 do ixt= 1,niso_possibles … … 823 890 ! dimensions isotopique: 824 891 ntraciso=niso*(ntraceurs_zone+1) 825 ! WRITE(lunout,*) 'niso=',niso 826 ! WRITE(lunout,*) 'ntraceurs_zone,ntraciso=',ntraceurs_zone,ntraciso 892 WRITE(lunout,*) 'niso=',niso 893 WRITE(lunout,*) 'ntraceurs_zone,ntraciso=',ntraceurs_zone,ntraciso 894 WRITE(lunout,*) 'use_iso=',use_iso 827 895 828 896 ! flags isotopiques: … … 832 900 ok_isotopes=.false. 833 901 endif 834 ! WRITE(lunout,*) 'ok_isotopes=',ok_isotopes902 WRITE(lunout,*) 'infotrac 837: ok_isotopes=',ok_isotopes 835 903 836 904 if (ok_isotopes) then
Note: See TracChangeset
for help on using the changeset viewer.