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