6 SUBROUTINE conf_dat3d( title, lons,lats,levs,xd,yd,zd,xf,yf,zf,
33 CHARACTER*(*) ::
title
34 INTEGER lons, lats, levs
35 REAL xd(lons),
yd(lats),
zd(levs)
39 REAL xf(lons), yf(lats), zf(levs)
42 REAL champd(lons,lats,levs)
46 REAL pi,pis2,depi,presmax
47 LOGICAL radianlon, invlon ,radianlat, invlat, invlev, alloc
48 REAL rlatmin,rlatmax,oldxd1
49 INTEGER i,
j,ip180,ind,
l
51 REAL,
ALLOCATABLE :: xtemp(:)
52 REAL,
ALLOCATABLE :: ytemp(:)
53 REAL,
ALLOCATABLE :: ztemp(:)
54 REAL,
ALLOCATABLE :: champf(:,:,:)
77 IF( xtemp(1).GE.-
pi-0.5.AND. xtemp(lons).LE.
pi+0.5 )
THEN
80 ELSE IF (xtemp(1).GE.-0.5.AND.xtemp(lons).LE.depi+0.5 )
THEN
83 ELSE IF ( xtemp(1).GE.-180.5.AND. xtemp(lons).LE.180.5 )
THEN
86 ELSE IF ( xtemp(1).GE.-0.5.AND.xtemp(lons).LE.360.5 )
THEN
90 WRITE(6,*)
'Pbs. sur les longitudes des donnees pour le fichier'
96 IF( ytemp(1).LT.ytemp(lats) )
THEN
100 rlatmin = min( ytemp(1), ytemp(lats) )
101 rlatmax = max( ytemp(1), ytemp(lats) )
103 IF( rlatmin.GE.-pis2-0.5.AND.rlatmax.LE.pis2+0.5)
THEN
105 ELSE IF ( rlatmin.GE.-90.-0.5.AND.rlatmax.LE.90.+0.5 )
THEN
108 WRITE(6,*)
' Pbs. sur les latitudes des donnees pour le fichier'
112 IF( .NOT. radianlon )
THEN
114 xtemp(
i) = xtemp(
i) *
pi/180.
118 IF( .NOT. radianlat )
THEN
120 ytemp(
j) = ytemp(
j) *
pi/180.
129 ALLOCATE(champf(lons,lats,levs))
139 champf(
i,
j,
l) = champd(
i,
j,
l)
147 IF( xf(
i).GT.
pi )
THEN
157 IF (xf(
i).GT.
pi)
THEN
177 champd(ind,
j,
l) = champf(
i,
j,
l)
181 champd(
i,
j,
l) = champf(
i-ind,
j,
l)
193 ALLOCATE(champf(lons,lats,levs))
204 champf(
i,
j,
l) = champd(
i,
j,
l)
209 ytemp( lats-
j+1 ) = yf(
j)
211 champd(
i,lats-
j+1,
l) = champf(
i,
j,
l)
225 xtemp(
i) = 0.5 * ( xtemp(
i) + xtemp(
i+1) )
227 xtemp(lons) = 0.5 * ( xtemp(lons) + oldxd1 + depi )
230 ytemp(
j) = 0.5 * ( ytemp(
j) + ytemp(
j+1) )
236 IF( ztemp(1).LT.ztemp(levs) ) invlev = .true.
238 presmax = max( ztemp(1), ztemp(levs) )
239 IF( presmax.LT.1200. )
THEN
241 ztemp(
l) = ztemp(
l) * 100.
248 ALLOCATE(champf(lons,lats,levs))
259 champf(
i,
j,
l) = champd(
i,
j,
l)
265 ztemp(levs+1-
l) = zf(
l)
271 champd(
i,
j,levs+1-
l) = champf(
i,
j,
l)
279 IF(alloc)
DEALLOCATE(champf)