My Project
 All Classes Files Functions Variables Macros
nxgrad_loc.F
Go to the documentation of this file.
1  SUBROUTINE nxgrad_loc (klevel, rot, x, y )
2 c
3 c P. Le Van
4 c
5 c ********************************************************************
6 c calcul du gradient tourne de pi/2 du rotationnel du vect.v
7 c ********************************************************************
8 c rot est un argument d'entree pour le s-prog
9 c x et y sont des arguments de sortie pour le s-prog
10 c
11  USE parallel
12  IMPLICIT NONE
13 c
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 c
23 c
24 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
25  DO 10 l = 1,klevel
26 c
27  ijb=ij_begin
28  ije=ij_end
29  if (pole_sud) ije=ij_end-iip1
30 
31  DO 1 ij = ijb+1, ije
32  y( ij,l ) = ( rot( ij,l ) - rot( ij-1,l ) ) * cvsurcuv( ij )
33  1 CONTINUE
34 c
35 c ..... correction pour y ( 1,j,l ) ......
36 c
37 c .... y(1,j,l)= y(iip1,j,l) ....
38 CDIR$ IVDEP
39  DO 2 ij = ijb, ije, iip1
40  y( ij,l ) = y( ij +iim,l )
41  2 CONTINUE
42 c
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 4 ij = ijb,ije
50  x( ij,l ) = ( rot( ij,l ) - rot( ij -iip1,l ) ) * cusurcvu( ij )
51  4 CONTINUE
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 c
65  10 CONTINUE
66 c$OMP END DO NOWAIT
67  RETURN
68  END