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)
51#include "implicit_f.inc"
60#include "vect01_c.inc"
66 INTEGER JHBE,IREP,NSIGI,NSIGS,NEL,ISOLNOD
67 INTEGER (*),IGEO(NPROPGI,*),IXS(NIXS,*),PT(*)
70 . geo(npropg,*),skew(lskew,*),gama(nel,6),
71 . rx(*) ,ry(*) ,rz(*) ,sx(*) ,sy(*) ,sz(*) ,tx(*) ,ty(*) ,tz(*),
72 . e1x(*),e1y(*),e1z(*),e2x(*),e2y(*),e2z(*),e3x(*),e3y(*),e3z(*),
73 . f1x(*),f1y(*),f1z(*),f2x(*),f2y(*),f2z(*),sigsp(nsigi,*),
74 . sigi(nsigs,*),x(3,*)
78 INTEGER I,ISK,IPNUM,IG,IIS,II,J,JJ,N,IFLAGINI,N1,N2,N4,,INIORTH(MVSIZ)
81 . XL,YL,ZL,SUM,HX,HY,HZ,KX,KY,KZ,LX,LY,LZ,PHI,CP,SP,VX,VY,VZ,VN,
83 . g11,g22,g33,g12,g21,g23,g32,g13,g31,pts(3)
87 CHARACTER(LEN=NCHARTITLE)::TITR
95 IF (nvsolid3 /= 0)
THEN
96 iis= nvsolid1 + nvsolid2 + 4 +nusolid
102 . sigsp(iis+3,jj) /= zero .OR. sigsp(iis+4,jj) /=zero .OR.
109 IF(iniorth(i) ==1 ) cycle
113 . igeo(npropgi-ltitr+1,ig),ltitr)
115 phi = geo(1,ig) * pi/hundred80
122 pts(1:3) = geo(33:35,ig)
128 . skew(1,isk)*e1x(i)+skew(2,isk)*e1y(i)+skew(3,isk)*e1z(i)
130 . skew(1,isk)*e2x(i)+skew(2,isk)*e2y(i)+skew(3,isk)*e2z(i)
132 . skew(1,isk)*e3x(i)+skew(2,isk)*e3y(i)+skew(3,isk)*e3z(i)
134 . skew(4,isk)*e1x(i)+skew(5,isk)*e1y(i)+skew(6,isk)*e1z(i)
136 . skew(4,isk)*e2x(i)+skew(5,isk)*e2y(i)+skew(6,isk)*e2z(i)
138 . skew(4,isk)*e3x(i)+skew(5,isk)*e3y(i)+skew(6,isk)*e3z(i)
139 ELSEIF (ipnum == 4)
THEN
143 f3x = f1y(i)*f2z(i) - f1z(i)*f2y(i)
144 f3y = f1z(i)*f2x(i) - f1x(i)*f2z(i)
145 f3z = f1x(i)*f2y(i) - f1y(i)*f2x(i)
146 sum = one /
max(sqrt(f3x*f3x+f3y*f3y+f3z*f3z),em20)
154 vn = vx*f3x + vy*f3y + vz*f3z
158 sum= sqrt(vx*vx+vy*vy+vz*vz)
165 sum = one /
max(sqrt(vx*vx+vy*vy+vz*vz),em20)
172 f2x(i) = f3y*f1z(i) - f3z*f1y(i)
173 f2y(i) = f3z*f1x(i) - f3x*f1z(i)
174 f2z(i) = f3x*f1y(i) - f3y*f1x(i)
178 sk(1) = cp*f1x(i) + sp*f2x(i)
179 sk(2) = cp*f1y(i) + sp*f2y(i)
180 sk(3) = cp*f1z(i) + sp*f2z(i)
181 sk(4) =-sp*f1x(i) + cp*f2x(i)
182 sk(5) =-sp*f1y(i) + cp*f2y(i)
183 sk(6) =-sp*f1z(i) + cp*f2z(i)
185 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
186 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
187 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
188 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
189 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
190 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
191 ELSEIF (ipnum == 5)
THEN
194 f3x = f1y(i)*f2z(i) - f1z(i)*f2y(i)
195 f3y = f1z(i)*f2x(i) - f1x(i)*f2z(i)
196 f3z = f1x(i)*f2y(i) - f1y(i)*f2x(i)
197 sum = one /
max(sqrt(f3x*f3x+f3y*f3y+f3z*f3z),em20)
205 vn = vx*f3x + vy*f3y + vz*f3z
209 sum= sqrt(vx*vx+vy*vy+vz*vz)
216 sum= one /
max(sqrt(vx*vx+vy*vy+vz*vz),em20)
223 f2x(i) = f3y*f1z(i) - f3z*f1y(i)
224 f2y(i) = f3z*f1x(i) - f3x*f1z(i)
225 f2z(i) = f3x*f1y(i) - f3y*f1x(i)
232 sk(4) = cp*f1x(i) + sp*f2x(i)
233 sk(5) = cp*f1y(i) + sp*f2y(i)
234 sk(6) = cp*f1z(i) + sp*f2z(i)
236 gama(i,1) = sk(1)*e1x(i) + sk(
237 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
238 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
239 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
240 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
241 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
242 ELSEIF (ipnum == 20)
THEN
245 IF (isolnod == 4 .OR. isolnod == 10)
THEN
256 sk(1) = x(1,n2)-x(1,n1)
257 sk(2) = x(2,n2)-x(2,n1)
258 sk(3) = x(3,n2)-x(3,n1)
259 sk(4) = x(1,n4)-x(1,n1)
260 sk(5) = x(2,n4)-x(2,n1)
261 sk(6) = x(3,n4)-x(3,n1)
263 sum = one /
max(sqrt(sk(1)*sk(1)+sk(2)*sk(2)+sk(3)*sk(3)),em20)
267 sum = sk(1)*sk(4)+sk(2)*sk(5)+sk(3)*sk(6)
268 sk(4) = sk(4) - sum*sk(1)
269 sk(5) = sk(5) - sum*sk(2)
270 sk(6) = sk(6) - sum*sk(3)
271 sum = one /
max(sqrt(sk(4)*sk(4)+sk(5)*sk(5)+sk(6)*sk(6)),em20)
277 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
278 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
279 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
280 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
281 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
282 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
284 gama(i,1:6) = sk(1:6)
286 ELSEIF (ipnum == 21)
THEN
306 sum = sqrt(sk(1)*sk(1)+sk(2)*sk(2)+sk(3)*sk(3))
311 . anmode=aninfo_blind_1,
324 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
325 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
326 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
327 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
328 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
329 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
331 gama(i,1:6) = sk(1:6)
334 ELSEIF (ipnum == 23)
THEN
336 sum = one /
max(sqrt(sx(i)*sx(i)+sy(i)*sy(i)+sz(i)*sz(i)),em20)
343 sum = vx*f3x+vy*f3y+vz*f3z
347 sk(1) = sk(5)*f3z - sk(6)*f3y
348 sk(2) = sk(6)*f3x - sk(4)*f3z
349 sk(3) = sk(4)*f3y - sk(5)*f3x
350 sum = sqrt(sk(1)*sk(1)+sk(2)*sk(2)+sk(3)*sk(3))
355 . anmode=aninfo_blind_1,
363 f2x(i) = f3y*f1z(i) - f3z*f1y(i)
364 f2y(i) = f3z*f1x(i) - f3x*f1z(i)
365 f2z(i) = f3x*f1y(i) - f3y*f1x(i)
367 sk(1) = cp*f1x(i) + sp*f2x(i)
368 sk(2) = cp*f1y(i) + sp*f2y(i)
369 sk(3) = cp*f1z(i) + sp*f2z(i)
370 sk(4) =-sp*f1x(i) + cp*f2x(i)
371 sk(5) =-sp*f1y(i) + cp*f2y(i)
372 sk(6) =-sp*f1z(i) + cp*f2z(i)
375 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
376 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
377 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
378 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
379 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
380 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
382 gama(i,1:6) = sk(1:6)
385 ELSEIF (ipnum == 24)
THEN
405 sum = one /
max(sqrt(vx*vx+vy*vy+vz*vz),em20)
412 sum = vx*sk(1)+vy*sk(2)+vz*sk(3)
416 sk(1) = vy*f3z - vz*f3y
417 sk(2) = vz*f3x - vx*f3z
418 sk(3) = vx*f3y - vy*f3x
419 sum = sqrt(sk(1)*sk(1)+sk(2)*sk(2)+sk(3)*sk(3))
424 . anmode=aninfo_blind_1,
437 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
438 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
439 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
440 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
441 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
442 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
444 gama(i,1:6) = sk(1:6)
447 ELSEIF (jcvt == 0)
THEN
471 vn = vx*e3x(i) + vy*e3y(i) + vz*e3z(i)
475 sum = sqrt(vx*vx+vy*vy+vz*vz)
478 . msgtype=msgwarning,
479 . anmode=aninfo_blind_1,
491 sk(4) = e3y(i)* sk(3) - e3z(i)* sk(2)
492 sk(5) = e3z(i)* sk(1) - e3x(i)* sk(3)
493 sk(6) = e3x(i)* sk(2) - e3y(i)* sk(1)
494 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
495 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
496 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
497 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
498 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
499 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
501 vn = vx*e1x(i) + vy*e1y(i) + vz*e1z(i)
505 sum = sqrt(vx*vx+vy*vy+vz*vz)
508 . msgtype=msgwarning,
509 . anmode=aninfo_blind_1,
521 sk(4) = e1y(i)* sk(3) - e1z(i)* sk(2)
522 sk(5) = e1z(i)* sk(1) - e1x(i)* sk(3)
523 sk(6) = e1x(i)* sk(2) - e1y(i)* sk(1)
524 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
525 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
526 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
527 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z
528 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
529 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
535 sum = sqrt(vx*vx+vy*vy+vz*vz)
538 . msgtype=msgwarning,
539 . anmode=aninfo_blind_1,
551 sk(4) = e2y(i)* sk(3) - e2z(i)* sk(2)
552 sk(5) = e2z(i)* sk(1) - e2x(i)* sk(3)
553 sk(6) = e2x(i)* sk(2) - e2y(i)* sk(1)
554 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z
555 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
556 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
557 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
558 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
559 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
561 ELSEIF (jcvt > 0)
THEN
563 sum=sqrt(rx(i)**2+ry(i)**2+rz(i)**2)
564 IF (sum > zero) sum=one/sum
571 sum = sqrt(lx**2+ly**2+lz**2)
572 IF (sum > zero) sum=one/sum
579 sum = sqrt(kx**2+ky**2+kz**2)
580 IF (sum > zero) sum=one/sum
607 vn = vx*lx + vy*ly + vz*lz
611 sum = sqrt(vx*vx+vy*vy+vz*vz)
614 . msgtype=msgwarning,
615 . anmode=aninfo_blind_1,
628 sk(5) = lz* sk(1) - lx* sk(3)
629 sk(6) = lx* sk(2) - ly* sk(1)
631 vn = vx*hx + vy*hy + vz*hz
635 sum = sqrt(vx*vx+vy*vy+vz*vz)
638 . msgtype=msgwarning,
639 . anmode=aninfo_blind_1,
651 sk(4) = hy* sk(3) - hz* sk(2)
652 sk(5) = hz* sk(1) - hx* sk(3)
653 sk(6) = hx* sk(2) - hy* sk(1)
655 vn = vx*kx + vy*ky + vz*kz
659 sum = sqrt(vx*vx+vy*vy+vz*vz)
662 . msgtype=msgwarning,
663 . anmode=aninfo_blind_1,
675 sk(4) = ky* sk(3) - kz* sk(2)
676 sk(5) = kz* sk(1) - kx* sk(3)
677 sk(6) = kx* sk(2) - ky* sk(1)
679 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
680 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
681 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
682 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
683 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
684 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
691 a(1) = rx(i)*e1x(i) + ry(i)*e1y(i) + rz(i)*e1z(i)
692 a(2) = rx(i)*e2x(i) + ry(i)*e2y(i) + rz(i)*e2z(i)
693 a(3) = rx(i)*e3x(i) + ry(i)*e3y(i) + rz(i)*e3z(i)
694 a(4) = sx(i)*e1x(i) + sy(i)*e1y(i) + sz(i)*e1z(i)
695 a(5) = sx(i)*e2x(i) + sy(i)*e2y(i) + sz(i)*e2z(i)
696 a(6) = sx(i)*e3x(i) + sy(i)*e3y(i) + sz(i)*e3z(i)
697 a(7) = tx(i)*e1x(i) + ty(i)*e1y(i) + tz(i)*e1z(i)
698 a(8) = tx(i)*e2x(i) + ty(i)*e2y(i) + tz(i)*e2z(i)
699 a(9) = tx(i)*e3x(i) + ty(i)*e3y(i) + tz(i)*e3z(i)
708 gama(i,1) = b(1)*a(1) + b(4)*a(2) + b(7)*a(3)
709 gama(i,2) = b(2)*a(1) + b(5)*a(2) + b(8)*a(3)
710 gama(i,3) = b(3)*a(1) + b(6)*a(2) + b(9)*a(3)
711 sum = one /
max(em20,sqrt(gama(i,1)**2 + gama(i,2)**2 + gama(i,3)**2))
712 gama(i,1) = gama(i,1) * sum
713 gama(i,2) = gama(i,2) * sum
714 gama(i,3) = gama(i,3) * sum
716 gama(i,4) = b(1)*a(4) + b(4)*a(5) + b(7)*a(6)
717 gama(i,5) = b(2)*a(4) + b(5)*a(5) + b(8)*a(6)
718 gama(i,6) = b(3)*a(4) + b(6)*a(5) + b(9)*a(6)
719 sum = one /
max(em20,sqrt(gama(i,4)**2 + gama(i,5)**2 + gama(i,6)**2))
720 gama(i,4) = gama(i,4) * sum
721 gama(i,5) = gama(i,5) * sum
722 gama(i,6) = gama(i,6) * sum
727 IF (nvsolid3 /= 0)
THEN
728 iis= nvsolid1 + nvsolid2 + 4 + nusolid
733 IF(jj==0)iflagini = 0
734 IF(iflagini == 1 .AND.
735 . ( sigsp(iis+1,jj) /= zero.OR.sigsp(iis+2,jj)/=zero.OR.
736 . sigsp(iis+3,jj) /= zero .OR. sigsp(iis+4,jj) /= zero .OR.
737 . sigsp(iis+5,jj) /= zero .OR. sigsp(iis+6,jj) /= zero) )
THEN
738 g11 = sigsp(iis+1,jj)
739 g21 = sigsp(iis+2,jj)
740 g31 = sigsp(iis+3,jj)
741 g12 = sigsp(iis+4,jj)
742 g22 = sigsp(iis+5,jj)
743 g32 = sigsp(iis+6,jj)
744 g13 = g21*g32-g31*g22
745 g23 = g31*g12-g11*g32
746 g33 = g11*g22-g21*g12
748 gama(i,1)=e1x(i)*g11+e1y(i)*g21+e1z(i)*g31
749 gama(i,2)=e2x(i)*g11+e2y(i)*g21+e2z(i)*g31
750 gama(i,3)=e3x(i)*g11+e3y(i)*g21+e3z(i)*g31
751 gama(i,4)=e1x(i)*g12+e1y(i)*g22+e1z(i)*g32
752 gama(i,5)=e2x(i)*g12+e2y(i)*g22+e2z(i)*g32
753 gama(i,6)=e3x(i)*g12+e3y(i)*g22+e3z(i)*g32