- Timestamp:
- Jun 8, 2021, 6:33:45 PM (3 years ago)
- Location:
- LMDZ6/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3d_common/infotrac.F90
r3923 r3924 17 17 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: itr_indice 18 18 19 ! CRisi: nb traceurs p ?res= directement advect?s par l'air19 ! CRisi: nb traceurs peres= directement advectes par l'air 20 20 INTEGER, SAVE :: nqperes 21 21 … … 39 39 ! CRisi: tableaux de fils 40 40 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: nqfils 41 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: nqdesc ! nombres de fils + nombre de tous les petits fils sur toutes les g ?n?rations41 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: nqdesc ! nombres de fils + nombre de tous les petits fils sur toutes les generations 42 42 INTEGER, SAVE :: nqdesc_tot 43 43 INTEGER, ALLOCATABLE, DIMENSION(:,:), SAVE :: iqfils … … 61 61 LOGICAL, DIMENSION(niso_possibles),SAVE :: use_iso 62 62 INTEGER, ALLOCATABLE, DIMENSION(:,:), SAVE :: iqiso ! donne indice iq en fn de (ixt,phase) 63 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: iso_num ! donne num ?ro iso entre 1 et niso_possibles en fn de nqtot64 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: iso_indnum ! donne num ?ro iso entre 1 et niso effectif en fn de nqtot65 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: zone_num ! donne num ?ro de la zone de tracage en fn de nqtot66 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: phase_num ! donne num ?ro de la zone de tracage en fn de nqtot67 INTEGER, DIMENSION(niso_possibles), SAVE :: indnum_fn_num ! donne indice entre entre 1 et niso en fonction du num ?ro d isotope entre 1 et niso_possibles68 INTEGER, ALLOCATABLE, DIMENSION(:,:), SAVE :: index_trac ! num ?ro ixt en fn izone, indnum entre 1 et niso63 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: iso_num ! donne numero iso entre 1 et niso_possibles en fn de nqtot 64 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: iso_indnum ! donne numero iso entre 1 et niso effectif en fn de nqtot 65 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: zone_num ! donne numero de la zone de tracage en fn de nqtot 66 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: phase_num ! donne numero de la zone de tracage en fn de nqtot 67 INTEGER, DIMENSION(niso_possibles), SAVE :: indnum_fn_num ! donne indice entre entre 1 et niso en fonction du numero d isotope entre 1 et niso_possibles 68 INTEGER, ALLOCATABLE, DIMENSION(:,:), SAVE :: index_trac ! numero ixt en fn izone, indnum entre 1 et niso 69 69 INTEGER,SAVE :: niso,ntraceurs_zone,ntraciso 70 70 … … 257 257 IF (nqo == 4 .AND. type_trac=='inco') THEN ! ThL 258 258 WRITE(lunout,*) trim(modname),': you are coupling with INCA, and also using CO2i.' 259 nqo = 3 ! A am ?liorier... je force 3 traceurs eau... ThL259 nqo = 3 ! A ameliorier... je force 3 traceurs eau... ThL 260 260 WRITE(lunout,*) trim(modname),': nqo = ',nqo 261 261 ELSE … … 319 319 ! iadv = 13 schema Frederic Hourdin II 320 320 ! iadv = 16 schema PPM Monotone(Collela & Woodward 1984) 321 ! iadv = 17 schema PPM Semi Monotone (overshoots autoris ?s)322 ! iadv = 18 schema PPM Positif Defini (overshoots undershoots autoris ?s)321 ! iadv = 17 schema PPM Semi Monotone (overshoots autorises) 322 ! iadv = 18 schema PPM Positif Defini (overshoots undershoots autorises) 323 323 ! iadv = 20 schema Slopes 324 324 ! iadv = 30 schema Prather … … 595 595 596 596 597 ! CRisi: quels sont les traceurs fils et les traceurs p ?res.598 ! initialiser tous les tableaux d'indices li ?s aux traceurs familiaux599 ! + v ?rifier que tous les p?res sont ?crits en premi?res positions597 ! CRisi: quels sont les traceurs fils et les traceurs peres. 598 ! initialiser tous les tableaux d'indices lies aux traceurs familiaux 599 ! + verifier que tous les peres sont ecrits en premieres positions 600 600 ALLOCATE(nqfils(nqtot),nqdesc(nqtot)) 601 601 ALLOCATE(iqfils(nqtot,nqtot)) … … 609 609 DO iq=1,nqtot 610 610 if (tnom_transp(iq) == 'air') then 611 ! ceci est un traceur p ?re611 ! ceci est un traceur pere 612 612 WRITE(lunout,*) 'Le traceur',iq,', appele ',trim(tnom_0(iq)),', est un pere' 613 613 nqperes=nqperes+1 614 614 iqpere(iq)=0 615 615 else !if (tnom_transp(iq) == 'air') then 616 ! ceci est un fils. Qui est son p ?re?616 ! ceci est un fils. Qui est son pere? 617 617 WRITE(lunout,*) 'Le traceur',iq,', appele ',trim(tnom_0(iq)),', est un fils' 618 618 continu=.true. … … 620 620 do while (continu) 621 621 if (tnom_transp(iq) == tnom_0(ipere)) then 622 ! Son p ?re est ipere622 ! Son pere est ipere 623 623 WRITE(lunout,*) 'Le traceur',iq,'appele ', & 624 624 & trim(tnom_0(iq)),' est le fils de ',ipere,'appele ',trim(tnom_0(ipere)) … … 646 646 WRITE(lunout,*) 'iqfils=',iqfils 647 647 648 ! Calculer le nombre de descendants ?partir de iqfils et de nbfils648 ! Calculer le nombre de descendants a partir de iqfils et de nbfils 649 649 DO iq=1,nqtot 650 650 generation=0 … … 669 669 WRITE(lunout,*) 'nqdesc_tot=',nqdesc_tot 670 670 671 ! Interdire autres sch ?mas que 10 pour les traceurs fils, et autres sch?mas672 ! que 10 et 14 si des p ?res ont des fils671 ! Interdire autres schemas que 10 pour les traceurs fils, et autres schemas 672 ! que 10 et 14 si des peres ont des fils 673 673 do iq=1,nqtot 674 674 if (iqpere(iq).gt.0) then 675 ! ce traceur a un p ?re qui n'est pas l'air676 ! Seul le sch ?ma 10 est autoris?675 ! ce traceur a un pere qui n'est pas l'air 676 ! Seul le schema 10 est autorise 677 677 if (iadv(iq)/=10) then 678 678 WRITE(lunout,*)trim(modname),' STOP : The option iadv=',iadv(iq),' is not implemented for sons' 679 679 CALL abort_gcm('infotrac_init','Sons should be advected by scheme 10',1) 680 680 endif 681 ! Le traceur p ?re ne peut ?tre advect? que par sch?ma 10 ou 14:681 ! Le traceur pere ne peut etre advecte que par schema 10 ou 14: 682 682 IF (iadv(iqpere(iq))/=10 .AND. iadv(iqpere(iq))/=14) THEN 683 683 WRITE(lunout,*)trim(modname),' STOP : The option iadv=',iadv(iq),' is not implemented for fathers' … … 693 693 694 694 ! if (ntraciso.gt.0) then 695 ! le 18 sep 2020: on enl ?ve la condition ntraciso.gt.0 car nqtottr doit ?tre696 ! connu m ?me si il n'y a pas d'isotopes!695 ! le 18 sep 2020: on enleve la condition ntraciso.gt.0 car nqtottr doit etre 696 ! connu meme si il n'y a pas d'isotopes! 697 697 write(lunout,*) 'infotrac 702: nbtr,ntraciso=',nbtr,ntraciso 698 698 ! retrancher les traceurs isotopiques de la liste des traceurs qui passent dans … … 703 703 nqtottr=nqtot-nqo*(1+ntraciso) 704 704 write(lunout,*) 'infotrac 704: nqtottr,nqtot,nqo=',nqtottr,nqtot,nqo 705 ! Rq: nqtottr n'est pas forc ?ment ?gal ? nbtr dans le cas o?new_iq /= nqtrue705 ! Rq: nqtottr n'est pas forcement egal a nbtr dans le cas ou new_iq /= nqtrue 706 706 ALLOCATE (itr_indice(nqtottr)) 707 707 itr_indice(:)=0 … … 929 929 930 930 if (nb_iso(ixt,1).eq.1) then 931 ! on v ?rifie que toutes les phases ont le m?me nombre de931 ! on verifie que toutes les phases ont le meme nombre de 932 932 ! traceurs 933 933 do phase=2,nqo … … 942 942 ntraceurs_zone=nb_traciso(ixt,1) 943 943 944 ! on v ?rifie que toutes les phases ont le m?me nombre de944 ! on verifie que toutes les phases ont le meme nombre de 945 945 ! traceurs 946 946 do phase=2,nqo … … 951 951 endif 952 952 enddo !do phase=2,nqo 953 ! on v ?rifie que tous les isotopes ont le m?me nombre de953 ! on verifie que tous les isotopes ont le meme nombre de 954 954 ! traceurs 955 955 if (ntraceurs_zone_prec.gt.0) then -
LMDZ6/trunk/libf/dynphy_lonlat/phylmd/iniphysiq_mod.F90
r3870 r3924 24 24 iso_indnum,zone_num,phase_num,& 25 25 indnum_fn_num,index_trac,& 26 niso,ntraceurs_zone,ntraciso 26 niso,ntraceurs_zone,ntraciso,nqtottr,itr_indice 27 27 #ifdef CPP_StratAer 28 28 USE infotrac, ONLY: nbtr_bin, nbtr_sulgas, id_OCS_strat, & … … 146 146 147 147 ! Initialize tracer names, numbers, etc. for physics 148 CALL init_infotrac_phy(nqtot,nqo,nbtr,nq CO2,tname,ttext,type_trac,&148 CALL init_infotrac_phy(nqtot,nqo,nbtr,nqtottr,nqCO2,tname,ttext,type_trac,& 149 149 niadv,conv_flg,pbl_flg,solsym,& 150 150 nqfils,nqdesc,nqdesc_tot,iqfils,iqpere,& … … 154 154 iso_indnum,zone_num,phase_num,& 155 155 indnum_fn_num,index_trac,& 156 niso,ntraceurs_zone,ntraciso &156 niso,ntraceurs_zone,ntraciso,itr_indice & 157 157 #ifdef CPP_StratAer 158 158 ,nbtr_bin,nbtr_sulgas& -
LMDZ6/trunk/libf/phylmd/infotrac_phy.F90
r3872 r3924 20 20 INTEGER, SAVE :: nbtr 21 21 !$OMP THREADPRIVATE(nbtr) 22 23 INTEGER, SAVE :: nqtottr 24 !$OMP THREADPRIVATE(nqtottr) 22 25 23 26 ! ThL : number of CO2 tracers ModThL … … 97 100 INTEGER,SAVE :: niso,ntraceurs_zone,ntraciso 98 101 !$OMP THREADPRIVATE(niso,ntraceurs_zone,ntraciso) 102 103 INTEGER, ALLOCATABLE, DIMENSION(:), SAVE :: itr_indice ! numéro iq entre 1 et nqtot qui correspond au traceur itr entre 1 et nqtottr 104 !$OMP THREADPRIVATE(itr_indice) 99 105 100 106 CONTAINS 101 107 102 SUBROUTINE init_infotrac_phy(nqtot_,nqo_,nbtr_,nq CO2_,tname_,ttext_,type_trac_,&108 SUBROUTINE init_infotrac_phy(nqtot_,nqo_,nbtr_,nqtottr_,nqCO2_,tname_,ttext_,type_trac_,& 103 109 niadv_,conv_flg_,pbl_flg_,solsym_,& 104 110 nqfils_,nqdesc_,nqdesc_tot_,iqfils_,iqpere_,& … … 108 114 iso_indnum_,zone_num_,phase_num_,& 109 115 indnum_fn_num_,index_trac_,& 110 niso_,ntraceurs_zone_,ntraciso_ &116 niso_,ntraceurs_zone_,ntraciso_,itr_indice_& 111 117 #ifdef CPP_StratAer 112 118 ,nbtr_bin_,nbtr_sulgas_& … … 122 128 INTEGER,INTENT(IN) :: nqo_ 123 129 INTEGER,INTENT(IN) :: nbtr_ 130 INTEGER,INTENT(IN) :: nqtottr_ 124 131 INTEGER,INTENT(IN) :: nqCO2_ 125 132 #ifdef CPP_StratAer … … 162 169 INTEGER,INTENT(IN) :: ntraceurs_zone_ 163 170 INTEGER,INTENT(IN) :: ntraciso_ 171 INTEGER,INTENT(IN) :: itr_indice_(nqtottr_) 164 172 165 173 CHARACTER(LEN=30) :: modname="init_infotrac_phy" … … 169 177 nbtr=nbtr_ 170 178 nqCO2=nqCO2_ 179 nqtottr=nqtottr_ 171 180 #ifdef CPP_StratAer 172 181 nbtr_bin=nbtr_bin_ … … 242 251 ALLOCATE(index_trac(ntraceurs_zone,niso)) 243 252 index_trac(:,:)=index_trac_(:,:) 253 254 ALLOCATE(itr_indice(nqtottr)) 255 itr_indice(:)=itr_indice_(:) 244 256 ENDIF ! of IF(ok_isotopes) 245 257 -
LMDZ6/trunk/makelmdz_fcm
r3911 r3924 40 40 full='' 41 41 libphy=false 42 isotopes=false 43 isoverif=false 44 diagiso=false 45 isotrac=false 42 46 43 47 arch_defined="FALSE" … … 104 108 [-dust true/false] : compile with/without the dust package by Boucher and co (default: false) 105 109 [-strataer true/false] : compile with/without the strat aer package by Boucher and co (default: false) 110 [-isotopes true/false] : compile with/without water isotopes in the physics 111 [-isoverif true/false] : compile with/without verifications for water isotopes in the physics 112 [-diagiso true/false] : compile with/without special diagnostics for water isotopes in the physics 113 [-isotrac true/false] : compile with/without tracers of water isotopes in the physics 106 114 [-parallel none/mpi/omp/mpi_omp] : parallelism (default: none) : mpi, openmp or mixted mpi_openmp 107 115 [-g GRI] : grid configuration in dyn3d/GRI_xy.h (default: reg, inclues a zoom) … … 169 177 chimie="$2" ; shift ; shift ;; 170 178 179 "-isotopes") 180 isotopes="$2" ; shift ; shift ;; 181 182 "-isoverif") 183 isoverif="$2" ; shift ; shift ;; 184 185 "-diagiso") 186 diagiso="$2" ; shift ; shift ;; 187 188 "-isotrac") 189 isotrac="$2" ; shift ; shift ;; 190 171 191 "-parallel") 172 192 parallel="$2" ; shift ; shift ;; … … 341 361 INCLUDE="$INCLUDE -I${INCA_INCDIR}" 342 362 LIB="$LIB -L${INCA_LIBDIR} -lchimie" 363 fi 364 365 if [[ "$isotopes" == "true" ]] 366 then 367 CPP_KEY="$CPP_KEY ISO" 368 fi 369 370 if [[ "$isoverif" == "true" ]] 371 then 372 CPP_KEY="$CPP_KEY ISOVERIF" 373 fi 374 375 if [[ "$diagiso" == "true" ]] 376 then 377 CPP_KEY="$CPP_KEY DIAGISO" 378 fi 379 380 if [[ "$isotrac" == "true" ]] 381 then 382 CPP_KEY="$CPP_KEY ISOTRAC" 343 383 fi 344 384 … … 657 697 fi 658 698 659 if [[ $libphy == "true" ]] 699 if [[ "$isotopes" == "true" ]] 700 then 701 SUFF_NAME=${SUFF_NAME}_iso 702 fi 703 if [[ "$isoverif" == "true" ]] 704 then 705 SUFF_NAME=${SUFF_NAME}_isoverif 706 fi 707 if [[ "$isotrac" == "true" ]] 708 then 709 SUFF_NAME=${SUFF_NAME}_isotrac 710 fi 711 if [[ "$diagiso" == "true" ]] 712 then 713 SUFF_NAME=${SUFF_NAME}_diagiso 714 fi 715 716 if [[ $libphy == "true" ]]x 660 717 then 661 718 # special case where we compile only the physics
Note: See TracChangeset
for help on using the changeset viewer.