Changeset 4052


Ignore:
Timestamp:
Dec 26, 2021, 10:27:36 PM (2 years ago)
Author:
dcugnet
Message:

Fixes for previous commit:

  • few tracers(:)%nqChilds were errouneously replaced with tarcers(:)%nqDesc
  • minor changes
Location:
LMDZ6/trunk/libf
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3d/dynetat0.f90

    r4050 r4052  
    137137   !           Rayleigh distillation law.
    138138    iName = tracers(iq)%iso_iName
     139    IF(.NOT.ok_isotopes .OR. iName<=0) CYCLE
    139140    iZone = tracers(iq)%iso_iZone
    140141    iPhase= tracers(iq)%iso_iPhase
    141142    iqParent = tracers(iq)%iqParent
    142     IF(ok_isotopes .AND. iName>0) THEN
    143       IF(iZone==0) q(:,:,:,iq) = q(:,:,:,iqParent)*tnat(iName)    &
    144                                *(q(:,:,:,iqParent)/30.e-3)**(alpha_ideal(iName)-1.)
    145       IF(iZone==1) q(:,:,:,iq) = q(:,:,:,iqiso(iso_indnum(iq),iPhase))
    146     END IF
     143    IF(iZone==0) q(:,:,:,iq) = q(:,:,:,iqParent)*tnat(iName)    &
     144                             *(q(:,:,:,iqParent)/30.e-3)**(alpha_ideal(iName)-1.)
     145    IF(iZone==1) q(:,:,:,iq) = q(:,:,:,iqiso(iso_indnum(iq),iPhase))
    147146  END DO
    148147
  • LMDZ6/trunk/libf/dyn3d/iniacademic.F90

    r4050 r4052  
    278278           do iq=1,nqtot
    279279              q(:,:,iq)=0.
     280!              IF(tracers(iq)%name == 'H2O'//phases_sep//'g') q(:,:,iq)=1.e-10
     281!              IF(tracers(iq)%name == 'H2O'//phases_sep//'l') q(:,:,iq)=1.e-15
    280282              IF(tracers(iq)%name == 'H2Ov') q(:,:,iq)=1.e-10
    281283              IF(tracers(iq)%name == 'H2Ol') q(:,:,iq)=1.e-15
     
    284286              ! distill de Rayleigh très simplifiée
    285287              iName = tracers(iq)%iso_iName
     288              if (.NOT.ok_isotopes .OR. iName <= 0) CYCLE
    286289              iZone = tracers(iq)%iso_iZone
    287290              iPhase= tracers(iq)%iso_iPhase
    288291              iqParent = tracers(iq)%iqParent
    289               if (ok_isotopes .AND. iName > 0) then
    290                 if (iZone == 0) q(:,:,iq) = q(:,:,iqParent)*tnat(iName) &
    291                                           *(q(:,:,iqParent)/30.e-3)**(alpha_ideal(iName)-1)
    292                 if (iZone == 1) q(:,:,iq) = q(:,:,iqiso(iso_indnum(iq),iPhase))
    293               endif !if (ok_isotopes) then
    294 
     292              if (iZone == 0) q(:,:,iq) = q(:,:,iqParent)*tnat(iName) &
     293                                        *(q(:,:,iqParent)/30.e-3)**(alpha_ideal(iName)-1)
     294              if (iZone == 1) q(:,:,iq) = q(:,:,iqiso(iso_indnum(iq),iPhase))
    295295           enddo
    296296        else
  • LMDZ6/trunk/libf/dyn3d/vlsplt.F

    r4050 r4052  
    464464        enddo
    465465      enddo
    466       do ifils=1,tracers(iq)%nqDescen
     466      do ifils=1,tracers(iq)%nqChilds
    467467        iq2=tracers(iq)%iqDescen(ifils)
    468468        call vlx(Ratio,pente_max,masseq,u_mq,iq2)
     
    10151015      enddo
    10161016       
    1017       do ifils=1,tracers(iq)%nqDescen
     1017      do ifils=1,tracers(iq)%nqChilds
    10181018        iq2=tracers(iq)%iqDescen(ifils)
    10191019        call vlz(Ratio,pente_max,masseq,wq,iq2)
  • LMDZ6/trunk/libf/dyn3d/vlspltqs.F

    r4050 r4052  
    786786! CRisi: appel récursif de l'advection sur les fils.
    787787! Il faut faire ça avant d'avoir mis à jour q et masse
    788       !write(*,*) 'vlyqs 689: iq,nqDesc(iq)=',iq,tracers(iq)%nqDescen
     788      !write(*,*) 'vlyqs 689: iq,nqChilds(iq)=',iq,tracers(iq)%nqChilds
    789789   
    790790      do ifils=1,tracers(iq)%nqDescen
  • LMDZ6/trunk/libf/dyn3d_common/infotrac.F90

    r4051 r4052  
    734734    enddo !do iq=1,nqtot
    735735    tracers(:)%gen0Name = ancestor(tracers)      !--- Name of the first generation ancestor
     736    tracers(:)%isAdvected = tracers(:)%iadv  >   0
     737!    tracers(:)%isH2Ofamily = delPhase(tracers(:)%gen0Name) == 'H2O'
     738    tracers(:)%isH2Ofamily = [(tracers(iq)%gen0Name(1:3) == 'H2O', iq=1, nqtot)]
    736739
    737740
  • LMDZ6/trunk/libf/dyn3dmem/dynetat0_loc.F90

    r4050 r4052  
    174174   !           Rayleigh distillation las.
    175175    iName = tracers(iq)%iso_iName
     176    IF(.NOT.ok_isotopes .OR. iName <= 0) CYCLE
    176177    iZone = tracers(iq)%iso_iZone
    177178    iPhase= tracers(iq)%iso_iPhase
    178179    iqParent = tracers(iq)%iqParent
    179     IF(ok_isotopes .AND. iName>0) THEN
    180       IF(iZone==0) q(:,:,iq) = q(:,:,iqParent)*tnat(iName)    &
    181      &           *(q(:,:,iqParent)/30.e-3)**(alpha_ideal(iName)-1.)
    182       IF(iZone==1) q(:,:,iq) = q(:,:,iqiso(iso_indnum(iq),iPhase))
    183     END IF
     180    IF(iZone==0) q(:,:,iq) = q(:,:,iqParent)*tnat(iName)    &
     181     &         *(q(:,:,iqParent)/30.e-3)**(alpha_ideal(iName)-1.)
     182    IF(iZone==1) q(:,:,iq) = q(:,:,iqiso(iso_indnum(iq),iPhase))
    184183  END DO
    185184  DEALLOCATE(q_glo)
  • LMDZ6/trunk/libf/dyn3dmem/iniacademic_loc.F90

    r4050 r4052  
    284284           do iq=1,nqtot
    285285              q(ijb_u:ije_u,:,iq)=0.
     286!              IF(tracers(iq)%name == 'H2O'//Phases_sep//'g') q(ijb_u:ije_u,:,iq)=1.e-10
     287!              IF(tracers(iq)%name == 'H2O'//phases_sep//'l') q(ijb_u:ije_u,:,iq)=1.e-15
    286288              if (tracers(iq)%name == 'H2Ov') q(ijb_u:ije_u,:,iq)=1.e-10
    287289              if (tracers(iq)%name == 'H2Ol') q(ijb_u:ije_u,:,iq)=1.e-15
     
    290292              ! distill de Rayleigh très simplifiée
    291293              iName = tracers(iq)%iso_iName
     294              if (.NOT.ok_isotopes .OR. iName <= 0) CYCLE
    292295              iZone = tracers(iq)%iso_iZone
    293296              iPhase= tracers(iq)%iso_iPhase
    294297              iqParent = tracers(iq)%iqParent
    295               if (ok_isotopes .AND. iName > 0) then
    296                 if (iZone == 0) q(ijb_u:ije_u,:,iq) = q(ijb_u:ije_u,:,iqParent)*tnat(iName) &
    297                                                     *(q(ijb_u:ije_u,:,iqParent)/30.e-3)**(alpha_ideal(iName)-1)
    298                 if (iZone == 1) q(ijb_u:ije_u,:,iq) = q(ijb_u:ije_u,:,iqiso(iso_indnum(iq),iPhase))
    299               endif !if (ok_isotopes) then
    300 
     298              if (iZone == 0) q(ijb_u:ije_u,:,iq) = q(ijb_u:ije_u,:,iqParent)*tnat(iName) &
     299                                                  *(q(ijb_u:ije_u,:,iqParent)/30.e-3)**(alpha_ideal(iName)-1)
     300              if (iZone == 1) q(ijb_u:ije_u,:,iq) = q(ijb_u:ije_u,:,iqiso(iso_indnum(iq),iPhase))
    301301           enddo
    302302        else
  • LMDZ6/trunk/libf/dyn3dmem/vlsplt_loc.F

    r4050 r4052  
    726726! CRisi: appel récursif de l'advection sur les fils.
    727727! Il faut faire ça avant d'avoir mis à jour q et masse
    728       !write(*,*) 'vly 689: iq,nqDesc(iq)=',iq,tracers(iq)%nqDescen
     728      !write(*,*) 'vly 689: iq,nqChilds(iq)=',iq,tracers(iq)%nqChilds
    729729
    730730      ijb=ij_begin-2*iip1
  • LMDZ6/trunk/libf/dyn3dmem/vlspltgen_loc.F

    r4050 r4052  
    346346        SELECT CASE(tracers(iq)%iadv)
    347347          CASE(0); CYCLE
    348           CASE(10); call vly_loc(zq,pente_max,zm,mv,iq)
     348          CASE(10); call   vly_loc(zq,pente_max,zm,mv,     iq)
    349349          CASE(14); call vlyqs_loc(zq,pente_max,zm,mv,qsat,iq)
    350350          CASE DEFAULT
  • LMDZ6/trunk/libf/dyn3dmem/vlspltqs_loc.F

    r4050 r4052  
    264264c$OMP END DO NOWAIT
    265265
    266 cym ATTENTION ICI en OpenMP reduction pas forcement nécessaire
     266cym ATTENTION ICI en OpenMP reduction pas forcement necessaire
    267267cym      IF(n0.gt.1) THEN
    268268cym        IF(n0.gt.0) THEN
     
    335335c$OMP END DO NOWAIT
    336336
    337 ! CRisi: appel récursif de l'advection sur les fils.
    338 ! Il faut faire ça avant d'avoir mis à jour q et masse
    339       !write(*,*) 'vlspltqs 336: iq,ijb_x,iqDescen(iq)=',
    340 !     &     iq,ijb_x,tracers(iq)%iqDescen 
     337! CRisi: appel recursif de l'advection sur les fils.
     338! Il faut faire ca avant d'avoir mis a jour q et masse
     339      !write(*,*) 'vlspltqs 336: iq,ijb_x,nqChilds(iq)=',
     340!     &     iq,ijb_x,tracers(iq)%nqChilds
    341341
    342342      do ifils=1,tracers(iq)%nqDescen
     
    356356c$OMP END DO NOWAIT
    357357      enddo
    358       do ifils=1,tracers(iq)%nqDescen
     358      do ifils=1,tracers(iq)%nqChilds
    359359        iq2=tracers(iq)%iqDescen(ifils)
    360360        !write(*,*) 'vlxqs 349: on appelle vlx pour iq2=',iq2
     
    727727c$OMP END DO NOWAIT
    728728
    729 ! CRisi: appel récursif de l'advection sur les fils.
    730 ! Il faut faire ça avant d'avoir mis à jour q et masse
    731       !write(*,*) 'vlyqs 689: iq,iqDescen(iq)=',iq,tracers(iq)%iqDescen
     729! CRisi: appel recursif de l'advection sur les fils.
     730! Il faut faire ca avant d'avoir mis a jour q et masse
     731      !write(*,*) 'vlyqs 689: iq,nqChilds(iq)=',iq,tracers(iq)%nqChilds
    732732     
    733733      ijb=ij_begin-2*iip1
     
    748748        DO l=1,llm
    749749          ! modif des bornes: CRisi 16 nov 2020
    750           ! d'abord masse avec bornes corrigées
     750          ! d'abord masse avec bornes corrigees
    751751          DO ij=ijbm,ijem
    752752            !MVals: veiller a ce qu'on n'ait pas de denominateur nul
     
    767767c$OMP END DO NOWAIT
    768768      enddo
    769       do ifils=1,tracers(iq)%nqDescen
     769      do ifils=1,tracers(iq)%nqChilds
    770770        iq2=tracers(iq)%iqDescen(ifils)
    771771        !write(lunout,*) 'vly: appel recursiv vly iq2=',iq2
  • LMDZ6/trunk/libf/phylmd/infotrac_phy.F90

    r4050 r4052  
    145145
    146146    CHARACTER(LEN=30) :: modname="init_infotrac_phy"
    147     INTEGER :: iq
    148147
    149148    nqtot=nqtot_
     
    153152    nqtottr=nqtottr_
    154153    ALLOCATE(tracers(nqtot)); tracers(:) = tracers_(:)
    155     tracers(:)%isAdvected = tracers(:)%iadv  >   0
    156 !    tracers(:)%isH2Ofamily = delPhase(tracers(:)%gen0Name) == 'H2O'
    157     tracers(:)%isH2Ofamily = [(tracers(iq)%gen0Name(1:3) == 'H2O', iq=1, nqtot)]
    158154#ifdef CPP_StratAer
    159155    nbtr_bin=nbtr_bin_
     
    209205      ALLOCATE(index_trac(ntraceurs_zone,niso))
    210206      index_trac(:,:)=index_trac_(:,:)
    211 
    212       ALLOCATE(itr_indice(nqtottr))
    213       itr_indice(:)=itr_indice_(:)
    214207    ENDIF ! of IF(ok_isotopes)
     208
     209    ALLOCATE(itr_indice(nqtottr))
     210    itr_indice(:)=itr_indice_(:)
    215211 
    216212  END SUBROUTINE init_infotrac_phy
  • LMDZ6/trunk/libf/phylmdiso/infotrac_phy.F90

    r4050 r4052  
    205205      ALLOCATE(index_trac(ntraceurs_zone,niso))
    206206      index_trac(:,:)=index_trac_(:,:)
    207 
    208207    ENDIF ! of IF(ok_isotopes)
    209208
    210       ALLOCATE(itr_indice(nqtottr))
    211       itr_indice(:)=itr_indice_(:)
     209    ALLOCATE(itr_indice(nqtottr))
     210    itr_indice(:)=itr_indice_(:)
    212211
    213212        write(*,*) 'infotrac_phy 207: nqtottr=',nqtottr
Note: See TracChangeset for help on using the changeset viewer.