6 |
|
|
7 |
SUBROUTINE conf_dat3d(xd, yd, zd, xf, yf, zf, champd) |
SUBROUTINE conf_dat3d(xd, yd, zd, xf, yf, zf, champd) |
8 |
|
|
9 |
! From dyn3d/conf_dat3d.F, version 1.1.1.1 2004/05/19 12:53:05 |
! From dyn3d/conf_dat3d.F, version 1.1.1.1, 2004/05/19 12:53:05 |
10 |
|
|
11 |
! Author : P. Le Van |
! Author: P. Le Van |
12 |
|
|
13 |
! Ce sous-programme configure le champ de données 3D 'champd' pour |
! Ce sous-programme configure le champ de donn\'ees 3D 'champd' pour |
14 |
! que la longitude varie de - pi à pi, la latitude de pi/2 à |
! que la longitude varie de - pi \`a pi, la latitude de pi/2 \`a |
15 |
! - pi/2 et pour que la coordonnée pression soit décroissante. |
! - pi/2 et pour que la coordonn\'ee pression soit d\'ecroissante. |
16 |
|
|
17 |
use comconst, only: pi |
use nr_util, only: assert_eq, pi |
|
use nr_util, only: assert_eq |
|
18 |
|
|
19 |
REAL, intent(in):: xd(:), yd(:) ! longitudes et latitudes initiales, en rad |
REAL, intent(in):: xd(:), yd(:) ! longitudes et latitudes initiales, en rad |
20 |
REAL, intent(in):: zd(:) ! pressure levels, in Pa or hPa |
REAL, intent(in):: zd(:) ! pressure levels, in Pa or hPa |
42 |
ELSE IF (xd(1) >= -0.5 .AND. xd(lons) <= 2 * pi+0.5) THEN |
ELSE IF (xd(1) >= -0.5 .AND. xd(lons) <= 2 * pi+0.5) THEN |
43 |
invlon = .TRUE. |
invlon = .TRUE. |
44 |
ELSE |
ELSE |
45 |
print *, 'Problème sur les longitudes des données' |
print *, "Probl\`eme sur les longitudes des donn\'ees" |
46 |
stop 1 |
stop 1 |
47 |
ENDIF |
ENDIF |
48 |
|
|
50 |
rlatmax = MAX(yd(1), yd(lats)) |
rlatmax = MAX(yd(1), yd(lats)) |
51 |
|
|
52 |
IF (rlatmin < -pi / 2 - 0.5 .or. rlatmax > pi / 2 + 0.5) THEN |
IF (rlatmin < -pi / 2 - 0.5 .or. rlatmax > pi / 2 + 0.5) THEN |
53 |
print *, ' Problème sur les latitudes des données' |
print *, "Probl\`eme sur les latitudes des donn\'ees" |
54 |
stop 1 |
stop 1 |
55 |
ENDIF |
ENDIF |
56 |
|
|
58 |
yf(:) = yd(:) |
yf(:) = yd(:) |
59 |
|
|
60 |
IF (invlon) THEN |
IF (invlon) THEN |
61 |
! On tourne les longitudes pour avoir - pi à pi |
! On tourne les longitudes pour avoir - pi \`a pi |
62 |
DO i=1, lons |
DO i=1, lons |
63 |
IF (xf(i) > pi) exit |
IF (xf(i) > pi) exit |
64 |
ENDDO |
ENDDO |