Ignore:
Timestamp:
Jun 4, 2007, 4:34:47 PM (17 years ago)
Author:
Laurent Fairhead
Message:

Merge entre la version V3_conv et le HEAD
YM, JG, LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk/libf/phylmd/conema3.F

    r524 r766  
    99     .             qcond_incld)
    1010
     11      USE dimphy
    1112      IMPLICIT none
    1213c======================================================================
     
    5455c
    5556#include "dimensions.h"
    56 #include "dimphy.h"
     57cym#include "dimphy.h"
    5758#include "conema3.h"
    5859      INTEGER i, l,m,itra
     
    8485      REAL qcond_incld(klon,klev)
    8586c
    86       REAL em_t(klev)
    87       REAL em_q(klev)
    88       REAL em_qs(klev)
    89       REAL em_u(klev), em_v(klev), em_tra(klev,ntrac)
    90       REAL em_ph(klev+1), em_p(klev)
    91       REAL em_work1(klev), em_work2(klev)
    92       REAL em_precip, em_d_t(klev), em_d_q(klev)
    93       REAL em_d_u(klev), em_d_v(klev), em_d_tra(klev,ntrac)
    94       REAL em_upwd(klev), em_dnwd(klev), em_dnwdbis(klev)
     87      LOGICAL,SAVE :: first=.true.
     88c$OMP THREADPRIVATE(first)
     89     
     90cym      REAL em_t(klev)
     91      REAL,ALLOCATABLE,SAVE :: em_t(:)
     92c$OMP THREADPRIVATE(em_t) 
     93cym      REAL em_q(klev)
     94      REAL,ALLOCATABLE,SAVE :: em_q(:)
     95c$OMP THREADPRIVATE(em_q)
     96cym      REAL em_qs(klev)
     97      REAL,ALLOCATABLE,SAVE :: em_qs(:)
     98c$OMP THREADPRIVATE(em_qs) 
     99cym      REAL em_u(klev), em_v(klev), em_tra(klev,ntrac)
     100      REAL,ALLOCATABLE,SAVE :: em_u(:),em_v(:),em_tra(:,:)
     101c$OMP THREADPRIVATE(em_u,em_v,em_tra)     
     102cym      REAL em_ph(klev+1), em_p(klev)
     103      REAL,ALLOCATABLE,SAVE ::em_ph(:),em_p(:)
     104c$OMP THREADPRIVATE(em_ph,em_p)
     105cym      REAL em_work1(klev), em_work2(klev)
     106      REAL,ALLOCATABLE,SAVE ::em_work1(:),em_work2(:)
     107c$OMP THREADPRIVATE(em_work1,em_work2)     
     108cym      REAL em_precip, em_d_t(klev), em_d_q(klev)
     109      REAL,SAVE :: em_precip
     110c$OMP THREADPRIVATE(em_precip)     
     111      REAL,ALLOCATABLE,SAVE :: em_d_t(:),em_d_q(:)
     112c$OMP THREADPRIVATE(em_d_t,em_d_q)
     113cym      REAL em_d_u(klev), em_d_v(klev), em_d_tra(klev,ntrac)
     114      REAL,ALLOCATABLE,SAVE ::em_d_u(:),em_d_v(:),em_d_tra(:,:)
     115c$OMP THREADPRIVATE(em_d_u,em_d_v,em_d_tra)     
     116cym      REAL em_upwd(klev), em_dnwd(klev), em_dnwdbis(klev)
     117      REAL,ALLOCATABLE,SAVE :: em_upwd(:),em_dnwd(:),em_dnwdbis(:)
     118c$OMP THREADPRIVATE(em_upwd,em_dnwd,em_dnwdbis)
    95119      REAL em_dtvpdt1(klev), em_dtvpdq1(klev)
    96120      REAL em_dplcldt, em_dplcldr
    97       SAVE em_t,em_q, em_qs, em_ph, em_p, em_work1, em_work2
    98       SAVE em_u,em_v, em_tra
    99       SAVE em_d_u,em_d_v, em_d_tra
    100       SAVE em_precip, em_d_t, em_d_q, em_upwd, em_dnwd, em_dnwdbis
     121cym      SAVE em_t,em_q, em_qs, em_ph, em_p, em_work1, em_work2
     122cym      SAVE em_u,em_v, em_tra
     123cym      SAVE em_d_u,em_d_v, em_d_tra
     124cym      SAVE em_precip, em_d_t, em_d_q, em_upwd, em_dnwd, em_dnwdbis
     125
    101126      INTEGER em_bas, em_top
    102127      SAVE em_bas, em_top
    103 
     128c$OMP THREADPRIVATE(em_bas,em_top)
    104129      REAL em_wd
    105130      REAL em_qcond(klev)
     
    113138cccccccccccccccccccccccccccccccccccccccccccccccccc
    114139 
    115       REAL emmip(klev) !variation de flux ascnon dilue i et i+1
    116       SAVE emmip
    117       real emMke(klev)
    118       save emMke
     140cym      REAL emmip(klev) !variation de flux ascnon dilue i et i+1
     141      REAL,ALLOCATABLE,SAVE ::emmip(:)
     142c$OMP THREADPRIVATE(emmip)
     143cym      SAVE emmip
     144cym      real emMke(klev)
     145      REAL,ALLOCATABLE,SAVE ::emMke(:)
     146c$OMP THREADPRIVATE(emMke)
     147cym      save emMke
    119148      real top
    120149      real bas
    121       real emMa(klev)
    122       save emMa
     150cym      real emMa(klev)
     151      REAL,ALLOCATABLE,SAVE ::emMa(:)
     152c$OMP THREADPRIVATE(emMa)
     153cym      save emMa
    123154      real Ma(klon,klev)
    124155      real Ment(klev,klev)
     
    151182#include "YOETHF.h"
    152183#include "FCTTRE.h"
    153  
     184     
     185      if (first) then
     186 
     187        allocate(em_t(klev))
     188        allocate(em_q(klev))
     189        allocate(em_qs(klev))
     190        allocate(em_u(klev), em_v(klev), em_tra(klev,ntrac))
     191        allocate(em_ph(klev+1), em_p(klev))
     192        allocate(em_work1(klev), em_work2(klev))
     193        allocate(em_d_t(klev), em_d_q(klev))
     194        allocate(em_d_u(klev), em_d_v(klev), em_d_tra(klev,ntrac))
     195        allocate(em_upwd(klev), em_dnwd(klev), em_dnwdbis(klev))
     196        allocate(emmip(klev))
     197        allocate(emMke(klev))
     198        allocate(emMa(klev))
     199 
     200        first=.false.
     201      endif
     202 
    154203      qcond_incld(:,:) = 0.
    155204c
    156 c$$$      print*,'debut conema'
     205c@$$      print*,'debut conema'
    157206
    158207      DO 999 i = 1, klon
     
    170219          em_tra(l,itra) = tra(i,l,itra)
    171220         enddo
    172 c$$$      print*,'em_t',em_t
    173 c$$$      print*,'em_q',em_q
    174 c$$$      print*,'em_qs',em_qs
    175 c$$$      print*,'em_u',em_u
    176 c$$$      print*,'em_v',em_v
    177 c$$$      print*,'em_tra',em_tra
    178 c$$$      print*,'em_p',em_p
     221c@$$      print*,'em_t',em_t
     222c@$$      print*,'em_q',em_q
     223c@$$      print*,'em_qs',em_qs
     224c@$$      print*,'em_u',em_u
     225c@$$      print*,'em_v',em_v
     226c@$$      print*,'em_tra',em_tra
     227c@$$      print*,'em_p',em_p
    179228
    180229 
     
    184233         zx_qs= r2es * FOEEW(zx_t,zdelta)/em_p(l)/100.0
    185234         zx_qs=MIN(0.5,zx_qs)
    186 c$$$       print*,'zx_qs',zx_qs
     235c@$$       print*,'zx_qs',zx_qs
    187236         zcor=1./(1.-retv*zx_qs)
    188237         zx_qs=zx_qs*zcor
    189238         em_qs(l) = zx_qs
    190 c$$$      print*,'em_qs',em_qs
     239c@$$      print*,'em_qs',em_qs
    191240c
    192241         em_work1(l) = work1(i,l)
     
    2192681793  format('w avant convect ',/,10(1X,E13.5))
    220269 
    221 c$$$      print*,'avant convect'
     270c@$$      print*,'avant convect'
    222271ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    223272c
Note: See TracChangeset for help on using the changeset viewer.