1 | ! $Header$ |
---|
2 | |
---|
3 | SUBROUTINE 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 |
---|
113 | END SUBROUTINE test_period |
---|