43
44
45
46#include "implicit_f.inc"
47
48
49
50#include "mvsiz_p.inc"
51
52
53
54 INTEGER, INTENT(IN) :: ISORTH
55 INTEGER, INTENT(IN) :: NEL
56 INTEGER NC1(*), NC2(*), NC3(*), NC4(*), MAT(*), NGL(*), NGEO(*),
57 . NCP(7,*)
58
60 . x(3,*),y1(*),y2(*),y3(*),y4(*),z1(*),z2(*),z3(*),z4(*),vd2(*),
61 . vy1(*),vy2(*),vy3(*),vy4(*),
62 . vz1(*),vz2(*),vz3(*),vz4(*),
63 . r11(*),r12(*),r13(*),
64 . r21(*),r22(*),r23(*),
65 . r31(*),r32(*),r33(*),gama(mvsiz,6),
66 . y234(*),y124(*),vis(*),v(3,*),yavg(*),exx(*),ay(*)
67
68
69
70#include "com01_c.inc"
71
72
73
74 INTEGER I,II,IV
76 . sy(mvsiz) , sz(mvsiz) ,
77 . ty(mvsiz) , tz(mvsiz) ,
78 . yl , zl , suma,cs,ct,
79 . g22,g23,g32,g33,
80 . t22,t23,t32,t33,vyg
81
82 DO i=1,nel
83 ngeo(i)=ncp(6,i)
84 ngl(i)=ncp(7,i)
85 mat(i)=ncp(1,i)
86 nc1(i)=ncp(2,i)
87 nc2(i)=ncp(3,i)
88 nc3(i)=ncp(4,i)
89 nc4(i)=ncp(5,i)
90 END DO
91
92
93
94
95 DO i=1,nel
96 y1(i)=x(2,nc1(i))
97 z1(i)=x(3,nc1(i))
98 y2(i)=x(2,nc2(i))
99 z2(i)=x(3,nc2(i))
100 y3(i)=x(2,nc3(i))
101 z3(i)=x(3,nc3(i))
102 y4(i)=x(2,nc4(i))
103 z4(i)=x(3,nc4(i))
104 END DO
105 DO i=1,nel
106 vy1(i)=v(2,nc1(i))
107 vz1(i)=v(3,nc1(i))
108 vy2(i)=v(2,nc2(i))
109 vz2(i)=v(3,nc2(i))
110 vy3(i)=v(2,nc3(i))
111 vz3(i)=v(3,nc3(i))
112 vy4(i)=v(2,nc4(i))
113 vz4(i)=v(3,nc4(i))
114 END DO
115
116 IF(n2d==1) THEN
117 DO i=1,nel
118 yavg(i) = y1(i)+y2(i)+y3(i)+y4(i)
119 vyg = vy1(i)+vy2(i)+vy3(i)+vy4(i)
120 y234(i)=y2(i)+y3(i)+y4(i)
121 y124(i)=y1(i)+y2(i)+y4(i)
122
123 ay(i) =one/
max(em20,yavg(i))
124 exx(i) = vyg*ay(i)
125 ENDDO
126 ENDIF
127
128
129
130 DO i=1,nel
131 sy(i)=half*(y2(i)+y3(i)-y1(i)-y4(i))
132 sz(i)=half*(z2(i)+z3(i)-z1(i)-z4(i))
133 ty(i)=half*(y3(i)+y4(i)-y1(i)-y2(i))
134 tz(i)=half*(z3(i)+z4(i)-z1(i)-z2(i))
135 END DO
136
137
138
139 DO i=1,nel
140 ct = ty(i)*ty(i)+tz(i)*tz(i)
141 cs = sy(i)*sy(i)+sz(i)*sz(i)
142 IF(cs /= zero) THEN
143 suma = sqrt(ct/
max(em20,cs))
144 sy(i) = sy(i)*suma + tz(i)
145 sz(i) = sz(i)*suma - ty(i)
146 ELSEIF(ct /= zero)THEN
147 suma = sqrt(cs/
max(em20,ct))
148 sy(i) = sy(i) + tz(i)*suma
149 sz(i) = sz(i) - ty(i)*suma
150 END IF
151 ENDDO
152 DO i=1,nel
153 suma=one/
max(sqrt(sy(i)*sy(i)+sz(i)*sz(i)),em20)
154 sy(i)=sy(i)*suma
155 sz(i)=sz(i)*suma
156 ENDDO
157 DO i=1,nel
158 r11(i)= one
159 r21(i)= zero
160 r31(i)= zero
161 r12(i)= zero
162 r22(i)= sy(i)
163 r32(i)= sz(i)
164 r13(i)= zero
165 r23(i)=-sz(i)
166 r33(i)= sy(i)
167 END DO
168
169 DO i=1,nel
170 yl=r22(i)*y1(i)+r32(i)*z1(i)
171 zl=r23(i)*y1(i)+r33(i)*z1(i)
172 y1(i)=yl
173 z1(i)=zl
174 yl=r22(i)*y2(i)+r32(i)*z2(i)
175 zl=r23(i)*y2(i)+r33(i)*z2(i)
176 y2(i)=yl
177 z2(i)=zl
178 yl=r22(i)*y3(i)+r32(i)*z3(i)
179 zl=r23(i)*y3(i)+r33(i)*z3(i)
180 y3(i)=yl
181 z3(i)=zl
182 yl=r22(i)*y4(i)+r32(i)*z4(i)
183 zl=r23(i)*y4(i)+r33(i)*z4(i)
184 y4(i)=yl
185 z4(i)=zl
186 END DO
187
188
189
190 IF (isorth /= 0)THEN
191 DO i=1,nel
192
193
194 g22=gama(i,2)
195 g32=gama(i,3)
196 g23=gama(i,5)
197 g33=gama(i,6)
198
199 yl=g22*y1(i)+g32*z1(i)
200 zl=g23*y1(i)+g33*z1(i)
201 y1(i)=yl
202 z1(i)=zl
203 yl=g22*y2(i)+g32*z2(i)
204 zl=g23*y2(i)+g33*z2(i)
205 y2(i)=yl
206 z2(i)=zl
207 yl=g22*y3(i)+g32*z3(i)
208 zl=g23*y3(i)+g33*z3(i)
209 y3(i)=yl
210 z3(i)=zl
211 yl=g22*y4(i)+g32*z4(i)
212 zl=g23*y4(i)+g33*z4(i)
213 y4(i)=yl
214 z4(i)=zl
215
216 t22=r22(i)*g22+r23(i)*g32
217 t23=r22(i)*g23+r23(i)*g33
218 t32=r32(i)*g22+r33(i)*g32
219 t33=r32(i)*g23+r33(i)*g33
220 r22(i)=t22
221 r23(i)=t23
222 r32(i)=t32
223 r33(i)=t33
224 ENDDO
225 ENDIF
227 1 r22, r23, r32, r33,
228 2 vy1, vy2, vy3, vy4,
229 3 vz1, vz2, vz3, vz4,
230 4 nel)
231
232 DO i=1,nel
233 vd2(i)=zero
234 vis(i)=zero
235 END DO
236
237 RETURN
subroutine q4rrota2(r22, r23, r32, r33, y1, y2, y3, y4, z1, z2, z3, z4, nel)