Ignore:
Timestamp:
Sep 29, 2016, 11:26:46 PM (8 years ago)
Author:
Laurent Fairhead
Message:

Merged trunk changes r2593:2640 into testing branch

Location:
LMDZ5/branches/testing
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/testing

  • LMDZ5/branches/testing/libf/dynphy_lonlat/calfis_loc.F

    r2435 r2641  
    5050      USE callphysiq_mod, ONLY: call_physiq
    5151#endif
     52      USE comvert_mod, ONLY: preff, presnivs
     53      USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, kappa, pi
    5254
    5355#ifdef CPP_PARA
     
    107109c    ------------------
    108110
    109 #include "dimensions.h"
    110 #include "paramet.h"
    111 #include "temps.h"
     111      include "dimensions.h"
     112      include "paramet.h"
    112113
    113114      INTEGER ngridmx
    114115      PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm   )
    115116
    116 #include "comconst.h"
    117 #include "comvert.h"
    118 #include "comgeom2.h"
    119 #include "iniprint.h"
     117      include "comgeom2.h"
     118      include "iniprint.h"
    120119#ifdef CPP_MPI
    121120      include 'mpif.h'
     
    163162      REAL,ALLOCATABLE,SAVE :: zufi(:,:), zvfi(:,:), zrfi(:,:)
    164163      REAL,ALLOCATABLE,SAVE :: ztfi(:,:),zqfi(:,:,:)
     164      REAL,ALLOCATABLE,SAVE ::  zpk(:,:)
    165165c
    166166      REAL,ALLOCATABLE,SAVE :: pcvgu(:,:), pcvgv(:,:)
     
    175175      REAL,ALLOCATABLE,SAVE :: zplev_omp(:,:)
    176176      REAL,ALLOCATABLE,SAVE :: zplay_omp(:,:)
     177      REAL,ALLOCATABLE,SAVE :: zpk_omp(:,:)
    177178      REAL,ALLOCATABLE,SAVE :: zphi_omp(:,:)
    178179      REAL,ALLOCATABLE,SAVE :: zphis_omp(:)
     
    212213!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    213214
    214 c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zphi_omp,zphis_omp,
     215c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zpk_omp,zphi_omp,zphis_omp,
    215216c$OMP+                 presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp,
    216217c$OMP+                 zrfi_omp,zqfi_omp,zdufi_omp,zdvfi_omp,
     
    276277      ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm))
    277278      ALLOCATE(flxwfi(klon,llm))
     279      ALLOCATE(zpk(klon,llm))
    278280c$OMP END MASTER
    279 c$OMP BARRIER    
     281c$OMP BARRIER         
    280282      ELSE
    281283          debut = .FALSE.
     
    329331      ENDDO
    330332c$OMP END DO NOWAIT
     333
     334c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     335      DO l=1,llm
     336        do ig0=1,klon
     337          i=index_i(ig0)
     338          j=index_j(ig0)
     339          zpk(ig0,l)=ppk(i,j,l)
     340        enddo
     341      ENDDO
     342c$OMP END DO NOWAIT
     343
    331344c
    332345c
     
    365378           enddo
    366379         ENDDO
    367 c$OMP END DO NOWAIT     
     380c$OMP END DO NOWAIT       
    368381      ENDDO
    369382
     
    382395           enddo
    383396         ENDDO
    384 c$OMP END DO NOWAIT     
     397c$OMP END DO NOWAIT       
    385398
    386399c      CALL gr_dyn_fi_p(llm,iip1,jjp1,klon,pphi,zphi)
     
    403416c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    404417      DO l=1,llm
    405         DO ig=1,klon
    406            zphi(ig,l)=zphi(ig,l)-zphis(ig)
    407         ENDDO
     418        DO ig=1,klon
     419           zphi(ig,l)=zphi(ig,l)-zphis(ig)
     420        ENDDO
    408421      ENDDO
    409422c$OMP END DO NOWAIT
     
    532545           DO i=2,iim
    533546             z1(i)   =(rlonu(i)-rlonu(i-1))*pvcov(i,jjm,l)/cv(i,jjm)
    534            ENDDO
     547           ENDDO
    535548 
    536549           DO i=1,iim
    537550              zcos(i)    = COS(rlonv(i))*z1(i)
    538551              zsin(i)    = SIN(rlonv(i))*z1(i)
    539            ENDDO
     552           ENDDO
    540553 
    541554           zufi(klon,l)  = SSUM(iim,zcos,1)/pi
     
    572585        allocate(zplev_omp(klon,llm+1))
    573586        allocate(zplay_omp(klon,llm))
     587        allocate(zpk_omp(klon,llm))
    574588        allocate(zphi_omp(klon,llm))
    575589        allocate(zphis_omp(klon))
     
    590604        allocate(zdpsrf_omp(klon))
    591605        allocate(flxwfi_omp(klon,llm))
    592         first_omp=.false.
     606        first_omp=.false.
    593607      endif
    594608       
    595            
     609           
    596610      klon=klon_omp
    597611      offset=klon_omp_begin-1
     
    600614        do i=1,klon
    601615          zplev_omp(i,l)=zplev(offset+i,l)
    602         enddo
    603       enddo
    604          
     616        enddo
     617      enddo
     618         
    605619       do l=1,llm
    606620        do i=1,klon 
    607           zplay_omp(i,l)=zplay(offset+i,l)
     621          zplay_omp(i,l)=zplay(offset+i,l)
     622        enddo
     623      enddo
     624       
     625       do l=1,llm
     626        do i=1,klon 
     627          zpk_omp(i,l)=zpk(offset+i,l)
    608628        enddo
    609629      enddo
     
    611631      do l=1,llm
    612632        do i=1,klon
    613           zphi_omp(i,l)=zphi(offset+i,l)
    614         enddo
    615       enddo
    616        
     633          zphi_omp(i,l)=zphi(offset+i,l)
     634        enddo
     635      enddo
     636       
    617637      do i=1,klon
    618         zphis_omp(i)=zphis(offset+i)
     638        zphis_omp(i)=zphis(offset+i)
    619639      enddo
    620640     
    621        
     641       
    622642      do l=1,llm
    623643        presnivs_omp(l)=presnivs(l)
    624644      enddo
    625        
    626       do l=1,llm
    627         do i=1,klon
    628           zufi_omp(i,l)=zufi(offset+i,l)
    629         enddo
    630       enddo
    631        
    632       do l=1,llm
    633         do i=1,klon
    634           zvfi_omp(i,l)=zvfi(offset+i,l)
    635         enddo
    636       enddo
    637        
    638       do l=1,llm
    639         do i=1,klon
    640           zrfi_omp(i,l)=zrfi(offset+i,l)
    641         enddo
    642       enddo
    643        
    644       do l=1,llm
    645         do i=1,klon
    646           ztfi_omp(i,l)=ztfi(offset+i,l)
    647         enddo
    648       enddo
    649        
     645       
     646      do l=1,llm
     647        do i=1,klon
     648          zufi_omp(i,l)=zufi(offset+i,l)
     649        enddo
     650      enddo
     651       
     652      do l=1,llm
     653        do i=1,klon
     654          zvfi_omp(i,l)=zvfi(offset+i,l)
     655        enddo
     656      enddo
     657       
     658      do l=1,llm
     659        do i=1,klon
     660          zrfi_omp(i,l)=zrfi(offset+i,l)
     661        enddo
     662      enddo
     663       
     664      do l=1,llm
     665        do i=1,klon
     666          ztfi_omp(i,l)=ztfi(offset+i,l)
     667        enddo
     668      enddo
     669       
    650670      do iq=1,nqtot
    651671        do l=1,llm
    652672          do i=1,klon
    653673            zqfi_omp(i,l,iq)=zqfi(offset+i,l,iq)
    654           enddo
    655         enddo
    656       enddo
    657        
    658       do l=1,llm
    659         do i=1,klon
    660           zdufi_omp(i,l)=zdufi(offset+i,l)
    661         enddo
    662       enddo
    663        
    664       do l=1,llm
    665         do i=1,klon
    666           zdvfi_omp(i,l)=zdvfi(offset+i,l)
    667         enddo
    668       enddo
    669        
     674          enddo
     675        enddo
     676      enddo
     677       
     678      do l=1,llm
     679        do i=1,klon
     680          zdufi_omp(i,l)=zdufi(offset+i,l)
     681        enddo
     682      enddo
     683       
     684      do l=1,llm
     685        do i=1,klon
     686          zdvfi_omp(i,l)=zdvfi(offset+i,l)
     687        enddo
     688      enddo
     689       
    670690      do l=1,llm
    671691        do i=1,klon
    672692          zdtfi_omp(i,l)=zdtfi(offset+i,l)
    673         enddo
    674       enddo
    675        
     693        enddo
     694      enddo
     695       
    676696      do iq=1,nqtot
    677697        do l=1,llm
    678698          do i=1,klon
    679             zdqfi_omp(i,l,iq)=zdqfi(offset+i,l,iq)
    680           enddo
     699            zdqfi_omp(i,l,iq)=zdqfi(offset+i,l,iq)
     700          enddo
    681701        enddo
    682702      enddo
    683        
     703             
    684704      do i=1,klon
    685         zdpsrf_omp(i)=zdpsrf(offset+i)
     705        zdpsrf_omp(i)=zdpsrf(offset+i)
    686706      enddo
    687707
     
    689709        do i=1,klon
    690710          flxwfi_omp(i,l)=flxwfi(offset+i,l)
    691         enddo
     711        enddo
    692712      enddo
    693713     
     
    715735     &                   jD_cur,jH_cur_split,zdt_split,
    716736     &                   zplev_omp,zplay_omp,
    717      &                   zphi_omp,zphis_omp,
     737     &                   zpk_omp,zphi_omp,zphis_omp,
    718738     &                   presnivs_omp,
    719739     &                   zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp,
     
    749769        do i=1,klon
    750770          zplev(offset+i,l)=zplev_omp(i,l)
    751         enddo
    752       enddo
    753          
     771        enddo
     772      enddo
     773         
    754774       do l=1,llm
    755775        do i=1,klon 
    756           zplay(offset+i,l)=zplay_omp(i,l)
    757         enddo
    758       enddo
    759        
    760       do l=1,llm
    761         do i=1,klon
    762           zphi(offset+i,l)=zphi_omp(i,l)
    763         enddo
    764       enddo
    765        
     776          zplay(offset+i,l)=zplay_omp(i,l)
     777        enddo
     778      enddo
     779       
     780      do l=1,llm
     781        do i=1,klon
     782          zphi(offset+i,l)=zphi_omp(i,l)
     783        enddo
     784      enddo
     785       
    766786
    767787      do i=1,klon
    768         zphis(offset+i)=zphis_omp(i)
     788        zphis(offset+i)=zphis_omp(i)
    769789      enddo
    770790     
    771        
     791       
    772792      do l=1,llm
    773793        presnivs(l)=presnivs_omp(l)
    774794      enddo
    775        
    776       do l=1,llm
    777         do i=1,klon
    778           zufi(offset+i,l)=zufi_omp(i,l)
    779         enddo
    780       enddo
    781        
    782       do l=1,llm
    783         do i=1,klon
    784           zvfi(offset+i,l)=zvfi_omp(i,l)
    785         enddo
    786       enddo
    787        
    788       do l=1,llm
    789         do i=1,klon
    790           ztfi(offset+i,l)=ztfi_omp(i,l)
    791         enddo
    792       enddo
    793        
     795       
     796      do l=1,llm
     797        do i=1,klon
     798          zufi(offset+i,l)=zufi_omp(i,l)
     799        enddo
     800      enddo
     801       
     802      do l=1,llm
     803        do i=1,klon
     804          zvfi(offset+i,l)=zvfi_omp(i,l)
     805        enddo
     806      enddo
     807       
     808      do l=1,llm
     809        do i=1,klon
     810          ztfi(offset+i,l)=ztfi_omp(i,l)
     811        enddo
     812      enddo
     813       
    794814      do iq=1,nqtot
    795815        do l=1,llm
    796816          do i=1,klon
    797817            zqfi(offset+i,l,iq)=zqfi_omp(i,l,iq)
    798           enddo
    799         enddo
    800       enddo
    801        
    802       do l=1,llm
    803         do i=1,klon
    804           zdufi(offset+i,l)=zdufi_omp(i,l)
    805         enddo
    806       enddo
    807        
    808       do l=1,llm
    809         do i=1,klon
    810           zdvfi(offset+i,l)=zdvfi_omp(i,l)
    811         enddo
    812       enddo
    813        
     818          enddo
     819        enddo
     820      enddo
     821       
     822      do l=1,llm
     823        do i=1,klon
     824          zdufi(offset+i,l)=zdufi_omp(i,l)
     825        enddo
     826      enddo
     827       
     828      do l=1,llm
     829        do i=1,klon
     830          zdvfi(offset+i,l)=zdvfi_omp(i,l)
     831        enddo
     832      enddo
     833       
    814834      do l=1,llm
    815835        do i=1,klon
    816836          zdtfi(offset+i,l)=zdtfi_omp(i,l)
    817         enddo
    818       enddo
    819        
     837        enddo
     838      enddo
     839       
    820840      do iq=1,nqtot
    821841        do l=1,llm
    822842          do i=1,klon
    823             zdqfi(offset+i,l,iq)=zdqfi_omp(i,l,iq)
    824           enddo
     843            zdqfi(offset+i,l,iq)=zdqfi_omp(i,l,iq)
     844          enddo
    825845        enddo
    826846      enddo
    827        
     847             
    828848      do i=1,klon
    829         zdpsrf(offset+i)=zdpsrf_omp(i)
     849        zdpsrf(offset+i)=zdpsrf_omp(i)
    830850      enddo
    831851     
     
    929949       
    930950       if (.not. is_south_pole_dyn) then
    931         pdpsfi(:,jj_end:jj_end+1)=0
     951        pdpsfi(:,jj_end:jj_end+1)=0
    932952       endif
    933953c$OMP END MASTER
     
    10451065        pdqfi(:,jj_begin:jj_end,l,:)=0.
    10461066      ENDDO
    1047 c$OMP END DO NOWAIT     
     1067c$OMP END DO NOWAIT       
    10481068
    10491069C
     
    10561076!CDIR ON_ADB(index_j)
    10571077!cdir NODEP           
    1058              DO ig0=kstart,kend
     1078             DO ig0=kstart,kend
    10591079              i=index_i(ig0)
    10601080              j=index_j(ig0)
     
    10621082              if (i==1) pdqfi(iip1,j,l,iiq) = zdqfi(ig0,l,iq)
    10631083            ENDDO
    1064            
    1065             IF (is_north_pole_dyn) then
    1066               DO i=1,iip1
     1084           
     1085            IF (is_north_pole_dyn) then
     1086              DO i=1,iip1
    10671087                pdqfi(i,1,l,iiq)    = zdqfi(1,l,iq)
    1068               ENDDO
    1069             ENDIF
    1070            
    1071             IF (is_south_pole_dyn) then
    1072               DO i=1,iip1
     1088              ENDDO
     1089            ENDIF
     1090           
     1091            IF (is_south_pole_dyn) then
     1092              DO i=1,iip1
    10731093                pdqfi(i,jjp1,l,iiq) = zdqfi(klon,l,iq)
    1074               ENDDO
    1075             ENDIF
    1076            
     1094              ENDDO
     1095            ENDIF
     1096           
    10771097         ENDDO
    1078 c$OMP END DO NOWAIT     
     1098c$OMP END DO NOWAIT       
    10791099      ENDDO
    10801100     
     
    11361156           pdvfi(i,j,l)=0.5*(zdvfi2(ig0,l)+zdvfi2(ig0+iim,l))*cv(i,j)
    11371157           if (i==1) pdvfi(iip1,j,l) = 0.5*(zdvfi2(ig0,l)+
    1138      $                                      zdvfi2(ig0+iim,l))
    1139      $                                    *cv(i,j)
     1158     $                                            zdvfi2(ig0+iim,l))
     1159     $                                          *cv(i,j)
    11401160        enddo
    11411161         
Note: See TracChangeset for help on using the changeset viewer.