Changeset 3331 for LMDZ5


Ignore:
Timestamp:
May 22, 2018, 4:30:21 PM (6 years ago)
Author:
acozic
Message:

Add modification for isotopes

Location:
LMDZ5/branches/IPSLCM5A2.1_ISO
Files:
1007 added
6 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/IPSLCM5A2.1_ISO/DefLists/field_def_lmdz.xml

    r2875 r3331  
    418418        <field id="dqthe2d"    long_name="Thermal dQ"    unit="(kg/m2)/s" />
    419419        <field id="dqajs2d"    long_name="Dry ajdust dQ"    unit="(kg/m2)/s" />
     420        <field id="precipHDO"    />
     421        <field id="precipO18"    />
     422        <field id="precipeau"    />
     423        <field id="plulHDO"    />
     424        <field id="plulO18"    />
     425        <field id="pluleau"    />
     426        <field id="plucHDO"    />
     427        <field id="plucO18"    />
     428        <field id="pluceau"    />
     429        <field id="evapHDO"    />
     430        <field id="evapO18"    />
     431        <field id="evapeau"    />
    420432    </field_group>
    421433
    422434    <field_group id="fields_3D" domain_ref="dom_glo" axis_ref="presnivs">
     435      <field id="H2Ov_HDO" />
     436      <field id="H2Ov_O18" />
     437      <field id="H2Ov_eau" />
     438      <field id="H2Ol_HDO" />
     439      <field id="H2Ol_O18" />
     440      <field id="H2Ol_eau" />
     441        <field id="ovapHDO"    />
     442        <field id="ovapO18"    />
     443        <field id="ovapeau"    />
     444        <field id="dqdynHDO"    />
     445        <field id="dqdynO18"    />
     446        <field id="dqdyneau"    />
     447        <field id="dqldynHDO"    />
     448        <field id="dqldynO18"    />
     449        <field id="dqldyneau"    />
     450        <field id="dqconHDO"    />
     451        <field id="dqconO18"    />
     452        <field id="dqconeau"    />
     453        <field id="dqvdfHDO"    />
     454        <field id="dqvdfO18"    />
     455        <field id="dqvdfeau"    />
     456        <field id="dqajsHDO"    />
     457        <field id="dqajsO18"    />
     458        <field id="dqajseau"    />
     459        <field id="dqevaHDO"    />
     460        <field id="dqevaO18"    />
     461        <field id="dqevaeau"    />
     462        <field id="dqlscHDO"    />
     463        <field id="dqlscO18"    />
     464        <field id="dqlsceau"    />
     465        <field id="dqch4HDO"    />
     466        <field id="dqch4O18"    />
     467        <field id="dqch4eau"    />
     468
    423469        <field id="tke"    long_name="TKE"    unit="m2/s2" />
    424470        <field id="tke_ter"    long_name="Max Turb. Kinetic Energy ter"    unit="m2/s2" />
     
    628674          <field id="cumPB"    long_name="Cumulated tracer  PBVL1"    unit="-" />
    629675          <field id="cumAga"    long_name="Cumulated tracer  Aga"    unit="-" />
     676          <field id="cumH2Ov_HDO"  />
     677          <field id="cumH2Ov_O18"  />
     678          <field id="cumH2Ov_eau"  />
     679          <field id="cumH2Ol_HDO"  />
     680          <field id="cumH2Ol_O18"  />
     681          <field id="cumH2Ol_eau"  />
    630682    </field_group>
    631683
    632684    <field_group id="fields_trac" domain_ref="dom_glo" axis_ref="presnivs">
     685       <field id="dH2Ov_HDO_vdf"   />
     686       <field id="dH2Ov_HDO_the"   />
     687       <field id="dH2Ov_HDO_con"   />
     688       <field id="dH2Ov_HDO_lessi_impa"   />
     689       <field id="dH2Ov_HDO_lessi_nucl"   />
     690       <field id="dH2Ov_HDO_insc"   />
     691       <field id="dH2Ov_HDO_bcscav"   />
     692       <field id="dH2Ov_HDO_evapls"   />
     693       <field id="dH2Ov_HDO_ls"   />
     694       <field id="dH2Ov_HDO_trsp"   />
     695       <field id="dH2Ov_HDO_sscav"   />
     696       <field id="dH2Ov_HDO_sat"   />
     697       <field id="dH2Ov_HDO_uscav"   />
     698
     699       <field id="dH2Ov_O18_vdf"   />
     700       <field id="dH2Ov_O18_the"   />
     701       <field id="dH2Ov_O18_con"   />
     702       <field id="dH2Ov_O18_lessi_impa"   />
     703       <field id="dH2Ov_O18_lessi_nucl"   />
     704       <field id="dH2Ov_O18_insc"   />
     705       <field id="dH2Ov_O18_bcscav"   />
     706       <field id="dH2Ov_O18_evapls"   />
     707       <field id="dH2Ov_O18_ls"   />
     708       <field id="dH2Ov_O18_trsp"   />
     709       <field id="dH2Ov_O18_sscav"   />
     710       <field id="dH2Ov_O18_sat"   />
     711       <field id="dH2Ov_O18_uscav"   />
     712
     713       <field id="dH2Ov_eau_vdf"   />
     714       <field id="dH2Ov_eau_the"   />
     715       <field id="dH2Ov_eau_con"   />
     716       <field id="dH2Ov_eau_lessi_impa"   />
     717       <field id="dH2Ov_eau_lessi_nucl"   />
     718       <field id="dH2Ov_eau_insc"   />
     719       <field id="dH2Ov_eau_bcscav"   />
     720       <field id="dH2Ov_eau_evapls"   />
     721       <field id="dH2Ov_eau_ls"   />
     722       <field id="dH2Ov_eau_trsp"   />
     723       <field id="dH2Ov_eau_sscav"   />
     724       <field id="dH2Ov_eau_sat"   />
     725       <field id="dH2Ov_eau_uscav"   />
     726
     727       <field id="dH2Ol_HDO_vdf"   />
     728       <field id="dH2Ol_HDO_the"   />
     729       <field id="dH2Ol_HDO_con"   />
     730       <field id="dH2Ol_HDO_lessi_impa"   />
     731       <field id="dH2Ol_HDO_lessi_nucl"   />
     732       <field id="dH2Ol_HDO_insc"   />
     733       <field id="dH2Ol_HDO_bcscav"   />
     734       <field id="dH2Ol_HDO_evapls"   />
     735       <field id="dH2Ol_HDO_ls"   />
     736       <field id="dH2Ol_HDO_trsp"   />
     737       <field id="dH2Ol_HDO_sscav"   />
     738       <field id="dH2Ol_HDO_sat"   />
     739       <field id="dH2Ol_HDO_uscav"   />
     740
     741       <field id="dH2Ol_O18_vdf"   />
     742       <field id="dH2Ol_O18_the"   />
     743       <field id="dH2Ol_O18_con"   />
     744       <field id="dH2Ol_O18_lessi_impa"   />
     745       <field id="dH2Ol_O18_lessi_nucl"   />
     746       <field id="dH2Ol_O18_insc"   />
     747       <field id="dH2Ol_O18_bcscav"   />
     748       <field id="dH2Ol_O18_evapls"   />
     749       <field id="dH2Ol_O18_ls"   />
     750       <field id="dH2Ol_O18_trsp"   />
     751       <field id="dH2Ol_O18_sscav"   />
     752       <field id="dH2Ol_O18_sat"   />
     753       <field id="dH2Ol_O18_uscav"   />
     754
     755       <field id="dH2Ol_eau_vdf"   />
     756       <field id="dH2Ol_eau_the"   />
     757       <field id="dH2Ol_eau_con"   />
     758       <field id="dH2Ol_eau_lessi_impa"   />
     759       <field id="dH2Ol_eau_lessi_nucl"   />
     760       <field id="dH2Ol_eau_insc"   />
     761       <field id="dH2Ol_eau_bcscav"   />
     762       <field id="dH2Ol_eau_evapls"   />
     763       <field id="dH2Ol_eau_ls"   />
     764       <field id="dH2Ol_eau_trsp"   />
     765       <field id="dH2Ol_eau_sscav"   />
     766       <field id="dH2Ol_eau_sat"   />
     767       <field id="dH2Ol_eau_uscav"   />
     768
    633769      <field id="RN"    long_name="Tracer RNVL1"    unit="-" />
    634770      <field id="dRN_vdf"    long_name="Tendance tracer RNVL1"    unit="-" />
  • LMDZ5/branches/IPSLCM5A2.1_ISO/DefLists/file_def_histmth_lmdz.xml

    r2589 r3331  
     1
    12<file_definition>
    23        <file_group id="defile">
     
    409410                <field field_ref="dqthe2d" level="4" />
    410411                <field field_ref="dqajs2d" level="4" />
     412
     413                <field field_ref="precipHDO" level="1"    />
     414                <field field_ref="precipO18" level="1"    />
     415                <field field_ref="precipeau" level="1"    />
     416                <field field_ref="plulHDO"   level="1"  />
     417                <field field_ref="plulO18"   level="1"  />
     418                <field field_ref="pluleau"   level="1"  />
     419                <field field_ref="plucHDO"   level="1"  />
     420                <field field_ref="plucO18"   level="1"  />
     421                <field field_ref="pluceau"   level="1"  />
     422                <field field_ref="evapHDO"   level="1"  />
     423                <field field_ref="evapO18"   level="1"  />
     424                <field field_ref="evapeau"   level="1"  />
     425
     426
     427
     428
     429
     430
    411431            </field_group>
    412432
     
    565585                <field field_ref="rsdcs4co2" level="5" />
    566586                <field field_ref="rldcs4co2" level="5" />
     587
     588                <field field_ref="ovapHDO"   level="1" />
     589                <field field_ref="ovapO18"   level="1" />
     590                <field field_ref="ovapeau"   level="1" />
     591                <field field_ref="dqdynHDO"  level="1"  />
     592                <field field_ref="dqdynO18"  level="1"  />
     593                <field field_ref="dqdyneau"  level="1"  />
     594                <field field_ref="dqldynHDO" level="1"   />
     595                <field field_ref="dqldynO18" level="1"   />
     596                <field field_ref="dqldyneau" level="1"   />
     597                <field field_ref="dqconHDO"  level="1"  />
     598                <field field_ref="dqconO18"  level="1"  />
     599                <field field_ref="dqconeau"  level="1"  />
     600                <field field_ref="dqvdfHDO"  level="1"  />
     601                <field field_ref="dqvdfO18"  level="1"  />
     602                <field field_ref="dqvdfeau"  level="1"  />
     603                <field field_ref="dqajsHDO"  level="1"  />
     604                <field field_ref="dqajsO18"  level="1"  />
     605                <field field_ref="dqajseau"  level="1"  />
     606                <field field_ref="dqevaHDO"  level="1"  />
     607                <field field_ref="dqevaO18"  level="1"  />
     608                <field field_ref="dqevaeau"  level="1"  />
     609                <field field_ref="dqlscHDO"  level="1"  />
     610                <field field_ref="dqlscO18"  level="1"  />
     611                <field field_ref="dqlsceau"  level="1"  />
     612                <field field_ref="dqch4HDO"  level="1"  />
     613                <field field_ref="dqch4O18"  level="1"  />
     614                <field field_ref="dqch4eau"  level="1"  />
     615
     616
     617
    567618            </field_group>
    568619        </file>
  • LMDZ5/branches/IPSLCM5A2.1_ISO/libf/dyn3d_common/infotrac.F90

    r2567 r3331  
    1111!        number of tracers used in the physics
    1212  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
    1318
    1419! CRisi: nb traceurs pères= directement advectés par l'air
     
    98103 
    99104    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
    101106    INTEGER :: ifils,ipere,generation ! CRisi
    102107    LOGICAL :: continu,nouveau_traceurdef
    103108    INTEGER :: IOstatus ! gestion de la retrocompatibilite de traceur.def
    104     CHARACTER(len=15) :: tchaine   
     109    CHARACTER(len=30) :: tchaine   
    105110
    106111    character(len=*),parameter :: modname="infotrac_init"
     
    203208          CALL abort_gcm('infotrac_init','Bad number of water phases',1)
    204209       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))
    212219
    213220    END IF   ! type_trac
     
    300307                write(lunout,*) 'C''est la nouvelle version de traceur.def'
    301308                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))
    303310             else
    304311                write(lunout,*) 'C''est l''ancienne version de traceur.def'
     
    364371!jyg<
    365372!
    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
    372381!
    373382! Allocate variables depending on nbtr
    374383!
    375     ALLOCATE(conv_flg(nbtr), pbl_flg(nbtr), solsym(nbtr))
    376     conv_flg(:) = 1 ! convection activated for all tracers
    377     pbl_flg(:)  = 1 ! boundary layer activated for all tracers
     384!    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
    378387!
    379388!!    ELSE  ! type_trac=inca : config_inca='aero' ou 'chem'
     
    416425                write(lunout,*) 'C''est la nouvelle version de traceur.def'
    417426                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))
    419428             else
    420429                write(lunout,*) 'C''est l''ancienne version de traceur.def'
     
    423432                tnom_transp(iq) = 'air'
    424433             endif
    425              write(lunout,*) 'tnom_0(iq)=<',trim(tnom_0(iq)),'>'
     434             write(lunout,*) 'infotrac 426: tnom_0(iq)=<',trim(tnom_0(iq)),'>'
    426435             write(lunout,*) 'tnom_transp(iq)=<',trim(tnom_transp(iq)),'>'
    427436
     
    607616        continu=.true.
    608617        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)       
    610621          if (tnom_transp(iq) == tnom_0(ipere)) then
    611622            ! Son père est ipere
    612623            WRITE(lunout,*) 'Le traceur',iq,'appele ', &
    613624      &          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
    614628            nqfils(ipere)=nqfils(ipere)+1 
    615629            iqfils(nqfils(ipere),ipere)=iq
     
    621635                WRITE(lunout,*) 'Le traceur',iq,'appele ', &
    622636      &          trim(tnom_0(iq)),', est orpelin.'
     637                write(lunout,*) 'ipere,nqtot=',ipere,nqtot
    623638                CALL abort_gcm('infotrac_init','Un traceur est orphelin',1)
    624639            endif !if (ipere.gt.nqtot) then
     
    676691! detecter quels sont les traceurs isotopiques parmi des traceurs
    677692    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
    678744       
    679745!-----------------------------------------------------------------------
     
    732798
    733799    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)
    735801       do phase=1,nqo   
    736802        do ixt= 1,niso_possibles   
    737803         tnom_trac=trim(tnom_0(phase))//'_'
    738804         tnom_trac=trim(tnom_trac)//trim(tnom_iso(ixt))
    739 !         write(*,*) 'phase,ixt,tnom_trac=',phase,ixt,tnom_trac     
     805         write(*,*) 'phase,ixt,tnom_trac=',phase,ixt,tnom_trac     
    740806         IF (tnom_0(iq) == tnom_trac) then
    741 !          write(lunout,*) 'Ce traceur est un isotope'
     807          write(lunout,*) 'Ce traceur est un isotope'
    742808          nb_iso(ixt,phase)=nb_iso(ixt,phase)+1   
    743809          nb_isoind(phase)=nb_isoind(phase)+1   
     
    746812          indnum_fn_num(ixt)=iso_indnum(iq)
    747813          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)
    752818          goto 20
    753819         else if (iqpere(iq).gt.0) then         
    754820          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'
    756822           ! c'est un traceur d'isotope
    757823           nb_traciso(ixt,phase)=nb_traciso(ixt,phase)+1
     
    760826           zone_num(iq)=nb_traciso(ixt,phase)
    761827           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)
    765831           goto 20
    766832          endif !if (tnom_0(iqpere(iq)) == trim(tnom_0(phase))//trim(tnom_iso(ixt))) then
     
    771837      enddo !do iq=1,nqtot
    772838
    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
    778845
    779846      do ixt= 1,niso_possibles 
     
    823890    ! dimensions isotopique:
    824891    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 
    827895 
    828896    ! flags isotopiques:
     
    832900        ok_isotopes=.false.
    833901    endif
    834 !    WRITE(lunout,*) 'ok_isotopes=',ok_isotopes
     902    WRITE(lunout,*) 'infotrac 837: ok_isotopes=',ok_isotopes
    835903 
    836904    if (ok_isotopes) then
  • LMDZ5/branches/IPSLCM5A2.1_ISO/libf/dyn3dmem/check_isotopes_loc.F

    r2281 r3331  
    1212
    1313        ! locals
    14         integer ixt,phase,k,i,iq,iiso,izone,ieau,iqeau
     14        integer ixt,phase,k,i,iq,iiso,izone,ieau,iqeau,ixt2,iq2
    1515        real xtractot,xiiso
    1616        real borne
     
    2424        parameter (errmaxrel=1e-3)
    2525        parameter (qmin=1e-11)
    26         parameter (deltaDmax=200.0,deltaDmin=-999.9)
     26        parameter (deltaDmax=1000.0,deltaDmin=-999.0)
    2727        parameter (ridicule=1e-12)
    2828        real deltaD
     29        real dexcessmax,dexcessmin
     30        parameter (dexcessmax=6000.0,dexcessmin=-100.0)
    2931
    3032        if (ok_isotopes) then
     
    134136          enddo ! do phase=1,nqo
    135137        endif !if (use_iso(2)) then
     138
     139        !write(*,*) 'check_isotopes 103'
     140        ! verifier que dexcess est raisonable
     141        if (use_iso(3).and.use_iso(2)) then
     142          ixt=indnum_fn_num(3)
     143          ixt2=indnum_fn_num(2)
     144          do phase=1,nqo
     145            iq=iqiso(ixt,phase)
     146            iq2=iqiso(ixt2,phase)
     147c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     148            do k=1,llm
     149            DO i = ijb,ije
     150            if (q(i,k,iq).gt.qmin) then
     151             deltaD=(q(i,k,iq2)/q(i,k,phase)/tnat(2)-1)*1000
     152     &            -8.0*(q(i,k,iq)/q(i,k,phase)/tnat(3)-1)*1000
     153             if ((deltaD.gt.dexcessmax).or.(deltaD.lt.dexcessmin)) then
     154                  write(*,*) 'erreur detectee iso_verif_aberrant O18:'
     155                  write(*,*) err_msg
     156                  write(*,*) 'ixt,ixt2,phase=',ixt,ixt2,phase
     157                  write(*,*) 'q,iq,i,k,=',q(i,k,phase),iq,i,k
     158                  write(*,*) 'xt=',q(i,k,:)
     159                  write(*,*) 'dexcess=',deltaD
     160                  stop
     161             endif !if ((deltaD.gt.deltaDmax).or.(deltaD.lt.deltaDmin)) then
     162            endif !if (q(i,k,iq).gt.qmin) then
     163            enddo !DO i = ijb,ije
     164            enddo !do k=1,llm
     165c$OMP END DO NOWAIT
     166          enddo ! do phase=1,nqo
     167        endif !if (use_iso(2)) then
     168
    136169
    137170
  • LMDZ5/branches/IPSLCM5A2.1_ISO/libf/dyn3dmem/dynetat0_loc.f90

    r3229 r3331  
    153153  DO iq=1,nqtot
    154154    var=tname(iq)
    155 #ifdef INCA
    156     IF (var .eq. "O3" ) THEN
    157        IF(NF90_INQ_VARID(fID,var,vID) == NF90_NoErr) THEN
    158           CALL get_var2(var,q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:); CYCLE
    159        ELSE
    160           WRITE(lunout,*) 'Tracer O3 is missing - it is initialized to OX'
    161           IF(NF90_INQ_VARID(fID,"OX",vID) == NF90_NoErr) THEN
    162              CALL get_var2("OX",q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:); CYCLE
    163           ENDIF
    164        ENDIF
    165     ENDIF
    166 #endif
    167155    IF(NF90_INQ_VARID(fID,var,vID)==NF90_NoErr) THEN
    168156      CALL get_var2(var,q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:); CYCLE
     
    171159    WRITE(lunout,*)"         It is hence initialized to zero"
    172160    q(ijb_u:ije_u,:,iq)=0.
     161  END DO !DO iq=1,nqtot
     162
    173163   !--- CRisi: for isotops, theoretical initialization using very simplified
    174    !           Rayleigh distillation las.
     164   !           Rayleigh distillation.
     165  DO iq=1,nqtot     
     166    if (ok_iso_verif) then
     167       write(*,*) 'dynetat0_loc 167: iq,iso_num(iq),iqpere(iq)=',iq,iso_num(iq),iqpere(iq)
     168    endif
    175169    IF(ok_isotopes.AND.iso_num(iq)>0) THEN
    176170      IF(zone_num(iq)==0) q(:,:,iq)=q(:,:,iqpere(iq))*tnat(iso_num(iq))        &
     
    178172      IF(zone_num(iq)==1) q(:,:,iq)=q(:,:,iqiso(iso_indnum(iq),phase_num(iq)))
    179173    END IF
    180   END DO
     174  END DO !DO iq=1,nqtot
     175
     176  if (ok_iso_verif) then
     177         call check_isotopes(q,ijb_u,ije_u,'dynetat0_loc 171')
     178  endif !if (ok_iso_verif) then
     179
    181180  DEALLOCATE(q_glo)
    182181  CALL err(NF90_CLOSE(fID),"close",fichnom)
  • LMDZ5/branches/IPSLCM5A2.1_ISO/libf/phylmd/calcul_fluxs_mod.F90

    r2538 r3331  
    215215            zx_nh(i) + zx_sl(i) * zx_nq(i)) & 
    216216            + dtime * dif_grnd(i))
    217 
    218217!
    219218! Y'a-t-il fonte de neige?
Note: See TracChangeset for help on using the changeset viewer.