source: LMDZ6/branches/Amaury_dev/libf/dyn3d_common/gradiv2.f90 @ 5106

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

Turn coefils.h into lmdz_coefils.f90
Put filtreg.F90 inside lmdz_filtreg.F90
Turn mod_filtreg_p.F90 into lmdz_filtreg_p.F90
Delete obsolete parafilt.h*
(lint) remove spaces between routine name and args

  • 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 gradiv2(klevel, xcov, ycov, ld, gdx, gdy )
5  !
6  ! P. Le Van
7  !
8  !   **********************************************************
9  !                            ld
10  !   calcul  de  (grad (div) )   du vect. v ....
11  !
12  ! xcov et ycov etant les composant.covariantes de v
13  !   **********************************************************
14  ! xcont , ycont et ld  sont des arguments  d'entree pour le s-prog
15  !  gdx   et  gdy       sont des arguments de sortie pour le s-prog
16  !
17  !
18  USE lmdz_filtreg, ONLY: filtreg
19  IMPLICIT NONE
20  !
21  INCLUDE "dimensions.h"
22  INCLUDE "paramet.h"
23  INCLUDE "comgeom.h"
24  INCLUDE "comdissipn.h"
25  !
26  ! ........    variables en arguments      ........
27
28  INTEGER :: klevel
29  REAL :: xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel )
30  REAL :: gdx( ip1jmp1,klevel ),  gdy( ip1jm,klevel )
31  !
32  ! ........       variables locales       .........
33  !
34  REAL :: div(ip1jmp1,llm)
35  REAL :: signe, nugrads
36  INTEGER :: l,ij,iter,ld
37
38  !    ........................................................
39  !
40  !
41  CALL SCOPY( ip1jmp1 * klevel, xcov, 1, gdx, 1 )
42  CALL SCOPY(   ip1jm * klevel, ycov, 1, gdy, 1 )
43  !
44  !
45  signe   = (-1.)**ld
46  nugrads = signe * cdivu
47  !
48
49
50  CALL    divergf( klevel, gdx,   gdy , div )
51
52  IF( ld>1 )   THEN
53
54    CALL laplacien ( klevel, div,  div     )
55
56  !    ......  Iteration de l'operateur laplacien_gam   .......
57
58    DO iter = 1, ld -2
59     CALL laplacien_gam ( klevel,cuvscvgam1,cvuscugam1,unsair_gam1, &
60           unsapolnga1, unsapolsga1,  div, div       )
61    ENDDO
62
63  ENDIF
64
65
66   CALL filtreg( div   , jjp1, klevel, 2, 1, .TRUE., 1 )
67   CALL  grad  ( klevel,  div,   gdx,  gdy             )
68
69  !
70   DO   l = 1, klevel
71     DO  ij = 1, ip1jmp1
72      gdx( ij,l ) = gdx( ij,l ) * nugrads
73     ENDDO
74     DO  ij = 1, ip1jm
75      gdy( ij,l ) = gdy( ij,l ) * nugrads
76     ENDDO
77   ENDDO
78  !
79   RETURN
80END SUBROUTINE gradiv2
Note: See TracBrowser for help on using the repository browser.