Ignore:
Timestamp:
Jun 17, 2022, 4:24:49 PM (2 years ago)
Author:
lguez
Message:

Sync latest trunk changes to branch LMDZ-ECRAD.

Location:
LMDZ6/branches/LMDZ-ECRAD
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/LMDZ-ECRAD

  • LMDZ6/branches/LMDZ-ECRAD/libf/dyn3dmem/vlspltqs_loc.F

    r3800 r4171  
    1212c   --------------------------------------------------------------------
    1313      USE parallel_lmdz
    14       USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils, ! CRisi                 &
    15      &                     qperemin,masseqmin,ratiomin ! MVals et CRisi
     14      USE infotrac, ONLY : nqtot,tracers, ! CRisi                 &
     15     &                     min_qParent,min_qMass,min_ratio ! MVals et CRisi
    1616      IMPLICIT NONE
    1717c
     
    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,nqfils(iq)=',
    340 !     &     iq,ijb_x,nqfils(iq) 
    341 
    342       if (nqfils(iq).gt.0) then 
    343        do ifils=1,nqdesc(iq)
    344          iq2=iqfils(ifils,iq)
     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
     341
     342      do ifils=1,tracers(iq)%nqDescen
     343        iq2=tracers(iq)%iqDescen(ifils)
    345344c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)   
    346          DO l=1,llm
     345        DO l=1,llm
    347346          DO ij=ijb,ije
    348            !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    349            masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),masseqmin)
    350            if (q(ij,l,iq).gt.qperemin) then ! modif 13 nov 2020
    351              Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
    352            else
    353              Ratio(ij,l,iq2)=ratiomin
    354            endif
     347            !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),min_qMass)
     349            if (q(ij,l,iq).gt.min_qParent) then ! modif 13 nov 2020
     350              Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
     351            else
     352              Ratio(ij,l,iq2)=min_ratio
     353            endif
    355354          enddo   
    356          enddo
    357 c$OMP END DO NOWAIT
    358         enddo !do ifils=1,nqfils(iq)
    359         do ifils=1,nqfils(iq)
    360          iq2=iqfils(ifils,iq)
    361          !write(*,*) 'vlxqs 349: on appelle vlx pour iq2=',iq2
    362          call vlx_loc(Ratio,pente_max,masse,u_mq,ijb_x,ije_x,iq2)
    363         enddo !do ifils=1,nqfils(iq)
    364       endif !if (nqfils(iq).gt.0) then
     355        enddo
     356c$OMP END DO NOWAIT
     357      enddo
     358      do ifils=1,tracers(iq)%nqChilds
     359        iq2=tracers(iq)%iqDescen(ifils)
     360        !write(*,*) 'vlxqs 349: on appelle vlx pour iq2=',iq2
     361        call vlx_loc(Ratio,pente_max,masse,u_mq,ijb_x,ije_x,iq2)
     362      enddo
    365363! end CRisi
    366364
     
    372370         DO ij=ijb+1,ije
    373371            !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    374             new_m=max(masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l),masseqmin)
     372            new_m=max(masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l),min_qMass)
    375373            q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+
    376374     &      u_mq(ij-1,l)-u_mq(ij,l))
     
    389387
    390388! retablir les fils en rapport de melange par rapport a l'air:
    391       if (nqfils(iq).gt.0) then 
    392        do ifils=1,nqdesc(iq)
    393          iq2=iqfils(ifils,iq) 
     389      do ifils=1,tracers(iq)%nqDescen
     390        iq2=tracers(iq)%iqDescen(ifils)
    394391c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)   
    395          DO l=1,llm
     392        DO l=1,llm
    396393          DO ij=ijb+1,ije
    397394            q(ij,l,iq2)=q(ij,l,iq)*Ratio(ij,l,iq2)           
    398395          enddo
    399396          DO ij=ijb+iip1-1,ije,iip1
    400              q(ij-iim,l,iq2)=q(ij,l,iq2)
     397            q(ij-iim,l,iq2)=q(ij,l,iq2)
    401398          enddo ! DO ij=ijb+iip1-1,ije,iip1
    402          enddo
    403 c$OMP END DO NOWAIT
    404         enddo !do ifils=1,nqdesc(iq)
    405       endif !if (nqfils(iq).gt.0) then
     399        enddo
     400c$OMP END DO NOWAIT
     401      enddo
    406402
    407403      !write(*,*) 'vlspltqs 399: iq,ijb_x=',iq,ijb_x
     
    426422c   --------------------------------------------------------------------
    427423      USE parallel_lmdz
    428       USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils, ! CRisi                 &
    429      &                     qperemin,masseqmin,ratiomin ! MVals et CRisi
     424      USE infotrac, ONLY : nqtot,tracers, ! CRisi                 &
     425     &                     min_qParent,min_qMass,min_ratio ! MVals et CRisi
    430426      USE comconst_mod, ONLY: pi
    431427      IMPLICIT NONE
     
    731727c$OMP END DO NOWAIT
    732728
    733 ! CRisi: appel récursif de l'advection sur les fils.
    734 ! Il faut faire ça avant d'avoir mis à jour q et masse
    735       !write(*,*) 'vlyqs 689: iq,nqfils(iq)=',iq,nqfils(iq)
     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
    736732     
    737733      ijb=ij_begin-2*iip1
     
    747743      !write(lunout,*) 'ij_begin,ij_end=',ij_begin,ij_end
    748744      !write(lunout,*) 'pole_nord,pole_sud=',pole_nord,pole_sud
    749       if (nqfils(iq).gt.0) then 
    750        do ifils=1,nqdesc(iq)
    751          iq2=iqfils(ifils,iq)
     745      do ifils=1,tracers(iq)%nqDescen
     746        iq2=tracers(iq)%iqDescen(ifils)
    752747c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)   
    753          DO l=1,llm
     748        DO l=1,llm
    754749          ! modif des bornes: CRisi 16 nov 2020
    755           ! d'abord masse avec bornes corrigées
     750          ! d'abord masse avec bornes corrigees
    756751          DO ij=ijbm,ijem
    757            !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    758            masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),masseqmin)
     752            !MVals: veiller a ce qu'on n'ait pas de denominateur nul
     753            masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),min_qMass)
    759754          enddo !DO ij=ijbm,ijem
    760755
    761756          ! ensuite Ratio avec anciennes bornes
    762757          DO ij=ijb,ije
    763            !MVals: veiller a ce qu'on n'ait pas de denominateur nul
    764            !write(lunout,*) 'ij,l,q(ij,l,iq)=',ij,l,q(ij,l,iq)
    765            if (q(ij,l,iq).gt.qperemin) then ! modif 13 nov 2020
    766              Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
    767            else
    768              Ratio(ij,l,iq2)=ratiomin   
    769            endif
     758            !MVals: veiller a ce qu'on n'ait pas de denominateur nul
     759            !write(lunout,*) 'ij,l,q(ij,l,iq)=',ij,l,q(ij,l,iq)
     760            if (q(ij,l,iq).gt.min_qParent) then ! modif 13 nov 2020
     761              Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
     762            else
     763              Ratio(ij,l,iq2)=min_ratio   
     764            endif
    770765          enddo !DO ij=ijbm,ijem
    771          enddo !DO l=1,llm
    772 c$OMP END DO NOWAIT
    773         enddo !do ifils=1,nqdesc(iq)
    774         do ifils=1,nqfils(iq)
    775          iq2=iqfils(ifils,iq)
    776          !write(lunout,*) 'vly: appel recursiv vly iq2=',iq2
    777          call vly_loc(Ratio,pente_max,masse,qbyv,iq2)
    778         enddo !do ifils=1,nqfils(iq)
    779       endif !if (nqfils(iq).gt.0) then
     766        enddo !DO l=1,llm
     767c$OMP END DO NOWAIT
     768      enddo
     769      do ifils=1,tracers(iq)%nqChilds
     770        iq2=tracers(iq)%iqDescen(ifils)
     771        !write(lunout,*) 'vly: appel recursiv vly iq2=',iq2
     772        call vly_loc(Ratio,pente_max,masse,qbyv,iq2)
     773      enddo
    780774
    781775       
     
    856850!      if (pole_sud)  ije=ij_end-iip1
    857851 
    858       if (nqfils(iq).gt.0) then 
    859        do ifils=1,nqdesc(iq)
    860          iq2=iqfils(ifils,iq) 
     852      do ifils=1,tracers(iq)%nqDescen
     853        iq2=tracers(iq)%iqDescen(ifils)
    861854c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)   
    862          DO l=1,llm
     855        DO l=1,llm
    863856          DO ij=ijb,ije
    864857            q(ij,l,iq2)=q(ij,l,iq)*Ratio(ij,l,iq2)           
    865858          enddo
    866          enddo
    867 c$OMP END DO NOWAIT
    868         enddo !do ifils=1,nqdesc(iq)
    869       endif !if (nqfils(iq).gt.0) then
     859        enddo
     860c$OMP END DO NOWAIT
     861      enddo
    870862
    871863
Note: See TracChangeset for help on using the changeset viewer.