53
54
55
56 USE elbufdef_mod
61
62
63
64#include "implicit_f.inc"
65
66
67
68#include "mvsiz_p.inc"
69
70
71
72#include "vect01_c.inc"
73#include "com04_c.inc"
74#include "scry_c.inc"
75#include "param_c.inc"
76#include "scr17_c.inc"
77
78
79
80 INTEGER IXQ(NIXQ,*), IPARG(*),IGEO(NPROPGI,*),
81 . ,IPART(LIPART1,*),IPARTQ(*),IPM(NPROPMI,*), PTQUAD(*),
82 . NSIGS, NPF(*),IPARGG(*)
84 . ms(*), pm(npropm,*), x(*), geo(npropg,*),
85 . veul(10,*), dtelem(*),sigi(nsigs,*),skew(lskew,*),
86 . msq(*), bufmat(*), tf(*),wma(*),partsav(20,*),v(*)
87 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
88 INTEGER,INTENT(IN) :: ILOADP(SIZLOADP,*)
89 my_real,
INTENT(IN) :: facload(lfacload,*)
90 TYPE(DETONATORS_STRUCT_) :: DETONATORS
91 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ)
119 INTEGER NF1, I, IGTYP, IHBE, IP
120 INTEGER IR,IS,NPTR,NPTS,IBID, IPID1
121 my_real y1(mvsiz),y2(mvsiz),y3(mvsiz),y4(mvsiz),
122 + z1(mvsiz),z2(mvsiz),z3(mvsiz),z4(mvsiz),
123 + y12(mvsiz),y34(mvsiz),y13(mvsiz),y24(mvsiz),
124 + y14(mvsiz),y23(mvsiz),
125 + z12(mvsiz),z34(mvsiz),z13(mvsiz),z24(mvsiz),
126 + z14(mvsiz),z23(mvsiz),yavg(mvsiz),
area(mvsiz),
127 + bid(1),dtx(mvsiz),
128 + sy(mvsiz) ,sz(mvsiz) ,ty(mvsiz) ,tz(mvsiz),
129 . e1y(mvsiz),e1z(mvsiz),e2y(mvsiz),e2z(mvsiz)
131 my_real deltax(mvsiz),y234(mvsiz),y124(mvsiz)
133 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
134
135
136 CHARACTER(LEN=NCHARTITLE)::TITR1
137
138 TYPE(L_BUFEL_) ,POINTER :: LBUF
139 TYPE(G_BUFEL_) ,POINTER :: GBUF
140 TYPE(BUF_MAT_) ,POINTER :: MBUF
141
143 . w_gauss(9,9),a_gauss(9,9)
144 DATA w_gauss /
145 1 2. ,0. ,0. ,
146 1 0. ,0. ,0. ,
147 1 0. ,0. ,0. ,
148 2 1. ,1. ,0. ,
149 2 0. ,0. ,0. ,
150 2 0. ,0. ,0. ,
151 3 0.555555555555556,0.888888888888889,0.555555555555556,
152 3 0. ,0. ,0. ,
153 3 0. ,0. ,0. ,
154 4 0.347854845137454,0.652145154862546,0.652145154862546,
155 4 0.347854845137454,0. ,0. ,
156 4 0. ,0. ,0. ,
157 5 0.236926885056189,0.478628670499366,0.568888888888889,
158 5 0.478628670499366,0.236926885056189,0. ,
159 5 0. ,0. ,0. ,
160 6 0.171324492379170,0.360761573048139,0.467913934572691,
161 6 0.467913934572691,0.360761573048139,0.171324492379170,
162 6 0. ,0. ,0. ,
163 7 0.129484966168870,0.279705391489277,0.381830050505119,
164 7 0.417959183673469,0.381830050505119,0.279705391489277,
165 7 0.129484966168870,0. ,0. ,
166 8 0.101228536290376,0.222381034453374,0.313706645877887,
167 8 0.362683783378362,0.362683783378362,0.313706645877887,
168 8 0.222381034453374,0.101228536290376,0. ,
169 9 0.081274388361574,0.180648160694857,0.260610696402935,
170 9 0.312347077040003,0.330239355001260,0.312347077040003,
171 9 0.260610696402935,0.180648160694857,0.081274388361574/
172 DATA a_gauss /
173 1 0. ,0. ,0. ,
174 1 0. ,0. ,0. ,
175 1 0. ,0. ,0. ,
176 2 -.577350269189626,0.577350269189626,0. ,
177 2 0. ,0. ,0. ,
178 2 0. ,0. ,0. ,
179 3 -.774596669241483,0. ,0.774596669241483,
180 3 0. ,0. ,0. ,
181 3 0. ,0. ,0. ,
182 4 -.861136311594053,-.339981043584856,0.339981043584856,
183 4 0.861136311594053,0. ,0. ,
184 4 0. ,0. ,0. ,
185 5 -.906179845938664,-.538469310105683,0. ,
186 5 0.538469310105683,0.906179845938664,0. ,
187 5 0. ,0. ,0. ,
188 6 -.932469514203152,-.661209386466265,-.238619186083197,
189 6 0.238619186083197,0.661209386466265,0.932469514203152,
190 6 0. ,0. ,0. ,
191 7 -.949107912342759,-.741531185599394,-.405845151377397,
192 7 0. ,0.405845151377397,0.741531185599394,
193 7 0.949107912342759,0. ,0. ,
194 8 -.960289856497536,-.796666477413627,-.525532409916329,
195 8 -.183434642495650,0.183434642495650,0.525532409916329,
196 8 0.796666477413627,0.960289856497536,0. ,
197 9 -.968160239507626,-.836031107326636,-.613371432700590,
198 9 -.324253423403809,0. ,0.324253423403809,
199 9 0.613371432700590,0.836031107326636,0.968160239507626/
200
201
202
203 gbuf => elbuf_str%GBUF
204 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,1)
205 mbuf => elbuf_str%BUFLY(1)%MAT(1,1,1)
206
207 igtyp = iparg(38)
208 ihbe = iparg(23)
209 jcvt = iparg(37)
210
211 isorth = 0
212 ibid = 0
213 bid = zero
214 tempel(:) = zero
215
216 nf1 = nft+1
217 IF(jcvt==0)THEN
218 CALL qcoor2(x,ixq(1,nf1),ngl,mat,
219 . pid, ix1, ix2, ix3, ix4,
220 . y1, y2, y3, y4,
221 . z1, z2, z3, z4,
222 . sy, sz, ty, tz)
223 DO i=lft,llt
224 yavg(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
225 ENDDO
226 ELSE
228 . pid, ix1, ix2, ix3, ix4,
229 . y1, y2, y3, y4,
230 . z1, z2, z3, z4,yavg,y234,y124,
231 . sy,sz,ty,tz,
232 . e1y, e1z, e2y, e2z)
233 ENDIF
234
235 IF (igtyp == 6)
CALL qmorth2(pid ,geo ,igeo ,gbuf%GAMA, nel,
236 . sy ,sz ,ty ,tz ,
237 . e1y ,e1z , e2y, e2z)
238
239 CALL q4voli2(gbuf%VOL,ixq(1,nf1),
241 . y1, y2, y3, y4,
242 . z1, z2, z3, z4,y234,y124
245 . y1, y2, y3, y4,
246 . z1, z2, z3, z4)
247 IF(jeul/=0)
CALL edlen2(veul(1,nf1),
area, deltax)
248 DO i=lft,llt
249 y12(i) = y1(i) - y2(i)
250 y34(i) = y3(i) - y4(i)
251 y13(i) = y1(i) - y3(i)
252 y24(i) = y2(i) - y4(i)
253 y14(i) = y1(i) - y4(i)
254 y23(i) = y2(i) - y3(i)
255 z12(i) = z1(i) - z2(i)
256 z34(i) = z3(i) - z4(i)
257 z13(i) = z1(i) - z3(i)
258 z24(i) = z2(i) - z4(i)
259 z14(i) = z1(i) - z4(i)
260 z23(i) = z2(i) - z3(i)
261 ENDDO
262
263
264 ip=0
265 CALL matini(pm ,ixq ,nixq ,x ,
266 . geo ,ale_connectivity ,detonators ,iparg ,
267 . sigi ,nel ,skew ,igeo ,
268 . ipart ,ipartq ,
269 . mat ,ipm ,nsigs ,numquad ,ptquad ,
270 . ip ,ngl ,npf ,tf ,bufmat ,
271 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
272 . facload ,deltax ,tempel )
273
274
275 nptr = 2
276 npts = 2
277 DO ir=1,nptr
278 DO is=1,npts
279
280 lbuf => elbuf_str%BUFLY(1)%LBUF(ir,is,1)
281
282 ip = ir + (is-1)*nptr
283 ksi = a_gauss(ir,nptr)
284 eta = a_gauss(is,npts)
285 wi = w_gauss(ir,nptr)*w_gauss(is,npts)
286
287 CALL q4deri2(lbuf%VOL,ksi,eta,wi,
288 2 y12,y34,y13,y24,y14,y23,
289 3 z12,z34,z13,z24,z14,z23,
290 4 y1,y2,y3,y4,yavg,ihbe,ngl)
291
293 . pm ,ixq ,nixq ,x ,
294 . geo ,ale_connectivity ,detonators ,iparg ,
295 . sigi ,nel ,skew ,igeo ,
296 . ipart ,ipartq ,
297 . mat ,ipm ,nsigs ,numquad ,ptquad ,
298 . ip ,ngl ,npf ,tf ,bufmat ,
299 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
300 . facload, deltax ,tempel )
301
302 ENDDO
303 ENDDO
304
305
306
307
308 IF(jthe/=0)
CALL atheri(mat ,pm ,lbuf%TEMP)
309 IF(jtur/=0)
CALL aturi2(ipargg ,lbuf%RHO,pm,ixq,x,
310 . lbuf%RK ,lbuf%RE,
area)
311
312
313
314 IF(jlag+jale+jeul/=0)
315 .
CALL qmasi2(pm,mat,ms,gbuf%VOL,msq(nf1),wma,ipartq(nft+1),partsav,
316 . ix1, ix2, ix3, ix4,x ,v)
317
318
319
320 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
321 . gbuf%EINT ,gbuf%TEMP ,gbuf%DELTAX ,gbuf%RK ,gbuf%RE ,bufmat, deltax,
area,
322 . gbuf%VOL, dtx, igeo,igtyp)
323 DO 10 i=lft,llt
324 IF(ixq(6,i+nft)/=0) THEN
325 IF(igtyp/=0 .AND. igtyp/=6 .AND.
326 . igtyp/=14.AND.igtyp/=15)THEN
327 ipid1=ixq(nixq-1,i+nft)
328 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid1),ltitr)
330 . msgtype=msgerror,
331 . anmode=aninfo_blind_1,
332 . i1=igeo(1,ipid1),
333 . c1=titr1,
334 . i2=igtyp)
335 ENDIF
336 ENDIF
337 dtelem(nft+i)=dtx(i)
338 10 CONTINUE
339
340 RETURN
subroutine atheri(mat, pm, temp)
subroutine aturi2(iparg, rho, pm, ix, x, rk, re, aire)
subroutine dtmain(geo, pm, ipm, pid, mat, fv, eint, temp, deltax, rk, re, bufmat, ddeltax, aire, vol, dtx, igeo, igtyp)
subroutine edlen2(veul, aire, deltax)
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine matini(pm, ix, nix, x, geo, ale_connectivity, detonators, iparg, sigi, nel, skew, igeo, ipart, ipartel, mat, ipm, nsig, nums, pt, ipt, ngl, npf, tf, bufmat, gbuf, lbuf, mbuf, elbuf_str, iloadp, facload, ddeltax, tempel)
integer, parameter nchartitle
subroutine q4voli2(volu, ixq, ngl, aire, y1, y2, y3, y4, z1, z2, z3, z4, y234, y124)
subroutine qmasi2(pm, mat, ms, vol, msq, wma, ipart, partsav, ix1, ix2, ix3, ix4, x, v)
subroutine qmorth2(pid, geo, igeo, gama, nel, ry, rz, sy, sz, e1y, e1z, e2y, e2z)
subroutine q4rcoor2(x, ixq, ngl, mxt, pid, ix1, ix2, ix3, ix4, y1, y2, y3, y4, z1, z2, z3, z4, yavg, y234, y124, sy, sz, ty, tz, e1y, e1z, e2y, e2z)
subroutine q4deri2(vol, ksi, eta, wi, y12, y34, y13, y24, y14, y23, z12, z34, z13, z24, z14, z23, y1, y2, y3, y4, yavg, ihbe, ngl)
subroutine qcoor2(x, ixq, ngl, mxt, pid, ix1, ix2, ix3, ix4, y1, y2, y3, y4, z1, z2, z3, z4, sy, sz, ty, tz)
subroutine qdlen2(iparg, aire, deltax, y1, y2, y3, y4, z1, z2, z3, z4)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)