40 . NEL, NSIGS, NSIGI, IXS, IGEO, IPM, IPARG, ALE_CONNECTIVITY, IPARTS, PTSOL, NPF, IPART, ILOADP,
41 . XREFS, GEO, PM, FACLOAD, TF, SKEW, SIGI, BUFMAT, X,
42 . WMA, PARTSAV, MAS, V, MSS, MSSF, MSSA, MSNF, MCPS, ERROR_THROWN, DETONATORS,DEFAULTS,
52 USE matparam_def_mod,
ONLY : matparam_struct_
53 use element_mod ,
only : nixs
57#include "implicit_f.inc"
68#include "vect01_c.inc"
78 TYPE(elbuf_struct_),
INTENT(IN),
TARGET :: ELBUF_STR
79 INTEGER,
INTENT(IN) :: NEL, NSIGS, NSIGI, IGEO(NPROPGI, *), IPM(NPROPMI, *),
80 . IPARTS(*), PTSOL(*), NPF(*), IPART(LIPART1, *), ILOADP(SIZLOADP, *)
81 INTEGER,
INTENT(INOUT) :: IPARG(*), IXS(NIXS,*)
82 INTEGER,
INTENT(IN) :: NINTEMP
83 my_real,
INTENT(IN) :: x(3, *), geo(npropg, *),
84 . facload(lfacload, *), tf(*), skew(lskew, *), sigi(nsigi, *), bufmat(*)
85 my_real,
INTENT(INOUT) :: xrefs(8, 3, *)
86 my_real,
INTENT(INOUT) :: pm(npropm, *)
87 my_real,
INTENT(INOUT) :: wma(*), partsav(20, *), mas(*), v(*),
88 . msnf(*), mcps(8, *), mssf(8, *), mss(8, *), mssa(*)
89 LOGICAL :: ERROR_THROWN
92 TYPE(DEFAULTS_),
INTENT(IN) :: DEFAULTS
93 TYPE(matparam_struct_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
97 TYPE(l_bufel_) ,
POINTER :: LBUF
98 TYPE(G_BUFEL_) ,
POINTER :: GBUF
99 TYPE(BUF_MAT_) ,
POINTER :: MBUF
100 INTEGER :: ILAY, NLAY, PID(MVSIZ), NGL(MVSIZ), MAT(MVSIZ),
101 . ix1(mvsiz), ix2(mvsiz), ix3(mvsiz), ix4(mvsiz)
102 my_real :: x1(mvsiz), y1(mvsiz), z1(mvsiz),
103 . x2(mvsiz), y2(mvsiz), z2(mvsiz),
104 . x3(mvsiz), y3(mvsiz), z3(mvsiz),
105 . x4(mvsiz), y4(mvsiz), z4(mvsiz),
106 . rx(mvsiz),ry(mvsiz),rz(mvsiz),
107 . sx(mvsiz),sy(mvsiz),sz(mvsiz),
108 . tx(mvsiz),ty(mvsiz),tz(mvsiz),
109 . px1(mvsiz),px2(mvsiz),px3(mvsiz),px4(mvsiz),
110 . py1(mvsiz),py2(mvsiz),py3(mvsiz),py4(mvsiz),
111 . pz1(mvsiz),pz2(mvsiz),pz3(mvsiz),pz4(mvsiz),
112 . volu(mvsiz), bid(mvsiz), dummy, pres,vfrac
114 INTEGER :: II, IP, IBID, MATLAW,IMAS_DS
120 gbuf => elbuf_str%GBUF
122 nlay = elbuf_str%NLAY
123 imas_ds = defaults%SOLID%IMAS
125 CALL s4coor3(x, xrefs(1, 1, nft + 1), ixs(1, nft + 1), ngl,
126 . mat, pid, ix1, ix2, ix3, ix4,
131 CALL s4deri3(gbuf%VOL, dummy, geo, igeo,
132 . rx, ry, rz, sx, sy, sz, tx, ty, tz,
136 . px1, px2, px3, px4,
137 . py1, py2, py3, py4,
138 . pz1, pz2, pz3, pz4, gbuf%JAC_I,
139 . gbuf%DELTAX, volu, ngl, pid, mat,
143 pm(104,ixs(1, 1 + nft)) = zero
148 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
149 mbuf => elbuf_str%BUFLY(ilay)%MAT(1,1,1)
152 mat(ii) = mat_param( ixs(1,ii+nft) )%MULTIMAT%MID(ilay)
154 lbuf%VOL(ii) = mat_param( ixs(1,ii+nft) )%MULTIMAT%VFRAC(ilay) * gbuf%VOL(ii)
155 lbuf%VOL0DP(ii) = mat_param( ixs(1,ii+nft) )%MULTIMAT%VFRAC(ilay) * voldp(ii)
160 CALL matini(pm, ixs, nixs, x,
161 . geo, ale_connectivity, detonators, iparg,
162 . sigi, nel, skew, igeo,
164 . mat, ipm, nsigs, numsol, ptsol,
165 . ip, ngl,npf, tf, bufmat,
166 . gbuf, lbuf, mbuf, elbuf_str, iloadp,
167 . facload, gbuf%DELTAX,tempel, mat_param )
169 vfrac = mat_param( ixs(1,1+nft) )%MULTIMAT%VFRAC(ilay)
170 pres = pm(104, mat_param( ixs(1,1+nft) )%MULTIMAT%MID(ilay))
171 pm(104,ixs(1, 1 + nft)) = pm(104,ixs(1, 1 + nft)) + vfrac * pres
173 matlaw = ipm(2, mat(1))
174 IF (matlaw == 5)
THEN
176 IF (.NOT. error_thrown)
THEN
177 IF (pm(44, mat(1)) == zero)
THEN
178 CALL ancmsg(msgid = 1623, msgtype = msgerror, anmode = aninfo,
179 . i1 = ipm(1, ixs(1, 1 + nft)), i2 = ipm(1, mat(1)))
181 error_thrown = .true.
183 CALL m5in3(pm, mat, ipm(1, ixs(1,1+nft)), detonators, lbuf%TB, iparg, x, ixs, nixs)
195 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
197 gbuf%RHO(ii) = gbuf%RHO(ii) + lbuf%RHO(ii) * mat_param( ixs(1,ii+nft) )%MULTIMAT%VFRAC(ilay)
202 gbuf%TEMP(1:nel)=zero
204 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
206 gbuf%TEMP(ii) = gbuf%TEMP(ii) + lbuf%TEMP(ii) *
207 . mat_param( ixs(1,ii+nft) )%MULTIMAT%VFRAC(ilay) *lbuf%RHO(ii)/gbuf%RHO(ii)
213 1 gbuf%RHO ,mas ,partsav,x ,v,
214 2 iparts(nft + 1),mss(1,nft + 1),msnf ,mssf(1,nft + 1),wma,
215 3 bid ,bid ,mcps(1,nft + 1),bid,bid ,
216 4 mssa ,ix1 ,ix2 ,ix3 ,ix4 ,
217 5 gbuf%FILL, gbuf%VOL ,imas_ds, nintemp)
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)
subroutine multifluid_init3t(elbuf_str, nel, nsigs, nsigi, ixs, igeo, ipm, iparg, ale_connectivity, iparts, ptsol, npf, ipart, iloadp, xrefs, geo, pm, facload, tf, skew, sigi, bufmat, x, wma, partsav, mas, v, mss, mssf, mssa, msnf, mcps, error_thrown, detonators, defaults, mat_param, nintemp)
subroutine s4deri3(vol, veul, geo, igeo, rx, ry, rz, sx, sy, sz, tx, ty, tz, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, jac_i, deltax, det, ngl, ngeo, mxt, pm, voldp)
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)