Changeset 4071


Ignore:
Timestamp:
Jan 31, 2022, 9:20:17 PM (2 years ago)
Author:
dcugnet
Message:
  • Fix for unadvected tracers (iadv==0)
  • The key %isH2Ofamily, from the derived type "trac_type", is replaced with the more general

key %isInPhysics, which is TRUE for tracers both in "qx" and "tr_seri".

Currently, FALSE for tracers descending on H2O (isotopes and tagging tracers included). Could be set to FALSE
for interactive CO2 (type_trac=='inco') or ice supersaturated cloud content (tranfered to "rneb_seri")

Location:
LMDZ6/trunk/libf
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3d_common/infotrac.F90

    r4068 r4071  
    7878!  | iadv        | Advection scheme number                              | iadv        | 1-20,30 exc. 3-9,15,19 |
    7979!  | iGeneration | Generation (>=1)                                     | /           |                        |
    80 !  | isAdvected  | advected tracers flag (.TRUE. if iadv > 0)           | /           | nqtrue  .TRUE. values  |
    81 !  | isH2Ofamily | H2O tracer/isotope/tagging tracer                    | /           | nqtottr .TRUE. values  |
     80!  | isAdvected  | advected tracers flag (.TRUE. if iadv >= 0)          | /           | nqtrue  .TRUE. values  |
     81!  | isInPhysics | tracers not extracted from the main table in physics | /           | nqtottr .TRUE. values  |
    8282!  | iqParent    | Index of the parent tracer                           | iqpere      | 1:nqtot                |
    8383!  | iqDescen    | Indexes of the childs       (all generations)        | iqfils      | 1:nqtot                |
     
    338338      CALL msg('237: iq='//TRIM(int2str(iq)), modname)
    339339      READ(90,'(I2,X,I2,X,A)',IOSTAT=ierr) hadv(iq),vadv(iq),tchaine
    340       WRITE(msg1,'("iq, hadv(iq), vadv(iq) = ",i0,2(", ",i0))')iq, hadv(iq), vadv(iq)
    341       CALL msg(msg1, modname)
     340      WRITE(msg1,'("hadv(",i0,"), vadv(",i0,") = ",i0,", ",i0)')iq, iq, hadv(iq), vadv(iq)
     341      CALL msg(TRIM(msg1), modname)
    342342      CALL msg('tchaine = "'//TRIM(tchaine)//'"', modname)
    343343      CALL msg('infotrac 238: IOstatus='//TRIM(int2str(ierr)), modname)
     
    513513      IF(iad == -1) CALL abort_gcm(modname, msg1, 1)
    514514
    515       !--- SET FIELDS %longName, %iadv, %isAdvected, %isH2Ofamily
     515      !--- SET FIELDS %longName, %iadv, %isAdvected, %isInPhysics
    516516      t1%longName   = t1%name; IF(iad > 0) t1%longName=TRIM(t1%name)//descrq(iad)
    517517      t1%iadv       = iad
    518       t1%isAdvected = iad > 0
    519       t1%isH2Ofamily= delPhase(t1%gen0Name) == 'H2O'
     518      t1%isAdvected = iad >= 0
     519      t1%isInPhysics= delPhase(t1%gen0Name) /= 'H2O'  !=== TO BE COMPLETED WITH OTHER EXCEPTIONS: CO2i, SURSATURATED CLOUDS...
    520520      ttr(iq)       = t1
    521521
     
    621621   CALL msg('Information stored in infotrac :')
    622622   IF(dispTable('isssssssssiiiiiiiii', &
    623       ['iq      ', 'name    ', 'longN.  ', 'gen0N.  ', 'parent  ', 'type    ', 'phase   ', 'compon. ', 'isAdv.  ', 'isH2O.  '&
     623      ['iq      ', 'name    ', 'longN.  ', 'gen0N.  ', 'parent  ', 'type    ', 'phase   ', 'compon. ', 'isAdv.  ', 'isPhy.  '&
    624624      ,'iadv    ', 'iGen.   ', 'iqPar.  ', 'nqDes.  ', 'nqChil. ', 'iso_iG. ', 'iso_iN. ', 'iso_iZ. ', 'iso_iP. '],          &
    625625      cat(t%name,  t%longName,  t%gen0Name,  t%parent,  t%type,  t%phase, &
    626           t%component, bool2str(t%isAdvected), bool2str(t%isH2Ofamily)),  &
     626          t%component, bool2str(t%isAdvected), bool2str(t%isInPhysics)),  &
    627627      cat([(iq, iq=1, nqtot)],  t%iadv,  t%iGeneration, t%iqParent, t%nqDescen, &
    628628         t%nqChilds, t%iso_iGroup, t%iso_iName, t%iso_iZone, t%iso_iPhase))) &
  • LMDZ6/trunk/libf/misc/readTracFiles_mod.f90

    r4067 r4071  
    182182      IF(test(cumulTracers(dBase, tracs), lerr)) RETURN
    183183    END IF
    184     WHERE(tracs%gen0Name(1:3) == 'H2O') tracs%isH2Ofamily=.TRUE.     !--- Set %isH2Ofamily: belongs to H2O family
     184    WHERE(tracs%gen0Name(1:3) /= 'H2O') tracs%isInPhysics=.TRUE.     !--- Set %isInPhysics: passed to physics
    185185    CALL setDirectKeys(tracs)                                        !--- Set %iqParent, %iqDescen, %nqDescen, %nqChilds
    186186  END IF
  • LMDZ6/trunk/libf/misc/trac_types_mod.F90

    r4063 r4071  
    2323    INTEGER               :: iadv        = 10              !--- Advection scheme used
    2424    INTEGER               :: iGeneration = -1              !--- Generation number (>=0)
    25     LOGICAL               :: isAdvected  = .FALSE.         !--- "true" tracers: iadv > 0 . COUNT(     isAdvected) =nqtrue
    26     LOGICAL               :: isH2Ofamily = .FALSE.         !--- H2O tracers/isotopes/tags. COUNT(.NOT.isH2Ofamily)=nqtottr
     25    LOGICAL               :: isAdvected  = .FALSE.         !--- "true" tracers: iadv > 0.   COUNT(isAdvected )=nqtrue
     26    LOGICAL               :: isInPhysics = .TRUE.          !--- "true" tracers: in tr_seri. COUNT(isInPhysics)=nqtottr
    2727    INTEGER               :: iqParent    = 0               !--- Parent index
    2828    INTEGER,  ALLOCATABLE :: iqDescen(:)                   !--- Descendants index (in growing generation order)
  • LMDZ6/trunk/libf/phylmd/Dust/phys_output_write_spl_mod.F90

    r4056 r4071  
    16121612           itr = 0
    16131613           DO iq = 1, nqtot
    1614              IF(tracers(iq)%isH2Ofamily) CYCLE
     1614             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    16151615             itr = itr+1
    16161616             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
  • LMDZ6/trunk/libf/phylmd/Dust/phytracr_spl_mod.F90

    r4056 r4071  
    12621262      itr = 0
    12631263      DO iq = 1, nqtot
    1264          IF(tracers(iq)%isH2Ofamily) CYCLE
     1264         IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    12651265         itr = itr+1
    12661266         write(str2,'(i2.2)') itr
     
    14191419        itr = 0
    14201420        do iq=1,nqtot
    1421           IF(tracers(iq)%isH2Ofamily) CYCLE
     1421          IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    14221422          itr = itr+1
    14231423          print *, itr, TRIM(tracers(iq)%name)
  • LMDZ6/trunk/libf/phylmd/Dust/splaeropt_5wv_rrtm.F90

    r4056 r4071  
    114114  itr = 0
    115115  DO iq = 1, nqtot
    116     IF(tracers(iq)%isH2Ofamily) CYCLE
     116    IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    117117    itr = itr+1
    118118    SELECT CASE(tracers(iq)%name)
  • LMDZ6/trunk/libf/phylmd/Dust/splaeropt_6bands_rrtm.F90

    r4056 r4071  
    167167  itr = 0
    168168  DO iq = 1, nqtot
    169     IF(tracers(iq)%isH2Ofamily) CYCLE
     169    IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    170170    itr = itr+1
    171171    SELECT CASE(tracers(iq)%name)
  • LMDZ6/trunk/libf/phylmd/Dust/splaeropt_lw_rrtm.F90

    r4056 r4071  
    5757    itr = 0
    5858    DO iq = 1, nqtot
    59       IF(tracers(iq)%isH2Ofamily) CYCLE
     59      IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    6060      itr = itr+1
    6161      SELECT CASE(tracers(iq)%name)
  • LMDZ6/trunk/libf/phylmd/Dust/splaerosol_optic_rrtm.F90

    r4056 r4071  
    5252  itr = 0
    5353  DO iq = 1, nqtot
    54     IF(tracers(iq)%isH2Ofamily) CYCLE
     54    IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    5555    itr = itr+1
    5656    IF(tracers(iq)%name/='FINE') THEN
  • LMDZ6/trunk/libf/phylmd/infotrac_phy.F90

    r4056 r4071  
    130130      nbtr_bin    = COUNT([(tracers(iq)%name(1:3)=='BIN', iq=1, nqtot)])
    131131      nbtr_sulgas = COUNT([(tracers(iq)%name(1:3)=='GAS', iq=1, nqtot)])
    132       tnames = PACK(tracers(:)%name, MASK=.NOT.tracers(:)%isH2Ofamily)
     132      tnames = PACK(tracers(:)%name, MASK=tracers(:)%isInPhysics)
    133133      id_BIN01_strat = strIdx(tnames, 'BIN01'   )
    134134      id_OCS_strat   = strIdx(tnames, 'GASOSC'  )
  • LMDZ6/trunk/libf/phylmd/phyetat0.F90

    r4059 r4071  
    452452     it = 0
    453453     DO iq = 1, nqtot
    454         IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
     454        IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
    455455        it = it+1
    456456        found=phyetat0_get(1,trs(:,it),"trs_"//TRIM(tracers(iq)%name), &
  • LMDZ6/trunk/libf/phylmd/phyredem.F90

    r4059 r4071  
    330330       it = 0
    331331       DO iq = 1, nqtot
    332           IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
     332          IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
    333333          it = it+1
    334334          CALL put_field(pass,"trs_"//tracers(iq)%name, "", trs(:, it))
  • LMDZ6/trunk/libf/phylmd/phys_output_mod.F90

    r4056 r4071  
    470470          itr = 0
    471471          DO iq = 1, nqtot
    472             IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
     472            IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
    473473            itr = itr + 1
    474474            dn = 'd'//TRIM(tracers(iq)%name)//'_'
     
    526526
    527527!  DO iq=1,nqtot
    528 !    IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
     528!    IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
    529529!    WRITE(*,'(a,i1,a,10i3)')'trac(',iq,')%flag = ',o_trac(iq)%flag
    530530!    WRITE(*,'(a,i1,a)')'trac(',iq,')%name = '//TRIM(o_trac(iq)%name)
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r4070 r4071  
    541541          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
    542542          DO iq = 1, nqtot
    543             IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
     543            IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
    544544            dn = 'd'//TRIM(tracers(iq)%name)//'_'
    545545            WRITE (lunout,*) 'XIOS var=', nqo, iq, nqtot, tracers(iq)%name
     
    595595          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
    596596          DO iq = 1, nqtot
    597             IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
     597            IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
    598598
    599599            unt = "kg m-2"
     
    24702470           itr = 0
    24712471           DO iq = 1, nqtot
    2472              IF(tracers(iq)%isH2Ofamily) CYCLE
     2472             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    24732473             itr = itr + 1
    24742474!            write(*,*) 'phys_output_write_mod 2337: itr=',itr
     
    25032503           itr = 0
    25042504           DO iq = 1, nqtot
    2505              IF(tracers(iq)%isH2Ofamily) CYCLE
     2505             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    25062506             itr = itr + 1
    25072507!            write(*,*) 'phys_output_write_mod 2370: itr=',itr
     
    25312531
    25322532         IF (type_trac == 'inco') THEN
     2533           itr = 0
    25332534           DO iq = 1, nqtot
    2534              IF(tracers(iq)%isH2Ofamily .OR. .NOT.tracers(iq)%isAdvected) CYCLE
     2535             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    25352536             itr = itr+1
    25362537             IF(tracers(iq)%component /= 'co2i') CYCLE
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r4069 r4071  
    22702270       itr = 0
    22712271       DO iq = 1, nqtot
    2272          IF(tracers(iq)%isH2Ofamily) CYCLE
     2272         IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    22732273         itr = itr+1
    22742274          DO  k = 1, klev
     
    22902290       itr = 0
    22912291       do iq = 1, nqtot
    2292          IF(tracers(iq)%isH2Ofamily) CYCLE
     2292         IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    22932293         itr = itr+1
    22942294         tr_ancien(:,:,itr)=tr_seri(:,:,itr)       
     
    51175117       itr = 0
    51185118       DO iq = 1, nqtot
    5119           IF(tracers(iq)%isH2Ofamily) CYCLE
     5119          IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    51205120          itr = itr+1
    51215121          DO  k = 1, klev
  • LMDZ6/trunk/libf/phylmd/traclmdz_mod.F90

    r4056 r4071  
    175175    it = 0
    176176    DO iq = 1, nqtot
    177        IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
     177       IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
    178178       it = it+1
    179179       SELECT CASE(strLower(tracers(iq)%name))
     
    262262    it = 0
    263263    DO iq = 1, nqtot
    264        IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
     264       IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
    265265       it = it+1
    266266       ! Test if tracer is zero everywhere.
  • LMDZ6/trunk/libf/phylmdiso/phyetat0.F90

    r4056 r4071  
    471471     it = 0
    472472     DO iq = 1, nqtot
    473         IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
     473        IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
    474474        it = it+1
    475475        found=phyetat0_get(1,trs(:,it),"trs_"//TRIM(tracers(iq)%name), &
  • LMDZ6/trunk/libf/phylmdiso/phyredem.F90

    r4056 r4071  
    350350       it = 0
    351351       DO iq = 1, nqtot
    352           IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
     352          IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
    353353          it = it+1
    354354          CALL put_field(pass,"trs_"//tracers(iq)%name, "", trs(:, it))
  • LMDZ6/trunk/libf/phylmdiso/phys_output_mod.F90

    r4056 r4071  
    504504          itr = 0
    505505          DO iq = 1, nqtot
    506             IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
     506            IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
    507507            itr = itr + 1
    508508            dn = 'd'//TRIM(tracers(iq)%name)//'_'
  • LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90

    r4065 r4071  
    24742474       itr = 0
    24752475       DO iq = 1, nqtot
    2476          IF(tracers(iq)%isH2Ofamily) CYCLE
     2476         IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    24772477         itr = itr+1
    24782478!#ifdef ISOVERIF
     
    24982498       itr = 0
    24992499       do iq = 1, nqtot
    2500          IF(tracers(iq)%isH2Ofamily) CYCLE
     2500         IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    25012501         itr = itr+1
    25022502         tr_ancien(:,:,itr)=tr_seri(:,:,itr)       
     
    65316531    itr = 0
    65326532    DO iq = 1, nqtot
    6533        IF(tracers(iq)%isH2Ofamily) CYCLE
     6533       IF(.NOT.tracers(iq)%isInPhysics) CYCLE
    65346534       itr = itr+1
    65356535       DO  k = 1, klev
Note: See TracChangeset for help on using the changeset viewer.