39
40
41
42#include "implicit_f.inc"
43
44
45
46#include "mvsiz_p.inc"
47
48
49
50#include "com01_c.inc"
51
52
53
54 INTEGER, INTENT(IN) :: NEL
55 INTEGER, INTENT(IN) :: JSPH
57 .r11(mvsiz),r12(mvsiz),r13(mvsiz),r21(mvsiz),r22(mvsiz),r23(mvsiz),
58 .r31(mvsiz),r32(mvsiz),r33(mvsiz),
59 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz) ,
60 . sx(mvsiz) ,sy(mvsiz) ,sz(mvsiz) ,
61 . tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz)
62
63
64
65 INTEGER I,J
67 . s11, s12, s13, s21,
68 . s22, s23, s31,
69 . s32, s33, rr, rrd
70
71
72 IF(jsph==0)THEN
73 IF(n2d==0)THEN
74 DO 100 i=1,nel
75 rr=
max(sqrt(rx(i)**2+ry(i)**2+rz(i)**2),em20)
76 rx(i)=rx(i)/rr
77 ry(i)=ry(i)/rr
78 rz(i)=rz(i)/rr
79 100 CONTINUE
80
81 DO 105 i=1,nel
82 tx(i)=ry(i)*sz(i)-rz(i)*sy(i)
83 ty(i)=rz(i)*sx(i)-rx(i)*sz(i)
84 tz(i)=rx(i)*sy(i)-ry(i)*sx(i)
85 rr=
max(sqrt(tx(i)**2+ty(i)**2+tz(i)**2),em20)
86 tx(i)=tx(i)/rr
87 ty(i)=ty(i)/rr
88 tz(i)=tz(i)/rr
89 105 CONTINUE
90
91 DO 110 i=1,nel
92 sx(i)=ty(i)*rz(i)-tz(i)*ry(i)
93 sy(i)=tz(i)*rx(i)-tx(i)*rz(i)
94 sz(i)=tx(i)*ry(i)-ty(i)*rx(i)
95 rr=
max(sqrt(sx(i)**2+sy(i)**2+sz(i)**2),em20)
96 sx(i)=sx(i)/rr
97 sy(i)=sy(i)/rr
98 sz(i)=sz(i)/rr
99 110 CONTINUE
100 ELSE
101
102
103
104
105
106
107 DO 120 i=1,nel
108 rr=
max(sqrt(sy(i)**2+sz(i)**2),em20)
109 rx(i)= sy(i)/rr
110 ry(i)= sz(i)/rr
111 rz(i)= zero
112 sx(i)=-ry(i)
113 sy(i)= rx(i)
114 sz(i)= zero
115 tx(i)= zero
116 ty(i)= zero
117 tz(i)= one
118 120 CONTINUE
119 ENDIF
120
121 DO i=1,nel
122 s11=ang(i,1)
123 s21=ang(i,2)
124 s31=ang(i,3)
125 s12=ang(i,4)
126 s22=ang(i,5)
127 s32=ang(i,6)
128 s13=s21*s32-s31*s22
129 s23=s31*s12-s11*s32
130 s33=s11*s22-s21*s12
131
132 r11(i) = s11*rx(i)+s21*sx(i)+s31*tx(i)
133 r21(i) = s11*ry(i)+s21*sy(i)+s31*ty(i)
134 r31(i) = s11*rz(i)+s21*sz(i)+s31*tz(i)
135
136 r12(i) = s12*rx(i)+s22*sx(i)+s32*tx(i)
137 r22(i) = s12*ry(i)+s22*sy(i)+s32*ty(i)
138 r32(i) = s12*rz(i)+s22*sz(i)+s32*tz(i)
139
140 r13(i) = s13*rx(i)+s23*sx(i)+s33*tx(i)
141 r23(i) = s13*ry(i)+s23*sy(i)+s33*ty(i)
142 r33(i) = s13*rz(i)+s23*sz(i)+s33*tz(i)
143 ENDDO
144
145 ELSE
146
147 DO i=1,nel
148 r11(i)=ang(i,1)
149 r21(i)=ang(i,2)
150 r31(i)=ang(i,3)
151 r12(i)=ang(i,4)
152 r22(i)=ang(i,5)
153 r32(i)=ang(i,6)
154 r13(i)=r21(i)*r32(i)-r31(i)*r22(i)
155 r23(i)=r31(i)*r12(i)-r11(i)*r32(i)
156 r33(i)=r11(i)*r22(i)-r21(i)*r12(i)
157 END DO
158
159 END IF
160
161 RETURN