Ignore:
Timestamp:
May 9, 2022, 12:35:40 PM (2 years ago)
Author:
dcugnet
Message:
  • Some variables are renamed or replaced by direct equivalents:
    • iso_indnum -> tracers(:)%iso_iName
    • niso_possibles -> niso
    • iqiso -> iqIsoPha ; index_trac -> itZonIso
    • ok_iso_verif -> isoCheck
    • ntraceurs_zone -> nzone ; ntraciso -> ntiso
    • qperemin -> min_qparent ; masseqmin -> min_qmass ; ratiomin -> min_ratio
  • Some renamed variables are only aliased with the older name (using USE <module>, ONLY: <oldName> => <newName>) in routines where they are repeated many times.
  • Few hard-coded indexes are now computed (examples: ilic, iso, ivap, irneb, iq_vap, iq_liq, iso_H2O, iso_HDO, iso_HTO, iso_O17, iso_O18).
  • The IF(isoCheck) test is now embedded in the check_isotopes_seq and check_isotopes_loc routines (lighter calling).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3dmem/qminimum_loc.F

    r4124 r4143  
    44      SUBROUTINE qminimum_loc( q,nqtot,deltap )
    55      USE parallel_lmdz
    6       USE infotrac, ONLY: niso,ntraciso,iqiso,ok_iso_verif,             &
    7      &   ratiomin,qperemin ! CRisi 23nov2020
     6      USE infotrac, ONLY: niso, ntiso, iqIsoPha, tracers,
     7     &                    isoCheck, min_qParent
     8      USE strings_mod, ONLY: strIdx
     9      USE readTracFiles_mod, ONLY: addPhase
    810      IMPLICIT none
    911c
     
    1820      REAL q(ijb_u:ije_u,llm,nqtot), deltap(ijb_u:ije_u,llm)
    1921c
    20       INTEGER iq_vap, iq_liq
    21       PARAMETER ( iq_vap = 1 ) ! indice pour l'eau vapeur
    22       PARAMETER ( iq_liq = 2 ) ! indice pour l'eau liquide
    23       REAL seuil_vap, seuil_liq
    24       PARAMETER ( seuil_vap = 1.0e-10 ) ! seuil pour l'eau vapeur
    25       PARAMETER ( seuil_liq = 1.0e-11 ) ! seuil pour l'eau liquide
     22      LOGICAL, SAVE :: first=.TRUE.
     23      INTEGER, SAVE :: iq_vap, iq_liq        ! indices pour l'eau vapeur/liquide
     24c$OMP THREADPRIVATE(iq_vap, iq_liq, first)
     25      REAL, PARAMETER :: seuil_vap = 1.0e-10 ! seuil pour l'eau vapeur
     26      REAL, PARAMETER :: seuil_liq = 1.0e-11 ! seuil pour l'eau liquide
    2627c
    2728c  NB. ....( Il est souhaitable mais non obligatoire que les valeurs des
     
    5455c
    5556
    56         !write(lunout,*) 'qminimum 52: entree'
    57         if (ok_iso_verif) then
    58            call check_isotopes(q,ij_begin,ij_end,'qminimum 52')   
    59         endif !if (ok_iso_verif) then     
     57      !write(lunout,*) 'qminimum 52: entree'
     58      IF(first) THEN
     59         iq_vap = strIdx(tracers(:)%name, addPhase('H2O', 'g'))
     60         iq_liq = strIdx(tracers(:)%name, addPhase('H2O', 'l'))
     61         first = .FALSE.
     62      END IF
     63      call check_isotopes(q,ij_begin,ij_end,'qminimum 52')   
    6064
    6165      ijb=ij_begin
     
    169173!              write(lunout,*) 'i,k,q_follow(i,k-1,iq_vap)=',
    170174!     :                 i,k,q_follow(i,k-1,iq_vap)         
    171               if (q_follow(i,k-1,iq_vap).lt.qperemin) then
     175              if (q_follow(i,k-1,iq_vap).lt.min_qParent) then
    172176                write(lunout,*) 'tmp qmin: on stoppe'
    173177                write(lunout,*) 'zx_pump(i)=',zx_pump(i)
     
    177181                call abort_gcm("qminimum","not enough vapor",1)
    178182              endif 
    179             do ixt=1,ntraciso
     183            do ixt=1,ntiso
    180184!                write(lunout,*) 'qmin 168: ixt=',ixt
    181 !                write(lunout,*) 'q(i,k,iqiso(ixt,iq_vap)=',
    182 !     :             q(i,k,iqiso(ixt,iq_vap))
     185!                write(lunout,*) 'q(i,k,iqIsoPha(ixt,iq_vap)=',
     186!     :             q(i,k,iqIsoPha(ixt,iq_vap))
    183187!                write(lunout,*) 'zx_defau_diag(i,k,iq_vap)=',
    184188!     :                  zx_defau_diag(i,k,iq_vap)
    185 !                write(lunout,*) 'q(i,k-1,iqiso(ixt,iq_vap)=',
    186 !     :                   q(i,k-1,iqiso(ixt,iq_vap))     
    187 
    188                q(i,k,iqiso(ixt,iq_vap))=q(i,k,iqiso(ixt,iq_vap))
    189      :              +zx_defau_diag(i,k,iq_vap)
    190      :              *q(i,k-1,iqiso(ixt,iq_vap))/q_follow(i,k-1,iq_vap)
     189!                write(lunout,*) 'q(i,k-1,iqIsoPha(ixt,iq_vap)=',
     190!     :                   q(i,k-1,iqIsoPha(ixt,iq_vap))     
     191
     192               q(i,k,iqIsoPha(ixt,iq_vap))=q(i,k,iqIsoPha(ixt,iq_vap))
     193     :           +zx_defau_diag(i,k,iq_vap)
     194     :           *q(i,k-1,iqIsoPha(ixt,iq_vap))/q_follow(i,k-1,iq_vap)
    191195               
    192               if (ok_iso_verif) then
    193                 if (iso_verif_noNaN_nostop(q(i,k,iqiso(ixt,iq_vap)),
     196              if (isoCheck) then
     197                if(iso_verif_noNaN_nostop(q(i,k,iqIsoPha(ixt,iq_vap)),
    194198     :                   'qminimum 155').eq.1) then
    195199                   write(*,*) 'i,k,ixt=',i,k,ixt
    196200                   write(*,*) 'q_follow(i,k-1,iq_vap)=',
    197201     :                   q_follow(i,k-1,iq_vap)
    198                    write(*,*) 'q(i,k,iqiso(ixt,iq_vap))=',
    199      :                   q(i,k,iqiso(ixt,iq_vap))
     202                   write(*,*) 'q(i,k,iqIsoPha(ixt,iq_vap))=',
     203     :                   q(i,k,iqIsoPha(ixt,iq_vap))
    200204                   write(*,*) 'zx_defau_diag(i,k,iq_vap)=',
    201205     :                   zx_defau_diag(i,k,iq_vap)
    202                    write(*,*) 'q(i,k-1,iqiso(ixt,iq_vap))=',
    203      :                   q(i,k-1,iqiso(ixt,iq_vap))
     206                   write(*,*) 'q(i,k-1,iqIsoPha(ixt,iq_vap))=',
     207     :                   q(i,k-1,iqIsoPha(ixt,iq_vap))
    204208                   stop
    205209                endif
     
    207211
    208212              ! et on la retranche en k-1
    209                q(i,k-1,iqiso(ixt,iq_vap))=q(i,k-1,iqiso(ixt,iq_vap))
     213               q(i,k-1,iqIsoPha(ixt,iq_vap)) =
     214     :            q(i,k-1,iqIsoPha(ixt,iq_vap))
    210215     :              -zx_defau_diag(i,k,iq_vap)
    211216     :              *deltap(i,k)/deltap(i,k-1)
    212      :              *q(i,k-1,iqiso(ixt,iq_vap))/q_follow(i,k-1,iq_vap)
    213 
    214                if (ok_iso_verif) then
    215                 if (iso_verif_noNaN_nostop(q(i,k-1,iqiso(ixt,iq_vap)),
     217     :              *q(i,k-1,iqIsoPha(ixt,iq_vap))
     218     :              /q_follow(i,k-1,iq_vap)
     219
     220               if (isoCheck) then
     221                if (iso_verif_noNaN_nostop(
     222     :              q(i,k-1,iqIsoPha(ixt,iq_vap)),
    216223     :                   'qminimum 175').eq.1) then
    217224                   write(*,*) 'k,i,ixt=',k,i,ixt
    218225                   write(*,*) 'q_follow(i,k-1,iq_vap)=',
    219226     :                   q_follow(i,k-1,iq_vap)
    220                    write(*,*) 'q(i,k,iqiso(ixt,iq_vap))=',
    221      :                   q(i,k,iqiso(ixt,iq_vap))
     227                   write(*,*) 'q(i,k,iqIsoPha(ixt,iq_vap))=',
     228     :                   q(i,k,iqIsoPha(ixt,iq_vap))
    222229                   write(*,*) 'zx_defau_diag(i,k,iq_vap)=',
    223230     :                   zx_defau_diag(i,k,iq_vap)
    224                    write(*,*) 'q(i,k-1,iqiso(ixt,iq_vap))=',
    225      :                   q(i,k-1,iqiso(ixt,iq_vap))
     231                   write(*,*) 'q(i,k-1,iqIsoPha(ixt,iq_vap))=',
     232     :                   q(i,k-1,iqIsoPha(ixt,iq_vap))
    226233                   stop
    227234                endif
     
    239246        enddo !do k=2,llm
    240247
    241         if (ok_iso_verif) then
    242            call check_isotopes(q,ijb,ije,'qminimum 168')
    243         endif !if (ok_iso_verif) then
     248        call check_isotopes(q,ijb,ije,'qminimum 168')
    244249       
    245250     
     
    252257
    253258              ! on ajoute eau liquide en k en k             
    254               do ixt=1,ntraciso
    255                q(i,k,iqiso(ixt,iq_liq))=q(i,k,iqiso(ixt,iq_liq))
     259              do ixt=1,ntiso
     260               q(i,k,iqIsoPha(ixt,iq_liq))=q(i,k,iqIsoPha(ixt,iq_liq))
    256261     :              +zx_defau_diag(i,k,iq_liq)
    257      :              *q(i,k,iqiso(ixt,iq_vap))/q_follow(i,k,iq_vap)
     262     :              *q(i,k,iqIsoPha(ixt,iq_vap))/q_follow(i,k,iq_vap)
    258263              ! et on la retranche à la vapeur en k
    259                q(i,k,iqiso(ixt,iq_vap))=q(i,k,iqiso(ixt,iq_vap))
     264               q(i,k,iqIsoPha(ixt,iq_vap))=q(i,k,iqIsoPha(ixt,iq_vap))
    260265     :              -zx_defau_diag(i,k,iq_liq)
    261      :              *q(i,k,iqiso(ixt,iq_vap))/q_follow(i,k,iq_vap)   
     266     :              *q(i,k,iqIsoPha(ixt,iq_vap))/q_follow(i,k,iq_vap)   
    262267              enddo !do ixt=1,niso
    263268              q_follow(i,k,iq_liq)=   q_follow(i,k,iq_liq)
     
    270275       enddo !do k=2,llm 
    271276
    272         if (ok_iso_verif) then
    273            call check_isotopes(q,ijb,ije,'qminimum 197')
    274         endif !if (ok_iso_verif) then
     277       call check_isotopes(q,ijb,ije,'qminimum 197')
    275278
    276279      endif !if (niso > 0) then
Note: See TracChangeset for help on using the changeset viewer.