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