34
35
36
37#include "implicit_f.inc"
38
39
40
41
42
43
44 INTEGER, INTENT(IN) :: ISMSTR
45 INTEGER NEL
47 . offg(*),wxx(*),wyy(*),wzz(*),
48 . r11(*),r12(*),r13(*),
49 . r21(*),r22(*),r23(*),
50 . r31(*),r32(*),r33(*)
51 double precision
52 . sav(nel,21)
53
54
55
56 INTEGER I,j
57
58 double precision
59 . x , y, z ,wxxg,wyyg,wzzg
60
61
62
63
64 IF(ismstr==11)THEN
65
66 DO i=1,nel
67 wxxg=r11(i)*wxx(i)+r12(i)*wyy(i)+r13(i)*wzz(i)
68 wyyg=r21(i)*wxx(i)+r22(i)*wyy(i)+r23(i)*wzz(i)
69 wzzg=r31(i)*wxx(i)+r32(i)*wyy(i)+r33(i)*wzz(i)
70 wxx(i) = wxxg
71 wyy(i) = wyyg
72 wzz(i) = wzzg
73 END DO
74 DO i=1,nel
75
76 IF(offg(i)==zero) cycle
77 x=sav(i,1)
78 y=sav(i,8)
79 z=sav(i,15)
80 sav(i,1) = x - y*wzz(i) + z*wyy(i)
81 sav(i,8) = y - z*wxx(i) + x*wzz(i)
82 sav(i,15)= z - x*wyy(i) + y*wxx(i)
83
84 x=sav(i,2)
85 y=sav(i,9)
86 z=sav(i,16)
87 sav(i,2) = x - y*wzz(i) + z*wyy(i)
88 sav(i,9) = y - z*wxx(i) + x*wzz(i)
89 sav(i,16)= z - x*wyy(i) + y*wxx(i)
90
91 x=sav(i,3)
92 y=sav(i,10)
93 z=sav(i,17)
94 sav(i,3) = x - y*wzz(i) + z*wyy(i)
95 sav(i,10)= y - z*wxx(i) + x*wzz(i)
96 sav(i,17)= z - x*wyy(i) + y*wxx(i)
97
98 x=sav(i,4)
99 y=sav(i,11)
100 z=sav(i,18)
101 sav(i,4) = x - y*wzz(i) + z*wyy(i)
102 sav(i,11)= y - z*wxx(i) + x*wzz(i)
103 sav(i,18)= z - x*wyy(i) + y*wxx(i)
104
105 x=sav(i,5)
106 y=sav(i,12)
107 z=sav(i,19)
108 sav(i,5) = x - y*wzz(i) + z*wyy(i)
109 sav(i,12)= y - z*wxx(i) + x*wzz(i)
110 sav(i,19)= z - x*wyy(i) + y*wxx(i)
111
112 x=sav(i,6)
113 y=sav(i,13)
114 z=sav(i,20)
115 sav(i,6) = x - y*wzz(i) + z*wyy(i)
116 sav(i,13)= y - z*wxx(i) + x*wzz(i)
117 sav(i,20)= z - x*wyy(i) + y*wxx(i)
118
119 x=sav(i,7)
120 y=sav(i,14)
121 z=sav(i,21)
122 sav(i,7) = x - y*wzz(i) + z*wyy(i)
123 sav(i,14)= y - z*wxx(i) + x*wzz(i)
124 sav(i,21)= z - x*wyy(i) + y*wxx(i)
125 ENDDO
126 ELSEIF(ismstr==12)THEN
127
128 DO i=1,nel
129 IF(offg(i)<=one) cycle
130 wxxg=r11(i)*wxx(i)+r12(i)*wyy(i)+r13(i)*wzz(i)
131 wyyg=r21(i)*wxx(i)+r22(i)*wyy(i)+r23(i)*wzz(i)
132 wzzg=r31(i)*wxx(i)+r32(i)*wyy(i)+r33(i)*wzz(i)
133 wxx(i) = wxxg
134 wyy(i) = wyyg
135 wzz(i) = wzzg
136 END DO
137 DO i=1,nel
138
139 IF(offg(i)<=one) cycle
140 x=sav(i,1)
141 y=sav(i,2)
142 z=sav(i,3)
143 sav(i,1) = x - y*wzz(i) + z*wyy(i)
144 sav(i,2) = y - z*wxx(i) + x*wzz(i)
145 sav(i,3) = z - x*wyy(i) + y*wxx(i)
146
147 x=sav(i,4)
148 y=sav(i,5)
149 z=sav(i,6)
150 sav(i,4) = x - y*wzz(i) + z*wyy(i)
151 sav(i,5) = y - z*wxx(i) + x*wzz(i)
152 sav(i,6) = z - x*wyy(i) + y*wxx(i)
153
154 x=sav(i,7)
155 y=sav(i,8)
156 z=sav(i,9)
157 sav(i,7) = x - y*wzz(i) + z*wyy(i)
158 sav(i,8) = y - z*wxx(i) + x*wzz(i)
159 sav(i,9) = z - x*wyy(i) + y*wxx(i)
160
161 x=sav(i,10)
162 y=sav(i,11)
163 z=sav(i,12)
164 sav(i,10) = x - y*wzz(i) + z*wyy(i)
165 sav(i,11) = y - z*wxx(i) + x*wzz(i)
166 sav(i,12) = z - x*wyy(i) + y*wxx(i)
167
168 x=sav(i,13)
169 y=sav(i,14)
170 z=sav(i,15)
171 sav(i,13) = x - y*wzz(i) + z*wyy(i)
172 sav(i,14) = y - z*wxx(i) + x*wzz(i)
173 sav(i,15) = z - x*wyy(i) + y*wxx(i)
174
175 x=sav(i,16)
176 y=sav(i,17)
177 z=sav(i,18)
178 sav(i,16) = x - y*wzz(i) + z*wyy(i)
179 sav(i,17) = y - z*wxx(i) + x*wzz(i)
180 sav(i,18) = z - x*wyy(i) + y*wxx(i)
181
182 x=sav(i,19)
183 y=sav(i,20)
184 z=sav(i,21)
185 sav(i,19) = x - y*wzz(i) + z*wyy(i)
186 sav(i,20) = y - z*wxx(i) + x*wzz(i)
187 sav(i,21) = z - x*wyy(i) + y*wxx(i)
188 ENDDO
189 END IF
190
191 RETURN