40
41
42
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "mvsiz_p.inc"
53
54
55
56#include "com01_c.inc"
57#include "param_c.inc"
58#include "vect01_c.inc"
59#include "scr17_c.inc"
60
61
62
63 INTEGER PID(*),IGEO(NPROPGI,*),IREP,NGL(*),NSIGI,NSIGS,
64 . IXS(NIXS,*),ILAY,IPID,ORTHOGLOB(*),PT(*),NEL
65 my_real geo(npropg,*),skew(lskew,*),gama(nel,6),angle(*),
66 . rx(*) ,ry(*) ,rz(*) ,sx(
67 . e1x(*),e1y(*),e1z(*),e2x(*),e2y(*),e2z(*),e3x(*),e3y(*),e3z(*),
68 . sigsp(nsigi,*),sigi(nsigs,*)
69 INTEGER ID
70 CHARACTER(LEN=NCHARTITLE)::TITR
71
72
73
74 INTEGER I,IG,IGTYP,ISK,IPNUM,ISKV,IIS,II,J,JJ,N,IFLAGINI,INIORTH(MVSIZ)
76 . vx,vy,vz,vr,vs,vn,v,phi,cp,sp,cpn,spn,
77 . s,d1,d2,u1x,u1y,u2x,u2y,det,w1x,w2x,w1y,w2y
79
80
81 iniorth(lft:llt)=0
82 IF (nvsolid3 /= 0) THEN
83 iis= nvsolid1 + nvsolid2 + 4 +nusolid
84 DO i=lft,llt
85 jj=pt(nft+i)
86 IF(jj ==0 ) cycle
87 IF(orthoglob(i) == 0) THEN
88 IF(sigsp((ilay-1)*6+iis+1,jj) /=zero.OR.
89 . sigsp((ilay-1)*6+iis+2,jj)/=zero ) THEN
90 iniorth(i) = 1
91 ENDIF
92 ELSE
93 IF(
94 . sigsp((ilay-1)*6+iis+1,jj) /= zero .OR.
95 . sigsp((ilay-1)*6+iis+2,jj) /= zero .OR.
96 . sigsp((ilay-1)*6+iis+3,jj) /= zero .OR.
97 . sigsp((ilay-1)*6+iis+4,jj) /= zero .OR.
98 . sigsp((ilay-1)*6+iis+5,jj) /= zero .OR.
99 . sigsp((ilay-1)*6+iis+6,jj) /= zero )THEN
100 iniorth(i) = 1
101 ENDIF
102 ENDIF
103 ENDDO
104 ENDIF
105
106
107
108
109
110
111
112 DO i=lft,llt
113
114 IF(iniorth(i) ==1 ) cycle
115 ig = pid(i)
117 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ig),ltitr)
118 IF (ig > 0) THEN
119 igtyp = igeo(11,ig)
120 ipnum = igeo(2,ig)
121 iskv = igeo(7,ig)
122 phi = angle(i) * pi/hundred80
123 cp = cos(phi)
124 sp = sin(phi)
125
126 IF (iskv==0) THEN
127 vx=geo(7,ig)
128 vy=geo(8,ig)
129 vz=geo(9,ig)
130 ELSE
131 vx=skew(1,iskv)
132 vy=skew(2,iskv)
133 vz=skew(3,iskv)
134 ENDIF
135 SELECT CASE (ipnum)
136 CASE (1)
137 vn=vx*e1x(i)+vy*e1y(i)+vz*e1z(i)
138 vx=vx-vn*e1x(i)
139 vy=vy-vn*e1y(i)
140 vz=vz-vn*e1z(i)
141 v=sqrt(vx*vx+vy*vy+vz*vz)
142 IF(v<em3)THEN
144 . msgtype=msgerror,
145 . anmode=aninfo_blind_1,
147 . c1=titr,
148 . i2=ngl(i))
149 ENDIF
150
152 vx=vx*v
153 vy=vy*v
154 vz=vz*v
155 vr=vx*e2x(i)+vy*e2y(i)+vz*e2z(i)
156 vs=vx*e3x(i)+vy*e3y(i)+vz*e3z(i)
157 cpn=vr*cp-vs*sp
158 spn=vs*cp+vr*sp
159
160 CASE (2)
161 vn=vx*e2x(i)+vy*e2y(i)+vz*e2z(i)
162 vx=vx-vn*e2x(i)
163 vy=vy-vn*e2y(i)
164 vz=vz-vn*e2z(i)
165 v=sqrt(vx*vx+vy*vy+vz*vz)
166 IF(v<em3)THEN
168 . msgtype=msgerror,
169 . anmode=aninfo_blind_1,
171 . c1=titr,
172 . i2=ngl(i))
173 ENDIF
174
176 vx=vx*v
177 vy=vy*v
178 vz=vz*v
179 vr=vx*e3x(i)+vy*e3y(i)+vz*e3z(i)
180 vs=vx*e1x(i)+vy*e1y(i)+vz*e1z(i)
181 cpn=vr*cp-vs*sp
182 spn=vs*cp+vr*sp
183
184 CASE (3)
185 vn=vx*e3x(i)+vy*e3y(i)+vz*e3z(i)
186 vx=vx-vn*e3x(i)
187 vy=vy-vn*e3y(i)
188 vz=vz-vn*e3z(i)
189 v=sqrt(vx*vx+vy*vy+vz*vz)
190 IF(v<em3)THEN
192 . msgtype=msgerror,
193 . anmode=aninfo_blind_1,
195 . c1=titr,
196 . i2=ngl(i))
197 ENDIF
198
200 vx=vx*v
201 vy=vy*v
202 vz=vz*v
203 vr=vx*e1x(i)+vy*e1y(i)+vz*e1z(i)
204 vs=vx*e2x(i)+vy*e2y(i)+vz*e2z(i)
205 cpn=vr*cp-vs*sp
206 spn=vs*cp+vr*sp
207
208 END SELECT
209 gama(i,1)=cpn
210 gama(i,2)=spn
211 ENDIF
212
213 ENDDO
214
215 IF (irep==1) THEN
216 DO i=lft,llt
217 ig = pid(i)
218 ipnum = igeo(2,ig)
219
220 SELECT CASE (ipnum)
221 CASE (1)
222 u1x = rx(i)*e2x(i)+ry(i)*e2y(i)+rz(i)*e2z(i)
223 u1y = rx(i)*e3x(i)+ry(i)*e3y(i)+rz(i)*e3z(i)
224 u2x = sx(i)*e2x(i)+sy(i)*e2y(i)+sz(i)*e2z(i)
225 u2y = sx(i)*e3x(i)+sy(i)*e3y(i)+sz(i)*e3z(i)
226 det = u1x*u2y-u1y*u2x
227 w1x = u2y/det
228 w2y = u1x/det
229 w1y = -u1y/det
230 w2x = -u2x/det
231 d1=gama(i,1)
232 d2=gama(i,2)
233 cpn= w1x*d1 + w2x*d2
234 spn= w1y*d1 + w2y*d2
235 s=
max(em20,sqrt(cpn*cpn+spn*spn))
236 cpn = cpn/s
237 spn = spn/s
238
239 CASE (2)
240 u1x = sx(i)*e3x(i)+sy(i)*e3y(i)+sz(i)*e3z(i)
241 u1y = sx(i)*e1x(i)+sy(i)*e1y(i)+sz(i)*e1z(i)
242 u2x = tx(i)*e3x(i)+ty(i)*e3y(i)+tz(i)*e3z(i)
243 u2y = tx(i)*e1x(i)+ty(i)*e1y(i)+tz(i)*e1z(i)
244 det = u1x*u2y-u1y*u2x
245 w1x = u2y/det
246 w2y = u1x/det
247 w1y = -u1y/det
248 w2x = -u2x/det
249 d1=gama(i,1)
250 d2=gama(i,2)
251 cpn= w1x*d1 + w2x*d2
252 spn= w1y*d1 + w2y*d2
253 s=
max(em20,sqrt(cpn*cpn+spn*spn))
254 cpn = cpn/s
255 spn = spn/s
256
257 CASE (3)
258 u1x = tx(i)*e1x(i)+ty(i)*e1y(i)+tz(i)*e1z(i)
259 u1y = tx(i)*e2x(i)+ty(i)*e2y(i)+tz(i)*e2z(i)
260 u2x = rx(i)*e1x(i)+ry(i)*e1y(i)+rz(i)*e1z(i)
261 u2y = rx(i)*e2x(i)+ry(i)*e2y(i)+rz(i)*e2z(i)
262 det = u1x*u2y-u1y*u2x
263 w1x = u2y/det
264 w2y = u1x/det
265 w1y = -u1y/det
266 w2x = -u2x/det
267 d1=gama(i,1)
268 d2=gama(i,2)
269 cpn= w1x*d1 + w2x*d2
270 spn= w1y*d1 + w2y*d2
271 s=
max(em20,sqrt(cpn*cpn+spn*spn))
272 cpn = cpn/s
273 spn = spn/s
274
275 END SELECT
276 gama(i,1)=cpn
277 gama(i,2)=spn
278 ENDDO
279 ENDIF
280
281
282 IF (nvsolid3 /= 0) THEN
283 iis= nvsolid1 + nvsolid2 + 4 +nusolid
284 DO i=lft,llt
285 IF(orthoglob(i) == 0) THEN
286 ii=nft+i
287 jj=pt(ii)
288 iflagini = 1
289 IF(jj==0)iflagini = 0
290 IF(iflagini == 1 .AND.
291 . ( sigsp((ilay-1)*6+iis+1,jj) /= zero.OR.
292 . sigsp((ilay-1)*6+iis+2,jj)/=zero) ) THEN
293 gama(i,1) = sigsp((ilay-1)*6+iis+1,jj)
294 gama(i,2) = sigsp((ilay-1)*6+iis+2,jj)
295 ENDIF
296 ELSE
297 ii=nft+i
298 jj=pt(ii)
299 ig = pid(i)
300 ipnum = igeo(2,ig)
301 iflagini = 1
302 IF(jj==0)iflagini = 0
303 IF(iflagini == 1 .AND.
304 . ( sigsp((ilay-1)*6+iis+1,jj) /= zero .OR.
305 . sigsp((ilay-1)*6+iis+2,jj) /= zero .OR.
306 . sigsp((ilay-1)*6+iis+3,jj) /= zero .OR.
307 . sigsp((ilay-1)*6+iis+4,jj) /= zero .OR.
308 . sigsp((ilay-1)*6+iis+5,jj) /= zero .OR.
309 . sigsp((ilay-1)*6+iis+6,jj) /= zero) )THEN
310 gamatmp(1) = sigsp((ilay-1)*6+iis+1,jj)
311 gamatmp(2) = sigsp((ilay-1)*6+iis+2,jj)
312 gamatmp(3) = sigsp((ilay-1)*6+iis+3,jj)
313 gamatmp(4) = sigsp((ilay-1)*6+iis+4,jj)
314 gamatmp(5) = sigsp((ilay-1)*6+iis+5,jj)
315 gamatmp(6) = sigsp((ilay-1)*6+iis+6,jj)
316 gama(i,1:6) = zero
317 SELECT CASE (ipnum)
318 CASE (1)
319 gama(i,1) = gamatmp(1)*e2x(i)+
320 . gamatmp(2)*e2y(i)+gamatmp(3)*e2z(i)
321 gama(i,2) = gamatmp(1)*e3x(i)+
322 . gamatmp(2)*e3y(i)+gamatmp(3)*e3z(i)
323 CASE (2)
324 gama(i,1) = gamatmp(1)*e3x(i)+
325 . gamatmp(2)*e3y(i)+gamatmp(3)*e3z(i)
326 gama(i,2) = gamatmp(1)*e1x(i)+
327 . gamatmp(2)*e1y(i)+gamatmp(3)*e1z(i)
328 CASE (3)
329 gama(i,1) = gamatmp(1)*e1x(i)+
330 . gamatmp(2)*e1y(i)+gamatmp(3)*e1z(i)
331 gama(i,2) = gamatmp(1)*e2x(i)+
332 . gamatmp(2)*e2y(i)+gamatmp(3)*e2z(i)
333 END SELECT
334 ENDIF
335 ENDIF
336 ENDDO
337 ENDIF
338
339 RETURN
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)