Ignore:
Timestamp:
Jan 15, 2021, 6:10:56 PM (4 years ago)
Author:
Laurent Fairhead
Message:

Modifications nécessaires pour les isotopes
CRisi

File:
1 edited

Legend:

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

    • Property svn:keywords set to Id
    r2603 r3800  
     1!
     2!     $Id$
     3!
    14      SUBROUTINE vlxqs_loc(q,pente_max,masse,u_m,qsat,ijb_x,ije_x,iq)
    25c
     
    912c   --------------------------------------------------------------------
    1013      USE parallel_lmdz
    11       USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils ! CRisi 
     14      USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils, ! CRisi                 &
     15     &                     qperemin,masseqmin,ratiomin ! MVals et CRisi
    1216      IMPLICIT NONE
    1317c
     
    342346         DO l=1,llm
    343347          DO ij=ijb,ije
    344            masse(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
    345            Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)     
     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
    346355          enddo   
    347356         enddo
     
    362371      DO l=1,llm
    363372         DO ij=ijb+1,ije
    364             new_m=masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l)
     373            !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)
    365375            q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+
    366376     &      u_mq(ij-1,l)-u_mq(ij,l))
     
    416426c   --------------------------------------------------------------------
    417427      USE parallel_lmdz
    418       USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils ! CRisi 
     428      USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils, ! CRisi                 &
     429     &                     qperemin,masseqmin,ratiomin ! MVals et CRisi
    419430      USE comconst_mod, ONLY: pi
    420431      IMPLICIT NONE
     
    423434      include "paramet.h"
    424435      include "comgeom.h"
     436      include "iniprint.h" 
    425437c
    426438c
     
    464476      DATA first/.true./
    465477      INTEGER ijb,ije
     478      INTEGER ijbm,ijem
    466479
    467480      ijb=ij_begin-2*iip1
     
    724737      ijb=ij_begin-2*iip1
    725738      ije=ij_end+2*iip1
     739      ijbm=ij_begin-iip1
     740      ijem=ij_end+iip1
    726741      if (pole_nord) ijb=ij_begin
    727742      if (pole_sud)  ije=ij_end 
    728 
     743      if (pole_nord) ijbm=ij_begin
     744      if (pole_sud)  ijem=ij_end
     745
     746      !write(lunout,*) 'vlspltqs 737: iq,ijb,ije=',iq,ijb,ije
     747      !write(lunout,*) 'ij_begin,ij_end=',ij_begin,ij_end
     748      !write(lunout,*) 'pole_nord,pole_sud=',pole_nord,pole_sud
    729749      if (nqfils(iq).gt.0) then 
    730750       do ifils=1,nqdesc(iq)
     
    732752c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)   
    733753         DO l=1,llm
     754          ! modif des bornes: CRisi 16 nov 2020
     755          ! d'abord masse avec bornes corrigées
     756          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)
     759          enddo !DO ij=ijbm,ijem
     760
     761          ! ensuite Ratio avec anciennes bornes
    734762          DO ij=ijb,ije
    735            masse(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
    736            Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)   
    737           enddo   
    738          enddo
     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
     770          enddo !DO ij=ijbm,ijem
     771         enddo !DO l=1,llm
    739772c$OMP END DO NOWAIT
    740773        enddo !do ifils=1,nqdesc(iq)
    741774        do ifils=1,nqfils(iq)
    742775         iq2=iqfils(ifils,iq)
     776         !write(lunout,*) 'vly: appel recursiv vly iq2=',iq2
    743777         call vly_loc(Ratio,pente_max,masse,qbyv,iq2)
    744778        enddo !do ifils=1,nqfils(iq)
Note: See TracChangeset for help on using the changeset viewer.