Ignore:
Timestamp:
Apr 5, 2013, 1:49:35 PM (11 years ago)
Author:
idelkadi
Message:

1- Inclusion des developpements de la these de Romain Pilon sur le
lessivage des aerosols :

a/ par les pluies convectives (modifs cv30_routines et cv3_routines pour

sortir les champs nécessaires au calcul off-line ; modif cvltr)

b/ par les pluies stratiformes (modifs phytrac et introduction

lsc_scav).

2- Choix entre plusieurs schemas pour les pluies stratiformes, commande
par iflag_lscav.

3- Quelques corrections dans la convection "Nouvelle Physique" pour
assurer la conservation des traceurs (cv3p1_mixing et cva_driver) (travail
de Robin Locatelli).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/cv3_routines.F

    r1650 r1742  
    19501950     :              ,th,tv,lv,cpn,ep,sigp,clw
    19511951     :              ,m,ment,elij,delt,plcl,coef_clos
    1952      o              ,mp,rp,up,vp,trap,wt,water,evap,b,sigd)
     1952     o              ,mp,rp,up,vp,trap,wt,water,evap,b,sigd
     1953     o              ,wdtrainA,wdtrainM)                                ! RomP
    19531954      implicit none
    19541955
     
    19791980      real trap(nloc,na,ntra)
    19801981      real b(nloc,na), sigd(nloc)
     1982! 25/08/10 - RomP---- ajout des masses precipitantes ejectees
     1983! lascendance adiabatique et des flux melanges Pa et Pm.
     1984! Distinction des wdtrain
     1985! Pa = wdtrainA     Pm = wdtrainM
     1986      real  wdtrainA(nloc,na), wdtrainM(nloc,na)
    19811987
    19821988c local variables
     
    20212027!AC!         enddo
    20222028!AC!        enddo
     2029!! RomP >>>
     2030         do i=1,nd
     2031          do il=1,ncum
     2032          wdtrainA(il,i)=0.0     
     2033          wdtrainM(il,i)=0.0     
     2034         enddo
     2035        enddo
     2036!! RomP <<<
    20232037c
    20242038c   ***  check whether ep(inb)=0, if so, skip precipitating    ***
     
    20652079         if (cvflag_grav) then
    20662080          wdtrain(il)=grav*ep(il,i)*m(il,i)*clw(il,i)
     2081          wdtrainA(il,i) = wdtrain(il)/grav     !   Pa   RomP
    20672082         else
    20682083          wdtrain(il)=10.0*ep(il,i)*m(il,i)*clw(il,i)
     2084          wdtrainA(il,i) = wdtrain(il)/10.      !   Pa   RomP
    20692085         endif
    20702086        endif
     
    20792095           if (cvflag_grav) then
    20802096            wdtrain(il)=wdtrain(il)+grav*awat*ment(il,j,i)
     2097            wdtrainM(il,i) = wdtrain(il)/grav-wdtrainA(il,i)    !   Pm  RomP
    20812098           else
    20822099            wdtrain(il)=wdtrain(il)+10.0*awat*ment(il,j,i)
     2100            wdtrainM(il,i) = wdtrain(il)/10.-wdtrainA(il,i)    !   Pm  RomP
    20832101           endif
    20842102          endif
     
    35403558        end
    35413559
    3542 !AC!
     3560!AC! et !RomP >>>
    35433561      SUBROUTINE cv3_tracer(nloc,len,ncum,nd,na,
    3544      &                        ment,sij,da,phi)
     3562     &                       ment,sigij,da,phi,phi2,d1a,dam,
     3563     &                       ep,Vprecip,elij,clw,icb,inb)
    35453564        implicit none
     3565
     3566#include "cv3param.h"
     3567
    35463568c inputs:
    35473569        integer ncum, nd, na, nloc,len
    3548         real ment(nloc,na,na),sij(nloc,na,na)
     3570        real ment(nloc,na,na),sigij(nloc,na,na)
     3571        real clw(nloc,nd),elij(nloc,na,na)
     3572        real ep(nloc,na)
     3573        integer icb(nloc),inb(nloc)
     3574        real VPrecip(nloc,nd+1)
    35493575c ouputs:
    35503576        real da(nloc,na),phi(nloc,na,na)
     3577        real phi2(nloc,na,na)
     3578        real d1a(nloc,na),dam(nloc,na)
     3579! variables pour tracer dans precip de l'AA et des mel
    35513580c local variables:
    35523581        integer i,j,k
    3553 c       
    3554         da(:,:)=0.
    3555 c
     3582        real epm(nloc,na,na)
     3583c
     3584! variables d'Emanuel : du second indice au troisieme
     3585! --->    tab(i,k,j) -> de l origine k a l arrivee j
     3586!  ment, sigij, elij
     3587! variables personnelles : du troisieme au second indice
     3588! --->    tab(i,j,k) -> de k a j
     3589! phi, phi2
     3590!
     3591! initialisations
     3592c
     3593       da(:,:)=0.
     3594       d1a(:,:)=0.
     3595       dam(:,:)=0.
     3596       epm(:,:,:)=0.
     3597c
     3598!  fraction deau condensee dans les melanges convertie en precip
     3599        do j=1,na
     3600         do k=1,na
     3601           do i=1,ncum
     3602            if(k.ge.icb(i).and.k.le.inb(i).and.
     3603     &         j.ge.k.and.j.le.inb(i)) then
     3604             epm(i,j,k)=1.-(1.-ep(i,j))*clw(i,j)/elij(i,k,j)
     3605             epm(i,j,k)=max(epm(i,j,k),0.0)
     3606            endif
     3607           end do
     3608         end do
     3609        end do
     3610
     3611!  matrices pour calculer la tendance des concentrations dans cvltr.F90
    35563612        do j=1,na
    35573613          do k=1,na
    35583614            do i=1,ncum
    3559             da(i,j)=da(i,j)+(1.-sij(i,k,j))*ment(i,k,j)
    3560             phi(i,j,k)=sij(i,k,j)*ment(i,k,j)
     3615             da(i,j)=da(i,j)+(1.-sigij(i,k,j))*ment(i,k,j)
     3616             phi(i,j,k)=sigij(i,k,j)*ment(i,k,j)
     3617             d1a(i,j)=d1a(i,j)+ment(i,k,j)*ep(i,k)
     3618     &              *(1.-sigij(i,k,j))
     3619            if(k.le.j) then
     3620             dam(i,j)=dam(i,j)+ment(i,k,j)
     3621     &             *epm(i,k,j)*(1.-ep(i,k))*(1.-sigij(i,k,j))
     3622
     3623             phi2(i,j,k)=phi(i,j,k)*epm(i,j,k)   
     3624            else
     3625             dam(i,j)=0.
     3626             phi2(i,j,k)=0.
     3627            endif
    35613628            end do
    35623629          end do
    35633630        end do
     3631   
    35643632        return
    35653633        end
    3566 !AC!
     3634!AC! et !RomP <<<
    35673635
    35683636      SUBROUTINE cv3_uncompress(nloc,len,ncum,nd,ntra,idcum
Note: See TracChangeset for help on using the changeset viewer.