source: LMDZ4/trunk/libf/dyn3dpar/ord_coord.F @ 1114

Last change on this file since 1114 was 774, checked in by Laurent Fairhead, 17 years ago

Suite du merge entre la version et la HEAD: quelques modifications de
Yann sur le

LF

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.1 KB
Line 
1!
2! $Header$
3!
4       SUBROUTINE ord_coord ( nmax, xi, xo, decrois )
5
6c   .... Auteur :  P. Le Van  ....
7c
8c   ... Reordonne eventuellement les coordonnees de la grille donnees ...
9c
10       IMPLICIT NONE
11
12c    .....  Arguments  en entree  .....
13
14       INTEGER nmax
15       REAL xi(nmax)
16
17c    .....  Arguments  en sortie  .....
18c
19       REAL xo(nmax+1)
20       LOGICAL decrois
21
22c    .... Variables  locales  ....
23
24       REAL xscr(nmax)
25       INTEGER i,ii
26       REAL pi, degres, chmin, chmax, mult
27c
28
29       pi     = 2.*ASIN(1.)
30       degres = 180./pi
31       decrois = .FALSE.
32
33       DO i = 1, nmax
34        xo(i) = xi(i)
35       ENDDO
36     
37       mult = 1.
38       IF( xo(1).GT.xo(nmax) ) mult = -1.
39
40       CALL minmax(nmax,xo(1),chmin,chmax)
41
42       IF(chmax.LT.6.5 )  THEN
43          DO i = 1,nmax
44           xo(i) = xo(i) * degres
45          ENDDO
46       ENDIF
47
48       IF( ABS( xo( 1  ) + mult* 90. ). LT .0.001. OR .
49     ,     ABS( xo(nmax) - mult* 90. ). LT .0.001      )  THEN
50        PRINT *,' Reverifier les valeurs de  xidat  pour les donnees .'
51        PRINT *,' Elles doivent correspondre aux interfaces et non aux',
52     , 'ordonnees des donnees,egales a -90. et 90.deg aux 2 extremites '
53         CALL ABORT
54       ENDIF
55
56       IF( xo(1).GT.xo(nmax) )   THEN
57          DO i = 1, nmax
58            xscr(i) = xo(i)
59          ENDDO
60          DO i = 1, nmax
61            xo(i+1) = xscr(i)
62          ENDDO
63            xo (   1    ) =   90.
64       ELSE
65            xo ( nmax +1) =   90.
66       ENDIF
67
68       IF ( xo(2).LT.xo(1) ) decrois =.TRUE.
69
70       DO i = 3, nmax
71
72        IF(decrois.AND.xo(i).GT.xo(i-1) ) THEN
73         PRINT 1
74         PRINT 2,(xo(ii),ii=1,nmax)
75         CALL ABORT
76        ENDIF
77        IF(.NOT.decrois.AND.xo(i).LT.xo(i-1) ) THEN
78         PRINT 1
79         PRINT 2,(xo(ii),ii=1,nmax)
80         CALL ABORT
81        ENDIF
82
83       ENDDO
84       
85       IF( decrois )  THEN
86c         CALL sort(nmax+1,xo(1))
87        CALL sort(nmax+1,xo)
88       ENDIF
89
901      FORMAT(5x,' Incoherence dans les valeurs des latitudes de la ',
91     ,  'grille du modele ')
922      FORMAT(1x,8f8.2)
93
94       RETURN
95       END
Note: See TracBrowser for help on using the repository browser.