!
! $Header$
!
       SUBROUTINE ord_coord ( nmax, xi, xo, decrois )

c   .... Auteur :  P. Le Van  .... 
c
c   ... Reordonne eventuellement les coordonnees de la grille donnees ...
c
       IMPLICIT NONE

c    .....  Arguments  en entree  .....

       INTEGER nmax
       REAL xi(nmax)

c    .....  Arguments  en sortie  .....
c
       REAL xo(nmax+1) 
       LOGICAL decrois

c    .... Variables  locales  ....

       REAL xscr(nmax)
       INTEGER i,ii
       REAL pi, degres, chmin, chmax, mult
c

       pi     = 2.*ASIN(1.)
       degres = 180./pi
       decrois = .FALSE.

       DO i = 1, nmax 
        xo(i) = xi(i)
       ENDDO
     
       mult = 1.
       IF( xo(1).GT.xo(nmax) ) mult = -1.

       CALL minmax(nmax,xo(1),chmin,chmax)

       IF(chmax.LT.6.5 )  THEN
          DO i = 1,nmax
           xo(i) = xo(i) * degres 
          ENDDO
       ENDIF

       IF( ABS( xo( 1  ) + mult* 90. ). LT .0.001. OR .
     ,     ABS( xo(nmax) - mult* 90. ). LT .0.001      )  THEN
        PRINT *,' Reverifier les valeurs de  xidat  pour les donnees .'
        PRINT *,' Elles doivent correspondre aux interfaces et non aux',
     , 'ordonnees des donnees,egales a -90. et 90.deg aux 2 extremites '
         CALL ABORT
       ENDIF

       IF( xo(1).GT.xo(nmax) )   THEN
          DO i = 1, nmax 
            xscr(i) = xo(i)
          ENDDO
          DO i = 1, nmax 
            xo(i+1) = xscr(i)
          ENDDO
            xo (   1    ) =   90.
       ELSE
            xo ( nmax +1) =   90.
       ENDIF

       IF ( xo(2).LT.xo(1) ) decrois =.TRUE.

       DO i = 3, nmax 

        IF(decrois.AND.xo(i).GT.xo(i-1) ) THEN
         PRINT 1
         PRINT 2,(xo(ii),ii=1,nmax)
         CALL ABORT 
        ENDIF
        IF(.NOT.decrois.AND.xo(i).LT.xo(i-1) ) THEN
         PRINT 1
         PRINT 2,(xo(ii),ii=1,nmax)
         CALL ABORT
        ENDIF

       ENDDO
        
       IF( decrois )  THEN
c         CALL sort(nmax+1,xo(1))
        CALL sort(nmax+1,xo)
       ENDIF

1      FORMAT(5x,' Incoherence dans les valeurs des latitudes de la ',
     ,  'grille du modele ')
2      FORMAT(1x,8f8.2)

       RETURN
       END
