Ignore:
Timestamp:
Aug 2, 2024, 9:58:25 PM (7 weeks ago)
Author:
abarral
Message:

Put dimensions.h and paramet.h into modules

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Amaury_dev/libf/dyn3d_common/test_period.f90

    r5158 r5159  
    1 
    21! $Header$
    32
    4 SUBROUTINE test_period( ucov, vcov, teta, q, p, phis )
    5   !
     3SUBROUTINE test_period(ucov, vcov, teta, q, p, phis)
     4
    65  ! Auteur : P. Le Van
    76  !    ---------
    87  !  ....  Cette routine teste la periodicite en longitude des champs   ucov,
    98  !                       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
    1015  !
    11   USE infotrac, ONLY: nqtot
    12   !
    13   ! IMPLICIT NONE
    14   !
    15   INCLUDE "dimensions.h"
    16   INCLUDE "paramet.h"
    17   !
     16
     17
    1818  !    ......  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
    2323  !   .....  Variables  locales  .....
    24   !
    25   INTEGER :: ij,l,nq
    26   !
     24
     25  INTEGER :: ij, l, nq
     26
    2727  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
     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
    3434      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
     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
    4141      ENDIF
    42      ENDDO
     42    ENDDO
    4343
    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
     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
    5454      endif
    55      enddo
     55    enddo
    5656  ENDDO
    5757
    58   !
    5958  DO l = 1, llm
    60      DO ij = 1, ip1jm, iip1
    61       IF( vcov(ij,l)/=vcov(ij+iim,l) )  THEN
    62       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       ! STOP
     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
    6766      ENDIF
    68      ENDDO
     67    ENDDO
    6968  ENDDO
    7069
    71   !
    72   DO nq =1, nqtot
    73     DO l =1, llm
     70  DO nq = 1, nqtot
     71    DO l = 1, llm
    7472      DO ij = 1, ip1jmp1, iip1
    75       IF( q(ij,l,nq)/=q(ij+iim,l,nq) )  THEN
    76       PRINT *,'STOP dans test_period car ---  Q  ---  n est pas ', &
    77             'periodique en longitude !'
    78       PRINT *,' nq , l,  ij = ', nq, l, ij, ij+iim
    79       STOP
    80       ENDIF
     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
    8179      ENDDO
    8280    ENDDO
    8381  ENDDO
    84   !
    85    DO l = 1, llm
    86      DO ij = 1, ip1jmp1, iip1
    87       IF( p(ij,l)/=p(ij+iim,l) )  THEN
    88       PRINT *,'STOP dans test_period car ---  P  ---  n est pas', &
    89             ' periodique en longitude !'
    90       PRINT *,' l ij = ',l, ij, ij+iim
    91       STOP
     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
    9290      ENDIF
    93       IF( phis(ij)/=phis(ij+iim) )  THEN
    94       PRINT *,'STOP dans test_period car ---  PHIS  ---  n est pas', &
    95             ' periodique en longitude !  l, IJ = ', l, ij,ij+iim
    96       PRINT *,' ij = ', ij, ij+iim
    97       STOP
     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
    9896      ENDIF
    99      ENDDO
    100      DO ij=1,iim
    101       IF (p(ij,l)/=p(1,l) &
    102             .OR.p(ip1jm+ij,l)/=p(ip1jm+1,l) ) THEN
    103       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       stop
     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
    110108      endif
    111      enddo
    112    ENDDO
    113   !
    114   !
    115      RETURN
     109    enddo
     110  ENDDO
     111
     112  RETURN
    116113END SUBROUTINE test_period
Note: See TracChangeset for help on using the changeset viewer.