38 1 JFT ,JLT ,NFT ,NLAY ,NUMEL ,
39 2 NSIGSH ,NIX ,IX ,IGEO ,GEO ,
40 3 SKEW ,SIGSH ,PTSH ,PHI1 ,PHI2 ,
41 4 VX ,VY ,VZ ,COOR1 ,COOR2 ,
42 5 COOR3 ,COOR4 ,IORTHLOC,ISUBSTACK, STACK ,
43 6 IREP ,ELBUF_STR,DRAPE ,ANGLE ,X ,
44 7 GEO_STACK,E3X ,E3Y ,E3Z ,
45 8 BETAORTH ,X1 ,X2 ,Y1 ,Y2 ,
46 9 Z1 ,Z2 ,NEL ,G_ADD_NODE,ADD_NODE,
47 A NPT_ALL , IDRAPE ,INDX)
60#include "implicit_f.inc"
75 INTEGER JFT,JLT,NFT,NLAY,IPT,ID,NIX,NUMEL,NSIGSH,
76 . ISUBSTACK,IREP,NPT_ALL,IDRAPE
77 INTEGER IX(NIX,*),IGEO(NPROPGI,*),PTSH(*),(*)
78 INTEGER,
INTENT(IN) :: NEL,G_ADD_NODE,ADD_NODE(G_ADD_NODE*NEL)
79 INTEGER,
DIMENSION(*) :: INDX
81 . GEO(NPROPG,*),SKEW(LSKEW,*),SIGSH(NSIGSH,*),VX(*),VY(*),VZ(*),
82 . PHI1(NPT_ALL,*),PHI2(NPT_ALL,*),COOR1(NPT_ALL,MVSIZ),COOR2(NPT_ALL,MVSIZ),
83 . COOR3(NPT_ALL,MVSIZ),COOR4(NPT_ALL,MVSIZ),
84 . ANGLE(*),GEO_STACK(NPROPG,*),X(3,*),BETAORTH(*)
85 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: e3x,e3y,e3z,x1,x2,y1,y2,z1,z2
87 TYPE(elbuf_struct_),
TARGET :: ELBUF_STR
88 TYPE (STACK_PLY):: STACK
89 TYPE (DRAPE_) ,
DIMENSION(*),
TARGET :: DRAPE
93 INTEGER I,II,J,JJ,N,NPT,NPTI,IGTYP,IPID,PID,ISK,IPANG,IPPHI,
94 . IIGEO,IADR,IPTHK,IPPOS,IPDIR,IMAT_LY,ILAW_LY,IPPID,IPMAT,ILAY,
95 . def_orth(mvsiz),n1,n2,irp,pos,nod,il,it,nslice,ipt_all,nptt,
96 . ie, ip,ipid_ply,n3,n4
97 my_real v(mvsiz),e11,e12,e13,ne1,vx0,vy0,vz0,
99 CHARACTER(LEN=NCHARTITLE)::TITR1
101 TYPE (DRAPE_PLY_) ,
POINTER :: DRAPE_PLY
106 def_orth(1:mvsiz) = nlay
115 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52 )
THEN
139 vx(i) = x(1,n2)-x(1,n1)
140 vy(i) = x(2,n2)-x(2,n1)
141 vz(i) = x(3,n2)-x(3,n1)
155 vx(i) = e3y(i)*vz0 - e3z(i)*vy0
156 vy(i) = e3z(i)*vx0 - e3x(i)*vz0
157 vz(i) = e3x(i)*vy0 - e3y(i)*vx0
164 vx(i) = x(1,nod)-x(1,n1)
165 vy(i) = x(2,nod)-x(2,n1)
166 vz(i) = x(3,nod)-x(3,n1)
171 IF (nix > nixtg)
THEN
177 xc(i) = fourth*(x(1,n1)+x(1,n2)+x(1,n3)+x(1,n4))
178 yc(i) = fourth*(x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4))
179 zc(i) = fourth*(x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4))
186 xc(i) = third*(x(1,n1)+x(1,n2)+x(1,n3))
187 yc(i) = third*(x(2,n1)+x(2,n2)+x(2,n3))
188 zc(i) = third*(x(3,n1)+x(3,n2)+x(3,n3))
192 e11 = xc(i)-skew(10,isk)
193 e12 = yc(i)-skew(11,isk)
194 e13 = zc(i)-skew(12,isk)
195 vx(i) = skew(8,isk)*e13 - skew(9,isk)*e12
196 vy(i) = skew(9,isk)*e11 - skew(7,isk)*e13
197 vz(i) = skew(7,isk)*e12 - skew(8,isk)*e11
203 phi1(1,i)= geo(10,pid)
205 ELSEIF (igtyp == 10)
THEN
208 phi1(j,i)= geo(ipang+j,pid)
211 ELSEIF (igtyp == 11)
THEN
214 phi1(j,i)= geo(ipang+j,pid)
217 ELSEIF (igtyp == 17 .AND. irp /= 24)
THEN
224 ipid_ply = stack%IGEO(2 + j,isubstack)
225 IF(ipid_ply > 0)
THEN
227 IF (irep >= 2) phi2(j,i)= stack%GEO(ipdir+j,isubstack)
228 def_orth(i) = def_orth(i) - 1
233 ipid_ply = stack%IGEO(2+j,isubstack)
234 IF(ipid_ply > 0)
THEN
235 phi1(j,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang+j,isubstack)
236 IF (irep >= 2) phi2(j,i)= stack%GEO(ipdir+j,isubstack)
237 def_orth(i) = def_orth(i) - 1
238 ip = drape(ie)%INDX_PLY(j)
240 drape_ply => drape(ie)%DRAPE_PLY(ip)
241 phi1(j,i) = phi1(j,i) + drape_ply%RDRAPE(1,2)
251 ipid_ply = stack%IGEO(2+j,isubstack)
252 IF(ipid_ply > 0)
THEN
253 phi1(j,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang+j,isubstack)
254 def_orth(i) = def_orth(i) - 1
255 IF (irep >= 2) phi2(j,i)= stack%GEO(ipdir+j,isubstack)
260 ELSEIF(igtyp == 51 .AND. irp /= 24 )
THEN
268 nptt = elbuf_str%BUFLY(il)%NPTT
269 ip = drape(ie)%INDX_PLY(il)
270 ipid_ply = stack%IGEO(2 + il,isubstack
271 IF(ipid_ply > 0)
THEN
273 drape_ply => drape(ie)%DRAPE_PLY(ip)
274 nslice = drape_ply%NSLICE
275 def_orth(i) = def_orth(i
279 phi1(ipt,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang+il,isubstack)
280 . + drape_ply%RDRAPE(it
281 phi2(ipt,i) = stack%GEO(ipdir + il,isubstack)
286 phi1(ipt,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang+il,isubstack)
287 . + drape_ply%RDRAPE(it,2)
291 def_orth(i) = def_orth(i) - 1
295 phi1(ipt,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
296 phi2(ipt,i) = stack%GEO
301 phi1(ipt,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
306 ipt_all = ipt_all + nptt
310 nptt = elbuf_str%BUFLY
311 ipid_ply = stack%IGEO(2 + il,isubstack)
312 IF(ipid_ply > 0)
THEN
313 def_orth(i) = def_orth(i) - 1
317 phi1(ipt,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
318 phi2(ipt,i) = stack%GEO(ipdir+il,isubstack)
323 phi1(ipt,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
327 ipt_all = ipt_all + nptt
335 ipid_ply = stack%IGEO(2 + il,isubstack)
336 IF(ipid_ply > 0 )
THEN
337 phi1(il,i) = angle(i) + geo(2,ipid_ply) + stack%GEO
338 def_orth(i) = def_orth(i) - 1
344 ELSEIF(igtyp == 52 .AND. irp /= 24 )
THEN
352 nptt = elbuf_str%BUFLY(il)%NPTT
353 ip = drape(ie)%INDX_PLY(il)
354 ipid_ply = stack%IGEO(2+il,isubstack)
355 IF( ipid_ply > 0)
THEN
357 drape_ply => drape(ie)%DRAPE_PLY(ip)
358 nslice = drape_ply%NSLICE
359 def_orth(i) = def_orth(i) - 1
363 phi1(ipt,i) = angle(i) + geo_stack(2,ipid_ply)
364 . + stack%GEO(ipang + il,isubstack) + drape_ply%RDRAPE(it,2)
365 phi2(ipt,i)= stack%GEO(ipdir+il,isubstack)
370 phi1(ipt,i) = angle(i) + geo_stack(2,ipid_ply)
375 def_orth(i) = def_orth(i) - 1
379 phi1(ipt,i) = angle(i) + geo_stack(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
380 phi2(ipt,i) = stack%GEO(ipdir+il,isubstack)
385 phi1(ipt,i) = angle(i) + geo_stack(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
390 ipt_all = ipt_all + nptt
394 nptt = elbuf_str%BUFLY(il)%NPTT
395 ipid_ply = stack%IGEO(2+il,isubstack)
396 IF(ipid_ply > 0)
THEN
397 def_orth(i) = def_orth(i) - 1
401 phi1(ipt,i) = angle(i) + geo_stack(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
402 phi2(ipt,i)= stack%GEO(ipdir+il,isubstack)
411 ipt_all = ipt_all + nptt
419 ipid_ply = stack%IGEO(2+il,isubstack)
420 IF(ipid_ply > 0)
THEN
421 def_orth(i) = def_orth(i) - 1
422 phi1(il,i) = angle(i) + geo_stack(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
423 IF(irep >= 2) phi2(il,i)= stack%GEO(ipdir+il,isubstack)
428 ELSEIF (igtyp == 16)
THEN
431 phi1(j,i)= geo(ipang+j
432 phi2(j,i)= geo(ipphi+j,pid)
437 IF (iortshel == 1)
THEN
439 IF (abs(isigi) /= 3 .AND. abs(isigi)/=4 .AND. abs(isigi)/=5)
THEN
444 n = nint(sigsh(1,ii))
450 n = nint(sigsh(1,ii))
461 IF (ii == 0)
GOTO 100
463 IF(sigsh(nvshell + nushell + 5,ii) == zero) cycle
465 npti = nint(sigsh(nvshell + nushell + 4,ii))
466 IF(igtyp == 9) npti = 1
467 IF (nlay /= npti)
THEN
470 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid),ltitr)
473 . msgtype=msgwarning,
474 . anmode=aninfo_blind_1,
488 ipt = nvshell + nushell
489 vx(i) = sigsh(ipt+1,ii)
490 vy(i) = sigsh(ipt+2,ii)
491 vz(i) = sigsh(ipt+3,ii)
493 IF ( igtyp == 9)
THEN
494 phi1(1,i) = sigsh(ipt+1,ii)
495 phi2(1,i) = sigsh(ipt+2,ii)
499 phi1(j,i) = sigsh(ipt+1,ii)
500 phi2(j,i) = sigsh(ipt+2,ii)
509 IF (iortshel == 2)
THEN
512 IF (abs(isigi) /= 3 .AND. abs(isigi) /= 4 .AND. abs(isigi) /= 5)
THEN
516 n = nint(sigsh(1,ii))
522 n = nint(sigsh(1,ii))
533 IF (ii == 0)
GOTO 110
535 IF(sigsh(nvshell + nushell + 5,ii) == zero) cycle
536 npti = nint(sigsh(nvshell + nushell + 4,ii))
538 npt = nint(geo(6,ix(nix-1,i)))
539 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp==52))
THEN
541 ELSEIF (igtyp == 16 .OR. igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
544 IF (npt /= npti)
THEN
547 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid),ltitr)
550 . msgtype=msgwarning,
551 . anmode=aninfo_blind_1,
565 ipt = nvshell + nushell + 5
567 coor1(1,i) = sigsh(ipt+1,ii)
568 coor2(1,i) = sigsh(ipt+2,ii)
571 ELSEIF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16 .OR.
572 . igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
574 ilaw_ly = elbuf_str%BUFLY(j)%ILAW
575 IF (igtyp == 16 .OR.(igtyp == 51 .AND. ilaw_ly == 58)
576 . .OR.(igtyp == 52 .AND. ilaw_ly == 58) )
THEN
577 coor1(j,i) = sigsh(ipt+1,ii)
578 coor2(j,i) = sigsh(ipt+2,ii)
579 coor3(j,i) = sigsh(ipt+3,ii)
580 coor4(j,i) = sigsh(ipt+4,ii)
583 coor1(j,i) = sigsh(ipt+1,ii)
584 coor2(j,i) = sigsh(ipt+2,ii)
597 v(i) =vx(i)*e3x(i)+vy(i)*e3y(i)+vz(i)*e3z(i
599 vy(i)=vy(i)-v(i)*e3y(i)
600 vz(i)=vz(i)-v(i)*e3z(i
601 v(i) =sqrt(vx(i)*vx(i)+vy(i)*vy(i)+vz(i)*vz(i))
605 IF (v(i) < em3 .AND. iorthloc(i) == 0 .AND.
606 . def_orth(i) /= 0)
THEN
609 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,pid),ltitr)
630 ne1 = sqrt(e11*e11+e12*e12+e13*e13)
632 betaorth(i) = (vx(i)*e11 + vy(i)*e12 +vz(i)*e13 )/
max(ne1,em20)