36
37
38
39 USE elbufdef_mod
40
41
42
43#include "implicit_f.inc"
44
45
46
47#include "mvsiz_p.inc"
48
49
50
51 INTEGER NEL, ILAY, I, ITY, IORTH, IGTYP, MLW, JDIR
54 . rx(mvsiz), ry(mvsiz), rz(mvsiz),
55 . sx(mvsiz), sy(mvsiz), sz(mvsiz),
56 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
57 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
58 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
59 . dir_a(*) ,dir_b(*)
60
61 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
62
63
64
65 INTEGER ILAW , II
67 . dir(2),
68 .
69 . r1,s1,s2,r2,rs1,rs2,r12a,r22a,s12b,s22b,
70 . rs3,r3r3,s3s3,t1,t2,t3,s3,s4,s5,
71 . l11,l12,l13,l22,l23,l33,
72 . r11,r12,r13,r21,r22,r23,r31,r32,r33,
73 . s11,s12,s21,s13,s31,s22,s23,s32,s33
74
75
76
77
78
79 IF(ilay > 0 ) THEN
80 ilaw = elbuf_str%BUFLY(ilay)%ILAW
81 ELSE
82 ilaw = mlw
83 ENDIF
84
85
86
87 IF (iorth > 0) THEN
88
89 IF (igtyp == 16) THEN
90 ii = jdir + i-1
91 r1 = dir_a(ii)
92 s1 = dir_a(ii+nel)
93 r2 = dir_b(ii)
94 s2 = dir_b(ii+nel)
95
96 rs1= r1*s1
97 rs2= r2*s2
98 r12a = r1*r1
99 r22a = r2*r2
100 s12b = s1*s1
101 s22b = s2*s2
102
103 rs3 = s1*s2-r1*r2
104 r3r3= one+s1*r2+r1*s2
105 r3r3= half*r3r3
106 s3s3= one-s1*r2-r1*s2
107 s3s3= half*s3s3
108 t1 = sig(1)
109 t2 = sig(2)
110 t3 = sig(3)
111 sig(1) = r12a*t1 + r22a*t2 - rs3*t3
112 sig(2) = s12b*t1 + s22b*t2 + rs3*t3
113 sig(3) = rs1*t1 + rs2*t2 + (r3r3 - s3s3)*t3
114
115 ELSEIF ((igtyp == 51 .OR. igtyp == 52) .AND. ilaw == 58) THEN
116 ii = jdir + i-1
117 r1 = dir_a(ii)
118 s1 = dir_a(ii+nel)
119 r2 = dir_b(ii)
120 s2 = dir_b(ii+nel)
121
122 rs1= r1*s1
123 rs2= r2*s2
124 r12a = r1*r1
125 r22a = r2*r2
126 s12b = s1*s1
127 s22b = s2*s2
128 rs3 = s1*s2-r1*r2
129 r3r3= one+s1*r2+r1*s2
130 r3r3= half*r3r3
131 s3s3= one-s1*r2-r1*s2
132 s3s3= half*s3s3
133 t1 = sig(1)
134 t2 = sig(2)
135 t3 = sig(3)
136
137 sig(1) = r12a*t1 + r22a*t2 - rs3*t3
138 sig(2) = s12b*t1 + s22b*t2 + rs3*t3
139 sig(3) = rs1*t1 + rs2*t2 + (r3r3 - s3s3)*t3
140 ELSE
141 IF (ilaw /= 1 .and. ilaw /= 2 .and. ilaw /= 19 .and. ilaw /= 27 .and. ilaw /= 32) THEN
142 ii = jdir + i-1
143 dir(1) = dir_a(ii)
144 dir(2) = dir_a(ii+nel)
145 s1 = dir(1)*dir(1)*sig(1)
146 . + dir(2)*dir(2)*sig(2)
147 . -two*dir(1)*dir(2)*sig(3)
148 s2 = dir(2)*dir(2)*sig(1)
149 . + dir(1)*dir(1)*sig(2)
150 . +two*dir(2)*dir(1)*sig(3)
151 s3 = dir(1)*dir(2)*sig(1)
152 . - dir(2)*dir(1)*sig(2)
153 . +(dir(1)*dir(1)-dir(2)*dir(2))*sig(3)
154 s4 = dir(2)*sig(5)+dir(1)*sig(4)
155 s5 = dir(1)*sig(5)-dir(2)*sig(4)
156
157 sig(1)=s1
158 sig(2)=s2
159 sig(3)=s3
160 sig(4)=s4
161 sig(5)=s5
162 ENDIF
163 ENDIF
164
165 ENDIF
166
167
168
169
170
171
172
173 l11 =sig(1)
174 l22 =sig(2)
175 l33 =zero
176 l12 =sig(3)
177 l23 =sig(4)
178 l13 =sig(5)
179
180 r11 = e1x(i)
181 r12 = e1y(i)
182 r13 = e1z(i)
183
184 r21 = e2x(i)
185 r22 = e2y(i)
186 r23 = e2z(i)
187
188 r31 = e3x(i)
189 r32 = e3y(i)
190 r33 = e3z(i)
191
192 s11 =l11*r11+l12*r12+l13*r13
193 s12 =l11*r21+l12*r22+l13*r23
194 s13 =l11*r31+l12*r32+l13*r33
195 s21 =l12*r11+l22*r12+l23*r13
196 s22 =l12*r21+l22*r22+l23*r23
197 s23 =l12*r31+l22*r32+l23*r33
198 s31 =l13*r11+l23*r12
199 s32 =l13*r21+l23*r22
200 s33 =l13*r31+l23*r32
201
202 sig(1) =r11*s11+r12*s21+r13*s31
203 sig(2) =r21*s12+r22*s22+r23*s32
204 sig(3) =r31*s13+r32*s23+r33*s33
205 sig(4) =r11*s12+r12*s22+r13*s32
206 sig(5) =r21*s13+r22*s23+r23*s33
207 sig(6) =r11*s13+r12*s23+r13*s33
208
209
210 RETURN