source: Sophya/trunk/Eval/JET/fmtx.f@ 3670

Last change on this file since 3670 was 2366, checked in by ansari, 22 years ago

Ajout fonctions Sin/Cos/... ds jet.h + prog en f90 - Reza 18/4/2003

File size: 4.2 KB
Line 
1 PROGRAM MAIN
2 IMPLICIT NONE
3C PARAMETER M = 50000
4 DOUBLE PRECISION MX1(1000,500), MX2(1000,500), MX3(1000,500)
5 DOUBLE PRECISION MX4(1000,500), MX5(1000,500)
6 INTEGER I,J,K,NTIME,TYP
7 DOUBLE PRECISION X,Y,Z,C1,C2,C3
8
9 CALL FInitTim()
10 NTIME = 50
11 TYP = 3
12 PRINT *,' Remplissage MX1 MX2 (1000x500) - NTimes=', NTIME
13 DO K=1,NTIME
14 X = FLOAT(K)*0.00314
15 Y = SIN(X)
16 CALL FILLMTX(K,X,Y,MX1,MX2,MX3)
17 ENDDO
18
19 PRINT *, 'FIN Remplissage '
20 CALL FPrtTim(1)
21
22 DO K=1,NTIME
23 C1 = K*0.035
24 C2 = COS(C1)+0.04
25 C3 = SIN(C1*5.)
26 CALL OPERMTX(K, MX1, MX2, MX5, C1, C2, C3)
27 ENDDO
28 PRINT *, 'FIN MX5 = C1*MX1 + MX1 * MX2*C2 + MX2C3 '
29 CALL FPrtTim(2)
30
31 DO K=1,NTIME
32 C1 = K*0.055
33 C2 = COS(C1*1.6)+0.023
34 C3 = SIN(C1*2.5)
35 CALL OPADDMTX(K, MX1, MX2, MX3, MX5, C1, C2, C3)
36 ENDDO
37 PRINT *, 'FIN MX5 = C1*MX1 + C2*MX2 + C3*MX3 '
38 CALL FPrtTim(3)
39
40 DO K=1,NTIME
41 C1 = K*0.055
42 C2 = COS(C1*1.6)+0.023
43 C3 = SIN(C1*2.5)
44 CALL MTXBLAS(K, MX1, MX2, MX3, MX4, MX5, C1, C2, C3)
45 ENDDO
46 PRINT *, 'FIN MTXBLAS MX5 = C1*MX1 + C2*MX2 + C3*MX3 '
47 CALL FPrtTim(4)
48
49 DO K=1,NTIME
50 C1 = K*0.135
51 C2 = COS(6.*C1)+0.04
52 C3 = SIN(C1*8.5)
53 CALL OPEFMTX(K, MX1, MX2, MX5, C1, C2, C3)
54 ENDDO
55 PRINT *, 'FIN MX5 = C1*MX1 + MX3 + COS(C2*MX2*MX1) '
56 CALL FPrtTim(5)
57
58 PRINT *, ' ------ FIN programme ---------- '
59 END
60
61 SUBROUTINE FILLMTX(K, X,Y, MX1, MX2, MX3)
62 DOUBLE PRECISION X,Y
63 DOUBLE PRECISION MX1(1000,500), MX2(1000,500), MX3(1000,500)
64 INTEGER I,J,K
65 DO I=1,1000
66 DO J=1,500
67 MX1(I,J) = K*300.+10.*I+J+X
68 MX2(I,J) = K*550.+20.*I+2.*J+Y
69 MX3(I,J) = K*860.+40.*I+7.*J+Y*3.14
70 ENDDO
71 ENDDO
72 IF (K.EQ.5) PRINT *, 'FILLMTX - 5 -> ', MX1(12,14)
73 IF (K.EQ.15) PRINT *, 'FILLMTX - 15 -> ', MX2(12,15)
74
75 RETURN
76 END
77
78 SUBROUTINE OPERMTX(K, MX1, MX2, MX5, C1, C2, C3)
79 INTEGER I,J,K
80 DOUBLE PRECISION MX1(1000,500), MX2(1000,500)
81 DOUBLE PRECISION MX5(1000,500)
82 DOUBLE PRECISION C1,C2,C3
83 DO I=1,1000
84 DO J=1,500
85 MX5(I,J) = C1*MX1(I,J)+MX1(I,J)*(MX2(I,J)*C2)+MX2(I,J)*C3
86 ENDDO
87 ENDDO
88 IF (K.EQ.5) PRINT *, 'OPERMTX - 5 -> ', MX5(20,5)
89 IF (K.EQ.15) PRINT *, 'OPEEMTX - 15 -> ', MX5(20,15)
90 RETURN
91 END
92
93 SUBROUTINE OPEFMTX(K, MX1, MX2, MX5, C1, C2, C3)
94 INTEGER I,J,K
95 DOUBLE PRECISION MX1(1000,500), MX2(1000,500)
96 DOUBLE PRECISION MX5(1000,500)
97 DOUBLE PRECISION C1,C2,C3
98 DO I=1,1000
99 DO J=1,500
100 MX5(I,J) = C1*MX1(I,J)+MX2(I,J)+
101 + C3*COS(C2*MX2(I,J)*MX1(I,J))
102 ENDDO
103 ENDDO
104 IF (K.EQ.5) PRINT *, 'OPEFMTX/COS - 5 -> ', MX5(20,5)
105 IF (K.EQ.15) PRINT *, 'OPEFMTX/COS - 15 -> ', MX5(20,15)
106 RETURN
107 END
108
109 SUBROUTINE OPADDMTX(K, MX1, MX2, MX3, MX5, C1, C2, C3)
110 INTEGER I,J,K
111 DOUBLE PRECISION MX1(1000,500), MX2(1000,500)
112 DOUBLE PRECISION MX3(1000,500), MX5(1000,500)
113 DOUBLE PRECISION C1,C2,C3
114 DO I=1,1000
115 DO J=1,500
116 MX5(I,J) = C1*MX1(I,J)+C2*MX2(I,J)+MX3(I,J)*C3
117 ENDDO
118 ENDDO
119 IF (K.EQ.5) PRINT *, 'OPADDMTX - 5 -> ', MX5(20,5)
120 IF (K.EQ.15) PRINT *, 'OPADDMTX - 15 -> ', MX5(20,15)
121
122 RETURN
123 END
124
125 SUBROUTINE MTXBLAS(K, MX1, MX2, MX3, MX4, MX5, C1, C2, C3)
126 INTEGER I,J,K,NTOT
127 DOUBLE PRECISION MX1(1000,500), MX2(1000,500)
128 DOUBLE PRECISION MX5(1000,500)
129 DOUBLE PRECISION C1,C2,C3
130 NTOT = 1000*500
131C Sur OSF :
132C CALL DVCAL(NTOT, C1, MX1, 1, MX5, 1)
133C CALL DZAXPY(NTOT, C2, MX2, 1, MX5, 1, MX4, 1)
134C CALL DZAXPY(NTOT, C3, MX3, 1, MX4, 1, MX5, 1)
135C Sinon
136 CALL DCOPY(NTOT, MX1, 1, MX5, 1)
137 CALL DSCAL(NTOT, C1, MX5, 1)
138 CALL DAXPY(NTOT, C2, MX2, 1, MX5, 1)
139 CALL DAXPY(NTOT, C3, MX3, 1, MX3, 1)
140 IF (K.EQ.5) PRINT *, 'MTXBLAS - 5 -> ', MX5(20,5),
141 + ' NTot=' , NTOT
142 IF (K.EQ.15) PRINT *, 'MTXBLAS - 15 -> ', MX5(20,15),
143 + ' NTot=' , NTOT
144 RETURN
145 END
146
Note: See TracBrowser for help on using the repository browser.