Ignore:
Timestamp:
Jan 12, 2022, 10:54:09 PM (3 years ago)
Author:
dcugnet
Message:

Most of the changes are intended to help to eventually remove the constraints about the tracers assumptions, in particular water tracers.

  • Remove index tables itr_indice and niadv, replaced by tracers(:)%isAdvected and tracers(:)%isH2OFamily. Most of the loops are now from 1 to nqtot:
    • DO iq=nqo+1,nqtot loops are replaced with: DO iq=1,nqtot

IF(tracers(iq)%isH2Ofamily) CYCLE

  • DO it=1,nbtr; iq=niadv(it+nqo)

and DO it=1,nqtottr; iq=itr_indice(it) loops are replaced with:

it = 0
DO iq = 1, nqtot

IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
it = it+1

  • Move some StratAer? related code from infotrac to infotrac_phy
  • Remove "nqperes" variable:

DO iq=1,nqpere loops are replaced with:
DO iq=1,nqtot

IF(tracers(iq)%parent/='air') CYCLE

  • Cosmetic changes (justification, SELECT CASE instead of multiple IF...) mostly in advtrac* routines.
Location:
LMDZ6/trunk/libf/dynphy_lonlat
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dynphy_lonlat/calfis.F

    r4046 r4056  
    2929c    Auteur :  P. Le Van, F. Hourdin
    3030c   .........
    31       USE infotrac, ONLY: nqtot, niadv, tracers
     31      USE infotrac, ONLY: nqtot, tracers
    3232      USE control_mod, ONLY: planet_type, nsplit_phys
    3333#ifdef CPP_PHYS
     
    135135c    -----------------
    136136
    137       INTEGER i,j,l,ig0,ig,iq,iiq
     137      INTEGER i,j,l,ig0,ig,iq,itr
    138138      REAL zpsrf(ngridmx)
    139139      REAL zplev(ngridmx,llm+1),zplay(ngridmx,llm)
     
    281281c   ---------------
    282282c
     283      itr=0
    283284      DO iq=1,nqtot
    284           iiq=niadv(iq)
     285         IF(.NOT.tracers(iq)%isAdvected) CYCLE
     286         itr = itr + 1
    285287         DO l=1,llm
    286             zqfi(1,l,iq) = pq(1,1,l,iiq)
    287             ig0          = 2
     288            zqfi(1,l,itr) = pq(1,1,l,iq)
     289            ig0           = 2
    288290            DO j=2,jjm
    289291               DO i = 1, iim
    290                   zqfi(ig0,l,iq)  = pq(i,j,l,iiq)
     292                  zqfi(ig0,l,itr) = pq(i,j,l,iq)
    291293                  ig0             = ig0 + 1
    292294               ENDDO
    293295            ENDDO
    294             zqfi(ig0,l,iq) = pq(1,jjp1,l,iiq)
     296            zqfi(ig0,l,itr) = pq(1,jjp1,l,iq)
    295297         ENDDO
    296298      ENDDO
     
    481483         lafin_split=lafin.and.isplit==nsplit_phys
    482484
     485!      if (planet_type=="earth") then
    483486        CALL call_physiq(ngridmx,llm,nqtot,tracers(:)%name,
    484487     &                   debut_split,lafin_split,
     
    490493     &                   flxwfi,pducov,
    491494     &                   zdufi,zdvfi,zdtfi,zdqfi,zdpsrf)
    492                              
    493 !      if (planet_type=="earth") then
    494 !
    495 !         CALL physiq (ngridmx,
    496 !     .             llm,
    497 !     .             debut_split,
    498 !     .             lafin_split,
    499 !     .             jD_cur,
    500 !     .             jH_cur_split,
    501 !     .             zdt_split,
    502 !     .             zplev,
    503 !     .             zplay,
    504 !     .             zphi,
    505 !     .             zphis,
    506 !     .             presnivs,
    507 !     .             zufi,
    508 !     .             zvfi, zrfi,
    509 !     .             ztfi,
    510 !     .             zqfi,
    511 !     .             flxwfi,
    512 !     .             zdufi,
    513 !     .             zdvfi,
    514 !     .             zdtfi,
    515 !     .             zdqfi,
    516 !     .             zdpsrf,
    517 !     .             pducov)
    518495!
    519496!      else if ( planet_type=="generic" ) then
     
    622599      pdqfi(:,:,:,:)=0.
    623600C
     601      itr = 0
    624602      DO iq=1,nqtot
    625          iiq=niadv(iq)
     603         IF(.NOT.tracers(iq)%isAdvected) CYCLE
     604         itr = itr + 1
    626605         DO l=1,llm
    627606            DO i=1,iip1
    628                pdqfi(i,1,l,iiq)    = zdqfi(1,l,iq)
    629                pdqfi(i,jjp1,l,iiq) = zdqfi(ngridmx,l,iq)
     607               pdqfi(i,1,l,iq)    = zdqfi(1,l,itr)
     608               pdqfi(i,jjp1,l,iq) = zdqfi(ngridmx,l,itr)
    630609            ENDDO
    631610            DO j=2,jjm
    632611               ig0=1+(j-2)*iim
    633612               DO i=1,iim
    634                   pdqfi(i,j,l,iiq) = zdqfi(ig0+i,l,iq)
     613                  pdqfi(i,j,l,iq) = zdqfi(ig0+i,l,itr)
    635614               ENDDO
    636                pdqfi(iip1,j,l,iiq) = pdqfi(1,j,l,iq)
     615               pdqfi(iip1,j,l,iq) = pdqfi(1,j,l,itr)
    637616            ENDDO
    638617         ENDDO
  • LMDZ6/trunk/libf/dynphy_lonlat/calfis_loc.F

    r4046 r4056  
    4545      USE Times
    4646#endif
    47       USE infotrac, ONLY: nqtot, niadv, tracers
     47      USE infotrac, ONLY: nqtot, tracers
    4848      USE control_mod, ONLY: planet_type, nsplit_phys
    4949#ifdef CPP_PHYS
     
    154154c    -----------------
    155155
    156       INTEGER i,j,l,ig0,ig,iq,iiq
     156      INTEGER i,j,l,ig0,ig,iq,itr
    157157      REAL,ALLOCATABLE,SAVE :: zpsrf(:)
    158158      REAL,ALLOCATABLE,SAVE :: zplev(:,:),zplay(:,:)
     
    366366c
    367367
     368      itr = 0
    368369      DO iq=1,nqtot
    369          iiq=niadv(iq)
     370         IF(.NOT.tracers(iq)%isAdvected) CYCLE
     371         itr = itr + 1
    370372c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    371373         DO l=1,llm
     
    375377             i=index_i(ig0)
    376378             j=index_j(ig0)
    377              zqfi(ig0,l,iq)  = pq(i,j,l,iiq)
     379             zqfi(ig0,l,itr)  = pq(i,j,l,iq)
    378380           enddo
    379381         ENDDO
     
    10691071C
    10701072!cdir NODEP
     1073      itr = 0
    10711074      DO iq=1,nqtot
    1072          iiq=niadv(iq)
     1075         IF(.NOT.tracers(iq)%isAdvected) CYCLE
     1076         itr = itr + 1
    10731077c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    10741078         DO l=1,llm
     
    10791083              i=index_i(ig0)
    10801084              j=index_j(ig0)
    1081               pdqfi(i,j,l,iiq) = zdqfi(ig0,l,iq)
    1082               if (i==1) pdqfi(iip1,j,l,iiq) = zdqfi(ig0,l,iq)
     1085              pdqfi(i,j,l,iq) = zdqfi(ig0,l,itr)
     1086              if (i==1) pdqfi(iip1,j,l,iq) = zdqfi(ig0,l,itr)
    10831087            ENDDO
    10841088           
    10851089            IF (is_north_pole_dyn) then
    10861090              DO i=1,iip1
    1087                 pdqfi(i,1,l,iiq)    = zdqfi(1,l,iq)
     1091                pdqfi(i,1,l,iq)    = zdqfi(1,l,itr)
    10881092              ENDDO
    10891093            ENDIF
     
    10911095            IF (is_south_pole_dyn) then
    10921096              DO i=1,iip1
    1093                 pdqfi(i,jjp1,l,iiq) = zdqfi(klon,l,iq)
     1097                pdqfi(i,jjp1,l,iq) = zdqfi(klon,l,itr)
    10941098              ENDDO
    10951099            ENDIF
  • LMDZ6/trunk/libf/dynphy_lonlat/phylmd/iniphysiq_mod.F90

    r4050 r4056  
    1717  USE vertical_layers_mod, ONLY : init_vertical_layers
    1818  USE infotrac, ONLY: nqtot,nqo,nbtr,nqCO2,tracers,type_trac,&
    19                       niadv,conv_flg,pbl_flg,solsym,&
     19                      conv_flg,pbl_flg,solsym,&
    2020                      ok_isotopes,ok_iso_verif,ok_isotrac,&
    2121                      ok_init_iso,niso_possibles,tnat,&
    2222                      alpha_ideal,use_iso,iqiso,iso_indnum,&
    2323                      indnum_fn_num,index_trac,&
    24                       niso,ntraceurs_zone,ntraciso,nqtottr,itr_indice
     24                      niso,ntraceurs_zone,ntraciso,nqtottr
    2525#ifdef CPP_StratAer
    26   USE infotrac, ONLY: nbtr_bin, nbtr_sulgas, id_OCS_strat, &
     26  USE infotrac_phy, ONLY: nbtr_bin, nbtr_sulgas, id_OCS_strat, &
    2727                      id_SO2_strat, id_H2SO4_strat, id_BIN01_strat
    2828
     
    145145  ! Initialize tracer names, numbers, etc. for physics
    146146  CALL init_infotrac_phy(nqtot,nqo,nbtr,nqtottr,nqCO2,tracers,type_trac,&
    147                          niadv,conv_flg,pbl_flg,solsym,&
     147                         conv_flg,pbl_flg,solsym,&
    148148                         ok_isotopes,ok_iso_verif,ok_isotrac,&
    149149                         ok_init_iso,niso_possibles,tnat,&
    150150                         alpha_ideal,use_iso,iqiso,iso_indnum,&
    151151                         indnum_fn_num,index_trac,&
    152                          niso,ntraceurs_zone,ntraciso,itr_indice &
    153 #ifdef CPP_StratAer
    154                          ,nbtr_bin,nbtr_sulgas&
    155                          ,id_OCS_strat,id_SO2_strat,id_H2SO4_strat,id_BIN01_strat&
    156 #endif
    157                          )
     152                         niso,ntraceurs_zone,ntraciso)
    158153
    159154  ! Initializations for Reprobus
Note: See TracChangeset for help on using the changeset viewer.