-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprediz.f
More file actions
66 lines (53 loc) · 1.56 KB
/
prediz.f
File metadata and controls
66 lines (53 loc) · 1.56 KB
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
PROGRAM PREDIZIONE
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
PARAMETER (NMAXS=3000)
CHARACTER*80 FILEIN,FILEOUT,NFILE
DIMENSION COEF(NMAXS)
PRINT *,' NOME DEL FILE DEI COEFFICIENTI '
READ(*,'(A80)') NFILE
OPEN(9,FILE=NFILE,STATUS='OLD')
READ(9,*) XORI,YORI,STP,ES,NI,NIX
READ(9,*) (COEF(J),J=1,NI)
XMXS=XORI+(NIX-1)*STP
YMXS=YORI+(NI/NIX - 1)*STP
CLOSE(9)
WRITE (6,*) ' SCRIVI IL FILE DI INPUT '
READ(*,'(A80)') FILEIN
WRITE (6,*) ' SCRIVI IL FILE DI OUTPUT '
READ(*,'(A80)') FILEOUT
OPEN(UNIT=13, FILE=FILEIN , STATUS='OLD')
OPEN(UNIT=14, FILE=FILEOUT , STATUS='NEW')
I=0
print *,XMXS,YMXS,XORI,YORI
20 READ(13,*,END=10) N,XS,YS
IF(XS.LT.XMXS.AND.XS.GT.XORI.AND.YS.LT.YMXS.
+ AND.YS.GT.YORI)THEN
CALL PREBIL(XS,YS,XORI,YORI,STP,COEF,NIX,ZS)
I=I+1
write(14,'(5X,3(F15.5))') XS,YS,ZS
ENDIF
GOTO 20
10 N1=I
write(*,*) N1
STOP
END
C***************************** PREBIL
SUBROUTINE PREBIL(XS,YS,X0,Y0,STP,COEF,NI,U)
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
DIMENSION COEF(1)
U=0.D0
X=XS-X0
Y=YS-Y0
ST=STP
NIX=NI
NX=IDINT(X/ST)+1
NY=IDINT(Y/ST)+1
NC=(NY-1)*(NIX-1)+NX
SRX=(X-(NX-1)*ST)/ST
SRY=(Y-(NY-1)*ST)/ST
NIC=(NY-1)*NIX+NX
U=COEF(NIC)*(1.D0-SRX-SRY+SRX*SRY)+
.COEF(NIC+1)*(SRX-SRX*SRY)+COEF(NIC+NIX)*(SRY-SRX*SRY)+
.COEF(NIC+NIX+1)*SRX*SRY
RETURN
END