1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| IMPLICIT NONE
INCLUDE 'Param'
C
INTEGER NRNG,NAZ
C REAL PCR(0:4000)
REAL, DIMENSION ( : , : ), ALLOCATABLE :: PCRMOY
REAL, DIMENSION ( : ), ALLOCATABLE :: RNGCAZ
REAL, DIMENSION ( : ), ALLOCATABLE :: RNGCUM
REAL, DIMENSION ( : ), ALLOCATABLE :: PCR
c REAL RNGCUM(0:4000),PCRMOY(0:4000,50)
C REAL RNGCAZ(50)
INTEGER IRNG,IAZ
REAL RNG,X1,X2,Y1,Y2,DIST,PCUM
INTEGER MPB_PDC
C
ENTRY CUMPRX(NAZ,NRNG,PCUM,MPB_PDC)
allocate(PCRMOY(0:4000,50))
allocate(PCR(0:4000))
allocate(RNGCUM(0:4000))
allocate(RNGCAZ(50))
DO 20, IAZ = 1,NAZ
IF (PCUM.LE.PCRMOY(1,IAZ)) THEN
IF (IAZ.EQ.NAZ)
+ PRINT*,' DISTANCES CALCULEES TROP PETITES (PDCUM =',PCUM,')'
RNGCAZ(IAZ) = RNGCUM(1) : l'erreur se produit sur cette ligne
ELSE
IF (MPB_PDC.EQ.0) THEN
IF (PCUM.GE.PCRMOY(NRNG,IAZ)) THEN
IF (IAZ.EQ.NAZ)
+ PRINT*,' DISTANCES CALCULEES TROP GRANDES (PDCUM =',PCUM,')'
RNGCAZ(IAZ) = -1.
ELSE
DO 10, IRNG = 0,NRNG
IF ( (PCUM.GT.PCRMOY(IRNG,IAZ)).AND.
+ (PCUM.LT.PCRMOY(IRNG+1,IAZ)) ) THEN
X1 = RNGCUM(IRNG)
X2 = RNGCUM(IRNG+1)
Y1 = PCRMOY(IRNG,IAZ)
Y2 = PCRMOY(IRNG+1,IAZ)
RNGCAZ(IAZ) = (X2-X1)/(Y2-Y1)*(PCUM-Y1)+X1
END IF
10 CONTINUE
END IF
ELSE
DO 15, IRNG = 0,NRNG
IF (PCUM.LE.PCRMOY(IRNG,IAZ)) THEN
RNGCAZ(IAZ) = RNGCUM(IRNG)
GO TO 16
ELSE IF (IRNG.EQ.NRNG) THEN
IF (IAZ.EQ.NAZ)
+ PRINT*,' DISTANCES CALCULEES TROP GRANDES (PDCUM =',PCUM,')'
RNGCAZ(IAZ) = -1.
END IF
15 CONTINUE
... |
Partager