My Project
 All Classes Files Functions Variables Macros
tourpot_loc.F
Go to the documentation of this file.
1  SUBROUTINE tourpot_loc ( vcov, ucov, massebxy, vorpot )
2  USE parallel
3  USE mod_filtreg_p
4  IMPLICIT NONE
5 
6 c=======================================================================
7 c
8 c Auteur: P. Le Van
9 c -------
10 c
11 c Objet:
12 c ------
13 c
14 c *******************************************************************
15 c ......... calcul du tourbillon potentiel .........
16 c *******************************************************************
17 c
18 c vcov,ucov,fext et pbarxyfl sont des argum. d'entree pour le s-pg .
19 c vorpot est un argum.de sortie pour le s-pg .
20 c
21 c=======================================================================
22 
23 #include "dimensions.h"
24 #include "paramet.h"
25 #include "comgeom.h"
26 #include "logic.h"
27 
28  REAL rot( ijb_v:ije_v,llm )
29  REAL vcov( ijb_v:ije_v,llm ),ucov( ijb_u:ije_u,llm )
30  REAL massebxy( ijb_v:ije_v,llm ),vorpot( ijb_v:ije_v,llm )
31 
32  INTEGER l, ij ,ije,ijb,jje,jjb
33 
34 
35  ijb=ij_begin-iip1
36  ije=ij_end
37 
38  if (pole_nord) ijb=ij_begin
39 
40 
41 c ... vorpot = ( Filtre( d(vcov)/dx - d(ucov)/dy ) + fext ) /psbarxy ..
42 
43 
44 
45 c ........ Calcul du rotationnel du vent V puis filtrage ........
46 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
47  DO 5 l = 1,llm
48 
49  if (pole_sud) ije=ij_end-iip1-1
50  DO 2 ij = ijb, ije
51  rot( ij,l ) = vcov(ij+1,l)-vcov(ij,l)+ucov(ij+iip1,l)-ucov(ij,l)
52  2 CONTINUE
53 
54 c .... correction pour rot( iip1,j,l ) .....
55 c .... rot(iip1,j,l) = rot(1,j,l) .....
56 
57 CDIR$ IVDEP
58 
59  if (pole_sud) ije=ij_end-iip1
60 
61  DO 3 ij = ijb+iip1-1, ije, iip1
62  rot( ij,l ) = rot( ij -iim, l )
63  3 CONTINUE
64 
65  5 CONTINUE
66 c$OMP END DO NOWAIT
67  jjb=jj_begin-1
68  jje=jj_end
69 
70  if (pole_nord) jjb=jjb+1
71  if (pole_sud) jje=jje-1
72  CALL filtreg_p( rot, jjb_v,jje_v,jjb,jje,jjm, llm,
73  & 2, 1, .false., 1 )
74 
75 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
76  DO 10 l = 1, llm
77 
78  if (pole_sud) ije=ij_end-iip1-1
79 
80  DO 6 ij = ijb, ije
81  vorpot( ij,l ) = ( rot(ij,l) + fext(ij) ) / massebxy(ij,l)
82  6 CONTINUE
83 
84 c ..... correction pour vorpot( iip1,j,l) .....
85 c .... vorpot(iip1,j,l)= vorpot(1,j,l) ....
86 CDIR$ IVDEP
87  if (pole_sud) ije=ij_end-iip1
88  DO 8 ij = ijb+iip1-1, ije, iip1
89  vorpot( ij,l ) = vorpot( ij -iim,l )
90  8 CONTINUE
91 
92  10 CONTINUE
93 c$OMP END DO NOWAIT
94  RETURN
95  END