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_
56#include "implicit_f.inc"
67#include "vect01_c.inc"
77 TYPE(elbuf_struct_),
INTENT(IN),
TARGET :: ELBUF_STR
78 INTEGER,
INTENT(IN) :: NEL, NSIGS, NSIGI, IGEO(NPROPGI, *), IPM(NPROPMI, *),
79 . IPARTS(*), PTSOL(*), NPF(*), IPART(LIPART1, *), ILOADP(SIZLOADP, *)
80 INTEGER,
INTENT(INOUT) :: IPARG(*), IXS(,*)
81 INTEGER,
INTENT(IN) ::
82 my_real,
INTENT(IN) :: x(3, *), geo(npropg, *),
83 . facload(lfacload, *), tf(*), skew(lskew, *), sigi(nsigi, *), bufmat(*)
84 my_real,
INTENT(INOUT) :: xrefs(8, 3, *)
85 my_real,
INTENT(INOUT) :: pm(npropm, *)
86 my_real,
INTENT(INOUT) :: wma(*), partsav(20, *), mas(*), v(*),
87 . msnf(*), mcps(8, *), mssf(8, *), mss(8, *), mssa(*)
88 LOGICAL :: ERROR_THROWN
91 TYPE(DEFAULTS_),
INTENT(IN) :: DEFAULTS
92 TYPE(matparam_struct_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
96 TYPE(l_bufel_) ,
POINTER :: LBUF
97 TYPE(G_BUFEL_) ,
POINTER :: GBUF
98 TYPE(BUF_MAT_) ,
POINTER :: MBUF
99 INTEGER :: ILAY, NLAY, PID(MVSIZ), NGL(MVSIZ), MAT(MVSIZ),
100 . ix1(mvsiz), ix2(mvsiz), ix3(mvsiz), ix4(mvsiz)
101 my_real :: x1(mvsiz), y1(mvsiz), z1(mvsiz),
103 . x3(mvsiz), y3(mvsiz), z3(mvsiz),
104 . x4(mvsiz), y4(mvsiz), z4(mvsiz),
105 . rx(mvsiz),ry(mvsiz),rz(mvsiz),
106 . sx(mvsiz),sy(mvsiz),sz(mvsiz),
107 . tx(mvsiz),ty(mvsiz),tz(mvsiz),
108 . px1(mvsiz),px2(mvsiz),px3(mvsiz),px4(mvsiz),
109 . py1(mvsiz),py2(mvsiz),py3(mvsiz),py4(mvsiz),
110 . pz1(mvsiz),pz2(mvsiz),pz3(mvsiz),pz4(mvsiz),
111 . volu(mvsiz), bid(mvsiz), dummy, pres,vfrac
113 INTEGER :: II, IP, IBID, MATLAW,IMAS_DS
119 gbuf => elbuf_str%GBUF
121 nlay = elbuf_str%NLAY
122 imas_ds = defaults%SOLID%IMAS
124 CALL s4coor3(x, xrefs(1, 1, nft + 1), ixs(1, nft + 1), ngl,
125 . mat, pid, ix1, ix2, ix3, ix4,
130 CALL s4deri3(gbuf%VOL, dummy, geo, igeo,
131 . rx, ry, rz, sx, sy, sz, tx, ty, tz,
135 . px1, px2, px3, px4,
136 . py1, py2, py3, py4,
137 . pz1, pz2, pz3, pz4, gbuf%JAC_I,
138 . gbuf%DELTAX, volu, ngl, pid, mat,
142 pm(104,ixs(1, 1 + nft)) = zero
147 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
148 mbuf => elbuf_str%BUFLY(ilay)%MAT(1,1,1)
151 mat(ii) = mat_param( ixs(1,ii+nft) )%MULTIMAT%MID(ilay)
153 lbuf%VOL(ii) = mat_param( ixs(1,ii+nft) )%MULTIMAT%VFRAC(ilay) * gbuf%VOL(ii)
154 lbuf%VOL0DP(ii) = mat_param( ixs(1,ii+nft) )%MULTIMAT%VFRAC(ilay) * voldp(ii)
159 CALL matini(pm, ixs, nixs, x,
160 . geo, ale_connectivity, detonators, iparg,
161 . sigi, nel, skew, igeo,
163 . mat, ipm, nsigs, numsol, ptsol,
164 . ip, ngl,npf, tf, bufmat,
165 . gbuf, lbuf, mbuf, elbuf_str, iloadp,
166 . facload, gbuf%DELTAX,tempel)
168 vfrac = mat_param( ixs(1,1+nft) )%MULTIMAT%VFRAC(ilay)
169 pres = pm(104, mat_param( ixs(1,1+nft) )%MULTIMAT%MID(ilay))
170 pm(104,ixs(1, 1 + nft)) = pm(104,ixs(1, 1 + nft))
172 matlaw = ipm(2, mat(1))
173 IF (matlaw == 5)
THEN
175 IF (.NOT. error_thrown)
THEN
176 IF (pm(44, mat(1)) == zero)
THEN
177 CALL ancmsg(msgid = 1623, msgtype = msgerror, anmode = aninfo,
178 . i1 = ipm(1, ixs(1, 1 + nft)), i2 = ipm(1, mat(1)))
180 error_thrown = .true.
182 CALL m5in3(pm, mat, ipm(1, ixs(1,1+nft)), detonators, lbuf%TB, iparg, x, ixs, nixs)
194 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
196 gbuf%RHO(ii) = gbuf%RHO(ii) + lbuf%RHO(ii) * mat_param( ixs(1,ii+nft) )%MULTIMAT%VFRAC(ilay)
203 lbuf => elbuf_str%BUFLY(ilay)%LBUF
205 gbuf%TEMP(ii) = gbuf%TEMP(ii) + lbuf%TEMP(ii) *
206 . mat_param( ixs(1,ii+nft) )%MULTIMAT%VFRAC(ilay) *lbuf%RHO(ii)/gbuf%RHO(ii)
212 1 gbuf%RHO ,mas ,partsav,x ,v,
213 2 iparts(nft + 1),mss(1,nft + 1),msnf ,mssf(1,nft + 1),wma,
214 3 bid ,bid ,mcps(1,nft + 1),bid,bid ,
215 4 mssa ,ix1 ,ix2 ,ix3 ,ix4 ,
216 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)
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)