Ignore:
Timestamp:
Dec 16, 2017, 11:57:23 AM (7 years ago)
Author:
jyg
Message:

Bug fix: some communication variables between the
convective scheme and phytrac were set to zero at
the beginning of physiq (and others were not
saved) which led to an erroneous behaviour when
convection was not called at every time step. Now
all theses variables are in phys_local_var_mod and
are no longer reset to zero at the beginning of
physiq provided ok_bug_cv_trac=n .

If ok_bug_cv_trac=y, then the reset to zero is
still performed.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90

    r3124 r3134  
    392392      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: t2m, fluxlat, fsollw,evap_pot
    393393!$OMP THREADPRIVATE(t2m, fluxlat, fsollw,evap_pot)
    394       REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dnwd, dnwd0, upwd, omega
    395 !$OMP THREADPRIVATE(dnwd, dnwd0, upwd, omega)
     394      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dnwd0, omega
     395!$OMP THREADPRIVATE(dnwd0, omega)
    396396      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: epmax_diag ! epmax_cape
    397397!$OMP THREADPRIVATE(epmax_diag)
    398       REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ep ! epmax_cape
     398!
     399!  Deep convective variables used in phytrac
     400      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: ep ! epmax_cape
    399401!$OMP THREADPRIVATE(ep)
     402      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: dnwd, upwd
     403!$OMP THREADPRIVATE(dnwd, upwd)
     404      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: pmflxr, pmflxs
     405!$OMP THREADPRIVATE(pmflxr, pmflxs)
     406      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: wdtrainA, wdtrainM
     407!$OMP THREADPRIVATE(wdtrainA, wdtrainM)
     408      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: da, mp
     409!$OMP THREADPRIVATE(da, mp)
     410      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: wght_cvfd
     411!$OMP THREADPRIVATE(wght_cvfd)
     412      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:):: phi, phi2, elij, epmlmMm
     413!$OMP THREADPRIVATE(phi, phi2, elij, epmlmMm)
     414      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: d1a, dam
     415!$OMP THREADPRIVATE(d1a, dam)
     416      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: ev
     417!$OMP THREADPRIVATE(ev)
     418      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: clw
     419!$OMP THREADPRIVATE(clw)
     420      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: eplaMm
     421!$OMP THREADPRIVATE(eplaMm)
     422      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:):: sij
     423!$OMP THREADPRIVATE(sij)
     424!
    400425!      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: coefh, coefm, lambda_th
    401426      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: lambda_th
     
    409434      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zx_rh
    410435!$OMP THREADPRIVATE(zx_rh)
    411       REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmflxr, pmflxs, prfl, psfl, fraca
    412 !$OMP THREADPRIVATE(pmflxr, pmflxs, prfl, psfl, fraca)
     436      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: prfl, psfl, fraca
     437!$OMP THREADPRIVATE(prfl, psfl, fraca)
    413438      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: Vprecip, zw2
    414439!$OMP THREADPRIVATE(Vprecip, zw2)
     
    423448
    424449! ug et d'autres encore:
    425       REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wdtrainA, wdtrainM
    426 !$OMP THREADPRIVATE(wdtrainA, wdtrainM)
    427450      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: beta_prec
    428451!$OMP THREADPRIVATE(beta_prec)
     
    719742      ALLOCATE(proba_notrig(klon), random_notrig(klon))
    720743
    721       ALLOCATE(dnwd(klon, klev), dnwd0(klon, klev))
     744      ALLOCATE(dnwd0(klon, klev))
    722745!      ALLOCATE(upwd(klon, klev), omega(klon, klev), coefh(klon, klev))
    723       ALLOCATE(upwd(klon, klev), omega(klon, klev))
     746      ALLOCATE(omega(klon, klev))
    724747      ALLOCATE(epmax_diag(klon)) ! epmax_cape
    725       ALLOCATE(ep(klon,klev)) ! epmax_cape
    726748!      ALLOCATE(coefm(klon, klev), lambda_th(klon, klev), cldemi(klon, klev))
    727749      ALLOCATE(lambda_th(klon, klev), cldemi(klon, klev))
     
    738760      ALLOCATE(wfevap(klon, nbsrf), wfrain(klon,nbsrf), wfsnow(klon, nbsrf))
    739761      ALLOCATE(evap_pot(klon, nbsrf))
    740 
    741       ALLOCATE(pmflxr(klon, klev+1), pmflxs(klon, klev+1), prfl(klon, klev+1))
     762!
     763!  Deep convective variables used in phytrac
     764      ALLOCATE(pmflxr(klon, klev+1), pmflxs(klon, klev+1))
     765      ALLOCATE(wdtrainA(klon,klev),wdtrainM(klon,klev))
     766      ALLOCATE(dnwd(klon, klev), upwd(klon, klev) )
     767      ALLOCATE(ep(klon,klev))                          ! epmax_cape
     768      ALLOCATE(da(klon,klev), mp(klon,klev) )
     769      ALLOCATE(phi(klon,klev,klev) )
     770      ALLOCATE(wght_cvfd(klon,klev) )
     771      ALLOCATE(phi2(klon,klev,klev) )
     772      ALLOCATE(d1a(klon,klev), dam(klon,klev))
     773      ALLOCATE(ev(klon,klev) )
     774      ALLOCATE(elij(klon,klev,klev) )
     775      ALLOCATE(clw(klon,klev) )
     776      ALLOCATE(epmlmMm(klon,klev,klev), eplaMm(klon,klev) )
     777      ALLOCATE(sij(klon,klev,klev) )
     778
     779      ALLOCATE(prfl(klon, klev+1))
    742780      ALLOCATE(psfl(klon, klev+1), fraca(klon, klev+1), Vprecip(klon, klev+1))
    743781      ALLOCATE(zw2(klon, klev+1))
     
    752790
    753791! ug et d'autres encore:
    754       ALLOCATE(wdtrainA(klon,klev),wdtrainM(klon,klev))
    755792      ALLOCATE(beta_prec(klon,klev))
    756793      ALLOCATE(rneb(klon,klev),rnebjn(klon,klev),rneblsvol(klon,klev))
     
    9961033      DEALLOCATE(proba_notrig, random_notrig)
    9971034
    998       DEALLOCATE(dnwd, dnwd0)
     1035      DEALLOCATE(dnwd0)
    9991036!      DEALLOCATE(upwd, omega, coefh)
    1000       DEALLOCATE(upwd, omega)
     1037      DEALLOCATE(omega)
    10011038      DEALLOCATE(epmax_diag)
    1002       DEALLOCATE(ep)
    10031039!      DEALLOCATE(coefm, lambda_th, cldemi)
    10041040      DEALLOCATE(lambda_th, cldemi)
     
    10151051      DEALLOCATE(wfevap,wfrain,wfsnow)
    10161052
    1017       DEALLOCATE(pmflxr, pmflxs, prfl)
    1018       DEALLOCATE(psfl, fraca, Vprecip)
     1053      DEALLOCATE(pmflxr, pmflxs)
     1054      DEALLOCATE(wdtrainA, wdtrainM)
     1055      DEALLOCATE(upwd, dnwd)
     1056      DEALLOCATE(ep)
     1057      DEALLOCATE(da, mp )
     1058      DEALLOCATE(phi )
     1059      DEALLOCATE(wght_cvfd )
     1060      DEALLOCATE(phi2 )
     1061      DEALLOCATE(d1a, dam)
     1062      DEALLOCATE(ev )
     1063      DEALLOCATE(elij )
     1064      DEALLOCATE(clw )
     1065      DEALLOCATE(epmlmMm, eplaMm )
     1066      DEALLOCATE(sij )
     1067
     1068
     1069      DEALLOCATE(prfl, psfl, fraca, Vprecip)
    10191070      DEALLOCATE(zw2)
    10201071
     
    10271078
    10281079! ug et d'autres encore:
    1029       DEALLOCATE(wdtrainA, wdtrainM)
    10301080      DEALLOCATE(beta_prec)
    10311081      DEALLOCATE(rneb)
Note: See TracChangeset for help on using the changeset viewer.