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

    r630 r764  
    1       SUBROUTINE nxgrarot_p (klevel,xcov, ycov, lr, grx, gry )
     1      SUBROUTINE nxgrarot_p (klevel,xcov, ycov, lr, grx_out, gry_out )
    22c   ***********************************************************
    33c
     
    2626      INTEGER klevel
    2727      REAL xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel )
    28       REAL  grx( ip1jmp1,klevel ),  gry( ip1jm,klevel )
     28      REAL  grx_out( ip1jmp1,klevel ),  gry_out( ip1jm,klevel )
     29      REAL,SAVE ::  grx( ip1jmp1,llm ),  gry( ip1jm,llm )
     30
    2931c
    30       REAL rot(ip1jm,llm)
     32      REAL,SAVE :: rot(ip1jm,llm)
    3133
    3234      INTEGER l,ij,iter,lr
    3335c
    34       EXTERNAL    filtreg
    35       EXTERNAL       SCOPY, rotat, nXgrad
    3636      INTEGER ijb,ije,jjb,jje
    3737c
     
    4242      ijb=ij_begin
    4343      ije=ij_end
    44       grx(ijb:ije,1:klevel)=xcov(ijb:ije,1:klevel)
    45      
     44c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 
     45      DO l = 1, klevel
     46        grx(ijb:ije,l)=xcov(ijb:ije,l)
     47      ENDDO
     48c$OMP END DO NOWAIT     
     49
    4650      if(pole_sud) ije=ij_end-iip1
    47       gry(ijb:ije,1:klevel)=ycov(ijb:ije,1:klevel)
     51c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     52      DO l = 1, klevel
     53        gry(ijb:ije,l)=ycov(ijb:ije,l)
     54      ENDDO
     55c$OMP END DO NOWAIT
    4856     
    4957      DO 10 iter = 1,lr
     58c$OMP BARRIER
     59c$OMP MASTER
    5060      call suspend_timer(timer_dissip)
    5161      call exchange_Hallo(grx,ip1jmp1,llm,0,1)
    5262      call resume_timer(timer_dissip)
     63c$OMP END MASTER
     64c$OMP BARRIER
     65
    5366      CALL  rotat_p (klevel,grx, gry, rot )
    5467c      call write_field3d_p('rot',reshape(rot,(/iip1,jjm,llm/)))
     
    5871      if (pole_sud) jje=jj_end-1
    5972      CALL filtreg_p( rot,jjb,jje, jjm, klevel, 2,1, .false.,2)
    60      
     73
     74c$OMP BARRIER
     75c$OMP MASTER
    6176      call suspend_timer(timer_dissip)
    6277      call exchange_Hallo(rot,ip1jm,llm,1,0)
    6378      call resume_timer(timer_dissip)
     79c$OMP END MASTER
     80c$OMP BARRIER
    6481     
    6582      CALL nxgrad_p (klevel,rot, grx, gry )
    6683c
     84c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    6785      DO 5  l = 1, klevel
    6886      if(pole_sud) ije=ij_end-iip1
    6987      DO 2 ij = ijb, ije
    70       gry( ij,l ) = - gry( ij,l ) * crot
     88      gry_out( ij,l ) = - gry( ij,l ) * crot
    7189   2  CONTINUE
    7290      if(pole_sud) ije=ij_end
    7391      DO 3 ij = ijb, ije
    74       grx( ij,l ) = - grx( ij,l ) * crot
     92      grx_out( ij,l ) = - grx( ij,l ) * crot
    7593   3  CONTINUE
    7694   5  CONTINUE
    77 
     95c$OMP END DO NOWAIT
    7896c      call write_field3d_p('grx',reshape(grx,(/iip1,jjp1,llm/)))
    7997c      call write_field3d_p('gry',reshape(gry,(/iip1,jjm,llm/)))
Note: See TracChangeset for help on using the changeset viewer.