48
49
50
51 USE elbufdef_mod
54 USE matparam_def_mod, ONLY : matparam_struct_
55
56
57
58#include "implicit_f.inc"
59
60
61
62#include "mvsiz_p.inc"
63
64
65
66#include "com04_c.inc"
67#include "param_c.inc"
68#include "scr17_c.inc"
69#include "scry_c.inc"
70#include "vect01_c.inc"
71
72
73
74 TYPE(MATPARAM_STRUCT_),DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
75 INTEGER IXQ(NIXQ,*), IPARG(*),
76 . NEL,IPART(LIPART1,*),IPARTQ(*),
77 . IPM(NPROPMI,*), PTQUAD(*), NSIGS, IGEO(*), NPF(*),
78 . IPARGG(*)
79 my_real ms(*), pm(npropm,*), x(*), veul(10,*),
80 . fill(numnod,*), sigi(nsigs,*),skew(lskew,*),
81 . msq(*), geo(*), wma(*), bufmat(*), tf(*),
82 . partsav(20,*) ,v(*)
83 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
84 INTEGER,INTENT(IN) :: ILOADP(SIZLOADP,*)
85 my_real,
INTENT(IN) :: facload(lfacload,*)
86 TYPE(DETONATORS_STRUCT_)::DETONATORS
87 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
88
89
90
91 INTEGER I, NF1, IMULT, IGTYP, IP,IBID
92 INTEGER MAT(MVSIZ), NGL(MVSIZ)
94 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
95 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
96 . aire(mvsiz), deltax(mvsiz),
97 . sy(mvsiz), sz(mvsiz), ty(mvsiz), tz(mvsiz)
99 INTEGER PID(MVSIZ), IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
100
101 TYPE(L_BUFEL_) ,POINTER :: LBUF
102 TYPE(G_BUFEL_) ,POINTER :: GBUF
103 TYPE(BUF_MAT_) ,POINTER :: MBUF
104
105
106
107 gbuf => elbuf_str%GBUF
108 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,1)
109 igtyp= iparg(38)
110 nf1 = nft+1
111 ibid = 0
112 tempel(:) = zero
113
114 CALL qcoor2(x,ixq(1,nf1),ngl,mat,
115 . pid, ix1, ix2, ix3, ix4,
116 . y1, y2, y3, y4,
117 . z1, z2, z3, z4,
118 . sy, sz, ty, tz)
119 CALL qvoli2(gbuf%VOL,ixq(1,nf1),
120 . ngl, aire,
121 . y1, y2, y3, y4,
122 . z1, z2, z3, z4)
123 IF (jeul/=0) THEN
125 . aire, deltax,
126 . y1, y2, y3, y4,
127 . z1, z2, z3, z4)
128 CALL edlen2(veul(1,nf1), aire, deltax)
129 ENDIF
130
131
132
133
134 imult=jmult
135 jmult=1
136 lbuf => elbuf_str%BUFLY(jmult)%LBUF(1,1,1)
137 mbuf => elbuf_str%BUFLY(jmult)%MAT(1,1,1)
138 mtn = iparg(25)
139
140 DO i=lft,llt
141 mat(i)=mat_param(iabs(ixq(1,nft+i)))%MULTIMAT%MID(jmult)
142 ENDDO
143
144
145
146
147 CALL bimat2(gbuf%VOL, lbuf%FRAC, fill(1,1), lbuf%VOL, lbuf%OFF, ixq(1,nf1))
148
149
150
151 ip=1
152 CALL matini(pm ,ixq ,nixq ,x ,
153 . geo ,ale_connectivity ,detonators ,iparg ,
154 . sigi ,nel ,skew ,igeo ,
155 . ipart ,ipartq ,
156 . mat ,ipm ,nsigs ,numquad ,ptquad ,
157 . ip ,ngl ,npf ,tf ,bufmat ,
158 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
159 . facload, deltax,tempel )
160
161
162
163 IF(jthe/=0)
CALL atheri(mat,pm,lbuf%TEMP)
164 IF(jtur/=0)
CALL aturi2(ipargg ,lbuf%RHO,pm,ixq,x,
165 . lbuf%RK,lbuf%RE, aire)
166
167
168
169 IF(jlag+jale+jeul/=0)
170 .
CALL qmasi2(pm,mat,ms,lbuf%VOL,msq(nf1),wma,ipartq(nft+1),partsav,
171 . ix1, ix2, ix3, ix4, x ,v)
172
173
174
175 IF(imult==1)RETURN
176 jmult=2
177 lbuf => elbuf_str%BUFLY(jmult)%LBUF(1,1,1)
178 mbuf => elbuf_str%BUFLY(jmult)%MAT(1,1,1)
179 mtn = iparg(26)
180
181 nf1=nft+1
182 DO i=lft,llt
183 mat(i)=mat_param(iabs(ixq(1,nft+i)))%MULTIMAT%MID(jmult)
184 ENDDO
185
186
187
188 CALL bimat2( gbuf%VOL, lbuf%FRAC, fill(1,2), lbuf%VOL, lbuf%OFF, ixq(1,nf1) )
189
190
191
192 ip=1
193 CALL matini(pm , ixq ,nixq ,x ,
194 . geo , ale_connectivity ,detonators,iparg ,
195 . sigi , nel ,skew ,igeo ,
196 . ipart , ipartq ,
197 . mat , ipm ,nsigs ,numquad ,ptquad ,
198 . ip , ngl ,npf ,tf ,bufmat ,
199 . gbuf , lbuf ,mbuf ,elbuf_str ,iloadp ,
200 . facload, deltax,tempel )
201
202
203
204 IF (jthe/=0)
CALL atheri(mat,pm, lbuf%TEMP)
205 IF (jtur/=0)
CALL aturi2(ipargg ,lbuf%RHO,pm,ixq,x,
206 . lbuf%RK,lbuf%RE, aire)
207
208
209
210 IF(jlag+jale+jeul/=0)
211 .
CALL qmasi2b(pm,mat,ms,lbuf%VOL,msq(nf1),wma,ipartq(nft+1),partsav,
212 . ix1, ix2, ix3, ix4 ,x ,v)
213
214 RETURN
subroutine atheri(mat, pm, temp)
subroutine aturi2(iparg, rho, pm, ix, x, rk, re, aire)
subroutine bimat2(volt, alph, fill, vol, off, ix)
subroutine edlen2(veul, aire, deltax)
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)
subroutine qmasi2(pm, mat, ms, vol, msq, wma, ipart, partsav, ix1, ix2, ix3, ix4, x, v)
subroutine qmasi2b(pm, mat, ms, vol, msq, wma, ipart, partsav, ix1, ix2, ix3, ix4, x, v)
subroutine qvoli2(volu, ixq, ngl, aire, y1, y2, y3, y4, z1, z2, z3, z4)
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)