Ignore:
Timestamp:
Jun 4, 2007, 4:13:10 PM (18 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/nxgraro2_p.F

    r630 r764  
    1        SUBROUTINE nxgraro2_p (klevel,xcov, ycov, lr, grx, gry )
     1       SUBROUTINE nxgraro2_p (klevel,xcov, ycov, lr, grx_out, gry_out )
    22c
    33c      P.Le Van .
     
    2525      INTEGER klevel
    2626      REAL xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel )
    27       REAL  grx( ip1jmp1,klevel ),  gry( ip1jm,klevel )
     27      REAL,SAVE ::  grx( ip1jmp1,llm ),  gry( ip1jm,llm )
     28      REAL  grx_out( ip1jmp1,klevel ),  gry_out( ip1jm,klevel )
    2829c
    2930c    ......   variables locales     ........
    3031c
    31       REAL rot(ip1jm,llm) , signe, nugradrs
     32      REAL,SAVE :: rot(ip1jm,llm)
     33      REAL  signe, nugradrs
    3234      INTEGER l,ij,iter,lr
    3335c    ........................................................
    3436c
    35       EXTERNAL    filtreg
    36       EXTERNAL  SCOPY, rotatf, nxgrad, laplacien_rotgam
    3737      INTEGER :: ijb,ije,jjb,jje
    3838     
     
    4747      ijb=ij_begin
    4848      ije=ij_end
    49       grx(ijb:ije,1:klevel)=xcov(ijb:ije,1:klevel)
    50      
     49
     50c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     51      DO    l = 1, klevel
     52        grx(ijb:ije,l)=xcov(ijb:ije,l)
     53      ENDDO
     54c$OMP END DO NOWAIT
     55
     56c$OMP BARRIER
     57c$OMP MASTER         
    5158      call suspend_timer(timer_dissip)
    5259      call exchange_Hallo(grx,ip1jmp1,llm,0,1)
    5360      call resume_timer(timer_dissip)
     61c$OMP END MASTER
     62c$OMP BARRIER
    5463
    5564      ijb=ij_begin
    5665      ije=ij_end
    5766      if(pole_sud) ije=ij_end-iip1
    58       gry(ijb:ije,1:klevel)=ycov(ijb:ije,1:klevel)
     67
     68c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     69      DO    l = 1, klevel
     70        gry(ijb:ije,l)=ycov(ijb:ije,l)
     71      ENDDO
     72c$OMP END DO NOWAIT
     73 
    5974c
    6075      CALL     rotatf_p     ( klevel, grx, gry, rot )
    6176c      call write_field3d_p('rot1',reshape(rot,(/iip1,jjm,llm/)))
    62      
     77
     78c$OMP BARRIER
     79c$OMP MASTER     
    6380      call suspend_timer(timer_dissip)
    6481      call exchange_Hallo(rot,ip1jm,llm,1,1)
    6582      call resume_timer(timer_dissip)
     83c$OMP END MASTER
     84c$OMP BARRIER
    6685     
    6786      CALL laplacien_rot_p ( klevel, rot, rot,grx,gry      )
     
    7190c
    7291      DO  iter = 1, lr -2
     92c$OMP BARRIER
     93c$OMP MASTER
    7394        call suspend_timer(timer_dissip)
    7495        call exchange_Hallo(rot,ip1jm,llm,1,1)
    7596        call resume_timer(timer_dissip)
     97c$OMP END MASTER
     98c$OMP BARRIER
    7699        CALL laplacien_rotgam_p ( klevel, rot, rot )
    77100      ENDDO
     
    86109       
    87110      CALL filtreg_p( rot, jjb,jje,jjm, klevel, 2,1, .FALSE.,1)
     111c$OMP BARRIER
     112c$OMP MASTER
    88113      call suspend_timer(timer_dissip)
    89114      call exchange_Hallo(rot,ip1jm,llm,1,0)
    90115      call resume_timer(timer_dissip)
     116c$OMP END MASTER
     117c$OMP BARRIER
    91118      CALL nxgrad_p ( klevel, rot, grx, gry )
    92119
     
    94121      ijb=ij_begin
    95122      ije=ij_end
    96    
     123     
     124c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)   
    97125      DO    l = 1, klevel
    98126       
    99127         if(pole_sud) ije=ij_end-iip1
    100128         DO  ij = ijb, ije
    101           gry( ij,l ) = gry( ij,l ) * nugradrs
     129          gry_out( ij,l ) = gry( ij,l ) * nugradrs
    102130         ENDDO
    103131       
    104132         if(pole_sud) ije=ij_end
    105133         DO  ij = ijb, ije
    106           grx( ij,l ) = grx( ij,l ) * nugradrs
     134          grx_out( ij,l ) = grx( ij,l ) * nugradrs
    107135         ENDDO
    108136     
    109137      ENDDO
     138c$OMP END DO NOWAIT
    110139c
    111140      RETURN
Note: See TracChangeset for help on using the changeset viewer.