- Timestamp:
- Aug 2, 2024, 9:58:25 PM (7 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/test_period.f90
r5158 r5159 1 2 1 ! $Header$ 3 2 4 SUBROUTINE test_period( ucov, vcov, teta, q, p, phis)5 ! 3 SUBROUTINE test_period(ucov, vcov, teta, q, p, phis) 4 6 5 ! Auteur : P. Le Van 7 6 ! --------- 8 7 ! .... Cette routine teste la periodicite en longitude des champs ucov, 9 8 ! teta, q , p et phis .......... 9 10 USE infotrac, ONLY: nqtot 11 12 USE lmdz_dimensions, ONLY: iim, jjm, llm, ndm 13 USE lmdz_paramet 14 IMPLICIT NONE 10 15 ! 11 USE infotrac, ONLY: nqtot 12 ! 13 ! IMPLICIT NONE 14 ! 15 INCLUDE "dimensions.h" 16 INCLUDE "paramet.h" 17 ! 16 17 18 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 ! 19 20 REAL :: ucov(ip1jmp1, llm), vcov(ip1jm, llm), teta(ip1jmp1, llm), & 21 q(ip1jmp1, llm, nqtot), p(ip1jmp1, llmp1), phis(ip1jmp1) 22 23 23 ! ..... Variables locales ..... 24 ! 25 INTEGER :: ij, l,nq26 ! 24 25 INTEGER :: ij, l, nq 26 27 27 DO l = 1, llm 28 29 IF( ucov(ij,l)/=ucov(ij+iim,l)) THEN30 PRINT *,'STOP dans test_period car --- UCOV --- n est pas', &31 ' periodique en longitude ! '32 PRINT *,' l, ij = ', l, ij, ij+iim33 STOP28 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 34 ENDIF 35 IF( teta(ij,l)/=teta(ij+iim,l)) THEN36 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 STOP35 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 41 ENDIF 42 42 ENDDO 43 43 44 DO ij=1,iim45 IF (teta(ij, l)/=teta(1,l) &46 .OR.teta(ip1jm+ij,l)/=teta(ip1jm+1,l)) THEN47 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 stop44 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 54 endif 55 55 enddo 56 56 ENDDO 57 57 58 !59 58 DO l = 1, llm 60 61 IF( vcov(ij,l)/=vcov(ij+iim,l)) THEN62 PRINT *,'STOP dans test_period car --- VCOV --- n est pas', &63 ' periodique en longitude !'64 PRINT *,' l, ij = ', l, ij, ij+iim,vcov(ij+iim,l),vcov(ij,l)65 vcov(ij+iim,l)=vcov(ij,l)66 ! STOP59 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 67 66 ENDIF 68 67 ENDDO 69 68 ENDDO 70 69 71 ! 72 DO nq =1, nqtot 73 DO l =1, llm 70 DO nq = 1, nqtot 71 DO l = 1, llm 74 72 DO ij = 1, ip1jmp1, iip1 75 IF( q(ij,l,nq)/=q(ij+iim,l,nq)) THEN76 PRINT *,'STOP dans test_period car --- Q --- n est pas ', &77 'periodique en longitude !'78 PRINT *,' nq , l, ij = ', nq, l, ij, ij+iim79 STOP80 ENDIF73 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 81 79 ENDDO 82 80 ENDDO 83 81 ENDDO 84 ! 85 86 87 IF( p(ij,l)/=p(ij+iim,l)) THEN88 PRINT *,'STOP dans test_period car --- P --- n est pas', &89 ' periodique en longitude !'90 PRINT *,' l ij = ',l, ij, ij+iim91 STOP82 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 92 90 ENDIF 93 IF( phis(ij)/=phis(ij+iim)) THEN94 PRINT *,'STOP dans test_period car --- PHIS --- n est pas', &95 ' periodique en longitude ! l, IJ = ', l, ij,ij+iim96 PRINT *,' ij = ', ij, ij+iim97 STOP91 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 98 96 ENDIF 99 100 DO ij=1,iim101 IF (p(ij, l)/=p(1,l) &102 .OR.p(ip1jm+ij,l)/=p(ip1jm+1,l)) THEN103 PRINT *,'STOP dans test_period car --- P --- n est pas', &104 ' constant aux poles ! '105 PRINT*,'p(',1 ,',',l,')=',p(1 ,l)106 PRINT*,'p(',ij,',',l,')=',p(ij,l)107 PRINT*,'p(',ip1jm+1 ,',',l,')=',p(ip1jm+1 ,l)108 PRINT*,'p(',ip1jm+ij,',',l,')=',p(ip1jm+ij,l)109 stop97 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 110 108 endif 111 enddo 112 ENDDO 113 ! 114 ! 115 RETURN 109 enddo 110 ENDDO 111 112 RETURN 116 113 END SUBROUTINE test_period
Note: See TracChangeset
for help on using the changeset viewer.