source: LMDZ6/branches/contrails/libf/dyn3d_common/divgrad2.f90 @ 5440

Last change on this file since 5440 was 5285, checked in by abarral, 2 months ago

As discussed internally, remove generic ONLY: ... for new _mod_h 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: 1.9 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
19IMPLICIT NONE
20  !
21
22
23
24  !    .......    variables en arguments   .......
25  !
26  INTEGER :: klevel
27  REAL :: h( ip1jmp1,klevel ), deltapres( ip1jmp1,klevel )
28  REAL :: divgra( ip1jmp1,klevel)
29  !
30  !    .......    variables  locales    ..........
31  !
32  REAL :: signe, nudivgrs, sqrtps( ip1jmp1,llm )
33  INTEGER :: l,ij,iter,lh
34  !    ...................................................................
35
36  !
37  signe    = (-1.)**lh
38  nudivgrs = signe * cdivh
39
40  CALL SCOPY ( ip1jmp1 * klevel, h, 1, divgra, 1 )
41
42  !
43  CALL laplacien( klevel, divgra, divgra )
44
45  DO l = 1, klevel
46   DO ij = 1, ip1jmp1
47    sqrtps( ij,l ) = SQRT( deltapres(ij,l) )
48   ENDDO
49  ENDDO
50  !
51  DO l = 1, klevel
52    DO ij = 1, ip1jmp1
53     divgra(ij,l) = divgra(ij,l) * sqrtps(ij,l)
54    ENDDO
55  ENDDO
56
57  !    ........    Iteration de l'operateur  laplacien_gam    ........
58  !
59  DO  iter = 1, lh - 2
60   CALL laplacien_gam ( klevel,cuvscvgam2,cvuscugam2,unsair_gam2, &
61         unsapolnga2, unsapolsga2,  divgra, divgra )
62  ENDDO
63  !
64  !    ...............................................................
65
66  DO l = 1, klevel
67    DO ij = 1, ip1jmp1
68      divgra(ij,l) = divgra(ij,l) * sqrtps(ij,l)
69    ENDDO
70  ENDDO
71  !
72  CALL laplacien ( klevel, divgra, divgra )
73  !
74  DO l  = 1,klevel
75  DO ij = 1,ip1jmp1
76  divgra(ij,l) =  nudivgrs * divgra(ij,l) / deltapres(ij,l)
77  ENDDO
78  ENDDO
79
80  RETURN
81END SUBROUTINE divgrad2
Note: See TracBrowser for help on using the repository browser.