Changeset 5246 for LMDZ6/trunk/libf/dyn3dmem/nxgrad_loc.f90
- Timestamp:
- Oct 21, 2024, 2:58:45 PM (23 hours ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3dmem/nxgrad_loc.f90
r5245 r5246 1 2 c 3 cP. Le Van4 c 5 c********************************************************************6 ccalcul du gradient tourne de pi/2 du rotationnel du vect.v7 c********************************************************************8 crot est un argument d'entree pour le s-prog9 cx et y sont des arguments de sortie pour le s-prog10 c 11 12 13 c 14 15 16 17 INTEGERklevel18 REALrot( ijb_v:ije_v,klevel ),x( ijb_u:ije_u,klevel )19 REALy(ijb_v:ije_v,klevel )20 INTEGERl,ij21 22 c 23 c 24 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 25 DO 10l = 1,klevel26 c 27 28 29 30 31 DO 1ij = ijb+1, ije32 33 1 CONTINUE34 c 35 c..... correction pour y ( 1,j,l ) ......36 c 37 c.... y(1,j,l)= y(iip1,j,l) ....38 CDIR$ IVDEP39 DO 2ij = ijb, ije, iip140 41 2 CONTINUE42 c 43 44 45 46 47 48 49 DO 4ij = ijb,ije50 51 4 CONTINUE52 53 if (pole_nord) then54 55 56 57 58 59 if (pole_sud) then60 61 62 63 64 c 65 10 CONTINUE66 c$OMP END DO NOWAIT67 68 END 1 SUBROUTINE nxgrad_loc (klevel, rot, x, y ) 2 ! 3 ! P. Le Van 4 ! 5 ! ******************************************************************** 6 ! calcul du gradient tourne de pi/2 du rotationnel du vect.v 7 ! ******************************************************************** 8 ! rot est un argument d'entree pour le s-prog 9 ! x et y sont des arguments de sortie pour le s-prog 10 ! 11 USE parallel_lmdz 12 IMPLICIT NONE 13 ! 14 INCLUDE "dimensions.h" 15 INCLUDE "paramet.h" 16 INCLUDE "comgeom.h" 17 INTEGER :: klevel 18 REAL :: rot( ijb_v:ije_v,klevel ),x( ijb_u:ije_u,klevel ) 19 REAL :: y(ijb_v:ije_v,klevel ) 20 INTEGER :: l,ij 21 INTEGER :: ijb,ije 22 ! 23 ! 24 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 25 DO l = 1,klevel 26 ! 27 ijb=ij_begin 28 ije=ij_end 29 if (pole_sud) ije=ij_end-iip1 30 31 DO ij = ijb+1, ije 32 y( ij,l ) = ( rot( ij,l ) - rot( ij-1,l ) ) * cvsurcuv( ij ) 33 END DO 34 ! 35 ! ..... correction pour y ( 1,j,l ) ...... 36 ! 37 ! .... y(1,j,l)= y(iip1,j,l) .... 38 !DIR$ IVDEP 39 DO ij = ijb, ije, iip1 40 y( ij,l ) = y( ij +iim,l ) 41 END DO 42 ! 43 ijb=ij_begin 44 ije=ij_end+iip1 45 46 if (pole_nord) ijb=ij_begin+iip1 47 if (pole_sud) ije=ij_end-iip1 48 49 DO ij = ijb,ije 50 x( ij,l ) = ( rot( ij,l ) - rot( ij -iip1,l ) ) * cusurcvu( ij ) 51 END DO 52 53 if (pole_nord) then 54 DO ij = 1,iip1 55 x( ij ,l ) = 0. 56 ENDDO 57 endif 58 59 if (pole_sud) then 60 DO ij = 1,iip1 61 x( ij +ip1jm,l ) = 0. 62 ENDDO 63 endif 64 ! 65 END DO 66 !$OMP END DO NOWAIT 67 RETURN 68 END SUBROUTINE nxgrad_loc
Note: See TracChangeset
for help on using the changeset viewer.