source: trunk/LMDZ.COMMON/libf/dyn3dpar/dudv2_p.F @ 2757

Last change on this file since 2757 was 1422, checked in by milmd, 10 years ago

In GENERIC, MARS and COMMON models replace some include files by modules (usefull for decoupling physics with dynamics).

File size: 1.9 KB
Line 
1      SUBROUTINE dudv2_p ( teta, pkf, bern, du, dv  )
2      USE parallel_lmdz
3      IMPLICIT NONE
4c
5c=======================================================================
6c
7c   Auteur:  P. Le Van
8c   -------
9c
10c   Objet:
11c   ------
12c
13c   *****************************************************************
14c   ..... calcul du terme de pression (gradient de p/densite )   et
15c          du terme de ( -gradient de la fonction de Bernouilli ) ...
16c   *****************************************************************
17c          Ces termes sont ajoutes a  d(ucov)/dt et a d(vcov)/dt  ..
18c
19c
20c    teta , pkf, bern  sont des arguments d'entree  pour le s-pg  ....
21c    du et dv          sont des arguments de sortie pour le s-pg  ....
22c
23c=======================================================================
24c
25#include "dimensions.h"
26#include "paramet.h"
27
28      REAL teta( ip1jmp1,llm ),pkf( ip1jmp1,llm ) ,bern( ip1jmp1,llm ),
29     *         du( ip1jmp1,llm ),  dv( ip1jm,llm )
30      INTEGER  l,ij,ijb,ije
31c
32c
33c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
34      DO 5 l = 1,llm
35c
36      ijb=ij_begin
37      ije=ij_end
38      if (pole_nord) ijb=ijb+iip1
39      if (pole_sud)  ije=ije-iip1
40
41      DO 2  ij  = ijb, ije - 1
42       du(ij,l) = du(ij,l) + 0.5* ( teta( ij,l ) + teta( ij+1,l ) ) *
43     * ( pkf( ij,l ) - pkf(ij+1,l) )  + bern(ij,l) - bern(ij+1,l)
44   2  CONTINUE
45c
46c
47c    .....  correction  pour du(iip1,j,l),  j=2,jjm   ......
48c    ...          du(iip1,j,l) = du(1,j,l)                 ...
49c
50CDIR$ IVDEP
51      DO 3 ij = ijb+iip1-1, ije, iip1
52      du( ij,l ) = du( ij - iim,l )
53   3  CONTINUE
54c
55c
56      if (pole_nord) ijb=ijb-iip1
57
58      DO 4 ij  = ijb,ije
59      dv( ij,l) = dv(ij,l) + 0.5 * ( teta(ij,l) + teta( ij+iip1,l ) ) *
60     *                             ( pkf(ij+iip1,l) - pkf(  ij,l  ) )
61     *                           +   bern( ij+iip1,l ) - bern( ij  ,l )
62   4  CONTINUE
63c
64   5  CONTINUE
65c$OMP END DO NOWAIT
66c
67      RETURN
68      END
Note: See TracBrowser for help on using the repository browser.