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