source: LMDZ6/branches/Amaury_dev/libf/dyn3d_common/divergst.f90 @ 5185

Last change on this file since 5185 was 5159, checked in by abarral, 5 months ago

Put dimensions.h and paramet.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: 1.5 KB
Line 
1! $Header$
2
3SUBROUTINE divergst(klevel, x, y, div)
4  USE lmdz_ssum_scopy, ONLY: ssum
5  USE lmdz_comgeom
6
7  USE lmdz_dimensions, ONLY: iim, jjm, llm, ndm
8  USE lmdz_paramet
9  IMPLICIT NONE
10
11  ! P. Le Van
12
13  !  ******************************************************************
14  !  ... calcule la divergence a tous les niveaux d'1 vecteur de compos. x et y...
15  !       x et y  etant des composantes contravariantes   ...
16  !  ****************************************************************
17  !  x  et  y  sont des arguments  d'entree pour le s-prog
18  !    div      est  un argument  de sortie pour le s-prog
19
20
21  !   -------------------------------------------------------------------
22  !
23
24
25
26
27  INTEGER :: klevel
28  REAL :: x(ip1jmp1, klevel), y(ip1jm, klevel), div(ip1jmp1, klevel)
29  INTEGER :: ij, l, i
30  REAL :: aiy1(iip1), aiy2(iip1)
31  REAL :: sumypn, sumyps
32
33
34  DO l = 1, klevel
35
36    DO ij = iip2, ip1jm - 1
37      div(ij + 1, l) = x(ij + 1, l) - x(ij, l) + y(ij - iim, l) - y(ij + 1, l)
38    END DO
39
40    ! ....  correction pour  div( 1,j,l)  ......
41    ! ....   div(1,j,l)= div(iip1,j,l) ....
42
43    !DIR$ IVDEP
44    DO ij = iip2, ip1jm, iip1
45      div(ij, l) = div(ij + iim, l)
46    END DO
47
48    ! ....  calcul  aux poles  .....
49
50
51    DO i = 1, iim
52      aiy1(i) = y(i, l)
53      aiy2(i) = y(i + ip1jmi1, l)
54    END DO
55    sumypn = SSUM (iim, aiy1, 1)
56    sumyps = SSUM (iim, aiy2, 1)
57    DO i = 1, iip1
58      div(i, l) = - sumypn / iim
59      div(i + ip1jm, l) = sumyps / iim
60    END DO
61
62  END DO
63  RETURN
64END SUBROUTINE divergst
Note: See TracBrowser for help on using the repository browser.