31
32
33
34#include "implicit_f.inc"
35
36
37
38#include "mvsiz_p.inc"
39
40
41
42
43
44
45 INTEGER, INTENT(IN) :: ISORTH
46
48 . x(3,*),tens(6,*),gama(6,*)
49 INTEGER IXQ(NIXQ,*), KCVT, NEL
50
51
52
53
55 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
56 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
57 . r22(mvsiz),r23(mvsiz),r32(mvsiz),r33(mvsiz
58 . t22(mvsiz),t33(mvsiz),t23(mvsiz),t32(mvsiz),
59 . sy(mvsiz),sz(mvsiz),ty(mvsiz),tz(mvsiz),
60 . g22,g33,g23,g32,
61 . ct,cs,suma,
62 . t1,t2,t3,t4,s1,s2,s3,s4
63 INTEGER NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), NC4(MVSIZ),
64 . N, I
65
66 IF (kcvt == 0) THEN
67 DO i=1,nel
68 nc1(i)=ixq(2,i)
69 nc2(i)=ixq(3,i)
70 nc3(i)=ixq(4,i)
71 nc4(i)=ixq(5,i)
72
73
74
75 y1(i)=x(2,nc1(i))
76 z1(i)=x(3,nc1(i))
77 y2(i)=x(2,nc2(i))
78 z2(i)=x(3,nc2(i))
79 y3(i)=x(2,nc3(i))
80 z3(i)=x(3,nc3(i))
81 y4(i)=x(2,nc4(i))
82 z4(i)=x(3,nc4(i))
83
84
85
86 sy(i)=half*(y2(i)+y3(i)-y1(i)-y4(i))
87 sz(i)=half*(z2(i)+z3(i)-z1(i)-z4(i))
88 ty(i)=half*(y3(i)+y4(i)-y1(i)-y2(i))
89 tz(i)=half*(z3(i)+z4(i)-z1(i)-z2(i))
90 ENDDO
91
92
93
94 DO i=1,nel
95 ct = ty(i)*ty(i)+tz(i)*tz(i)
96 cs = sy(i)*sy(i)+sz(i)*sz(i)
97 IF(cs /= zero) THEN
98 suma = sqrt(ct/
max(em20,cs))
99 sy(i) = sy(i)*suma + tz(i)
100 sz(i) = sz(i)*suma - ty(i)
101 ELSEIF(ct /= zero)THEN
102 suma = sqrt(cs/
max(em20,ct))
103 sy(i) = sy(i) + tz(i)*suma
104 sz(i) = sz(i) - ty(i)*suma
105 END IF
106 suma=one/
max(sqrt(sy(i)**2+sz(i)**2),em20)
107 sy(i)=sy(i)*suma
108 sz(i)=sz(i)*suma
109
110
111
112 r22(i)= sy(i)
113 r32(i)=-sz(i)
114 r23(i)= sz(i)
115 r33(i)= sy(i)
116 ENDDO
117
118 ELSEIF (isorth /= 0) THEN
119 DO i=1,nel
120 g22=gama(i,2)
121 g32=gama(i,3)
122 g23=gama(i,5)
123 g33=gama(i,6)
124
125
126
127 r22(i)= g22
128 r23(i)=-g23
129 r32(i)=-g32
130 r33(i)= g33
131 ENDDO
132 END IF
133
134 DO i=1,nel
135
136
137
138 s1=tens(1,i)
139 s2=tens(2,i)
140 s4=tens(4,i)
141
142 IF (kcvt == 0) THEN
143
144
145
146 t1=s1*r22(i)+s4*r23(i)
147 t2=s4*r32(i)+s2*r33(i)
148 t3=s1*r32(i)+s4*r33(i)
149 t4=s4*r22(i)+s2*r23(i)
150 tens(1,i)=r22(i)*t1+r23(i)*t4
151 tens(2,i)=r32(i)*t3+r33(i)*t2
152 tens(4,i)=r22(i)*t3+r23(i)*t2
153 ELSE
154
155
156
157 t1=s1*r22(i)-s4*r23(i)
158 t2=-s4*r32(i)+s2*r33(i)
159 t3=-s1*r32(i)+s4*r33(i)
160 t4=s4*r22(i)-s2*r23(i)
161 tens(1,i)=r22(i)*t1-r23(i)*t4
162 tens(2,i)=-r32(i)*t3+r33(i)*t2
163 tens(4,i)=r22(i)*t3-r23(i)*t2
164 ENDIF
165 ENDDO
166
167 RETURN