Changeset 3924 for LMDZ6/trunk/libf/dyn3d_common
- Timestamp:
- Jun 8, 2021, 6:33:45 PM (4 years ago)
- File:
-
- 1 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
Note: See TracChangeset
for help on using the changeset viewer.