source: trunk/LMDZ.MARS/libf/dyn3d/divgrad2.F @ 937

Last change on this file since 937 was 38, checked in by emillour, 14 years ago

Ajout du modè Martien (mon LMDZ.MARS.BETA, du 28/01/2011) dans le rértoire mars, pour pouvoir suivre plus facilement les modifs.
EM

File size: 2.0 KB
Line 
1      SUBROUTINE divgrad2 ( klevel, h, deltapres, lh, divgra )
2c
3c     P. Le Van
4c
5c   ***************************************************************
6c
7c     .....   calcul de  (div( grad ))   de (  pext * h ) .....
8c   ****************************************************************
9c   h ,klevel,lh et pext  sont des arguments  d'entree pour le s-prg
10c         divgra     est  un argument  de sortie pour le s-prg
11c
12      IMPLICIT NONE
13c
14#include "dimensions.h"
15#include "paramet.h"
16#include "comgeom2.h"
17#include "comdissipn.h"
18
19c    .......    variables en arguments   .......
20c
21      INTEGER klevel
22      REAL h( ip1jmp1,klevel ), deltapres( ip1jmp1,klevel )
23      REAL divgra( ip1jmp1,klevel)
24c
25c    .......    variables  locales    ..........
26c
27      REAL     signe, nudivgrs, sqrtps( ip1jmp1,llm )
28      INTEGER  l,ij,iter,lh
29c    ...................................................................
30
31      EXTERNAL  filtreg
32      EXTERNAL  SCOPY,  laplacien_gam
33c
34      signe    = (-1.)**lh
35      nudivgrs = signe * cdivh
36
37      CALL SCOPY ( ip1jmp1 * klevel, h, 1, divgra, 1 )
38
39c
40      CALL laplacien( klevel, divgra, divgra )
41     
42      DO l = 1, klevel
43       DO ij = 1, ip1jmp1
44        sqrtps( ij,l ) = SQRT( deltapres(ij,l) )
45       ENDDO
46      ENDDO
47c
48      DO l = 1, klevel
49        DO ij = 1, ip1jmp1
50         divgra(ij,l) = divgra(ij,l) * sqrtps(ij,l)
51        ENDDO
52      ENDDO
53   
54c    ........    Iteration de l'operateur  laplacien_gam    ........
55c
56      DO  iter = 1, lh - 2
57       CALL laplacien_gam ( klevel,cuvscvgam2,cvuscugam2,unsair_gam2,
58     *                     unsapolnga2, unsapolsga2,  divgra, divgra )
59      ENDDO
60c
61c    ...............................................................
62 
63      DO l = 1, klevel
64        DO ij = 1, ip1jmp1
65          divgra(ij,l) = divgra(ij,l) * sqrtps(ij,l)
66        ENDDO
67      ENDDO
68c
69      CALL laplacien ( klevel, divgra, divgra )
70c
71      DO l  = 1,klevel
72      DO ij = 1,ip1jmp1
73      divgra(ij,l) =  nudivgrs * divgra(ij,l) / deltapres(ij,l)
74      ENDDO
75      ENDDO
76
77      RETURN
78      END
Note: See TracBrowser for help on using the repository browser.