Ignore:
Timestamp:
Jun 4, 2007, 4:13:10 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/dyn3dpar/vlsplt_p.F

    r630 r764  
    228228      REAL u_mq(ip1jmp1,llm)
    229229
    230       Logical extremum,first,testcpu
    231       SAVE first,testcpu
     230      Logical extremum
    232231
    233232      REAL      SSUM
    234233      EXTERNAL  SSUM
    235       REAL temps0,temps1,temps2,temps3,temps4,temps5,second
    236       SAVE temps0,temps1,temps2,temps3,temps4,temps5
    237234
    238235      REAL z1,z2,z3
    239236
    240       DATA first,testcpu/.true.,.false./
    241237      INTEGER ijb,ije,ijb_x,ije_x
    242238     
    243       IF(first) THEN
    244          temps1=0.
    245          temps2=0.
    246          temps3=0.
    247          temps4=0.
    248          temps5=0.
    249          first=.false.
    250       ENDIF
    251 
    252239c   calcul de la pente a droite et a gauche de la maille
    253240
     
    265252
    266253c   calcul de la pente aux points u
    267          
     254c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)         
    268255         DO l = 1, llm
    269256           
     
    315302
    316303         ENDDO ! l=1,llm
     304c$OMP END DO NOWAIT
    317305c       print*,'Ok calcul des pentes'
    318306
     
    321309c   Pentes produits:
    322310c   ----------------
    323 
     311c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    324312         DO l = 1, llm
    325313            DO ij=ijb,ije-1
     
    342330
    343331         ENDDO
    344 
     332c$OMP END DO NOWAIT
    345333      ENDIF ! (pente_max.lt.-1.e-5)
    346334
    347335c   bouclage de la pente en iip1:
    348336c   -----------------------------
    349 
     337c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    350338      DO l=1,llm
    351339         DO ij=ijb+iip1-1,ije,iip1
    352340            dxq(ij-iim,l)=dxq(ij,l)
    353341         ENDDO
    354          DO ij=1,ip1jmp1
     342         DO ij=ijb,ije
    355343            iadvplus(ij,l)=0
    356344         ENDDO
    357345
    358346      ENDDO
    359 
     347c$OMP END DO NOWAIT
    360348c        print*,'Bouclage en iip1'
    361349
     
    363351
    364352#ifdef CRAY
    365 
     353c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    366354      DO l=1,llm
    367355       DO ij=ijb,ije-1
     
    377365       ENDDO
    378366      ENDDO
     367c$OMP END DO NOWAIT
    379368#else
    380369c   on cumule le flux correspondant a toutes les mailles dont la masse
    381370c   au travers de la paroi pENDant le pas de temps.
    382371c       print*,'Cumule ....'
    383 
     372c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    384373      DO l=1,llm
    385374       DO ij=ijb,ije-1
     
    394383       ENDDO
    395384      ENDDO
     385c$OMP END DO NOWAIT
    396386#endif
    397387c       stop
     
    400390c   detection des points ou on advecte plus que la masse de la
    401391c   maille
     392c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    402393      DO l=1,llm
    403394         DO ij=ijb,ije-1
     
    408399         ENDDO
    409400      ENDDO
     401c$OMP END DO NOWAIT
    410402c       print*,'Ok test 1'
     403c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    411404      DO l=1,llm
    412405       DO ij=ijb+iip1-1,ije,iip1
     
    414407       ENDDO
    415408      ENDDO
     409c$OMP END DO NOWAIT
    416410c        print*,'Ok test 2'
    417411
     
    424418
    425419      n0=0
     420c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    426421      DO l=1,llm
    427422         nl(l)=0
     
    431426         n0=n0+nl(l)
    432427      ENDDO
    433 
     428c$OMP END DO NOWAIT
    434429cym      IF(n0.gt.1) THEN
    435       IF(n0.gt.0) THEN
     430cym      IF(n0.gt.0) THEN
    436431
    437432c      PRINT*,'Nombre de points pour lesquels on advect plus que le'
    438433c     &       ,'contenu de la maille : ',n0
    439 
     434c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    440435         DO l=1,llm
    441436            IF(nl(l).gt.0) THEN
     
    487482            ENDIF
    488483         ENDDO
    489       ENDIF  ! n0.gt.0
     484c$OMP END DO NOWAIT
     485cym      ENDIF  ! n0.gt.0
    4904869999    continue
    491487
     
    493489c   bouclage en latitude
    494490c       print*,'Avant bouclage en latitude'
     491c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    495492      DO l=1,llm
    496493        DO ij=ijb+iip1-1,ije,iip1
     
    498495        ENDDO
    499496      ENDDO
    500 
     497c$OMP END DO NOWAIT
    501498
    502499c   calcul des tENDances
    503 
     500c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    504501      DO l=1,llm
    505502         DO ij=ijb+1,ije
     
    516513         ENDDO
    517514      ENDDO
     515c$OMP END DO NOWAIT
    518516c     CALL SCOPY((jjm-1)*llm,q(iip1+iip1,1),iip1,q(iip2,1),iip1)
    519517c     CALL SCOPY((jjm-1)*llm,masse(iip1+iip1,1),iip1,masse(iip2,1),iip1)
     
    568566      REAL temps0,temps1,temps2,temps3,temps4,temps5,second
    569567      SAVE temps0,temps1,temps2,temps3,temps4,temps5
     568c$OMP THREADPRIVATE(temps0,temps1,temps2,temps3,temps4,temps5)
    570569      SAVE first,testcpu
     570c$OMP THREADPRIVATE(first,testcpu)
    571571
    572572      REAL convpn,convps,convmpn,convmps
     
    575575      REAL coslon(iip1),coslondlon(iip1)
    576576      SAVE sinlon,coslon,sinlondlon,coslondlon
     577c$OMP THREADPRIVATE(sinlon,coslon,sinlondlon,coslondlon)
    577578      SAVE airej2,airejjm
     579c$OMP THREADPRIVATE(airej2,airejjm)
    578580c
    579581c
     
    605607c       PRINT*,'CALCUL EN LATITUDE'
    606608
    607      
     609c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    608610      DO l = 1, llm
    609611c
     
    806808
    807809      ENDDO
     810c$OMP END DO NOWAIT
    808811
    809812      ijb=ij_begin-iip1
     
    812815      if (pole_sud)  ije=ij_end-iip1
    813816
    814 
     817c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    815818      DO l=1,llm
    816819       DO ij=ijb,ije
     
    825828       ENDDO
    826829      ENDDO
    827 
     830c$OMP END DO NOWAIT
    828831     
    829832      ijb=ij_begin
     
    832835      if (pole_sud)  ije=ij_end-iip1
    833836     
     837c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    834838      DO l=1,llm
    835839         DO ij=ijb,ije
     
    900904c._. fin nouvelle version
    901905      ENDDO
     906c$OMP END DO NOWAIT
    902907
    903908      RETURN
     
    939944      INTEGER i,ij,l,j,ii
    940945c
    941       REAL wq(ip1jmp1,llm+1),newmasse
    942 
    943       REAL dzq(ip1jmp1,llm),dzqw(ip1jmp1,llm),adzqw(ip1jmp1,llm),dzqmax
     946      REAL,SAVE :: wq(ip1jmp1,llm+1)
     947      REAL newmasse
     948
     949      REAL,SAVE :: dzq(ip1jmp1,llm),dzqw(ip1jmp1,llm),adzqw(ip1jmp1,llm)
     950      REAL dzqmax
    944951      REAL sigw
    945952
    946953      LOGICAL testcpu
    947954      SAVE testcpu
    948 
     955c$OMP THREADPRIVATE(testcpu)
    949956      REAL temps0,temps1,temps2,temps3,temps4,temps5,second
    950957      SAVE temps0,temps1,temps2,temps3,temps4,temps5
     958c$OMP THREADPRIVATE(temps0,temps1,temps2,temps3,temps4,temps5)
     959
    951960      REAL      SSUM
    952       EXTERNAL  SSUM, convflu
    953       EXTERNAL filtreg
     961      EXTERNAL  SSUM
    954962
    955963      DATA testcpu/.false./
     
    967975      ijb=ijb_x
    968976      ije=ije_x
    969      
     977
     978c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    970979      DO l=2,llm
    971980         DO ij=ijb,ije
     
    974983         ENDDO
    975984      ENDDO
    976 
     985c$OMP END DO
     986
     987c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    977988      DO l=2,llm-1
    978989         DO ij=ijb,ije
     
    9911002         ENDDO
    9921003      ENDDO
    993 
     1004c$OMP END DO NOWAIT
     1005
     1006c$OMP MASTER
    9941007      DO ij=ijb,ije
    9951008         dzq(ij,1)=0.
    9961009         dzq(ij,llm)=0.
    9971010      ENDDO
    998 
     1011c$OMP END MASTER
     1012c$OMP BARRIER
    9991013#ifdef BIDON
    10001014      IF(testcpu) THEN
     
    10081022c calcul de  - d( q   * w )/ d(sigma)    qu'on ajoute a  dq pour calculer dq
    10091023
     1024c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    10101025       DO l = 1,llm-1
    10111026         do  ij = ijb,ije
     
    10191034         ENDDO
    10201035       ENDDO
    1021 
     1036c$OMP END DO NOWAIT
     1037
     1038c$OMP MASTER
    10221039       DO ij=ijb,ije
    10231040          wq(ij,llm+1)=0.
    10241041          wq(ij,1)=0.
    10251042       ENDDO
    1026 
     1043c$OMP END MASTER
     1044c$OMP BARRIER
     1045
     1046c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    10271047      DO l=1,llm
    10281048         DO ij=ijb,ije
     
    10331053         ENDDO
    10341054      ENDDO
     1055c$OMP END DO NOWAIT
    10351056
    10361057
Note: See TracChangeset for help on using the changeset viewer.