39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66#include "implicit_f.inc"
67
68
69
70#include "mvsiz_p.inc"
71
72
73
74#include "param_c.inc"
75
76
77
78 INTEGER NEL,IOUT,IPROP,NUVAR,IX(4,MVSIZ)
80 . mass(nel) ,xiner(nel) ,stifn(nel),xl(mvsiz,3) ,
81 . stifr(nel),viscm(nel) ,viscr
82
83
84
85 INTEGER I,IDSK1,IDSK2,JTYP,SKFLG,IFKNX,IFKNY,IFKNZ,
86 . IFKRX,IFKRY,,IFCNX,IFCNY,IFCNZ,IFCRX,IFCRY,,
87 . GET_U_PNU,GET_SKEW,KFUNC,KMAT,KPROP
88 my_real kxx,kyy,kzz,krx,kry,krz,knn,kr,x1,y1,z1,len2,
89 . k1,k2,k3,k4,k5,k6,c1,c2,c3,c4,c5,c6,ktt,krr,ctt,crr,
90 . cxx,cyy,czz,crx,cry,crz, deri,xf,get_u_func,
91 . u(lskew),v(lskew),a(lskew),b(lskew),ex(lskew),get_u_geo
92
94 parameter(kfunc=29)
95 parameter(kmat=31)
96 parameter(kprop=33)
97
98 jtyp = nint(get_u_geo(1,iprop))
99 idsk1= nint(get_u_geo(2,iprop))
100 idsk2= nint(get_u_geo(3,iprop))
101 skflg= nint(get_u_geo(14,iprop))
102 kxx = get_u_geo(4,iprop)
103 kyy = get_u_geo(5,iprop)
104 kzz = get_u_geo(6,iprop)
105 krx = get_u_geo(7,iprop)
106 kry = get_u_geo(8,iprop)
107 krz = get_u_geo(9,iprop)
108 knn = get_u_geo(10,iprop)
115
116 k1 = kxx
117 k2 = kyy
118 k3 = kzz
119 k4 = krx
120 k5 = kry
121 k6 = krz
122 IF (ifknx/=0) THEN
123 xf = get_u_func(ifknx,zero,deri)
124 k1 =
max(kxx*deri, em20)
125 ENDIF
126 IF (ifkny/=0) THEN
127 xf = get_u_func(ifkny,zero,deri)
128 k2 =
max(kyy*deri, em20)
129 ENDIF
130 IF (ifknz/=0) THEN
131 xf = get_u_func(ifknz,zero,deri)
132 k3 =
max(kzz*deri, em20)
133 ENDIF
134 IFTHEN
135 xf = get_u_func(ifkrx,zero,deri)
136 k4 =
max(krx*deri, em20)
137 ENDIF
138 IF (ifkry/=0) THEN
139 xf = get_u_func(ifkry,zero,deri)
140 k5 =
max(kry*deri, em20)
141 ENDIF
142 IF (ifkrz/=0) THEN
143 xf = get_u_func(ifkrz,zero,deri)
144 k6 =
max(krz*deri, em20)
145 ENDIF
146 cxx = get_u_geo(21,iprop)
147 cyy = get_u_geo(22,iprop)
148 czz = get_u_geo(23,iprop)
149 crx = get_u_geo(24,iprop)
150 cry = get_u_geo(25,iprop)
151 crz = get_u_geo(26,iprop)
152
159
160 c1 = cxx
161 c2 = cyy
162 c3 = czz
163 c4 = crx
164 c5 = cry
165 c6 = crz
166 IF (ifcnx/=0) THEN
167 xf = get_u_func(ifcnx,zero,deri)
168 c1 =
max(cxx*deri, em20)
169 ENDIF
170 IF (ifcny/=0) THEN
171 xf = get_u_func(ifcny,zero,deri)
172 c2 =
max(cyy*deri, em20)
173 ENDIF
174 IF (ifcnz/=0) THEN
175 xf = get_u_func(ifcnz,zero,deri)
176 c3 =
max(czz*deri, em20)
177 ENDIF
178 IF (ifcrx/=0) THEN
179 xf = get_u_func(ifcrx,zero,deri)
180 c4 =
max(crx*deri, em20)
181 ENDIF
182 IF (ifcry/=0) THEN
183 xf = get_u_func(ifcry,zero,deri)
184 c5 =
max(cry*deri, em20)
185 ENDIF
186 IF (ifcrz/=0) THEN
187 xf = get_u_func(ifcrz,zero,deri)
188 c6 =
max(crz*deri, em20)
189 ENDIF
194
195 ierr=ierr+
get_skew(iout,jtyp,skflg,idsk1,idsk2,u,v,ex,a,b)
196 DO i=1,nel
197 x1 = xl(i,1)
198 y1 = xl(i,2)
199 z1 = xl(i,3)
200 xl(i,1)=ex(1)*x1+ex(2)*y1+ex(3)*z1
201 xl(i,2)=ex(4)*x1+ex(5)*y1+ex(6)*z1
202 xl(i,3)=ex(7)*x1+ex(8)*y1+ex(9)*z1
203 ENDDO
204
205
206
207 DO i=1,nel
208 mass(i) = zero
209 xiner(i) = zero
210 uvar(1,i) = xl(i,1)
211 uvar(2,i) = xl(i,2)
212 uvar(3,i) = xl(i,3)
213 len2=xl(i,1)*xl(i,1)+xl(i,2)*xl(i,2)+xl(i,3)*xl(i,3)
214 uvar(4,i) = a(1)
215 uvar(5,i) = a(2)
216 uvar(6,i) = a(3)
217 uvar(7,i) = a(4)
218 uvar(8,i) = a(5)
219 uvar(9,i) = a(6)
220 uvar(10,i)= a(7)
221 uvar(11,i)= a(8)
222 uvar(12,i)= a(9)
223 uvar(22,i)= ex(1)
224 uvar(23,i)= ex(2)
225 uvar(24,i)= ex(3)
226 uvar(25,i)= ex(4)
227 uvar(26,i)= ex(5)
228 uvar(27,i)= ex(6)
229 uvar(28,i)= ex(7)
230 uvar(29,i)= ex(8)
231 uvar(30,i)= ex(9)
232
233 kr = knn*
max(one,len2)
234 uvar(19,i)=
235 uvar(20,i)= kyy
236 uvar(21,i)= kzz
237
238 IF(jtyp>=2.AND.jtyp<=4) THEN
239 uvar(31,i)= krx
240 uvar(32,i)= kr
241 uvar(33,i)= kr
242 ELSEIF(jtyp==5) THEN
243 uvar(31,i)= kr
244 uvar(32,i)= kry
245 uvar(33,i)= krz
246 ELSEIF(jtyp>=6.AND.jtyp<=8) THEN
247 uvar(31,i)= kr
248 uvar(32,i)= kr
249 uvar(33,i)= kr
250 ELSE
251 uvar(31,i)= krx
252 uvar(32,i)= kry
253 uvar(33,i)= krz
254 ENDIF
255
256 uvar(34,i)= zero
257 uvar(35,i)= zero
258 uvar(36,i)= zero
259 uvar(37,i)= zero
260 uvar(38,i)= zero
261 uvar(39,i)= zero
262
263 stifn(i) = ktt
264 stifr(i) = krr+ktt*len2
265 viscm(i) = ctt
266 viscr(i) = crr
267 ENDDO
268
269 RETURN
integer function get_u_pnu(ivar, ip, k)