Ignore:
Timestamp:
May 4, 2005, 5:11:29 PM (19 years ago)
Author:
Laurent Fairhead
Message:

Modifications faites à la physique pour la rendre parallele YM
Une branche de travail LMDZ4_par_0 a été créée provisoirement afin de tester
les modifs pleinement avant leurs inclusions dans le tronc principal
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4_par_0/libf/phylmd/conema3.F

    r524 r634  
    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.
     88cym      REAL em_t(klev)
     89      REAL,ALLOCATABLE,SAVE :: em_t(:)
     90cym      REAL em_q(klev)
     91      REAL,ALLOCATABLE,SAVE :: em_q(:)
     92cym      REAL em_qs(klev)
     93      REAL,ALLOCATABLE,SAVE :: em_qs(:) 
     94cym      REAL em_u(klev), em_v(klev), em_tra(klev,ntrac)
     95      REAL,ALLOCATABLE,SAVE :: em_u(:),em_v(:),em_tra(:,:)
     96cym      REAL em_ph(klev+1), em_p(klev)
     97      REAL,ALLOCATABLE,SAVE ::em_ph(:),em_p(:)
     98cym      REAL em_work1(klev), em_work2(klev)
     99      REAL,ALLOCATABLE,SAVE ::em_work1(:),em_work2(:)
     100cym      REAL em_precip, em_d_t(klev), em_d_q(klev)
     101      REAL,SAVE :: em_precip
     102      REAL,ALLOCATABLE,SAVE :: em_d_t(:),em_d_q(:)
     103cym      REAL em_d_u(klev), em_d_v(klev), em_d_tra(klev,ntrac)
     104      REAL,ALLOCATABLE,SAVE ::em_d_u(:),em_d_v(:),em_d_tra(:,:)
     105cym      REAL em_upwd(klev), em_dnwd(klev), em_dnwdbis(klev)
     106      REAL,ALLOCATABLE,SAVE :: em_upwd(:),em_dnwd(:),em_dnwdbis(:)
    95107      REAL em_dtvpdt1(klev), em_dtvpdq1(klev)
    96108      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
     109cym      SAVE em_t,em_q, em_qs, em_ph, em_p, em_work1, em_work2
     110cym      SAVE em_u,em_v, em_tra
     111cym      SAVE em_d_u,em_d_v, em_d_tra
     112cym      SAVE em_precip, em_d_t, em_d_q, em_upwd, em_dnwd, em_dnwdbis
     113
    101114      INTEGER em_bas, em_top
    102115      SAVE em_bas, em_top
     
    113126cccccccccccccccccccccccccccccccccccccccccccccccccc
    114127 
    115       REAL emmip(klev) !variation de flux ascnon dilue i et i+1
    116       SAVE emmip
    117       real emMke(klev)
    118       save emMke
     128cym      REAL emmip(klev) !variation de flux ascnon dilue i et i+1
     129      REAL,ALLOCATABLE,SAVE ::emmip(:)
     130cym      SAVE emmip
     131cym      real emMke(klev)
     132      REAL,ALLOCATABLE,SAVE ::emMke(:)
     133cym      save emMke
    119134      real top
    120135      real bas
    121       real emMa(klev)
    122       save emMa
     136cym      real emMa(klev)
     137      REAL,ALLOCATABLE,SAVE ::emMa(:)
     138cym      save emMa
    123139      real Ma(klon,klev)
    124140      real Ment(klev,klev)
     
    151167#include "YOETHF.h"
    152168#include "FCTTRE.h"
    153  
     169     
     170      if (first) then
     171 
     172        allocate(em_t(klev))
     173        allocate(em_q(klev))
     174        allocate(em_qs(klev))
     175        allocate(em_u(klev), em_v(klev), em_tra(klev,ntrac))
     176        allocate(em_ph(klev+1), em_p(klev))
     177        allocate(em_work1(klev), em_work2(klev))
     178        allocate(em_d_t(klev), em_d_q(klev))
     179        allocate(em_d_u(klev), em_d_v(klev), em_d_tra(klev,ntrac))
     180        allocate(em_upwd(klev), em_dnwd(klev), em_dnwdbis(klev))
     181        allocate(emmip(klev))
     182        allocate(emMke(klev))
     183        allocate(emMa(klev))
     184 
     185        first=.false.
     186      endif
     187 
    154188      qcond_incld(:,:) = 0.
    155189c
Note: See TracChangeset for help on using the changeset viewer.