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/integrd_p.F

    r630 r764  
    44      SUBROUTINE integrd_p
    55     $  (  nq,vcovm1,ucovm1,tetam1,psm1,massem1,
    6      $     dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps,masse,phis,finvmaold )
     6     $     dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps0,masse,phis,finvmaold)
    77      USE parallel
    88      IMPLICIT NONE
     
    4141      REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm),teta(ip1jmp1,llm)
    4242      REAL q(ip1jmp1,llm,nq)
    43       REAL ps(ip1jmp1),masse(ip1jmp1,llm),phis(ip1jmp1)
     43      REAL ps0(ip1jmp1),masse(ip1jmp1,llm),phis(ip1jmp1)
    4444
    4545      REAL vcovm1(ip1jm,llm),ucovm1(ip1jmp1,llm)
     
    5555      REAL vscr( ip1jm ),uscr( ip1jmp1 ),hscr( ip1jmp1 ),pscr(ip1jmp1)
    5656      REAL massescr( ip1jmp1,llm ), finvmasse(ip1jmp1,llm)
    57       REAL p(ip1jmp1,llmp1)
     57      REAL,SAVE :: p(ip1jmp1,llmp1)
    5858      REAL tpn,tps,tppn(iim),tpps(iim)
    5959      REAL qpn,qps,qppn(iim),qpps(iim)
     
    6262      INTEGER  l,ij,iq
    6363
    64       EXTERNAL  filtreg,massdair,pression
    65       EXTERNAL  SCOPY
    6664      REAL SSUM
    6765      EXTERNAL SSUM
    6866      INTEGER ijb,ije,jjb,jje
     67      REAL,SAVE :: ps(ip1jmp1)
    6968c-----------------------------------------------------------------------
     69     
    7070      if (pole_nord) THEN
    71      
     71c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    7272        DO  l = 1,llm
    7373          DO  ij = 1,iip1
     
    7676           ENDDO
    7777        ENDDO
    78      
     78c$OMP END DO NOWAIT       
    7979      ENDIF
    8080
    8181      if (pole_sud) THEN
    82      
     82c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    8383        DO  l = 1,llm
    8484          DO  ij = 1,iip1
     
    8787          ENDDO
    8888        ENDDO
    89      
     89c$OMP END DO NOWAIT     
    9090      ENDIF
    9191
     
    9696      ijb=ij_begin
    9797      ije=ij_end
    98       massescr(ijb:ije,:)=masse(ijb:ije,:)
    99      
     98c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     99      DO  l = 1,llm
     100        massescr(ijb:ije,l)=masse(ijb:ije,l)
     101      ENDDO
     102c$OMP END DO NOWAIT
     103
     104c$OMP MASTER     
    100105      DO 2 ij = ijb,ije
    101        pscr (ij)    = ps(ij)
     106       pscr (ij)    = ps0(ij)
    102107       ps (ij)      = psm1(ij) + dt * dp(ij)
    103108   2  CONTINUE
     
    133138     
    134139      ENDIF
     140c$OMP END MASTER
     141c$OMP BARRIER
    135142c
    136143c  ... Calcul  de la nouvelle masse d'air au dernier temps integre t+1 ...
    137144c
     145
    138146      CALL pression_p ( ip1jmp1, ap, bp, ps, p )
     147c$OMP BARRIER
    139148      CALL massdair_p (     p  , masse         )
    140149
     
    142151      ijb=ij_begin
    143152      ije=ij_end
    144       finvmasse(ijb:ije,:)=masse(ijb:ije,:)
     153     
     154c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     155      DO  l = 1,llm
     156        finvmasse(ijb:ije,l)=masse(ijb:ije,l)
     157      ENDDO
     158c$OMP END DO NOWAIT
    145159
    146160      jjb=jj_begin
     
    151165c    ............   integration  de  ucov, vcov,  h     ..............
    152166
     167c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    153168      DO 10 l = 1,llm
    154169     
     
    225240
    226241  10  CONTINUE
    227 
     242c$OMP END DO NOWAIT
    228243
    229244c
     
    233248      ije=ij_end
    234249     
    235 
     250c$OMP MASTER
    236251         DO l = 1, llm
    237252          DO ij = ijb, ije
     
    282297     
    283298      ENDIF
     299     
     300c$OMP END MASTER
     301c$OMP BARRIER
    284302
    285303c         CALL  SCOPY( ijp1llm , finvmasse, 1, finvmaold, 1 )
    286      
    287       finvmaold(ijb:ije,:)=finvmasse(ijb:ije,:)       
     304
     305c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     306      DO l = 1, llm     
     307        finvmaold(ijb:ije,l)=finvmasse(ijb:ije,l)       
     308      ENDDO
     309c$OMP END DO NOWAIT
    288310c
    289311c
     
    29231415    continue
    293315
     316c$OMP MASTER
     317        ps0(ijb:ije)=ps(ijb:ije)
     318c$OMP END MASTER
    294319c    .................................................................
    295320
     
    298323c       CALL SCOPY (    ip1jmp1 ,  pscr   , 1,   psm1  , 1 )
    299324c       CALL SCOPY ( ip1jmp1*llm, massescr, 1,  massem1, 1 )
     325c$OMP MASTER
    300326        psm1(ijb:ije)=pscr(ijb:ije)
    301         massem1(ijb:ije,:)=massescr(ijb:ije,:)
     327c$OMP END MASTER
     328
     329c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     330          DO l = 1, llm
     331            massem1(ijb:ije,l)=massescr(ijb:ije,l)
     332          ENDDO
     333c$OMP END DO NOWAIT       
    302334      END IF
    303335
Note: See TracChangeset for help on using the changeset viewer.