Ignore:
Timestamp:
Sep 20, 2006, 12:12:39 PM (18 years ago)
Author:
Laurent Fairhead
Message:

Nouvelles versions de la dynamique YM
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/V3_test/libf/dyn3dpar/calfis_p.F

    r630 r709  
    2323     $                  pdq,
    2424     $                  pw,
    25 #ifdef INCA_CH4
     25#ifdef INCA
    2626     $                  flxw,
    2727#endif
     
    4040      Use Write_field_p
    4141      USE Times
     42      USE IOPHY
    4243      IMPLICIT NONE
    4344c=======================================================================
     
    148149
    149150      INTEGER i,j,l,ig0,ig,iq,iiq
    150       REAL zpsrf(klon)
    151       REAL zplev(klon,llm+1),zplay(klon,llm)
    152       REAL zphi(klon,llm),zphis(klon)
    153 c
    154       REAL zufi(klon,llm), zvfi(klon,llm)
    155       REAL ztfi(klon,llm),zqfi(klon,llm,nqmx)
    156 c
    157       REAL pcvgu(klon,llm), pcvgv(klon,llm)
    158       REAL pcvgt(klon,llm), pcvgq(klon,llm,2)
    159 c
    160       REAL pvervel(klon,llm)
    161 c
    162       REAL zdufi(klon,llm),zdvfi(klon,llm)
    163       REAL zdtfi(klon,llm),zdqfi(klon,llm,nqmx)
    164       REAL zdpsrf(klon)
    165 c
     151      REAL,ALLOCATABLE,SAVE :: zpsrf(:)
     152      REAL,ALLOCATABLE,SAVE :: zplev(:,:),zplay(:,:)
     153      REAL,ALLOCATABLE,SAVE :: zphi(:,:),zphis(:)
     154c
     155      REAL,ALLOCATABLE,SAVE :: zufi(:,:), zvfi(:,:)
     156      REAL,ALLOCATABLE,SAVE :: ztfi(:,:),zqfi(:,:,:)
     157c
     158      REAL,ALLOCATABLE,SAVE :: pcvgu(:,:), pcvgv(:,:)
     159      REAL,ALLOCATABLE,SAVE :: pcvgt(:,:), pcvgq(:,:,:)
     160c
     161      REAL,ALLOCATABLE,SAVE :: pvervel(:,:)
     162c
     163      REAL,ALLOCATABLE,SAVE :: zdufi(:,:),zdvfi(:,:)
     164      REAL,ALLOCATABLE,SAVE :: zdtfi(:,:),zdqfi(:,:,:)
     165      REAL,ALLOCATABLE,SAVE :: zdpsrf(:)
     166c
     167      REAL,ALLOCATABLE,SAVE :: zplev_omp(:,:)
     168      REAL,ALLOCATABLE,SAVE :: zplay_omp(:,:)
     169      REAL,ALLOCATABLE,SAVE :: zphi_omp(:,:)
     170      REAL,ALLOCATABLE,SAVE :: zphis_omp(:)
     171      REAL,ALLOCATABLE,SAVE :: presnivs_omp(:)
     172      REAL,ALLOCATABLE,SAVE :: zufi_omp(:,:)
     173      REAL,ALLOCATABLE,SAVE :: zvfi_omp(:,:)
     174      REAL,ALLOCATABLE,SAVE :: ztfi_omp(:,:)
     175      REAL,ALLOCATABLE,SAVE :: zqfi_omp(:,:,:)
     176      REAL,ALLOCATABLE,SAVE :: pvervel_omp(:,:)
     177      REAL,ALLOCATABLE,SAVE :: zdufi_omp(:,:)
     178      REAL,ALLOCATABLE,SAVE :: zdvfi_omp(:,:)
     179      REAL,ALLOCATABLE,SAVE :: zdtfi_omp(:,:)
     180      REAL,ALLOCATABLE,SAVE :: zdqfi_omp(:,:,:)
     181      REAL,ALLOCATABLE,SAVE :: zdpsrf_omp(:)
     182
     183c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zphi_omp,zphis_omp,
     184c$OMP+                 presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp,
     185c$OMP+                 zqfi_omp,pvervel_omp,zdufi_omp,zdvfi_omp,
     186c$OMP+                 zdtfi_omp,zdqfi_omp,zdpsrf_omp)       
     187
     188      LOGICAL,SAVE :: first_omp=.true.
     189c$OMP THREADPRIVATE(first_omp)
     190     
    166191      REAL zsin(iim),zcos(iim),z1(iim)
    167192      REAL zsinbis(iim),zcosbis(iim),z1bis(iim)
    168193      REAL unskap, pksurcp
    169 
    170 #ifdef INCA_CH4
     194c
     195cIM diagnostique PVteta, Amip2
     196      INTEGER ntetaSTD
     197      PARAMETER(ntetaSTD=3)
     198      REAL rtetaSTD(ntetaSTD)
     199      DATA rtetaSTD/350., 380., 405./
     200      REAL PVteta(klon,ntetaSTD)
     201     
     202#ifdef INCA
    171203      REAL flxw(iip1,jjp1,llm)
    172204      REAL flxwfi(klon,llm)
     
    179211      DATA firstcal/.true./
    180212      SAVE firstcal,debut
     213c$OMP THREADPRIVATE(firstcal,debut)
    181214      REAL rdayvrai
    182215     
    183       REAL,dimension(1:iim,1:llm) :: du_send,du_recv,dv_send,dv_recv
     216      REAL,SAVE,dimension(1:iim,1:llm):: du_send,du_recv,dv_send,dv_recv
    184217      INTEGER :: ierr
    185218      INTEGER,dimension(MPI_STATUS_SIZE,4) :: Status
    186219      INTEGER, dimension(4) :: Req
    187       REAL zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm)
    188       integer :: k,kstart,kend     
     220      REAL,ALLOCATABLE,SAVE:: zdufi2(:,:),zdvfi2(:,:)
     221      integer :: k,kstart,kend
     222      INTEGER :: offset 
    189223c
    190224c-----------------------------------------------------------------------
     
    194228c
    195229
     230      klon=klon_mpi
     231     
     232      PVteta(:,:)=0.
     233           
    196234      IF (ngridmx.NE.2+(jjm-1)*iim) THEN
    197235         PRINT*,'STOP dans calfis'
     
    209247      IF ( firstcal )  THEN
    210248          debut = .TRUE.
     249c$OMP MASTER
     250      ALLOCATE(zpsrf(klon))
     251      ALLOCATE(zplev(klon,llm+1),zplay(klon,llm))
     252      ALLOCATE(zphi(klon,llm),zphis(klon))
     253      ALLOCATE(zufi(klon,llm), zvfi(klon,llm))
     254      ALLOCATE(ztfi(klon,llm),zqfi(klon,llm,nqmx))
     255      ALLOCATE(pcvgu(klon,llm), pcvgv(klon,llm))
     256      ALLOCATE(pcvgt(klon,llm), pcvgq(klon,llm,2))
     257      ALLOCATE(pvervel(klon,llm))
     258      ALLOCATE(zdufi(klon,llm),zdvfi(klon,llm))
     259      ALLOCATE(zdtfi(klon,llm),zdqfi(klon,llm,nqmx))
     260      ALLOCATE(zdpsrf(klon))
     261      ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm))
     262c$OMP END MASTER
     263c$OMP BARRIER     
    211264      ELSE
    212265          debut = .FALSE.
     
    222275c   ----------------------------------
    223276
     277c$OMP MASTER
    224278      call start_timer(timer_physic)
    225              
     279c$OMP END MASTER
     280
     281c$OMP MASTER             
    226282      do ig0=1,klon
    227283        i=Liste_i(ig0)
     
    229285        zpsrf(ig0)=pps(i,j)
    230286      enddo
    231 
     287c$OMP END MASTER
    232288
    233289
     
    243299       unskap   = 1./ kappa
    244300c
     301      print *,omp_rank,'klon--->',klon
     302c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    245303      DO l = 1, llmp1
    246304        do ig0=1,klon
     
    250308        enddo
    251309      ENDDO
     310c$OMP END DO NOWAIT
    252311c
    253312c
     
    255314c   43. temperature naturelle (en K) et pressions milieux couches .
    256315c   ---------------------------------------------------------------
    257 
     316c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    258317      DO l=1,llm
    259318
     
    268327
    269328      ENDDO
     329c$OMP END DO NOWAIT
    270330
    271331c   43.bis traceurs
     
    275335      DO iq=1,nq
    276336         iiq=niadv(iq)
     337c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    277338         DO l=1,llm
    278339           do ig0=1,klon
     
    282343           enddo
    283344         ENDDO
     345c$OMP END DO NOWAIT     
    284346      ENDDO
    285347
     
    287349
    288350      DO iq=1,2
     351c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    289352         DO l=1,llm
    290353           do ig0=1,klon
     
    294357           enddo
    295358         ENDDO
     359c$OMP END DO NOWAIT     
    296360      ENDDO
    297361
     
    302366
    303367      CALL gr_dyn_fi_p(llm,iip1,jjp1,klon,pphi,zphi)
     368
     369c$OMP MASTER
    304370      CALL gr_dyn_fi_p(1,iip1,jjp1,klon,pphis,zphis)
    305 
     371c$OMP END MASTER
     372c$OMP BARRIER
     373
     374c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    306375      DO l=1,llm
    307376         DO ig=1,klon
     
    309378         ENDDO
    310379      ENDDO
    311      
     380c$OMP END DO NOWAIT     
    312381c   ....  Calcul de la vitesse  verticale  ( en Pa*m*s  ou Kg/s )  ....
    313382c
    314        
     383c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)       
    315384      DO l=1,llm
    316385        do ig0=1,klon
     
    322391        if (pole_sud) pvervel(klon,l)=pw(1,jjp1,l)*g/apols
    323392      ENDDO
    324 
     393c$OMP END DO NOWAIT
    325394
    326395c
     
    334403      if (pole_sud) kend=klon-1
    335404     
     405c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    336406      DO l=1,llm
    337407        do ig0=kstart,kend
     
    351421        enddo
    352422      ENDDO
    353 
     423c$OMP END DO NOWAIT
    354424c   46.champ v:
    355425c   -----------
    356 
     426c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    357427      DO l=1,llm
    358428        DO ig0=kstart,kend
     
    366436         ENDDO
    367437      ENDDO
    368 
     438c$OMP END DO NOWAIT
    369439
    370440c   47. champs de vents aux pole nord   
     
    374444
    375445      if (pole_nord) then
    376      
     446c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    377447        DO l=1,llm
    378448
     
    397467 
    398468        ENDDO
    399      
     469c$OMP END DO NOWAIT     
    400470      endif
    401471
     
    407477
    408478      if (pole_sud) then
    409      
     479c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    410480        DO l=1,llm
    411481 
     
    430500
    431501        ENDDO
    432      
     502c$OMP END DO NOWAIT      
    433503      endif
    434504
    435505
    436 #ifdef INCA_CH4
     506      IF (monocpu) THEN
     507c
     508cIM calcul PV a teta=350, 380, 405K
     509        CALL PVtheta(ngridmx,llm,pucov,pvcov,pteta,
     510     $           ztfi,zplay,zplev,
     511     $           ntetaSTD,rtetaSTD,PVteta)
     512c
     513      ENDIF
     514#ifdef INCA
    437515      CALL gr_dyn_fi_p(llm,iip1,jjp1,klon,flxw,flxwfi)
    438516#endif
     
    443521c   ---------------------
    444522
    445 
     523cc$OMP  PARALLEL DEFAULT(NONE)
     524cc$OMP+ PRIVATE(i,l,offset,iq)
     525cc$OMP+ SHARED(klon_omp_nb,nq,klon_omp_begin,
     526cc$OMP+        debut,lafin,rdayvrai,heure,dtphys,zplev,zplay,
     527cc$OMP+        zphi,zphis,presnivs,clesphy0,zufi,zvfi,ztfi,
     528cc$OMP+        zqfi,pvervel,zdufi,zdvfi,zdtfi,zdqfi,zdpsrf)
     529
     530c PRIVATE(zplev_omp,zplay_omp,zphi_omp,zphis_omp,
     531c c$OMP+                 presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp,
     532c c$OMP+                 zqfi_omp,pvervel_omp,zdufi_omp,zdvfi_omp,
     533c c$OMP+                 zdtfi_omp,zdqfi_omp,zdpsrf_omp)
     534
     535c$OMP BARRIER
     536      if (first_omp) then
     537        klon=klon_omp_nb(omp_rank)
     538
     539        allocate(zplev_omp(klon,llm+1))
     540        allocate(zplay_omp(klon,llm))
     541        allocate(zphi_omp(klon,llm))
     542        allocate(zphis_omp(klon))
     543        allocate(presnivs_omp(llm))
     544        allocate(zufi_omp(klon,llm))
     545        allocate(zvfi_omp(klon,llm))
     546        allocate(ztfi_omp(klon,llm))
     547        allocate(zqfi_omp(klon,llm,nq))
     548        allocate(pvervel_omp(klon,llm))
     549        allocate(zdufi_omp(klon,llm))
     550        allocate(zdvfi_omp(klon,llm))
     551        allocate(zdtfi_omp(klon,llm))
     552        allocate(zdqfi_omp(klon,llm,nq))
     553        allocate(zdpsrf_omp(klon))
     554        first_omp=.false.
     555      endif
     556       
     557           
     558      klon=klon_omp_nb(omp_rank)
     559      offset=klon_omp_begin(omp_rank)-1
     560     
     561      do l=1,llm+1
     562        do i=1,klon
     563          zplev_omp(i,l)=zplev(offset+i,l)
     564        enddo
     565      enddo
     566         
     567       do l=1,llm
     568        do i=1,klon 
     569          zplay_omp(i,l)=zplay(offset+i,l)
     570        enddo
     571      enddo
     572       
     573      do l=1,llm
     574        do i=1,klon
     575          zphi_omp(i,l)=zphi(offset+i,l)
     576        enddo
     577      enddo
     578       
     579
     580      do i=1,klon
     581        zphis_omp(i)=zphis(offset+i)
     582      enddo
     583     
     584       
     585      do l=1,llm
     586        presnivs_omp(l)=presnivs(l)
     587      enddo
     588       
     589      do l=1,llm
     590        do i=1,klon
     591          zufi_omp(i,l)=zufi(offset+i,l)
     592        enddo
     593      enddo
     594       
     595      do l=1,llm
     596        do i=1,klon
     597          zvfi_omp(i,l)=zvfi(offset+i,l)
     598        enddo
     599      enddo
     600       
     601      do l=1,llm
     602        do i=1,klon
     603          ztfi_omp(i,l)=ztfi(offset+i,l)
     604        enddo
     605      enddo
     606       
     607      do iq=1,nq
     608        do l=1,llm
     609          do i=1,klon
     610            zqfi_omp(i,l,iq)=zqfi(offset+i,l,iq)
     611          enddo
     612        enddo
     613      enddo
     614       
     615      do l=1,llm
     616        do i=1,klon
     617          pvervel_omp(i,l)=pvervel(offset+i,l)
     618        enddo
     619      enddo
     620       
     621      do l=1,llm
     622        do i=1,klon
     623          zdufi_omp(i,l)=zdufi(offset+i,l)
     624        enddo
     625      enddo
     626       
     627      do l=1,llm
     628        do i=1,klon
     629          zdvfi_omp(i,l)=zdvfi(offset+i,l)
     630        enddo
     631      enddo
     632       
     633      do l=1,llm
     634        do i=1,klon
     635          zdtfi_omp(i,l)=zdtfi(offset+i,l)
     636        enddo
     637      enddo
     638       
     639      do iq=1,nq
     640        do l=1,llm
     641          do i=1,klon
     642            zdqfi_omp(i,l,iq)=zdqfi(offset+i,l,iq)
     643          enddo
     644        enddo
     645      enddo
     646       
     647      do i=1,klon
     648        zdpsrf_omp(i)=zdpsrf(offset+i)
     649      enddo
     650     
     651c$OMP BARRIER
     652cym      call WriteField_phy_p('zdtfi_omp',zdtfi_omp(:,:),llm)
     653     
    446654      CALL physiq (klon,
    447655     .             llm,
     
    452660     .             heure,
    453661     .             dtphys,
    454      .             zplev,
    455      .             zplay,
    456      .             zphi,
    457      .             zphis,
    458      .             presnivs,
     662     .             zplev_omp,
     663     .             zplay_omp,
     664     .             zphi_omp,
     665     .             zphis_omp,
     666     .             presnivs_omp,
    459667     .             clesphy0,
    460      .             zufi,
    461      .             zvfi,
    462      .             ztfi,
    463      .             zqfi,
    464      .             pvervel,
    465 #ifdef INCA_CH4
     668     .             zufi_omp,
     669     .             zvfi_omp,
     670     .             ztfi_omp,
     671     .             zqfi_omp,
     672     .             pvervel_omp,
     673#ifdef INCA
    466674     .             flxwfi,
    467675#endif
    468      .             zdufi,
    469      .             zdvfi,
    470      .             zdtfi,
    471      .             zdqfi,
    472      .             zdpsrf)
    473 
     676     .             zdufi_omp,
     677     .             zdvfi_omp,
     678     .             zdtfi_omp,
     679     .             zdqfi_omp,
     680     .             zdpsrf_omp,
     681cIM diagnostique PVteta, Amip2         
     682     .             pducov,
     683     .             PVteta)
     684
     685cym      call WriteField_phy_p('zdtfi_omp',zdtfi_omp(:,:),llm)
     686
     687c$OMP BARRIER
     688
     689      do l=1,llm+1
     690        do i=1,klon
     691          zplev(offset+i,l)=zplev_omp(i,l)
     692        enddo
     693      enddo
     694         
     695       do l=1,llm
     696        do i=1,klon 
     697          zplay(offset+i,l)=zplay_omp(i,l)
     698        enddo
     699      enddo
     700       
     701      do l=1,llm
     702        do i=1,klon
     703          zphi(offset+i,l)=zphi_omp(i,l)
     704        enddo
     705      enddo
     706       
     707
     708      do i=1,klon
     709        zphis(offset+i)=zphis_omp(i)
     710      enddo
     711     
     712       
     713      do l=1,llm
     714        presnivs(l)=presnivs_omp(l)
     715      enddo
     716       
     717      do l=1,llm
     718        do i=1,klon
     719          zufi(offset+i,l)=zufi_omp(i,l)
     720        enddo
     721      enddo
     722       
     723      do l=1,llm
     724        do i=1,klon
     725          zvfi(offset+i,l)=zvfi_omp(i,l)
     726        enddo
     727      enddo
     728       
     729      do l=1,llm
     730        do i=1,klon
     731          ztfi(offset+i,l)=ztfi_omp(i,l)
     732        enddo
     733      enddo
     734       
     735      do iq=1,nq
     736        do l=1,llm
     737          do i=1,klon
     738            zqfi(offset+i,l,iq)=zqfi_omp(i,l,iq)
     739          enddo
     740        enddo
     741      enddo
     742       
     743      do l=1,llm
     744        do i=1,klon
     745          pvervel(offset+i,l)=pvervel_omp(i,l)
     746        enddo
     747      enddo
     748       
     749      do l=1,llm
     750        do i=1,klon
     751          zdufi(offset+i,l)=zdufi_omp(i,l)
     752        enddo
     753      enddo
     754       
     755      do l=1,llm
     756        do i=1,klon
     757          zdvfi(offset+i,l)=zdvfi_omp(i,l)
     758        enddo
     759      enddo
     760       
     761      do l=1,llm
     762        do i=1,klon
     763          zdtfi(offset+i,l)=zdtfi_omp(i,l)
     764        enddo
     765      enddo
     766       
     767      do iq=1,nq
     768        do l=1,llm
     769          do i=1,klon
     770            zdqfi(offset+i,l,iq)=zdqfi_omp(i,l,iq)
     771          enddo
     772        enddo
     773      enddo
     774       
     775      do i=1,klon
     776        zdpsrf(offset+i)=zdpsrf_omp(i)
     777      enddo
     778     
     779
     780cc$OMP END PARALLEL
     781      klon=klon_mpi
    474782500   CONTINUE
    475 
     783c$OMP BARRIER
     784
     785c$OMP MASTER
     786cym      call WriteField_phy('zdtfi',zdtfi(:,:),llm)
    476787      call stop_timer(timer_physic)
     788c$OMP END MASTER
    477789     
    478790      if (MPI_rank>0) then
    479      
    480         du_send(1:iim,1:llm)=zdufi(1:iim,1:llm)
    481         dv_send(1:iim,1:llm)=zdvfi(1:iim,1:llm)
    482        
     791
     792c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)       
     793       DO l=1,llm     
     794        du_send(1:iim,l)=zdufi(1:iim,l)
     795        dv_send(1:iim,l)=zdvfi(1:iim,l)
     796       ENDDO
     797c$OMP END DO NOWAIT       
     798
     799c$OMP BARRIER
     800c$OMP MASTER
    483801        call MPI_ISSEND(du_send,iim*llm,MPI_REAL8,MPI_Rank-1,401,
    484      &                   MPI_COMM_WORLD,Req(1),ierr)
     802     &                   COMM_LMDZ,Req(1),ierr)
    485803        call MPI_ISSEND(dv_send,iim*llm,MPI_REAL8,MPI_Rank-1,402,
    486      &                  MPI_COMM_WORLD,Req(2),ierr)
     804     &                  COMM_LMDZ,Req(2),ierr)
     805c$OMP END MASTER
     806c$OMP BARRIER
    487807     
    488808      endif
    489809   
    490810      if (MPI_rank<MPI_Size-1) then
    491      
     811c$OMP BARRIER
     812c$OMP MASTER     
    492813        call MPI_IRECV(du_recv,iim*llm,MPI_REAL8,MPI_Rank+1,401,
    493      &                 MPI_COMM_WORLD,Req(3),ierr)
     814     &                 COMM_LMDZ,Req(3),ierr)
    494815        call MPI_IRECV(dv_recv,iim*llm,MPI_REAL8,MPI_Rank+1,402,
    495      &                 MPI_COMM_WORLD,Req(4),ierr)
    496      
     816     &                 COMM_LMDZ,Req(4),ierr)
     817c$OMP END MASTER
     818c$OMP BARRIER     
    497819      endif
    498    
     820
     821c$OMP BARRIER
     822c$OMP MASTER   
    499823      if (MPI_rank>0 .and. MPI_rank< MPI_Size-1) then
    500824        call MPI_WAITALL(4,Req(1),Status,ierr)
     
    504828        call MPI_WAITALL(2,Req(3),Status,ierr)
    505829      endif
    506      
    507       zdufi2(1:klon,:)=zdufi(1:klon,:)
    508       zdufi2(klon+1:klon+iim,:)=du_recv(1:iim,:)
    509          
    510       zdvfi2(1:klon,:)=zdvfi(1:klon,:)
    511       zdvfi2(klon+1:klon+iim,:)=dv_recv(1:iim,:)
    512 
    513        pdhfi(:,jjphy_begin,:)=0
    514        pdqfi(:,jjphy_begin,:,:)=0
    515        pdufi(:,jjphy_begin,:)=0
    516        pdvfi(:,jjphy_begin,:)=0
    517        pdpsfi(:,jjphy_begin)=0
    518 
     830c$OMP END MASTER
     831c$OMP BARRIER     
     832
     833c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     834      DO l=1,llm
     835           
     836        zdufi2(1:klon,l)=zdufi(1:klon,l)
     837        zdufi2(klon+1:klon+iim,l)=du_recv(1:iim,l)
     838           
     839        zdvfi2(1:klon,l)=zdvfi(1:klon,l)
     840        zdvfi2(klon+1:klon+iim,l)=dv_recv(1:iim,l)
     841 
     842         pdhfi(:,jjphy_begin,l)=0
     843         pdqfi(:,jjphy_begin,l,:)=0
     844         pdufi(:,jjphy_begin,l)=0
     845         pdvfi(:,jjphy_begin,l)=0
     846         
     847         if (.not. pole_sud) then
     848           pdhfi(:,jjphy_end,l)=0
     849           pdqfi(:,jjphy_end,l,:)=0
     850           pdufi(:,jjphy_end,l)=0
     851           pdvfi(:,jjphy_end,l)=0
     852         endif
     853     
     854       ENDDO
     855c$OMP END DO NOWAIT
     856
     857c$OMP MASTER
     858       pdpsfi(:,jjphy_begin)=0   
    519859       if (.not. pole_sud) then
    520          pdhfi(:,jjphy_end,:)=0
    521          pdqfi(:,jjphy_end,:,:)=0
    522          pdufi(:,jjphy_end,:)=0
    523          pdvfi(:,jjphy_end,:)=0
    524860         pdpsfi(:,jjphy_end)=0
    525861       endif
    526 
     862c$OMP END MASTER
    527863c-----------------------------------------------------------------------
    528864c   transformation des tendances physiques en tendances dynamiques:
     
    531867c  tendance sur la pression :
    532868c  -----------------------------------
    533 
     869c$OMP MASTER
    534870      CALL gr_fi_dyn_p(1,klon,iip1,jjp1,zdpsrf,pdpsfi)
     871c$OMP END MASTER
    535872c
    536873c   62. enthalpie potentielle
     
    543880      if (pole_sud)  kend=klon-1
    544881
     882c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    545883      DO l=1,llm
    546884
    547 !cdir NODEP
     885!!cdir NODEP
    548886        do ig0=kstart,kend
    549887          i=Liste_i(ig0)
     
    565903        endif
    566904      ENDDO
     905c$OMP END DO NOWAIT
    567906     
    568907c   62. humidite specifique
     
    570909
    571910      DO iq=1,nqmx
     911c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    572912         DO l=1,llm
    573 !cdir NODEP
     913!!cdir NODEP
    574914           do ig0=kstart,kend
    575915             i=Liste_i(ig0)
     
    592932           
    593933         ENDDO
     934c$OMP END DO NOWAIT
    594935      ENDDO
    595936
     
    597938c   ------------
    598939C     initialisation des tendances
    599       pdqfi=0.
     940
     941c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     942      DO l=1,llm
     943        pdqfi(:,:,l,:)=0.
     944      ENDDO
     945c$OMP END DO NOWAIT     
     946
    600947C
    601948
    602949      DO iq=1,nq
    603950         iiq=niadv(iq)
     951c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    604952         DO l=1,llm
    605953
    606 !cdir NODEP           
     954!!cdir NODEP           
    607955             DO ig0=kstart,kend
    608956              i=Liste_i(ig0)
     
    625973           
    626974         ENDDO
     975c$OMP END DO NOWAIT     
    627976      ENDDO
    628977     
    629978c   65. champ u:
    630979c   ------------
    631 
     980c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    632981      DO l=1,llm
    633 !cdir NODEP
     982!!cdir NODEP
    634983         do ig0=kstart,kend
    635984           i=Liste_i(ig0)
     
    643992              pdufi(iim,j,l)=0.5*(  zdufi2(ig0,l)
    644993     $                            + zdufi2(ig0+iim-1,l))*cu(iim,j)
    645               pdufi(iip1,j,l)=0.5*(zdufi2(ig0,l)+zdufi2(ig0+1,l))*cu(i,j)
     994             pdufi(iip1,j,l)=0.5*(zdufi2(ig0,l)+zdufi2(ig0+1,l))*cu(i,j)
    646995           endif
    647996         
     
    6611010         
    6621011      ENDDO
    663 
     1012c$OMP END DO NOWAIT
    6641013
    6651014c   67. champ v:
     
    6721021      if (pole_sud)  kend=klon-1-iim
    6731022     
     1023c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    6741024      DO l=1,llm
    675 !cdir NODEP
     1025!!cdir NODEP
    6761026        do ig0=kstart,kend
    6771027           i=Liste_i(ig0)
     
    6841034         
    6851035      ENDDO
     1036c$OMP END DO NOWAIT
    6861037
    6871038
     
    6911042
    6921043      if (pole_nord) then
    693        
     1044
     1045c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    6941046        DO l=1,llm
    6951047
     
    7051057
    7061058        ENDDO
     1059c$OMP END DO NOWAIT
    7071060
    7081061      endif   
    7091062     
    7101063      if (pole_sud) then
    711      
    712         DO l=1,llm
     1064
     1065c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     1066         DO l=1,llm
    7131067 
    7141068           DO i=1,iim
     
    7231077
    7241078        ENDDO
     1079c$OMP END DO NOWAIT
    7251080     
    7261081      endif
Note: See TracChangeset for help on using the changeset viewer.