38 SUBROUTINE smorth3(PID ,GEO ,IGEO ,SKEW ,IREP ,GAMA ,
39 . RX ,RY ,RZ ,SX ,SY ,SZ ,TX ,TY ,TZ ,
40 . E1X ,E1Y ,E1Z ,E2X ,E2Y ,E2Z ,E3X ,E3Y ,E3Z ,
41 . F1X ,F1Y ,F1Z ,F2X ,F2Y ,F2Z ,NSIGI,SIGSP,NSIGS,
42 . SIGI ,IXS ,X ,JHBE ,PT ,NEL ,ISOLNOD)
48 use element_mod ,
only : nixs
52#include "implicit_f.inc"
61#include "vect01_c.inc"
67 INTEGER JHBE,IREP,NSIGI,NSIGS,NEL,ISOLNOD
68 INTEGER PID(*),IGEO(NPROPGI,*),IXS(NIXS,*),PT(*)
71 . geo(npropg,*),skew(lskew,*),gama(nel,6),
72 . rx(*) ,ry(*) ,rz(*) ,sx(*) ,sy(*) ,sz(*) ,tx(*) ,ty(*) ,tz(*),
73 . e1x(*),e1y(*),e1z(*),e2x(*),e2y(*),e2z(*),e3x(*),e3y(*),e3z(*),
74 . f1x(*),f1y(*),f1z(*),f2x(*),f2y(*),f2z(*),sigsp(nsigi,*),
75 . sigi(nsigs,*),x(3,*)
79 INTEGER I,ISK,IPNUM,IG,IIS,II,J,JJ,N,IFLAGINI,N1,N2,N4,NNOD,INIORTH(MVSIZ)
82 . SUM,HX,HY,HZ,KX,KY,KZ,LX,LY,LZ,PHI,CP,SP,VX,VY,VZ,VN,
84 . g11,g22,g33,g12,g21,g23,g32,g13,g31,pts(3)
88 CHARACTER(LEN=NCHARTITLE)::TITR
96 IF (nvsolid3 /= 0)
THEN
97 iis= nvsolid1 + nvsolid2 + 4 +nusolid
102 . sigsp(iis+1,jj) /= zero .OR. sigsp(iis+2,jj) /=zero .OR.
103 . sigsp(iis+3,jj) /= zero .OR. sigsp(iis+4,jj) /=zero .OR.
104 . sigsp(iis+5,jj) /= zero .OR. sigsp(iis+6,jj) /=zero )
THEN
110 IF(iniorth(i) ==1 ) cycle
114 . igeo(npropgi-ltitr+1,ig),ltitr)
116 phi = geo(1,ig) * pi/hundred80
123 pts(1:3) = geo(33:35,ig)
129 . skew(1,isk)*e1x(i)+skew(2,isk)*e1y(i)+skew(3,isk)*e1z(i)
131 . skew(1,isk)*e2x(i)+skew(2,isk)*e2y(i)+skew(3,isk)*e2z(i)
133 . skew(1,isk)*e3x(i)+skew(2,isk)*e3y(i)+skew(3,isk)*e3z(i)
135 . skew(4,isk)*e1x(i)+skew(5,isk)*e1y(i)+skew(6,isk)*e1z(i)
137 . skew(4,isk)*e2x(i)+skew(5,isk)*e2y(i)+skew(6,isk)*e2z(i)
139 . skew(4,isk)*e3x(i)+skew(5,isk)*e3y(i)+skew(6,isk)*e3z(i)
140 ELSEIF (ipnum == 4)
THEN
144 f3x = f1y(i)*f2z(i) - f1z(i)*f2y(i)
145 f3y = f1z(i)*f2x(i) - f1x(i)*f2z(i)
146 f3z = f1x(i)*f2y(i) - f1y(i)*f2x(i)
147 sum = one /
max(sqrt(f3x*f3x+f3y*f3y+f3z*f3z),em20)
155 vn = vx*f3x + vy*f3y + vz*f3z
159 sum= sqrt(vx*vx+vy*vy+vz*vz)
166 sum = one /
max(sqrt(vx*vx+vy*vy+vz*vz),em20)
173 f2x(i) = f3y*f1z(i) - f3z*f1y(i)
174 f2y(i) = f3z*f1x(i) - f3x*f1z(i)
175 f2z(i) = f3x*f1y(i) - f3y*f1x(i)
179 sk(1) = cp*f1x(i) + sp*f2x(i)
180 sk(2) = cp*f1y(i) + sp*f2y(i)
181 sk(3) = cp*f1z(i) + sp*f2z(i)
182 sk(4) =-sp*f1x(i) + cp*f2x(i)
183 sk(5) =-sp*f1y(i) + cp*f2y(i)
184 sk(6) =-sp*f1z(i) + cp*f2z(i)
186 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
187 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
188 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
189 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
190 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
191 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
192 ELSEIF (ipnum == 5)
THEN
195 f3x = f1y(i)*f2z(i) - f1z(i)*f2y(i)
196 f3y = f1z(i)*f2x(i) - f1x(i)*f2z(i)
197 f3z = f1x(i)*f2y(i) - f1y(i)*f2x(i)
198 sum = one /
max(sqrt(f3x*f3x+f3y*f3y+f3z*f3z),em20)
206 vn = vx*f3x + vy*f3y + vz*f3z
210 sum= sqrt(vx*vx+vy*vy+vz*vz)
217 sum= one /
max(sqrt(vx*vx+vy*vy+vz*vz),em20)
224 f2x(i) = f3y*f1z(i) - f3z*f1y(i)
225 f2y(i) = f3z*f1x(i) - f3x*f1z(i)
226 f2z(i) = f3x*f1y(i) - f3y*f1x(i)
233 sk(4) = cp*f1x(i) + sp*f2x(i)
234 sk(5) = cp*f1y(i) + sp*f2y(i)
235 sk(6) = cp*f1z(i) + sp*f2z(i)
237 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
238 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
239 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
240 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
241 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
242 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
243 ELSEIF (ipnum == 20)
THEN
246 IF (isolnod == 4 .OR. isolnod == 10)
THEN
257 sk(1) = x(1,n2)-x(1,n1)
258 sk(2) = x(2,n2)-x(2,n1)
259 sk(3) = x(3,n2)-x(3,n1)
260 sk(4) = x(1,n4)-x(1,n1)
261 sk(5) = x(2,n4)-x(2,n1)
262 sk(6) = x(3,n4)-x(3,n1)
264 sum = one /
max(sqrt(sk(1)*sk(1)+sk(2)*sk(2)+sk(3)*sk(3)),em20)
268 sum = sk(1)*sk(4)+sk(2)*sk(5)+sk(3)*sk(6)
269 sk(4) = sk(4) - sum*sk(1)
270 sk(5) = sk(5) - sum*sk(2)
271 sk(6) = sk(6) - sum*sk(3)
272 sum = one /
max(sqrt(sk(4)*sk(4)+sk(5)*sk(5)+sk(6)*sk(6)),em20)
278 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
279 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
280 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
281 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
282 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
283 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
285 gama(i,1:6) = sk(1:6)
287 ELSEIF (ipnum == 21)
THEN
307 sum = sqrt(sk(1)*sk(1)+sk(2)*sk(2)+sk(3)*sk(3))
312 . anmode=aninfo_blind_1,
325 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
326 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
327 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
328 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
329 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
330 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
332 gama(i,1:6) = sk(1:6)
335 ELSEIF (ipnum == 23)
THEN
337 sum = one /
max(sqrt(sx(i)*sx(i)+sy(i)*sy(i)+sz(i)*sz(i)),em20)
344 sum = vx*f3x+vy*f3y+vz*f3z
348 sk(1) = sk(5)*f3z - sk(6)*f3y
349 sk(2) = sk(6)*f3x - sk(4)*f3z
350 sk(3) = sk(4)*f3y - sk(5)*f3x
351 sum = sqrt(sk(1)*sk(1)+sk(2)*sk(2)+sk(3)*sk(3))
356 . anmode=aninfo_blind_1,
364 f2x(i) = f3y*f1z(i) - f3z*f1y(i)
365 f2y(i) = f3z*f1x(i) - f3x*f1z(i)
366 f2z(i) = f3x*f1y(i) - f3y*f1x(i)
368 sk(1) = cp*f1x(i) + sp*f2x(i)
369 sk(2) = cp*f1y(i) + sp*f2y(i)
370 sk(3) = cp*f1z(i) + sp*f2z(i)
371 sk(4) =-sp*f1x(i) + cp*f2x(i)
372 sk(5) =-sp*f1y(i) + cp*f2y(i)
373 sk(6) =-sp*f1z(i) + cp*f2z(i)
376 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
377 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
378 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
379 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
380 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
381 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
383 gama(i,1:6) = sk(1:6)
386 ELSEIF (ipnum == 24)
THEN
406 sum = one /
max(sqrt(vx*vx+vy*vy+vz*vz),em20)
413 sum = vx*sk(1)+vy*sk(2)+vz*sk(3)
417 sk(1) = vy*f3z - vz*f3y
418 sk(2) = vz*f3x - vx*f3z
419 sk(3) = vx*f3y - vy*f3x
420 sum = sqrt(sk(1)*sk(1)+sk(2)*sk(2)+sk(3)*sk(3))
425 . anmode=aninfo_blind_1,
438 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
439 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
440 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
441 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
442 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
443 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
445 gama(i,1:6) = sk(1:6)
448 ELSEIF (jcvt == 0)
THEN
472 vn = vx*e3x(i) + vy*e3y(i) + vz*e3z(i)
476 sum = sqrt(vx*vx+vy*vy+vz*vz)
479 . msgtype=msgwarning,
480 . anmode=aninfo_blind_1,
492 sk(4) = e3y(i)* sk(3) - e3z(i)* sk(2)
493 sk(5) = e3z(i)* sk(1) - e3x(i)* sk(3)
494 sk(6) = e3x(i)* sk(2) - e3y(i)* sk(1)
495 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(
496 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
497 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
498 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
499 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
500 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
502 vn = vx*e1x(i) + vy*e1y(i) + vz*e1z(i)
506 sum = sqrt(vx*vx+vy*vy+vz*vz)
509 . msgtype=msgwarning,
510 . anmode=aninfo_blind_1,
522 sk(4) = e1y(i)* sk(3) - e1z(i)* sk(2)
523 sk(5) = e1z(i)* sk(1) - e1x(i)* sk(3)
524 sk(6) = e1x(i)* sk(2) - e1y(i)* sk(1)
525 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
526 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
527 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
528 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
529 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
530 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
532 vn = vx*e2x(i) + vy*e2y(i) + vz*e2z(i)
536 sum = sqrt(vx*vx+vy*vy+vz*vz
539 . msgtype=msgwarning,
540 . anmode=aninfo_blind_1,
552 sk(4) = e2y(i)* sk(3) - e2z(i)* sk(2)
553 sk(5) = e2z(i)* sk(1) - e2x(i)* sk(3)
554 sk(6) = e2x(i)* sk(2) - e2y(i)* sk(1)
555 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
556 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
557 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
558 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
559 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
560 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
562 ELSEIF (jcvt > 0)
THEN
564 sum=sqrt(rx(i)**2+ry(i)**2+rz(i)**2)
565 IF (sum > zero) sum=one/sum
572 sum = sqrt(lx**2+ly**2+lz**2)
573 IF (sum > zero) sum=one/sum
580 sum = sqrt(kx**2+ky**2+kz**2)
581 IF (sum > zero) sum=one/sum
608 vn = vx*lx + vy*ly + vz*lz
612 sum = sqrt(vx*vx+vy*vy+vz*vz)
615 . msgtype=msgwarning,
616 . anmode=aninfo_blind_1,
628 sk(4) = ly* sk(3) - lz* sk(2)
629 sk(5) = lz* sk(1) - lx* sk(3)
630 sk(6) = lx* sk(2) - ly* sk(1)
632 vn = vx*hx + vy*hy + vz*hz
636 sum = sqrt(vx*vx+vy*vy+vz*vz)
639 . msgtype=msgwarning,
640 . anmode=aninfo_blind_1,
652 sk(4) = hy* sk(3) - hz* sk(2)
653 sk(5) = hz* sk(1) - hx* sk(3)
654 sk(6) = hx* sk(2) - hy* sk(1)
656 vn = vx*kx + vy*ky + vz*kz
660 sum = sqrt(vx*vx+vy*vy+vz*vz)
663 . msgtype=msgwarning,
664 . anmode=aninfo_blind_1,
676 sk(4) = ky* sk(3) - kz* sk(2)
677 sk(5) = kz* sk(1) - kx* sk(3)
678 sk(6) = kx* sk(2) - ky* sk(1)
680 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
681 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
683 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk
684 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z
685 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
692 a(1) = rx(i)*e1x(i) + ry(i)*e1y(i) + rz(i)*e1z(i)
693 a(2) = rx(i)*e2x(i) + ry(i)*e2y(i) + rz(i)*e2z(i)
694 a(3) = rx(i)*e3x(i) + ry(i)*e3y(i) + rz(i)*e3z(i)
695 a(4) = sx(i)*e1x(i) + sy(i)*e1y(i) + sz(i)*e1z(i)
696 a(5) = sx(i)*e2x(i) + sy(i)*e2y(i) + sz(i)*e2z(i)
697 a(6) = sx(i)*e3x(i) + sy(i)*e3y(i) + sz(i)*e3z(i)
698 a(7) = tx(i)*e1x(i) + ty(i)*e1y(i) + tz(i)*e1z(i)
699 a(8) = tx(i)*e2x(i) + ty(i)*e2y(i) + tz(i)*e2z(i)
700 a(9) = tx(i)*e3x(i) + ty(i)*e3y(i
709 gama(i,1) = b(1)*a(1) + b(4)*a(2) + b(7)*a(3)
710 gama(i,2) = b(2)*a(1) + b(5)*a(2) + b(8)*a(3)
711 gama(i,3) = b(3)*a(1) + b(6)*a(2) + b(9)*a(3)
712 sum = one /
max(em20,sqrt(gama(i,1)**2 + gama(i,2)**2 + gama(i,3)**2))
713 gama(i,1) = gama(i,1) * sum
714 gama(i,2) = gama(i,2) * sum
715 gama(i,3) = gama(i,3) * sum
717 gama(i,4) = b(1)*a(4) + b(4)*a(5) + b(7)*a(6)
718 gama(i,5) = b(2)*a(4) + b(5)*a(5) + b(8)*a(6)
719 gama(i,6) = b(3)*a(4) + b(6)*a(5) + b(9)*a(6)
720 sum = one /
max(em20,sqrt(gama(i,4)**2 + gama(i,5)**2 + gama(i,6)**2))
721 gama(i,4) = gama(i,4) * sum
722 gama(i,5) = gama(i,5) * sum
723 gama(i,6) = gama(i,6) * sum
728 IF (nvsolid3 /= 0)
THEN
729 iis= nvsolid1 + nvsolid2 + 4 + nusolid
734 IF(jj==0)iflagini = 0
735 IF(iflagini == 1 .AND.
736 . ( sigsp(iis+1,jj) /= zero.OR.sigsp(iis+2,jj)/=zero.OR.
737 . sigsp(iis+3,jj) /= zero .OR. sigsp(iis+4,jj) /= zero .OR.
738 . sigsp(iis+5,jj) /= zero .OR. sigsp(iis+6,jj) /= zero) )
THEN
739 g11 = sigsp(iis+1,jj)
740 g21 = sigsp(iis+2,jj)
741 g31 = sigsp(iis+3,jj)
742 g12 = sigsp(iis+4,jj)
743 g22 = sigsp(iis+5,jj)
744 g32 = sigsp(iis+6,jj)
745 g13 = g21*g32-g31*g22
746 g23 = g31*g12-g11*g32
747 g33 = g11*g22-g21*g12
749 gama(i,1)=e1x(i)*g11+e1y(i)*g21+e1z(i)*g31
750 gama(i,2)=e2x(i)*g11+e2y(i)*g21+e2z(i)*g31
751 gama(i,3)=e3x(i)*g11+e3y(i)*g21+e3z(i)*g31
752 gama(i,4)=e1x(i)*g12+e1y(i)*g22+e1z(i)*g32
753 gama(i,5)=e2x(i)*g12+e2y(i)*g22+e2z(i)*g32
754 gama(i,6)=e3x(i)*g12+e3y(i)*g22+e3z(i)*g32