source: LMDZ6/trunk/libf/dyn3d_common/divgrad2.f90 @ 5281

Last change on this file since 5281 was 5281, checked in by abarral, 4 days ago

Turn comgeom.h comgeom2.h into modules

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.0 KB
Line 
1!
2! $Header$
3!
4SUBROUTINE divgrad2 ( klevel, h, deltapres, lh, divgra )
5  !
6  ! P. Le Van
7  !
8  !   ***************************************************************
9  !
10  ! .....   calcul de  (div( grad ))   de (  pext * h ) .....
11  !   ****************************************************************
12  !   h ,klevel,lh et pext  sont des arguments  d'entree pour le s-prg
13  !     divgra     est  un argument  de sortie pour le s-prg
14  !
15  USE comgeom2_mod_h
16  USE comdissipn_mod_h
17  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
18USE paramet_mod_h, ONLY: iip1, iip2, iip3, jjp1, llmp1, llmp2, llmm1, kftd, ip1jm, ip1jmp1, &
19          ip1jmi1, ijp1llm, ijmllm, mvar, jcfil, jcfllm
20IMPLICIT NONE
21  !
22
23
24
25  !    .......    variables en arguments   .......
26  !
27  INTEGER :: klevel
28  REAL :: h( ip1jmp1,klevel ), deltapres( ip1jmp1,klevel )
29  REAL :: divgra( ip1jmp1,klevel)
30  !
31  !    .......    variables  locales    ..........
32  !
33  REAL :: signe, nudivgrs, sqrtps( ip1jmp1,llm )
34  INTEGER :: l,ij,iter,lh
35  !    ...................................................................
36
37  !
38  signe    = (-1.)**lh
39  nudivgrs = signe * cdivh
40
41  CALL SCOPY ( ip1jmp1 * klevel, h, 1, divgra, 1 )
42
43  !
44  CALL laplacien( klevel, divgra, divgra )
45
46  DO l = 1, klevel
47   DO ij = 1, ip1jmp1
48    sqrtps( ij,l ) = SQRT( deltapres(ij,l) )
49   ENDDO
50  ENDDO
51  !
52  DO l = 1, klevel
53    DO ij = 1, ip1jmp1
54     divgra(ij,l) = divgra(ij,l) * sqrtps(ij,l)
55    ENDDO
56  ENDDO
57
58  !    ........    Iteration de l'operateur  laplacien_gam    ........
59  !
60  DO  iter = 1, lh - 2
61   CALL laplacien_gam ( klevel,cuvscvgam2,cvuscugam2,unsair_gam2, &
62         unsapolnga2, unsapolsga2,  divgra, divgra )
63  ENDDO
64  !
65  !    ...............................................................
66
67  DO l = 1, klevel
68    DO ij = 1, ip1jmp1
69      divgra(ij,l) = divgra(ij,l) * sqrtps(ij,l)
70    ENDDO
71  ENDDO
72  !
73  CALL laplacien ( klevel, divgra, divgra )
74  !
75  DO l  = 1,klevel
76  DO ij = 1,ip1jmp1
77  divgra(ij,l) =  nudivgrs * divgra(ij,l) / deltapres(ij,l)
78  ENDDO
79  ENDDO
80
81  RETURN
82END SUBROUTINE divgrad2
Note: See TracBrowser for help on using the repository browser.