My Project
 All Classes Files Functions Variables Macros
laplacien_p.F
Go to the documentation of this file.
1  SUBROUTINE laplacien_p ( klevel, teta, divgra )
2 c
3 c P. Le Van
4 c
5 c ************************************************************
6 c .... calcul de (div( grad )) de teta .....
7 c ************************************************************
8 c klevel et teta sont des arguments d'entree pour le s-prog
9 c divgra est un argument 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 
18 c
19 c ......... variables en arguments ..............
20 c
21  INTEGER klevel
22  REAL teta( ip1jmp1,klevel ), divgra( ip1jmp1,klevel )
23  INTEGER :: l
24 c
25 c ............ variables locales ..............
26 c
27  REAL ghy(ip1jm,llm), ghx(ip1jmp1,llm)
28 c .......................................................
29 
30 
31  INTEGER :: ijb,ije,jjb,jje
32 c
33 c CALL SCOPY ( ip1jmp1 * klevel, teta, 1, divgra, 1 )
34 
35  ijb=ij_begin-iip1
36  ije=ij_end+iip1
37  if (pole_nord) ijb=ij_begin
38  if (pole_sud ) ije=ij_end
39 
40 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
41  DO l=1,klevel
42  divgra(ijb:ije,l)=teta(ijb:ije,l)
43  ENDDO
44 c$OMP END DO NOWAIT
45 
46  jjb=jj_begin-1
47  jje=jj_end+1
48  if (pole_nord) jjb=jj_begin
49  if (pole_sud ) jje=jj_end
50 
51  CALL filtreg_p( divgra,jjb,jje,jjp1, klevel, 2, 1, .true., 1 )
52  CALL grad_p( klevel,divgra, ghx , ghy )
53  CALL divergf_p( klevel, ghx , ghy , divgra )
54 
55  RETURN
56  END