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