Ignore:
Timestamp:
May 11, 2021, 2:10:34 PM (3 years ago)
Author:
dcugnet
Message:
  • Bugs corrections:
    • sequential gcm fixed
    • parallel gcm compilation fixed ; to be tested
  • Some generic operations moved from infotrac to readTracFile
  • Fixed algebrical reduction routine, used in the isotopes parameters file.
  • Additional component "comp" in the tracers descriptor derived type "tra",

specifying the model component name(s) (cf. tracers sections) it belongs.

  • isotopes class selection tool fixed.
Location:
LMDZ6/branches/LMDZ-tracers/libf/dyn3dmem
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/LMDZ-tracers/libf/dyn3dmem/check_isotopes_loc.F90

    r3852 r3891  
    2626  modname = 'check_isotopes'
    2727  IF(first) THEN
     28    iH2O = -1
    2829    IF(isoSelect('H2O')) RETURN
    2930    ixH2O = strIdx(isoName,'H2[16]O')
     
    3233    first = .FALSE.
    3334  ELSE
     35    IF(iH2O == -1)      RETURN
    3436    IF(isoSelect(iH2O)) RETURN
    3537  END IF
  • LMDZ6/branches/LMDZ-tracers/libf/dyn3dmem/dynetat0_loc.F90

    r3852 r3891  
    4646  REAL,             ALLOCATABLE :: ucov_glo(:,:),    q_glo(:,:), phis_glo(:)
    4747  REAL,             ALLOCATABLE :: teta_glo(:,:)
     48  TYPE(tra), POINTER :: tr
    4849!-------------------------------------------------------------------------------
    4950  modname="dynetat0_loc"
  • LMDZ6/branches/LMDZ-tracers/libf/dyn3dmem/dynredem_loc.F90

    r3852 r3891  
    151151  CALL cre_var(nid,"teta" ,"Temperature",[rlonvID,rlatuID,sID,timID])
    152152  DO iq=1,nqtot
    153     CALL cre_var(nid,tracers(iq)%name(iq),tracers(iq)%lnam,[rlonvID,rlatuID,sID,timID])
     153    CALL cre_var(nid,tracers(iq)%name,tracers(iq)%lnam,[rlonvID,rlatuID,sID,timID])
    154154  END DO
    155155  CALL cre_var(nid,"masse","Masse d air"    ,[rlonvID,rlatuID,sID,timID])
  • LMDZ6/branches/LMDZ-tracers/libf/dyn3dmem/iniacademic_loc.F90

    r3852 r3891  
    283283              IF(niso > 0 .AND. tr%iso_num > 0) THEN
    284284                IF(tr%iso_zon == 0) &
    285                   q(ijb_u:ije_u,:,i) = q(ijb_u:ije_u,:,tr%iprnt)         *        tnat(tr%iso_num)
     285                  q(ijb_u:ije_u,:,i) = q(ijb_u:ije_u,:,tr%iprnt)         *        tnat(tr%iso_num) &
    286286                                     *(q(ijb_u:ije_u,:,tr%iprnt)/30.e-3)**(alpha_ideal(tr%iso_num)-1)
    287287                IF(tr%iso_zon == 1) &
  • LMDZ6/branches/LMDZ-tracers/libf/dyn3dmem/qminimum_loc.F

    r3852 r3891  
    44      SUBROUTINE qminimum_loc( q,nqtot,deltap )
    55      USE parallel_lmdz
    6       USE infotrac, ONLY: nitr, iTraPha, qperemin ! CRisi 23nov2020
     6      USE infotrac, ONLY: nitr, iTraPha, qprntmin ! CRisi 23nov2020
    77      IMPLICIT none
    88c
     
    166166!              write(lunout,*) 'i,k,q_follow(i,k-1,iq_vap)=',
    167167!     :                 i,k,q_follow(i,k-1,iq_vap)         
    168               if (q_follow(i,k-1,iq_vap).lt.qperemin) then
     168              if (q_follow(i,k-1,iq_vap).lt.qprntmin) then
    169169                write(lunout,*) 'tmp qmin: on stoppe'
    170170                write(lunout,*) 'zx_pump(i)=',zx_pump(i)
  • LMDZ6/branches/LMDZ-tracers/libf/dyn3dmem/vlsplt_loc.F

    r3852 r3891  
    1414c   --------------------------------------------------------------------
    1515      USE parallel_lmdz
    16       USE infotrac, ONLY : nqtot,tracers, tra,         ! CRisi                 &
    17      &                     qperemin,masseqmin,ratiomin ! MVals et CRisi
     16      USE infotrac, ONLY : nqtot,tracers, tra,          ! CRisi                &
     17     &                     qprntmin, massqmin, ratiomin ! MVals et CRisi
    1818      IMPLICIT NONE
    1919c
     
    346346           ! les calcule donc que de ijb à ije
    347347           !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    348            masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),masseqmin)
    349            if (q(ij,l,iq).gt.qperemin) then ! modif 13 nov 2020
     348           masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),massqmin)
     349           if (q(ij,l,iq).gt.qprntmin) then ! modif 13 nov 2020
    350350             Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
    351351           else
     
    369369         DO ij=ijb+1,ije
    370370            !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    371             new_m=max(masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l),masseqmin)
     371            new_m=max(masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l),massqmin)
    372372            q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+
    373373     &        u_mq(ij-1,l)-u_mq(ij,l))
     
    425425c   --------------------------------------------------------------------
    426426      USE parallel_lmdz
    427       USE infotrac, ONLY : nqtot, tracers, tra,        ! CRisi                 &
    428      &                     qperemin,masseqmin,ratiomin ! MVals et CRisi   
     427      USE infotrac, ONLY : nqtot, tracers, tra,         ! CRisi                &
     428     &                     qprntmin, massqmin, ratiomin ! MVals et CRisi   
    429429      USE comconst_mod, ONLY: pi
    430430      IMPLICIT NONE
     
    759759          DO ij=ijbm,ijem
    760760           !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    761            masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),masseqmin)
     761           masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),massqmin)
    762762          enddo !DO ij=ijbm,ijem
    763763
     
    765765         DO ij=ijb,ije
    766766           !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    767            if (q(ij,l,iq).gt.qperemin) then ! modif 13 nov 2020
     767           if (q(ij,l,iq).gt.qprntmin) then ! modif 13 nov 2020
    768768             Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
    769769           else
     
    901901      USE parallel_lmdz
    902902      USE vlz_mod
    903       USE infotrac, ONLY : nqtot, tracers, tra,        ! CRisi                 &
    904      &                     qperemin,masseqmin,ratiomin ! MVals et CRisi
     903      USE infotrac, ONLY : nqtot, tracers, tra,         ! CRisi                &
     904     &                     qprntmin, massqmin, ratiomin ! MVals et CRisi
    905905     
    906906      IMPLICIT NONE
     
    949949!$OMP THREADPRIVATE(first)
    950950
    951       !REAL masseq(ijb_u:ije_u,llm,nqtot),Ratio(ijb_u:ije_u,llm,nqtot) ! CRisi
     951      !REAL massq(ijb_u:ije_u,llm,nqtot),Ratio(ijb_u:ije_u,llm,nqtot) ! CRisi
    952952      ! Ces varibles doivent être déclarées en pointer et en save dans
    953953      ! vlz_loc si on veut qu'elles soient vues par tous les threads. 
    954954      INTEGER ichld,iq2 ! CRisi
    955 
     955      TYPE(tra), POINTER :: tr
     956      tr => tracers(iq)
    956957
    957958      IF (first) THEN
     
    11741175          DO ij=ijb,ije
    11751176           !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    1176            masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),masseqmin)
    1177            if (q(ij,l,iq).gt.qperemin) then
     1177           masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),massqmin)
     1178           if (q(ij,l,iq).gt.qprntmin) then
    11781179             Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
    11791180           else
  • LMDZ6/branches/LMDZ-tracers/libf/dyn3dmem/vlspltqs_loc.F

    r3852 r3891  
    1212c   --------------------------------------------------------------------
    1313      USE parallel_lmdz
    14       USE infotrac, ONLY : nqtot, tracers, tra,        ! CRisi                 &
    15      &                     qperemin,masseqmin,ratiomin ! MVals et CRisi
     14      USE infotrac, ONLY : nqtot, tracers, tra,         ! CRisi                &
     15     &                     qprntmin, massqmin, ratiomin ! MVals et CRisi
    1616      IMPLICIT NONE
    1717c
     
    349349          DO ij=ijb,ije
    350350           !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    351            masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),masseqmin)
    352            if (q(ij,l,iq).gt.qperemin) then ! modif 13 nov 2020
     351           masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),massqmin)
     352           if (q(ij,l,iq).gt.qprntmin) then ! modif 13 nov 2020
    353353             Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
    354354           else
     
    374374         DO ij=ijb+1,ije
    375375            !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    376             new_m=max(masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l),masseqmin)
     376            new_m=max(masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l),massqmin)
    377377            q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+
    378378     &      u_mq(ij-1,l)-u_mq(ij,l))
     
    428428c   --------------------------------------------------------------------
    429429      USE parallel_lmdz
    430       USE infotrac, ONLY : nqtot, tracers, tra,        ! CRisi                 &
    431      &                     qperemin,masseqmin,ratiomin ! MVals et CRisi
     430      USE infotrac, ONLY : nqtot, tracers, tra,         ! CRisi                &
     431     &                     qprntmin, massqmin, ratiomin ! MVals et CRisi
    432432      USE comconst_mod, ONLY: pi
    433433      IMPLICIT NONE
     
    759759          DO ij=ijbm,ijem
    760760           !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    761            masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),masseqmin)
     761           masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),massqmin)
    762762          enddo !DO ij=ijbm,ijem
    763763
     
    766766           !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    767767           !write(lunout,*) 'ij,l,q(ij,l,iq)=',ij,l,q(ij,l,iq)
    768            if (q(ij,l,iq).gt.qperemin) then ! modif 13 nov 2020
     768           if (q(ij,l,iq).gt.qprntmin) then ! modif 13 nov 2020
    769769             Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
    770770           else
  • LMDZ6/branches/LMDZ-tracers/libf/dyn3dmem/vlz_mod.F90

    r3852 r3891  
    2525    CALL allocate_u(dzqw,llm,d)
    2626    CALL allocate_u(adzqw,llm,d)
    27     IF(ANY(tracers(:)%ndesc > 0) THEN
     27    IF(ANY(tracers(:)%ndesc > 0)) THEN
    2828      !CALL allocate_u(masseq,llm,nqtot,d)
    2929      CALL allocate_u(Ratio,llm,nqtot,d)
     
    4545    CALL switch_u(adzqw,distrib_vanleer,dist)
    4646    ! CRisi:
    47     if (nqdesc_tot.gt.0) then   
     47    IF(ANY(tracers(:)%ndesc > 0)) then   
    4848    !CALL switch_u(masseq,distrib_vanleer,dist)
    4949    CALL switch_u(Ratio,distrib_vanleer,dist)
Note: See TracChangeset for help on using the changeset viewer.