source: LMDZ6/branches/Amaury_dev/libf/dyn3d_common/test_period.f90 @ 5195

Last change on this file since 5195 was 5182, checked in by abarral, 3 months ago

(WIP) Replace REPROBUS CPP KEY by logical
properly name 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: 3.4 KB
Line 
1! $Header$
2
3SUBROUTINE test_period(ucov, vcov, teta, q, p, phis)
4
5  ! Auteur : P. Le Van
6  !    ---------
7  !  ....  Cette routine teste la periodicite en longitude des champs   ucov,
8  !                       teta, q , p et phis                 ..........
9
10  USE lmdz_infotrac, ONLY: nqtot
11
12  USE lmdz_dimensions, ONLY: iim, jjm, llm, ndm
13  USE lmdz_paramet
14  IMPLICIT NONE
15  !
16
17
18  !    ......  Arguments   ......
19
20  REAL :: ucov(ip1jmp1, llm), vcov(ip1jm, llm), teta(ip1jmp1, llm), &
21          q(ip1jmp1, llm, nqtot), p(ip1jmp1, llmp1), phis(ip1jmp1)
22
23  !   .....  Variables  locales  .....
24
25  INTEGER :: ij, l, nq
26
27  DO l = 1, llm
28    DO ij = 1, ip1jmp1, iip1
29      IF(ucov(ij, l)/=ucov(ij + iim, l))  THEN
30        PRINT *, 'STOP dans test_period car ---  UCOV  ---  n est pas', &
31                ' periodique en longitude ! '
32        PRINT *, ' l,  ij = ', l, ij, ij + iim
33        STOP
34      ENDIF
35      IF(teta(ij, l)/=teta(ij + iim, l))  THEN
36        PRINT *, 'STOP dans test_period car ---  TETA  ---  n est pas', &
37                ' periodique en longitude ! '
38        PRINT *, ' l,  ij = ', l, ij, ij + iim &
39                , teta(ij, l), teta(ij + iim, l)
40        STOP
41      ENDIF
42    ENDDO
43
44    DO ij = 1, iim
45      IF (teta(ij, l)/=teta(1, l) &
46              .OR.teta(ip1jm + ij, l)/=teta(ip1jm + 1, l)) THEN
47        PRINT *, 'STOP dans test_period car ---  TETA  ---  n est pas', &
48                ' constant aux poles ! '
49        PRINT*, 'teta(', 1, ',', l, ')=', teta(1, l)
50        PRINT*, 'teta(', ij, ',', l, ')=', teta(ij, l)
51        PRINT*, 'teta(', ip1jm + 1, ',', l, ')=', teta(ip1jm + 1, l)
52        PRINT*, 'teta(', ip1jm + ij, ',', l, ')=', teta(ip1jm + ij, l)
53        stop
54      endif
55    enddo
56  ENDDO
57
58  DO l = 1, llm
59    DO ij = 1, ip1jm, iip1
60      IF(vcov(ij, l)/=vcov(ij + iim, l))  THEN
61        PRINT *, 'STOP dans test_period car ---  VCOV  ---  n est pas', &
62                ' periodique en longitude !'
63        PRINT *, ' l,  ij = ', l, ij, ij + iim, vcov(ij + iim, l), vcov(ij, l)
64        vcov(ij + iim, l) = vcov(ij, l)
65        ! STOP
66      ENDIF
67    ENDDO
68  ENDDO
69
70  DO nq = 1, nqtot
71    DO l = 1, llm
72      DO ij = 1, ip1jmp1, iip1
73        IF(q(ij, l, nq)/=q(ij + iim, l, nq))  THEN
74          PRINT *, 'STOP dans test_period car ---  Q  ---  n est pas ', &
75                  'periodique en longitude !'
76          PRINT *, ' nq , l,  ij = ', nq, l, ij, ij + iim
77          STOP
78        ENDIF
79      ENDDO
80    ENDDO
81  ENDDO
82
83  DO l = 1, llm
84    DO ij = 1, ip1jmp1, iip1
85      IF(p(ij, l)/=p(ij + iim, l))  THEN
86        PRINT *, 'STOP dans test_period car ---  P  ---  n est pas', &
87                ' periodique en longitude !'
88        PRINT *, ' l ij = ', l, ij, ij + iim
89        STOP
90      ENDIF
91      IF(phis(ij)/=phis(ij + iim))  THEN
92        PRINT *, 'STOP dans test_period car ---  PHIS  ---  n est pas', &
93                ' periodique en longitude !  l, IJ = ', l, ij, ij + iim
94        PRINT *, ' ij = ', ij, ij + iim
95        STOP
96      ENDIF
97    ENDDO
98    DO ij = 1, iim
99      IF (p(ij, l)/=p(1, l) &
100              .OR.p(ip1jm + ij, l)/=p(ip1jm + 1, l)) THEN
101        PRINT *, 'STOP dans test_period car ---  P     ---  n est pas', &
102                ' constant aux poles ! '
103        PRINT*, 'p(', 1, ',', l, ')=', p(1, l)
104        PRINT*, 'p(', ij, ',', l, ')=', p(ij, l)
105        PRINT*, 'p(', ip1jm + 1, ',', l, ')=', p(ip1jm + 1, l)
106        PRINT*, 'p(', ip1jm + ij, ',', l, ')=', p(ip1jm + ij, l)
107        stop
108      endif
109    enddo
110  ENDDO
111
112  RETURN
113END SUBROUTINE test_period
Note: See TracBrowser for help on using the repository browser.