source: LMDZ.3.3/trunk/libf/dyn3d/ord_coord.F @ 259

Last change on this file since 259 was 259, checked in by lmdz, 23 years ago

Nouveaux programmes pour la creation des etats initiaux et des conditions aux limites. Levan
LF

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 2.3 KB
Line 
1C
2C $Header$
3C
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(1)
16       INTEGER nscr
17       PARAMETER ( nscr = 4000 )
18       REAL xscr(nscr)
19
20c    .....  Arguments  en sortie  .....
21c
22       REAL xo(1)
23       LOGICAL decrois
24
25c    .... Variables  locales  ....
26
27       INTEGER i,ii
28       REAL pi, degres, chmin, chmax, mult
29c
30
31       IF( nmax.GT.nscr )   THEN
32         PRINT *,' Dans ord_coord  , nmax = ',nmax, 'est plus grand que'
33     ,, ' nscr !  Mettre nscr a la valeur de nmax et repasser ! ' 
34         CALL ABORT
35       ENDIF
36
37       pi     = 2.*ASIN(1.)
38       degres = 180./pi
39       decrois = .FALSE.
40
41       DO i = 1, nmax
42        xo(i) = xi(i)
43       ENDDO
44     
45       mult = 1.
46       IF( xo(1).GT.xo(nmax) ) mult = -1.
47
48       CALL minmax(nmax,xo(1),chmin,chmax)
49
50       IF(chmax.LT.6.5 )  THEN
51          DO i = 1,nmax
52           xo(i) = xo(i) * degres
53          ENDDO
54       ENDIF
55
56       IF( ABS( xo( 1  ) + mult* 90. ). LT .0.001. OR .
57     ,     ABS( xo(nmax) - mult* 90. ). LT .0.001      )  THEN
58        PRINT *,' Reverifier les valeurs de  xidat  pour les donnees .'
59        PRINT *,' Elles doivent correspondre aux interfaces et non aux',
60     , 'ordonnees des donnees,egales a -90. et 90.deg aux 2 extremites '
61         CALL ABORT
62       ENDIF
63
64       IF( xo(1).GT.xo(nmax) )   THEN
65          DO i = 1, nmax
66            xscr(i) = xo(i)
67          ENDDO
68          DO i = 1, nmax
69            xo(i+1) = xscr(i)
70          ENDDO
71            xo (   1    ) =   90.
72       ELSE
73            xo ( nmax +1) =   90.
74       ENDIF
75
76       IF ( xo(2).LT.xo(1) ) decrois =.TRUE.
77
78       DO i = 3, nmax
79
80        IF(decrois.AND.xo(i).GT.xo(i-1) ) THEN
81         PRINT 1
82         PRINT 2,(xo(ii),ii=1,nmax)
83         CALL ABORT
84        ENDIF
85        IF(.NOT.decrois.AND.xo(i).LT.xo(i-1) ) THEN
86         PRINT 1
87         PRINT 2,(xo(ii),ii=1,nmax)
88         CALL ABORT
89        ENDIF
90
91       ENDDO
92       
93       IF( decrois )  THEN
94         CALL sort(nmax+1,xo(1))
95       ENDIF
96
971      FORMAT(5x,' Incoherence dans les valeurs des latitudes de la ',
98     ,  'grille du modele ')
992      FORMAT(1x,8f8.2)
100
101       RETURN
102       END
Note: See TracBrowser for help on using the repository browser.